UNPKG

3.52 MBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 4282105f9332cbe0b0c9","webpack:///av-live-query-weapp-min.js","webpack:///./node_modules/core-js-pure/internals/export.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js","webpack:///./node_modules/core-js-pure/internals/fails.js","webpack:///./node_modules/underscore/modules/index-all.js","webpack:///./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack:///./node_modules/core-js-pure/internals/path.js","webpack:///./node_modules/underscore/modules/_setup.js","webpack:///./node_modules/core-js-pure/internals/global.js","webpack:///./node_modules/core-js-pure/internals/is-callable.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js-pure/internals/is-object.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","webpack:///./node_modules/core-js-pure/internals/has-own-property.js","webpack:///./node_modules/core-js-pure/internals/descriptors.js","webpack:///./node_modules/core-js-pure/internals/function-call.js","webpack:///./node_modules/underscore/modules/keys.js","webpack:///./node_modules/underscore/modules/_tagTester.js","webpack:///./node_modules/core-js-pure/internals/get-built-in.js","webpack:///./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/an-object.js","webpack:///./node_modules/underscore/modules/_cb.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js","webpack:///./node_modules/core-js-pure/internals/object-define-property.js","webpack:///./node_modules/underscore/modules/restArguments.js","webpack:///./node_modules/underscore/modules/underscore.js","webpack:///./node_modules/underscore/modules/_isArrayLike.js","webpack:///./src/request.js","webpack:///./node_modules/underscore/modules/isFunction.js","webpack:///./node_modules/underscore/modules/_getLength.js","webpack:///./src/utils/index.js","webpack:///./node_modules/core-js-pure/internals/a-callable.js","webpack:///./node_modules/core-js-pure/internals/to-indexed-object.js","webpack:///./node_modules/core-js-pure/internals/is-pure.js","webpack:///./node_modules/core-js-pure/internals/to-object.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js","webpack:///./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js-pure/modules/es.array.iterator.js","webpack:///./node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js-pure/internals/entry-virtual.js","webpack:///./node_modules/core-js-pure/internals/length-of-array-like.js","webpack:///./node_modules/core-js-pure/internals/iterate.js","webpack:///./node_modules/core-js-pure/internals/internal-state.js","webpack:///./node_modules/core-js-pure/internals/define-built-in.js","webpack:///./node_modules/underscore/modules/_has.js","webpack:///./src/error.js","webpack:///./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/function-bind-context.js","webpack:///./node_modules/core-js-pure/internals/object-create.js","webpack:///./node_modules/core-js-pure/internals/iterators.js","webpack:///./node_modules/core-js-pure/internals/classof.js","webpack:///./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack:///./node_modules/core-js-pure/internals/new-promise-capability.js","webpack:///./node_modules/core-js-pure/modules/es.string.iterator.js","webpack:///./node_modules/underscore/modules/isObject.js","webpack:///./node_modules/underscore/modules/isArray.js","webpack:///./node_modules/underscore/modules/each.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js","webpack:///./node_modules/debug/src/browser.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/internals/classof-raw.js","webpack:///./node_modules/core-js-pure/internals/native-symbol.js","webpack:///./node_modules/core-js-pure/internals/promise-native-constructor.js","webpack:///./node_modules/underscore/modules/values.js","webpack:///./node_modules/underscore/modules/_flatten.js","webpack:///./node_modules/underscore/modules/map.js","webpack:///./src/av.js","webpack:///./node_modules/core-js-pure/internals/array-iteration.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js","webpack:///./src/adapter.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/typeof.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js-pure/internals/function-apply.js","webpack:///./node_modules/core-js-pure/internals/function-bind-native.js","webpack:///./node_modules/core-js-pure/internals/engine-v8-version.js","webpack:///./node_modules/core-js-pure/internals/try-to-string.js","webpack:///./node_modules/core-js-pure/internals/shared.js","webpack:///./node_modules/core-js-pure/internals/hidden-keys.js","webpack:///./node_modules/core-js-pure/internals/to-string.js","webpack:///./node_modules/core-js-pure/internals/perform.js","webpack:///./node_modules/core-js-pure/internals/promise-constructor-detection.js","webpack:///./node_modules/underscore/modules/_stringTagBug.js","webpack:///./node_modules/underscore/modules/allKeys.js","webpack:///./node_modules/underscore/modules/_toPath.js","webpack:///./node_modules/underscore/modules/_optimizeCb.js","webpack:///./node_modules/underscore/modules/filter.js","webpack:///./node_modules/underscore/modules/contains.js","webpack:///./node_modules/core-js-pure/internals/is-array.js","webpack:///./node_modules/core-js-pure/internals/create-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js","webpack:///./node_modules/core-js-pure/internals/internal-metadata.js","webpack:///./node_modules/core-js-pure/internals/indexed-object.js","webpack:///./node_modules/core-js-pure/internals/to-property-key.js","webpack:///./node_modules/core-js-pure/internals/is-symbol.js","webpack:///./node_modules/core-js-pure/internals/engine-user-agent.js","webpack:///./node_modules/core-js-pure/internals/uid.js","webpack:///./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/shared-key.js","webpack:///./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/internals/object-keys.js","webpack:///./node_modules/core-js-pure/internals/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/engine-is-node.js","webpack:///./node_modules/core-js-pure/internals/an-instance.js","webpack:///./node_modules/core-js-pure/internals/is-constructor.js","webpack:///./node_modules/core-js-pure/internals/array-slice.js","webpack:///./node_modules/underscore/modules/matcher.js","webpack:///./node_modules/underscore/modules/partial.js","webpack:///./node_modules/underscore/modules/_group.js","webpack:///./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js","webpack:///./src/utils/ajax.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js-pure/internals/require-object-coercible.js","webpack:///./node_modules/core-js-pure/internals/get-method.js","webpack:///./node_modules/core-js-pure/internals/shared-store.js","webpack:///./node_modules/core-js-pure/internals/document-create-element.js","webpack:///./node_modules/core-js-pure/internals/to-absolute-index.js","webpack:///./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack:///./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack:///./node_modules/core-js-pure/internals/object-define-properties.js","webpack:///./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack:///./node_modules/core-js-pure/internals/inspect-source.js","webpack:///./node_modules/core-js-pure/internals/define-iterator.js","webpack:///./node_modules/underscore/modules/index.js","webpack:///./node_modules/underscore/modules/isString.js","webpack:///./node_modules/underscore/modules/isDataView.js","webpack:///./node_modules/underscore/modules/isArguments.js","webpack:///./node_modules/underscore/modules/_getByteLength.js","webpack:///./node_modules/underscore/modules/_methodFingerprint.js","webpack:///./node_modules/underscore/modules/_createAssigner.js","webpack:///./node_modules/underscore/modules/extendOwn.js","webpack:///./node_modules/underscore/modules/_deepGet.js","webpack:///./node_modules/underscore/modules/identity.js","webpack:///./node_modules/underscore/modules/property.js","webpack:///./node_modules/underscore/modules/now.js","webpack:///./node_modules/underscore/modules/negate.js","webpack:///./node_modules/underscore/modules/findIndex.js","webpack:///./node_modules/underscore/modules/pluck.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/internals/define-built-ins.js","webpack:///./node_modules/core-js-pure/internals/collection.js","webpack:///./node_modules/leancloud-realtime/core.js","webpack:///./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack:///./node_modules/core-js-pure/internals/is-forced.js","webpack:///./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack:///./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js-pure/internals/own-keys.js","webpack:///./node_modules/core-js-pure/internals/object-keys-internal.js","webpack:///./node_modules/core-js-pure/internals/array-includes.js","webpack:///./node_modules/core-js-pure/internals/html.js","webpack:///./node_modules/core-js-pure/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/get-iterator.js","webpack:///./node_modules/core-js-pure/internals/iterator-close.js","webpack:///./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack:///./node_modules/core-js-pure/internals/native-weak-map.js","webpack:///./node_modules/core-js-pure/internals/iterators-core.js","webpack:///./node_modules/core-js-pure/internals/set-species.js","webpack:///./node_modules/core-js-pure/internals/species-constructor.js","webpack:///./node_modules/core-js-pure/internals/a-constructor.js","webpack:///./node_modules/core-js-pure/internals/task.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios.js","webpack:///./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js","webpack:///./node_modules/core-js-pure/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js-pure/internals/promise-resolve.js","webpack:///./node_modules/underscore/modules/isUndefined.js","webpack:///./node_modules/underscore/modules/isBoolean.js","webpack:///./node_modules/underscore/modules/isNumber.js","webpack:///./node_modules/underscore/modules/isSymbol.js","webpack:///./node_modules/underscore/modules/isArrayBuffer.js","webpack:///./node_modules/underscore/modules/isNaN.js","webpack:///./node_modules/underscore/modules/isTypedArray.js","webpack:///./node_modules/underscore/modules/constant.js","webpack:///./node_modules/underscore/modules/_createSizePropertyCheck.js","webpack:///./node_modules/underscore/modules/_shallowProperty.js","webpack:///./node_modules/underscore/modules/_collectNonEnumProps.js","webpack:///./node_modules/underscore/modules/isMatch.js","webpack:///./node_modules/underscore/modules/invert.js","webpack:///./node_modules/underscore/modules/functions.js","webpack:///./node_modules/underscore/modules/extend.js","webpack:///./node_modules/underscore/modules/defaults.js","webpack:///./node_modules/underscore/modules/_baseCreate.js","webpack:///./node_modules/underscore/modules/clone.js","webpack:///./node_modules/underscore/modules/get.js","webpack:///./node_modules/underscore/modules/toPath.js","webpack:///./node_modules/underscore/modules/_baseIteratee.js","webpack:///./node_modules/underscore/modules/iteratee.js","webpack:///./node_modules/underscore/modules/noop.js","webpack:///./node_modules/underscore/modules/random.js","webpack:///./node_modules/underscore/modules/_createEscaper.js","webpack:///./node_modules/underscore/modules/_escapeMap.js","webpack:///./node_modules/underscore/modules/templateSettings.js","webpack:///./node_modules/underscore/modules/_executeBound.js","webpack:///./node_modules/underscore/modules/bind.js","webpack:///./node_modules/underscore/modules/delay.js","webpack:///./node_modules/underscore/modules/before.js","webpack:///./node_modules/underscore/modules/findKey.js","webpack:///./node_modules/underscore/modules/_createPredicateIndexFinder.js","webpack:///./node_modules/underscore/modules/findLastIndex.js","webpack:///./node_modules/underscore/modules/sortedIndex.js","webpack:///./node_modules/underscore/modules/indexOf.js","webpack:///./node_modules/underscore/modules/_createIndexFinder.js","webpack:///./node_modules/underscore/modules/find.js","webpack:///./node_modules/underscore/modules/_createReduce.js","webpack:///./node_modules/underscore/modules/max.js","webpack:///./node_modules/underscore/modules/sample.js","webpack:///./node_modules/underscore/modules/pick.js","webpack:///./node_modules/underscore/modules/initial.js","webpack:///./node_modules/underscore/modules/rest.js","webpack:///./node_modules/underscore/modules/difference.js","webpack:///./node_modules/underscore/modules/uniq.js","webpack:///./node_modules/underscore/modules/unzip.js","webpack:///./node_modules/underscore/modules/_chainResult.js","webpack:///./node_modules/core-js-pure/modules/es.array.concat.js","webpack:///./node_modules/core-js-pure/internals/array-species-create.js","webpack:///./node_modules/core-js-pure/modules/es.json.stringify.js","webpack:///./node_modules/core-js-pure/internals/array-method-is-strict.js","webpack:///./node_modules/uuid/v4.js","webpack:///./node_modules/core-js-pure/stable/object/get-prototype-of.js","webpack:///./src/version.js","webpack:///./node_modules/eventemitter3/index.js","webpack:///./src/localstorage.js","webpack:///./src/cache.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/stable/instance/slice.js","webpack:///./node_modules/core-js-pure/stable/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol.js","webpack:///./node_modules/core-js-pure/stable/symbol/index.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.js","webpack:///./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js-pure/internals/symbol-define-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/native-symbol-registry.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js-pure/stable/symbol/iterator.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js","webpack:///./node_modules/promise-timeout/index.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js","webpack:///./node_modules/core-js-pure/stable/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js","webpack:///./node_modules/core-js-pure/internals/function-bind.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js","webpack:///./node_modules/charenc/charenc.js","webpack:///./src/entry/use-adapters.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js","webpack:///./node_modules/core-js-pure/internals/object-is-extensible.js","webpack:///./node_modules/core-js-pure/internals/freezing.js","webpack:///./node_modules/core-js-pure/internals/collection-strong.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/set.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/lodash/_shuffleSelf.js","webpack:///./node_modules/lodash/values.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/isArray.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./src/entry/index-live-query.js","webpack:///./src/entry/index.js","webpack:///./src/entry/core.js","webpack:///./src/index.js","webpack:///./node_modules/core-js-pure/stable/promise/index.js","webpack:///./node_modules/core-js-pure/es/promise/index.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.js","webpack:///./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js","webpack:///./node_modules/core-js-pure/internals/to-primitive.js","webpack:///./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack:///./node_modules/core-js-pure/internals/define-global-property.js","webpack:///./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack:///./node_modules/core-js-pure/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js-pure/internals/math-trunc.js","webpack:///./node_modules/core-js-pure/internals/to-length.js","webpack:///./node_modules/core-js-pure/internals/clear-error-stack.js","webpack:///./node_modules/core-js-pure/internals/install-error-cause.js","webpack:///./node_modules/core-js-pure/internals/normalize-string-argument.js","webpack:///./node_modules/core-js-pure/internals/error-stack-installable.js","webpack:///./node_modules/core-js-pure/internals/function-name.js","webpack:///./node_modules/core-js-pure/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js-pure/internals/object-to-string.js","webpack:///./node_modules/core-js-pure/modules/es.promise.js","webpack:///./node_modules/core-js-pure/modules/es.promise.constructor.js","webpack:///./node_modules/core-js-pure/internals/validate-arguments-length.js","webpack:///./node_modules/core-js-pure/internals/microtask.js","webpack:///./node_modules/core-js-pure/internals/engine-is-ios-pebble.js","webpack:///./node_modules/core-js-pure/internals/engine-is-webos-webkit.js","webpack:///./node_modules/core-js-pure/internals/host-report-errors.js","webpack:///./node_modules/core-js-pure/internals/queue.js","webpack:///./node_modules/core-js-pure/internals/engine-is-browser.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all.js","webpack:///./node_modules/core-js-pure/modules/es.promise.catch.js","webpack:///./node_modules/core-js-pure/modules/es.promise.race.js","webpack:///./node_modules/core-js-pure/modules/es.promise.reject.js","webpack:///./node_modules/core-js-pure/modules/es.promise.resolve.js","webpack:///./node_modules/core-js-pure/modules/es.promise.all-settled.js","webpack:///./node_modules/core-js-pure/modules/es.promise.any.js","webpack:///./node_modules/core-js-pure/modules/es.promise.finally.js","webpack:///./node_modules/core-js-pure/internals/string-multibyte.js","webpack:///./node_modules/core-js-pure/internals/dom-iterables.js","webpack:///./node_modules/underscore/modules/index-default.js","webpack:///./node_modules/underscore/modules/isNull.js","webpack:///./node_modules/underscore/modules/isElement.js","webpack:///./node_modules/underscore/modules/isDate.js","webpack:///./node_modules/underscore/modules/isRegExp.js","webpack:///./node_modules/underscore/modules/isError.js","webpack:///./node_modules/underscore/modules/_hasObjectTag.js","webpack:///./node_modules/underscore/modules/isFinite.js","webpack:///./node_modules/underscore/modules/_isBufferLike.js","webpack:///./node_modules/underscore/modules/isEmpty.js","webpack:///./node_modules/underscore/modules/isEqual.js","webpack:///./node_modules/underscore/modules/_toBufferView.js","webpack:///./node_modules/underscore/modules/isMap.js","webpack:///./node_modules/underscore/modules/isWeakMap.js","webpack:///./node_modules/underscore/modules/isSet.js","webpack:///./node_modules/underscore/modules/isWeakSet.js","webpack:///./node_modules/underscore/modules/pairs.js","webpack:///./node_modules/underscore/modules/create.js","webpack:///./node_modules/underscore/modules/tap.js","webpack:///./node_modules/underscore/modules/has.js","webpack:///./node_modules/underscore/modules/mapObject.js","webpack:///./node_modules/underscore/modules/propertyOf.js","webpack:///./node_modules/underscore/modules/times.js","webpack:///./node_modules/underscore/modules/escape.js","webpack:///./node_modules/underscore/modules/unescape.js","webpack:///./node_modules/underscore/modules/_unescapeMap.js","webpack:///./node_modules/underscore/modules/template.js","webpack:///./node_modules/underscore/modules/result.js","webpack:///./node_modules/underscore/modules/uniqueId.js","webpack:///./node_modules/underscore/modules/chain.js","webpack:///./node_modules/underscore/modules/bindAll.js","webpack:///./node_modules/underscore/modules/memoize.js","webpack:///./node_modules/underscore/modules/defer.js","webpack:///./node_modules/underscore/modules/throttle.js","webpack:///./node_modules/underscore/modules/debounce.js","webpack:///./node_modules/underscore/modules/wrap.js","webpack:///./node_modules/underscore/modules/compose.js","webpack:///./node_modules/underscore/modules/after.js","webpack:///./node_modules/underscore/modules/once.js","webpack:///./node_modules/underscore/modules/lastIndexOf.js","webpack:///./node_modules/underscore/modules/findWhere.js","webpack:///./node_modules/underscore/modules/reduce.js","webpack:///./node_modules/underscore/modules/reduceRight.js","webpack:///./node_modules/underscore/modules/reject.js","webpack:///./node_modules/underscore/modules/every.js","webpack:///./node_modules/underscore/modules/some.js","webpack:///./node_modules/underscore/modules/invoke.js","webpack:///./node_modules/underscore/modules/where.js","webpack:///./node_modules/underscore/modules/min.js","webpack:///./node_modules/underscore/modules/shuffle.js","webpack:///./node_modules/underscore/modules/sortBy.js","webpack:///./node_modules/underscore/modules/groupBy.js","webpack:///./node_modules/underscore/modules/indexBy.js","webpack:///./node_modules/underscore/modules/countBy.js","webpack:///./node_modules/underscore/modules/partition.js","webpack:///./node_modules/underscore/modules/toArray.js","webpack:///./node_modules/underscore/modules/size.js","webpack:///./node_modules/underscore/modules/_keyInObj.js","webpack:///./node_modules/underscore/modules/omit.js","webpack:///./node_modules/underscore/modules/first.js","webpack:///./node_modules/underscore/modules/last.js","webpack:///./node_modules/underscore/modules/compact.js","webpack:///./node_modules/underscore/modules/flatten.js","webpack:///./node_modules/underscore/modules/without.js","webpack:///./node_modules/underscore/modules/union.js","webpack:///./node_modules/underscore/modules/intersection.js","webpack:///./node_modules/underscore/modules/zip.js","webpack:///./node_modules/underscore/modules/object.js","webpack:///./node_modules/underscore/modules/range.js","webpack:///./node_modules/underscore/modules/chunk.js","webpack:///./node_modules/underscore/modules/mixin.js","webpack:///./node_modules/underscore/modules/underscore-array-methods.js","webpack:///./node_modules/core-js-pure/stable/instance/concat.js","webpack:///./node_modules/core-js-pure/es/instance/concat.js","webpack:///./node_modules/core-js-pure/es/array/virtual/concat.js","webpack:///./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack:///./node_modules/core-js-pure/internals/array-species-constructor.js","webpack:///./node_modules/core-js-pure/stable/instance/map.js","webpack:///./node_modules/core-js-pure/es/instance/map.js","webpack:///./node_modules/core-js-pure/es/array/virtual/map.js","webpack:///./node_modules/core-js-pure/modules/es.array.map.js","webpack:///./node_modules/core-js-pure/stable/object/keys.js","webpack:///./node_modules/core-js-pure/es/object/keys.js","webpack:///./node_modules/core-js-pure/modules/es.object.keys.js","webpack:///./node_modules/core-js-pure/stable/json/stringify.js","webpack:///./node_modules/core-js-pure/es/json/stringify.js","webpack:///./node_modules/core-js-pure/stable/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/instance/index-of.js","webpack:///./node_modules/core-js-pure/es/array/virtual/index-of.js","webpack:///./node_modules/core-js-pure/modules/es.array.index-of.js","webpack:///./node_modules/core-js-pure/stable/instance/keys.js","webpack:///./node_modules/core-js-pure/stable/array/virtual/keys.js","webpack:///./node_modules/core-js-pure/es/array/virtual/keys.js","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/debug/src/common.js","webpack:///./node_modules/ms/index.js","webpack:///./node_modules/core-js-pure/es/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-prototype-of.js","webpack:///./node_modules/core-js-pure/es/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/modules/es.object.set-prototype-of.js","webpack:///./src/init.js","webpack:///./node_modules/core-js-pure/es/instance/slice.js","webpack:///./node_modules/core-js-pure/es/array/virtual/slice.js","webpack:///./node_modules/core-js-pure/modules/es.array.slice.js","webpack:///./node_modules/core-js-pure/es/object/define-property.js","webpack:///./node_modules/core-js-pure/modules/es.object.define-property.js","webpack:///./src/app-router.js","webpack:///./node_modules/core-js-pure/features/symbol/index.js","webpack:///./node_modules/core-js-pure/full/symbol/index.js","webpack:///./node_modules/core-js-pure/actual/symbol/index.js","webpack:///./node_modules/core-js-pure/es/symbol/index.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.constructor.js","webpack:///./node_modules/core-js-pure/internals/array-slice-simple.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.for.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.key-for.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.search.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.species.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.split.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack:///./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack:///./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js","webpack:///./node_modules/core-js-pure/features/symbol/iterator.js","webpack:///./node_modules/core-js-pure/full/symbol/iterator.js","webpack:///./node_modules/core-js-pure/actual/symbol/iterator.js","webpack:///./node_modules/core-js-pure/es/symbol/iterator.js","webpack:///./node_modules/core-js-pure/stable/instance/filter.js","webpack:///./node_modules/core-js-pure/es/instance/filter.js","webpack:///./node_modules/core-js-pure/es/array/virtual/filter.js","webpack:///./node_modules/core-js-pure/modules/es.array.filter.js","webpack:///./src/event.js","webpack:///./src/geopoint.js","webpack:///./src/acl.js","webpack:///./src/op.js","webpack:///./node_modules/core-js-pure/stable/instance/find.js","webpack:///./node_modules/core-js-pure/es/instance/find.js","webpack:///./node_modules/core-js-pure/es/array/virtual/find.js","webpack:///./node_modules/core-js-pure/modules/es.array.find.js","webpack:///./src/relation.js","webpack:///./src/file.js","webpack:///./src/uploader/cos.js","webpack:///./src/uploader/qiniu.js","webpack:///./node_modules/core-js-pure/es/array/from.js","webpack:///./node_modules/core-js-pure/modules/es.array.from.js","webpack:///./node_modules/core-js-pure/internals/array-from.js","webpack:///./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js-pure/features/get-iterator-method.js","webpack:///./node_modules/core-js-pure/full/get-iterator-method.js","webpack:///./node_modules/core-js-pure/actual/get-iterator-method.js","webpack:///./node_modules/core-js-pure/stable/get-iterator-method.js","webpack:///./node_modules/core-js-pure/es/get-iterator-method.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/stable/reflect/construct.js","webpack:///./node_modules/core-js-pure/es/reflect/construct.js","webpack:///./node_modules/core-js-pure/modules/es.reflect.construct.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/inherits.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/create.js","webpack:///./node_modules/core-js-pure/features/object/create.js","webpack:///./node_modules/core-js-pure/full/object/create.js","webpack:///./node_modules/core-js-pure/actual/object/create.js","webpack:///./node_modules/core-js-pure/stable/object/create.js","webpack:///./node_modules/core-js-pure/es/object/create.js","webpack:///./node_modules/core-js-pure/modules/es.object.create.js","webpack:///./node_modules/core-js-pure/features/object/define-property.js","webpack:///./node_modules/core-js-pure/full/object/define-property.js","webpack:///./node_modules/core-js-pure/actual/object/define-property.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js-pure/features/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/set-prototype-of.js","webpack:///./node_modules/core-js-pure/features/instance/bind.js","webpack:///./node_modules/core-js-pure/full/instance/bind.js","webpack:///./node_modules/core-js-pure/actual/instance/bind.js","webpack:///./node_modules/core-js-pure/stable/instance/bind.js","webpack:///./node_modules/core-js-pure/es/instance/bind.js","webpack:///./node_modules/core-js-pure/es/function/virtual/bind.js","webpack:///./node_modules/core-js-pure/modules/es.function.bind.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/features/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/full/object/get-prototype-of.js","webpack:///./node_modules/core-js-pure/actual/object/get-prototype-of.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/createClass.js","webpack:///./src/utils/btoa.js","webpack:///./src/uploader/s3.js","webpack:///./node_modules/md5/md5.js","webpack:///./node_modules/crypt/crypt.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./src/utils/parse-base64-browser.js","webpack:///./src/object.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js","webpack:///./node_modules/core-js-pure/features/array/is-array.js","webpack:///./node_modules/core-js-pure/full/array/is-array.js","webpack:///./node_modules/core-js-pure/actual/array/is-array.js","webpack:///./node_modules/core-js-pure/stable/array/is-array.js","webpack:///./node_modules/core-js-pure/es/array/is-array.js","webpack:///./node_modules/core-js-pure/modules/es.array.is-array.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js","webpack:///./node_modules/core-js-pure/features/instance/slice.js","webpack:///./node_modules/core-js-pure/full/instance/slice.js","webpack:///./node_modules/core-js-pure/actual/instance/slice.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/array/from.js","webpack:///./node_modules/core-js-pure/features/array/from.js","webpack:///./node_modules/core-js-pure/full/array/from.js","webpack:///./node_modules/core-js-pure/actual/array/from.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js","webpack:///./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/es/object/get-own-property-descriptor.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js","webpack:///./src/role.js","webpack:///./src/user.js","webpack:///./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack:///./src/query.js","webpack:///./src/live-query.js","webpack:///./src/captcha.js","webpack:///./src/cloudfunction.js","webpack:///./src/push.js","webpack:///./src/status.js","webpack:///./src/search.js","webpack:///./src/insight.js","webpack:///./src/friendship.js","webpack:///./src/conversation.js","webpack:///./src/leaderboard.js","webpack:///../../../node_modules/tslib/tslib.es6.js","webpack:///../src/auth.ts","webpack:///../../adapter-utils/lib/index.es.js","webpack:///../node_modules/event-target-shim/dist/event-target-shim.mjs","webpack:///../src/storage.ts","webpack:///../src/http.ts","webpack:///../src/websocket.ts","webpack:///../src/index.ts","webpack:///./node_modules/core-js-pure/stable/object/assign.js","webpack:///./node_modules/core-js-pure/es/object/assign.js","webpack:///./node_modules/core-js-pure/modules/es.object.assign.js","webpack:///./node_modules/core-js-pure/internals/object-assign.js","webpack:///./node_modules/core-js-pure/stable/object/get-own-property-symbols.js","webpack:///./node_modules/core-js-pure/es/object/get-own-property-symbols.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/symbol/iterator.js","webpack:///./node_modules/core-js-pure/stable/weak-map/index.js","webpack:///./node_modules/core-js-pure/es/weak-map/index.js","webpack:///./node_modules/core-js-pure/modules/es.weak-map.js","webpack:///./node_modules/core-js-pure/modules/es.weak-map.constructor.js","webpack:///./node_modules/core-js-pure/internals/array-buffer-non-extensible.js","webpack:///./node_modules/core-js-pure/internals/collection-weak.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/map.js","webpack:///./node_modules/core-js-pure/stable/map/index.js","webpack:///./node_modules/core-js-pure/es/map/index.js","webpack:///./node_modules/core-js-pure/modules/es.map.js","webpack:///./node_modules/core-js-pure/modules/es.map.constructor.js","webpack:///./src/entry/use-live-query.js","webpack:///../proto/message-compiled.js","webpack:///../proto/message.js","webpack:///../src/adapter.js","webpack:///../src/utils/global.js","webpack:///../src/utils/expirable.js","webpack:///../src/utils/cache.js","webpack:///../src/utils/index.js","webpack:///../src/websocket-plus.js","webpack:///../src/error.js","webpack:///../src/connection.js","webpack:///../src/utils/request.js","webpack:///../src/plugin.js","webpack:///../src/realtime.js","webpack:///../src/core.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js","webpack:///./node_modules/core-js-pure/stable/object/freeze.js","webpack:///./node_modules/core-js-pure/es/object/freeze.js","webpack:///./node_modules/core-js-pure/modules/es.object.freeze.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js-pure/es/object/get-own-property-descriptors.js","webpack:///./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js","webpack:///./node_modules/core-js-pure/stable/object/define-properties.js","webpack:///./node_modules/core-js-pure/es/object/define-properties.js","webpack:///./node_modules/core-js-pure/modules/es.object.define-properties.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js","webpack:///./node_modules/core-js-pure/stable/instance/reduce.js","webpack:///./node_modules/core-js-pure/es/instance/reduce.js","webpack:///./node_modules/core-js-pure/es/array/virtual/reduce.js","webpack:///./node_modules/core-js-pure/modules/es.array.reduce.js","webpack:///./node_modules/core-js-pure/internals/array-reduce.js","webpack:///./node_modules/core-js-pure/stable/set/index.js","webpack:///./node_modules/core-js-pure/es/set/index.js","webpack:///./node_modules/core-js-pure/modules/es.set.js","webpack:///./node_modules/core-js-pure/modules/es.set.constructor.js","webpack:///./node_modules/protobufjs/dist/protobuf-light.js","webpack:///./node_modules/bytebuffer/dist/bytebuffer.js","webpack:///./node_modules/long/dist/long.js","webpack:///./node_modules/leancloud-realtime/node_modules/eventemitter3/index.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/lodash/shuffle.js","webpack:///./node_modules/lodash/_arrayShuffle.js","webpack:///./node_modules/lodash/_copyArray.js","webpack:///./node_modules/lodash/_baseRandom.js","webpack:///./node_modules/lodash/_baseShuffle.js","webpack:///./node_modules/lodash/_baseValues.js","webpack:///./node_modules/lodash/_arrayMap.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/@babel/runtime/helpers/toArray.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js","webpack:///./node_modules/javascript-state-machine/state-machine.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/lodash/isPlainObject.js","webpack:///./node_modules/lodash/_getPrototype.js","webpack:///../src/live-query-client.js","webpack:///../src/index.js","webpack:///./node_modules/@babel/runtime-corejs3/core-js/is-iterable.js","webpack:///./node_modules/core-js-pure/features/is-iterable.js","webpack:///./node_modules/core-js-pure/full/is-iterable.js","webpack:///./node_modules/core-js-pure/actual/is-iterable.js","webpack:///./node_modules/core-js-pure/stable/is-iterable.js","webpack:///./node_modules/core-js-pure/es/is-iterable.js","webpack:///./node_modules/core-js-pure/internals/is-iterable.js"],"names":["root","factory","exports","module","define","amd","self","this","__webpack_require__","moduleId","installedModules","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","global","apply","uncurryThis","isCallable","getOwnPropertyDescriptor","f","isForced","path","bind","createNonEnumerableProperty","hasOwn","wrapConstructor","NativeConstructor","Wrapper","a","b","arguments","length","options","source","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","key","sourceProperty","targetProperty","nativeProperty","resultProperty","descriptor","TARGET","target","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","dontCallGetSet","value","wrap","sham","real","_interopRequireDefault","obj","exec","error","__webpack_exports__","NATIVE_BIND","FunctionPrototype","Function","fn","VERSION","ArrayProto","Array","ObjProto","SymbolProto","Symbol","push","slice","toString","supportsArrayBuffer","ArrayBuffer","supportsDataView","DataView","nativeIsArray","isArray","nativeKeys","keys","nativeCreate","create","nativeIsView","isView","_isNaN","isNaN","_isFinite","isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","Math","pow","it","check","globalThis","window","argument","shared","uid","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","wrappedWellKnownSymbolModule","NAME","toObject","fails","tagTester","tag","aFunction","variable","undefined","namespace","method","isPrototypeOf","isObject","$String","String","$TypeError","TypeError","cb","context","argCount","iteratee","DESCRIPTORS","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","O","P","Attributes","current","writable","restArguments","func","startIndex","max","rest","index","args","_","_wrapped","valueOf","toJSON","_concat","_promise","require","md5","extend","AV","AVError","getSessionToken","ajax","sign","isMasterKey","now","Date","getTime","signature","setAppKey","headers","signKey","applicationKey","setHeaders","authOptions","applicationId","useMasterKey","_config","masterKey","console","warn","hookKey","production","_sharedConfig","userAgent","resolve","then","sessionToken","disableCurrentUser","User","currentAsync","currentUser","_sessionToken","createApiUrl","service","version","apiURL","serverURLs","Error","charAt","request","query","data","_appRouter","refresh","timeout","requestTimeout","url","catch","errorJSON","code","message","responseText","response","JSON","parse","e","rawMessage","keepErrorRawMessage","statusCode","err","_request","route","className","objectId","_fetchWhenSave","_where","toLowerCase","isFunction","nodelist","document","childNodes","Int8Array","_keys","_getPrototypeOf","isNullOrUndefined","x","isNull","isUndefined","ensureArray","transformFetchOptions","include","includeACL","fetchOptions","join","returnACL","user","tap","interceptor","EmptyConstructor","inherits","parent","protoProps","staticProps","child","constructor","__super__","parseDate","wx","iso8601","setValue","segs","split","lastSeg","pop","currentTarget","forEach","seg","findValue","firstSeg","isPlainObject","continueWhile","predicate","asyncFunction","tryToString","IndexedObject","requireObjectCoercible","$Object","definePropertyModule","createPropertyDescriptor","toIndexedObject","addToUnscopables","Iterators","InternalStateModule","defineIterator","IS_PURE","setInternalState","set","getInternalState","getterFor","iterated","kind","type","state","done","values","Arguments","DOMIterables","classof","wellKnownSymbol","TO_STRING_TAG","COLLECTION_NAME","Collection","CollectionPrototype","CONSTRUCTOR","toLength","isArrayIteratorMethod","lengthOfArrayLike","getIterator","getIteratorMethod","iteratorClose","Result","stopped","result","ResultPrototype","iterable","unboundFunction","iterator","iterFn","next","step","that","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","has","NATIVE_WEAK_MAP","sharedKey","hiddenKeys","WeakMap","enforce","TYPE","store","wmget","wmhas","wmset","metadata","facade","STATE","_setPrototypeOf","OTHER_CAUSE","INTERNAL_SERVER_ERROR","CONNECTION_FAILED","OBJECT_NOT_FOUND","INVALID_QUERY","INVALID_CLASS_NAME","MISSING_OBJECT_ID","INVALID_KEY_NAME","INVALID_POINTER","INVALID_JSON","COMMAND_UNAVAILABLE","NOT_INITIALIZED","INCORRECT_TYPE","INVALID_CHANNEL_NAME","PUSH_MISCONFIGURED","OBJECT_TOO_LARGE","OPERATION_FORBIDDEN","CACHE_MISS","INVALID_NESTED_KEY","INVALID_FILE_NAME","INVALID_ACL","TIMEOUT","INVALID_EMAIL_ADDRESS","MISSING_CONTENT_TYPE","MISSING_CONTENT_LENGTH","INVALID_CONTENT_LENGTH","FILE_TOO_LARGE","FILE_SAVE_ERROR","FILE_DELETE_ERROR","DUPLICATE_VALUE","INVALID_ROLE_NAME","EXCEEDED_QUOTA","SCRIPT_FAILED","VALIDATION_ERROR","INVALID_IMAGE_DATA","UNSAVED_FILE_ERROR","INVALID_PUSH_TIME_ERROR","USERNAME_MISSING","PASSWORD_MISSING","USERNAME_TAKEN","EMAIL_TAKEN","EMAIL_MISSING","EMAIL_NOT_FOUND","SESSION_MISSING","MUST_CREATE_USER_THROUGH_SIGNUP","ACCOUNT_ALREADY_LINKED","LINKED_ID_MISSING","INVALID_LINKED_SESSION","UNSUPPORTED_SERVICE","X_DOMAIN_REQUEST","bitmap","aCallable","activeXDocument","definePropertiesModule","enumBugKeys","html","documentCreateElement","IE_PROTO","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","F","NullProtoObject","ActiveXObject","domain","Properties","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","TAG","SET_METHOD","PromiseCapability","C","reject","promise","$$resolve","$$reject","string","point","each","_typeof","useColors","process","__nwjs","navigator","match","documentElement","WebkitAppearance","firebug","exception","table","parseInt","RegExp","$1","formatArgs","humanize","diff","color","splice","lastC","replace","log","_console","save","namespaces","storage","setItem","removeItem","load","r","getItem","env","DEBUG","localStorage","colors","formatters","j","v","stringify","propertyIsEnumerableModule","stringSlice","V8_VERSION","getOwnPropertySymbols","symbol","Promise","flatten","input","depth","strict","output","concat","Infinity","idx","len","map","results","currentKey","_map","_stringify","_indexOf","_keys2","uuid","debug","setAdapters","adapterManager","realtime","initialUserAgent","liveQueryRealtime","on","platformInfo","ua","comments","extra","_getAVPath","isString","substring","_installationId","_getInstallationId","getItemAsync","setItemAsync","_subscriptionId","_refreshSubscriptionId","subscriptionId","_getSubscriptionId","_parseDate","_extend","classProps","_encode","seenObjects","disallowObjects","full","_hasData","_toFullJSON","_toPointer","ACL","isDate","__type","iso","GeoPoint","isRegExp","Relation","Op","File","id","mapObject","k","_decode","__op","pointer","_create","clone","_finishFetch","latitude","longitude","relation","targetClassName","file","parseJSON","text","_encodeObjectOrArray","encodeAVObject","_arrayEach","_traverse","seen","attributes","newChild","_each","_objectEach","callback","enable","disable","arraySpeciesCreate","createMethod","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","specificCreate","boundFunction","filter","some","every","find","findIndex","filterReject","EventEmitter","AdapterManager","_adapters","getAdapter","adapter","newAdapters","emit","_Symbol","_Symbol$iterator","g","eval","Reflect","test","Deno","versions","v8","mode","copyright","license","NativePromiseConstructor","inspectSource","IS_BROWSER","NativePromisePrototype","SPECIES","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","REJECTION_EVENT","hasStringTagBug","isIE11","Map","allKeys","toPath","optimizeCb","collection","accumulator","list","contains","item","fromIndex","guard","propertyKey","$","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","isExtensible","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","fastKey","getWeakData","onFreeze","meta","getOwnPropertyNames","toPrimitive","isSymbol","getBuiltIn","$Symbol","postfix","random","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","getPrototypeOf","aPossiblePrototype","setPrototypeOf","setter","CORRECT_SETTER","__proto__","internalObjectKeys","getMethod","ITERATOR","Prototype","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","matcher","attrs","partial","boundArgs","placeholder","bound","position","group","behavior","partition","METHOD_NAME","array","foo","Boolean","_typeof2","_filter","debugRequest","debugRequestError","requestsCount","time","onprogress","queryString","encodeURIComponent","qs","count","status","header","ok","enabled","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","toStringTag","isObjectLike","$propertyIsEnumerable","NASHORN_BUG","1","V","defineGlobalProperty","EXISTS","createElement","toIntegerOrInfinity","min","integer","trunc","number","objectKeys","defineProperties","props","functionToString","FunctionName","createIteratorConstructor","setToStringTag","defineBuiltIn","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","IteratorPrototype","BUGGY_SAFARI_ITERATORS","returnThis","Iterable","IteratorConstructor","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","ie10IsDataView","getInt8","buffer","isDataView","isArguments","ie11fingerprint","weakMapMethods","forEachName","commonInit","mapTail","mapMethods","setMethods","createAssigner","keysFunc","defaults","deepGet","identity","negate","pluck","unsafe","InternalMetadataModule","iterate","anInstance","internalStateGetterFor","CONSTRUCTOR_NAME","wrapper","common","Constructor","indexOf","IS_WEAK","ADDER","NativePrototype","exported","IS_ADDER","size","getConstructor","setStrong","replacement","feature","detection","normalize","POLYFILL","NATIVE","getOwnPropertySymbolsModule","names","toAbsoluteIndex","IS_INCLUDES","el","includes","ArrayPrototype","usingIterator","iteratorMethod","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","aConstructor","defaultConstructor","S","isConstructor","location","defer","channel","port","arraySlice","validateArgumentsLength","IS_IOS","IS_NODE","setImmediate","clear","clearImmediate","Dispatch","MessageChannel","counter","queue","run","runner","listener","event","post","postMessage","protocol","host","handler","nextTick","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","checkCorrectnessOfIteration","all","SAFE_CLOSING","iteratorWithReturn","from","SKIP_CLOSING","ITERATION_SUPPORT","newPromiseCapability","promiseCapability","isBoolean","isTypedArray","typedArrayPattern","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","emulatedSet","hash","collectNonEnumProps","nonEnumIdx","prop","isMatch","invert","functions","sort","ctor","baseCreate","Ctor","defaultValue","baseIteratee","floor","createEscaper","escaper","testRegexp","replaceRegexp","templateSettings","evaluate","interpolate","escape","executeBound","sourceFunc","boundFunc","callingContext","callArgs","wait","before","times","memo","findKey","createPredicateIndexFinder","dir","sortedIndex","low","high","mid","createIndexFinder","predicateFind","keyFinder","createReduce","reducer","initial","computed","lastComputed","sample","last","rand","uniq","isSorted","unzip","chainResult","instance","_chain","chain","doesNotExceedSafeInteger","createProperty","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","arity","arg","E","A","arraySpeciesConstructor","originalArray","$stringify","charCodeAt","numberToString","tester","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","replacer","$replacer","fixIllFormed","offset","prev","space","v4","buf","rnds","rng","ii","bytesToUuid","Events","EE","once","_events","_eventsCount","prefix","eventNames","events","listeners","exists","evt","available","ee","a1","a2","a3","a4","a5","removeListener","removeAllListeners","off","addListener","setMaxListeners","prefixed","syncApiNames","async","apiName","removeAsync","removeItemAsync","getCacheData","cacheData","expiredAt","getAsync","cache","setAsync","ttl","$getOwnPropertyNames","windowNames","getWindowNames","SymbolPrototype","TO_PRIMITIVE","hint","keyFor","TimeoutError","timeoutMillis","race","clearTimeout","stack","$Function","factories","argsLength","partArgs","charenc","utf8","stringToBytes","str","bin","unescape","bytesToString","bytes","decodeURIComponent","fromCharCode","adapters","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","preventExtensions","defineBuiltIns","setSpecies","first","previous","entry","getEntry","removed","add","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","_arrayLikeToArray","arr","arr2","_iterableToArray","iter","_unsupportedIterableToArray","minLen","arrayLikeToArray","shuffleSelf","lastIndex","baseRandom","baseValues","freeGlobal","freeSelf","webpackPolyfill","deprecate","paths","children","isLength","MAX_SAFE_INTEGER","overArg","transform","useLiveQuery","useAdatpers","Cache","Conversation","copyConstructorProperties","clearErrorStack","installErrorCause","normalizeStringArgument","ERROR_STACK_INSTALLABLE","$Error","$AggregateError","errors","isInstance","AggregateErrorPrototype","errorsArray","AggregateError","ordinaryToPrimitive","pref","exoticToPrim","val","ownKeys","getOwnPropertyDescriptorModule","exceptions","ceil","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","cause","$default","getDescriptor","ENUMERABLE_NEXT","Internal","OwnPromiseCapability","nativeThen","speciesConstructor","task","microtask","hostReportErrors","perform","Queue","PromiseConstructorDetection","newPromiseCapabilityModule","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","isThenable","callReaction","reaction","exited","fail","rejection","onHandleUnhandled","enter","exit","notify","isReject","notified","reactions","onUnhandled","reason","initEvent","IS_UNHANDLED","isUnhandled","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","PromiseWrapper","passed","required","flush","head","toggle","node","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","Pebble","tail","capability","$promiseResolve","remaining","alreadyCalled","promiseResolve","PromiseConstructorWrapper","CHECK_WRAPPER","allSettled","any","alreadyResolved","alreadyRejected","onFinally","CONVERT_TO_STRING","pos","second","codeAt","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","isElement","nodeType","parseFloat","isEmpty","eq","aStack","bStack","deepEq","tagDataView","areArrays","byteOffset","aCtor","bCtor","isEqual","toBufferView","bufferSource","Uint8Array","pairs","propertyOf","accum","escapeChar","escapes","template","settings","oldSettings","noMatch","escapeRegExp","bareIdentifier","render","fallback","uniqueId","idCounter","memoize","hasher","address","throttle","later","leading","throttled","_now","trailing","cancel","debounce","immediate","debounced","_args","compose","start","after","findWhere","contextPath","where","shuffle","sortBy","criteria","left","right","pass","toArray","reStrSymbol","keyInObj","compact","otherArrays","arrays","intersection","range","chunk","mixin","own","entryVirtual","$Array","$map","$IndexOf","arrayMethodIsStrict","un$IndexOf","NEGATIVE_ZERO","STRICT_METHOD","searchElement","getRandomValues","crypto","msCrypto","rnds8","bth","byteToHex","substr","setup","selectColor","createDebug","abs","_len","_key","curr","Number","ms","prevTime","coerce","unshift","format","formatter","destroy","init","instances","delimiter","skips","default","y","w","h","fmtShort","msAbs","round","fmtLong","plural","isPlural","long","nativeGetPrototypeOf","getDefaultServerURLs","appId","isCNApp","stats","engine","api","rtm","_slice","_defineProperty","AppRouter","fillServerURLs","_disableAppRouter","_initialized","appKey","serverURL","setProduction","disableAppRouter","_setServerURLs","server","RTMRouter","urls","setServerURL","setServerURLs","setRequestTimeout","initialize","un$Slice","HAS_SPECIES_SUPPORT","end","fin","desc","lockedUntil","disabled","lock","servers","push_server","stats_server","engine_server","api_server","$toString","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","$forEach","HIDDEN","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","properties","$getOwnPropertySymbols","$create","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","WrappedWellKnownSymbolModule","$filter","eventSplitter","calls","_callbacks","shift","ctx","trigger","unbind","arg1","arg2","_validate","isNumber","__defineGetter__","__defineSetter__","_latitude","_longitude","geolocation","getCurrentPosition","coords","radiansTo","d2r","PI","lat1rad","long1rad","lat2rad","long2rad","deltaLat","deltaLong","sinDeltaLatDiv2","sin","sinDeltaLongDiv2","cos","asin","sqrt","kilometersTo","milesTo","permissionsById","setReadAccess","setWriteAccess","accessList","userId","allowed","permission","_setAccess","accessType","Role","getName","permissions","_getAccess","getReadAccess","getWriteAccess","setPublicReadAccess","getPublicReadAccess","setPublicWriteAccess","getPublicWriteAccess","getRoleReadAccess","role","getRoleWriteAccess","setRoleReadAccess","setRoleWriteAccess","_find","_initialize","_opDecoderMap","_registerDecoder","opName","decoder","json","op","ops","nextOp","_mergeWithPrevious","Set","_value","_estimate","oldValue","_UNSET","Unset","Increment","amount","_amount","BitAnd","BitOr","BitXor","Add","objects","_objects","AddUnique","newValue","matchingObj","anObj","Remove","union","difference","other","adds","removes","_targetClassName","pointerToId","relationsToAdd","relationsToRemove","added","idToPointer","pointers","newAdd","newRemove","newRelation","$find","SKIPS_HOLES","reverseQuery","parentClass","relationKey","Query","equalTo","_ensureParentAndKey","change","remove","targetClass","_getSubclass","_defaultParams","redirectClassNameForKey","_addCondition","qiniu","s3","AVRequest","parseBase64","extname","b64Digit","encodeBase64","chunks","b1","b2","b3","has2","has3","mimeType","metaData","base64","_extName","_data","_uploadHeaders","blob","uri","Blob","owner","withURL","__source","createWithoutData","censor","res","censorResult","_operations","toFullJSON","holder","getACL","_acl","setACL","acl","attrName","setUploadHeader","attr","thumbnailURL","width","height","quality","scaleToFit","fmt","ownerId","_fileToken","extName","keep_file_name","keepFileName","mime_type","_previousSave","uploadInfo","_token","token","_options","direction","provider","_callback","success","fetch","bucket","saveOptions","upload_url","fileFormData","field","_bucket","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf2","NewTarget","_Reflect$construct","_possibleConstructorReturn2","Proxy","_createForOfIteratorHelper","allowArrayLike","_getIteratorMethod","_e","normalCompletion","didErr","_e2","return","_context8","_sliceInstanceProperty2","_Array$from","upload","uptoken","urlSafeBase64","btoa","ch","isBlob","_inherits2","_classCallCheck2","_createClass2","CHUNK_SIZE","ShardUploader","uploadedChunks","uploadURL","baseURL","upToken","uploaded","onProgress","loaded","total","percent","Authorization","uploadId","partNumber","etag","parts","getUploadId","uploadPart","getChunk","part","stopUpload","fname","BlobUploader","_ShardUploader","_super","callWithSafeIterationClosing","arrayLike","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","ENTRIES","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","_inherits","subClass","superClass","_Object$create","_Object$defineProperty","D","_context","_Object$setPrototypeOf","_bindInstanceProperty","_possibleConstructorReturn","assertThisInitialized","_assertThisInitialized","ReferenceError","_Object$getPrototypeOf","_classCallCheck","_defineProperties","_createClass","b64","crypt","isBuffer","encoding","bytesToWords","FF","_ff","GG","_gg","HH","_hh","II","_ii","aa","bb","cc","dd","endian","t","_blocksize","_digestsize","digestbytes","wordsToBytes","asBytes","asString","bytesToHex","base64map","rotl","rotr","randomBytes","words","hex","hexToBytes","bytesToBase64","triplet","base64ToBytes","imod4","isSlowBuffer","readFloatLE","_isBuffer","dataURItoBlob","dataURI","byteString","atob","ia","getValue","_slicedToArray2","_getOwnPropertyDescriptor","recursiveToPointer","RESERVED_KEYS","checkReservedKey","handleBatchResults","firstError","_mergeMagicFields","_serverData","_opSetQueue","_flags","_hashedJSON","_escapedAttributes","cid","changed","_silent","_pending","silent","_previousAttributes","saveAll","_deepSaveAsync","fetchAll","requests","dirty","fetchedAttrs","_cleanupUnsetKeys","fetchWhenSave","getObjectId","getCreatedAt","createdAt","getUpdatedAt","updatedAt","newSeenObjects","_refreshCache","_refreshingCache","_resetCacheForKey","currentChanges","dirtyKeys","escaped","model","specialFields","_startSave","_cancelSave","failedChanges","nextChanges","op1","op2","_saving","_finishSave","serverData","fetchedObjects","savedChanges","_applyOpSet","fetched","_rebuildAllEstimatedData","opSetQueue","hasData","opSet","actualTarget","actualKey","wasSet","_rebuildEstimatedDataForKey","firstKey","previousAttributes","unset","unused_value","dataToValidate","changes","isRealChange","increment","addUnique","bitAnd","bitOr","bitXor","keysToClear","revert","lastOp","_getSaveJSON","_canBeSerialized","_canBeSerializedAsValue","fetchedKeys","arg3","setOptions","unsavedChildren","unsavedFiles","_findUnsavedChildren","_allPreviousSaves","_failOnNotExist","failOnNotExist","queryParams","_getParams","makeRequest","_makeRequest","requestPromise","resp","serverAttrs","triggerDestroy","isNew","changing","_changing","deleteChanged","isValid","validate","disableBeforeHook","ignoreHook","disableAfterHook","hookName","__ignore_hooks","klass","_klass","destroyAll","objectsByClassNameAndFlags","groupBy","flags","body","ids","ObjectClass","_classMap","NewClassObject","OldClassObject","_className","arg0","newArguments","_LCClassName","register","files","canBeSerializedAsValue","batch","newRemaining","readyToStart","bathSavePromise","params","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_arrayWithHoles","_Array$isArray","_iterableToArrayLimit","_i","_s","_arr","_n","_d","_sliceInstanceProperty","_nonIterableRest","setName","getUsers","getRoles","newName","_defineProperty2","mergeUnionDataIntoAuthData","defaultUnionIdPlatform","authData","unionId","unionIdPlatform","asMainAccount","platform","unionid","main_account","_isCurrentUser","_cleanupAuthData","isCurrent","_synchronizeAllAuthData","_synchronizeAuthData","authType","_authProviders","getAuthType","restoreAuthentication","dissociateAuthData","_handleSaveResult","makeCurrent","password","_saveCurrentUser","_linkWith","authenticate","associateWithAuthData","associateWithAuthDataAndUnionId","unionOptions","associateWithMiniApp","authInfo","option","associateWithQQApp","preferUnionId","associateWithWeapp","linkWithWeapp","associateWithQQAppWithUnionId","mergeUnionId","associateWithWeappWithUnionId","_unlinkFrom","_isLinked","isAnonymous","logOut","_logOutWithAll","_logOutWith","deauthenticate","signUp","username","signUpOrlogInWithMobilePhone","mobilePhoneNumber","smsCode","loginWithAuthData","loginWithAuthDataAndUnionId","unionLoginOptions","loginWithWeapp","loginWithMiniApp","loginWithWeappWithUnionId","loginWithQQApp","loginWithQQAppWithUnionId","logIn","follow","userObjectId","unfollow","getFollowersAndFollowees","skip","limit","followers","followees","follower","followee","followerQuery","followeeQuery","updatePassword","oldPassword","newPassword","old_password","new_password","getUsername","getMobilePhoneNumber","setMobilePhoneNumber","phone","setUsername","setPassword","getEmail","setEmail","email","authenticated","isAuthenticated","_fetchUserBySessionToken","refreshSessionToken","_currentUser","_currentUserMatchesDisk","_CURRENT_USER_KEY","become","logInWithMobilePhoneSmsCode","mobilePhone","logInWithMobilePhone","loginWithEmail","_logInWith","signUpOrlogInWithAuthData","signUpOrlogInWithAuthDataAndUnionId","_genId","loginAnonymously","userObj","FriendShipQuery","_friendshipTag","requestPasswordReset","requestEmailVerify","requestMobilePhoneVerify","validateToken","validate_token","requestPasswordResetBySmsCode","requestChangePhoneNumber","changePhoneNumber","resetPasswordBySmsCode","verifyMobilePhone","requestLoginSmsCode","userData","_id","_registerAuthenticationProvider","requires","objectClass","_include","_select","_limit","_skip","or","queries","q","_orQuery","and","_andQuery","doCloudQuery","cql","pvalues","_newObject","_processResult","fromJSON","select","order","_includeACL","_order","queryJSON","_createRequest","_parseResponse","findAndCount","scan","orderedBy","batchSize","scan_key","cursor","remainResults","sizeEqualTo","notEqualTo","lessThan","greaterThan","lessThanOrEqualTo","greaterThanOrEqualTo","containedIn","notContainedIn","containsAll","doesNotExist","matches","regex","modifiers","ignoreCase","multiline","matchesQuery","doesNotMatchQuery","matchesKeyInQuery","queryKey","doesNotMatchKeyInQuery","$or","$and","_quote","startsWith","endsWith","ascending","addAscending","descending","addDescending","near","withinRadians","distance","withinMiles","withinKilometers","withinGeoBox","southwest","northeast","$box","finished","callbacksDone","subscribe","LiveQuery","requireRealtime","client","_client","_queryJSON","_onMessage","_dispatch","_onReconnect","queryId","query_id","updatedKeys","unsubscribe","deregister","userDefinedSubscriptionId","createLiveQueryClient","liveQueryClient","finally","pause","resume","Captcha","_authOptions","captchaToken","Cloud","_requestCaptcha","verify","verifyCaptcha","captcha","rpc","getServerDate","requestSmsCode","verifySmsCode","captcha_url","captcha_token","requestCaptcha","captcha_code","Installation","Push","send","push_time","expiration_time","expiration_interval","getUser","getUserPointer","currUser","Status","imageUrl","inboxType","image","_getDataJSON","sendStatusToFollowers","messageId","sendPrivateStatus","countUnreadStatuses","resetUnreadCount","statusQuery","InboxQuery","_objectClass","_sinceId","_maxId","_inboxType","_owner","sinceId","maxId","inboxQuery","SearchSortBuilder","_sortFields","_addField","missing","whereNear","geo","lat","lon","unit","build","SearchQuery","_sid","_hits","_queryString","_highlights","_sortBuilder","_clazz","sid","highlights","builder","hits","hasMore","_hitEnd","reset","_oldSid","appURL","clazz","Insight","startJob","jobConfig","sql","JobQuery","LCRequest","getUserWithSessionToken","getSessionTokenAsync","Friendship","friend","friendObj","friendship","acceptRequest","requestId","declineRequest","serializeMessage","getPayload","isSystem","isTransient","getCreator","getLastMessageAt","getMembers","addMember","member","getMutedMembers","fromClient","from_peer","conv_id","transient","toClients","to_peers","pushData","push_data","broadcast","validTill","ts","valid_till","Statistic","LeaderboardVersionChangeInterval","NEVER","DAY","WEEK","MONTH","LeaderboardOrder","ASCENDING","DESCENDING","LeaderboardUpdateStrategy","BETTER","LAST","SUM","parseStatisticData","statisticData","statisticName","statisticValue","Leaderboard","updateStrategy","versionChangeInterval","nextResetAt","createLeaderboard","getLeaderboard","getStatistics","statisticNames","statistics","updateStatistics","overwrite","deleteStatistics","_getResults","selectUserKeys","includeUserKeys","includeStatistics","includeUser","rankings","rankingData","rank","includedStatistics","getResults","getResultsAroundUser","_update","updateVersionChangeInterval","updateUpdateStrategy","getArchives","activatedAt","deactivatedAt","__extends","__","extendStatics","__rest","__awaiter","thisArg","_arguments","generator","adopt","fulfilled","rejected","__generator","verb","label","trys","sent","getLoginCode","login","errMsg","_a","pd","retv","privateData","assert","setCancelFlag","passiveListener","cancelable","canceled","preventDefault","Event","eventTarget","eventPhase","immediateStopped","timeStamp","defineRedirectDescriptor","defineCallDescriptor","defineWrapper","BaseEvent","CustomEvent","isFunc","getWrapper","wrappers","wrapEvent","isStopped","setEventPhase","setCurrentTarget","setPassiveListener","getListeners","listenersMap","defineEventAttributeDescriptor","eventName","listenerType","ATTRIBUTE","delete","newNode","passive","defineEventAttribute","eventTargetPrototype","defineCustomEventTarget","CustomEventTarget","EventTarget","types","_assign2","_getOwnPropertySymbols","_symbol","_iterator","_weakMap","__assign","getAuthInfo","_b","_c","_f","getStorageSync","setStorageSync","removeStorageSync","clearStorageSync","AbortError","_this","signal","aborted","complete","removeEventListener","abortListener","abort","uploadFile","filePath","formData","onProgressUpdate","totalBytesSent","totalBytesExpectedToSend","progress","composedPath","stopPropagation","stopImmediatePropagation","bubbles","composed","cancelBubble","optionsIsObj","capture","wrappedEvent","handleEvent","defaultPrevented","WS","CLOSED","_url","_protocol","_readyState","WechatWS","canIUse","CONNECTING","errorHandler","socketTask","connectSocket","protocols","_socketTask","onOpen","OPEN","onError","onMessage","onClose","readyState","WebSocket","assign","$assign","B","alphabet","chr","T","InternalWeakMap","collectionWeak","enforceInternalState","IS_IE11","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","frozen","ArrayIterationModule","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","collectionStrong","Realtime","setRTMAdapters","LiveQueryPlugin","__preRegisteredPlugins","_interopDefault","ex","_typeof3","enumerableOnly","symbols","_objectSpread","_getOwnPropertyDescriptors","ownKeys$1","_objectSpread$1","ownKeys$2","_objectSpread$2","_context6","_context15","_freeze","_assign","_reduce","_set","protobufLight","_regeneratorRuntime","_asyncToGenerator","_toConsumableArray","_objectWithoutProperties","_inheritsLoose","_toArray","_applyDecoratedDescriptor","StateMachine","promiseTimeout","newBuilder","package","syntax","objc_class_prefix","messages","fields","rule","enums","isNamespace","_messages$push_server","messages2","JsonObjectMessage","UnreadTuple","LogItem","DataCommand","SessionCommand","ErrorCommand","DirectCommand","AckCommand","UnreadCommand","ConvCommand","RoomCommand","LogsCommand","RcpCommand","ReadTuple","MaxReadTuple","ReadCommand","PresenceCommand","ReportCommand","GenericCommand","BlacklistCommand","PatchCommand","PatchItem","ConvMemberInfo","CommandType","OpType","StatusType","EXPIRED","Expirable","originalValue","expired","_class","_proto","tryAll","promiseConstructors","internal","removeNull","trim","isWeapp","equalBuffer","buffer1","buffer2","byteLength","DEFAULT_RETRY_STRATEGY","attempt","requireConnected","_descriptor$value","checkConnectionAvailability","WebSocketPlus","getUrls","_EventEmitter","_urls","_open","__postponeTimeoutTimer","_postponeTimeoutTimer","__pause","can","__resume","_this2","_createWs","ws","_this2$_urls","_this3","binaryType","onopen","onclose","onerror","_ws","_handleClose","_handleMessage","_destroyWs","onbeforeevent","to","_len2","payload","onconnected","_startConnectionKeeper","onleaveconnected","_stopConnectionKeeper","onpause","onbeforeresume","onreconnect","ondisconnected","_this4","delay","__scheduledRetry","is","retry","onretry","_this5","reconnect","currentState","_ping","ping","_this6","_clearTimeoutTimers","_timeoutTimer","disconnect","_heartbeatTimer","setInterval","clearInterval","isFinished","handleClose","handleMessage","terminal","1000","1006","4100","4102","4103","4105","4107","4108","4109","4110","4111","4112","4113","4116","4200","4301","4302","4303","4304","4305","4306","4307","4308","4309","4310","4311","4312","4313","4314","4315","4316","4317","4318","4323","4401","4402","4403","4404","4405","4406","4407","5130","ErrorCode","createError","appCode","detail","errorMessage","EXPIRE","isIdempotentCommand","command","cmd","direct","session","conv","update","members","Connection","getUrl","_ref","protocolString","_WebSocketPlus","_protocolFormat","_commands","_serialId","_x","_send","mark","waitingForRespond","serialId","duplicatedCommand","_context17","_context18","toArrayBuffer","targetBuffer","targetCommand","abrupt","toBase64","_callee","msg","decode","goaway","echo","_ref$method","_context22","applyDecorators","decorators","decorator","_pluginName","applyDispatcher","dispatchers","resultPromise","dispatcher","shouldDispatch","routerCache","initializedApp","plugins","noBinary","ssl","RTMServerName","RTM_SERVER_NAME","_cache","clients","pendingClients","mergedPlugins","plugin","_plugins","hook","onRealtimeCreate","_request2","_ref2$version","_this$_options","_yield$this$construct","_context27","_context28","_getServerUrls","X-LC-Id","X-LC-Key","_openPromise","connection","_getRTMServers","_context2","_callee2","_dispatchCommand","APP_NOT_AVAILABLE","INVALID_LOGIN","INVALID_ORIGIN","errorCode","_x2","_getRTMServers2","info","cachedEndPoints","_info","secondary","_context3","RTMServers","_fetchRTMServers","_callee3","_x3","_getServerUrls2","cachedRouter","defaultProtocol","_context4","RTMRouterServer","rtm_router_server","APIServer","_ref5$ttl","_ref5","serverUrls","_callee4","secure","features","_t","_close","_internal","cannot","_internal2","_internal3","_registerPending","_deregisterPending","_register","_deregister","beforeCommandDispatch","polyfilledPromise","Protocals","Protocols","debug$2","freeze","$freeze","getOwnPropertyDescriptors","reduce","$reduce","CHROME_VERSION","CHROME_BUG","IS_RIGHT","ByteBuffer","isCommonJS","ProtoBuf","Long","WIRE_TYPES","VARINT","BITS64","LDELIM","STARTGROUP","ENDGROUP","BITS32","PACKABLE_WIRE_TYPES","TYPES","wireType","ZERO","UZERO","MAP_KEY_TYPES","ID_MIN","ID_MAX","convertFieldsToCamelCase","populateAccessors","populateDefaults","Util","XHR","XMLHttpFactories","XMLHttpRequest","xhr","fs","readFile","readFileSync","setRequestHeader","overrideMimeType","onreadystatechange","toCamelCase","$0","toUpperCase","Lang","DELIM","RULE","TYPEDEF","TYPEREF","FQTYPEREF","NUMBER","NUMBER_DEC","NUMBER_HEX","NUMBER_OCT","NUMBER_FLT","BOOL","ID","NEGID","WHITESPACE","STRING","STRING_DQ","STRING_SQ","mkDefault","mkLong","unsigned","fromString","fromNumber","skipTillGroupEnd","expectedId","readVarint32","readUint8","TPrototype","fqn","ptr","includeClass","Namespace","NamespacePrototype","getChildren","addChild","getChild","Message","Field","originalName","nameOrId","qn","excludeNonNamespace","ns","buildOpt","opt","getOption","Element","resolvedType","isMapKey","ElementPrototype","defaultFieldValue","verifyValue","isByteBuffer","Enum","Value","Builder","calculateLength","calculateVarint64","calculateVarint32","zigZagEncode32","zigZagEncode64","calculateUTF8Bytes","calculate","encodeValue","writeVarint64","writeVarint32","writeVarint32ZigZag","writeUint32","writeInt32","writeVarint64ZigZag","writeUint64","writeInt64","writeFloat32","writeFloat64","writeVString","prevOffset","append","LE","encode","flip","nBytes","readVarint32ZigZag","readUint32","readInt32","readVarint64","toUnsigned","readVarint64ZigZag","readUint64","readInt64","readFloat","readDouble","readVString","valueFromString","fromBinary","valueToString","isGroup","extensions","_fields","_fieldsById","_fieldsByName","MessagePrototype","rebuild","cloneRaw","binaryAsBase64","longsAsStrings","toBuffer","isLong","fromValue","keyElem","valueElem","$type","oneofs","OneOf","var_args","repeated","$set","noAssert","$add","keyOrObj","ikey","_oneofsByName","oneof","currentField","$get","ExtensionField","Name","noVerify","le","littleEndian","encodeDelimited","enc","encodeAB","encodeNB","encode64","encodeHex","toHex","toRaw","encodeJSON","decodeDelimited","decode64","decodeHex","decodeJSON","Service","Extension","fieldMissing","expectedGroupEndId","keyval","keytype","keyType","element","keyElement","FieldPrototype","skipRepeated","hasWirePresence","ensureCapacity","varintLen","contents","ni","msgbuf","extension","enm","rpcImpl","ServicePrototype","RPCMethod","req","resolvedRequestType","resolvedResponseType","notABuffer","Method","svc","request_stream","response_stream","requestName","responseName","requestStream","responseStream","propagateSyntax","resolved","importRoot","BuilderPrototype","isMessage","def","isMessageField","isEnum","isService","isExtend","defs","fld","subObj","mtd","valid","ext","filename","delim","resetRoot","importFilename","DotProto","Parser","$2","base","resolveAll","packed","lookup","MapPrototype","keyValue","hadKey","strKeys","valValue","loadJson","loadJsonFile","stringSource","stringDestination","cs","ps","stringFromCharCode","ieee754_read","isLE","mLen","eLen","eMax","eBias","nBits","NaN","ieee754_write","rt","LN2","capacity","DEFAULT_CAPACITY","DEFAULT_ENDIAN","DEFAULT_NOASSERT","RangeError","EMPTY_BUFFER","view","markedOffset","LITTLE_ENDIAN","BIG_ENDIAN","ByteBufferPrototype","__isByteBuffer__","accessor","allocate","buffers","bi","subarray","fromBase64","fromHex","fromUTF8","fromDebug","writeBitSet","relative","bits","bit","writeByte","readBitSet","ret","readByte","readBytes","writeBytes","writeInt8","capacity0","resize","readInt8","writeUint8","capacity1","writeUInt8","readUInt8","writeInt16","capacity2","writeShort","readInt16","readShort","writeUint16","capacity3","writeUInt16","readUint16","readUInt16","capacity4","writeInt","readInt","capacity5","writeUInt32","readUInt32","capacity6","lo","writeLong","readLong","capacity7","writeUInt64","readUInt64","capacity8","writeFloat","readFloat32","capacity9","writeDouble","readFloat64","MAX_VARINT32_BYTES","zigZagDecode32","capacity10","MAX_VARINT64_BYTES","part0","toInt","part1","shiftRightUnsigned","part2","toSigned","shiftLeft","xor","shiftRight","zigZagDecode64","ONE","capacity11","fromBits","writeCString","utfx","calculateUTF16asUTF8","capacity12","encodeUTF16toUTF8","readCString","sd","decodeUTF8toUTF16","writeIString","capacity13","readIString","readUTF8String","METRICS_BYTES","METRICS_CHARS","writeUTF8String","capacity14","writeString","calculateUTF8Chars","calculateString","metrics","decodeUTF8","cp","UTF8toUTF16","readString","capacity15","capacity16","appendTo","copy","begin","copyTo","targetOffset","sourceOffset","sourceLimit","targetRelative","fill","BE","bigEndian","prepend","prependTo","printDebug","out","toDebug","reverse","forceCopy","toUTF8","toBinary","toColumns","lxiv","aout","ain","dst","t1","t2","chars","charCode","columns","asc","rs","ho","hm","hl","MAX_CODEPOINT","encodeUTF8","UTF16toUTF8","c1","c2","calculateCodePoint","calculateUTF8","fromInt","cachedObj","UINT_CACHE","INT_CACHE","TWO_PWR_64_DBL","MAX_UNSIGNED_VALUE","TWO_PWR_63_DBL","MIN_VALUE","MAX_VALUE","neg","TWO_PWR_32_DBL","lowBits","highBits","radix","radixToPower","pow_dbl","power","mul","__isLong__","TWO_PWR_16_DBL","TWO_PWR_24","UONE","NEG_ONE","LongPrototype","toNumber","isZero","isNegative","radixLong","div","rem1","sub","rem","remDiv","intval","digits","getHighBits","getHighBitsUnsigned","getLowBits","getLowBitsUnsigned","getNumBitsAbs","isPositive","isOdd","isEven","equals","notEquals","neq","comp","lt","lessThanOrEqual","lte","gt","greaterThanOrEqual","gte","compare","thisNeg","otherNeg","not","addend","a48","a32","a16","a00","b48","b32","b16","b00","c48","c32","c16","c00","subtract","subtrahend","multiply","multiplier","divide","divisor","approx","shru","shr","shl","log2","delta","approxRes","approxRem","modulo","mod","numBits","toBytes","toBytesLE","toBytesBE","emitter","clearEvent","handlers","listenerCount","runtime","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","enqueue","callInvokeWithMethodAndArg","previousPromise","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","GenStateSuspendedYield","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","getProto","NativeIteratorPrototype","Gp","displayName","isGeneratorFunction","genFun","awrap","skipTempReset","rootEntry","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","asyncGeneratorStep","gen","_next","_throw","arrayWithoutHoles","iterableToArray","nonIterableSpread","_arrayWithoutHoles","_nonIterableSpread","excluded","objectWithoutPropertiesLoose","sourceSymbolKeys","_objectWithoutPropertiesLoose","sourceKeys","arrayShuffle","baseShuffle","copyArray","lower","upper","nativeFloor","nativeRandom","arrayMap","isArrayLike","arrayLikeKeys","baseKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","baseTimes","isIndex","objectProto","baseIsArguments","argsTag","isOwn","unmasked","nativeObjectToString","stubFalse","freeExports","freeModule","moduleExports","Buffer","nativeIsBuffer","reIsUint","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","typedArrayTags","freeProcess","binding","isPrototype","funcTag","genTag","asyncTag","proxyTag","initializer","SUCCEEDED","NOTRANSITION","CANCELLED","PENDING","INVALID_TRANSITION","PENDING_TRANSITION","INVALID_CALLBACK","WILDCARD","ASYNC","cfg","fsm","callbacks","transitions","buildEvent","transition","states","doCallback","beforeAnyEvent","afterAnyEvent","leaveAnyState","enterAnyState","changeState","beforeThisEvent","afterThisEvent","leaveThisState","enterThisState","beforeEvent","afterEvent","leaveState","specific","general","enterState","leave","objectTag","getPrototype","funcToString","objectCtorString","funcProto","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_isIterable2","_from","core","LiveQueryClient","_appId","_connection","_eventemitter","_querys","installationId","_ee","logout","liveQuery","_Promise","_dispatchDataCommand","dataMessage","ack","ackMessage","finalize","_liveQueryClients","targetClient","isIterable"],"mappings":"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","file":"av-live-query-weapp-min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 277);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 4282105f9332cbe0b0c9","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AV\"] = factory();\n\telse\n\t\troot[\"AV\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 277);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7);\nvar apply = __webpack_require__(75);\nvar uncurryThis = __webpack_require__(4);\nvar isCallable = __webpack_require__(8);\nvar getOwnPropertyDescriptor = __webpack_require__(62).f;\nvar isForced = __webpack_require__(159);\nvar path = __webpack_require__(5);\nvar bind = __webpack_require__(48);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar hasOwn = __webpack_require__(13);\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_default_js__ = __webpack_require__(318);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_0__index_default_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__index_js__ = __webpack_require__(132);\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"VERSION\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"restArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNull\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isUndefined\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isBoolean\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isElement\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isString\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNumber\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isRegExp\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isError\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSymbol\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArrayBuffer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isDataView\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFunction\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isArguments\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isFinite\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isNaN\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isTypedArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEmpty\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMatch\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isEqual\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakMap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"isWeakSet\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"keys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"allKeys\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"values\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pairs\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invert\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"functions\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"methods\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extend\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"extendOwn\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"assign\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defaults\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"create\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"clone\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"get\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"has\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mapObject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"identity\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"constant\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"noop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toPath\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"property\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"propertyOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matcher\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"matches\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"times\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"random\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"now\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"escape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unescape\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"templateSettings\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"template\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"result\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniqueId\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chain\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"iteratee\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bind\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"bindAll\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"memoize\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"delay\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"defer\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"throttle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"debounce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"wrap\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"negate\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"after\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"before\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"once\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findKey\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findLastIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortedIndex\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"lastIndexOf\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"find\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"detect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"findWhere\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"each\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"forEach\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"map\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"collect\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduce\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldl\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"inject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reduceRight\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"foldr\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"filter\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"select\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"reject\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"every\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"all\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"some\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"any\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"contains\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"includes\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"include\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"invoke\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pluck\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"where\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"max\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"min\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"shuffle\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sample\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"sortBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"groupBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"indexBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"countBy\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"partition\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"toArray\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"size\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"pick\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"omit\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"first\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"head\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"take\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"initial\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"last\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"rest\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"tail\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"drop\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"compact\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"flatten\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"without\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"uniq\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unique\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"union\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"intersection\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"difference\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"unzip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"transpose\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"zip\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"object\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"range\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"chunk\"]; });\n/* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_1__index_js__[\"mixin\"]; });\n// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\n\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(76);\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"p\", function() { return root; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ArrayProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return ObjProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return SymbolProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return push; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"q\", function() { return slice; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"t\", function() { return toString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return hasOwnProperty; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"r\", function() { return supportsArrayBuffer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"s\", function() { return supportsDataView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return nativeIsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return nativeKeys; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return nativeCreate; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return nativeIsView; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return _isNaN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return _isFinite; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return hasEnumBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return nonEnumerableProps; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return MAX_ARRAY_INDEX; });\n// Current version.\nvar VERSION = '1.12.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(74)))\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(74)))\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar shared = __webpack_require__(79);\nvar hasOwn = __webpack_require__(13);\nvar uid = __webpack_require__(99);\nvar NATIVE_SYMBOL = __webpack_require__(64);\nvar USE_SYMBOL_AS_UID = __webpack_require__(157);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(5);\nvar hasOwn = __webpack_require__(13);\nvar wrappedWellKnownSymbolModule = __webpack_require__(148);\nvar defineProperty = __webpack_require__(23).f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(8);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(281);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar toObject = __webpack_require__(34);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(76);\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__ = __webpack_require__(190);\n\n\n\n\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"m\" /* nativeKeys */])(obj);\n var keys = [];\n for (var key in obj) if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_3__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tagTester;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === tag;\n };\n}\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(5);\nvar global = __webpack_require__(7);\nvar isCallable = __webpack_require__(8);\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(11);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = cb;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(200);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__iteratee_js__ = __webpack_require__(201);\n\n\n\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee !== __WEBPACK_IMPORTED_MODULE_2__iteratee_js__[\"a\" /* default */]) return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee(value, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, argCount);\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(390);\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar IE8_DOM_DEFINE = __webpack_require__(158);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(160);\nvar anObject = __webpack_require__(20);\nvar toPropertyKey = __webpack_require__(96);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = restArguments;\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = _;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\" /* VERSION */];\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(188);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(29);\n\n\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n\nvar md5 = __webpack_require__(526);\n\nvar _require = __webpack_require__(3),\n extend = _require.extend;\n\nvar AV = __webpack_require__(69);\n\nvar AVError = __webpack_require__(46);\n\nvar _require2 = __webpack_require__(30),\n getSessionToken = _require2.getSessionToken;\n\nvar ajax = __webpack_require__(116); // 计算 X-LC-Sign 的签名方法\n\n\nvar sign = function sign(key, isMasterKey) {\n var _context2;\n\n var now = new Date().getTime();\n var signature = md5(now + key);\n\n if (isMasterKey) {\n var _context;\n\n return (0, _concat.default)(_context = \"\".concat(signature, \",\")).call(_context, now, \",master\");\n }\n\n return (0, _concat.default)(_context2 = \"\".concat(signature, \",\")).call(_context2, now);\n};\n\nvar setAppKey = function setAppKey(headers, signKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.applicationKey);\n } else {\n headers['X-LC-Key'] = AV.applicationKey;\n }\n};\n\nvar setHeaders = function setHeaders() {\n var authOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var signKey = arguments.length > 1 ? arguments[1] : undefined;\n var headers = {\n 'X-LC-Id': AV.applicationId,\n 'Content-Type': 'application/json;charset=UTF-8'\n };\n var useMasterKey = false;\n\n if (typeof authOptions.useMasterKey === 'boolean') {\n useMasterKey = authOptions.useMasterKey;\n } else if (typeof AV._config.useMasterKey === 'boolean') {\n useMasterKey = AV._config.useMasterKey;\n }\n\n if (useMasterKey) {\n if (AV.masterKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.masterKey, true);\n } else {\n headers['X-LC-Key'] = \"\".concat(AV.masterKey, \",master\");\n }\n } else {\n console.warn('masterKey is not set, fall back to use appKey');\n setAppKey(headers, signKey);\n }\n } else {\n setAppKey(headers, signKey);\n }\n\n if (AV.hookKey) {\n headers['X-LC-Hook-Key'] = AV.hookKey;\n }\n\n if (AV._config.production !== null) {\n headers['X-LC-Prod'] = String(AV._config.production);\n }\n\n headers[ false ? 'User-Agent' : 'X-LC-UA'] = AV._sharedConfig.userAgent;\n return _promise.default.resolve().then(function () {\n // Pass the session token\n var sessionToken = getSessionToken(authOptions);\n\n if (sessionToken) {\n headers['X-LC-Session'] = sessionToken;\n } else if (!AV._config.disableCurrentUser) {\n return AV.User.currentAsync().then(function (currentUser) {\n if (currentUser && currentUser._sessionToken) {\n headers['X-LC-Session'] = currentUser._sessionToken;\n }\n\n return headers;\n });\n }\n\n return headers;\n });\n};\n\nvar createApiUrl = function createApiUrl(_ref) {\n var _ref$service = _ref.service,\n service = _ref$service === void 0 ? 'api' : _ref$service,\n _ref$version = _ref.version,\n version = _ref$version === void 0 ? '1.1' : _ref$version,\n path = _ref.path;\n var apiURL = AV._config.serverURLs[service];\n if (!apiURL) throw new Error(\"undefined server URL for \".concat(service));\n\n if (apiURL.charAt(apiURL.length - 1) !== '/') {\n apiURL += '/';\n }\n\n apiURL += version;\n\n if (path) {\n apiURL += path;\n }\n\n return apiURL;\n};\n/**\n * Low level REST API client. Call REST endpoints with authorization headers.\n * @function AV.request\n * @since 3.0.0\n * @param {Object} options\n * @param {String} options.method HTTP method\n * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`\n * @param {Object} [options.query] query string dict\n * @param {Object} [options.data] HTTP body\n * @param {AuthOptions} [options.authOptions]\n * @param {String} [options.service = 'api']\n * @param {String} [options.version = '1.1']\n */\n\n\nvar request = function request(_ref2) {\n var service = _ref2.service,\n version = _ref2.version,\n method = _ref2.method,\n path = _ref2.path,\n query = _ref2.query,\n data = _ref2.data,\n authOptions = _ref2.authOptions,\n _ref2$signKey = _ref2.signKey,\n signKey = _ref2$signKey === void 0 ? true : _ref2$signKey;\n\n if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {\n throw new Error('Not initialized');\n }\n\n if (AV._appRouter) {\n AV._appRouter.refresh();\n }\n\n var timeout = AV._config.requestTimeout;\n var url = createApiUrl({\n service: service,\n path: path,\n version: version\n });\n return setHeaders(authOptions, signKey).then(function (headers) {\n return ajax({\n method: method,\n url: url,\n query: query,\n data: data,\n headers: headers,\n timeout: timeout\n }).catch(function (error) {\n var errorJSON = {\n code: error.code || -1,\n error: error.message || error.responseText\n };\n\n if (error.response && error.response.code) {\n errorJSON = error.response;\n } else if (error.responseText) {\n try {\n errorJSON = JSON.parse(error.responseText);\n } catch (e) {// If we fail to parse the error text, that's okay.\n }\n }\n\n errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;\n\n if (!AV._sharedConfig.keepErrorRawMessage) {\n var _context3, _context4;\n\n errorJSON.error += (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = \" [\".concat(error.statusCode || 'N/A', \" \")).call(_context4, method, \" \")).call(_context3, url, \"]\");\n } // Transform the error into an instance of AVError by trying to parse\n // the error string as JSON.\n\n\n var err = new AVError(errorJSON.code, errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n });\n });\n}; // lagecy request\n\n\nvar _request = function _request(route, className, objectId, method, data, authOptions, query) {\n var path = '';\n if (route) path += \"/\".concat(route);\n if (className) path += \"/\".concat(className);\n if (objectId) path += \"/\".concat(objectId); // for migeration\n\n if (data && data._fetchWhenSave) throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n\n return request({\n method: method,\n path: path,\n query: query,\n data: data,\n authOptions: authOptions\n });\n};\n\nAV.request = request;\nmodule.exports = {\n _request: _request,\n request: request\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n\n\n\nvar isFunction = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document && __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"p\" /* root */].document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isFunction);\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(189);\n\n\n// Internal helper to obtain the `length` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('length'));\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _keys = _interopRequireDefault(__webpack_require__(59));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(147));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3); // Helper function to check null or undefined.\n\n\nvar isNullOrUndefined = function isNullOrUndefined(x) {\n return _.isNull(x) || _.isUndefined(x);\n};\n\nvar ensureArray = function ensureArray(target) {\n if (_.isArray(target)) {\n return target;\n }\n\n if (target === undefined || target === null) {\n return [];\n }\n\n return [target];\n};\n\nvar transformFetchOptions = function transformFetchOptions() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n keys = (0, _keys.default)(_ref),\n include = _ref.include,\n includeACL = _ref.includeACL;\n\n var fetchOptions = {};\n\n if (keys) {\n fetchOptions.keys = ensureArray(keys).join(',');\n }\n\n if (include) {\n fetchOptions.include = ensureArray(include).join(',');\n }\n\n if (includeACL) {\n fetchOptions.returnACL = includeACL;\n }\n\n return fetchOptions;\n};\n\nvar getSessionToken = function getSessionToken(authOptions) {\n if (authOptions.sessionToken) {\n return authOptions.sessionToken;\n }\n\n if (authOptions.user && typeof authOptions.user.getSessionToken === 'function') {\n return authOptions.user.getSessionToken();\n }\n};\n\nvar tap = function tap(interceptor) {\n return function (value) {\n return interceptor(value), value;\n };\n}; // Shared empty constructor function to aid in prototype-chain creation.\n\n\nvar EmptyConstructor = function EmptyConstructor() {}; // Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\n\n\nvar inherits = function inherits(parent, protoProps, staticProps) {\n var child; // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n /** @ignore */\n child = function child() {\n parent.apply(this, arguments);\n };\n } // Inherit class (static) properties from parent.\n\n\n _.extend(child, parent); // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n\n\n EmptyConstructor.prototype = parent.prototype;\n child.prototype = new EmptyConstructor(); // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n\n if (protoProps) {\n _.extend(child.prototype, protoProps);\n } // Add static properties to the constructor function, if supplied.\n\n\n if (staticProps) {\n _.extend(child, staticProps);\n } // Correctly set child's `prototype.constructor`.\n\n\n child.prototype.constructor = child; // Set a convenience property in case the parent's prototype is\n // needed later.\n\n child.__super__ = parent.prototype;\n return child;\n}; // Suppress the date string format warning in Weixin DevTools\n// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401\n\n\nvar parseDate = typeof wx === 'undefined' ? function (iso8601) {\n return new Date(iso8601);\n} : function (iso8601) {\n return new Date(Date.parse(iso8601));\n};\n\nvar setValue = function setValue(target, key, value) {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n var segs = key.split('.');\n var lastSeg = segs.pop();\n var currentTarget = target;\n segs.forEach(function (seg) {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nvar findValue = function findValue(target, key) {\n var segs = key.split('.');\n var firstSeg = segs[0];\n var lastSeg = segs.pop();\n var currentTarget = target;\n\n for (var i = 0; i < segs.length; i++) {\n currentTarget = currentTarget[segs[i]];\n\n if (currentTarget === undefined) {\n return [undefined, undefined, lastSeg];\n }\n }\n\n var value = currentTarget[lastSeg];\n return [value, currentTarget, lastSeg, firstSeg];\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n return _.isObject(obj) && (0, _getPrototypeOf.default)(obj) === Object.prototype;\n};\n\nvar continueWhile = function continueWhile(predicate, asyncFunction) {\n if (predicate()) {\n return asyncFunction().then(function () {\n return continueWhile(predicate, asyncFunction);\n });\n }\n\n return _promise.default.resolve();\n};\n\nmodule.exports = {\n isNullOrUndefined: isNullOrUndefined,\n ensureArray: ensureArray,\n transformFetchOptions: transformFetchOptions,\n getSessionToken: getSessionToken,\n tap: tap,\n inherits: inherits,\n parseDate: parseDate,\n setValue: setValue,\n findValue: findValue,\n isPlainObject: isPlainObject,\n continueWhile: continueWhile\n};\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(8);\nvar tryToString = __webpack_require__(78);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(95);\nvar requireObjectCoercible = __webpack_require__(121);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(121);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(395);\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(402);\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar definePropertyModule = __webpack_require__(23);\nvar createPropertyDescriptor = __webpack_require__(47);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(32);\nvar addToUnscopables = __webpack_require__(169);\nvar Iterators = __webpack_require__(50);\nvar InternalStateModule = __webpack_require__(43);\nvar defineProperty = __webpack_require__(23).f;\nvar defineIterator = __webpack_require__(131);\nvar IS_PURE = __webpack_require__(33);\nvar DESCRIPTORS = __webpack_require__(14);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\nvar DOMIterables = __webpack_require__(317);\nvar global = __webpack_require__(7);\nvar classof = __webpack_require__(51);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar Iterators = __webpack_require__(50);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar path = __webpack_require__(5);\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toLength = __webpack_require__(291);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(48);\nvar call = __webpack_require__(15);\nvar anObject = __webpack_require__(20);\nvar tryToString = __webpack_require__(78);\nvar isArrayIteratorMethod = __webpack_require__(166);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar isPrototypeOf = __webpack_require__(19);\nvar getIterator = __webpack_require__(167);\nvar getIteratorMethod = __webpack_require__(106);\nvar iteratorClose = __webpack_require__(168);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(170);\nvar global = __webpack_require__(7);\nvar uncurryThis = __webpack_require__(4);\nvar isObject = __webpack_require__(11);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar hasOwn = __webpack_require__(13);\nvar shared = __webpack_require__(123);\nvar sharedKey = __webpack_require__(101);\nvar hiddenKeys = __webpack_require__(80);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar createNonEnumerableProperty = __webpack_require__(37);\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has(obj, key) {\n return obj != null && __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"i\" /* hasOwnProperty */].call(obj, key);\n}\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _setPrototypeOf = _interopRequireDefault(__webpack_require__(238));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(147));\n\nvar _ = __webpack_require__(3);\n/**\n * @class AV.Error\n */\n\n\nfunction AVError(code, message) {\n if (this instanceof AVError ? this.constructor : void 0) {\n var error = new Error(message);\n (0, _setPrototypeOf.default)(error, (0, _getPrototypeOf.default)(this));\n error.code = code;\n return error;\n }\n\n return new AVError(code, message);\n}\n\nAVError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf.default)(AVError, Error);\n\n_.extend(AVError,\n/** @lends AV.Error */\n{\n /**\n * Error code indicating some error other than those enumerated here.\n * @constant\n */\n OTHER_CAUSE: -1,\n\n /**\n * Error code indicating that something has gone wrong with the server.\n * If you get this error code, it is AV's fault.\n * @constant\n */\n INTERNAL_SERVER_ERROR: 1,\n\n /**\n * Error code indicating the connection to the AV servers failed.\n * @constant\n */\n CONNECTION_FAILED: 100,\n\n /**\n * Error code indicating the specified object doesn't exist.\n * @constant\n */\n OBJECT_NOT_FOUND: 101,\n\n /**\n * Error code indicating you tried to query with a datatype that doesn't\n * support it, like exact matching an array or object.\n * @constant\n */\n INVALID_QUERY: 102,\n\n /**\n * Error code indicating a missing or invalid classname. Classnames are\n * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n * only valid characters.\n * @constant\n */\n INVALID_CLASS_NAME: 103,\n\n /**\n * Error code indicating an unspecified object id.\n * @constant\n */\n MISSING_OBJECT_ID: 104,\n\n /**\n * Error code indicating an invalid key name. Keys are case-sensitive. They\n * must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n * @constant\n */\n INVALID_KEY_NAME: 105,\n\n /**\n * Error code indicating a malformed pointer. You should not see this unless\n * you have been mucking about changing internal AV code.\n * @constant\n */\n INVALID_POINTER: 106,\n\n /**\n * Error code indicating that badly formed JSON was received upstream. This\n * either indicates you have done something unusual with modifying how\n * things encode to JSON, or the network is failing badly.\n * @constant\n */\n INVALID_JSON: 107,\n\n /**\n * Error code indicating that the feature you tried to access is only\n * available internally for testing purposes.\n * @constant\n */\n COMMAND_UNAVAILABLE: 108,\n\n /**\n * You must call AV.initialize before using the AV library.\n * @constant\n */\n NOT_INITIALIZED: 109,\n\n /**\n * Error code indicating that a field was set to an inconsistent type.\n * @constant\n */\n INCORRECT_TYPE: 111,\n\n /**\n * Error code indicating an invalid channel name. A channel name is either\n * an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n * characters.\n * @constant\n */\n INVALID_CHANNEL_NAME: 112,\n\n /**\n * Error code indicating that push is misconfigured.\n * @constant\n */\n PUSH_MISCONFIGURED: 115,\n\n /**\n * Error code indicating that the object is too large.\n * @constant\n */\n OBJECT_TOO_LARGE: 116,\n\n /**\n * Error code indicating that the operation isn't allowed for clients.\n * @constant\n */\n OPERATION_FORBIDDEN: 119,\n\n /**\n * Error code indicating the result was not found in the cache.\n * @constant\n */\n CACHE_MISS: 120,\n\n /**\n * Error code indicating that an invalid key was used in a nested\n * JSONObject.\n * @constant\n */\n INVALID_NESTED_KEY: 121,\n\n /**\n * Error code indicating that an invalid filename was used for AVFile.\n * A valid file name contains only a-zA-Z0-9_. characters and is between 1\n * and 128 characters.\n * @constant\n */\n INVALID_FILE_NAME: 122,\n\n /**\n * Error code indicating an invalid ACL was provided.\n * @constant\n */\n INVALID_ACL: 123,\n\n /**\n * Error code indicating that the request timed out on the server. Typically\n * this indicates that the request is too expensive to run.\n * @constant\n */\n TIMEOUT: 124,\n\n /**\n * Error code indicating that the email address was invalid.\n * @constant\n */\n INVALID_EMAIL_ADDRESS: 125,\n\n /**\n * Error code indicating a missing content type.\n * @constant\n */\n MISSING_CONTENT_TYPE: 126,\n\n /**\n * Error code indicating a missing content length.\n * @constant\n */\n MISSING_CONTENT_LENGTH: 127,\n\n /**\n * Error code indicating an invalid content length.\n * @constant\n */\n INVALID_CONTENT_LENGTH: 128,\n\n /**\n * Error code indicating a file that was too large.\n * @constant\n */\n FILE_TOO_LARGE: 129,\n\n /**\n * Error code indicating an error saving a file.\n * @constant\n */\n FILE_SAVE_ERROR: 130,\n\n /**\n * Error code indicating an error deleting a file.\n * @constant\n */\n FILE_DELETE_ERROR: 153,\n\n /**\n * Error code indicating that a unique field was given a value that is\n * already taken.\n * @constant\n */\n DUPLICATE_VALUE: 137,\n\n /**\n * Error code indicating that a role's name is invalid.\n * @constant\n */\n INVALID_ROLE_NAME: 139,\n\n /**\n * Error code indicating that an application quota was exceeded. Upgrade to\n * resolve.\n * @constant\n */\n EXCEEDED_QUOTA: 140,\n\n /**\n * Error code indicating that a Cloud Code script failed.\n * @constant\n */\n SCRIPT_FAILED: 141,\n\n /**\n * Error code indicating that a Cloud Code validation failed.\n * @constant\n */\n VALIDATION_ERROR: 142,\n\n /**\n * Error code indicating that invalid image data was provided.\n * @constant\n */\n INVALID_IMAGE_DATA: 150,\n\n /**\n * Error code indicating an unsaved file.\n * @constant\n */\n UNSAVED_FILE_ERROR: 151,\n\n /**\n * Error code indicating an invalid push time.\n * @constant\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602\n});\n\nmodule.exports = AVError;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar aCallable = __webpack_require__(31);\nvar NATIVE_BIND = __webpack_require__(76);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(20);\nvar definePropertiesModule = __webpack_require__(128);\nvar enumBugKeys = __webpack_require__(127);\nvar hiddenKeys = __webpack_require__(80);\nvar html = __webpack_require__(165);\nvar documentCreateElement = __webpack_require__(124);\nvar sharedKey = __webpack_require__(101);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(129);\nvar isCallable = __webpack_require__(8);\nvar classofRaw = __webpack_require__(63);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(129);\nvar defineProperty = __webpack_require__(23).f;\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar hasOwn = __webpack_require__(13);\nvar toString = __webpack_require__(298);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar aCallable = __webpack_require__(31);\n\nvar PromiseCapability = function (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 = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(316).charAt;\nvar toString = __webpack_require__(81);\nvar InternalStateModule = __webpack_require__(43);\nvar defineIterator = __webpack_require__(131);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isObject;\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__tagTester_js__ = __webpack_require__(17);\n\n\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"k\" /* nativeIsArray */] || Object(__WEBPACK_IMPORTED_MODULE_1__tagTester_js__[\"a\" /* default */])('Array'));\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = each;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(16);\n\n\n\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context);\n var i, length;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(408);\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(413)(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(240);\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar call = __webpack_require__(15);\nvar propertyIsEnumerableModule = __webpack_require__(120);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar toIndexedObject = __webpack_require__(32);\nvar toPropertyKey = __webpack_require__(96);\nvar hasOwn = __webpack_require__(13);\nvar IE8_DOM_DEFINE = __webpack_require__(158);\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(77);\nvar fails = __webpack_require__(2);\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\n\nmodule.exports = global.Promise;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = values;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(16);\n\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArray_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(135);\n\n\n\n\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(input); i < length; i++) {\n var value = input[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(value) && (Object(__WEBPACK_IMPORTED_MODULE_2__isArray_js__[\"a\" /* default */])(value) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = map;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(16);\n\n\n\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _keys = _interopRequireDefault(__webpack_require__(115));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(59));\n\nvar _ = __webpack_require__(3);\n\nvar uuid = __webpack_require__(232);\n\nvar debug = __webpack_require__(60);\n\nvar _require = __webpack_require__(30),\n inherits = _require.inherits,\n parseDate = _require.parseDate;\n\nvar version = __webpack_require__(234);\n\nvar _require2 = __webpack_require__(72),\n setAdapters = _require2.setAdapters,\n adapterManager = _require2.adapterManager;\n\nvar AV = global.AV || {}; // All internal configuration items\n\nAV._config = {\n serverURLs: {},\n useMasterKey: false,\n production: null,\n realtime: null,\n requestTimeout: null\n};\nvar initialUserAgent = \"LeanCloud-JS-SDK/\".concat(version); // configs shared by all AV instances\n\nAV._sharedConfig = {\n userAgent: initialUserAgent,\n liveQueryRealtime: null\n};\nadapterManager.on('platformInfo', function (platformInfo) {\n var ua = initialUserAgent;\n\n if (platformInfo) {\n if (platformInfo.userAgent) {\n ua = platformInfo.userAgent;\n } else {\n var comments = platformInfo.name;\n\n if (platformInfo.version) {\n comments += \"/\".concat(platformInfo.version);\n }\n\n if (platformInfo.extra) {\n comments += \"; \".concat(platformInfo.extra);\n }\n\n ua += \" (\".concat(comments, \")\");\n }\n }\n\n AV._sharedConfig.userAgent = ua;\n});\n/**\n * Contains all AV API classes and functions.\n * @namespace AV\n */\n\n/**\n * Returns prefix for localStorage keys used by this instance of AV.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n * @private\n */\n\nAV._getAVPath = function (path) {\n if (!AV.applicationId) {\n throw new Error('You need to call AV.initialize before using AV.');\n }\n\n if (!path) {\n path = '';\n }\n\n if (!_.isString(path)) {\n throw new Error(\"Tried to get a localStorage path that wasn't a String.\");\n }\n\n if (path[0] === '/') {\n path = path.substring(1);\n }\n\n return 'AV/' + AV.applicationId + '/' + path;\n};\n/**\n * Returns the unique string for this app on this machine.\n * Gets reset when localStorage is cleared.\n * @private\n */\n\n\nAV._installationId = null;\n\nAV._getInstallationId = function () {\n // See if it's cached in RAM.\n if (AV._installationId) {\n return _promise.default.resolve(AV._installationId);\n } // Try to get it from localStorage.\n\n\n var path = AV._getAVPath('installationId');\n\n return AV.localStorage.getItemAsync(path).then(function (_installationId) {\n AV._installationId = _installationId;\n\n if (!AV._installationId) {\n // It wasn't in localStorage, so create a new one.\n AV._installationId = _installationId = uuid();\n return AV.localStorage.setItemAsync(path, _installationId).then(function () {\n return _installationId;\n });\n }\n\n return _installationId;\n });\n};\n\nAV._subscriptionId = null;\n\nAV._refreshSubscriptionId = function () {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : AV._getAVPath('subscriptionId');\n var subscriptionId = AV._subscriptionId = uuid();\n return AV.localStorage.setItemAsync(path, subscriptionId).then(function () {\n return subscriptionId;\n });\n};\n\nAV._getSubscriptionId = function () {\n // See if it's cached in RAM.\n if (AV._subscriptionId) {\n return _promise.default.resolve(AV._subscriptionId);\n } // Try to get it from localStorage.\n\n\n var path = AV._getAVPath('subscriptionId');\n\n return AV.localStorage.getItemAsync(path).then(function (_subscriptionId) {\n AV._subscriptionId = _subscriptionId;\n\n if (!AV._subscriptionId) {\n // It wasn't in localStorage, so create a new one.\n _subscriptionId = AV._refreshSubscriptionId(path);\n }\n\n return _subscriptionId;\n });\n};\n\nAV._parseDate = parseDate; // A self-propagating extend function.\n\nAV._extend = function (protoProps, classProps) {\n var child = inherits(this, protoProps, classProps);\n child.extend = this.extend;\n return child;\n};\n/**\n * Converts a value in a AV Object into the appropriate representation.\n * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any AV.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If <seenObjects>\n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\n\n\nAV._encode = function (value, seenObjects, disallowObjects) {\n var full = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n\n return value._toFullJSON((0, _concat.default)(seenObjects).call(seenObjects, value), full);\n }\n\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n\n if (_.isDate(value)) {\n return full ? {\n __type: 'Date',\n iso: value.toJSON()\n } : value.toJSON();\n }\n\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n\n if (_.isArray(value)) {\n return (0, _map.default)(_).call(_, value, function (x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n\n if (_.isRegExp(value)) {\n return value.source;\n }\n\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n\n return value._toFullJSON(seenObjects, full);\n }\n\n if (_.isObject(value)) {\n return _.mapObject(value, function (v, k) {\n return AV._encode(v, seenObjects, disallowObjects, full);\n });\n }\n\n return value;\n};\n/**\n * The inverse function of AV._encode.\n * @private\n */\n\n\nAV._decode = function (value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n\n if (_.isArray(value)) {\n return (0, _map.default)(_).call(_, value, function (v) {\n return AV._decode(v);\n });\n }\n\n if (value instanceof AV.Object) {\n return value;\n }\n\n if (value instanceof AV.File) {\n return value;\n }\n\n if (value instanceof AV.Op) {\n return value;\n }\n\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n\n if (value instanceof AV.ACL) {\n return value;\n }\n\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n\n if (value.__op) {\n return AV.Op._decode(value);\n }\n\n var className;\n\n if (value.__type === 'Pointer') {\n className = value.className;\n\n var pointer = AV.Object._create(className);\n\n if ((0, _keys.default)(value).length > 3) {\n var v = _.clone(value);\n\n delete v.__type;\n delete v.className;\n\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({\n objectId: value.objectId\n }, false);\n }\n\n return pointer;\n }\n\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n\n var _v = _.clone(value);\n\n delete _v.__type;\n delete _v.className;\n\n var object = AV.Object._create(className);\n\n object._finishFetch(_v, true);\n\n return object;\n }\n\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude\n });\n }\n\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n\n var _v2 = _.clone(value);\n\n delete _v2.__type;\n\n file._finishFetch(_v2);\n\n return file;\n }\n\n return _.mapObject(value, AV._decode);\n};\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\n\n\nAV.parseJSON = AV._decode;\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\n\nAV.parse = function (text) {\n return AV.parseJSON(JSON.parse(text));\n};\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\n\n\nAV.stringify = function (target) {\n return (0, _stringify.default)(AV._encode(target, [], false, true));\n};\n\nAV._encodeObjectOrArray = function (value) {\n var encodeAVObject = function encodeAVObject(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function (value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return (0, _map.default)(value).call(value, function (object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\n\nAV._traverse = function (object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n\n if ((0, _indexOf.default)(_).call(_, seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n\n seen.push(object);\n\n AV._traverse(object.attributes, func, seen);\n\n return func(object);\n }\n\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n\n if (_.isArray(object)) {\n _.each(object, function (child, index) {\n var newChild = AV._traverse(child, func, seen);\n\n if (newChild) {\n object[index] = newChild;\n }\n });\n\n return func(object);\n }\n\n if (_.isObject(object)) {\n AV._each(object, function (child, key) {\n var newChild = AV._traverse(child, func, seen);\n\n if (newChild) {\n object[key] = newChild;\n }\n });\n\n return func(object);\n }\n\n return func(object);\n};\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\n\n\nAV._objectEach = AV._each = function (obj, callback) {\n if (_.isObject(obj)) {\n _.each((0, _keys2.default)(_).call(_, obj), function (key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n/**\n * @namespace\n * @since 3.14.0\n */\n\n\nAV.debug = {\n /**\n * Enable debug\n */\n enable: function enable() {\n var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'leancloud*';\n return debug.enable(namespaces);\n },\n\n /**\n * Disable debug\n */\n disable: debug.disable\n};\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\n\nAV.setAdapters = setAdapters;\nmodule.exports = AV;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(74)))\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(48);\nvar uncurryThis = __webpack_require__(4);\nvar IndexedObject = __webpack_require__(95);\nvar toObject = __webpack_require__(34);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar arraySpeciesCreate = __webpack_require__(229);\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(404);\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _keys = _interopRequireDefault(__webpack_require__(59));\n\nvar _ = __webpack_require__(3);\n\nvar EventEmitter = __webpack_require__(235);\n\nvar _require = __webpack_require__(30),\n inherits = _require.inherits;\n\nvar AdapterManager = inherits(EventEmitter, {\n constructor: function constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter: function getAdapter(name) {\n var adapter = this._adapters[name];\n\n if (adapter === undefined) {\n throw new Error(\"\".concat(name, \" adapter is not configured\"));\n }\n\n return adapter;\n },\n setAdapters: function setAdapters(newAdapters) {\n var _this = this;\n\n _.extend(this._adapters, newAdapters);\n\n (0, _keys.default)(_).call(_, newAdapters).forEach(function (name) {\n return _this.emit(name, newAdapters[name]);\n });\n }\n});\nvar adapterManager = new AdapterManager();\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager: adapterManager\n};\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Symbol = __webpack_require__(242);\n\nvar _Symbol$iterator = __webpack_require__(459);\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_BIND = __webpack_require__(76);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar userAgent = __webpack_require__(98);\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(33);\nvar store = __webpack_require__(123);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(51);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar NativePromiseConstructor = __webpack_require__(65);\nvar isCallable = __webpack_require__(8);\nvar isForced = __webpack_require__(159);\nvar inspectSource = __webpack_require__(130);\nvar wellKnownSymbol = __webpack_require__(9);\nvar IS_BROWSER = __webpack_require__(307);\nvar IS_PURE = __webpack_require__(33);\nvar V8_VERSION = __webpack_require__(77);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\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 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return hasStringTagBug; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return isIE11; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__ = __webpack_require__(324);\n\n\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"s\" /* supportsDataView */] && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && Object(__WEBPACK_IMPORTED_MODULE_1__hasObjectTag_js__[\"a\" /* default */])(new Map));\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = allKeys;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__ = __webpack_require__(190);\n\n\n\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"h\" /* hasEnumBug */]) Object(__WEBPACK_IMPORTED_MODULE_2__collectNonEnumProps_js__[\"a\" /* default */])(obj, keys);\n return keys;\n}\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(199);\n\n\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath(path);\n}\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = optimizeCb;\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = filter;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(58);\n\n\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = contains;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__indexOf_js__ = __webpack_require__(215);\n\n\n\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return Object(__WEBPACK_IMPORTED_MODULE_2__indexOf_js__[\"a\" /* default */])(obj, item, fromIndex) >= 0;\n}\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(63);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPropertyKey = __webpack_require__(96);\nvar definePropertyModule = __webpack_require__(23);\nvar createPropertyDescriptor = __webpack_require__(47);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(241);\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(472);\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar uncurryThis = __webpack_require__(4);\nvar hiddenKeys = __webpack_require__(80);\nvar isObject = __webpack_require__(11);\nvar hasOwn = __webpack_require__(13);\nvar defineProperty = __webpack_require__(23).f;\nvar getOwnPropertyNamesModule = __webpack_require__(103);\nvar getOwnPropertyNamesExternalModule = __webpack_require__(245);\nvar isExtensible = __webpack_require__(261);\nvar uid = __webpack_require__(99);\nvar FREEZING = __webpack_require__(262);\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar fails = __webpack_require__(2);\nvar classof = __webpack_require__(63);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toPrimitive = __webpack_require__(285);\nvar isSymbol = __webpack_require__(97);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(18);\nvar isCallable = __webpack_require__(8);\nvar isPrototypeOf = __webpack_require__(19);\nvar USE_SYMBOL_AS_UID = __webpack_require__(157);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(18);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(13);\nvar isCallable = __webpack_require__(8);\nvar toObject = __webpack_require__(34);\nvar sharedKey = __webpack_require__(101);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(161);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(79);\nvar uid = __webpack_require__(99);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = __webpack_require__(4);\nvar anObject = __webpack_require__(20);\nvar aPossiblePrototype = __webpack_require__(288);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(163);\nvar enumBugKeys = __webpack_require__(127);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(163);\nvar enumBugKeys = __webpack_require__(127);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(51);\nvar getMethod = __webpack_require__(122);\nvar Iterators = __webpack_require__(50);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(63);\nvar global = __webpack_require__(7);\n\nmodule.exports = classof(global.process) == 'process';\n\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar fails = __webpack_require__(2);\nvar isCallable = __webpack_require__(8);\nvar classof = __webpack_require__(51);\nvar getBuiltIn = __webpack_require__(18);\nvar inspectSource = __webpack_require__(130);\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n/***/ }),\n/* 110 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = matcher;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__extendOwn_js__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isMatch_js__ = __webpack_require__(191);\n\n\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = Object(__WEBPACK_IMPORTED_MODULE_0__extendOwn_js__[\"a\" /* default */])({}, attrs);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isMatch_js__[\"a\" /* default */])(obj, attrs);\n };\n}\n\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__executeBound_js__ = __webpack_require__(207);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(25);\n\n\n\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return Object(__WEBPACK_IMPORTED_MODULE_1__executeBound_js__[\"a\" /* default */])(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */];\n/* harmony default export */ __webpack_exports__[\"a\"] = (partial);\n\n\n/***/ }),\n/* 113 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = group;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(58);\n\n\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n\n/***/ }),\n/* 114 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\nvar wellKnownSymbol = __webpack_require__(9);\nvar V8_VERSION = __webpack_require__(77);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n/* 115 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(399);\n\n/***/ }),\n/* 116 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(73));\n\nvar _filter = _interopRequireDefault(__webpack_require__(250));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _keys = _interopRequireDefault(__webpack_require__(115));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(251),\n timeout = _require.timeout;\n\nvar debug = __webpack_require__(60);\n\nvar debugRequest = debug('leancloud:request');\nvar debugRequestError = debug('leancloud:request:error');\n\nvar _require2 = __webpack_require__(72),\n getAdapter = _require2.getAdapter;\n\nvar requestsCount = 0;\n\nvar ajax = function ajax(_ref) {\n var method = _ref.method,\n url = _ref.url,\n query = _ref.query,\n data = _ref.data,\n _ref$headers = _ref.headers,\n headers = _ref$headers === void 0 ? {} : _ref$headers,\n time = _ref.timeout,\n onprogress = _ref.onprogress;\n\n if (query) {\n var _context, _context2, _context4;\n\n var queryString = (0, _filter.default)(_context = (0, _map.default)(_context2 = (0, _keys.default)(query)).call(_context2, function (key) {\n var _context3;\n\n var value = query[key];\n if (value === undefined) return undefined;\n var v = (0, _typeof2.default)(value) === 'object' ? (0, _stringify.default)(value) : value;\n return (0, _concat.default)(_context3 = \"\".concat(encodeURIComponent(key), \"=\")).call(_context3, encodeURIComponent(v));\n })).call(_context, function (qs) {\n return qs;\n }).join('&');\n url = (0, _concat.default)(_context4 = \"\".concat(url, \"?\")).call(_context4, queryString);\n }\n\n var count = requestsCount++;\n debugRequest('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n var request = getAdapter('request');\n var promise = request(url, {\n method: method,\n headers: headers,\n data: data,\n onprogress: onprogress\n }).then(function (response) {\n debugRequest('response(%d) %d %O %o', count, response.status, response.data || response.text, response.header);\n\n if (response.ok === false) {\n var error = new Error();\n error.response = response;\n throw error;\n }\n\n return response.data;\n }).catch(function (error) {\n if (error.response) {\n if (!debug.enabled('leancloud:request')) {\n debugRequestError('request(%d) %s %s %o %o %o', count, method, url, query, data, headers);\n }\n\n debugRequestError('response(%d) %d %O %o', count, error.response.status, error.response.data || error.response.text, error.response.header);\n error.statusCode = error.response.status;\n error.responseText = error.response.text;\n error.response = error.response.data;\n }\n\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\nmodule.exports = ajax;\n\n/***/ }),\n/* 117 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 118 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(270),\n getRawTag = __webpack_require__(640),\n objectToString = __webpack_require__(641);\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n/***/ }),\n/* 119 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n/***/ }),\n/* 120 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n/* 121 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n/* 122 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(31);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n/* 123 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar defineGlobalProperty = __webpack_require__(287);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n/* 124 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar isObject = __webpack_require__(11);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n/* 125 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(126);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n/* 126 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar trunc = __webpack_require__(290);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n/* 127 */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n/* 128 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(160);\nvar definePropertyModule = __webpack_require__(23);\nvar anObject = __webpack_require__(20);\nvar toIndexedObject = __webpack_require__(32);\nvar objectKeys = __webpack_require__(105);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n/* 129 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n/* 130 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar isCallable = __webpack_require__(8);\nvar store = __webpack_require__(123);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n/* 131 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar IS_PURE = __webpack_require__(33);\nvar FunctionName = __webpack_require__(296);\nvar isCallable = __webpack_require__(8);\nvar createIteratorConstructor = __webpack_require__(297);\nvar getPrototypeOf = __webpack_require__(100);\nvar setPrototypeOf = __webpack_require__(102);\nvar setToStringTag = __webpack_require__(52);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar defineBuiltIn = __webpack_require__(44);\nvar wellKnownSymbol = __webpack_require__(9);\nvar Iterators = __webpack_require__(50);\nvar IteratorsCore = __webpack_require__(171);\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"e\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__restArguments_js__ = __webpack_require__(24);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"restArguments\", function() { return __WEBPACK_IMPORTED_MODULE_1__restArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(56);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return __WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isNull_js__ = __webpack_require__(319);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNull\", function() { return __WEBPACK_IMPORTED_MODULE_3__isNull_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__ = __webpack_require__(180);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isUndefined\", function() { return __WEBPACK_IMPORTED_MODULE_4__isUndefined_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__ = __webpack_require__(181);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isBoolean\", function() { return __WEBPACK_IMPORTED_MODULE_5__isBoolean_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isElement_js__ = __webpack_require__(320);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isElement\", function() { return __WEBPACK_IMPORTED_MODULE_6__isElement_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__isString_js__ = __webpack_require__(133);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isString\", function() { return __WEBPACK_IMPORTED_MODULE_7__isString_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__isNumber_js__ = __webpack_require__(182);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNumber\", function() { return __WEBPACK_IMPORTED_MODULE_8__isNumber_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__isDate_js__ = __webpack_require__(321);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDate\", function() { return __WEBPACK_IMPORTED_MODULE_9__isDate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__ = __webpack_require__(322);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isRegExp\", function() { return __WEBPACK_IMPORTED_MODULE_10__isRegExp_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__isError_js__ = __webpack_require__(323);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isError\", function() { return __WEBPACK_IMPORTED_MODULE_11__isError_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__ = __webpack_require__(183);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSymbol\", function() { return __WEBPACK_IMPORTED_MODULE_12__isSymbol_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__ = __webpack_require__(184);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArrayBuffer\", function() { return __WEBPACK_IMPORTED_MODULE_13__isArrayBuffer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__isDataView_js__ = __webpack_require__(134);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isDataView\", function() { return __WEBPACK_IMPORTED_MODULE_14__isDataView_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__isArray_js__ = __webpack_require__(57);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArray\", function() { return __WEBPACK_IMPORTED_MODULE_15__isArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__isFunction_js__ = __webpack_require__(28);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return __WEBPACK_IMPORTED_MODULE_16__isFunction_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__isArguments_js__ = __webpack_require__(135);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isArguments\", function() { return __WEBPACK_IMPORTED_MODULE_17__isArguments_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__isFinite_js__ = __webpack_require__(325);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isFinite\", function() { return __WEBPACK_IMPORTED_MODULE_18__isFinite_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__isNaN_js__ = __webpack_require__(185);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isNaN\", function() { return __WEBPACK_IMPORTED_MODULE_19__isNaN_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__ = __webpack_require__(186);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isTypedArray\", function() { return __WEBPACK_IMPORTED_MODULE_20__isTypedArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__ = __webpack_require__(327);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEmpty\", function() { return __WEBPACK_IMPORTED_MODULE_21__isEmpty_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__isMatch_js__ = __webpack_require__(191);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMatch\", function() { return __WEBPACK_IMPORTED_MODULE_22__isMatch_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__isEqual_js__ = __webpack_require__(328);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isEqual\", function() { return __WEBPACK_IMPORTED_MODULE_23__isEqual_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__isMap_js__ = __webpack_require__(330);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isMap\", function() { return __WEBPACK_IMPORTED_MODULE_24__isMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__ = __webpack_require__(331);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakMap\", function() { return __WEBPACK_IMPORTED_MODULE_25__isWeakMap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__isSet_js__ = __webpack_require__(332);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isSet\", function() { return __WEBPACK_IMPORTED_MODULE_26__isSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__ = __webpack_require__(333);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeakSet\", function() { return __WEBPACK_IMPORTED_MODULE_27__isWeakSet_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__keys_js__ = __webpack_require__(16);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"keys\", function() { return __WEBPACK_IMPORTED_MODULE_28__keys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__allKeys_js__ = __webpack_require__(85);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"allKeys\", function() { return __WEBPACK_IMPORTED_MODULE_29__allKeys_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__values_js__ = __webpack_require__(66);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"values\", function() { return __WEBPACK_IMPORTED_MODULE_30__values_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__pairs_js__ = __webpack_require__(334);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pairs\", function() { return __WEBPACK_IMPORTED_MODULE_31__pairs_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__invert_js__ = __webpack_require__(192);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invert\", function() { return __WEBPACK_IMPORTED_MODULE_32__invert_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__functions_js__ = __webpack_require__(193);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"functions\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"methods\", function() { return __WEBPACK_IMPORTED_MODULE_33__functions_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__extend_js__ = __webpack_require__(194);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extend\", function() { return __WEBPACK_IMPORTED_MODULE_34__extend_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__ = __webpack_require__(139);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"extendOwn\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"assign\", function() { return __WEBPACK_IMPORTED_MODULE_35__extendOwn_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__defaults_js__ = __webpack_require__(195);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defaults\", function() { return __WEBPACK_IMPORTED_MODULE_36__defaults_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__create_js__ = __webpack_require__(335);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"create\", function() { return __WEBPACK_IMPORTED_MODULE_37__create_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__clone_js__ = __webpack_require__(197);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"clone\", function() { return __WEBPACK_IMPORTED_MODULE_38__clone_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__tap_js__ = __webpack_require__(336);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tap\", function() { return __WEBPACK_IMPORTED_MODULE_39__tap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__get_js__ = __webpack_require__(198);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"get\", function() { return __WEBPACK_IMPORTED_MODULE_40__get_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__has_js__ = __webpack_require__(337);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"has\", function() { return __WEBPACK_IMPORTED_MODULE_41__has_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__mapObject_js__ = __webpack_require__(338);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mapObject\", function() { return __WEBPACK_IMPORTED_MODULE_42__mapObject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__identity_js__ = __webpack_require__(141);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"identity\", function() { return __WEBPACK_IMPORTED_MODULE_43__identity_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__constant_js__ = __webpack_require__(187);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"constant\", function() { return __WEBPACK_IMPORTED_MODULE_44__constant_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__noop_js__ = __webpack_require__(202);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"noop\", function() { return __WEBPACK_IMPORTED_MODULE_45__noop_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__toPath_js__ = __webpack_require__(199);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toPath\", function() { return __WEBPACK_IMPORTED_MODULE_46__toPath_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__property_js__ = __webpack_require__(142);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"property\", function() { return __WEBPACK_IMPORTED_MODULE_47__property_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__ = __webpack_require__(339);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"propertyOf\", function() { return __WEBPACK_IMPORTED_MODULE_48__propertyOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__matcher_js__ = __webpack_require__(111);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matcher\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"matches\", function() { return __WEBPACK_IMPORTED_MODULE_49__matcher_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__times_js__ = __webpack_require__(340);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"times\", function() { return __WEBPACK_IMPORTED_MODULE_50__times_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_51__random_js__ = __webpack_require__(203);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"random\", function() { return __WEBPACK_IMPORTED_MODULE_51__random_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_52__now_js__ = __webpack_require__(143);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"now\", function() { return __WEBPACK_IMPORTED_MODULE_52__now_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_53__escape_js__ = __webpack_require__(341);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"escape\", function() { return __WEBPACK_IMPORTED_MODULE_53__escape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_54__unescape_js__ = __webpack_require__(342);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unescape\", function() { return __WEBPACK_IMPORTED_MODULE_54__unescape_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__ = __webpack_require__(206);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"templateSettings\", function() { return __WEBPACK_IMPORTED_MODULE_55__templateSettings_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_56__template_js__ = __webpack_require__(344);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"template\", function() { return __WEBPACK_IMPORTED_MODULE_56__template_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_57__result_js__ = __webpack_require__(345);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"result\", function() { return __WEBPACK_IMPORTED_MODULE_57__result_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__ = __webpack_require__(346);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniqueId\", function() { return __WEBPACK_IMPORTED_MODULE_58__uniqueId_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_59__chain_js__ = __webpack_require__(347);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chain\", function() { return __WEBPACK_IMPORTED_MODULE_59__chain_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_60__iteratee_js__ = __webpack_require__(201);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"iteratee\", function() { return __WEBPACK_IMPORTED_MODULE_60__iteratee_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_61__partial_js__ = __webpack_require__(112);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partial\", function() { return __WEBPACK_IMPORTED_MODULE_61__partial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_62__bind_js__ = __webpack_require__(208);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bind\", function() { return __WEBPACK_IMPORTED_MODULE_62__bind_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_63__bindAll_js__ = __webpack_require__(348);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"bindAll\", function() { return __WEBPACK_IMPORTED_MODULE_63__bindAll_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_64__memoize_js__ = __webpack_require__(349);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"memoize\", function() { return __WEBPACK_IMPORTED_MODULE_64__memoize_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_65__delay_js__ = __webpack_require__(209);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"delay\", function() { return __WEBPACK_IMPORTED_MODULE_65__delay_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_66__defer_js__ = __webpack_require__(350);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"defer\", function() { return __WEBPACK_IMPORTED_MODULE_66__defer_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_67__throttle_js__ = __webpack_require__(351);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"throttle\", function() { return __WEBPACK_IMPORTED_MODULE_67__throttle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_68__debounce_js__ = __webpack_require__(352);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"debounce\", function() { return __WEBPACK_IMPORTED_MODULE_68__debounce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_69__wrap_js__ = __webpack_require__(353);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"wrap\", function() { return __WEBPACK_IMPORTED_MODULE_69__wrap_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_70__negate_js__ = __webpack_require__(144);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"negate\", function() { return __WEBPACK_IMPORTED_MODULE_70__negate_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_71__compose_js__ = __webpack_require__(354);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compose\", function() { return __WEBPACK_IMPORTED_MODULE_71__compose_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_72__after_js__ = __webpack_require__(355);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"after\", function() { return __WEBPACK_IMPORTED_MODULE_72__after_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_73__before_js__ = __webpack_require__(210);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"before\", function() { return __WEBPACK_IMPORTED_MODULE_73__before_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_74__once_js__ = __webpack_require__(356);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"once\", function() { return __WEBPACK_IMPORTED_MODULE_74__once_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_75__findKey_js__ = __webpack_require__(211);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findKey\", function() { return __WEBPACK_IMPORTED_MODULE_75__findKey_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_76__findIndex_js__ = __webpack_require__(145);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findIndex\", function() { return __WEBPACK_IMPORTED_MODULE_76__findIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__ = __webpack_require__(213);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findLastIndex\", function() { return __WEBPACK_IMPORTED_MODULE_77__findLastIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__ = __webpack_require__(214);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortedIndex\", function() { return __WEBPACK_IMPORTED_MODULE_78__sortedIndex_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_79__indexOf_js__ = __webpack_require__(215);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexOf\", function() { return __WEBPACK_IMPORTED_MODULE_79__indexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__ = __webpack_require__(357);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"lastIndexOf\", function() { return __WEBPACK_IMPORTED_MODULE_80__lastIndexOf_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_81__find_js__ = __webpack_require__(217);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"find\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"detect\", function() { return __WEBPACK_IMPORTED_MODULE_81__find_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_82__findWhere_js__ = __webpack_require__(358);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"findWhere\", function() { return __WEBPACK_IMPORTED_MODULE_82__findWhere_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_83__each_js__ = __webpack_require__(58);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"each\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"forEach\", function() { return __WEBPACK_IMPORTED_MODULE_83__each_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_84__map_js__ = __webpack_require__(68);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"map\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"collect\", function() { return __WEBPACK_IMPORTED_MODULE_84__map_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_85__reduce_js__ = __webpack_require__(359);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduce\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldl\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"inject\", function() { return __WEBPACK_IMPORTED_MODULE_85__reduce_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__ = __webpack_require__(360);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reduceRight\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"foldr\", function() { return __WEBPACK_IMPORTED_MODULE_86__reduceRight_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_87__filter_js__ = __webpack_require__(88);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"filter\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"select\", function() { return __WEBPACK_IMPORTED_MODULE_87__filter_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_88__reject_js__ = __webpack_require__(361);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"reject\", function() { return __WEBPACK_IMPORTED_MODULE_88__reject_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_89__every_js__ = __webpack_require__(362);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"every\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"all\", function() { return __WEBPACK_IMPORTED_MODULE_89__every_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_90__some_js__ = __webpack_require__(363);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"some\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"any\", function() { return __WEBPACK_IMPORTED_MODULE_90__some_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_91__contains_js__ = __webpack_require__(89);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"contains\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"includes\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"include\", function() { return __WEBPACK_IMPORTED_MODULE_91__contains_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_92__invoke_js__ = __webpack_require__(364);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"invoke\", function() { return __WEBPACK_IMPORTED_MODULE_92__invoke_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_93__pluck_js__ = __webpack_require__(146);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pluck\", function() { return __WEBPACK_IMPORTED_MODULE_93__pluck_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_94__where_js__ = __webpack_require__(365);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"where\", function() { return __WEBPACK_IMPORTED_MODULE_94__where_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_95__max_js__ = __webpack_require__(219);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"max\", function() { return __WEBPACK_IMPORTED_MODULE_95__max_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_96__min_js__ = __webpack_require__(366);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"min\", function() { return __WEBPACK_IMPORTED_MODULE_96__min_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_97__shuffle_js__ = __webpack_require__(367);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"shuffle\", function() { return __WEBPACK_IMPORTED_MODULE_97__shuffle_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_98__sample_js__ = __webpack_require__(220);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sample\", function() { return __WEBPACK_IMPORTED_MODULE_98__sample_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_99__sortBy_js__ = __webpack_require__(368);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"sortBy\", function() { return __WEBPACK_IMPORTED_MODULE_99__sortBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_100__groupBy_js__ = __webpack_require__(369);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"groupBy\", function() { return __WEBPACK_IMPORTED_MODULE_100__groupBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_101__indexBy_js__ = __webpack_require__(370);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"indexBy\", function() { return __WEBPACK_IMPORTED_MODULE_101__indexBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_102__countBy_js__ = __webpack_require__(371);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"countBy\", function() { return __WEBPACK_IMPORTED_MODULE_102__countBy_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_103__partition_js__ = __webpack_require__(372);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"partition\", function() { return __WEBPACK_IMPORTED_MODULE_103__partition_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_104__toArray_js__ = __webpack_require__(373);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"toArray\", function() { return __WEBPACK_IMPORTED_MODULE_104__toArray_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_105__size_js__ = __webpack_require__(374);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"size\", function() { return __WEBPACK_IMPORTED_MODULE_105__size_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_106__pick_js__ = __webpack_require__(221);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"pick\", function() { return __WEBPACK_IMPORTED_MODULE_106__pick_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_107__omit_js__ = __webpack_require__(376);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"omit\", function() { return __WEBPACK_IMPORTED_MODULE_107__omit_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_108__first_js__ = __webpack_require__(377);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"first\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"head\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"take\", function() { return __WEBPACK_IMPORTED_MODULE_108__first_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_109__initial_js__ = __webpack_require__(222);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"initial\", function() { return __WEBPACK_IMPORTED_MODULE_109__initial_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_110__last_js__ = __webpack_require__(378);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"last\", function() { return __WEBPACK_IMPORTED_MODULE_110__last_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_111__rest_js__ = __webpack_require__(223);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"rest\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"tail\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"drop\", function() { return __WEBPACK_IMPORTED_MODULE_111__rest_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_112__compact_js__ = __webpack_require__(379);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"compact\", function() { return __WEBPACK_IMPORTED_MODULE_112__compact_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_113__flatten_js__ = __webpack_require__(380);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"flatten\", function() { return __WEBPACK_IMPORTED_MODULE_113__flatten_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_114__without_js__ = __webpack_require__(381);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"without\", function() { return __WEBPACK_IMPORTED_MODULE_114__without_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_115__uniq_js__ = __webpack_require__(225);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"uniq\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unique\", function() { return __WEBPACK_IMPORTED_MODULE_115__uniq_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_116__union_js__ = __webpack_require__(382);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"union\", function() { return __WEBPACK_IMPORTED_MODULE_116__union_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_117__intersection_js__ = __webpack_require__(383);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"intersection\", function() { return __WEBPACK_IMPORTED_MODULE_117__intersection_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_118__difference_js__ = __webpack_require__(224);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"difference\", function() { return __WEBPACK_IMPORTED_MODULE_118__difference_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_119__unzip_js__ = __webpack_require__(226);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"unzip\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"transpose\", function() { return __WEBPACK_IMPORTED_MODULE_119__unzip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_120__zip_js__ = __webpack_require__(384);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"zip\", function() { return __WEBPACK_IMPORTED_MODULE_120__zip_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_121__object_js__ = __webpack_require__(385);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"object\", function() { return __WEBPACK_IMPORTED_MODULE_121__object_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_122__range_js__ = __webpack_require__(386);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"range\", function() { return __WEBPACK_IMPORTED_MODULE_122__range_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_123__chunk_js__ = __webpack_require__(387);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"chunk\", function() { return __WEBPACK_IMPORTED_MODULE_123__chunk_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_124__mixin_js__ = __webpack_require__(388);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"mixin\", function() { return __WEBPACK_IMPORTED_MODULE_124__mixin_js__[\"a\"]; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__ = __webpack_require__(389);\n/* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return __WEBPACK_IMPORTED_MODULE_125__underscore_array_methods_js__[\"a\"]; });\n// Named Exports\n// =============\n\n// Underscore.js 1.12.1\n// https://underscorejs.org\n// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\n\n\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Functions that treat an object as a dictionary of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\n\n\n\n\n\n\n\n\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\n\n\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\n\n\n\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('String'));\n\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__ = __webpack_require__(184);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__ = __webpack_require__(84);\n\n\n\n\n\nvar isDataView = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj.getInt8) && Object(__WEBPACK_IMPORTED_MODULE_2__isArrayBuffer_js__[\"a\" /* default */])(obj.buffer);\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_3__stringTagBug_js__[\"a\" /* hasStringTagBug */] ? ie10IsDataView : isDataView);\n\n\n/***/ }),\n/* 135 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(45);\n\n\n\nvar isArguments = Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(obj, 'callee');\n };\n }\n}());\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (isArguments);\n\n\n/***/ }),\n/* 136 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__ = __webpack_require__(189);\n\n\n// Internal helper to obtain the `byteLength` property of an object.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__shallowProperty_js__[\"a\" /* default */])('byteLength'));\n\n\n/***/ }),\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = ie11fingerprint;\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return mapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return weakMapMethods; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return setMethods; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__allKeys_js__ = __webpack_require__(85);\n\n\n\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = Object(__WEBPACK_IMPORTED_MODULE_2__allKeys_js__[\"a\" /* default */])(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createAssigner;\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(16);\n\n\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = deepGet;\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = identity;\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = property;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__deepGet_js__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(86);\n\n\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n return function(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__deepGet_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// A (possibly faster) way to get the current timestamp as an integer.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Date.now || function() {\n return new Date().getTime();\n});\n\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = negate;\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n\n/***/ }),\n/* 145 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(212);\n\n\n// Returns the first index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 146 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pluck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__map_js__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__property_js__ = __webpack_require__(142);\n\n\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__map_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__property_js__[\"a\" /* default */])(key));\n}\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(233);\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(9);\n\nexports.f = wellKnownSymbol;\n\n\n/***/ }),\n/* 149 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(243);\n\n/***/ }),\n/* 150 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(501);\n\n/***/ }),\n/* 151 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(552);\n\n/***/ }),\n/* 152 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(570);\n\n/***/ }),\n/* 153 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(574);\n\n/***/ }),\n/* 154 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineBuiltIn = __webpack_require__(44);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else defineBuiltIn(target, key, src[key], options);\n } return target;\n};\n\n\n/***/ }),\n/* 155 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar global = __webpack_require__(7);\nvar InternalMetadataModule = __webpack_require__(94);\nvar fails = __webpack_require__(2);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar iterate = __webpack_require__(42);\nvar anInstance = __webpack_require__(108);\nvar isCallable = __webpack_require__(8);\nvar isObject = __webpack_require__(11);\nvar setToStringTag = __webpack_require__(52);\nvar defineProperty = __webpack_require__(23).f;\nvar forEach = __webpack_require__(70).forEach;\nvar DESCRIPTORS = __webpack_require__(14);\nvar InternalStateModule = __webpack_require__(43);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n\n if (!DESCRIPTORS || !isCallable(NativeConstructor)\n || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n ) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else {\n Constructor = wrapper(function (target, iterable) {\n setInternalState(anInstance(target, Prototype), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n createNonEnumerableProperty(Prototype, KEY, function (a, b) {\n var collection = getInternalState(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = collection[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n\n IS_WEAK || defineProperty(Prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).collection.size;\n }\n });\n }\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: true }, exported);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n\n\n/***/ }),\n/* 156 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(589);\n\n/***/ }),\n/* 157 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(64);\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n/* 158 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar fails = __webpack_require__(2);\nvar createElement = __webpack_require__(124);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n/* 159 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\nvar isCallable = __webpack_require__(8);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n/* 160 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar fails = __webpack_require__(2);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n/***/ }),\n/* 161 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n/* 162 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(18);\nvar uncurryThis = __webpack_require__(4);\nvar getOwnPropertyNamesModule = __webpack_require__(103);\nvar getOwnPropertySymbolsModule = __webpack_require__(104);\nvar anObject = __webpack_require__(20);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n/* 163 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar hasOwn = __webpack_require__(13);\nvar toIndexedObject = __webpack_require__(32);\nvar indexOf = __webpack_require__(164).indexOf;\nvar hiddenKeys = __webpack_require__(80);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n/* 164 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(32);\nvar toAbsoluteIndex = __webpack_require__(125);\nvar lengthOfArrayLike = __webpack_require__(41);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n/* 165 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(18);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n/* 166 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(9);\nvar Iterators = __webpack_require__(50);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n/* 167 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(15);\nvar aCallable = __webpack_require__(31);\nvar anObject = __webpack_require__(20);\nvar tryToString = __webpack_require__(78);\nvar getIteratorMethod = __webpack_require__(106);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n/* 168 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(15);\nvar anObject = __webpack_require__(20);\nvar getMethod = __webpack_require__(122);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n/* 169 */\n/***/ (function(module, exports) {\n\nmodule.exports = function () { /* empty */ };\n\n\n/***/ }),\n/* 170 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar isCallable = __webpack_require__(8);\nvar inspectSource = __webpack_require__(130);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n/* 171 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(2);\nvar isCallable = __webpack_require__(8);\nvar create = __webpack_require__(49);\nvar getPrototypeOf = __webpack_require__(100);\nvar defineBuiltIn = __webpack_require__(44);\nvar wellKnownSymbol = __webpack_require__(9);\nvar IS_PURE = __webpack_require__(33);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n/* 172 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(18);\nvar definePropertyModule = __webpack_require__(23);\nvar wellKnownSymbol = __webpack_require__(9);\nvar DESCRIPTORS = __webpack_require__(14);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n/* 173 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(20);\nvar aConstructor = __webpack_require__(174);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n/***/ }),\n/* 174 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isConstructor = __webpack_require__(109);\nvar tryToString = __webpack_require__(78);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n/***/ }),\n/* 175 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar apply = __webpack_require__(75);\nvar bind = __webpack_require__(48);\nvar isCallable = __webpack_require__(8);\nvar hasOwn = __webpack_require__(13);\nvar fails = __webpack_require__(2);\nvar html = __webpack_require__(165);\nvar arraySlice = __webpack_require__(110);\nvar createElement = __webpack_require__(124);\nvar validateArgumentsLength = __webpack_require__(301);\nvar IS_IOS = __webpack_require__(176);\nvar IS_NODE = __webpack_require__(107);\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n/***/ }),\n/* 176 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(98);\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n/***/ }),\n/* 177 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NativePromiseConstructor = __webpack_require__(65);\nvar checkCorrectnessOfIteration = __webpack_require__(178);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(83).CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n/***/ }),\n/* 178 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n/* 179 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(20);\nvar isObject = __webpack_require__(11);\nvar newPromiseCapability = __webpack_require__(54);\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\n\n/***/ }),\n/* 180 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isUndefined;\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n\n/***/ }),\n/* 181 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isBoolean;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj) === '[object Boolean]';\n}\n\n\n/***/ }),\n/* 182 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Number'));\n\n\n/***/ }),\n/* 183 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Symbol'));\n\n\n/***/ }),\n/* 184 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('ArrayBuffer'));\n\n\n/***/ }),\n/* 185 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNaN;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isNumber_js__ = __webpack_require__(182);\n\n\n\n// Is the given value `NaN`?\nfunction isNaN(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isNumber_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"g\" /* _isNaN */])(obj);\n}\n\n\n/***/ }),\n/* 186 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isDataView_js__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__constant_js__ = __webpack_require__(187);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__ = __webpack_require__(326);\n\n\n\n\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */] ? (Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"l\" /* nativeIsView */])(obj) && !Object(__WEBPACK_IMPORTED_MODULE_1__isDataView_js__[\"a\" /* default */])(obj)) :\n Object(__WEBPACK_IMPORTED_MODULE_3__isBufferLike_js__[\"a\" /* default */])(obj) && typedArrayPattern.test(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"t\" /* toString */].call(obj));\n}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"r\" /* supportsArrayBuffer */] ? isTypedArray : Object(__WEBPACK_IMPORTED_MODULE_2__constant_js__[\"a\" /* default */])(false));\n\n\n/***/ }),\n/* 187 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = constant;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n\n/***/ }),\n/* 188 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createSizePropertyCheck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"b\" /* MAX_ARRAY_INDEX */];\n }\n}\n\n\n/***/ }),\n/* 189 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shallowProperty;\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n\n/***/ }),\n/* 190 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = collectNonEnumProps;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__has_js__ = __webpack_require__(45);\n\n\n\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */].length;\n var constructor = obj.constructor;\n var proto = Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(constructor) && constructor.prototype || __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"c\" /* ObjProto */];\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (Object(__WEBPACK_IMPORTED_MODULE_2__has_js__[\"a\" /* default */])(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"n\" /* nonEnumerableProps */][nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n\n/***/ }),\n/* 191 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isMatch;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(16);\n\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 192 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = invert;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(16);\n\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n\n/***/ }),\n/* 193 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = functions;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(28);\n\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n\n/***/ }),\n/* 194 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(85);\n\n\n\n// Extend a given object with all the properties in passed-in object(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 195 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createAssigner_js__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__allKeys_js__ = __webpack_require__(85);\n\n\n\n// Fill in a given object with default properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createAssigner_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__allKeys_js__[\"a\" /* default */], true));\n\n\n/***/ }),\n/* 196 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseCreate;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n\n\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(prototype)) return {};\n if (__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */]) return Object(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"j\" /* nativeCreate */])(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n\n/***/ }),\n/* 197 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = clone;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isObject_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__extend_js__ = __webpack_require__(194);\n\n\n\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isObject_js__[\"a\" /* default */])(obj)) return obj;\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) ? obj.slice() : Object(__WEBPACK_IMPORTED_MODULE_2__extend_js__[\"a\" /* default */])({}, obj);\n}\n\n\n/***/ }),\n/* 198 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = get;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__toPath_js__ = __webpack_require__(86);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__deepGet_js__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isUndefined_js__ = __webpack_require__(180);\n\n\n\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = Object(__WEBPACK_IMPORTED_MODULE_1__deepGet_js__[\"a\" /* default */])(object, Object(__WEBPACK_IMPORTED_MODULE_0__toPath_js__[\"a\" /* default */])(path));\n return Object(__WEBPACK_IMPORTED_MODULE_2__isUndefined_js__[\"a\" /* default */])(value) ? defaultValue : value;\n}\n\n\n/***/ }),\n/* 199 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toPath;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(57);\n\n\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(path) ? path : [path];\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].toPath = toPath;\n\n\n/***/ }),\n/* 200 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = baseIteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__identity_js__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isObject_js__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArray_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__matcher_js__ = __webpack_require__(111);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__property_js__ = __webpack_require__(142);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__ = __webpack_require__(87);\n\n\n\n\n\n\n\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return __WEBPACK_IMPORTED_MODULE_0__identity_js__[\"a\" /* default */];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_6__optimizeCb_js__[\"a\" /* default */])(value, context, argCount);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isObject_js__[\"a\" /* default */])(value) && !Object(__WEBPACK_IMPORTED_MODULE_3__isArray_js__[\"a\" /* default */])(value)) return Object(__WEBPACK_IMPORTED_MODULE_4__matcher_js__[\"a\" /* default */])(value);\n return Object(__WEBPACK_IMPORTED_MODULE_5__property_js__[\"a\" /* default */])(value);\n}\n\n\n/***/ }),\n/* 201 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = iteratee;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__ = __webpack_require__(200);\n\n\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__baseIteratee_js__[\"a\" /* default */])(value, context, Infinity);\n}\n__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].iteratee = iteratee;\n\n\n/***/ }),\n/* 202 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = noop;\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n\n/***/ }),\n/* 203 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = random;\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n/***/ }),\n/* 204 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createEscaper;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(16);\n\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n\n/***/ }),\n/* 205 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// Internal list of HTML entities for escaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;'\n});\n\n\n/***/ }),\n/* 206 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n});\n\n\n/***/ }),\n/* 207 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = executeBound;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isObject_js__ = __webpack_require__(56);\n\n\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isObject_js__[\"a\" /* default */])(result)) return result;\n return self;\n}\n\n\n/***/ }),\n/* 208 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__executeBound_js__ = __webpack_require__(207);\n\n\n\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, context, args) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(func)) throw new TypeError('Bind must be called on a function');\n var bound = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(callArgs) {\n return Object(__WEBPACK_IMPORTED_MODULE_2__executeBound_js__[\"a\" /* default */])(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n}));\n\n\n/***/ }),\n/* 209 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n}));\n\n\n/***/ }),\n/* 210 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = before;\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n\n/***/ }),\n/* 211 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findKey;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(16);\n\n\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n\n/***/ }),\n/* 212 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createPredicateIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(29);\n\n\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var length = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 213 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__ = __webpack_require__(212);\n\n\n// Returns the last index on an array-like that passes a truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createPredicateIndexFinder_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 214 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortedIndex;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(29);\n\n\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = Object(__WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */])(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n\n/***/ }),\n/* 215 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__ = __webpack_require__(214);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__ = __webpack_require__(216);\n\n\n\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_2__createIndexFinder_js__[\"a\" /* default */])(1, __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0__sortedIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 216 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createIndexFinder;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isNaN_js__ = __webpack_require__(185);\n\n\n\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(__WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(array, i, length), __WEBPACK_IMPORTED_MODULE_2__isNaN_js__[\"a\" /* default */]);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n\n/***/ }),\n/* 217 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = find;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__findIndex_js__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__findKey_js__ = __webpack_require__(211);\n\n\n\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? __WEBPACK_IMPORTED_MODULE_1__findIndex_js__[\"a\" /* default */] : __WEBPACK_IMPORTED_MODULE_2__findKey_js__[\"a\" /* default */];\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n/***/ }),\n/* 218 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = createReduce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(87);\n\n\n\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 4), memo, initial);\n };\n}\n\n\n/***/ }),\n/* 219 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = max;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(58);\n\n\n\n\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 220 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sample;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__clone_js__ = __webpack_require__(197);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__values_js__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__random_js__ = __webpack_require__(203);\n\n\n\n\n\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj)) obj = Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n return obj[Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(obj.length - 1)];\n }\n var sample = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? Object(__WEBPACK_IMPORTED_MODULE_1__clone_js__[\"a\" /* default */])(obj) : Object(__WEBPACK_IMPORTED_MODULE_2__values_js__[\"a\" /* default */])(obj);\n var length = Object(__WEBPACK_IMPORTED_MODULE_3__getLength_js__[\"a\" /* default */])(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = Object(__WEBPACK_IMPORTED_MODULE_4__random_js__[\"a\" /* default */])(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n\n/***/ }),\n/* 221 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__allKeys_js__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__ = __webpack_require__(375);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__flatten_js__ = __webpack_require__(67);\n\n\n\n\n\n\n\n// Return a copy of the object only containing the allowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n if (keys.length > 1) iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__optimizeCb_js__[\"a\" /* default */])(iteratee, keys[1]);\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__allKeys_js__[\"a\" /* default */])(obj);\n } else {\n iteratee = __WEBPACK_IMPORTED_MODULE_4__keyInObj_js__[\"a\" /* default */];\n keys = Object(__WEBPACK_IMPORTED_MODULE_5__flatten_js__[\"a\" /* default */])(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n}));\n\n\n/***/ }),\n/* 222 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = initial;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n/***/ }),\n/* 223 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = rest;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return __WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, n == null || guard ? 1 : n);\n}\n\n\n/***/ }),\n/* 224 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__filter_js__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(89);\n\n\n\n\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, rest) {\n rest = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(rest, true, true);\n return Object(__WEBPACK_IMPORTED_MODULE_2__filter_js__[\"a\" /* default */])(array, function(value){\n return !Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(rest, value);\n });\n}));\n\n\n/***/ }),\n/* 225 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniq;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isBoolean_js__ = __webpack_require__(181);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__contains_js__ = __webpack_require__(89);\n\n\n\n\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__isBoolean_js__[\"a\" /* default */])(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = Object(__WEBPACK_IMPORTED_MODULE_1__cb_js__[\"a\" /* default */])(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_2__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!Object(__WEBPACK_IMPORTED_MODULE_3__contains_js__[\"a\" /* default */])(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 226 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = unzip;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__max_js__ = __webpack_require__(219);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__pluck_js__ = __webpack_require__(146);\n\n\n\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = array && Object(__WEBPACK_IMPORTED_MODULE_0__max_js__[\"a\" /* default */])(array, __WEBPACK_IMPORTED_MODULE_1__getLength_js__[\"a\" /* default */]).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = Object(__WEBPACK_IMPORTED_MODULE_2__pluck_js__[\"a\" /* default */])(array, index);\n }\n return result;\n}\n\n\n/***/ }),\n/* 227 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chainResult;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj).chain() : obj;\n}\n\n\n/***/ }),\n/* 228 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(2);\nvar isArray = __webpack_require__(90);\nvar isObject = __webpack_require__(11);\nvar toObject = __webpack_require__(34);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar doesNotExceedSafeInteger = __webpack_require__(393);\nvar createProperty = __webpack_require__(91);\nvar arraySpeciesCreate = __webpack_require__(229);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(114);\nvar wellKnownSymbol = __webpack_require__(9);\nvar V8_VERSION = __webpack_require__(77);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n/* 229 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arraySpeciesConstructor = __webpack_require__(394);\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n/* 230 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(18);\nvar apply = __webpack_require__(75);\nvar call = __webpack_require__(15);\nvar uncurryThis = __webpack_require__(4);\nvar fails = __webpack_require__(2);\nvar isArray = __webpack_require__(90);\nvar isCallable = __webpack_require__(8);\nvar isObject = __webpack_require__(11);\nvar isSymbol = __webpack_require__(97);\nvar arraySlice = __webpack_require__(110);\nvar NATIVE_SYMBOL = __webpack_require__(64);\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n/***/ }),\n/* 231 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(2);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n/***/ }),\n/* 232 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar rng = __webpack_require__(411);\nvar bytesToUuid = __webpack_require__(412);\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n/***/ }),\n/* 233 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(415);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 234 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = '4.15.1';\n\n/***/ }),\n/* 235 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif (true) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 236 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _require = __webpack_require__(72),\n getAdapter = _require.getAdapter;\n\nvar syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear'];\nvar localStorage = {\n get async() {\n return getAdapter('storage').async;\n }\n\n}; // wrap sync apis with async ones.\n\nsyncApiNames.forEach(function (apiName) {\n localStorage[apiName + 'Async'] = function () {\n var storage = getAdapter('storage');\n return _promise.default.resolve(storage[apiName].apply(storage, arguments));\n };\n\n localStorage[apiName] = function () {\n var storage = getAdapter('storage');\n\n if (!storage.async) {\n return storage[apiName].apply(storage, arguments);\n }\n\n var error = new Error('Synchronous API [' + apiName + '] is not available in this runtime.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n };\n});\nmodule.exports = localStorage;\n\n/***/ }),\n/* 237 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar storage = __webpack_require__(236);\n\nvar AV = __webpack_require__(69);\n\nvar removeAsync = exports.removeAsync = storage.removeItemAsync.bind(storage);\n\nvar getCacheData = function getCacheData(cacheData, key) {\n try {\n cacheData = JSON.parse(cacheData);\n } catch (e) {\n return null;\n }\n\n if (cacheData) {\n var expired = cacheData.expiredAt && cacheData.expiredAt < Date.now();\n\n if (!expired) {\n return cacheData.value;\n }\n\n return removeAsync(key).then(function () {\n return null;\n });\n }\n\n return null;\n};\n\nexports.getAsync = function (key) {\n var _context;\n\n key = (0, _concat.default)(_context = \"AV/\".concat(AV.applicationId, \"/\")).call(_context, key);\n return storage.getItemAsync(key).then(function (cache) {\n return getCacheData(cache, key);\n });\n};\n\nexports.setAsync = function (key, value, ttl) {\n var _context2;\n\n var cache = {\n value: value\n };\n\n if (typeof ttl === 'number') {\n cache.expiredAt = Date.now() + ttl;\n }\n\n return storage.setItemAsync((0, _concat.default)(_context2 = \"AV/\".concat(AV.applicationId, \"/\")).call(_context2, key), (0, _stringify.default)(cache));\n};\n\n/***/ }),\n/* 238 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(239);\n\n/***/ }),\n/* 239 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(417);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 240 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(420);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 241 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(423);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 242 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(426);\n\n/***/ }),\n/* 243 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(429);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 244 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(430);\n__webpack_require__(432);\n__webpack_require__(433);\n__webpack_require__(230);\n__webpack_require__(434);\n\n\n/***/ }),\n/* 245 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = __webpack_require__(63);\nvar toIndexedObject = __webpack_require__(32);\nvar $getOwnPropertyNames = __webpack_require__(103).f;\nvar arraySlice = __webpack_require__(431);\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n/***/ }),\n/* 246 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(15);\nvar getBuiltIn = __webpack_require__(18);\nvar wellKnownSymbol = __webpack_require__(9);\nvar defineBuiltIn = __webpack_require__(44);\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n\n\n/***/ }),\n/* 247 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(64);\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n/***/ }),\n/* 248 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n/***/ }),\n/* 249 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(463);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 250 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(464);\n\n/***/ }),\n/* 251 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// Copyright (c) 2015-2017 David M. Lee, II\n\n\n/**\n * Local reference to TimeoutError\n * @private\n */\nvar TimeoutError;\n\n/**\n * Rejects a promise with a {@link TimeoutError} if it does not settle within\n * the specified timeout.\n *\n * @param {Promise} promise The promise.\n * @param {number} timeoutMillis Number of milliseconds to wait on settling.\n * @returns {Promise} Either resolves/rejects with `promise`, or rejects with\n * `TimeoutError`, whichever settles first.\n */\nvar timeout = module.exports.timeout = function(promise, timeoutMillis) {\n var error = new TimeoutError(),\n timeout;\n\n return Promise.race([\n promise,\n new Promise(function(resolve, reject) {\n timeout = setTimeout(function() {\n reject(error);\n }, timeoutMillis);\n }),\n ]).then(function(v) {\n clearTimeout(timeout);\n return v;\n }, function(err) {\n clearTimeout(timeout);\n throw err;\n });\n};\n\n/**\n * Exception indicating that the timeout expired.\n */\nTimeoutError = module.exports.TimeoutError = function() {\n Error.call(this)\n this.stack = Error().stack\n this.message = 'Timeout';\n};\n\nTimeoutError.prototype = Object.create(Error.prototype);\nTimeoutError.prototype.name = \"TimeoutError\";\n\n\n/***/ }),\n/* 252 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(253);\n\n/***/ }),\n/* 253 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(480);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 254 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(484);\n\n/***/ }),\n/* 255 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(4);\nvar aCallable = __webpack_require__(31);\nvar isObject = __webpack_require__(11);\nvar hasOwn = __webpack_require__(13);\nvar arraySlice = __webpack_require__(110);\nvar NATIVE_BIND = __webpack_require__(76);\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n/***/ }),\n/* 256 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(505);\n\n/***/ }),\n/* 257 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(508);\n\n/***/ }),\n/* 258 */\n/***/ (function(module, exports) {\n\nvar charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n/***/ }),\n/* 259 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar adapters = __webpack_require__(569);\n\nmodule.exports = function (AV) {\n AV.setAdapters(adapters);\n return AV;\n};\n\n/***/ }),\n/* 260 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(577);\n\n/***/ }),\n/* 261 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\nvar isObject = __webpack_require__(11);\nvar classof = __webpack_require__(63);\nvar ARRAY_BUFFER_NON_EXTENSIBLE = __webpack_require__(581);\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n\n\n/***/ }),\n/* 262 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n/***/ }),\n/* 263 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar defineProperty = __webpack_require__(23).f;\nvar create = __webpack_require__(49);\nvar defineBuiltIns = __webpack_require__(154);\nvar bind = __webpack_require__(48);\nvar anInstance = __webpack_require__(108);\nvar iterate = __webpack_require__(42);\nvar defineIterator = __webpack_require__(131);\nvar setSpecies = __webpack_require__(172);\nvar DESCRIPTORS = __webpack_require__(14);\nvar fastKey = __webpack_require__(94).fastKey;\nvar InternalStateModule = __webpack_require__(43);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n\n\n/***/ }),\n/* 264 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(608);\n\n/***/ }),\n/* 265 */\n/***/ (function(module, exports) {\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\n\n/***/ }),\n/* 266 */\n/***/ (function(module, exports) {\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n/***/ }),\n/* 267 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeToArray = __webpack_require__(265);\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\n\n/***/ }),\n/* 268 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseRandom = __webpack_require__(631);\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n\n\n/***/ }),\n/* 269 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseValues = __webpack_require__(633),\n keys = __webpack_require__(635);\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n\n/***/ }),\n/* 270 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(271);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 271 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(272);\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n/***/ }),\n/* 272 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(74)))\n\n/***/ }),\n/* 273 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n/***/ }),\n/* 274 */\n/***/ (function(module, exports) {\n\nmodule.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n/***/ }),\n/* 275 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n/***/ }),\n/* 276 */\n/***/ (function(module, exports) {\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n/***/ }),\n/* 277 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar AV = __webpack_require__(278);\n\nvar useLiveQuery = __webpack_require__(588);\n\nvar useAdatpers = __webpack_require__(259);\n\nmodule.exports = useAdatpers(useLiveQuery(AV));\n\n/***/ }),\n/* 278 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar AV = __webpack_require__(279);\n\nvar useAdatpers = __webpack_require__(259);\n\nmodule.exports = useAdatpers(AV);\n\n/***/ }),\n/* 279 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(280);\n\n/***/ }),\n/* 280 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\n/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nvar _ = __webpack_require__(3);\n\nvar AV = __webpack_require__(69);\n\nAV._ = _;\nAV.version = __webpack_require__(234);\nAV.Promise = _promise.default;\nAV.localStorage = __webpack_require__(236);\nAV.Cache = __webpack_require__(237);\nAV.Error = __webpack_require__(46);\n\n__webpack_require__(419);\n\n__webpack_require__(468)(AV);\n\n__webpack_require__(469)(AV);\n\n__webpack_require__(470)(AV);\n\n__webpack_require__(471)(AV);\n\n__webpack_require__(476)(AV);\n\n__webpack_require__(477)(AV);\n\n__webpack_require__(530)(AV);\n\n__webpack_require__(555)(AV);\n\n__webpack_require__(556)(AV);\n\n__webpack_require__(558)(AV);\n\n__webpack_require__(559)(AV);\n\n__webpack_require__(560)(AV);\n\n__webpack_require__(561)(AV);\n\n__webpack_require__(562)(AV);\n\n__webpack_require__(563)(AV);\n\n__webpack_require__(564)(AV);\n\n__webpack_require__(565)(AV);\n\n__webpack_require__(566)(AV);\n\nAV.Conversation = __webpack_require__(567);\n\n__webpack_require__(568);\n\nmodule.exports = AV;\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n/***/ }),\n/* 281 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(282);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 282 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(283);\n__webpack_require__(38);\n__webpack_require__(53);\n__webpack_require__(299);\n__webpack_require__(313);\n__webpack_require__(314);\n__webpack_require__(315);\n__webpack_require__(55);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Promise;\n\n\n/***/ }),\n/* 283 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(284);\n\n\n/***/ }),\n/* 284 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar isPrototypeOf = __webpack_require__(19);\nvar getPrototypeOf = __webpack_require__(100);\nvar setPrototypeOf = __webpack_require__(102);\nvar copyConstructorProperties = __webpack_require__(289);\nvar create = __webpack_require__(49);\nvar createNonEnumerableProperty = __webpack_require__(37);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar clearErrorStack = __webpack_require__(292);\nvar installErrorCause = __webpack_require__(293);\nvar iterate = __webpack_require__(42);\nvar normalizeStringArgument = __webpack_require__(294);\nvar wellKnownSymbol = __webpack_require__(9);\nvar ERROR_STACK_INSTALLABLE = __webpack_require__(295);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n\n\n/***/ }),\n/* 285 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(15);\nvar isObject = __webpack_require__(11);\nvar isSymbol = __webpack_require__(97);\nvar getMethod = __webpack_require__(122);\nvar ordinaryToPrimitive = __webpack_require__(286);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n/* 286 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar call = __webpack_require__(15);\nvar isCallable = __webpack_require__(8);\nvar isObject = __webpack_require__(11);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n/* 287 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n/* 288 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isCallable = __webpack_require__(8);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n/* 289 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar hasOwn = __webpack_require__(13);\nvar ownKeys = __webpack_require__(162);\nvar getOwnPropertyDescriptorModule = __webpack_require__(62);\nvar definePropertyModule = __webpack_require__(23);\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n/* 290 */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n/* 291 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIntegerOrInfinity = __webpack_require__(126);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n/* 292 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n/* 293 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(11);\nvar createNonEnumerableProperty = __webpack_require__(37);\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n/***/ }),\n/* 294 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toString = __webpack_require__(81);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n/* 295 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(2);\nvar createPropertyDescriptor = __webpack_require__(47);\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n/***/ }),\n/* 296 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar hasOwn = __webpack_require__(13);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n/* 297 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(171).IteratorPrototype;\nvar create = __webpack_require__(49);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar setToStringTag = __webpack_require__(52);\nvar Iterators = __webpack_require__(50);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n/* 298 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(129);\nvar classof = __webpack_require__(51);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n/* 299 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\n__webpack_require__(300);\n__webpack_require__(308);\n__webpack_require__(309);\n__webpack_require__(310);\n__webpack_require__(311);\n__webpack_require__(312);\n\n\n/***/ }),\n/* 300 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(33);\nvar IS_NODE = __webpack_require__(107);\nvar global = __webpack_require__(7);\nvar call = __webpack_require__(15);\nvar defineBuiltIn = __webpack_require__(44);\nvar setPrototypeOf = __webpack_require__(102);\nvar setToStringTag = __webpack_require__(52);\nvar setSpecies = __webpack_require__(172);\nvar aCallable = __webpack_require__(31);\nvar isCallable = __webpack_require__(8);\nvar isObject = __webpack_require__(11);\nvar anInstance = __webpack_require__(108);\nvar speciesConstructor = __webpack_require__(173);\nvar task = __webpack_require__(175).set;\nvar microtask = __webpack_require__(302);\nvar hostReportErrors = __webpack_require__(305);\nvar perform = __webpack_require__(82);\nvar Queue = __webpack_require__(306);\nvar InternalStateModule = __webpack_require__(43);\nvar NativePromiseConstructor = __webpack_require__(65);\nvar PromiseConstructorDetection = __webpack_require__(83);\nvar newPromiseCapabilityModule = __webpack_require__(54);\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\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 (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can 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 call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n/***/ }),\n/* 301 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n/* 302 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar bind = __webpack_require__(48);\nvar getOwnPropertyDescriptor = __webpack_require__(62).f;\nvar macrotask = __webpack_require__(175).set;\nvar IS_IOS = __webpack_require__(176);\nvar IS_IOS_PEBBLE = __webpack_require__(303);\nvar IS_WEBOS_WEBKIT = __webpack_require__(304);\nvar IS_NODE = __webpack_require__(107);\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || 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\n/***/ }),\n/* 303 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(98);\nvar global = __webpack_require__(7);\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n/***/ }),\n/* 304 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar userAgent = __webpack_require__(98);\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n/***/ }),\n/* 305 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n/***/ }),\n/* 306 */\n/***/ (function(module, exports) {\n\nvar Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n/***/ }),\n/* 307 */\n/***/ (function(module, exports) {\n\nmodule.exports = typeof window == 'object' && typeof Deno != 'object';\n\n\n/***/ }),\n/* 308 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar aCallable = __webpack_require__(31);\nvar newPromiseCapabilityModule = __webpack_require__(54);\nvar perform = __webpack_require__(82);\nvar iterate = __webpack_require__(42);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(177);\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, 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.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 309 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(33);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(83).CONSTRUCTOR;\nvar NativePromiseConstructor = __webpack_require__(65);\nvar getBuiltIn = __webpack_require__(18);\nvar isCallable = __webpack_require__(8);\nvar defineBuiltIn = __webpack_require__(44);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n/***/ }),\n/* 310 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar aCallable = __webpack_require__(31);\nvar newPromiseCapabilityModule = __webpack_require__(54);\nvar perform = __webpack_require__(82);\nvar iterate = __webpack_require__(42);\nvar PROMISE_STATICS_INCORRECT_ITERATION = __webpack_require__(177);\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 311 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar newPromiseCapabilityModule = __webpack_require__(54);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(83).CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 312 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(18);\nvar IS_PURE = __webpack_require__(33);\nvar NativePromiseConstructor = __webpack_require__(65);\nvar FORCED_PROMISE_CONSTRUCTOR = __webpack_require__(83).CONSTRUCTOR;\nvar promiseResolve = __webpack_require__(179);\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n/***/ }),\n/* 313 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar aCallable = __webpack_require__(31);\nvar newPromiseCapabilityModule = __webpack_require__(54);\nvar perform = __webpack_require__(82);\nvar iterate = __webpack_require__(42);\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 314 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar call = __webpack_require__(15);\nvar aCallable = __webpack_require__(31);\nvar getBuiltIn = __webpack_require__(18);\nvar newPromiseCapabilityModule = __webpack_require__(54);\nvar perform = __webpack_require__(82);\nvar iterate = __webpack_require__(42);\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n/***/ }),\n/* 315 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar IS_PURE = __webpack_require__(33);\nvar NativePromiseConstructor = __webpack_require__(65);\nvar fails = __webpack_require__(2);\nvar getBuiltIn = __webpack_require__(18);\nvar isCallable = __webpack_require__(8);\nvar speciesConstructor = __webpack_require__(173);\nvar promiseResolve = __webpack_require__(179);\nvar defineBuiltIn = __webpack_require__(44);\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\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});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n/***/ }),\n/* 316 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar uncurryThis = __webpack_require__(4);\nvar toIntegerOrInfinity = __webpack_require__(126);\nvar toString = __webpack_require__(81);\nvar requireObjectCoercible = __webpack_require__(121);\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n/* 317 */\n/***/ (function(module, exports) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n/* 318 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index_js__ = __webpack_require__(132);\n// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\n\n\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = Object(__WEBPACK_IMPORTED_MODULE_0__index_js__[\"mixin\"])(__WEBPACK_IMPORTED_MODULE_0__index_js__);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\n/* harmony default export */ __webpack_exports__[\"a\"] = (_);\n\n\n/***/ }),\n/* 319 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isNull;\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n\n/***/ }),\n/* 320 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isElement;\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n\n/***/ }),\n/* 321 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Date'));\n\n\n/***/ }),\n/* 322 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('RegExp'));\n\n\n/***/ }),\n/* 323 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Error'));\n\n\n/***/ }),\n/* 324 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Object'));\n\n\n/***/ }),\n/* 325 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isFinite;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isSymbol_js__ = __webpack_require__(183);\n\n\n\n// Is a given object a finite number?\nfunction isFinite(obj) {\n return !Object(__WEBPACK_IMPORTED_MODULE_1__isSymbol_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"f\" /* _isFinite */])(obj) && !isNaN(parseFloat(obj));\n}\n\n\n/***/ }),\n/* 326 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__ = __webpack_require__(188);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getByteLength_js__ = __webpack_require__(136);\n\n\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createSizePropertyCheck_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__getByteLength_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 327 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEmpty;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArray_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArguments_js__ = __webpack_require__(135);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__keys_js__ = __webpack_require__(16);\n\n\n\n\n\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(obj);\n if (typeof length == 'number' && (\n Object(__WEBPACK_IMPORTED_MODULE_1__isArray_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj) || Object(__WEBPACK_IMPORTED_MODULE_3__isArguments_js__[\"a\" /* default */])(obj)\n )) return length === 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__keys_js__[\"a\" /* default */])(obj)) === 0;\n}\n\n\n/***/ }),\n/* 328 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = isEqual;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getByteLength_js__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__ = __webpack_require__(186);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__isDataView_js__ = __webpack_require__(134);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__keys_js__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__has_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__toBufferView_js__ = __webpack_require__(329);\n\n\n\n\n\n\n\n\n\n\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) a = a._wrapped;\n if (b instanceof __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(a);\n if (className !== __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"t\" /* toString */].call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (__WEBPACK_IMPORTED_MODULE_5__stringTagBug_js__[\"a\" /* hasStringTagBug */] && className == '[object Object]' && Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(a)) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_6__isDataView_js__[\"a\" /* default */])(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(a) === __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"d\" /* SymbolProto */].valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(a), Object(__WEBPACK_IMPORTED_MODULE_9__toBufferView_js__[\"a\" /* default */])(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && Object(__WEBPACK_IMPORTED_MODULE_3__isTypedArray_js__[\"a\" /* default */])(a)) {\n var byteLength = Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(a);\n if (byteLength !== Object(__WEBPACK_IMPORTED_MODULE_2__getByteLength_js__[\"a\" /* default */])(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(aCtor) && aCtor instanceof aCtor &&\n Object(__WEBPACK_IMPORTED_MODULE_4__isFunction_js__[\"a\" /* default */])(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object(__WEBPACK_IMPORTED_MODULE_7__keys_js__[\"a\" /* default */])(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(Object(__WEBPACK_IMPORTED_MODULE_8__has_js__[\"a\" /* default */])(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n\n/***/ }),\n/* 329 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toBufferView;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getByteLength_js__ = __webpack_require__(136);\n\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n Object(__WEBPACK_IMPORTED_MODULE_0__getByteLength_js__[\"a\" /* default */])(bufferSource)\n );\n}\n\n\n/***/ }),\n/* 330 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(137);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"b\" /* mapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Map'));\n\n\n/***/ }),\n/* 331 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(137);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"d\" /* weakMapMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakMap'));\n\n\n/***/ }),\n/* 332 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__ = __webpack_require__(137);\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_1__stringTagBug_js__[\"b\" /* isIE11 */] ? Object(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"a\" /* ie11fingerprint */])(__WEBPACK_IMPORTED_MODULE_2__methodFingerprint_js__[\"c\" /* setMethods */]) : Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('Set'));\n\n\n/***/ }),\n/* 333 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__tagTester_js__ = __webpack_require__(17);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__tagTester_js__[\"a\" /* default */])('WeakSet'));\n\n\n/***/ }),\n/* 334 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = pairs;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__keys_js__ = __webpack_require__(16);\n\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_0__keys_js__[\"a\" /* default */])(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n\n/***/ }),\n/* 335 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = create;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__baseCreate_js__ = __webpack_require__(196);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__extendOwn_js__ = __webpack_require__(139);\n\n\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = Object(__WEBPACK_IMPORTED_MODULE_0__baseCreate_js__[\"a\" /* default */])(prototype);\n if (props) Object(__WEBPACK_IMPORTED_MODULE_1__extendOwn_js__[\"a\" /* default */])(result, props);\n return result;\n}\n\n\n/***/ }),\n/* 336 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = tap;\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n\n/***/ }),\n/* 337 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = has;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(86);\n\n\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n\n/***/ }),\n/* 338 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mapObject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(16);\n\n\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n var _keys = Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n/***/ }),\n/* 339 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = propertyOf;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__noop_js__ = __webpack_require__(202);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__get_js__ = __webpack_require__(198);\n\n\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return __WEBPACK_IMPORTED_MODULE_0__noop_js__[\"a\" /* default */];\n return function(path) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__get_js__[\"a\" /* default */])(obj, path);\n };\n}\n\n\n/***/ }),\n/* 340 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = times;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__ = __webpack_require__(87);\n\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__optimizeCb_js__[\"a\" /* default */])(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n\n/***/ }),\n/* 341 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(205);\n\n\n\n// Function for escaping strings to HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 342 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createEscaper_js__ = __webpack_require__(204);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__ = __webpack_require__(343);\n\n\n\n// Function for unescaping strings from HTML interpolation.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createEscaper_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unescapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 343 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__invert_js__ = __webpack_require__(192);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__escapeMap_js__ = __webpack_require__(205);\n\n\n\n// Internal list of HTML entities for unescaping.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__invert_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__escapeMap_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 344 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = template;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__defaults_js__ = __webpack_require__(195);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__templateSettings_js__ = __webpack_require__(206);\n\n\n\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = Object(__WEBPACK_IMPORTED_MODULE_0__defaults_js__[\"a\" /* default */])({}, settings, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */].templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, __WEBPACK_IMPORTED_MODULE_1__underscore_js__[\"a\" /* default */]);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n\n/***/ }),\n/* 345 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = result;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__toPath_js__ = __webpack_require__(86);\n\n\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = Object(__WEBPACK_IMPORTED_MODULE_1__toPath_js__[\"a\" /* default */])(path);\n var length = path.length;\n if (!length) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isFunction_js__[\"a\" /* default */])(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n\n/***/ }),\n/* 346 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = uniqueId;\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n\n/***/ }),\n/* 347 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chain;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = Object(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */])(obj);\n instance._chain = true;\n return instance;\n}\n\n\n/***/ }),\n/* 348 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__flatten_js__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__bind_js__ = __webpack_require__(208);\n\n\n\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n keys = Object(__WEBPACK_IMPORTED_MODULE_1__flatten_js__[\"a\" /* default */])(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = Object(__WEBPACK_IMPORTED_MODULE_2__bind_js__[\"a\" /* default */])(obj[key], obj);\n }\n return obj;\n}));\n\n\n/***/ }),\n/* 349 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = memoize;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__has_js__ = __webpack_require__(45);\n\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__has_js__[\"a\" /* default */])(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n\n/***/ }),\n/* 350 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__delay_js__ = __webpack_require__(209);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__underscore_js__ = __webpack_require__(25);\n\n\n\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__delay_js__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__underscore_js__[\"a\" /* default */], 1));\n\n\n/***/ }),\n/* 351 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = throttle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__now_js__ = __webpack_require__(143);\n\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = Object(__WEBPACK_IMPORTED_MODULE_0__now_js__[\"a\" /* default */])();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n\n/***/ }),\n/* 352 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = debounce;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__now_js__ = __webpack_require__(143);\n\n\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(_args) {\n context = this;\n args = _args;\n previous = Object(__WEBPACK_IMPORTED_MODULE_1__now_js__[\"a\" /* default */])();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n\n/***/ }),\n/* 353 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = wrap;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(112);\n\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(wrapper, func);\n}\n\n\n/***/ }),\n/* 354 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compose;\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n\n/***/ }),\n/* 355 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = after;\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n\n/***/ }),\n/* 356 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__partial_js__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__before_js__ = __webpack_require__(210);\n\n\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__partial_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__before_js__[\"a\" /* default */], 2));\n\n\n/***/ }),\n/* 357 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__ = __webpack_require__(213);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__ = __webpack_require__(216);\n\n\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_1__createIndexFinder_js__[\"a\" /* default */])(-1, __WEBPACK_IMPORTED_MODULE_0__findLastIndex_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 358 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = findWhere;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__find_js__ = __webpack_require__(217);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(111);\n\n\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__find_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 359 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(218);\n\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(1));\n\n\n/***/ }),\n/* 360 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__createReduce_js__ = __webpack_require__(218);\n\n\n// The right-associative version of reduce, also known as `foldr`.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__createReduce_js__[\"a\" /* default */])(-1));\n\n\n/***/ }),\n/* 361 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = reject;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__negate_js__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(21);\n\n\n\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__negate_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(predicate)), context);\n}\n\n\n/***/ }),\n/* 362 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = every;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(16);\n\n\n\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n\n/***/ }),\n/* 363 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = some;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__keys_js__ = __webpack_require__(16);\n\n\n\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(predicate, context);\n var _keys = !Object(__WEBPACK_IMPORTED_MODULE_1__isArrayLike_js__[\"a\" /* default */])(obj) && Object(__WEBPACK_IMPORTED_MODULE_2__keys_js__[\"a\" /* default */])(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n\n/***/ }),\n/* 364 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__deepGet_js__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__toPath_js__ = __webpack_require__(86);\n\n\n\n\n\n\n// Invoke a method (with arguments) on every item in a collection.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, path, args) {\n var contextPath, func;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(path)) {\n func = path;\n } else {\n path = Object(__WEBPACK_IMPORTED_MODULE_4__toPath_js__[\"a\" /* default */])(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = Object(__WEBPACK_IMPORTED_MODULE_3__deepGet_js__[\"a\" /* default */])(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n}));\n\n\n/***/ }),\n/* 365 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = where;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__matcher_js__ = __webpack_require__(111);\n\n\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(obj, Object(__WEBPACK_IMPORTED_MODULE_1__matcher_js__[\"a\" /* default */])(attrs));\n}\n\n\n/***/ }),\n/* 366 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = min;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__values_js__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__each_js__ = __webpack_require__(58);\n\n\n\n\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj : Object(__WEBPACK_IMPORTED_MODULE_1__values_js__[\"a\" /* default */])(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__cb_js__[\"a\" /* default */])(iteratee, context);\n Object(__WEBPACK_IMPORTED_MODULE_3__each_js__[\"a\" /* default */])(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n/***/ }),\n/* 367 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = shuffle;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__sample_js__ = __webpack_require__(220);\n\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__sample_js__[\"a\" /* default */])(obj, Infinity);\n}\n\n\n/***/ }),\n/* 368 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sortBy;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__cb_js__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pluck_js__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__map_js__ = __webpack_require__(68);\n\n\n\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_0__cb_js__[\"a\" /* default */])(iteratee, context);\n return Object(__WEBPACK_IMPORTED_MODULE_1__pluck_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__map_js__[\"a\" /* default */])(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n\n/***/ }),\n/* 369 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(45);\n\n\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key].push(value); else result[key] = [value];\n}));\n\n\n/***/ }),\n/* 370 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(113);\n\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n result[key] = value;\n}));\n\n\n/***/ }),\n/* 371 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__has_js__ = __webpack_require__(45);\n\n\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, key) {\n if (Object(__WEBPACK_IMPORTED_MODULE_1__has_js__[\"a\" /* default */])(result, key)) result[key]++; else result[key] = 1;\n}));\n\n\n/***/ }),\n/* 372 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__group_js__ = __webpack_require__(113);\n\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__group_js__[\"a\" /* default */])(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true));\n\n\n/***/ }),\n/* 373 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = toArray;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArray_js__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__isString_js__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__map_js__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__identity_js__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__values_js__ = __webpack_require__(66);\n\n\n\n\n\n\n\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (Object(__WEBPACK_IMPORTED_MODULE_0__isArray_js__[\"a\" /* default */])(obj)) return __WEBPACK_IMPORTED_MODULE_1__setup_js__[\"q\" /* slice */].call(obj);\n if (Object(__WEBPACK_IMPORTED_MODULE_2__isString_js__[\"a\" /* default */])(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (Object(__WEBPACK_IMPORTED_MODULE_3__isArrayLike_js__[\"a\" /* default */])(obj)) return Object(__WEBPACK_IMPORTED_MODULE_4__map_js__[\"a\" /* default */])(obj, __WEBPACK_IMPORTED_MODULE_5__identity_js__[\"a\" /* default */]);\n return Object(__WEBPACK_IMPORTED_MODULE_6__values_js__[\"a\" /* default */])(obj);\n}\n\n\n/***/ }),\n/* 374 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = size;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__keys_js__ = __webpack_require__(16);\n\n\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return Object(__WEBPACK_IMPORTED_MODULE_0__isArrayLike_js__[\"a\" /* default */])(obj) ? obj.length : Object(__WEBPACK_IMPORTED_MODULE_1__keys_js__[\"a\" /* default */])(obj).length;\n}\n\n\n/***/ }),\n/* 375 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = keyInObj;\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n\n/***/ }),\n/* 376 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__isFunction_js__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__negate_js__ = __webpack_require__(144);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__map_js__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__flatten_js__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__contains_js__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__pick_js__ = __webpack_require__(221);\n\n\n\n\n\n\n\n\n// Return a copy of the object without the disallowed properties.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(obj, keys) {\n var iteratee = keys[0], context;\n if (Object(__WEBPACK_IMPORTED_MODULE_1__isFunction_js__[\"a\" /* default */])(iteratee)) {\n iteratee = Object(__WEBPACK_IMPORTED_MODULE_2__negate_js__[\"a\" /* default */])(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = Object(__WEBPACK_IMPORTED_MODULE_3__map_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_4__flatten_js__[\"a\" /* default */])(keys, false, false), String);\n iteratee = function(value, key) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__contains_js__[\"a\" /* default */])(keys, key);\n };\n }\n return Object(__WEBPACK_IMPORTED_MODULE_6__pick_js__[\"a\" /* default */])(obj, iteratee, context);\n}));\n\n\n/***/ }),\n/* 377 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = first;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__initial_js__ = __webpack_require__(222);\n\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return Object(__WEBPACK_IMPORTED_MODULE_0__initial_js__[\"a\" /* default */])(array, array.length - n);\n}\n\n\n/***/ }),\n/* 378 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = last;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__rest_js__ = __webpack_require__(223);\n\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return Object(__WEBPACK_IMPORTED_MODULE_0__rest_js__[\"a\" /* default */])(array, Math.max(0, array.length - n));\n}\n\n\n/***/ }),\n/* 379 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = compact;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__filter_js__ = __webpack_require__(88);\n\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__filter_js__[\"a\" /* default */])(array, Boolean);\n}\n\n\n/***/ }),\n/* 380 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = flatten;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__flatten_js__ = __webpack_require__(67);\n\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__flatten_js__[\"a\" /* default */])(array, depth, false);\n}\n\n\n/***/ }),\n/* 381 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__difference_js__ = __webpack_require__(224);\n\n\n\n// Return a version of the array that does not contain the specified value(s).\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(array, otherArrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__difference_js__[\"a\" /* default */])(array, otherArrays);\n}));\n\n\n/***/ }),\n/* 382 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uniq_js__ = __webpack_require__(225);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__flatten_js__ = __webpack_require__(67);\n\n\n\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(function(arrays) {\n return Object(__WEBPACK_IMPORTED_MODULE_1__uniq_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__flatten_js__[\"a\" /* default */])(arrays, true, true));\n}));\n\n\n/***/ }),\n/* 383 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = intersection;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__contains_js__ = __webpack_require__(89);\n\n\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(array); i < length; i++) {\n var item = array[i];\n if (Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_1__contains_js__[\"a\" /* default */])(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n\n/***/ }),\n/* 384 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__restArguments_js__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__unzip_js__ = __webpack_require__(226);\n\n\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__restArguments_js__[\"a\" /* default */])(__WEBPACK_IMPORTED_MODULE_1__unzip_js__[\"a\" /* default */]));\n\n\n/***/ }),\n/* 385 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = object;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__getLength_js__ = __webpack_require__(29);\n\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = Object(__WEBPACK_IMPORTED_MODULE_0__getLength_js__[\"a\" /* default */])(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n\n/***/ }),\n/* 386 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = range;\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n\n/***/ }),\n/* 387 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = chunk;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__setup_js__ = __webpack_require__(6);\n\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(__WEBPACK_IMPORTED_MODULE_0__setup_js__[\"q\" /* slice */].call(array, i, i += count));\n }\n return result;\n}\n\n\n/***/ }),\n/* 388 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = mixin;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functions_js__ = __webpack_require__(193);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__chainResult_js__ = __webpack_require__(227);\n\n\n\n\n\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n Object(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(Object(__WEBPACK_IMPORTED_MODULE_2__functions_js__[\"a\" /* default */])(obj), function(name) {\n var func = __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */][name] = obj[name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var args = [this._wrapped];\n __WEBPACK_IMPORTED_MODULE_3__setup_js__[\"o\" /* push */].apply(args, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_4__chainResult_js__[\"a\" /* default */])(this, func.apply(__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */], args));\n };\n });\n return __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */];\n}\n\n\n/***/ }),\n/* 389 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__underscore_js__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__each_js__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__setup_js__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__chainResult_js__ = __webpack_require__(227);\n\n\n\n\n\n// Add all mutator `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\nObject(__WEBPACK_IMPORTED_MODULE_1__each_js__[\"a\" /* default */])(['concat', 'join', 'slice'], function(name) {\n var method = __WEBPACK_IMPORTED_MODULE_2__setup_js__[\"a\" /* ArrayProto */][name];\n __WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */].prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return Object(__WEBPACK_IMPORTED_MODULE_3__chainResult_js__[\"a\" /* default */])(this, obj);\n };\n});\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (__WEBPACK_IMPORTED_MODULE_0__underscore_js__[\"a\" /* default */]);\n\n\n/***/ }),\n/* 390 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(391);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 391 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(392);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n/***/ }),\n/* 392 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(228);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n/***/ }),\n/* 393 */\n/***/ (function(module, exports) {\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n/* 394 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isArray = __webpack_require__(90);\nvar isConstructor = __webpack_require__(109);\nvar isObject = __webpack_require__(11);\nvar wellKnownSymbol = __webpack_require__(9);\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n\n\n/***/ }),\n/* 395 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(396);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 396 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(397);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n/***/ }),\n/* 397 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(398);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').map;\n\n\n/***/ }),\n/* 398 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $map = __webpack_require__(70).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(114);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 399 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(400);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 400 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(401);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.keys;\n\n\n/***/ }),\n/* 401 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar toObject = __webpack_require__(34);\nvar nativeKeys = __webpack_require__(105);\nvar fails = __webpack_require__(2);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n/***/ }),\n/* 402 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(403);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 403 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(230);\nvar path = __webpack_require__(5);\nvar apply = __webpack_require__(75);\n\n// eslint-disable-next-line es-x/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return apply(path.JSON.stringify, null, arguments);\n};\n\n\n/***/ }),\n/* 404 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(405);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 405 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(406);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n/***/ }),\n/* 406 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(407);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n/***/ }),\n/* 407 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = __webpack_require__(0);\nvar uncurryThis = __webpack_require__(4);\nvar $IndexOf = __webpack_require__(164).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(231);\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n\n\n/***/ }),\n/* 408 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(39);\nvar classof = __webpack_require__(51);\nvar hasOwn = __webpack_require__(13);\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(409);\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.keys;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n/***/ }),\n/* 409 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(410);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 410 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(53);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').keys;\n\n\n/***/ }),\n/* 411 */\n/***/ (function(module, exports) {\n\n// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n/***/ }),\n/* 412 */\n/***/ (function(module, exports) {\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n/***/ }),\n/* 413 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = __webpack_require__(414);\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n/***/ }),\n/* 414 */\n/***/ (function(module, exports) {\n\n/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n/***/ }),\n/* 415 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(416);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n/***/ }),\n/* 416 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(2);\nvar toObject = __webpack_require__(34);\nvar nativeGetPrototypeOf = __webpack_require__(100);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(161);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n/* 417 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(418);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n/***/ }),\n/* 418 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar setPrototypeOf = __webpack_require__(102);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n\n\n/***/ }),\n/* 419 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(92));\n\nvar AV = __webpack_require__(69);\n\nvar AppRouter = __webpack_require__(425);\n\nvar _require = __webpack_require__(30),\n isNullOrUndefined = _require.isNullOrUndefined;\n\nvar _require2 = __webpack_require__(3),\n extend = _require2.extend,\n isObject = _require2.isObject,\n isEmpty = _require2.isEmpty;\n\nvar isCNApp = function isCNApp(appId) {\n return (0, _slice.default)(appId).call(appId, -9) !== '-MdYXbMMI';\n};\n\nvar fillServerURLs = function fillServerURLs(url) {\n return {\n push: url,\n stats: url,\n engine: url,\n api: url,\n rtm: url\n };\n};\n\nfunction getDefaultServerURLs(appId) {\n var _context, _context2, _context3, _context4, _context5;\n\n if (isCNApp(appId)) {\n return {};\n }\n\n var id = (0, _slice.default)(appId).call(appId, 0, 8).toLowerCase();\n var domain = 'lncldglobal.com';\n return {\n push: (0, _concat.default)(_context = \"https://\".concat(id, \".push.\")).call(_context, domain),\n stats: (0, _concat.default)(_context2 = \"https://\".concat(id, \".stats.\")).call(_context2, domain),\n engine: (0, _concat.default)(_context3 = \"https://\".concat(id, \".engine.\")).call(_context3, domain),\n api: (0, _concat.default)(_context4 = \"https://\".concat(id, \".api.\")).call(_context4, domain),\n rtm: (0, _concat.default)(_context5 = \"https://\".concat(id, \".rtm.\")).call(_context5, domain)\n };\n}\n\nvar _disableAppRouter = false;\nvar _initialized = false;\n/**\n * URLs for services\n * @typedef {Object} ServerURLs\n * @property {String} [api] serverURL for API service\n * @property {String} [engine] serverURL for engine service\n * @property {String} [stats] serverURL for stats service\n * @property {String} [push] serverURL for push service\n * @property {String} [rtm] serverURL for LiveQuery service\n */\n\n/**\n * Call this method first to set up your authentication tokens for AV.\n * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn .\n * @function AV.init\n * @param {Object} options\n * @param {String} options.appId application id\n * @param {String} options.appKey application key\n * @param {String} [options.masterKey] application master key\n * @param {Boolean} [options.production]\n * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services.\n * @param {Boolean} [options.disableCurrentUser]\n */\n\nAV.init = function init(options) {\n if (!isObject(options)) {\n return AV.init({\n appId: options,\n appKey: arguments.length <= 1 ? undefined : arguments[1],\n masterKey: arguments.length <= 2 ? undefined : arguments[2]\n });\n }\n\n var appId = options.appId,\n appKey = options.appKey,\n masterKey = options.masterKey,\n hookKey = options.hookKey,\n serverURL = options.serverURL,\n _options$serverURLs = options.serverURLs,\n serverURLs = _options$serverURLs === void 0 ? serverURL : _options$serverURLs,\n disableCurrentUser = options.disableCurrentUser,\n production = options.production,\n realtime = options.realtime;\n if (_initialized) console.warn('Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.');\n if (!appId) throw new TypeError('appId must be a string');\n if (!appKey) throw new TypeError('appKey must be a string');\n if (\"Weapp\" !== 'NODE_JS' && masterKey) console.warn('MasterKey is not supposed to be used at client side.');\n\n if (isCNApp(appId)) {\n if (!serverURLs && isEmpty(AV._config.serverURLs)) {\n throw new TypeError(\"serverURL option is required for apps from CN region\");\n }\n }\n\n if (appId !== AV._config.applicationId) {\n // overwrite all keys when reinitializing as a new app\n AV._config.masterKey = masterKey;\n AV._config.hookKey = hookKey;\n } else {\n if (masterKey) AV._config.masterKey = masterKey;\n if (hookKey) AV._config.hookKey = hookKey;\n }\n\n AV._config.applicationId = appId;\n AV._config.applicationKey = appKey;\n\n if (!isNullOrUndefined(production)) {\n AV.setProduction(production);\n }\n\n if (typeof disableCurrentUser !== 'undefined') AV._config.disableCurrentUser = disableCurrentUser;\n var disableAppRouter = _disableAppRouter || typeof serverURLs !== 'undefined';\n\n if (!disableAppRouter) {\n AV._appRouter = new AppRouter(AV);\n }\n\n AV._setServerURLs(extend({}, getDefaultServerURLs(appId), AV._config.serverURLs, typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs), disableAppRouter);\n\n if (realtime) {\n AV._config.realtime = realtime;\n } else if (AV._sharedConfig.liveQueryRealtime) {\n var _AV$_config$serverURL = AV._config.serverURLs,\n api = _AV$_config$serverURL.api,\n rtm = _AV$_config$serverURL.rtm;\n AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({\n appId: appId,\n appKey: appKey,\n server: {\n api: api,\n RTMRouter: rtm\n }\n });\n }\n\n _initialized = true;\n}; // If we're running in node.js, allow using the master key.\n\n\nif (false) {\n AV.Cloud = AV.Cloud || {};\n /**\n * Switches the LeanCloud SDK to using the Master key. The Master key grants\n * priveleged access to the data in LeanCloud and can be used to bypass ACLs and\n * other restrictions that are applied to the client SDKs.\n * <p><strong><em>Available in Cloud Code and Node.js only.</em></strong>\n * </p>\n */\n\n AV.Cloud.useMasterKey = function () {\n AV._config.useMasterKey = true;\n };\n}\n/**\n * Call this method to set production environment variable.\n * @function AV.setProduction\n * @param {Boolean} production True is production environment,and\n * it's true by default.\n */\n\n\nAV.setProduction = function (production) {\n if (!isNullOrUndefined(production)) {\n AV._config.production = production ? 1 : 0;\n } else {\n // change to default value\n AV._config.production = null;\n }\n};\n\nAV._setServerURLs = function (urls) {\n var disableAppRouter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (typeof urls !== 'string') {\n extend(AV._config.serverURLs, urls);\n } else {\n AV._config.serverURLs = fillServerURLs(urls);\n }\n\n if (disableAppRouter) {\n if (AV._appRouter) {\n AV._appRouter.disable();\n } else {\n _disableAppRouter = true;\n }\n }\n};\n/**\n * Set server URLs for services.\n * @function AV.setServerURL\n * @since 4.3.0\n * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services.\n * You can also set them when initializing SDK with `options.serverURL`\n */\n\n\nAV.setServerURL = function (urls) {\n return AV._setServerURLs(urls);\n};\n\nAV.setServerURLs = AV.setServerURL;\n\nAV.keepErrorRawMessage = function (value) {\n AV._sharedConfig.keepErrorRawMessage = value;\n};\n/**\n * Set a deadline for requests to complete.\n * Note that file upload requests are not affected.\n * @function AV.setRequestTimeout\n * @since 3.6.0\n * @param {number} ms\n */\n\n\nAV.setRequestTimeout = function (ms) {\n AV._config.requestTimeout = ms;\n}; // backword compatible\n\n\nAV.initialize = AV.init;\n\nvar defineConfig = function defineConfig(property) {\n return (0, _defineProperty.default)(AV, property, {\n get: function get() {\n return AV._config[property];\n },\n set: function set(value) {\n AV._config[property] = value;\n }\n });\n};\n\n['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(defineConfig);\n\n/***/ }),\n/* 420 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(421);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n/***/ }),\n/* 421 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(422);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n/***/ }),\n/* 422 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar isArray = __webpack_require__(90);\nvar isConstructor = __webpack_require__(109);\nvar isObject = __webpack_require__(11);\nvar toAbsoluteIndex = __webpack_require__(125);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar toIndexedObject = __webpack_require__(32);\nvar createProperty = __webpack_require__(91);\nvar wellKnownSymbol = __webpack_require__(9);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(114);\nvar un$Slice = __webpack_require__(110);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n/* 423 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(424);\nvar path = __webpack_require__(5);\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n/***/ }),\n/* 424 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(14);\nvar defineProperty = __webpack_require__(23).f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n\n\n/***/ }),\n/* 425 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ajax = __webpack_require__(116);\n\nvar Cache = __webpack_require__(237);\n\nfunction AppRouter(AV) {\n var _this = this;\n\n this.AV = AV;\n this.lockedUntil = 0;\n Cache.getAsync('serverURLs').then(function (data) {\n if (_this.disabled) return;\n if (!data) return _this.lock(0);\n var serverURLs = data.serverURLs,\n lockedUntil = data.lockedUntil;\n\n _this.AV._setServerURLs(serverURLs, false);\n\n _this.lockedUntil = lockedUntil;\n }).catch(function () {\n return _this.lock(0);\n });\n}\n\nAppRouter.prototype.disable = function disable() {\n this.disabled = true;\n};\n\nAppRouter.prototype.lock = function lock(ttl) {\n this.lockedUntil = Date.now() + ttl;\n};\n\nAppRouter.prototype.refresh = function refresh() {\n var _this2 = this;\n\n if (this.disabled) return;\n if (Date.now() < this.lockedUntil) return;\n this.lock(10);\n var url = 'https://app-router.com/2/route';\n return ajax({\n method: 'get',\n url: url,\n query: {\n appId: this.AV.applicationId\n }\n }).then(function (servers) {\n if (_this2.disabled) return;\n var ttl = servers.ttl;\n if (!ttl) throw new Error('missing ttl');\n ttl = ttl * 1000;\n var protocal = 'https://';\n var serverURLs = {\n push: protocal + servers.push_server,\n stats: protocal + servers.stats_server,\n engine: protocal + servers.engine_server,\n api: protocal + servers.api_server\n };\n\n _this2.AV._setServerURLs(serverURLs, false);\n\n _this2.lock(ttl);\n\n return Cache.setAsync('serverURLs', {\n serverURLs: serverURLs,\n lockedUntil: _this2.lockedUntil\n }, ttl);\n }).catch(function (error) {\n // bypass all errors\n console.warn(\"refresh server URLs failed: \".concat(error.message));\n\n _this2.lock(600);\n });\n};\n\nmodule.exports = AppRouter;\n\n/***/ }),\n/* 426 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(427);\n\n\n/***/ }),\n/* 427 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(428);\n__webpack_require__(451);\n__webpack_require__(452);\n__webpack_require__(453);\n__webpack_require__(454);\n__webpack_require__(455);\n// TODO: Remove from `core-js@4`\n__webpack_require__(456);\n__webpack_require__(457);\n__webpack_require__(458);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 428 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(243);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 429 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(228);\n__webpack_require__(53);\n__webpack_require__(244);\n__webpack_require__(435);\n__webpack_require__(436);\n__webpack_require__(437);\n__webpack_require__(438);\n__webpack_require__(248);\n__webpack_require__(439);\n__webpack_require__(440);\n__webpack_require__(441);\n__webpack_require__(442);\n__webpack_require__(443);\n__webpack_require__(444);\n__webpack_require__(445);\n__webpack_require__(446);\n__webpack_require__(447);\n__webpack_require__(448);\n__webpack_require__(449);\n__webpack_require__(450);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Symbol;\n\n\n/***/ }),\n/* 430 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar global = __webpack_require__(7);\nvar call = __webpack_require__(15);\nvar uncurryThis = __webpack_require__(4);\nvar IS_PURE = __webpack_require__(33);\nvar DESCRIPTORS = __webpack_require__(14);\nvar NATIVE_SYMBOL = __webpack_require__(64);\nvar fails = __webpack_require__(2);\nvar hasOwn = __webpack_require__(13);\nvar isPrototypeOf = __webpack_require__(19);\nvar anObject = __webpack_require__(20);\nvar toIndexedObject = __webpack_require__(32);\nvar toPropertyKey = __webpack_require__(96);\nvar $toString = __webpack_require__(81);\nvar createPropertyDescriptor = __webpack_require__(47);\nvar nativeObjectCreate = __webpack_require__(49);\nvar objectKeys = __webpack_require__(105);\nvar getOwnPropertyNamesModule = __webpack_require__(103);\nvar getOwnPropertyNamesExternal = __webpack_require__(245);\nvar getOwnPropertySymbolsModule = __webpack_require__(104);\nvar getOwnPropertyDescriptorModule = __webpack_require__(62);\nvar definePropertyModule = __webpack_require__(23);\nvar definePropertiesModule = __webpack_require__(128);\nvar propertyIsEnumerableModule = __webpack_require__(120);\nvar defineBuiltIn = __webpack_require__(44);\nvar shared = __webpack_require__(79);\nvar sharedKey = __webpack_require__(101);\nvar hiddenKeys = __webpack_require__(80);\nvar uid = __webpack_require__(99);\nvar wellKnownSymbol = __webpack_require__(9);\nvar wrappedWellKnownSymbolModule = __webpack_require__(148);\nvar defineWellKnownSymbol = __webpack_require__(10);\nvar defineSymbolToPrimitive = __webpack_require__(246);\nvar setToStringTag = __webpack_require__(52);\nvar InternalStateModule = __webpack_require__(43);\nvar $forEach = __webpack_require__(70).forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n/***/ }),\n/* 431 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toAbsoluteIndex = __webpack_require__(125);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar createProperty = __webpack_require__(91);\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n/***/ }),\n/* 432 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(18);\nvar hasOwn = __webpack_require__(13);\nvar toString = __webpack_require__(81);\nvar shared = __webpack_require__(79);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(247);\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n\n\n/***/ }),\n/* 433 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar hasOwn = __webpack_require__(13);\nvar isSymbol = __webpack_require__(97);\nvar tryToString = __webpack_require__(78);\nvar shared = __webpack_require__(79);\nvar NATIVE_SYMBOL_REGISTRY = __webpack_require__(247);\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n\n\n/***/ }),\n/* 434 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar NATIVE_SYMBOL = __webpack_require__(64);\nvar fails = __webpack_require__(2);\nvar getOwnPropertySymbolsModule = __webpack_require__(104);\nvar toObject = __webpack_require__(34);\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n\n\n/***/ }),\n/* 435 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n/***/ }),\n/* 436 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 437 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n/***/ }),\n/* 438 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n/***/ }),\n/* 439 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n/***/ }),\n/* 440 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n/***/ }),\n/* 441 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n/***/ }),\n/* 442 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n/***/ }),\n/* 443 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n/***/ }),\n/* 444 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n/***/ }),\n/* 445 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\nvar defineSymbolToPrimitive = __webpack_require__(246);\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n/***/ }),\n/* 446 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(18);\nvar defineWellKnownSymbol = __webpack_require__(10);\nvar setToStringTag = __webpack_require__(52);\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n/***/ }),\n/* 447 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n/***/ }),\n/* 448 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(7);\nvar setToStringTag = __webpack_require__(52);\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n/***/ }),\n/* 449 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 450 */\n/***/ (function(module, exports) {\n\n// empty\n\n\n/***/ }),\n/* 451 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n\n/***/ }),\n/* 452 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n\n/***/ }),\n/* 453 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n/***/ }),\n/* 454 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n/***/ }),\n/* 455 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n/***/ }),\n/* 456 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n/***/ }),\n/* 457 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(10);\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n/***/ }),\n/* 458 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = __webpack_require__(10);\n\ndefineWellKnownSymbol('replaceAll');\n\n\n/***/ }),\n/* 459 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(460);\n\n/***/ }),\n/* 460 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(461);\n\n\n/***/ }),\n/* 461 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(462);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 462 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(249);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 463 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(53);\n__webpack_require__(55);\n__webpack_require__(248);\nvar WrappedWellKnownSymbolModule = __webpack_require__(148);\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n/***/ }),\n/* 464 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(465);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 465 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(466);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n/***/ }),\n/* 466 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(467);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n/***/ }),\n/* 467 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $filter = __webpack_require__(70).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(114);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 468 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\nvar _keys = _interopRequireDefault(__webpack_require__(59));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _ = __webpack_require__(3);\n\nmodule.exports = function (AV) {\n var eventSplitter = /\\s+/;\n var slice = (0, _slice.default)(Array.prototype);\n /**\n * @class\n *\n * <p>AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.</p>\n *\n * <p>A module that can be mixed in to any object in order to provide\n * it with custom events. You may bind callback functions to an event\n * with `on`, or remove these functions with `off`.\n * Triggering an event fires all callbacks in the order that `on` was\n * called.\n *\n * @private\n * @example\n * var object = {};\n * _.extend(object, AV.Events);\n * object.on('expand', function(){ alert('expanded'); });\n * object.trigger('expand');</pre></p>\n *\n */\n\n AV.Events = {\n /**\n * Bind one or more space separated events, `events`, to a `callback`\n * function. Passing `\"all\"` will bind the callback to all events fired.\n */\n on: function on(events, callback, context) {\n var calls, event, node, tail, list;\n\n if (!callback) {\n return this;\n }\n\n events = events.split(eventSplitter);\n calls = this._callbacks || (this._callbacks = {}); // Create an immutable callback list, allowing traversal during\n // modification. The tail is an empty object that will always be used\n // as the next node.\n\n event = events.shift();\n\n while (event) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = {\n tail: tail,\n next: list ? list.next : node\n };\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Remove one or many callbacks. If `context` is null, removes all callbacks\n * with that function. If `callback` is null, removes all callbacks for the\n * event. If `events` is null, removes all bound callbacks for all events.\n */\n off: function off(events, callback, context) {\n var event, calls, node, tail, cb, ctx; // No events, or removing *all* events.\n\n if (!(calls = this._callbacks)) {\n return;\n }\n\n if (!(events || callback || context)) {\n delete this._callbacks;\n return this;\n } // Loop through the listed events and contexts, splicing them out of the\n // linked list of callbacks if appropriate.\n\n\n events = events ? events.split(eventSplitter) : (0, _keys.default)(_).call(_, calls);\n event = events.shift();\n\n while (event) {\n node = calls[event];\n delete calls[event];\n\n if (!node || !(callback || context)) {\n continue;\n } // Create a new list, omitting the indicated callbacks.\n\n\n tail = node.tail;\n node = node.next;\n\n while (node !== tail) {\n cb = node.callback;\n ctx = node.context;\n\n if (callback && cb !== callback || context && ctx !== context) {\n this.on(event, cb, ctx);\n }\n\n node = node.next;\n }\n\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Trigger one or many events, firing all bound callbacks. Callbacks are\n * passed the same arguments as `trigger` is, apart from the event name\n * (unless you're listening on `\"all\"`, which will cause your callback to\n * receive the true name of the event as the first argument).\n */\n trigger: function trigger(events) {\n var event, node, calls, tail, args, all, rest;\n\n if (!(calls = this._callbacks)) {\n return this;\n }\n\n all = calls.all;\n events = events.split(eventSplitter);\n rest = slice.call(arguments, 1); // For each event, walk through the linked list of callbacks twice,\n // first to trigger the event, then to trigger any `\"all\"` callbacks.\n\n event = events.shift();\n\n while (event) {\n node = calls[event];\n\n if (node) {\n tail = node.tail;\n\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n\n node = all;\n\n if (node) {\n var _context;\n\n tail = node.tail;\n args = (0, _concat.default)(_context = [event]).call(_context, rest);\n\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n\n event = events.shift();\n }\n\n return this;\n }\n };\n /**\n * @function\n */\n\n AV.Events.bind = AV.Events.on;\n /**\n * @function\n */\n\n AV.Events.unbind = AV.Events.off;\n};\n\n/***/ }),\n/* 469 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n/*global navigator: false */\n\n\nmodule.exports = function (AV) {\n /**\n * Creates a new GeoPoint with any of the following forms:<br>\n * @example\n * new GeoPoint(otherGeoPoint)\n * new GeoPoint(30, 30)\n * new GeoPoint([30, 30])\n * new GeoPoint({latitude: 30, longitude: 30})\n * new GeoPoint() // defaults to (0, 0)\n * @class\n *\n * <p>Represents a latitude / longitude point that may be associated\n * with a key in a AVObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.</p>\n *\n * <p>Only one key in a class may contain a GeoPoint.</p>\n *\n * <p>Example:<pre>\n * var point = new AV.GeoPoint(30.0, -20.0);\n * var object = new AV.Object(\"PlaceObject\");\n * object.set(\"location\", point);\n * object.save();</pre></p>\n */\n AV.GeoPoint = function (arg1, arg2) {\n if (_.isArray(arg1)) {\n AV.GeoPoint._validate(arg1[0], arg1[1]);\n\n this.latitude = arg1[0];\n this.longitude = arg1[1];\n } else if (_.isObject(arg1)) {\n AV.GeoPoint._validate(arg1.latitude, arg1.longitude);\n\n this.latitude = arg1.latitude;\n this.longitude = arg1.longitude;\n } else if (_.isNumber(arg1) && _.isNumber(arg2)) {\n AV.GeoPoint._validate(arg1, arg2);\n\n this.latitude = arg1;\n this.longitude = arg2;\n } else {\n this.latitude = 0;\n this.longitude = 0;\n } // Add properties so that anyone using Webkit or Mozilla will get an error\n // if they try to set values that are out of bounds.\n\n\n var self = this;\n\n if (this.__defineGetter__ && this.__defineSetter__) {\n // Use _latitude and _longitude to actually store the values, and add\n // getters and setters for latitude and longitude.\n this._latitude = this.latitude;\n this._longitude = this.longitude;\n\n this.__defineGetter__('latitude', function () {\n return self._latitude;\n });\n\n this.__defineGetter__('longitude', function () {\n return self._longitude;\n });\n\n this.__defineSetter__('latitude', function (val) {\n AV.GeoPoint._validate(val, self.longitude);\n\n self._latitude = val;\n });\n\n this.__defineSetter__('longitude', function (val) {\n AV.GeoPoint._validate(self.latitude, val);\n\n self._longitude = val;\n });\n }\n };\n /**\n * @lends AV.GeoPoint.prototype\n * @property {float} latitude North-south portion of the coordinate, in range\n * [-90, 90]. Throws an exception if set out of range in a modern browser.\n * @property {float} longitude East-west portion of the coordinate, in range\n * [-180, 180]. Throws if set out of range in a modern browser.\n */\n\n /**\n * Throws an exception if the given lat-long is out of bounds.\n * @private\n */\n\n\n AV.GeoPoint._validate = function (latitude, longitude) {\n if (latitude < -90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.');\n }\n\n if (latitude > 90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');\n }\n\n if (longitude < -180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');\n }\n\n if (longitude > 180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');\n }\n };\n /**\n * Creates a GeoPoint with the user's current location, if available.\n * @return {Promise.<AV.GeoPoint>}\n */\n\n\n AV.GeoPoint.current = function () {\n return new _promise.default(function (resolve, reject) {\n navigator.geolocation.getCurrentPosition(function (location) {\n resolve(new AV.GeoPoint({\n latitude: location.coords.latitude,\n longitude: location.coords.longitude\n }));\n }, reject);\n });\n };\n\n _.extend(AV.GeoPoint.prototype,\n /** @lends AV.GeoPoint.prototype */\n {\n /**\n * Returns a JSON representation of the GeoPoint, suitable for AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n AV.GeoPoint._validate(this.latitude, this.longitude);\n\n return {\n __type: 'GeoPoint',\n latitude: this.latitude,\n longitude: this.longitude\n };\n },\n\n /**\n * Returns the distance from this GeoPoint to another in radians.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n radiansTo: function radiansTo(point) {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var deltaLat = lat1rad - lat2rad;\n var deltaLong = long1rad - long2rad;\n var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);\n var sinDeltaLongDiv2 = Math.sin(deltaLong / 2); // Square of half the straight line chord distance between both points.\n\n var a = sinDeltaLatDiv2 * sinDeltaLatDiv2 + Math.cos(lat1rad) * Math.cos(lat2rad) * sinDeltaLongDiv2 * sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n },\n\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n kilometersTo: function kilometersTo(point) {\n return this.radiansTo(point) * 6371.0;\n },\n\n /**\n * Returns the distance from this GeoPoint to another in miles.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n milesTo: function milesTo(point) {\n return this.radiansTo(point) * 3958.8;\n }\n });\n};\n\n/***/ }),\n/* 470 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(3);\n\nmodule.exports = function (AV) {\n var PUBLIC_KEY = '*';\n /**\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a AV.User, the ACL will have read and write\n * permission for only that user.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see AV.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>AV.Object</code> to restrict access to only a subset of users\n * of your application.</p>\n */\n\n AV.ACL = function (arg1) {\n var self = this;\n self.permissionsById = {};\n\n if (_.isObject(arg1)) {\n if (arg1 instanceof AV.User) {\n self.setReadAccess(arg1, true);\n self.setWriteAccess(arg1, true);\n } else {\n if (_.isFunction(arg1)) {\n throw new Error('AV.ACL() called with a function. Did you forget ()?');\n }\n\n AV._objectEach(arg1, function (accessList, userId) {\n if (!_.isString(userId)) {\n throw new Error('Tried to create an ACL with an invalid userId.');\n }\n\n self.permissionsById[userId] = {};\n\n AV._objectEach(accessList, function (allowed, permission) {\n if (permission !== 'read' && permission !== 'write') {\n throw new Error('Tried to create an ACL with an invalid permission type.');\n }\n\n if (!_.isBoolean(allowed)) {\n throw new Error('Tried to create an ACL with an invalid permission value.');\n }\n\n self.permissionsById[userId][permission] = allowed;\n });\n });\n }\n }\n };\n /**\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n\n\n AV.ACL.prototype.toJSON = function () {\n return _.clone(this.permissionsById);\n };\n\n AV.ACL.prototype._setAccess = function (accessType, userId, allowed) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n\n if (!_.isString(userId)) {\n throw new Error('userId must be a string.');\n }\n\n if (!_.isBoolean(allowed)) {\n throw new Error('allowed must be either true or false.');\n }\n\n var permissions = this.permissionsById[userId];\n\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action needed.\n return;\n } else {\n permissions = {};\n this.permissionsById[userId] = permissions;\n }\n }\n\n if (allowed) {\n this.permissionsById[userId][accessType] = true;\n } else {\n delete permissions[accessType];\n\n if (_.isEmpty(permissions)) {\n delete this.permissionsById[userId];\n }\n }\n };\n\n AV.ACL.prototype._getAccess = function (accessType, userId) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n\n var permissions = this.permissionsById[userId];\n\n if (!permissions) {\n return false;\n }\n\n return permissions[accessType] ? true : false;\n };\n /**\n * Set whether the given user is allowed to read this object.\n * @param userId An instance of AV.User or its objectId.\n * @param {Boolean} allowed Whether that user should have read access.\n */\n\n\n AV.ACL.prototype.setReadAccess = function (userId, allowed) {\n this._setAccess('read', userId, allowed);\n };\n /**\n * Get whether the given user id is *explicitly* allowed to read this object.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getReadAccess = function (userId) {\n return this._getAccess('read', userId);\n };\n /**\n * Set whether the given user id is allowed to write this object.\n * @param userId An instance of AV.User or its objectId, or a AV.Role..\n * @param {Boolean} allowed Whether that user should have write access.\n */\n\n\n AV.ACL.prototype.setWriteAccess = function (userId, allowed) {\n this._setAccess('write', userId, allowed);\n };\n /**\n * Get whether the given user id is *explicitly* allowed to write this object.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getWriteAccess = function (userId) {\n return this._getAccess('write', userId);\n };\n /**\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n\n\n AV.ACL.prototype.setPublicReadAccess = function (allowed) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n };\n /**\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getPublicReadAccess = function () {\n return this.getReadAccess(PUBLIC_KEY);\n };\n /**\n * Set whether the public is allowed to write this object.\n * @param {Boolean} allowed\n */\n\n\n AV.ACL.prototype.setPublicWriteAccess = function (allowed) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n };\n /**\n * Get whether the public is allowed to write this object.\n * @return {Boolean}\n */\n\n\n AV.ACL.prototype.getPublicWriteAccess = function () {\n return this.getWriteAccess(PUBLIC_KEY);\n };\n /**\n * Get whether users belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n\n\n AV.ACL.prototype.getRoleReadAccess = function (role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (_.isString(role)) {\n return this.getReadAccess('role:' + role);\n }\n\n throw new Error('role must be a AV.Role or a String');\n };\n /**\n * Get whether users belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n\n\n AV.ACL.prototype.getRoleWriteAccess = function (role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (_.isString(role)) {\n return this.getWriteAccess('role:' + role);\n }\n\n throw new Error('role must be a AV.Role or a String');\n };\n /**\n * Set whether users belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n\n\n AV.ACL.prototype.setRoleReadAccess = function (role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (_.isString(role)) {\n this.setReadAccess('role:' + role, allowed);\n return;\n }\n\n throw new Error('role must be a AV.Role or a String');\n };\n /**\n * Set whether users belonging to the given role are allowed\n * to write this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n\n\n AV.ACL.prototype.setRoleWriteAccess = function (role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n\n if (_.isString(role)) {\n this.setWriteAccess('role:' + role, allowed);\n return;\n }\n\n throw new Error('role must be a AV.Role or a String');\n };\n};\n\n/***/ }),\n/* 471 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _find = _interopRequireDefault(__webpack_require__(93));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _ = __webpack_require__(3);\n\nmodule.exports = function (AV) {\n /**\n * @private\n * @class\n * A AV.Op is an atomic operation that can be applied to a field in a\n * AV.Object. For example, calling <code>object.set(\"foo\", \"bar\")</code>\n * is an example of a AV.Op.Set. Calling <code>object.unset(\"foo\")</code>\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of <code>object.save()</code> operations.\n * Instances of AV.Op should be immutable.\n *\n * You should not create subclasses of AV.Op or instantiate AV.Op\n * directly.\n */\n AV.Op = function () {\n this._initialize.apply(this, arguments);\n };\n\n _.extend(AV.Op.prototype,\n /** @lends AV.Op.prototype */\n {\n _initialize: function _initialize() {}\n });\n\n _.extend(AV.Op, {\n /**\n * To create a new Op, call AV.Op._extend();\n * @private\n */\n _extend: AV._extend,\n // A map of __op string to decoder function.\n _opDecoderMap: {},\n\n /**\n * Registers a function to convert a json object with an __op field into an\n * instance of a subclass of AV.Op.\n * @private\n */\n _registerDecoder: function _registerDecoder(opName, decoder) {\n AV.Op._opDecoderMap[opName] = decoder;\n },\n\n /**\n * Converts a json object into an instance of a subclass of AV.Op.\n * @private\n */\n _decode: function _decode(json) {\n var decoder = AV.Op._opDecoderMap[json.__op];\n\n if (decoder) {\n return decoder(json);\n } else {\n return undefined;\n }\n }\n });\n /*\n * Add a handler for Batch ops.\n */\n\n\n AV.Op._registerDecoder('Batch', function (json) {\n var op = null;\n\n AV._arrayEach(json.ops, function (nextOp) {\n nextOp = AV.Op._decode(nextOp);\n op = nextOp._mergeWithPrevious(op);\n });\n\n return op;\n });\n /**\n * @private\n * @class\n * A Set operation indicates that either the field was changed using\n * AV.Object.set, or it is a mutable container that was detected as being\n * changed.\n */\n\n\n AV.Op.Set = AV.Op._extend(\n /** @lends AV.Op.Set.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n\n /**\n * Returns the new value of this field after the set.\n */\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return AV._encode(this.value());\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n _estimate: function _estimate(oldValue) {\n return this.value();\n }\n });\n /**\n * A sentinel value that is returned by AV.Op.Unset._estimate to\n * indicate the field should be deleted. Basically, if you find _UNSET as a\n * value in your object, you should remove that key.\n */\n\n AV.Op._UNSET = {};\n /**\n * @private\n * @class\n * An Unset operation indicates that this field has been deleted from the\n * object.\n */\n\n AV.Op.Unset = AV.Op._extend(\n /** @lends AV.Op.Unset.prototype */\n {\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Delete'\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n return this;\n },\n _estimate: function _estimate(oldValue) {\n return AV.Op._UNSET;\n }\n });\n\n AV.Op._registerDecoder('Delete', function (json) {\n return new AV.Op.Unset();\n });\n /**\n * @private\n * @class\n * An Increment is an atomic operation where the numeric value for the field\n * will be increased by a given amount.\n */\n\n\n AV.Op.Increment = AV.Op._extend(\n /** @lends AV.Op.Increment.prototype */\n {\n _initialize: function _initialize(amount) {\n this._amount = amount;\n },\n\n /**\n * Returns the amount to increment by.\n * @return {Number} the amount to increment by.\n */\n amount: function amount() {\n return this._amount;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Increment',\n amount: this._amount\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.amount());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() + this.amount());\n } else if (previous instanceof AV.Op.Increment) {\n return new AV.Op.Increment(this.amount() + previous.amount());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return this.amount();\n }\n\n return oldValue + this.amount();\n }\n });\n\n AV.Op._registerDecoder('Increment', function (json) {\n return new AV.Op.Increment(json.amount);\n });\n /**\n * @private\n * @class\n * BitAnd is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n\n\n AV.Op.BitAnd = AV.Op._extend(\n /** @lends AV.Op.BitAnd.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitAnd',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(0);\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() & this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue & this.value();\n }\n });\n\n AV.Op._registerDecoder('BitAnd', function (json) {\n return new AV.Op.BitAnd(json.value);\n });\n /**\n * @private\n * @class\n * BitOr is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n\n\n AV.Op.BitOr = AV.Op._extend(\n /** @lends AV.Op.BitOr.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitOr',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() | this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue | this.value();\n }\n });\n\n AV.Op._registerDecoder('BitOr', function (json) {\n return new AV.Op.BitOr(json.value);\n });\n /**\n * @private\n * @class\n * BitXor is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n\n\n AV.Op.BitXor = AV.Op._extend(\n /** @lends AV.Op.BitXor.prototype */\n {\n _initialize: function _initialize(value) {\n this._value = value;\n },\n value: function value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'BitXor',\n value: this.value()\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() ^ this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n return oldValue ^ this.value();\n }\n });\n\n AV.Op._registerDecoder('BitXor', function (json) {\n return new AV.Op.BitXor(json.value);\n });\n /**\n * @private\n * @class\n * Add is an atomic operation where the given objects will be appended to the\n * array that is stored in this field.\n */\n\n\n AV.Op.Add = AV.Op._extend(\n /** @lends AV.Op.Add.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = objects;\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Add',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Add) {\n var _context;\n\n return new AV.Op.Add((0, _concat.default)(_context = previous.objects()).call(_context, this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n return (0, _concat.default)(oldValue).call(oldValue, this.objects());\n }\n }\n });\n\n AV.Op._registerDecoder('Add', function (json) {\n return new AV.Op.Add(AV._decode(json.objects));\n });\n /**\n * @private\n * @class\n * AddUnique is an atomic operation where the given items will be appended to\n * the array that is stored in this field only if they were not already\n * present in the array.\n */\n\n\n AV.Op.AddUnique = AV.Op._extend(\n /** @lends AV.Op.AddUnique.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'AddUnique',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.AddUnique) {\n return new AV.Op.AddUnique(this._estimate(previous.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n // We can't just take the _.uniq(_.union(...)) of oldValue and\n // this.objects, because the uniqueness may not apply to oldValue\n // (especially if the oldValue was set via .set())\n var newValue = _.clone(oldValue);\n\n AV._arrayEach(this.objects(), function (obj) {\n if (obj instanceof AV.Object && obj.id) {\n var matchingObj = (0, _find.default)(_).call(_, newValue, function (anObj) {\n return anObj instanceof AV.Object && anObj.id === obj.id;\n });\n\n if (!matchingObj) {\n newValue.push(obj);\n } else {\n var index = (0, _indexOf.default)(_).call(_, newValue, matchingObj);\n newValue[index] = obj;\n }\n } else if (!_.contains(newValue, obj)) {\n newValue.push(obj);\n }\n });\n\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('AddUnique', function (json) {\n return new AV.Op.AddUnique(AV._decode(json.objects));\n });\n /**\n * @private\n * @class\n * Remove is an atomic operation where the given objects will be removed from\n * the array that is stored in this field.\n */\n\n\n AV.Op.Remove = AV.Op._extend(\n /** @lends AV.Op.Remove.prototype */\n {\n _initialize: function _initialize(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be removed from the array.\n * @return {Array} The objects to be removed from the array.\n */\n objects: function objects() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __op: 'Remove',\n objects: AV._encode(this.objects())\n };\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return previous;\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Remove) {\n return new AV.Op.Remove(_.union(previous.objects(), this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue) {\n if (!oldValue) {\n return [];\n } else {\n var newValue = _.difference(oldValue, this.objects()); // If there are saved AV Objects being removed, also remove them.\n\n\n AV._arrayEach(this.objects(), function (obj) {\n if (obj instanceof AV.Object && obj.id) {\n newValue = _.reject(newValue, function (other) {\n return other instanceof AV.Object && other.id === obj.id;\n });\n }\n });\n\n return newValue;\n }\n }\n });\n\n AV.Op._registerDecoder('Remove', function (json) {\n return new AV.Op.Remove(AV._decode(json.objects));\n });\n /**\n * @private\n * @class\n * A Relation operation indicates that the field is an instance of\n * AV.Relation, and objects are being added to, or removed from, that\n * relation.\n */\n\n\n AV.Op.Relation = AV.Op._extend(\n /** @lends AV.Op.Relation.prototype */\n {\n _initialize: function _initialize(adds, removes) {\n this._targetClassName = null;\n var self = this;\n\n var pointerToId = function pointerToId(object) {\n if (object instanceof AV.Object) {\n if (!object.id) {\n throw new Error(\"You can't add an unsaved AV.Object to a relation.\");\n }\n\n if (!self._targetClassName) {\n self._targetClassName = object.className;\n }\n\n if (self._targetClassName !== object.className) {\n throw new Error('Tried to create a AV.Relation with 2 different types: ' + self._targetClassName + ' and ' + object.className + '.');\n }\n\n return object.id;\n }\n\n return object;\n };\n\n this.relationsToAdd = _.uniq((0, _map.default)(_).call(_, adds, pointerToId));\n this.relationsToRemove = _.uniq((0, _map.default)(_).call(_, removes, pointerToId));\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being added to the\n * relation.\n * @return {Array}\n */\n added: function added() {\n var self = this;\n return (0, _map.default)(_).call(_, this.relationsToAdd, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being removed from\n * the relation.\n * @return {Array}\n */\n removed: function removed() {\n var self = this;\n return (0, _map.default)(_).call(_, this.relationsToRemove, function (objectId) {\n var object = AV.Object._create(self._targetClassName);\n\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var adds = null;\n var removes = null;\n var self = this;\n\n var idToPointer = function idToPointer(id) {\n return {\n __type: 'Pointer',\n className: self._targetClassName,\n objectId: id\n };\n };\n\n var pointers = null;\n\n if (this.relationsToAdd.length > 0) {\n pointers = (0, _map.default)(_).call(_, this.relationsToAdd, idToPointer);\n adds = {\n __op: 'AddRelation',\n objects: pointers\n };\n }\n\n if (this.relationsToRemove.length > 0) {\n pointers = (0, _map.default)(_).call(_, this.relationsToRemove, idToPointer);\n removes = {\n __op: 'RemoveRelation',\n objects: pointers\n };\n }\n\n if (adds && removes) {\n return {\n __op: 'Batch',\n ops: [adds, removes]\n };\n }\n\n return adds || removes || {};\n },\n _mergeWithPrevious: function _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n throw new Error(\"You can't modify a relation after deleting it.\");\n } else if (previous instanceof AV.Op.Relation) {\n if (previous._targetClassName && previous._targetClassName !== this._targetClassName) {\n throw new Error('Related object must be of class ' + previous._targetClassName + ', but ' + this._targetClassName + ' was passed in.');\n }\n\n var newAdd = _.union(_.difference(previous.relationsToAdd, this.relationsToRemove), this.relationsToAdd);\n\n var newRemove = _.union(_.difference(previous.relationsToRemove, this.relationsToAdd), this.relationsToRemove);\n\n var newRelation = new AV.Op.Relation(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n _estimate: function _estimate(oldValue, object, key) {\n if (!oldValue) {\n var relation = new AV.Relation(object, key);\n relation.targetClassName = this._targetClassName;\n } else if (oldValue instanceof AV.Relation) {\n if (this._targetClassName) {\n if (oldValue.targetClassName) {\n if (oldValue.targetClassName !== this._targetClassName) {\n throw new Error('Related object must be a ' + oldValue.targetClassName + ', but a ' + this._targetClassName + ' was passed in.');\n }\n } else {\n oldValue.targetClassName = this._targetClassName;\n }\n }\n\n return oldValue;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n }\n });\n\n AV.Op._registerDecoder('AddRelation', function (json) {\n return new AV.Op.Relation(AV._decode(json.objects), []);\n });\n\n AV.Op._registerDecoder('RemoveRelation', function (json) {\n return new AV.Op.Relation([], AV._decode(json.objects));\n });\n};\n\n/***/ }),\n/* 472 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(473);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 473 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(474);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n\n\n/***/ }),\n/* 474 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(475);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').find;\n\n\n/***/ }),\n/* 475 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $find = __webpack_require__(70).find;\nvar addToUnscopables = __webpack_require__(169);\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n/***/ }),\n/* 476 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(3);\n\nmodule.exports = function (AV) {\n /**\n * Creates a new Relation for the given parent object and key. This\n * constructor should rarely be used directly, but rather created by\n * {@link AV.Object#relation}.\n * @param {AV.Object} parent The parent of this relation.\n * @param {String} key The key for this relation on the parent.\n * @see AV.Object#relation\n * @class\n *\n * <p>\n * A class that is used to access all of the children of a many-to-many\n * relationship. Each instance of AV.Relation is associated with a\n * particular parent object and key.\n * </p>\n */\n AV.Relation = function (parent, key) {\n if (!_.isString(key)) {\n throw new TypeError('key must be a string');\n }\n\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\n };\n /**\n * Creates a query that can be used to query the parent objects in this relation.\n * @param {String} parentClass The parent class or name.\n * @param {String} relationKey The relation field key in parent.\n * @param {AV.Object} child The child object.\n * @return {AV.Query}\n */\n\n\n AV.Relation.reverseQuery = function (parentClass, relationKey, child) {\n var query = new AV.Query(parentClass);\n query.equalTo(relationKey, child._toPointer());\n return query;\n };\n\n _.extend(AV.Relation.prototype,\n /** @lends AV.Relation.prototype */\n {\n /**\n * Makes sure that this relation has the right parent and key.\n * @private\n */\n _ensureParentAndKey: function _ensureParentAndKey(parent, key) {\n this.parent = this.parent || parent;\n this.key = this.key || key;\n\n if (this.parent !== parent) {\n throw new Error('Internal Error. Relation retrieved from two different Objects.');\n }\n\n if (this.key !== key) {\n throw new Error('Internal Error. Relation retrieved from two different keys.');\n }\n },\n\n /**\n * Adds a AV.Object or an array of AV.Objects to the relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to add.\n */\n add: function add(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation(objects, []);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Removes a AV.Object or an array of AV.Objects from this relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to remove.\n */\n remove: function remove(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation([], objects);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON: function toJSON() {\n return {\n __type: 'Relation',\n className: this.targetClassName\n };\n },\n\n /**\n * Returns a AV.Query that is limited to objects in this\n * relation.\n * @return {AV.Query}\n */\n query: function query() {\n var targetClass;\n var query;\n\n if (!this.targetClassName) {\n targetClass = AV.Object._getSubclass(this.parent.className);\n query = new AV.Query(targetClass);\n query._defaultParams.redirectClassNameForKey = this.key;\n } else {\n targetClass = AV.Object._getSubclass(this.targetClassName);\n query = new AV.Query(targetClass);\n }\n\n query._addCondition('$relatedTo', 'object', this.parent._toPointer());\n\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n }\n });\n};\n\n/***/ }),\n/* 477 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n\nvar cos = __webpack_require__(478);\n\nvar qiniu = __webpack_require__(479);\n\nvar s3 = __webpack_require__(525);\n\nvar AVError = __webpack_require__(46);\n\nvar _require = __webpack_require__(27),\n request = _require.request,\n AVRequest = _require._request;\n\nvar _require2 = __webpack_require__(30),\n tap = _require2.tap,\n transformFetchOptions = _require2.transformFetchOptions;\n\nvar debug = __webpack_require__(60)('leancloud:file');\n\nvar parseBase64 = __webpack_require__(529);\n\nmodule.exports = function (AV) {\n // port from browserify path module\n // since react-native packager won't shim node modules.\n var extname = function extname(path) {\n if (!_.isString(path)) return '';\n return path.match(/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/)[4];\n };\n\n var b64Digit = function b64Digit(number) {\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n\n if (number === 62) {\n return '+';\n }\n\n if (number === 63) {\n return '/';\n }\n\n throw new Error('Tried to encode large digit ' + number + ' in base64.');\n };\n\n var encodeBase64 = function encodeBase64(array) {\n var chunks = [];\n chunks.length = Math.ceil(array.length / 3);\n\n _.times(chunks.length, function (i) {\n var b1 = array[i * 3];\n var b2 = array[i * 3 + 1] || 0;\n var b3 = array[i * 3 + 2] || 0;\n var has2 = i * 3 + 1 < array.length;\n var has3 = i * 3 + 2 < array.length;\n chunks[i] = [b64Digit(b1 >> 2 & 0x3f), b64Digit(b1 << 4 & 0x30 | b2 >> 4 & 0x0f), has2 ? b64Digit(b2 << 2 & 0x3c | b3 >> 6 & 0x03) : '=', has3 ? b64Digit(b3 & 0x3f) : '='].join('');\n });\n\n return chunks.join('');\n };\n /**\n * An AV.File is a local representation of a file that is saved to the AV\n * cloud.\n * @param name {String} The file's name. This will change to a unique value\n * once the file has finished saving.\n * @param data {Array} The data for the file, as either:\n * 1. an Array of byte value Numbers, or\n * 2. an Object like { base64: \"...\" } with a base64-encoded String.\n * 3. a Blob(File) selected with a file upload control in a browser.\n * 4. an Object like { blob: {uri: \"...\"} } that mimics Blob\n * in some non-browser environments such as React Native.\n * 5. a Buffer in Node.js runtime.\n * 6. a Stream in Node.js runtime.\n *\n * For example:<pre>\n * var fileUploadControl = $(\"#profilePhotoFileUpload\")[0];\n * if (fileUploadControl.files.length > 0) {\n * var file = fileUploadControl.files[0];\n * var name = \"photo.jpg\";\n * var file = new AV.File(name, file);\n * file.save().then(function() {\n * // The file has been saved to AV.\n * }, function(error) {\n * // The file either could not be read, or could not be saved to AV.\n * });\n * }</pre>\n *\n * @class\n * @param [mimeType] {String} Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n */\n\n\n AV.File = function (name, data, mimeType) {\n this.attributes = {\n name: name,\n url: '',\n metaData: {},\n // 用来存储转换后要上传的 base64 String\n base64: ''\n };\n\n if (_.isString(data)) {\n throw new TypeError('Creating an AV.File from a String is not yet supported.');\n }\n\n if (_.isArray(data)) {\n this.attributes.metaData.size = data.length;\n data = {\n base64: encodeBase64(data)\n };\n }\n\n this._extName = '';\n this._data = data;\n this._uploadHeaders = {};\n\n if (data && data.blob && typeof data.blob.uri === 'string') {\n this._extName = extname(data.blob.uri);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n if (data.size) {\n this.attributes.metaData.size = data.size;\n }\n\n if (data.name) {\n this._extName = extname(data.name);\n }\n }\n\n var owner;\n\n if (data && data.owner) {\n owner = data.owner;\n } else if (!AV._config.disableCurrentUser) {\n try {\n owner = AV.User.current();\n } catch (error) {\n if ('SYNC_API_NOT_AVAILABLE' !== error.code) {\n throw error;\n }\n }\n }\n\n this.attributes.metaData.owner = owner ? owner.id : 'unknown';\n this.set('mime_type', mimeType);\n };\n /**\n * Creates a fresh AV.File object with exists url for saving to AVOS Cloud.\n * @param {String} name the file name\n * @param {String} url the file url.\n * @param {Object} [metaData] the file metadata object.\n * @param {String} [type] Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n * @return {AV.File} the file object\n */\n\n\n AV.File.withURL = function (name, url, metaData, type) {\n if (!name || !url) {\n throw new Error('Please provide file name and url');\n }\n\n var file = new AV.File(name, null, type); //copy metaData properties to file.\n\n if (metaData) {\n for (var prop in metaData) {\n if (!file.attributes.metaData[prop]) file.attributes.metaData[prop] = metaData[prop];\n }\n }\n\n file.attributes.url = url; //Mark the file is from external source.\n\n file.attributes.metaData.__source = 'external';\n file.attributes.metaData.size = 0;\n return file;\n };\n /**\n * Creates a file object with exists objectId.\n * @param {String} objectId The objectId string\n * @return {AV.File} the file object\n */\n\n\n AV.File.createWithoutData = function (objectId) {\n if (!objectId) {\n throw new TypeError('The objectId must be provided');\n }\n\n var file = new AV.File();\n file.id = objectId;\n return file;\n };\n /**\n * Request file censor.\n * @since 4.13.0\n * @param {String} objectId\n * @return {Promise.<string>}\n */\n\n\n AV.File.censor = function (objectId) {\n if (!AV._config.masterKey) {\n throw new Error('Cannot censor a file without masterKey');\n }\n\n return request({\n method: 'POST',\n path: \"/files/\".concat(objectId, \"/censor\"),\n authOptions: {\n useMasterKey: true\n }\n }).then(function (res) {\n return res.censorResult;\n });\n };\n\n _.extend(AV.File.prototype,\n /** @lends AV.File.prototype */\n {\n className: '_File',\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, seenObjects, undefined, full);\n });\n\n AV._objectEach(this._operations, function (val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n\n if (full) {\n json.__type = 'File';\n }\n\n return json;\n },\n\n /**\n * Returns a JSON version of the file with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return this._toFullJSON(seenObjects);\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [this];\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Gets a Pointer referencing this file.\n * @private\n */\n _toPointer: function _toPointer() {\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n /**\n * Returns the ACL for this file.\n * @returns {AV.ACL} An instance of AV.ACL.\n */\n getACL: function getACL() {\n return this._acl;\n },\n\n /**\n * Sets the ACL to be used for this file.\n * @param {AV.ACL} acl An instance of AV.ACL.\n */\n setACL: function setACL(acl) {\n if (!(acl instanceof AV.ACL)) {\n return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n\n this._acl = acl;\n return this;\n },\n\n /**\n * Gets the name of the file. Before save is called, this is the filename\n * given by the user. After save is called, that name gets prefixed with a\n * unique identifier.\n */\n name: function name() {\n return this.get('name');\n },\n\n /**\n * Gets the url of the file. It is only available after you save the file or\n * after you get the file from a AV.Object.\n * @return {String}\n */\n url: function url() {\n return this.get('url');\n },\n\n /**\n * Gets the attributs of the file object.\n * @param {String} The attribute name which want to get.\n * @returns {Any}\n */\n get: function get(attrName) {\n switch (attrName) {\n case 'objectId':\n return this.id;\n\n case 'url':\n case 'name':\n case 'mime_type':\n case 'metaData':\n case 'createdAt':\n case 'updatedAt':\n return this.attributes[attrName];\n\n default:\n return this.attributes.metaData[attrName];\n }\n },\n\n /**\n * Set the metaData of the file object.\n * @param {Object} Object is an key value Object for setting metaData.\n * @param {String} attr is an optional metadata key.\n * @param {Object} value is an optional metadata value.\n * @returns {String|Number|Array|Object}\n */\n set: function set() {\n var _this2 = this;\n\n var set = function set(attrName, value) {\n switch (attrName) {\n case 'name':\n case 'url':\n case 'mime_type':\n case 'base64':\n case 'metaData':\n _this2.attributes[attrName] = value;\n break;\n\n default:\n // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面\n _this2.attributes.metaData[attrName] = value;\n break;\n }\n };\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n switch (args.length) {\n case 1:\n // 传入一个 Object\n for (var k in args[0]) {\n set(k, args[0][k]);\n }\n\n break;\n\n case 2:\n set(args[0], args[1]);\n break;\n }\n\n return this;\n },\n\n /**\n * Set a header for the upload request.\n * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers\n *\n * @param {String} key header key\n * @param {String} value header value\n * @return {AV.File} this\n */\n setUploadHeader: function setUploadHeader(key, value) {\n this._uploadHeaders[key] = value;\n return this;\n },\n\n /**\n * <p>Returns the file's metadata JSON object if no arguments is given.Returns the\n * metadata value if a key is given.Set metadata value if key and value are both given.</p>\n * <p><pre>\n * var metadata = file.metaData(); //Get metadata JSON object.\n * var size = file.metaData('size'); // Get the size metadata value.\n * file.metaData('format', 'jpeg'); //set metadata attribute and value.\n *</pre></p>\n * @return {Object} The file's metadata JSON object.\n * @param {String} attr an optional metadata key.\n * @param {Object} value an optional metadata value.\n **/\n metaData: function metaData(attr, value) {\n if (attr && value) {\n this.attributes.metaData[attr] = value;\n return this;\n } else if (attr && !value) {\n return this.attributes.metaData[attr];\n } else {\n return this.attributes.metaData;\n }\n },\n\n /**\n * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。\n * @return {String} 缩略图URL\n * @param {Number} width 宽度,单位:像素\n * @param {Number} heigth 高度,单位:像素\n * @param {Number} quality 质量,1-100的数字,默认100\n * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。\n * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。\n */\n thumbnailURL: function thumbnailURL(width, height) {\n var quality = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;\n var scaleToFit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n var fmt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'png';\n var url = this.attributes.url;\n\n if (!url) {\n throw new Error('Invalid url.');\n }\n\n if (!width || !height || width <= 0 || height <= 0) {\n throw new Error('Invalid width or height value.');\n }\n\n if (quality <= 0 || quality > 100) {\n throw new Error('Invalid quality value.');\n }\n\n var mode = scaleToFit ? 2 : 1;\n return url + '?imageView/' + mode + '/w/' + width + '/h/' + height + '/q/' + quality + '/format/' + fmt;\n },\n\n /**\n * Returns the file's size.\n * @return {Number} The file's size in bytes.\n **/\n size: function size() {\n return this.metaData().size;\n },\n\n /**\n * Returns the file's owner.\n * @return {String} The file's owner id.\n */\n ownerId: function ownerId() {\n return this.metaData().owner;\n },\n\n /**\n * Destroy the file.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) {\n return _promise.default.reject(new Error('The file id does not eixst.'));\n }\n\n var request = AVRequest('files', null, this.id, 'DELETE', null, options);\n return request;\n },\n\n /**\n * Request Qiniu upload token\n * @param {string} type\n * @return {Promise} Resolved with the response\n * @private\n */\n _fileToken: function _fileToken(type, authOptions) {\n var name = this.attributes.name;\n var extName = extname(name);\n\n if (!extName && this._extName) {\n name += this._extName;\n extName = this._extName;\n }\n\n var data = {\n name: name,\n keep_file_name: authOptions.keepFileName,\n key: authOptions.key,\n ACL: this._acl,\n mime_type: type,\n metaData: this.attributes.metaData\n };\n return AVRequest('fileTokens', null, null, 'POST', data, authOptions);\n },\n\n /**\n * @callback UploadProgressCallback\n * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes\n */\n\n /**\n * Saves the file to the AV cloud.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。\n * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。\n * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey\n * @return {Promise} Promise that is resolved when the save finishes.\n */\n save: function save() {\n var _this3 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (this.id) {\n throw new Error('File is already saved.');\n }\n\n if (!this._previousSave) {\n if (this._data) {\n var mimeType = this.get('mime_type');\n this._previousSave = this._fileToken(mimeType, options).then(function (uploadInfo) {\n if (uploadInfo.mime_type) {\n mimeType = uploadInfo.mime_type;\n\n _this3.set('mime_type', mimeType);\n }\n\n _this3._token = uploadInfo.token;\n return _promise.default.resolve().then(function () {\n var data = _this3._data;\n\n if (data && data.base64) {\n return parseBase64(data.base64, mimeType);\n }\n\n if (data && data.blob) {\n if (!data.blob.type && mimeType) {\n data.blob.type = mimeType;\n }\n\n if (!data.blob.name) {\n data.blob.name = _this3.get('name');\n }\n\n return data.blob;\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return data;\n }\n\n throw new TypeError('malformed file data');\n }).then(function (data) {\n var _options = _.extend({}, options); // filter out download progress events\n\n\n if (options.onprogress) {\n _options.onprogress = function (event) {\n if (event.direction === 'download') return;\n return options.onprogress(event);\n };\n }\n\n switch (uploadInfo.provider) {\n case 's3':\n return s3(uploadInfo, data, _this3, _options);\n\n case 'qcloud':\n return cos(uploadInfo, data, _this3, _options);\n\n case 'qiniu':\n default:\n return qiniu(uploadInfo, data, _this3, _options);\n }\n }).then(tap(function () {\n return _this3._callback(true);\n }), function (error) {\n _this3._callback(false);\n\n throw error;\n });\n });\n } else if (this.attributes.url && this.attributes.metaData.__source === 'external') {\n // external link file.\n var data = {\n name: this.attributes.name,\n ACL: this._acl,\n metaData: this.attributes.metaData,\n mime_type: this.mimeType,\n url: this.attributes.url\n };\n this._previousSave = AVRequest('files', null, null, 'post', data, options).then(function (response) {\n _this3.id = response.objectId;\n return _this3;\n });\n }\n }\n\n return this._previousSave;\n },\n _callback: function _callback(success) {\n AVRequest('fileCallback', null, null, 'post', {\n token: this._token,\n result: success\n }).catch(debug);\n delete this._token;\n delete this._data;\n },\n\n /**\n * fetch the file from server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch(fetchOptions, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved file');\n }\n\n var request = AVRequest('files', null, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n return request.then(this._finishFetch.bind(this));\n },\n _finishFetch: function _finishFetch(response) {\n var value = AV.Object.prototype.parse(response);\n value.attributes = {\n name: value.name,\n url: value.url,\n mime_type: value.mime_type,\n bucket: value.bucket\n };\n value.attributes.metaData = value.metaData || {};\n value.id = value.objectId; // clean\n\n delete value.objectId;\n delete value.metaData;\n delete value.url;\n delete value.name;\n delete value.mime_type;\n delete value.bucket;\n\n _.extend(this, value);\n\n return this;\n },\n\n /**\n * Request file censor\n * @since 4.13.0\n * @return {Promise.<string>}\n */\n censor: function censor() {\n if (!this.id) {\n throw new Error('Cannot censor an unsaved file');\n }\n\n return AV.File.censor(this.id);\n }\n });\n};\n\n/***/ }),\n/* 478 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(72),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(60)('cos');\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var url = uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token);\n var fileFormData = {\n field: 'fileContent',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n op: 'upload'\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n\n if (response.ok === false) {\n var error = new Error(response.status);\n error.response = response;\n throw error;\n }\n\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n\n throw error;\n });\n};\n\n/***/ }),\n/* 479 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _sliceInstanceProperty2 = __webpack_require__(61);\n\nvar _Array$from = __webpack_require__(252);\n\nvar _Symbol = __webpack_require__(149);\n\nvar _getIteratorMethod = __webpack_require__(254);\n\nvar _Reflect$construct = __webpack_require__(489);\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__(493));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(515));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(517));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__(522));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__(523));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context8; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context8 = Object.prototype.toString.call(o)).call(_context8, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar _require = __webpack_require__(72),\n getAdapter = _require.getAdapter;\n\nvar debug = __webpack_require__(60)('leancloud:qiniu');\n\nvar ajax = __webpack_require__(116);\n\nvar btoa = __webpack_require__(524);\n\nvar SHARD_THRESHOLD = 1024 * 1024 * 64;\nvar CHUNK_SIZE = 1024 * 1024 * 16;\n\nfunction upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n // Get the uptoken to upload files to qiniu.\n var uptoken = uploadInfo.token;\n var url = uploadInfo.upload_url || 'https://upload.qiniup.com';\n var fileFormData = {\n field: 'file',\n data: data,\n name: file.attributes.name\n };\n var options = {\n headers: file._uploadHeaders,\n data: {\n name: file.attributes.name,\n key: uploadInfo.key,\n token: uptoken\n },\n onprogress: saveOptions.onprogress\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n var upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(function (response) {\n debug(response.status, response.data);\n\n if (response.ok === false) {\n var message = response.status;\n\n if (response.data) {\n if (response.data.error) {\n message = response.data.error;\n } else {\n message = (0, _stringify.default)(response.data);\n }\n }\n\n var error = new Error(message);\n error.response = response;\n throw error;\n }\n\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n }, function (error) {\n var response = error.response;\n\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n\n throw error;\n });\n}\n\nfunction urlSafeBase64(string) {\n var base64 = btoa(unescape(encodeURIComponent(string)));\n var result = '';\n\n var _iterator = _createForOfIteratorHelper(base64),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var ch = _step.value;\n\n switch (ch) {\n case '+':\n result += '-';\n break;\n\n case '/':\n result += '_';\n break;\n\n default:\n result += ch;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return result;\n}\n\nvar ShardUploader = /*#__PURE__*/function () {\n function ShardUploader(uploadInfo, data, file, saveOptions) {\n var _context,\n _context2,\n _this = this;\n\n (0, _classCallCheck2.default)(this, ShardUploader);\n this.uploadInfo = uploadInfo;\n this.data = data;\n this.file = file;\n this.size = undefined;\n this.offset = 0;\n this.uploadedChunks = 0;\n var key = urlSafeBase64(uploadInfo.key);\n var uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';\n this.baseURL = (0, _concat.default)(_context = (0, _concat.default)(_context2 = \"\".concat(uploadURL, \"/buckets/\")).call(_context2, uploadInfo.bucket, \"/objects/\")).call(_context, key, \"/uploads\");\n this.upToken = 'UpToken ' + uploadInfo.token;\n this.uploaded = 0;\n\n if (saveOptions && saveOptions.onprogress) {\n this.onProgress = function (_ref) {\n var loaded = _ref.loaded;\n loaded += _this.uploadedChunks * CHUNK_SIZE;\n\n if (loaded <= _this.uploaded) {\n return;\n }\n\n if (_this.size) {\n saveOptions.onprogress({\n loaded: loaded,\n total: _this.size,\n percent: loaded / _this.size * 100\n });\n } else {\n saveOptions.onprogress({\n loaded: loaded\n });\n }\n\n _this.uploaded = loaded;\n };\n }\n }\n /**\n * @returns {Promise<string>}\n */\n\n\n (0, _createClass2.default)(ShardUploader, [{\n key: \"getUploadId\",\n value: function getUploadId() {\n return ajax({\n method: 'POST',\n url: this.baseURL,\n headers: {\n Authorization: this.upToken\n }\n }).then(function (res) {\n return res.uploadId;\n });\n }\n }, {\n key: \"getChunk\",\n value: function getChunk() {\n throw new Error('Not implemented');\n }\n /**\n * @param {string} uploadId\n * @param {number} partNumber\n * @param {any} data\n * @returns {Promise<{ partNumber: number, etag: string }>}\n */\n\n }, {\n key: \"uploadPart\",\n value: function uploadPart(uploadId, partNumber, data) {\n var _context3, _context4;\n\n return ajax({\n method: 'PUT',\n url: (0, _concat.default)(_context3 = (0, _concat.default)(_context4 = \"\".concat(this.baseURL, \"/\")).call(_context4, uploadId, \"/\")).call(_context3, partNumber),\n headers: {\n Authorization: this.upToken\n },\n data: data,\n onprogress: this.onProgress\n }).then(function (_ref2) {\n var etag = _ref2.etag;\n return {\n partNumber: partNumber,\n etag: etag\n };\n });\n }\n }, {\n key: \"stopUpload\",\n value: function stopUpload(uploadId) {\n var _context5;\n\n return ajax({\n method: 'DELETE',\n url: (0, _concat.default)(_context5 = \"\".concat(this.baseURL, \"/\")).call(_context5, uploadId),\n headers: {\n Authorization: this.upToken\n }\n });\n }\n }, {\n key: \"upload\",\n value: function upload() {\n var _this2 = this;\n\n var parts = [];\n return this.getUploadId().then(function (uploadId) {\n var uploadPart = function uploadPart() {\n return _promise.default.resolve(_this2.getChunk()).then(function (chunk) {\n if (!chunk) {\n return;\n }\n\n var partNumber = parts.length + 1;\n return _this2.uploadPart(uploadId, partNumber, chunk).then(function (part) {\n parts.push(part);\n _this2.uploadedChunks++;\n return uploadPart();\n });\n }).catch(function (error) {\n return _this2.stopUpload(uploadId).then(function () {\n return _promise.default.reject(error);\n });\n });\n };\n\n return uploadPart().then(function () {\n var _context6;\n\n return ajax({\n method: 'POST',\n url: (0, _concat.default)(_context6 = \"\".concat(_this2.baseURL, \"/\")).call(_context6, uploadId),\n headers: {\n Authorization: _this2.upToken\n },\n data: {\n parts: parts,\n fname: _this2.file.attributes.name,\n mimeType: _this2.file.attributes.mime_type\n }\n });\n });\n }).then(function () {\n _this2.file.attributes.url = _this2.uploadInfo.url;\n _this2.file._bucket = _this2.uploadInfo.bucket;\n _this2.file.id = _this2.uploadInfo.objectId;\n return _this2.file;\n });\n }\n }]);\n return ShardUploader;\n}();\n\nvar BlobUploader = /*#__PURE__*/function (_ShardUploader) {\n (0, _inherits2.default)(BlobUploader, _ShardUploader);\n\n var _super = _createSuper(BlobUploader);\n\n function BlobUploader(uploadInfo, data, file, saveOptions) {\n var _this3;\n\n (0, _classCallCheck2.default)(this, BlobUploader);\n _this3 = _super.call(this, uploadInfo, data, file, saveOptions);\n _this3.size = data.size;\n return _this3;\n }\n /**\n * @returns {Blob | null}\n */\n\n\n (0, _createClass2.default)(BlobUploader, [{\n key: \"getChunk\",\n value: function getChunk() {\n var _context7;\n\n if (this.offset >= this.size) {\n return null;\n }\n\n var chunk = (0, _slice.default)(_context7 = this.data).call(_context7, this.offset, this.offset + CHUNK_SIZE);\n this.offset += chunk.size;\n return chunk;\n }\n }]);\n return BlobUploader;\n}(ShardUploader);\n\nfunction isBlob(data) {\n return typeof Blob !== 'undefined' && data instanceof Blob;\n}\n\nmodule.exports = function (uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n if (isBlob(data) && data.size >= SHARD_THRESHOLD) {\n return new BlobUploader(uploadInfo, data, file, saveOptions).upload();\n }\n\n return upload(uploadInfo, data, file, saveOptions);\n};\n\n/***/ }),\n/* 480 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(55);\n__webpack_require__(481);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n/* 481 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar from = __webpack_require__(482);\nvar checkCorrectnessOfIteration = __webpack_require__(178);\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n/* 482 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(48);\nvar call = __webpack_require__(15);\nvar toObject = __webpack_require__(34);\nvar callWithSafeIterationClosing = __webpack_require__(483);\nvar isArrayIteratorMethod = __webpack_require__(166);\nvar isConstructor = __webpack_require__(109);\nvar lengthOfArrayLike = __webpack_require__(41);\nvar createProperty = __webpack_require__(91);\nvar getIterator = __webpack_require__(167);\nvar getIteratorMethod = __webpack_require__(106);\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n/* 483 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(20);\nvar iteratorClose = __webpack_require__(168);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n/* 484 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(485);\n\n\n/***/ }),\n/* 485 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(486);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 486 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(487);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 487 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(488);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 488 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(55);\nvar getIteratorMethod = __webpack_require__(106);\n\nmodule.exports = getIteratorMethod;\n\n\n/***/ }),\n/* 489 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(490);\n\n/***/ }),\n/* 490 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(491);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 491 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(492);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Reflect.construct;\n\n\n/***/ }),\n/* 492 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar getBuiltIn = __webpack_require__(18);\nvar apply = __webpack_require__(75);\nvar bind = __webpack_require__(255);\nvar aConstructor = __webpack_require__(174);\nvar anObject = __webpack_require__(20);\nvar isObject = __webpack_require__(11);\nvar create = __webpack_require__(49);\nvar fails = __webpack_require__(2);\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\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 !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(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 apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n/***/ }),\n/* 493 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$create = __webpack_require__(494);\n\nvar _Object$defineProperty = __webpack_require__(150);\n\nvar setPrototypeOf = __webpack_require__(504);\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n _Object$defineProperty(subClass, \"prototype\", {\n writable: false\n });\n\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 494 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(495);\n\n/***/ }),\n/* 495 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(496);\n\n\n/***/ }),\n/* 496 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(497);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 497 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(498);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 498 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(499);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 499 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(500);\nvar path = __webpack_require__(5);\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n\n\n/***/ }),\n/* 500 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(14);\nvar create = __webpack_require__(49);\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n\n\n/***/ }),\n/* 501 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(502);\n\n\n/***/ }),\n/* 502 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(503);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 503 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(241);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 504 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$setPrototypeOf = __webpack_require__(256);\n\nvar _bindInstanceProperty = __webpack_require__(257);\n\nfunction _setPrototypeOf(o, p) {\n var _context;\n\n module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 505 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(506);\n\n\n/***/ }),\n/* 506 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(507);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 507 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(239);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 508 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(509);\n\n\n/***/ }),\n/* 509 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(510);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 510 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(511);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 511 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(512);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 512 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(513);\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n/***/ }),\n/* 513 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(514);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n/***/ }),\n/* 514 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove from `core-js@4`\nvar $ = __webpack_require__(0);\nvar bind = __webpack_require__(255);\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n\n\n/***/ }),\n/* 515 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _typeof = __webpack_require__(73)[\"default\"];\n\nvar assertThisInitialized = __webpack_require__(516);\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$setPrototypeOf = __webpack_require__(256);\n\nvar _bindInstanceProperty = __webpack_require__(257);\n\nvar _Object$getPrototypeOf = __webpack_require__(518);\n\nfunction _getPrototypeOf(o) {\n var _context;\n\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(519);\n\n/***/ }),\n/* 519 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(520);\n\n\n/***/ }),\n/* 520 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(521);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 521 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(233);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 522 */\n/***/ (function(module, exports) {\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 523 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$defineProperty = __webpack_require__(150);\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 524 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\n// base64 character set, plus padding character (=)\nvar b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nmodule.exports = function (string) {\n var result = '';\n\n for (var i = 0; i < string.length;) {\n var a = string.charCodeAt(i++);\n var b = string.charCodeAt(i++);\n var c = string.charCodeAt(i++);\n\n if (a > 255 || b > 255 || c > 255) {\n throw new TypeError('Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.');\n }\n\n var bitmap = a << 16 | b << 8 | c;\n result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) + b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);\n } // To determine the final padding\n\n\n var rest = string.length % 3; // If there's need of padding, replace the last 'A's with equal signs\n\n return rest ? (0, _slice.default)(result).call(result, 0, rest - 3) + '==='.substring(rest) : result;\n};\n\n/***/ }),\n/* 525 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(3);\n\nvar ajax = __webpack_require__(116);\n\nmodule.exports = function upload(uploadInfo, data, file) {\n var saveOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return ajax({\n url: uploadInfo.upload_url,\n method: 'PUT',\n data: data,\n headers: _.extend({\n 'Content-Type': file.get('mime_type'),\n 'Cache-Control': 'public, max-age=31536000'\n }, file._uploadHeaders),\n onprogress: saveOptions.onprogress\n }).then(function () {\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n });\n};\n\n/***/ }),\n/* 526 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(){\r\n var crypt = __webpack_require__(527),\r\n utf8 = __webpack_require__(258).utf8,\r\n isBuffer = __webpack_require__(528),\r\n bin = __webpack_require__(258).bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n\n\n/***/ }),\n/* 527 */\n/***/ (function(module, exports) {\n\n(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n/***/ }),\n/* 528 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n/***/ }),\n/* 529 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar dataURItoBlob = function dataURItoBlob(dataURI, type) {\n var _context;\n\n var byteString; // 传入的 base64,不是 dataURL\n\n if ((0, _indexOf.default)(dataURI).call(dataURI, 'base64') < 0) {\n byteString = atob(dataURI);\n } else if ((0, _indexOf.default)(_context = dataURI.split(',')[0]).call(_context, 'base64') >= 0) {\n type = type || dataURI.split(',')[0].split(':')[1].split(';')[0];\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = unescape(dataURI.split(',')[1]);\n }\n\n var ia = new Uint8Array(byteString.length);\n\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ia], {\n type: type\n });\n};\n\nmodule.exports = dataURItoBlob;\n\n/***/ }),\n/* 530 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(531));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar _find = _interopRequireDefault(__webpack_require__(93));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _keys2 = _interopRequireDefault(__webpack_require__(59));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(92));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(151));\n\nvar _ = __webpack_require__(3);\n\nvar AVError = __webpack_require__(46);\n\nvar _require = __webpack_require__(27),\n _request = _require._request;\n\nvar _require2 = __webpack_require__(30),\n isNullOrUndefined = _require2.isNullOrUndefined,\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n setValue = _require2.setValue,\n findValue = _require2.findValue,\n isPlainObject = _require2.isPlainObject,\n continueWhile = _require2.continueWhile;\n\nvar recursiveToPointer = function recursiveToPointer(value) {\n if (_.isArray(value)) return (0, _map.default)(value).call(value, recursiveToPointer);\n if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);\n if (_.isObject(value) && value._toPointer) return value._toPointer();\n return value;\n};\n\nvar RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];\n\nvar checkReservedKey = function checkReservedKey(key) {\n if ((0, _indexOf.default)(RESERVED_KEYS).call(RESERVED_KEYS, key) !== -1) {\n throw new Error(\"key[\".concat(key, \"] is reserved\"));\n }\n};\n\nvar handleBatchResults = function handleBatchResults(results) {\n var firstError = (0, _find.default)(_).call(_, results, function (result) {\n return result instanceof Error;\n });\n\n if (!firstError) {\n return results;\n }\n\n var error = new AVError(firstError.code, firstError.message);\n error.results = results;\n throw error;\n}; // Helper function to get a value from a Backbone object as a property\n// or as a function.\n\n\nfunction getValue(object, prop) {\n if (!(object && object[prop])) {\n return null;\n }\n\n return _.isFunction(object[prop]) ? object[prop]() : object[prop];\n} // AV.Object is analogous to the Java AVObject.\n// It also implements the same interface as a Backbone model.\n\n\nmodule.exports = function (AV) {\n /**\n * Creates a new model with defined attributes. A client id (cid) is\n * automatically generated and assigned for you.\n *\n * <p>You won't normally call this method directly. It is recommended that\n * you use a subclass of <code>AV.Object</code> instead, created by calling\n * <code>extend</code>.</p>\n *\n * <p>However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:<pre>\n * var object = new AV.Object(\"ClassName\");\n * </pre>\n * That is basically equivalent to:<pre>\n * var MyClass = AV.Object.extend(\"ClassName\");\n * var object = new MyClass();\n * </pre></p>\n *\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @see AV.Object.extend\n *\n * @class\n *\n * <p>The fundamental unit of AV data, which implements the Backbone Model\n * interface.</p>\n */\n AV.Object = function (attributes, options) {\n // Allow new AV.Object(\"ClassName\") as a shortcut to _create.\n if (_.isString(attributes)) {\n return AV.Object._create.apply(this, arguments);\n }\n\n attributes = attributes || {};\n\n if (options && options.parse) {\n attributes = this.parse(attributes);\n attributes = this._mergeMagicFields(attributes);\n }\n\n var defaults = getValue(this, 'defaults');\n\n if (defaults) {\n attributes = _.extend({}, defaults, attributes);\n }\n\n if (options && options.collection) {\n this.collection = options.collection;\n }\n\n this._serverData = {}; // The last known data for this object from cloud.\n\n this._opSetQueue = [{}]; // List of sets of changes to the data.\n\n this._flags = {};\n this.attributes = {}; // The best estimate of this's current data.\n\n this._hashedJSON = {}; // Hash of values of containers at last save.\n\n this._escapedAttributes = {};\n this.cid = _.uniqueId('c');\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this.set(attributes, {\n silent: true\n });\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this._hasData = true;\n this._previousAttributes = _.clone(this.attributes);\n this.initialize.apply(this, arguments);\n };\n /**\n * @lends AV.Object.prototype\n * @property {String} id The objectId of the AV Object.\n */\n\n /**\n * Saves the given list of AV.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * @example\n * AV.Object.saveAll([object1, object2, ...]).then(function(list) {\n * // All the objects were saved.\n * }, function(error) {\n * // An error occurred while saving one of the objects.\n * });\n *\n * @param {Array} list A list of <code>AV.Object</code>.\n */\n\n\n AV.Object.saveAll = function (list, options) {\n return AV.Object._deepSaveAsync(list, null, options);\n };\n /**\n * Fetch the given list of AV.Object.\n *\n * @param {AV.Object[]} objects A list of <code>AV.Object</code>\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object[]>} The given list of <code>AV.Object</code>, updated\n */\n\n\n AV.Object.fetchAll = function (objects, options) {\n return _promise.default.resolve().then(function () {\n return _request('batch', null, null, 'POST', {\n requests: (0, _map.default)(_).call(_, objects, function (object) {\n var _context;\n\n if (!object.className) throw new Error('object must have className to fetch');\n if (!object.id) throw new Error('object must have id to fetch');\n if (object.dirty()) throw new Error('object is modified but not saved');\n return {\n method: 'GET',\n path: (0, _concat.default)(_context = \"/1.1/classes/\".concat(object.className, \"/\")).call(_context, object.id)\n };\n })\n }, options);\n }).then(function (response) {\n var results = (0, _map.default)(_).call(_, objects, function (object, i) {\n if (response[i].success) {\n var fetchedAttrs = object.parse(response[i].success);\n\n object._cleanupUnsetKeys(fetchedAttrs);\n\n object._finishFetch(fetchedAttrs);\n\n return object;\n }\n\n if (response[i].success === null) {\n return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n }\n\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n }; // Attach all inheritable methods to the AV.Object prototype.\n\n\n _.extend(AV.Object.prototype, AV.Events,\n /** @lends AV.Object.prototype */\n {\n _fetchWhenSave: false,\n\n /**\n * Initialize is an empty function by default. Override it with your own\n * initialization logic.\n */\n initialize: function initialize() {},\n\n /**\n * Set whether to enable fetchWhenSave option when updating object.\n * When set true, SDK would fetch the latest object after saving.\n * Default is false.\n *\n * @deprecated use AV.Object#save with options.fetchWhenSave instead\n * @param {boolean} enable true to enable fetchWhenSave option.\n */\n fetchWhenSave: function fetchWhenSave(enable) {\n console.warn('AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.');\n\n if (!_.isBoolean(enable)) {\n throw new Error('Expect boolean value for fetchWhenSave');\n }\n\n this._fetchWhenSave = enable;\n },\n\n /**\n * Returns the object's objectId.\n * @return {String} the objectId.\n */\n getObjectId: function getObjectId() {\n return this.id;\n },\n\n /**\n * Returns the object's createdAt attribute.\n * @return {Date}\n */\n getCreatedAt: function getCreatedAt() {\n return this.createdAt;\n },\n\n /**\n * Returns the object's updatedAt attribute.\n * @return {Date}\n */\n getUpdatedAt: function getUpdatedAt() {\n return this.updatedAt;\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function toJSON(key, holder) {\n var seenObjects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Returns a JSON version of the object with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON: function toFullJSON() {\n var seenObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n return this._toFullJSON(seenObjects);\n },\n _toFullJSON: function _toFullJSON(seenObjects) {\n var _this = this;\n\n var full = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var json = _.clone(this.attributes);\n\n if (_.isArray(seenObjects)) {\n var newSeenObjects = (0, _concat.default)(seenObjects).call(seenObjects, this);\n }\n\n AV._objectEach(json, function (val, key) {\n json[key] = AV._encode(val, newSeenObjects, undefined, full);\n });\n\n AV._objectEach(this._operations, function (val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (_.has(_this, key)) {\n var val = _this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n\n if (full) {\n json.__type = 'Object';\n if (_.isArray(seenObjects) && seenObjects.length) json.__type = 'Pointer';\n json.className = this.className;\n }\n\n return json;\n },\n\n /**\n * Updates _hashedJSON to reflect the current state of this object.\n * Adds any changed hash values to the set of pending changes.\n * @private\n */\n _refreshCache: function _refreshCache() {\n var self = this;\n\n if (self._refreshingCache) {\n return;\n }\n\n self._refreshingCache = true;\n\n AV._objectEach(this.attributes, function (value, key) {\n if (value instanceof AV.Object) {\n value._refreshCache();\n } else if (_.isObject(value)) {\n if (self._resetCacheForKey(key)) {\n self.set(key, new AV.Op.Set(value), {\n silent: true\n });\n }\n }\n });\n\n delete self._refreshingCache;\n },\n\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n * @param {String} attr An attribute name (optional).\n * @return {Boolean}\n */\n dirty: function dirty(attr) {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n if (attr) {\n return currentChanges[attr] ? true : false;\n }\n\n if (!this.id) {\n return true;\n }\n\n if ((0, _keys2.default)(_).call(_, currentChanges).length > 0) {\n return true;\n }\n\n return false;\n },\n\n /**\n * Returns the keys of the modified attribute since its last save/refresh.\n * @return {String[]}\n */\n dirtyKeys: function dirtyKeys() {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n return (0, _keys2.default)(_).call(_, currentChanges);\n },\n\n /**\n * Gets a Pointer referencing this Object.\n * @private\n */\n _toPointer: function _toPointer() {\n // if (!this.id) {\n // throw new Error(\"Can't serialize an unsaved AV.Object\");\n // }\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id\n };\n },\n\n /**\n * Gets the value of an attribute.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n switch (attr) {\n case 'objectId':\n return this.id;\n\n case 'createdAt':\n case 'updatedAt':\n return this[attr];\n\n default:\n return this.attributes[attr];\n }\n },\n\n /**\n * Gets a relation on the given class for the attribute.\n * @param {String} attr The attribute to get the relation for.\n * @return {AV.Relation}\n */\n relation: function relation(attr) {\n var value = this.get(attr);\n\n if (value) {\n if (!(value instanceof AV.Relation)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n\n value._ensureParentAndKey(this, attr);\n\n return value;\n } else {\n return new AV.Relation(this, attr);\n }\n },\n\n /**\n * Gets the HTML-escaped value of an attribute.\n */\n escape: function escape(attr) {\n var html = this._escapedAttributes[attr];\n\n if (html) {\n return html;\n }\n\n var val = this.attributes[attr];\n var escaped;\n\n if (isNullOrUndefined(val)) {\n escaped = '';\n } else {\n escaped = _.escape(val.toString());\n }\n\n this._escapedAttributes[attr] = escaped;\n return escaped;\n },\n\n /**\n * Returns <code>true</code> if the attribute contains a value that is not\n * null or undefined.\n * @param {String} attr The string name of the attribute.\n * @return {Boolean}\n */\n has: function has(attr) {\n return !isNullOrUndefined(this.attributes[attr]);\n },\n\n /**\n * Pulls \"special\" fields like objectId, createdAt, etc. out of attrs\n * and puts them on \"this\" directly. Removes them from attrs.\n * @param attrs - A dictionary with the data for this AV.Object.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n // Check for changes of magic fields.\n var model = this;\n var specialFields = ['objectId', 'createdAt', 'updatedAt'];\n\n AV._arrayEach(specialFields, function (attr) {\n if (attrs[attr]) {\n if (attr === 'objectId') {\n model.id = attrs[attr];\n } else if ((attr === 'createdAt' || attr === 'updatedAt') && !_.isDate(attrs[attr])) {\n model[attr] = AV._parseDate(attrs[attr]);\n } else {\n model[attr] = attrs[attr];\n }\n\n delete attrs[attr];\n }\n });\n\n return attrs;\n },\n\n /**\n * Returns the json to be sent to the server.\n * @private\n */\n _startSave: function _startSave() {\n this._opSetQueue.push({});\n },\n\n /**\n * Called when a save fails because of an error. Any changes that were part\n * of the save need to be merged with changes made after the save. This\n * might throw an exception is you do conflicting operations. For example,\n * if you do:\n * object.set(\"foo\", \"bar\");\n * object.set(\"invalid field name\", \"baz\");\n * object.save();\n * object.increment(\"foo\");\n * then this will throw when the save fails and the client tries to merge\n * \"bar\" with the +1.\n * @private\n */\n _cancelSave: function _cancelSave() {\n var failedChanges = _.first(this._opSetQueue);\n\n this._opSetQueue = _.rest(this._opSetQueue);\n\n var nextChanges = _.first(this._opSetQueue);\n\n AV._objectEach(failedChanges, function (op, key) {\n var op1 = failedChanges[key];\n var op2 = nextChanges[key];\n\n if (op1 && op2) {\n nextChanges[key] = op2._mergeWithPrevious(op1);\n } else if (op1) {\n nextChanges[key] = op1;\n }\n });\n\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n * @private\n */\n _finishSave: function _finishSave(serverData) {\n var _context2;\n\n // Grab a copy of any object referenced by this object. These instances\n // may have already been fetched, and we don't want to lose their data.\n // Note that doing it like this means we will unify separate copies of the\n // same object, but that's a risk we have to take.\n var fetchedObjects = {};\n\n AV._traverse(this.attributes, function (object) {\n if (object instanceof AV.Object && object.id && object._hasData) {\n fetchedObjects[object.id] = object;\n }\n });\n\n var savedChanges = _.first(this._opSetQueue);\n\n this._opSetQueue = _.rest(this._opSetQueue);\n\n this._applyOpSet(savedChanges, this._serverData);\n\n this._mergeMagicFields(serverData);\n\n var self = this;\n\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key); // Look for any objects that might have become unfetched and fix them\n // by replacing their values with the previously observed values.\n\n var fetched = AV._traverse(self._serverData[key], function (object) {\n if (object instanceof AV.Object && fetchedObjects[object.id]) {\n return fetchedObjects[object.id];\n }\n });\n\n if (fetched) {\n self._serverData[key] = fetched;\n }\n });\n\n this._rebuildAllEstimatedData();\n\n var opSetQueue = (0, _map.default)(_context2 = this._opSetQueue).call(_context2, _.clone);\n\n this._refreshCache();\n\n this._opSetQueue = opSetQueue;\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n * @private\n */\n _finishFetch: function _finishFetch(serverData, hasData) {\n // Clear out any changes the user might have made previously.\n this._opSetQueue = [{}]; // Bring in all the new server data.\n\n this._mergeMagicFields(serverData);\n\n var self = this;\n\n AV._objectEach(serverData, function (value, key) {\n self._serverData[key] = AV._decode(value, key);\n }); // Refresh the attributes.\n\n\n this._rebuildAllEstimatedData(); // Clear out the cache of mutable containers.\n\n\n this._refreshCache();\n\n this._opSetQueue = [{}];\n this._hasData = hasData;\n },\n\n /**\n * Applies the set of AV.Op in opSet to the object target.\n * @private\n */\n _applyOpSet: function _applyOpSet(opSet, target) {\n var self = this;\n\n AV._objectEach(opSet, function (change, key) {\n var _findValue = findValue(target, key),\n _findValue2 = (0, _slicedToArray2.default)(_findValue, 3),\n value = _findValue2[0],\n actualTarget = _findValue2[1],\n actualKey = _findValue2[2];\n\n setValue(target, key, change._estimate(value, self, key));\n\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n });\n },\n\n /**\n * Replaces the cached value for key with the current value.\n * Returns true if the new value is different than the old value.\n * @private\n */\n _resetCacheForKey: function _resetCacheForKey(key) {\n var value = this.attributes[key];\n\n if (_.isObject(value) && !(value instanceof AV.Object) && !(value instanceof AV.File)) {\n var json = (0, _stringify.default)(recursiveToPointer(value));\n\n if (this._hashedJSON[key] !== json) {\n var wasSet = !!this._hashedJSON[key];\n this._hashedJSON[key] = json;\n return wasSet;\n }\n }\n\n return false;\n },\n\n /**\n * Populates attributes[key] by starting with the last known data from the\n * server, and applying all of the local changes that have been made to that\n * key since then.\n * @private\n */\n _rebuildEstimatedDataForKey: function _rebuildEstimatedDataForKey(key) {\n var self = this;\n delete this.attributes[key];\n\n if (this._serverData[key]) {\n this.attributes[key] = this._serverData[key];\n }\n\n AV._arrayEach(this._opSetQueue, function (opSet) {\n var op = opSet[key];\n\n if (op) {\n var _findValue3 = findValue(self.attributes, key),\n _findValue4 = (0, _slicedToArray2.default)(_findValue3, 4),\n value = _findValue4[0],\n actualTarget = _findValue4[1],\n actualKey = _findValue4[2],\n firstKey = _findValue4[3];\n\n setValue(self.attributes, key, op._estimate(value, self, key));\n\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n\n self._resetCacheForKey(firstKey);\n }\n });\n },\n\n /**\n * Populates attributes by starting with the last known data from the\n * server, and applying all of the local changes that have been made since\n * then.\n * @private\n */\n _rebuildAllEstimatedData: function _rebuildAllEstimatedData() {\n var self = this;\n\n var previousAttributes = _.clone(this.attributes);\n\n this.attributes = _.clone(this._serverData);\n\n AV._arrayEach(this._opSetQueue, function (opSet) {\n self._applyOpSet(opSet, self.attributes);\n\n AV._objectEach(opSet, function (op, key) {\n self._resetCacheForKey(key);\n });\n }); // Trigger change events for anything that changed because of the fetch.\n\n\n AV._objectEach(previousAttributes, function (oldValue, key) {\n if (self.attributes[key] !== oldValue) {\n self.trigger('change:' + key, self, self.attributes[key], {});\n }\n });\n\n AV._objectEach(this.attributes, function (newValue, key) {\n if (!_.has(previousAttributes, key)) {\n self.trigger('change:' + key, self, newValue, {});\n }\n });\n },\n\n /**\n * Sets a hash of model attributes on the object, firing\n * <code>\"change\"</code> unless you choose to silence it.\n *\n * <p>You can call it with an object containing keys and values, or with one\n * key and value. For example:</p>\n *\n * @example\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * });\n *\n * game.set(\"currentPlayer\", player2);\n *\n * game.set(\"finished\", true);\n *\n * @param {String} key The key to set.\n * @param {Any} value The value to give it.\n * @param {Object} [options]\n * @param {Boolean} [options.silent]\n * @return {AV.Object} self if succeeded, throws if the value is not valid.\n * @see AV.Object#validate\n */\n set: function set(key, value, options) {\n var attrs;\n\n if (_.isObject(key) || isNullOrUndefined(key)) {\n attrs = _.mapObject(key, function (v, k) {\n checkReservedKey(k);\n return AV._decode(v, k);\n });\n options = value;\n } else {\n attrs = {};\n checkReservedKey(key);\n attrs[key] = AV._decode(value, key);\n } // Extract attributes and options.\n\n\n options = options || {};\n\n if (!attrs) {\n return this;\n }\n\n if (attrs instanceof AV.Object) {\n attrs = attrs.attributes;\n } // If the unset option is used, every attribute should be a Unset.\n\n\n if (options.unset) {\n AV._objectEach(attrs, function (unused_value, key) {\n attrs[key] = new AV.Op.Unset();\n });\n } // Apply all the attributes to get the estimated values.\n\n\n var dataToValidate = _.clone(attrs);\n\n var self = this;\n\n AV._objectEach(dataToValidate, function (value, key) {\n if (value instanceof AV.Op) {\n dataToValidate[key] = value._estimate(self.attributes[key], self, key);\n\n if (dataToValidate[key] === AV.Op._UNSET) {\n delete dataToValidate[key];\n }\n }\n }); // Run validation.\n\n\n this._validate(attrs, options);\n\n options.changes = {};\n var escaped = this._escapedAttributes; // Update attributes.\n\n AV._arrayEach((0, _keys2.default)(_).call(_, attrs), function (attr) {\n var val = attrs[attr]; // If this is a relation object we need to set the parent correctly,\n // since the location where it was parsed does not have access to\n // this object.\n\n if (val instanceof AV.Relation) {\n val.parent = self;\n }\n\n if (!(val instanceof AV.Op)) {\n val = new AV.Op.Set(val);\n } // See if this change will actually have any effect.\n\n\n var isRealChange = true;\n\n if (val instanceof AV.Op.Set && _.isEqual(self.attributes[attr], val.value)) {\n isRealChange = false;\n }\n\n if (isRealChange) {\n delete escaped[attr];\n\n if (options.silent) {\n self._silent[attr] = true;\n } else {\n options.changes[attr] = true;\n }\n }\n\n var currentChanges = _.last(self._opSetQueue);\n\n currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);\n\n self._rebuildEstimatedDataForKey(attr);\n\n if (isRealChange) {\n self.changed[attr] = self.attributes[attr];\n\n if (!options.silent) {\n self._pending[attr] = true;\n }\n } else {\n delete self.changed[attr];\n delete self._pending[attr];\n }\n });\n\n if (!options.silent) {\n this.change(options);\n }\n\n return this;\n },\n\n /**\n * Remove an attribute from the model, firing <code>\"change\"</code> unless\n * you choose to silence it. This is a noop if the attribute doesn't\n * exist.\n * @param key {String} The key.\n */\n unset: function unset(attr, options) {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n },\n\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param key {String} The key.\n * @param amount {Number} The amount to increment by.\n */\n increment: function increment(attr, amount) {\n if (_.isUndefined(amount) || _.isNull(amount)) {\n amount = 1;\n }\n\n return this.set(attr, new AV.Op.Increment(amount));\n },\n\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n * @param key {String} The key.\n * @param item {} The item to add.\n */\n add: function add(attr, item) {\n return this.set(attr, new AV.Op.Add(ensureArray(item)));\n },\n\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param key {String} The key.\n * @param item {} The object to add.\n */\n addUnique: function addUnique(attr, item) {\n return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));\n },\n\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param key {String} The key.\n * @param item {} The object to remove.\n */\n remove: function remove(attr, item) {\n return this.set(attr, new AV.Op.Remove(ensureArray(item)));\n },\n\n /**\n * Atomically apply a \"bit and\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitAnd: function bitAnd(attr, value) {\n return this.set(attr, new AV.Op.BitAnd(value));\n },\n\n /**\n * Atomically apply a \"bit or\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitOr: function bitOr(attr, value) {\n return this.set(attr, new AV.Op.BitOr(value));\n },\n\n /**\n * Atomically apply a \"bit xor\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitXor: function bitXor(attr, value) {\n return this.set(attr, new AV.Op.BitXor(value));\n },\n\n /**\n * Returns an instance of a subclass of AV.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of AV.Op.Increment.\n *\n * @param key {String} The key.\n * @returns {AV.Op} The operation, or undefined if none.\n */\n op: function op(attr) {\n return _.last(this._opSetQueue)[attr];\n },\n\n /**\n * Clear all attributes on the model, firing <code>\"change\"</code> unless\n * you choose to silence it.\n */\n clear: function clear(options) {\n options = options || {};\n options.unset = true;\n\n var keysToClear = _.extend(this.attributes, this._operations);\n\n return this.set(keysToClear, options);\n },\n\n /**\n * Clears any (or specific) changes to the model made since the last save.\n * @param {string|string[]} [keys] specify keys to revert.\n */\n revert: function revert(keys) {\n var lastOp = _.last(this._opSetQueue);\n\n var _keys = ensureArray(keys || (0, _keys2.default)(_).call(_, lastOp));\n\n _keys.forEach(function (key) {\n delete lastOp[key];\n });\n\n this._rebuildAllEstimatedData();\n\n return this;\n },\n\n /**\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n * @private\n */\n _getSaveJSON: function _getSaveJSON() {\n var json = _.clone(_.first(this._opSetQueue));\n\n AV._objectEach(json, function (op, key) {\n json[key] = op.toJSON();\n });\n\n return json;\n },\n\n /**\n * Returns true if this object can be serialized for saving.\n * @private\n */\n _canBeSerialized: function _canBeSerialized() {\n return AV.Object._canBeSerializedAsValue(this.attributes);\n },\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * triggering a <code>\"change\"</code> event.\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function fetch() {\n var fetchOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 ? arguments[1] : undefined;\n\n if (!this.id) {\n throw new Error('Cannot fetch unsaved object');\n }\n\n var self = this;\n\n var request = _request('classes', this.className, this.id, 'GET', transformFetchOptions(fetchOptions), options);\n\n return request.then(function (response) {\n var fetchedAttrs = self.parse(response);\n\n self._cleanupUnsetKeys(fetchedAttrs, (0, _keys2.default)(fetchOptions) ? ensureArray((0, _keys2.default)(fetchOptions)).join(',').split(',') : undefined);\n\n self._finishFetch(fetchedAttrs, true);\n\n return self;\n });\n },\n _cleanupUnsetKeys: function _cleanupUnsetKeys(fetchedAttrs) {\n var _this2 = this;\n\n var fetchedKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _keys2.default)(_).call(_, this._serverData);\n\n _.forEach(fetchedKeys, function (key) {\n if (fetchedAttrs[key] === undefined) delete _this2._serverData[key];\n });\n },\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:<pre>\n * object.save();</pre>\n * or<pre>\n * object.save(null, options);</pre>\n * or<pre>\n * object.save(attrs, options);</pre>\n * or<pre>\n * object.save(key, value, options);</pre>\n *\n * @example\n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of AVError.\n * });\n *\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded\n * @param {AV.Query} options.query Save object only when it matches the query\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n * @see AVError\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, current, options;\n\n if (_.isObject(arg1) || isNullOrUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n options = _.clone(options) || {};\n\n if (options.wait) {\n current = _.clone(this.attributes);\n }\n\n var setOptions = _.clone(options) || {};\n\n if (setOptions.wait) {\n setOptions.silent = true;\n }\n\n if (attrs) {\n this.set(attrs, setOptions);\n }\n\n var model = this;\n var unsavedChildren = [];\n var unsavedFiles = [];\n\n AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);\n\n if (unsavedChildren.length + unsavedFiles.length > 1) {\n return AV.Object._deepSaveAsync(this, model, options);\n }\n\n this._startSave();\n\n this._saving = (this._saving || 0) + 1;\n this._allPreviousSaves = this._allPreviousSaves || _promise.default.resolve();\n this._allPreviousSaves = this._allPreviousSaves.catch(function (e) {}).then(function () {\n var method = model.id ? 'PUT' : 'POST';\n\n var json = model._getSaveJSON();\n\n var query = {};\n\n if (model._fetchWhenSave || options.fetchWhenSave) {\n query['new'] = 'true';\n } // user login option\n\n\n if (options._failOnNotExist) {\n query.failOnNotExist = 'true';\n }\n\n if (options.query) {\n var queryParams;\n\n if (typeof options.query._getParams === 'function') {\n queryParams = options.query._getParams();\n\n if (queryParams) {\n query.where = queryParams.where;\n }\n }\n\n if (!query.where) {\n var error = new Error('options.query is not an AV.Query');\n throw error;\n }\n }\n\n _.extend(json, model._flags);\n\n var route = 'classes';\n var className = model.className;\n\n if (model.className === '_User' && !model.id) {\n // Special-case user sign-up.\n route = 'users';\n className = null;\n } //hook makeRequest in options.\n\n\n var makeRequest = options._makeRequest || _request;\n var requestPromise = makeRequest(route, className, model.id, method, json, options, query);\n requestPromise = requestPromise.then(function (resp) {\n var serverAttrs = model.parse(resp);\n\n if (options.wait) {\n serverAttrs = _.extend(attrs || {}, serverAttrs);\n }\n\n model._finishSave(serverAttrs);\n\n if (options.wait) {\n model.set(current, setOptions);\n }\n\n return model;\n }, function (error) {\n model._cancelSave();\n\n throw error;\n });\n return requestPromise;\n });\n return this._allPreviousSaves;\n },\n\n /**\n * Destroy this model on the server if it was already persisted.\n * Optimistically removes the model from its collection, if it has one.\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} [options.wait] wait for the server to respond\n * before removal.\n *\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n options = options || {};\n var model = this;\n\n var triggerDestroy = function triggerDestroy() {\n model.trigger('destroy', model, model.collection, options);\n };\n\n if (!this.id) {\n return triggerDestroy();\n }\n\n if (!options.wait) {\n triggerDestroy();\n }\n\n var request = _request('classes', this.className, this.id, 'DELETE', this._flags, options);\n\n return request.then(function () {\n if (options.wait) {\n triggerDestroy();\n }\n\n return model;\n });\n },\n\n /**\n * Converts a response into the hash of attributes to be set on the model.\n * @ignore\n */\n parse: function parse(resp) {\n var output = _.clone(resp);\n\n ['createdAt', 'updatedAt'].forEach(function (key) {\n if (output[key]) {\n output[key] = AV._parseDate(output[key]);\n }\n });\n\n if (output.createdAt && !output.updatedAt) {\n output.updatedAt = output.createdAt;\n }\n\n return output;\n },\n\n /**\n * Creates a new model with identical attributes to this one.\n * @return {AV.Object}\n */\n clone: function clone() {\n return new this.constructor(this.attributes);\n },\n\n /**\n * Returns true if this object has never been saved to AV.\n * @return {Boolean}\n */\n isNew: function isNew() {\n return !this.id;\n },\n\n /**\n * Call this method to manually fire a `\"change\"` event for this model and\n * a `\"change:attribute\"` event for each changed attribute.\n * Calling this will cause all objects observing the model to update.\n */\n change: function change(options) {\n options = options || {};\n var changing = this._changing;\n this._changing = true; // Silent changes become pending changes.\n\n var self = this;\n\n AV._objectEach(this._silent, function (attr) {\n self._pending[attr] = true;\n }); // Silent changes are triggered.\n\n\n var changes = _.extend({}, options.changes, this._silent);\n\n this._silent = {};\n\n AV._objectEach(changes, function (unused_value, attr) {\n self.trigger('change:' + attr, self, self.get(attr), options);\n });\n\n if (changing) {\n return this;\n } // This is to get around lint not letting us make a function in a loop.\n\n\n var deleteChanged = function deleteChanged(value, attr) {\n if (!self._pending[attr] && !self._silent[attr]) {\n delete self.changed[attr];\n }\n }; // Continue firing `\"change\"` events while there are pending changes.\n\n\n while (!_.isEmpty(this._pending)) {\n this._pending = {};\n this.trigger('change', this, options); // Pending and silent changes still remain.\n\n AV._objectEach(this.changed, deleteChanged);\n\n self._previousAttributes = _.clone(this.attributes);\n }\n\n this._changing = false;\n return this;\n },\n\n /**\n * Gets the previous value of an attribute, recorded at the time the last\n * <code>\"change\"</code> event was fired.\n * @param {String} attr Name of the attribute to get.\n */\n previous: function previous(attr) {\n if (!arguments.length || !this._previousAttributes) {\n return null;\n }\n\n return this._previousAttributes[attr];\n },\n\n /**\n * Gets all of the attributes of the model at the time of the previous\n * <code>\"change\"</code> event.\n * @return {Object}\n */\n previousAttributes: function previousAttributes() {\n return _.clone(this._previousAttributes);\n },\n\n /**\n * Checks if the model is currently in a valid state. It's only possible to\n * get into an *invalid* state if you're using silent changes.\n * @return {Boolean}\n */\n isValid: function isValid() {\n try {\n this.validate(this.attributes);\n } catch (error) {\n return false;\n }\n\n return true;\n },\n\n /**\n * You should not call this function directly unless you subclass\n * <code>AV.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should throw an Error if\n * the attrs is invalid\n *\n * @param {Object} attrs The current data to validate.\n * @see AV.Object#set\n */\n validate: function validate(attrs) {\n if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {\n throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n },\n\n /**\n * Run validation against a set of incoming attributes, returning `true`\n * if all is well. If a specific `error` callback has been passed,\n * call that instead of firing the general `\"error\"` event.\n * @private\n */\n _validate: function _validate(attrs, options) {\n if (options.silent || !this.validate) {\n return;\n }\n\n attrs = _.extend({}, this.attributes, attrs);\n this.validate(attrs);\n },\n\n /**\n * Returns the ACL for this object.\n * @returns {AV.ACL} An instance of AV.ACL.\n * @see AV.Object#get\n */\n getACL: function getACL() {\n return this.get('ACL');\n },\n\n /**\n * Sets the ACL to be used for this object.\n * @param {AV.ACL} acl An instance of AV.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {AV.Object} self\n * @see AV.Object#set\n */\n setACL: function setACL(acl, options) {\n return this.set('ACL', acl, options);\n },\n disableBeforeHook: function disableBeforeHook() {\n this.ignoreHook('beforeSave');\n this.ignoreHook('beforeUpdate');\n this.ignoreHook('beforeDelete');\n },\n disableAfterHook: function disableAfterHook() {\n this.ignoreHook('afterSave');\n this.ignoreHook('afterUpdate');\n this.ignoreHook('afterDelete');\n },\n ignoreHook: function ignoreHook(hookName) {\n if (!_.contains(['beforeSave', 'afterSave', 'beforeUpdate', 'afterUpdate', 'beforeDelete', 'afterDelete'], hookName)) {\n throw new Error('Unsupported hookName: ' + hookName);\n }\n\n if (!AV.hookKey) {\n throw new Error('ignoreHook required hookKey');\n }\n\n if (!this._flags.__ignore_hooks) {\n this._flags.__ignore_hooks = [];\n }\n\n this._flags.__ignore_hooks.push(hookName);\n }\n });\n /**\n * Creates an instance of a subclass of AV.Object for the give classname\n * and id.\n * @param {String|Function} class the className or a subclass of AV.Object.\n * @param {String} id The object id of this model.\n * @return {AV.Object} A new subclass instance of AV.Object.\n */\n\n\n AV.Object.createWithoutData = function (klass, id, hasData) {\n var _klass;\n\n if (_.isString(klass)) {\n _klass = AV.Object._getSubclass(klass);\n } else if (klass.prototype && klass.prototype instanceof AV.Object) {\n _klass = klass;\n } else {\n throw new Error('class must be a string or a subclass of AV.Object.');\n }\n\n if (!id) {\n throw new TypeError('The objectId must be provided');\n }\n\n var object = new _klass();\n object.id = id;\n object._hasData = hasData;\n return object;\n };\n /**\n * Delete objects in batch.\n * @param {AV.Object[]} objects The <code>AV.Object</code> array to be deleted.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n\n\n AV.Object.destroyAll = function (objects) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!objects || objects.length === 0) {\n return _promise.default.resolve();\n }\n\n var objectsByClassNameAndFlags = _.groupBy(objects, function (object) {\n return (0, _stringify.default)({\n className: object.className,\n flags: object._flags\n });\n });\n\n var body = {\n requests: (0, _map.default)(_).call(_, objectsByClassNameAndFlags, function (objects) {\n var _context3;\n\n var ids = (0, _map.default)(_).call(_, objects, 'id').join(',');\n return {\n method: 'DELETE',\n path: (0, _concat.default)(_context3 = \"/1.1/classes/\".concat(objects[0].className, \"/\")).call(_context3, ids),\n body: objects[0]._flags\n };\n })\n };\n return _request('batch', null, null, 'POST', body, options).then(function (response) {\n var firstError = (0, _find.default)(_).call(_, response, function (result) {\n return !result.success;\n });\n if (firstError) throw new AVError(firstError.error.code, firstError.error.error);\n return undefined;\n });\n };\n /**\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n * @private\n */\n\n\n AV.Object._getSubclass = function (className) {\n if (!_.isString(className)) {\n throw new Error('AV.Object._getSubclass requires a string argument.');\n }\n\n var ObjectClass = AV.Object._classMap[className];\n\n if (!ObjectClass) {\n ObjectClass = AV.Object.extend(className);\n AV.Object._classMap[className] = ObjectClass;\n }\n\n return ObjectClass;\n };\n /**\n * Creates an instance of a subclass of AV.Object for the given classname.\n * @private\n */\n\n\n AV.Object._create = function (className, attributes, options) {\n var ObjectClass = AV.Object._getSubclass(className);\n\n return new ObjectClass(attributes, options);\n }; // Set up a map of className to class so that we can create new instances of\n // AV Objects from JSON automatically.\n\n\n AV.Object._classMap = {};\n AV.Object._extend = AV._extend;\n /**\n * Creates a new model with defined attributes,\n * It's the same with\n * <pre>\n * new AV.Object(attributes, options);\n * </pre>\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @return {AV.Object}\n * @since v0.4.4\n * @see AV.Object\n * @see AV.Object.extend\n */\n\n AV.Object['new'] = function (attributes, options) {\n return new AV.Object(attributes, options);\n };\n /**\n * Creates a new subclass of AV.Object for the given AV class name.\n *\n * <p>Every extension of a AV class will inherit from the most recent\n * previous extension of that class. When a AV.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * @example\n * var MyClass = AV.Object.extend(\"MyClass\", {\n * // Instance properties\n * }, {\n * // Class properties\n * });\n *\n * @param {String} className The name of the AV class backing this model.\n * @param {Object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {Object} classProps Class properties to add the class returned from\n * this method.\n * @return {Class} A new subclass of AV.Object.\n */\n\n\n AV.Object.extend = function (className, protoProps, classProps) {\n // Handle the case with only two args.\n if (!_.isString(className)) {\n if (className && _.has(className, 'className')) {\n return AV.Object.extend(className.className, className, protoProps);\n } else {\n throw new Error(\"AV.Object.extend's first argument should be the className.\");\n }\n } // If someone tries to subclass \"User\", coerce it to the right type.\n\n\n if (className === 'User') {\n className = '_User';\n }\n\n var NewClassObject = null;\n\n if (_.has(AV.Object._classMap, className)) {\n var OldClassObject = AV.Object._classMap[className]; // This new subclass has been told to extend both from \"this\" and from\n // OldClassObject. This is multiple inheritance, which isn't supported.\n // For now, let's just pick one.\n\n if (protoProps || classProps) {\n NewClassObject = OldClassObject._extend(protoProps, classProps);\n } else {\n return OldClassObject;\n }\n } else {\n protoProps = protoProps || {};\n protoProps._className = className;\n NewClassObject = this._extend(protoProps, classProps);\n } // Extending a subclass should reuse the classname automatically.\n\n\n NewClassObject.extend = function (arg0) {\n var _context4;\n\n if (_.isString(arg0) || arg0 && _.has(arg0, 'className')) {\n return AV.Object.extend.apply(NewClassObject, arguments);\n }\n\n var newArguments = (0, _concat.default)(_context4 = [className]).call(_context4, _.toArray(arguments));\n return AV.Object.extend.apply(NewClassObject, newArguments);\n }; // Add the query property descriptor.\n\n\n (0, _defineProperty.default)(NewClassObject, 'query', (0, _getOwnPropertyDescriptor.default)(AV.Object, 'query'));\n\n NewClassObject['new'] = function (attributes, options) {\n return new NewClassObject(attributes, options);\n };\n\n AV.Object._classMap[className] = NewClassObject;\n return NewClassObject;\n }; // ES6 class syntax support\n\n\n (0, _defineProperty.default)(AV.Object.prototype, 'className', {\n get: function get() {\n var className = this._className || this.constructor._LCClassName || this.constructor.name; // If someone tries to subclass \"User\", coerce it to the right type.\n\n if (className === 'User') {\n return '_User';\n }\n\n return className;\n }\n });\n /**\n * Register a class.\n * If a subclass of <code>AV.Object</code> is defined with your own implement\n * rather then <code>AV.Object.extend</code>, the subclass must be registered.\n * @param {Function} klass A subclass of <code>AV.Object</code>\n * @param {String} [name] Specify the name of the class. Useful when the class might be uglified.\n * @example\n * class Person extend AV.Object {}\n * AV.Object.register(Person);\n */\n\n AV.Object.register = function (klass, name) {\n if (!(klass.prototype instanceof AV.Object)) {\n throw new Error('registered class is not a subclass of AV.Object');\n }\n\n var className = name || klass.name;\n\n if (!className.length) {\n throw new Error('registered class must be named');\n }\n\n if (name) {\n klass._LCClassName = name;\n }\n\n AV.Object._classMap[className] = klass;\n };\n /**\n * Get a new Query of the current class\n * @name query\n * @memberof AV.Object\n * @type AV.Query\n * @readonly\n * @since v3.1.0\n * @example\n * const Post = AV.Object.extend('Post');\n * Post.query.equalTo('author', 'leancloud').find().then();\n */\n\n\n (0, _defineProperty.default)(AV.Object, 'query', {\n get: function get() {\n return new AV.Query(this.prototype.className);\n }\n });\n\n AV.Object._findUnsavedChildren = function (objects, children, files) {\n AV._traverse(objects, function (object) {\n if (object instanceof AV.Object) {\n if (object.dirty()) {\n children.push(object);\n }\n\n return;\n }\n\n if (object instanceof AV.File) {\n if (!object.id) {\n files.push(object);\n }\n\n return;\n }\n });\n };\n\n AV.Object._canBeSerializedAsValue = function (object) {\n var canBeSerializedAsValue = true;\n\n if (object instanceof AV.Object || object instanceof AV.File) {\n canBeSerializedAsValue = !!object.id;\n } else if (_.isArray(object)) {\n AV._arrayEach(object, function (child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n } else if (_.isObject(object)) {\n AV._objectEach(object, function (child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n }\n\n return canBeSerializedAsValue;\n };\n\n AV.Object._deepSaveAsync = function (object, model, options) {\n var unsavedChildren = [];\n var unsavedFiles = [];\n\n AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);\n\n unsavedFiles = _.uniq(unsavedFiles);\n\n var promise = _promise.default.resolve();\n\n _.each(unsavedFiles, function (file) {\n promise = promise.then(function () {\n return file.save();\n });\n });\n\n var objects = _.uniq(unsavedChildren);\n\n var remaining = _.uniq(objects);\n\n return promise.then(function () {\n return continueWhile(function () {\n return remaining.length > 0;\n }, function () {\n // Gather up all the objects that can be saved in this batch.\n var batch = [];\n var newRemaining = [];\n\n AV._arrayEach(remaining, function (object) {\n if (object._canBeSerialized()) {\n batch.push(object);\n } else {\n newRemaining.push(object);\n }\n });\n\n remaining = newRemaining; // If we can't save any objects, there must be a circular reference.\n\n if (batch.length === 0) {\n return _promise.default.reject(new AVError(AVError.OTHER_CAUSE, 'Tried to save a batch with a cycle.'));\n } // Reserve a spot in every object's save queue.\n\n\n var readyToStart = _promise.default.resolve((0, _map.default)(_).call(_, batch, function (object) {\n return object._allPreviousSaves || _promise.default.resolve();\n })); // Save a single batch, whether previous saves succeeded or failed.\n\n\n var bathSavePromise = readyToStart.then(function () {\n return _request('batch', null, null, 'POST', {\n requests: (0, _map.default)(_).call(_, batch, function (object) {\n var method = object.id ? 'PUT' : 'POST';\n\n var json = object._getSaveJSON();\n\n _.extend(json, object._flags);\n\n var route = 'classes';\n var className = object.className;\n var path = \"/\".concat(route, \"/\").concat(className);\n\n if (object.className === '_User' && !object.id) {\n // Special-case user sign-up.\n path = '/users';\n }\n\n var path = \"/1.1\".concat(path);\n\n if (object.id) {\n path = path + '/' + object.id;\n }\n\n object._startSave();\n\n return {\n method: method,\n path: path,\n body: json,\n params: options && options.fetchWhenSave ? {\n fetchWhenSave: true\n } : undefined\n };\n })\n }, options).then(function (response) {\n var results = (0, _map.default)(_).call(_, batch, function (object, i) {\n if (response[i].success) {\n object._finishSave(object.parse(response[i].success));\n\n return object;\n }\n\n object._cancelSave();\n\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n });\n\n AV._arrayEach(batch, function (object) {\n object._allPreviousSaves = bathSavePromise;\n });\n\n return bathSavePromise;\n });\n }).then(function () {\n return object;\n });\n };\n};\n\n/***/ }),\n/* 531 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithHoles = __webpack_require__(532);\n\nvar iterableToArrayLimit = __webpack_require__(540);\n\nvar unsupportedIterableToArray = __webpack_require__(541);\n\nvar nonIterableRest = __webpack_require__(551);\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 532 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Array$isArray = __webpack_require__(533);\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 533 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(534);\n\n/***/ }),\n/* 534 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(535);\n\n\n/***/ }),\n/* 535 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(536);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 536 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(537);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 537 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(538);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 538 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(539);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Array.isArray;\n\n\n/***/ }),\n/* 539 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar isArray = __webpack_require__(90);\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n\n\n/***/ }),\n/* 540 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Symbol = __webpack_require__(242);\n\nvar _getIteratorMethod = __webpack_require__(254);\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 541 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _sliceInstanceProperty = __webpack_require__(542);\n\nvar _Array$from = __webpack_require__(546);\n\nvar arrayLikeToArray = __webpack_require__(550);\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 542 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(543);\n\n/***/ }),\n/* 543 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(544);\n\n\n/***/ }),\n/* 544 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(545);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 545 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(240);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 546 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(547);\n\n/***/ }),\n/* 547 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(548);\n\n\n/***/ }),\n/* 548 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(549);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 549 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(253);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 550 */\n/***/ (function(module, exports) {\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 551 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 552 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(553);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 553 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(554);\nvar path = __webpack_require__(5);\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n/***/ }),\n/* 554 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar fails = __webpack_require__(2);\nvar toIndexedObject = __webpack_require__(32);\nvar nativeGetOwnPropertyDescriptor = __webpack_require__(62).f;\nvar DESCRIPTORS = __webpack_require__(14);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n/***/ }),\n/* 555 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(3);\n\nvar AVError = __webpack_require__(46);\n\nmodule.exports = function (AV) {\n AV.Role = AV.Object.extend('_Role',\n /** @lends AV.Role.prototype */\n {\n // Instance Methods\n\n /**\n * Represents a Role on the AV server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n *\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * An AV.Role is a local representation of a role persisted to the AV\n * cloud.\n * @class AV.Role\n * @param {String} name The name of the Role to create.\n * @param {AV.ACL} acl The ACL for this role.\n */\n constructor: function constructor(name, acl) {\n if (_.isString(name)) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.setName(name);\n } else {\n AV.Object.prototype.constructor.call(this, name, acl);\n }\n\n if (acl) {\n if (!(acl instanceof AV.ACL)) {\n throw new TypeError('acl must be an instance of AV.ACL');\n } else {\n this.setACL(acl);\n }\n }\n },\n\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName: function getName() {\n return this.get('name');\n },\n\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n */\n setName: function setName(name, options) {\n return this.set('name', name, options);\n },\n\n /**\n * Gets the AV.Relation for the AV.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {AV.Relation} the relation for the users belonging to this\n * role.\n */\n getUsers: function getUsers() {\n return this.relation('users');\n },\n\n /**\n * Gets the AV.Relation for the AV.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {AV.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles: function getRoles() {\n return this.relation('roles');\n },\n\n /**\n * @ignore\n */\n validate: function validate(attrs, options) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only be set before it has been saved.\");\n }\n\n if (!_.isString(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name must be a String.\");\n }\n\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new AVError(AVError.OTHER_CAUSE, \"A role's name can only contain alphanumeric characters, _,\" + ' -, and spaces.');\n }\n }\n\n if (AV.Object.prototype.validate) {\n return AV.Object.prototype.validate.call(this, attrs, options);\n }\n\n return false;\n }\n });\n};\n\n/***/ }),\n/* 556 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(557));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _find = _interopRequireDefault(__webpack_require__(93));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _ = __webpack_require__(3);\n\nvar uuid = __webpack_require__(232);\n\nvar AVError = __webpack_require__(46);\n\nvar _require = __webpack_require__(27),\n AVRequest = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(72),\n getAdapter = _require2.getAdapter;\n\nvar PLATFORM_ANONYMOUS = 'anonymous';\nvar PLATFORM_QQAPP = 'lc_qqapp';\n\nvar mergeUnionDataIntoAuthData = function mergeUnionDataIntoAuthData() {\n var defaultUnionIdPlatform = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'weixin';\n return function (authData, unionId) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$unionIdPlatform = _ref.unionIdPlatform,\n unionIdPlatform = _ref$unionIdPlatform === void 0 ? defaultUnionIdPlatform : _ref$unionIdPlatform,\n _ref$asMainAccount = _ref.asMainAccount,\n asMainAccount = _ref$asMainAccount === void 0 ? false : _ref$asMainAccount;\n\n if (typeof unionId !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');\n if (typeof unionIdPlatform !== 'string') throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');\n return _.extend({}, authData, {\n platform: unionIdPlatform,\n unionid: unionId,\n main_account: Boolean(asMainAccount)\n });\n };\n};\n\nmodule.exports = function (AV) {\n /**\n * @class\n *\n * <p>An AV.User object is a local representation of a user persisted to the\n * LeanCloud server. This class is a subclass of an AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\n AV.User = AV.Object.extend('_User',\n /** @lends AV.User.prototype */\n {\n // Instance Variables\n _isCurrentUser: false,\n // Instance Methods\n\n /**\n * Internal method to handle special fields in a _User response.\n * @private\n */\n _mergeMagicFields: function _mergeMagicFields(attrs) {\n if (attrs.sessionToken) {\n this._sessionToken = attrs.sessionToken;\n delete attrs.sessionToken;\n }\n\n return AV.User.__super__._mergeMagicFields.call(this, attrs);\n },\n\n /**\n * Removes null values from authData (which exist temporarily for\n * unlinking)\n * @private\n */\n _cleanupAuthData: function _cleanupAuthData() {\n if (!this.isCurrent()) {\n return;\n }\n\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n AV._objectEach(this.get('authData'), function (value, key) {\n if (!authData[key]) {\n delete authData[key];\n }\n });\n },\n\n /**\n * Synchronizes authData for all providers.\n * @private\n */\n _synchronizeAllAuthData: function _synchronizeAllAuthData() {\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n var self = this;\n\n AV._objectEach(this.get('authData'), function (value, key) {\n self._synchronizeAuthData(key);\n });\n },\n\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n * @private\n */\n _synchronizeAuthData: function _synchronizeAuthData(provider) {\n if (!this.isCurrent()) {\n return;\n }\n\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData');\n\n if (!authData || !provider) {\n return;\n }\n\n var success = provider.restoreAuthentication(authData[authType]);\n\n if (!success) {\n this.dissociateAuthData(provider);\n }\n },\n _handleSaveResult: function _handleSaveResult(makeCurrent) {\n // Clean up and synchronize the authData object, removing any unset values\n if (makeCurrent && !AV._config.disableCurrentUser) {\n this._isCurrentUser = true;\n }\n\n this._cleanupAuthData();\n\n this._synchronizeAllAuthData(); // Don't keep the password around.\n\n\n delete this._serverData.password;\n\n this._rebuildEstimatedDataForKey('password');\n\n this._refreshCache();\n\n if ((makeCurrent || this.isCurrent()) && !AV._config.disableCurrentUser) {\n // Some old version of leanengine-node-sdk will overwrite\n // AV.User._saveCurrentUser which returns no Promise.\n // So we need a Promise wrapper.\n return _promise.default.resolve(AV.User._saveCurrentUser(this));\n } else {\n return _promise.default.resolve();\n }\n },\n\n /**\n * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can\n * call linkWith on the user (even if it doesn't exist yet on the server).\n * @private\n */\n _linkWith: function _linkWith(provider, data) {\n var _this = this;\n\n var _ref2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref2$failOnNotExist = _ref2.failOnNotExist,\n failOnNotExist = _ref2$failOnNotExist === void 0 ? false : _ref2$failOnNotExist,\n useMasterKey = _ref2.useMasterKey,\n sessionToken = _ref2.sessionToken,\n user = _ref2.user;\n\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n\n if (data) {\n return this.save({\n authData: (0, _defineProperty2.default)({}, authType, data)\n }, {\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user,\n fetchWhenSave: !!this.get('authData'),\n _failOnNotExist: failOnNotExist\n }).then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n } else {\n return provider.authenticate().then(function (result) {\n return _this._linkWith(provider, result);\n });\n }\n },\n\n /**\n * Associate the user with a third party authData.\n * @since 3.3.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthData: function associateWithAuthData(authData, platform) {\n return this._linkWith(platform, authData);\n },\n\n /**\n * Associate the user with a third party authData and unionId.\n * @since 3.5.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthDataAndUnionId: function associateWithAuthDataAndUnionId(authData, platform, unionId, unionOptions) {\n return this._linkWith(platform, mergeUnionDataIntoAuthData()(authData, unionId, unionOptions));\n },\n\n /**\n * Associate the user with the identity of the current mini-app.\n * @since 4.6.0\n * @param {Object} [authInfo]\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n * @return {Promise<AV.User>}\n */\n associateWithMiniApp: function associateWithMiniApp(authInfo, option) {\n var _this2 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this2._linkWith(authInfo.provider, authInfo.authData, option);\n });\n }\n\n return this._linkWith(authInfo.provider, authInfo.authData, option);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQApp: function associateWithQQApp() {\n var _this3 = this;\n\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$preferUnionId = _ref3.preferUnionId,\n preferUnionId = _ref3$preferUnionId === void 0 ? false : _ref3$preferUnionId,\n _ref3$unionIdPlatform = _ref3.unionIdPlatform,\n unionIdPlatform = _ref3$unionIdPlatform === void 0 ? 'qq' : _ref3$unionIdPlatform,\n _ref3$asMainAccount = _ref3.asMainAccount,\n asMainAccount = _ref3$asMainAccount === void 0 ? true : _ref3$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this3.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeapp: function associateWithWeapp() {\n var _this4 = this;\n\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$preferUnionId = _ref4.preferUnionId,\n preferUnionId = _ref4$preferUnionId === void 0 ? false : _ref4$preferUnionId,\n _ref4$unionIdPlatform = _ref4.unionIdPlatform,\n unionIdPlatform = _ref4$unionIdPlatform === void 0 ? 'weixin' : _ref4$unionIdPlatform,\n _ref4$asMainAccount = _ref4.asMainAccount,\n asMainAccount = _ref4$asMainAccount === void 0 ? true : _ref4$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this4.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * @deprecated renamed to {@link AV.User#associateWithWeapp}\n * @return {Promise<AV.User>}\n */\n linkWithWeapp: function linkWithWeapp(options) {\n console.warn('DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替');\n return this.associateWithWeapp(options);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQAppWithUnionId: function associateWithQQAppWithUnionId(unionId) {\n var _this5 = this;\n\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref5$unionIdPlatform = _ref5.unionIdPlatform,\n unionIdPlatform = _ref5$unionIdPlatform === void 0 ? 'qq' : _ref5$unionIdPlatform,\n _ref5$asMainAccount = _ref5.asMainAccount,\n asMainAccount = _ref5$asMainAccount === void 0 ? false : _ref5$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this5.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeappWithUnionId: function associateWithWeappWithUnionId(unionId) {\n var _this6 = this;\n\n var _ref6 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref6$unionIdPlatform = _ref6.unionIdPlatform,\n unionIdPlatform = _ref6$unionIdPlatform === void 0 ? 'weixin' : _ref6$unionIdPlatform,\n _ref6$asMainAccount = _ref6.asMainAccount,\n asMainAccount = _ref6$asMainAccount === void 0 ? false : _ref6$asMainAccount;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this6.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * Unlinks a user from a service.\n * @param {string} platform\n * @return {Promise<AV.User>}\n * @since 3.3.0\n */\n dissociateAuthData: function dissociateAuthData(provider) {\n this.unset(\"authData.\".concat(provider));\n return this.save().then(function (model) {\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * @private\n * @deprecated\n */\n _unlinkFrom: function _unlinkFrom(provider) {\n console.warn('DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替');\n return this.dissociateAuthData(provider);\n },\n\n /**\n * Checks whether a user is linked to a service.\n * @private\n */\n _isLinked: function _isLinked(provider) {\n var authType;\n\n if (_.isString(provider)) {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n\n var authData = this.get('authData') || {};\n return !!authData[authType];\n },\n\n /**\n * Checks whether a user is anonymous.\n * @since 3.9.0\n * @return {boolean}\n */\n isAnonymous: function isAnonymous() {\n return this._isLinked(PLATFORM_ANONYMOUS);\n },\n logOut: function logOut() {\n this._logOutWithAll();\n\n this._isCurrentUser = false;\n },\n\n /**\n * Deauthenticates all providers.\n * @private\n */\n _logOutWithAll: function _logOutWithAll() {\n var authData = this.get('authData');\n\n if (!authData) {\n return;\n }\n\n var self = this;\n\n AV._objectEach(this.get('authData'), function (value, key) {\n self._logOutWith(key);\n });\n },\n\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n * @private\n */\n _logOutWith: function _logOutWith(provider) {\n if (!this.isCurrent()) {\n return;\n }\n\n if (_.isString(provider)) {\n provider = AV.User._authProviders[provider];\n }\n\n if (provider && provider.deauthenticate) {\n provider.deauthenticate();\n }\n },\n\n /**\n * Signs up a new user. You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUp\n */\n signUp: function signUp(attrs, options) {\n var error;\n var username = attrs && attrs.username || this.get('username');\n\n if (!username || username === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty name.');\n throw error;\n }\n\n var password = attrs && attrs.password || this.get('password');\n\n if (!password || password === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up user with an empty password.');\n throw error;\n }\n\n return this.save(attrs, options).then(function (model) {\n if (model.isAnonymous()) {\n model.unset(\"authData.\".concat(PLATFORM_ANONYMOUS));\n model._opSetQueue = [{}];\n }\n\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Signs up a new user with mobile phone and sms code.\n * You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(attrs) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var error;\n var mobilePhoneNumber = attrs && attrs.mobilePhoneNumber || this.get('mobilePhoneNumber');\n\n if (!mobilePhoneNumber || mobilePhoneNumber === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty mobilePhoneNumber.');\n throw error;\n }\n\n var smsCode = attrs && attrs.smsCode || this.get('smsCode');\n\n if (!smsCode || smsCode === '') {\n error = new AVError(AVError.OTHER_CAUSE, 'Cannot sign up or login user by mobilePhoneNumber ' + 'with an empty smsCode.');\n throw error;\n }\n\n options._makeRequest = function (route, className, id, method, json) {\n return AVRequest('usersByMobilePhone', null, null, 'POST', json);\n };\n\n return this.save(attrs, options).then(function (model) {\n delete model.attributes.smsCode;\n delete model._serverData.smsCode;\n return model._handleSaveResult(true).then(function () {\n return model;\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return this._linkWith(platform, authData, options);\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n /**\n * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.7.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this7 = this;\n\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$preferUnionId = _ref7.preferUnionId,\n preferUnionId = _ref7$preferUnionId === void 0 ? false : _ref7$preferUnionId,\n _ref7$unionIdPlatform = _ref7.unionIdPlatform,\n unionIdPlatform = _ref7$unionIdPlatform === void 0 ? 'weixin' : _ref7$unionIdPlatform,\n _ref7$asMainAccount = _ref7.asMainAccount,\n asMainAccount = _ref7$asMainAccount === void 0 ? true : _ref7$asMainAccount,\n _ref7$failOnNotExist = _ref7.failOnNotExist,\n failOnNotExist = _ref7$failOnNotExist === void 0 ? false : _ref7$failOnNotExist,\n useMasterKey = _ref7.useMasterKey,\n sessionToken = _ref7.sessionToken,\n user = _ref7.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this7.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this8 = this;\n\n var _ref8 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref8$unionIdPlatform = _ref8.unionIdPlatform,\n unionIdPlatform = _ref8$unionIdPlatform === void 0 ? 'weixin' : _ref8$unionIdPlatform,\n _ref8$asMainAccount = _ref8.asMainAccount,\n asMainAccount = _ref8$asMainAccount === void 0 ? false : _ref8$asMainAccount,\n _ref8$failOnNotExist = _ref8.failOnNotExist,\n failOnNotExist = _ref8$failOnNotExist === void 0 ? false : _ref8$failOnNotExist,\n useMasterKey = _ref8.useMasterKey,\n sessionToken = _ref8.sessionToken,\n user = _ref8.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this8.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this9 = this;\n\n var _ref9 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref9$preferUnionId = _ref9.preferUnionId,\n preferUnionId = _ref9$preferUnionId === void 0 ? false : _ref9$preferUnionId,\n _ref9$unionIdPlatform = _ref9.unionIdPlatform,\n unionIdPlatform = _ref9$unionIdPlatform === void 0 ? 'qq' : _ref9$unionIdPlatform,\n _ref9$asMainAccount = _ref9.asMainAccount,\n asMainAccount = _ref9$asMainAccount === void 0 ? true : _ref9$asMainAccount,\n _ref9$failOnNotExist = _ref9.failOnNotExist,\n failOnNotExist = _ref9$failOnNotExist === void 0 ? false : _ref9$failOnNotExist,\n useMasterKey = _ref9.useMasterKey,\n sessionToken = _ref9.sessionToken,\n user = _ref9.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this9.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this10 = this;\n\n var _ref10 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref10$unionIdPlatfor = _ref10.unionIdPlatform,\n unionIdPlatform = _ref10$unionIdPlatfor === void 0 ? 'qq' : _ref10$unionIdPlatfor,\n _ref10$asMainAccount = _ref10.asMainAccount,\n asMainAccount = _ref10$asMainAccount === void 0 ? false : _ref10$asMainAccount,\n _ref10$failOnNotExist = _ref10.failOnNotExist,\n failOnNotExist = _ref10$failOnNotExist === void 0 ? false : _ref10$failOnNotExist,\n useMasterKey = _ref10.useMasterKey,\n sessionToken = _ref10.sessionToken,\n user = _ref10.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this10.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this11 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this11.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n },\n\n /**\n * Logs in a AV.User. On success, this saves the session to localStorage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling logIn.</p>\n *\n * @see AV.User.logIn\n * @return {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n logIn: function logIn() {\n var model = this;\n var request = AVRequest('login', null, null, 'POST', this.toJSON());\n return request.then(function (resp) {\n var serverAttrs = model.parse(resp);\n\n model._finishFetch(serverAttrs);\n\n return model._handleSaveResult(true).then(function () {\n if (!serverAttrs.smsCode) delete model.attributes['smsCode'];\n return model;\n });\n });\n },\n\n /**\n * @see AV.Object#save\n */\n save: function save(arg1, arg2, arg3) {\n var attrs, options;\n\n if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n options = options || {};\n return AV.Object.prototype.save.call(this, attrs, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Follow a user\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as\n * conditions of followerQuery/followeeQuery.\n * @param {AuthOptions} [authOptions]\n */\n follow: function follow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n var user;\n var attributes;\n\n if (options.user) {\n user = options.user;\n attributes = options.attributes;\n } else {\n user = options;\n }\n\n var userObjectId = _.isString(user) ? user : user.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'POST', AV._encode(attributes), authOptions);\n return request;\n },\n\n /**\n * Unfollow a user.\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to unfollow.\n * @param {AuthOptions} [authOptions]\n */\n unfollow: function unfollow(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n var user;\n\n if (options.user) {\n user = options.user;\n } else {\n user = options;\n }\n\n var userObjectId = _.isString(user) ? user : user.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'DELETE', null, authOptions);\n return request;\n },\n\n /**\n * Get the user's followers and followees.\n * @since 4.8.0\n * @param {Object} [options]\n * @param {Number} [options.skip]\n * @param {Number} [options.limit]\n * @param {AuthOptions} [authOptions]\n */\n getFollowersAndFollowees: function getFollowersAndFollowees(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n\n return request({\n method: 'GET',\n path: \"/users/\".concat(this.id, \"/followersAndFollowees\"),\n query: {\n skip: options && options.skip,\n limit: options && options.limit,\n include: 'follower,followee',\n keys: 'follower,followee'\n },\n authOptions: authOptions\n }).then(function (_ref11) {\n var followers = _ref11.followers,\n followees = _ref11.followees;\n return {\n followers: (0, _map.default)(followers).call(followers, function (_ref12) {\n var follower = _ref12.follower;\n return AV._decode(follower);\n }),\n followees: (0, _map.default)(followees).call(followees, function (_ref13) {\n var followee = _ref13.followee;\n return AV._decode(followee);\n })\n };\n });\n },\n\n /**\n *Create a follower query to query the user's followers.\n * @since 0.3.0\n * @see AV.User#followerQuery\n */\n followerQuery: function followerQuery() {\n return AV.User.followerQuery(this.id);\n },\n\n /**\n *Create a followee query to query the user's followees.\n * @since 0.3.0\n * @see AV.User#followeeQuery\n */\n followeeQuery: function followeeQuery() {\n return AV.User.followeeQuery(this.id);\n },\n\n /**\n * @see AV.Object#fetch\n */\n fetch: function fetch(fetchOptions, options) {\n return AV.Object.prototype.fetch.call(this, fetchOptions, options).then(function (model) {\n return model._handleSaveResult(false).then(function () {\n return model;\n });\n });\n },\n\n /**\n * Update user's new password safely based on old password.\n * @param {String} oldPassword the old password.\n * @param {String} newPassword the new password.\n * @param {AuthOptions} options\n */\n updatePassword: function updatePassword(oldPassword, newPassword, options) {\n var _this12 = this;\n\n var route = 'users/' + this.id + '/updatePassword';\n var params = {\n old_password: oldPassword,\n new_password: newPassword\n };\n var request = AVRequest(route, null, null, 'PUT', params, options);\n return request.then(function (resp) {\n _this12._finishFetch(_this12.parse(resp));\n\n return _this12._handleSaveResult(true).then(function () {\n return resp;\n });\n });\n },\n\n /**\n * Returns true if <code>current</code> would return this user.\n * @see AV.User#current\n */\n isCurrent: function isCurrent() {\n return this._isCurrentUser;\n },\n\n /**\n * Returns get(\"username\").\n * @return {String}\n * @see AV.Object#get\n */\n getUsername: function getUsername() {\n return this.get('username');\n },\n\n /**\n * Returns get(\"mobilePhoneNumber\").\n * @return {String}\n * @see AV.Object#get\n */\n getMobilePhoneNumber: function getMobilePhoneNumber() {\n return this.get('mobilePhoneNumber');\n },\n\n /**\n * Calls set(\"mobilePhoneNumber\", phoneNumber, options) and returns the result.\n * @param {String} mobilePhoneNumber\n * @return {Boolean}\n * @see AV.Object#set\n */\n setMobilePhoneNumber: function setMobilePhoneNumber(phone, options) {\n return this.set('mobilePhoneNumber', phone, options);\n },\n\n /**\n * Calls set(\"username\", username, options) and returns the result.\n * @param {String} username\n * @return {Boolean}\n * @see AV.Object#set\n */\n setUsername: function setUsername(username, options) {\n return this.set('username', username, options);\n },\n\n /**\n * Calls set(\"password\", password, options) and returns the result.\n * @param {String} password\n * @return {Boolean}\n * @see AV.Object#set\n */\n setPassword: function setPassword(password, options) {\n return this.set('password', password, options);\n },\n\n /**\n * Returns get(\"email\").\n * @return {String}\n * @see AV.Object#get\n */\n getEmail: function getEmail() {\n return this.get('email');\n },\n\n /**\n * Calls set(\"email\", email, options) and returns the result.\n * @param {String} email\n * @param {AuthOptions} options\n * @return {Boolean}\n * @see AV.Object#set\n */\n setEmail: function setEmail(email, options) {\n return this.set('email', email, options);\n },\n\n /**\n * Checks whether this user is the current user and has been authenticated.\n * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),\n * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id\n * @return (Boolean) whether this user is the current user and is logged in.\n */\n authenticated: function authenticated() {\n console.warn('DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。');\n return !!this._sessionToken && !AV._config.disableCurrentUser && AV.User.current() && AV.User.current().id === this.id;\n },\n\n /**\n * Detects if current sessionToken is valid.\n *\n * @since 2.0.0\n * @return Promise.<Boolean>\n */\n isAuthenticated: function isAuthenticated() {\n var _this13 = this;\n\n return _promise.default.resolve().then(function () {\n return !!_this13._sessionToken && AV.User._fetchUserBySessionToken(_this13._sessionToken).then(function () {\n return true;\n }, function (error) {\n if (error.code === 211) {\n return false;\n }\n\n throw error;\n });\n });\n },\n\n /**\n * Get sessionToken of current user.\n * @return {String} sessionToken\n */\n getSessionToken: function getSessionToken() {\n return this._sessionToken;\n },\n\n /**\n * Refresh sessionToken of current user.\n * @since 2.1.0\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.User>} user with refreshed sessionToken\n */\n refreshSessionToken: function refreshSessionToken(options) {\n var _this14 = this;\n\n return AVRequest(\"users/\".concat(this.id, \"/refreshSessionToken\"), null, null, 'PUT', null, options).then(function (response) {\n _this14._finishFetch(response);\n\n return _this14._handleSaveResult(true).then(function () {\n return _this14;\n });\n });\n },\n\n /**\n * Get this user's Roles.\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.Role[]>} A promise that is fulfilled with the roles when\n * the query is complete.\n */\n getRoles: function getRoles(options) {\n var _context;\n\n return (0, _find.default)(_context = AV.Relation.reverseQuery('_Role', 'users', this)).call(_context, options);\n }\n },\n /** @lends AV.User */\n {\n // Class Variables\n // The currently logged-in user.\n _currentUser: null,\n // Whether currentUser is known to match the serialized version on disk.\n // This is useful for saving a localstorage check if you try to load\n // _currentUser frequently while there is none stored.\n _currentUserMatchesDisk: false,\n // The localStorage key suffix that the current user is stored under.\n _CURRENT_USER_KEY: 'currentUser',\n // The mapping of auth provider names to actual providers\n _authProviders: {},\n // Class Methods\n\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new AV.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {String} username The username (or email) to sign up with.\n * @param {String} password The password to sign up with.\n * @param {Object} [attrs] Extra fields to set on the new user.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n * @see AV.User#signUp\n */\n signUp: function signUp(username, password, attrs, options) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n\n var user = AV.Object._create('_User');\n\n return user.signUp(attrs, options);\n },\n\n /**\n * Logs in a user with a username (or email) and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} username The username (or email) to log in with.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logIn: function logIn(username, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n username: username,\n password: password\n });\n\n return user.logIn();\n },\n\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * @param {String} sessionToken The sessionToken to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n become: function become(sessionToken) {\n return this._fetchUserBySessionToken(sessionToken).then(function (user) {\n return user._handleSaveResult(true).then(function () {\n return user;\n });\n });\n },\n _fetchUserBySessionToken: function _fetchUserBySessionToken(sessionToken) {\n if (sessionToken === undefined) {\n return _promise.default.reject(new Error('The sessionToken cannot be undefined'));\n }\n\n var user = AV.Object._create('_User');\n\n return request({\n method: 'GET',\n path: '/users/me',\n authOptions: {\n sessionToken: sessionToken\n }\n }).then(function (resp) {\n var serverAttrs = user.parse(resp);\n\n user._finishFetch(serverAttrs);\n\n return user;\n });\n },\n\n /**\n * Logs in a user with a mobile phone number and sms code sent by\n * AV.User.requestLoginSmsCode.On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhoneSmsCode: function logInWithMobilePhoneSmsCode(mobilePhone, smsCode) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n smsCode: smsCode\n });\n\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a mobilePhoneNumber and smsCode.\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.\n * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode\n * @param {Object} attributes The user's other attributes such as username etc.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function signUpOrlogInWithMobilePhone(mobilePhoneNumber, smsCode, attrs, options) {\n attrs = attrs || {};\n attrs.mobilePhoneNumber = mobilePhoneNumber;\n attrs.smsCode = smsCode;\n\n var user = AV.Object._create('_User');\n\n return user.signUpOrlogInWithMobilePhone(attrs, options);\n },\n\n /**\n * Logs in a user with a mobile phone number and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhone: function logInWithMobilePhone(mobilePhone, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n password: password\n });\n\n return user.logIn();\n },\n\n /**\n * Logs in a user with email and password.\n *\n * @since 3.13.0\n * @param {String} email The user's email.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n loginWithEmail: function loginWithEmail(email, password) {\n var user = AV.Object._create('_User');\n\n user._finishFetch({\n email: email,\n password: password\n });\n\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a third party auth data(AccessToken).\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @example AV.User.loginWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}\n */\n loginWithAuthData: function loginWithAuthData(authData, platform, options) {\n return AV.User._logInWith(platform, authData, options);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthData}\n */\n signUpOrlogInWithAuthData: function signUpOrlogInWithAuthData() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替');\n return this.loginWithAuthData.apply(this, arguments);\n },\n\n /**\n * Signs up or logs in a user with a third party authData and unionId.\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example AV.User.loginWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n loginWithAuthDataAndUnionId: function loginWithAuthDataAndUnionId(authData, platform, unionId, unionLoginOptions) {\n return this.loginWithAuthData(mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions), platform, unionLoginOptions);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}\n * @since 3.5.0\n */\n signUpOrlogInWithAuthDataAndUnionId: function signUpOrlogInWithAuthDataAndUnionId() {\n console.warn('DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替');\n return this.loginWithAuthDataAndUnionId.apply(this, arguments);\n },\n\n /**\n * Merge unionId into authInfo.\n * @since 4.6.0\n * @param {Object} authInfo\n * @param {String} unionId\n * @param {Object} [unionIdOption]\n * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.\n */\n mergeUnionId: function mergeUnionId(authInfo, unionId) {\n var _ref14 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref14$asMainAccount = _ref14.asMainAccount,\n asMainAccount = _ref14$asMainAccount === void 0 ? false : _ref14$asMainAccount;\n\n authInfo = JSON.parse((0, _stringify.default)(authInfo));\n var _authInfo = authInfo,\n authData = _authInfo.authData,\n platform = _authInfo.platform;\n authData.platform = platform;\n authData.main_account = asMainAccount;\n authData.unionid = unionId;\n return authInfo;\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 2.0.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithWeapp: function loginWithWeapp() {\n var _this15 = this;\n\n var _ref15 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref15$preferUnionId = _ref15.preferUnionId,\n preferUnionId = _ref15$preferUnionId === void 0 ? false : _ref15$preferUnionId,\n _ref15$unionIdPlatfor = _ref15.unionIdPlatform,\n unionIdPlatform = _ref15$unionIdPlatfor === void 0 ? 'weixin' : _ref15$unionIdPlatfor,\n _ref15$asMainAccount = _ref15.asMainAccount,\n asMainAccount = _ref15$asMainAccount === void 0 ? true : _ref15$asMainAccount,\n _ref15$failOnNotExist = _ref15.failOnNotExist,\n failOnNotExist = _ref15$failOnNotExist === void 0 ? false : _ref15$failOnNotExist,\n useMasterKey = _ref15.useMasterKey,\n sessionToken = _ref15.sessionToken,\n user = _ref15.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n return _this15.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.<AV.User>}\n */\n loginWithWeappWithUnionId: function loginWithWeappWithUnionId(unionId) {\n var _this16 = this;\n\n var _ref16 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref16$unionIdPlatfor = _ref16.unionIdPlatform,\n unionIdPlatform = _ref16$unionIdPlatfor === void 0 ? 'weixin' : _ref16$unionIdPlatfor,\n _ref16$asMainAccount = _ref16.asMainAccount,\n asMainAccount = _ref16$asMainAccount === void 0 ? false : _ref16$asMainAccount,\n _ref16$failOnNotExist = _ref16.failOnNotExist,\n failOnNotExist = _ref16$failOnNotExist === void 0 ? false : _ref16$failOnNotExist,\n useMasterKey = _ref16.useMasterKey,\n sessionToken = _ref16.sessionToken,\n user = _ref16.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n return _this16.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithQQApp: function loginWithQQApp() {\n var _this17 = this;\n\n var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref17$preferUnionId = _ref17.preferUnionId,\n preferUnionId = _ref17$preferUnionId === void 0 ? false : _ref17$preferUnionId,\n _ref17$unionIdPlatfor = _ref17.unionIdPlatform,\n unionIdPlatform = _ref17$unionIdPlatfor === void 0 ? 'qq' : _ref17$unionIdPlatfor,\n _ref17$asMainAccount = _ref17.asMainAccount,\n asMainAccount = _ref17$asMainAccount === void 0 ? true : _ref17$asMainAccount,\n _ref17$failOnNotExist = _ref17.failOnNotExist,\n failOnNotExist = _ref17$failOnNotExist === void 0 ? false : _ref17$failOnNotExist,\n useMasterKey = _ref17.useMasterKey,\n sessionToken = _ref17.sessionToken,\n user = _ref17.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId: preferUnionId,\n asMainAccount: asMainAccount,\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo.provider = PLATFORM_QQAPP;\n return _this17.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.<AV.User>}\n */\n loginWithQQAppWithUnionId: function loginWithQQAppWithUnionId(unionId) {\n var _this18 = this;\n\n var _ref18 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref18$unionIdPlatfor = _ref18.unionIdPlatform,\n unionIdPlatform = _ref18$unionIdPlatfor === void 0 ? 'qq' : _ref18$unionIdPlatfor,\n _ref18$asMainAccount = _ref18.asMainAccount,\n asMainAccount = _ref18$asMainAccount === void 0 ? false : _ref18$asMainAccount,\n _ref18$failOnNotExist = _ref18.failOnNotExist,\n failOnNotExist = _ref18$failOnNotExist === void 0 ? false : _ref18$failOnNotExist,\n useMasterKey = _ref18.useMasterKey,\n sessionToken = _ref18.sessionToken,\n user = _ref18.user;\n\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n platform: unionIdPlatform\n }).then(function (authInfo) {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, {\n asMainAccount: asMainAccount\n });\n authInfo.provider = PLATFORM_QQAPP;\n return _this18.loginWithMiniApp(authInfo, {\n failOnNotExist: failOnNotExist,\n useMasterKey: useMasterKey,\n sessionToken: sessionToken,\n user: user\n });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp: function loginWithMiniApp(authInfo, option) {\n var _this19 = this;\n\n if (authInfo === undefined) {\n var getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(function (authInfo) {\n return _this19.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n });\n }\n\n return this.loginWithAuthData(authInfo.authData, authInfo.provider, option);\n },\n\n /**\n * Only use for DI in tests to produce deterministic IDs.\n */\n _genId: function _genId() {\n return uuid();\n },\n\n /**\n * Creates an anonymous user.\n *\n * @since 3.9.0\n * @return {Promise.<AV.User>}\n */\n loginAnonymously: function loginAnonymously() {\n return this.loginWithAuthData({\n id: AV.User._genId()\n }, 'anonymous');\n },\n associateWithAuthData: function associateWithAuthData(userObj, platform, authData) {\n console.warn('DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替');\n return userObj._linkWith(platform, authData);\n },\n\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * <code>current</code> will return <code>null</code>.\n * @return {Promise}\n */\n logOut: function logOut() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise.default.resolve(null);\n }\n\n if (AV.User._currentUser !== null) {\n AV.User._currentUser._logOutWithAll();\n\n AV.User._currentUser._isCurrentUser = false;\n }\n\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = null;\n return AV.localStorage.removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function () {\n return AV._refreshSubscriptionId();\n });\n },\n\n /**\n *Create a follower query for special user to query the user's followers.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followerQuery: function followerQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n\n var query = new AV.FriendShipQuery('_Follower');\n query._friendshipTag = 'follower';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n *Create a followee query for special user to query the user's followees.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followeeQuery: function followeeQuery(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n\n var query = new AV.FriendShipQuery('_Followee');\n query._friendshipTag = 'followee';\n query.equalTo('user', AV.Object.createWithoutData('_User', userObjectId));\n return query;\n },\n\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * forgot their password.\n * @return {Promise}\n */\n requestPasswordReset: function requestPasswordReset(email) {\n var json = {\n email: email\n };\n var request = AVRequest('requestPasswordReset', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * verify their email address on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * doesn't verify their email address.\n * @return {Promise}\n */\n requestEmailVerify: function requestEmailVerify(email) {\n var json = {\n email: email\n };\n var request = AVRequest('requestEmailVerify', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * verify their mobile phone number by calling AV.User.verifyMobilePhone\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestMobilePhoneVerify: function requestMobilePhoneVerify(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestMobilePhoneVerify', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a reset password sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * reset their account's password by calling AV.User.resetPasswordBySmsCode\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestPasswordResetBySmsCode: function requestPasswordResetBySmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestPasswordResetBySmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.\n * This sms code allows current user to reset it's mobilePhoneNumber by\n * calling {@link AV.User.changePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {Number} [ttl] ttl of sms code (default is 6 minutes)\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestChangePhoneNumber: function requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (ttl) {\n data.ttl = options.ttl;\n }\n\n if (options && options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n return AVRequest('requestChangePhoneNumber', null, null, 'POST', data, options);\n },\n\n /**\n * Makes a call to reset user's account mobilePhoneNumber by sms code.\n * The sms code is sent by {@link AV.User.requestChangePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {String} code The sms code.\n * @return {Promise}\n */\n changePhoneNumber: function changePhoneNumber(mobilePhoneNumber, code) {\n var data = {\n mobilePhoneNumber: mobilePhoneNumber,\n code: code\n };\n return AVRequest('changePhoneNumber', null, null, 'POST', data);\n },\n\n /**\n * Makes a call to reset user's account password by sms code and new password.\n * The sms code is sent by AV.User.requestPasswordResetBySmsCode.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @param {String} password The new password.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n resetPasswordBySmsCode: function resetPasswordBySmsCode(code, password) {\n var json = {\n password: password\n };\n var request = AVRequest('resetPasswordBySmsCode', null, code, 'PUT', json);\n return request;\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode\n * If verify successfully,the user mobilePhoneVerified attribute will be true.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifyMobilePhone: function verifyMobilePhone(code) {\n var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);\n return request;\n },\n\n /**\n * Requests a logIn sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * login by AV.User.logInWithMobilePhoneSmsCode function.\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that want to login by AV.User.logInWithMobilePhoneSmsCode\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestLoginSmsCode: function requestLoginSmsCode(mobilePhoneNumber) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var data = {\n mobilePhoneNumber: mobilePhoneNumber\n };\n\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n\n var request = AVRequest('requestLoginSmsCode', null, null, 'POST', data, options);\n return request;\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {Promise.<AV.User>} resolved with the currently logged in AV.User.\n */\n currentAsync: function currentAsync() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return _promise.default.resolve(null);\n }\n\n if (AV.User._currentUser) {\n return _promise.default.resolve(AV.User._currentUser);\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return _promise.default.resolve(AV.User._currentUser);\n }\n\n return AV.localStorage.getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY)).then(function (userData) {\n if (!userData) {\n return null;\n } // Load the user from local storage.\n\n\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n\n AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json);\n\n\n AV.User._currentUser._synchronizeAllAuthData();\n\n AV.User._currentUser._refreshCache();\n\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n });\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {AV.User} The currently logged in AV.User.\n */\n current: function current() {\n if (AV._config.disableCurrentUser) {\n console.warn('AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html');\n return null;\n }\n\n if (AV.localStorage.async) {\n var error = new Error('Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.');\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n }\n\n if (AV.User._currentUser) {\n return AV.User._currentUser;\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return AV.User._currentUser;\n } // Load the user from local storage.\n\n\n AV.User._currentUserMatchesDisk = true;\n var userData = AV.localStorage.getItem(AV._getAVPath(AV.User._CURRENT_USER_KEY));\n\n if (!userData) {\n return null;\n }\n\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n\n AV.User._currentUser._finishFetch(json); //AV.User._currentUser.set(json);\n\n\n AV.User._currentUser._synchronizeAllAuthData();\n\n AV.User._currentUser._refreshCache();\n\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n },\n\n /**\n * Persists a user as currentUser to localStorage, and into the singleton.\n * @private\n */\n _saveCurrentUser: function _saveCurrentUser(user) {\n var promise;\n\n if (AV.User._currentUser !== user) {\n promise = AV.User.logOut();\n } else {\n promise = _promise.default.resolve();\n }\n\n return promise.then(function () {\n user._isCurrentUser = true;\n AV.User._currentUser = user;\n\n var json = user._toFullJSON();\n\n json._id = user.id;\n json._sessionToken = user._sessionToken;\n return AV.localStorage.setItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY), (0, _stringify.default)(json)).then(function () {\n AV.User._currentUserMatchesDisk = true;\n return AV._refreshSubscriptionId();\n });\n });\n },\n _registerAuthenticationProvider: function _registerAuthenticationProvider(provider) {\n AV.User._authProviders[provider.getAuthType()] = provider; // Synchronize the current user with the auth provider.\n\n if (!AV._config.disableCurrentUser && AV.User.current()) {\n AV.User.current()._synchronizeAuthData(provider.getAuthType());\n }\n },\n _logInWith: function _logInWith(provider, authData, options) {\n var user = AV.Object._create('_User');\n\n return user._linkWith(provider, authData, options);\n }\n });\n};\n\n/***/ }),\n/* 557 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar _Object$defineProperty = __webpack_require__(150);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n/***/ }),\n/* 558 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _keys = _interopRequireDefault(__webpack_require__(59));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _find = _interopRequireDefault(__webpack_require__(93));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _ = __webpack_require__(3);\n\nvar debug = __webpack_require__(60)('leancloud:query');\n\nvar AVError = __webpack_require__(46);\n\nvar _require = __webpack_require__(27),\n _request = _require._request,\n request = _require.request;\n\nvar _require2 = __webpack_require__(30),\n ensureArray = _require2.ensureArray,\n transformFetchOptions = _require2.transformFetchOptions,\n continueWhile = _require2.continueWhile;\n\nvar requires = function requires(value, message) {\n if (value === undefined) {\n throw new Error(message);\n }\n}; // AV.Query is a way to create a list of AV.Objects.\n\n\nmodule.exports = function (AV) {\n /**\n * Creates a new AV.Query for the given AV.Object subclass.\n * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string.\n * @class\n *\n * <p>AV.Query defines a query that is used to fetch AV.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.find().then(function(results) {\n * // results is an array of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.get(myId).then(function(object) {\n * // object is an instance of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.count().then(function(number) {\n * // There are number instances of MyClass.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n */\n AV.Query = function (objectClass) {\n if (_.isString(objectClass)) {\n objectClass = AV.Object._getSubclass(objectClass);\n }\n\n this.objectClass = objectClass;\n this.className = objectClass.prototype.className;\n this._where = {};\n this._include = [];\n this._select = [];\n this._limit = -1; // negative limit means, do not send a limit\n\n this._skip = 0;\n this._defaultParams = {};\n };\n /**\n * Constructs a AV.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.or(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to OR.\n * @return {AV.Query} The query that is the OR of the passed in queries.\n */\n\n\n AV.Query.or = function () {\n var queries = _.toArray(arguments);\n\n var className = null;\n\n AV._arrayEach(queries, function (q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n\n var query = new AV.Query(className);\n\n query._orQuery(queries);\n\n return query;\n };\n /**\n * Constructs a AV.Query that is the AND of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.and(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an 'and' of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to AND.\n * @return {AV.Query} The query that is the AND of the passed in queries.\n */\n\n\n AV.Query.and = function () {\n var queries = _.toArray(arguments);\n\n var className = null;\n\n AV._arrayEach(queries, function (q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n\n var query = new AV.Query(className);\n\n query._andQuery(queries);\n\n return query;\n };\n /**\n * Retrieves a list of AVObjects that satisfy the CQL.\n * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n *\n * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n * @param {Array} pvalues An array contains placeholder values.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n\n\n AV.Query.doCloudQuery = function (cql, pvalues, options) {\n var params = {\n cql: cql\n };\n\n if (_.isArray(pvalues)) {\n params.pvalues = pvalues;\n } else {\n options = pvalues;\n }\n\n var request = _request('cloudQuery', null, null, 'GET', params, options);\n\n return request.then(function (response) {\n //query to process results.\n var query = new AV.Query(response.className);\n var results = (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = query._newObject(response);\n\n if (obj._finishFetch) {\n obj._finishFetch(query._processResult(json), true);\n }\n\n return obj;\n });\n return {\n results: results,\n count: response.count,\n className: response.className\n };\n });\n };\n /**\n * Return a query with conditions from json.\n * This can be useful to send a query from server side to client side.\n * @since 4.0.0\n * @param {Object} json from {@link AV.Query#toJSON}\n * @return {AV.Query}\n */\n\n\n AV.Query.fromJSON = function (_ref) {\n var className = _ref.className,\n where = _ref.where,\n include = _ref.include,\n select = _ref.select,\n includeACL = _ref.includeACL,\n limit = _ref.limit,\n skip = _ref.skip,\n order = _ref.order;\n\n if (typeof className !== 'string') {\n throw new TypeError('Invalid Query JSON, className must be a String.');\n }\n\n var query = new AV.Query(className);\n\n _.extend(query, {\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order\n });\n\n return query;\n };\n\n AV.Query._extend = AV._extend;\n\n _.extend(AV.Query.prototype,\n /** @lends AV.Query.prototype */\n {\n //hook to iterate result. Added by dennis<xzhuang@avoscloud.com>.\n _processResult: function _processResult(obj) {\n return obj;\n },\n\n /**\n * Constructs an AV.Object whose id is already known by fetching data from\n * the server.\n *\n * @param {String} objectId The id of the object to be fetched.\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object>}\n */\n get: function get(objectId, options) {\n if (!_.isString(objectId)) {\n throw new Error('objectId must be a string');\n }\n\n if (objectId === '') {\n return _promise.default.reject(new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.'));\n }\n\n var obj = this._newObject();\n\n obj.id = objectId;\n\n var queryJSON = this._getParams();\n\n var fetchOptions = {};\n if ((0, _keys.default)(queryJSON)) fetchOptions.keys = (0, _keys.default)(queryJSON);\n if (queryJSON.include) fetchOptions.include = queryJSON.include;\n if (queryJSON.includeACL) fetchOptions.includeACL = queryJSON.includeACL;\n return _request('classes', this.className, objectId, 'GET', transformFetchOptions(fetchOptions), options).then(function (response) {\n if (_.isEmpty(response)) throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n\n obj._finishFetch(obj.parse(response), true);\n\n return obj;\n });\n },\n\n /**\n * Returns a JSON representation of this query.\n * @return {Object}\n */\n toJSON: function toJSON() {\n var className = this.className,\n where = this._where,\n include = this._include,\n select = this._select,\n includeACL = this._includeACL,\n limit = this._limit,\n skip = this._skip,\n order = this._order;\n return {\n className: className,\n where: where,\n include: include,\n select: select,\n includeACL: includeACL,\n limit: limit,\n skip: skip,\n order: order\n };\n },\n _getParams: function _getParams() {\n var params = _.extend({}, this._defaultParams, {\n where: this._where\n });\n\n if (this._include.length > 0) {\n params.include = this._include.join(',');\n }\n\n if (this._select.length > 0) {\n params.keys = this._select.join(',');\n }\n\n if (this._includeACL !== undefined) {\n params.returnACL = this._includeACL;\n }\n\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n\n if (this._order !== undefined) {\n params.order = this._order;\n }\n\n return params;\n },\n _newObject: function _newObject(response) {\n var obj;\n\n if (response && response.className) {\n obj = new AV.Object(response.className);\n } else {\n obj = new this.objectClass();\n }\n\n return obj;\n },\n _createRequest: function _createRequest() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._getParams();\n var options = arguments.length > 1 ? arguments[1] : undefined;\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"/classes/\".concat(this.className);\n\n if (encodeURIComponent((0, _stringify.default)(params)).length > 2000) {\n var body = {\n requests: [{\n method: 'GET',\n path: \"/1.1\".concat(path),\n params: params\n }]\n };\n return request({\n path: '/batch',\n method: 'POST',\n data: body,\n authOptions: options\n }).then(function (response) {\n var result = response[0];\n\n if (result.success) {\n return result.success;\n }\n\n var error = new AVError(result.error.code, result.error.error || 'Unknown batch error');\n throw error;\n });\n }\n\n return request({\n method: 'GET',\n path: path,\n query: params,\n authOptions: options\n });\n },\n _parseResponse: function _parseResponse(response) {\n var _this = this;\n\n return (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = _this._newObject(response);\n\n if (obj._finishFetch) {\n obj._finishFetch(_this._processResult(json), true);\n }\n\n return obj;\n });\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function find(options) {\n var request = this._createRequest(undefined, options);\n\n return request.then(this._parseResponse.bind(this));\n },\n\n /**\n * Retrieves both AVObjects and total count.\n *\n * @since 4.12.0\n * @param {AuthOptions} options\n * @return {Promise} A tuple contains results and count.\n */\n findAndCount: function findAndCount(options) {\n var _this2 = this;\n\n var params = this._getParams();\n\n params.count = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return [_this2._parseResponse(response), response.count];\n });\n },\n\n /**\n * scan a Query. masterKey required.\n *\n * @since 2.1.0\n * @param {object} [options]\n * @param {string} [options.orderedBy] specify the key to sort\n * @param {number} [options.batchSize] specify the batch size for each request\n * @param {AuthOptions} [authOptions]\n * @return {AsyncIterator.<AV.Object>}\n * @example const testIterator = {\n * [Symbol.asyncIterator]() {\n * return new Query('Test').scan(undefined, { useMasterKey: true });\n * },\n * };\n * for await (const test of testIterator) {\n * console.log(test.id);\n * }\n */\n scan: function scan() {\n var _this3 = this;\n\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n orderedBy = _ref2.orderedBy,\n batchSize = _ref2.batchSize;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n\n var condition = this._getParams();\n\n debug('scan %O', condition);\n\n if (condition.order) {\n console.warn('The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.');\n delete condition.order;\n }\n\n if (condition.skip) {\n console.warn('The skip option of the query is ignored for Query#scan.');\n delete condition.skip;\n }\n\n if (condition.limit) {\n console.warn('The limit option of the query is ignored for Query#scan.');\n delete condition.limit;\n }\n\n if (orderedBy) condition.scan_key = orderedBy;\n if (batchSize) condition.limit = batchSize;\n var cursor;\n var remainResults = [];\n return {\n next: function next() {\n if (remainResults.length) {\n return _promise.default.resolve({\n done: false,\n value: remainResults.shift()\n });\n }\n\n if (cursor === null) {\n return _promise.default.resolve({\n done: true\n });\n }\n\n return _request('scan/classes', _this3.className, null, 'GET', cursor ? _.extend({}, condition, {\n cursor: cursor\n }) : condition, authOptions).then(function (response) {\n cursor = response.cursor;\n\n if (response.results.length) {\n var results = _this3._parseResponse(response);\n\n results.forEach(function (result) {\n return remainResults.push(result);\n });\n }\n\n if (cursor === null && remainResults.length === 0) {\n return {\n done: true\n };\n }\n\n return {\n done: false,\n value: remainResults.shift()\n };\n });\n }\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function destroyAll(options) {\n var self = this;\n return (0, _find.default)(self).call(self, options).then(function (objects) {\n return AV.Object.destroyAll(objects, options);\n });\n },\n\n /**\n * Counts the number of objects that match this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n count: function count(options) {\n var params = this._getParams();\n\n params.limit = 0;\n params.count = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return response.count;\n });\n },\n\n /**\n * Retrieves at most one AV.Object that satisfies this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n first: function first(options) {\n var self = this;\n\n var params = this._getParams();\n\n params.limit = 1;\n\n var request = this._createRequest(params, options);\n\n return request.then(function (response) {\n return (0, _map.default)(_).call(_, response.results, function (json) {\n var obj = self._newObject();\n\n if (obj._finishFetch) {\n obj._finishFetch(self._processResult(json), true);\n }\n\n return obj;\n })[0];\n });\n },\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n requires(n, 'undefined is not a valid skip value');\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n requires(n, 'undefined is not a valid limit value');\n this._limit = n;\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that the AV.Object must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n equalTo: function equalTo(key, value) {\n requires(key, 'undefined is not a valid key');\n requires(value, 'undefined is not a valid value');\n this._where[key] = AV._encode(value);\n return this;\n },\n\n /**\n * Helper for condition queries\n * @private\n */\n _addCondition: function _addCondition(key, condition, value) {\n requires(key, 'undefined is not a valid condition key');\n requires(condition, 'undefined is not a valid condition');\n requires(value, 'undefined is not a valid condition value'); // Check if we already have a condition\n\n if (!this._where[key]) {\n this._where[key] = {};\n }\n\n this._where[key][condition] = AV._encode(value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular\n * <strong>array</strong> key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param {number} value The length value.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n sizeEqualTo: function sizeEqualTo(key, value) {\n this._addCondition(key, '$size', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that must not be equalled.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notEqualTo: function notEqualTo(key, value) {\n this._addCondition(key, '$ne', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThan: function lessThan(key, value) {\n this._addCondition(key, '$lt', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThan: function greaterThan(key, value) {\n this._addCondition(key, '$gt', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo: function lessThanOrEqualTo(key, value) {\n this._addCondition(key, '$lte', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo: function greaterThanOrEqualTo(key, value) {\n this._addCondition(key, '$gte', value);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containedIn: function containedIn(key, values) {\n this._addCondition(key, '$in', values);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notContainedIn: function notContainedIn(key, values) {\n this._addCondition(key, '$nin', values);\n\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containsAll: function containsAll(key, values) {\n this._addCondition(key, '$all', values);\n\n return this;\n },\n\n /**\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n exists: function exists(key) {\n this._addCondition(key, '$exists', true);\n\n return this;\n },\n\n /**\n * Add a constraint for finding objects that do not contain a given key.\n * @param {String} key The key that should not exist\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotExist: function doesNotExist(key) {\n this._addCondition(key, '$exists', false);\n\n return this;\n },\n\n /**\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matches: function matches(key, regex, modifiers) {\n this._addCondition(key, '$regex', regex);\n\n if (!modifiers) {\n modifiers = '';\n } // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n\n\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers && modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a AV.Query\n * constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesQuery: function matchesQuery(key, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$inQuery', queryJSON);\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not matches a\n * AV.Query constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchQuery: function doesNotMatchQuery(key, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$notInQuery', queryJSON);\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * matched.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesKeyInQuery: function matchesKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$select', {\n key: queryKey,\n query: queryJSON\n });\n\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not match a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * excluded.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchKeyInQuery: function doesNotMatchKeyInQuery(key, queryKey, query) {\n var queryJSON = query._getParams();\n\n queryJSON.className = query.className;\n\n this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON\n });\n\n return this;\n },\n\n /**\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _orQuery: function _orQuery(queries) {\n var queryJSON = (0, _map.default)(_).call(_, queries, function (q) {\n return q._getParams().where;\n });\n this._where.$or = queryJSON;\n return this;\n },\n\n /**\n * Add constraint that both of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _andQuery: function _andQuery(queries) {\n var queryJSON = (0, _map.default)(_).call(_, queries, function (q) {\n return q._getParams().where;\n });\n this._where.$and = queryJSON;\n return this;\n },\n\n /**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n * @private\n */\n _quote: function _quote(s) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n },\n\n /**\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n contains: function contains(key, value) {\n this._addCondition(key, '$regex', this._quote(value));\n\n return this;\n },\n\n /**\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n startsWith: function startsWith(key, value) {\n this._addCondition(key, '$regex', '^' + this._quote(value));\n\n return this;\n },\n\n /**\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n endsWith: function endsWith(key, value) {\n this._addCondition(key, '$regex', this._quote(value) + '$');\n\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n ascending: function ascending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = key;\n return this;\n },\n\n /**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addAscending: function addAscending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',' + key;else this._order = key;\n return this;\n },\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n descending: function descending(key) {\n requires(key, 'undefined is not a valid key');\n this._order = '-' + key;\n return this;\n },\n\n /**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addDescending: function addDescending(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',-' + key;else this._order = '-' + key;\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n near: function near(key, point) {\n if (!(point instanceof AV.GeoPoint)) {\n // Try to cast it to a GeoPoint, so that near(\"loc\", [20,30]) works.\n point = new AV.GeoPoint(point);\n }\n\n this._addCondition(key, '$nearSphere', point);\n\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param maxDistance Maximum distance (in radians) of results to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinRadians: function withinRadians(key, point, distance) {\n this.near(key, point);\n\n this._addCondition(key, '$maxDistance', distance);\n\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in miles) of results to\n * return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinMiles: function withinMiles(key, point, distance) {\n return this.withinRadians(key, point, distance / 3958.8);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in kilometers) of results\n * to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinKilometers: function withinKilometers(key, point, distance) {\n return this.withinRadians(key, point, distance / 6371.0);\n },\n\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n * @param {String} key The key to be constrained.\n * @param {AV.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {AV.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinGeoBox: function withinGeoBox(key, southwest, northeast) {\n if (!(southwest instanceof AV.GeoPoint)) {\n southwest = new AV.GeoPoint(southwest);\n }\n\n if (!(northeast instanceof AV.GeoPoint)) {\n northeast = new AV.GeoPoint(northeast);\n }\n\n this._addCondition(key, '$within', {\n $box: [southwest, northeast]\n });\n\n return this;\n },\n\n /**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String[]} keys The name of the key to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n include: function include(keys) {\n var _this4 = this;\n\n requires(keys, 'undefined is not a valid key');\n\n _.forEach(arguments, function (keys) {\n var _context;\n\n _this4._include = (0, _concat.default)(_context = _this4._include).call(_context, ensureArray(keys));\n });\n\n return this;\n },\n\n /**\n * Include the ACL.\n * @param {Boolean} [value=true] Whether to include the ACL\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n includeACL: function includeACL() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this._includeACL = value;\n return this;\n },\n\n /**\n * Restrict the fields of the returned AV.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {String[]} keys The names of the keys to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n select: function select(keys) {\n var _this5 = this;\n\n requires(keys, 'undefined is not a valid key');\n\n _.forEach(arguments, function (keys) {\n var _context2;\n\n _this5._select = (0, _concat.default)(_context2 = _this5._select).call(_context2, ensureArray(keys));\n });\n\n return this;\n },\n\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n * @param callback {Function} Callback that will be called with each result\n * of the query.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each: function each(callback) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this._order || this._skip || this._limit >= 0) {\n var error = new Error('Cannot iterate on a query with sort, skip, or limit.');\n return _promise.default.reject(error);\n }\n\n var query = new AV.Query(this.objectClass); // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n\n query._limit = options.batchSize || 100;\n query._where = _.clone(this._where);\n query._include = _.clone(this._include);\n query.ascending('objectId');\n var finished = false;\n return continueWhile(function () {\n return !finished;\n }, function () {\n return (0, _find.default)(query).call(query, options).then(function (results) {\n var callbacksDone = _promise.default.resolve();\n\n _.each(results, function (result) {\n callbacksDone = callbacksDone.then(function () {\n return callback(result);\n });\n });\n\n return callbacksDone.then(function () {\n if (results.length >= query._limit) {\n query.greaterThan('objectId', results[results.length - 1].id);\n } else {\n finished = true;\n }\n });\n });\n });\n },\n\n /**\n * Subscribe the changes of this query.\n *\n * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.\n *\n * @since 3.0.0\n * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;\n */\n subscribe: function subscribe(options) {\n return AV.LiveQuery.init(this, options);\n }\n });\n\n AV.FriendShipQuery = AV.Query._extend({\n _newObject: function _newObject() {\n var UserClass = AV.Object._getSubclass('_User');\n\n return new UserClass();\n },\n _processResult: function _processResult(json) {\n if (json && json[this._friendshipTag]) {\n var user = json[this._friendshipTag];\n\n if (user.__type === 'Pointer' && user.className === '_User') {\n delete user.__type;\n delete user.className;\n }\n\n return user;\n } else {\n return null;\n }\n }\n });\n};\n\n/***/ }),\n/* 559 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _keys = _interopRequireDefault(__webpack_require__(59));\n\nvar _ = __webpack_require__(3);\n\nvar EventEmitter = __webpack_require__(235);\n\nvar _require = __webpack_require__(30),\n inherits = _require.inherits;\n\nvar _require2 = __webpack_require__(27),\n request = _require2.request;\n\nvar subscribe = function subscribe(queryJSON, subscriptionId) {\n return request({\n method: 'POST',\n path: '/LiveQuery/subscribe',\n data: {\n query: queryJSON,\n id: subscriptionId\n }\n });\n};\n\nmodule.exports = function (AV) {\n var requireRealtime = function requireRealtime() {\n if (!AV._config.realtime) {\n throw new Error('LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query');\n }\n };\n /**\n * @class\n * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.\n * @since 3.0.0\n */\n\n\n AV.LiveQuery = inherits(EventEmitter,\n /** @lends AV.LiveQuery.prototype */\n {\n constructor: function constructor(id, client, queryJSON, subscriptionId) {\n var _this = this;\n\n EventEmitter.apply(this);\n this.id = id;\n this._client = client;\n\n this._client.register(this);\n\n this._queryJSON = queryJSON;\n this._subscriptionId = subscriptionId;\n this._onMessage = this._dispatch.bind(this);\n\n this._onReconnect = function () {\n subscribe(_this._queryJSON, _this._subscriptionId).catch(function (error) {\n return console.error(\"LiveQuery resubscribe error: \".concat(error.message));\n });\n };\n\n client.on('message', this._onMessage);\n client.on('reconnect', this._onReconnect);\n },\n _dispatch: function _dispatch(message) {\n var _this2 = this;\n\n message.forEach(function (_ref) {\n var op = _ref.op,\n object = _ref.object,\n queryId = _ref.query_id,\n updatedKeys = _ref.updatedKeys;\n if (queryId !== _this2.id) return;\n var target = AV.parseJSON(_.extend({\n __type: object.className === '_File' ? 'File' : 'Object'\n }, object));\n\n if (updatedKeys) {\n /**\n * An existing AV.Object which fulfills the Query you subscribe is updated.\n * @event AV.LiveQuery#update\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n\n /**\n * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query.\n * @event AV.LiveQuery#enter\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n\n /**\n * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.\n * @event AV.LiveQuery#leave\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n _this2.emit(op, target, updatedKeys);\n } else {\n /**\n * A new AV.Object which fulfills the Query you subscribe is created.\n * @event AV.LiveQuery#create\n * @param {AV.Object|AV.File} target updated object\n */\n\n /**\n * An existing AV.Object which fulfills the Query you subscribe is deleted.\n * @event AV.LiveQuery#delete\n * @param {AV.Object|AV.File} target updated object\n */\n _this2.emit(op, target);\n }\n });\n },\n\n /**\n * unsubscribe the query\n *\n * @return {Promise}\n */\n unsubscribe: function unsubscribe() {\n var client = this._client;\n client.off('message', this._onMessage);\n client.off('reconnect', this._onReconnect);\n client.deregister(this);\n return request({\n method: 'POST',\n path: '/LiveQuery/unsubscribe',\n data: {\n id: client.id,\n query_id: this.id\n }\n });\n }\n },\n /** @lends AV.LiveQuery */\n {\n init: function init(query) {\n var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref2$subscriptionId = _ref2.subscriptionId,\n userDefinedSubscriptionId = _ref2$subscriptionId === void 0 ? AV._getSubscriptionId() : _ref2$subscriptionId;\n\n requireRealtime();\n if (!(query instanceof AV.Query)) throw new TypeError('LiveQuery must be inited with a Query');\n return _promise.default.resolve(userDefinedSubscriptionId).then(function (subscriptionId) {\n return AV._config.realtime.createLiveQueryClient(subscriptionId).then(function (liveQueryClient) {\n var _query$_getParams = query._getParams(),\n where = _query$_getParams.where,\n keys = (0, _keys.default)(_query$_getParams),\n returnACL = _query$_getParams.returnACL;\n\n var queryJSON = {\n where: where,\n keys: keys,\n returnACL: returnACL,\n className: query.className\n };\n var promise = subscribe(queryJSON, subscriptionId).then(function (_ref3) {\n var queryId = _ref3.query_id;\n return new AV.LiveQuery(queryId, liveQueryClient, queryJSON, subscriptionId);\n }).finally(function () {\n liveQueryClient.deregister(promise);\n });\n liveQueryClient.register(promise);\n return promise;\n });\n });\n },\n\n /**\n * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.\n * @static\n * @return void\n */\n pause: function pause() {\n requireRealtime();\n return AV._config.realtime.pause();\n },\n\n /**\n * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.\n * @static\n * @return void\n */\n resume: function resume() {\n requireRealtime();\n return AV._config.realtime.resume();\n }\n });\n};\n\n/***/ }),\n/* 560 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(30),\n tap = _require.tap;\n\nmodule.exports = function (AV) {\n /**\n * @class\n * @example\n * AV.Captcha.request().then(captcha => {\n * captcha.bind({\n * textInput: 'code', // the id for textInput\n * image: 'captcha',\n * verifyButton: 'verify',\n * }, {\n * success: (validateCode) => {}, // next step\n * error: (error) => {}, // present error.message to user\n * });\n * });\n */\n AV.Captcha = function Captcha(options, authOptions) {\n this._options = options;\n this._authOptions = authOptions;\n /**\n * The image url of the captcha\n * @type string\n */\n\n this.url = undefined;\n /**\n * The captchaToken of the captcha.\n * @type string\n */\n\n this.captchaToken = undefined;\n /**\n * The validateToken of the captcha.\n * @type string\n */\n\n this.validateToken = undefined;\n };\n /**\n * Refresh the captcha\n * @return {Promise.<string>} a new capcha url\n */\n\n\n AV.Captcha.prototype.refresh = function refresh() {\n var _this = this;\n\n return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(function (_ref) {\n var captchaToken = _ref.captchaToken,\n url = _ref.url;\n\n _.extend(_this, {\n captchaToken: captchaToken,\n url: url\n });\n\n return url;\n });\n };\n /**\n * Verify the captcha\n * @param {String} code The code from user input\n * @return {Promise.<string>} validateToken if the code is valid\n */\n\n\n AV.Captcha.prototype.verify = function verify(code) {\n var _this2 = this;\n\n return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(tap(function (validateToken) {\n return _this2.validateToken = validateToken;\n }));\n };\n\n if (false) {\n /**\n * Bind the captcha to HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n * @param [elements]\n * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.\n * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.\n * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.\n * @param [callbacks]\n * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.\n * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.\n */\n AV.Captcha.prototype.bind = function bind(_ref2, _ref3) {\n var _this3 = this;\n\n var textInput = _ref2.textInput,\n image = _ref2.image,\n verifyButton = _ref2.verifyButton;\n var success = _ref3.success,\n error = _ref3.error;\n\n if (typeof textInput === 'string') {\n textInput = document.getElementById(textInput);\n if (!textInput) throw new Error(\"textInput with id \".concat(textInput, \" not found\"));\n }\n\n if (typeof image === 'string') {\n image = document.getElementById(image);\n if (!image) throw new Error(\"image with id \".concat(image, \" not found\"));\n }\n\n if (typeof verifyButton === 'string') {\n verifyButton = document.getElementById(verifyButton);\n if (!verifyButton) throw new Error(\"verifyButton with id \".concat(verifyButton, \" not found\"));\n }\n\n this.__refresh = function () {\n return _this3.refresh().then(function (url) {\n image.src = url;\n\n if (textInput) {\n textInput.value = '';\n textInput.focus();\n }\n }).catch(function (err) {\n return console.warn(\"refresh captcha fail: \".concat(err.message));\n });\n };\n\n if (image) {\n this.__image = image;\n image.src = this.url;\n image.addEventListener('click', this.__refresh);\n }\n\n this.__verify = function () {\n var code = textInput.value;\n\n _this3.verify(code).catch(function (err) {\n _this3.__refresh();\n\n throw err;\n }).then(success, error).catch(function (err) {\n return console.warn(\"verify captcha fail: \".concat(err.message));\n });\n };\n\n if (textInput && verifyButton) {\n this.__verifyButton = verifyButton;\n verifyButton.addEventListener('click', this.__verify);\n }\n };\n /**\n * unbind the captcha from HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n */\n\n\n AV.Captcha.prototype.unbind = function unbind() {\n if (this.__image) this.__image.removeEventListener('click', this.__refresh);\n if (this.__verifyButton) this.__verifyButton.removeEventListener('click', this.__verify);\n };\n }\n /**\n * Request a captcha\n * @param [options]\n * @param {Number} [options.width] width(px) of the captcha, ranged 60-200\n * @param {Number} [options.height] height(px) of the captcha, ranged 30-100\n * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required.\n * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required.\n * @return {Promise.<AV.Captcha>}\n */\n\n\n AV.Captcha.request = function (options, authOptions) {\n var captcha = new AV.Captcha(options, authOptions);\n return captcha.refresh().then(function () {\n return captcha;\n });\n };\n};\n\n/***/ }),\n/* 561 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(27),\n _request = _require._request,\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * Contains functions for calling and declaring\n * <p><strong><em>\n * Some functions are only available from Cloud Code.\n * </em></strong></p>\n *\n * @namespace\n * @borrows AV.Captcha.request as requestCaptcha\n */\n AV.Cloud = AV.Cloud || {};\n\n _.extend(AV.Cloud,\n /** @lends AV.Cloud */\n {\n /**\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n run: function run(name, data, options) {\n return request({\n service: 'engine',\n method: 'POST',\n path: \"/functions/\".concat(name),\n data: AV._encode(data, null, true),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response\n * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result of the function.\n */\n rpc: function rpc(name, data, options) {\n if (_.isArray(data)) {\n return _promise.default.reject(new Error(\"Can't pass Array as the param of rpc function in JavaScript SDK.\"));\n }\n\n return request({\n service: 'engine',\n method: 'POST',\n path: \"/call/\".concat(name),\n data: AV._encodeObjectOrArray(data),\n authOptions: options\n }).then(function (resp) {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Make a call to request server date time.\n * @return {Promise.<Date>} A promise that will be resolved with the result\n * of the function.\n * @since 0.5.9\n */\n getServerDate: function getServerDate() {\n return _request('date', null, null, 'GET').then(function (resp) {\n return AV._decode(resp);\n });\n },\n\n /**\n * Makes a call to request an sms code for operation verification.\n * @param {String|Object} data The mobile phone number string or a JSON\n * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.\n * @param {String} data.mobilePhoneNumber\n * @param {String} [data.template] sms template name\n * @param {String} [data.sign] sms signature name\n * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call\n * @param {SMSAuthOptions} [options]\n * @return {Promise} A promise that will be resolved if the request succeed\n */\n requestSmsCode: function requestSmsCode(data) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (_.isString(data)) {\n data = {\n mobilePhoneNumber: data\n };\n }\n\n if (!data.mobilePhoneNumber) {\n throw new Error('Missing mobilePhoneNumber.');\n }\n\n if (options.validateToken) {\n data = _.extend({}, data, {\n validate_token: options.validateToken\n });\n }\n\n return _request('requestSmsCode', null, null, 'POST', data, options);\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode\n * @param {String} code The sms code sent by AV.Cloud.requestSmsCode\n * @param {phone} phone The mobile phoner number.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifySmsCode: function verifySmsCode(code, phone) {\n if (!code) throw new Error('Missing sms code.');\n var params = {};\n\n if (_.isString(phone)) {\n params['mobilePhoneNumber'] = phone;\n }\n\n return _request('verifySmsCode', code, null, 'POST', params);\n },\n _requestCaptcha: function _requestCaptcha(options, authOptions) {\n return _request('requestCaptcha', null, null, 'GET', options, authOptions).then(function (_ref) {\n var url = _ref.captcha_url,\n captchaToken = _ref.captcha_token;\n return {\n captchaToken: captchaToken,\n url: url\n };\n });\n },\n\n /**\n * Request a captcha.\n */\n requestCaptcha: AV.Captcha.request,\n\n /**\n * Verify captcha code. This is the low-level API for captcha.\n * Checkout {@link AV.Captcha} for high abstract APIs.\n * @param {String} code the code from user input\n * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha}\n * @return {Promise.<String>} validateToken if the code is valid\n */\n verifyCaptcha: function verifyCaptcha(code, captchaToken) {\n return _request('verifyCaptcha', null, null, 'POST', {\n captcha_code: code,\n captcha_token: captchaToken\n }).then(function (_ref2) {\n var validateToken = _ref2.validate_token;\n return validateToken;\n });\n }\n });\n};\n\n/***/ }),\n/* 562 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar request = __webpack_require__(27).request;\n\nmodule.exports = function (AV) {\n AV.Installation = AV.Object.extend('_Installation');\n /**\n * @namespace\n */\n\n AV.Push = AV.Push || {};\n /**\n * Sends a push notification.\n * @param {Object} data The data of the push notification.\n * @param {String[]} [data.channels] An Array of channels to push to.\n * @param {Date} [data.push_time] A Date object for when to send the push.\n * @param {Date} [data.expiration_time] A Date object for when to expire\n * the push.\n * @param {Number} [data.expiration_interval] The seconds from now to expire the push.\n * @param {Number} [data.flow_control] The clients to notify per second\n * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {Object} data.data The data to send as part of the push.\n More details: https://url.leanapp.cn/pushData\n * @param {AuthOptions} [options]\n * @return {Promise}\n */\n\n AV.Push.send = function (data, options) {\n if (data.where) {\n data.where = data.where._getParams().where;\n }\n\n if (data.where && data.cql) {\n throw new Error(\"Both where and cql can't be set\");\n }\n\n if (data.push_time) {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time) {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error(\"Both expiration_time and expiration_interval can't be set\");\n }\n\n return request({\n service: 'push',\n method: 'POST',\n path: '/push',\n data: data,\n authOptions: options\n });\n };\n};\n\n/***/ }),\n/* 563 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(73));\n\nvar _ = __webpack_require__(3);\n\nvar AVRequest = __webpack_require__(27)._request;\n\nvar _require = __webpack_require__(30),\n getSessionToken = _require.getSessionToken;\n\nmodule.exports = function (AV) {\n var getUser = function getUser() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var sessionToken = getSessionToken(options);\n\n if (sessionToken) {\n return AV.User._fetchUserBySessionToken(getSessionToken(options));\n }\n\n return AV.User.currentAsync();\n };\n\n var getUserPointer = function getUserPointer(options) {\n return getUser(options).then(function (currUser) {\n return AV.Object.createWithoutData('_User', currUser.id)._toPointer();\n });\n };\n /**\n * Contains functions to deal with Status in LeanCloud.\n * @class\n */\n\n\n AV.Status = function (imageUrl, message) {\n this.data = {};\n this.inboxType = 'default';\n this.query = null;\n\n if (imageUrl && (0, _typeof2.default)(imageUrl) === 'object') {\n this.data = imageUrl;\n } else {\n if (imageUrl) {\n this.data.image = imageUrl;\n }\n\n if (message) {\n this.data.message = message;\n }\n }\n\n return this;\n };\n\n _.extend(AV.Status.prototype,\n /** @lends AV.Status.prototype */\n {\n /**\n * Gets the value of an attribute in status data.\n * @param {String} attr The string name of an attribute.\n */\n get: function get(attr) {\n return this.data[attr];\n },\n\n /**\n * Sets a hash of model attributes on the status data.\n * @param {String} key The key to set.\n * @param {any} value The value to give it.\n */\n set: function set(key, value) {\n this.data[key] = value;\n return this;\n },\n\n /**\n * Destroy this status,then it will not be avaiable in other user's inboxes.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function destroy(options) {\n if (!this.id) return _promise.default.reject(new Error('The status id is not exists.'));\n var request = AVRequest('statuses', null, this.id, 'DELETE', options);\n return request;\n },\n\n /**\n * Cast the AV.Status object to an AV.Object pointer.\n * @return {AV.Object} A AV.Object pointer.\n */\n toObject: function toObject() {\n if (!this.id) return null;\n return AV.Object.createWithoutData('_Status', this.id);\n },\n _getDataJSON: function _getDataJSON() {\n var json = _.clone(this.data);\n\n return AV._encode(json);\n },\n\n /**\n * Send a status by a AV.Query object.\n * @since 0.3.0\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a status to male users\n * var status = new AVStatus('image url', 'a message');\n * status.query = new AV.Query('_User');\n * status.query.equalTo('gender', 'male');\n * status.send().then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n send: function send() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n if (!this.query) {\n return AV.Status.sendStatusToFollowers(this, options);\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = _this.query._getParams();\n\n query.className = _this.query.className;\n var data = {};\n data.query = query;\n _this.data = _this.data || {};\n _this.data.source = _this.data.source || currUser;\n data.data = _this._getDataJSON();\n data.inboxType = _this.inboxType || 'default';\n return AVRequest('statuses', null, null, 'POST', data, options);\n }).then(function (response) {\n _this.id = response.objectId;\n _this.createdAt = AV._parseDate(response.createdAt);\n return _this;\n });\n },\n _finishFetch: function _finishFetch(serverData) {\n this.id = serverData.objectId;\n this.createdAt = AV._parseDate(serverData.createdAt);\n this.updatedAt = AV._parseDate(serverData.updatedAt);\n this.messageId = serverData.messageId;\n delete serverData.messageId;\n delete serverData.objectId;\n delete serverData.createdAt;\n delete serverData.updatedAt;\n this.data = AV._decode(serverData);\n }\n });\n /**\n * Send a status to current signined user's followers.\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendStatusToFollowers(status).then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n\n\n AV.Status.sendStatusToFollowers = function (status) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_Follower';\n query.keys = 'follower';\n query.where = {\n user: currUser\n };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = status.inboxType || 'default';\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function (response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n /**\n * <p>Send a status from current signined user to other user's private status inbox.</p>\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {String} target The target user or user's objectId.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a private status to user '52e84e47e4b0f8de283b079b'\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n\n\n AV.Status.sendPrivateStatus = function (status, target) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n\n if (!target) {\n throw new Error('Invalid target user.');\n }\n\n var userObjectId = _.isString(target) ? target : target.id;\n\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n\n return getUserPointer(options).then(function (currUser) {\n var query = {};\n query.className = '_User';\n query.where = {\n objectId: userObjectId\n };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = 'private';\n status.inboxType = 'private';\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function (response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n /**\n * Count unread statuses in someone's inbox.\n * @since 0.3.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the count\n * completes.\n * @example\n * AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n\n\n AV.Status.countUnreadStatuses = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!_.isString(inboxType)) options = inboxType;\n\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n\n return _promise.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/count', null, null, 'GET', params, options);\n });\n };\n /**\n * reset unread statuses count in someone's inbox.\n * @since 2.1.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the reset\n * completes.\n * @example\n * AV.Status.resetUnreadCount(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n\n\n AV.Status.resetUnreadCount = function (owner) {\n var inboxType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (!_.isString(inboxType)) options = inboxType;\n\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n\n return _promise.default.resolve(owner || getUser(options)).then(function (owner) {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest('subscribe/statuses/resetUnreadCount', null, null, 'POST', params, options);\n });\n };\n /**\n * Create a status query to find someone's published statuses.\n * @since 0.3.0\n * @param {AV.User} source The status source, typically the publisher.\n * @return {AV.Query} The query object for status.\n * @example\n * //Find current user's published statuses.\n * var query = AV.Status.statusQuery(AV.User.current());\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n\n\n AV.Status.statusQuery = function (source) {\n var query = new AV.Query('_Status');\n\n if (source) {\n query.equalTo('source', source);\n }\n\n return query;\n };\n /**\n * <p>AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.</p>\n * @class\n */\n\n\n AV.InboxQuery = AV.Query._extend(\n /** @lends AV.InboxQuery.prototype */\n {\n _objectClass: AV.Status,\n _sinceId: 0,\n _maxId: 0,\n _inboxType: 'default',\n _owner: null,\n _newObject: function _newObject() {\n return new AV.Status();\n },\n _createRequest: function _createRequest(params, options) {\n return AV.InboxQuery.__super__._createRequest.call(this, params, options, '/subscribe/statuses');\n },\n\n /**\n * Sets the messageId of results to skip before returning any results.\n * This is useful for pagination.\n * Default is zero.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n sinceId: function sinceId(id) {\n this._sinceId = id;\n return this;\n },\n\n /**\n * Sets the maximal messageId of results。\n * This is useful for pagination.\n * Default is zero that is no limition.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n maxId: function maxId(id) {\n this._maxId = id;\n return this;\n },\n\n /**\n * Sets the owner of the querying inbox.\n * @param {AV.User} owner The inbox owner.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n owner: function owner(_owner) {\n this._owner = _owner;\n return this;\n },\n\n /**\n * Sets the querying inbox type.default is 'default'.\n * @param {String} type The inbox type.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n inboxType: function inboxType(type) {\n this._inboxType = type;\n return this;\n },\n _getParams: function _getParams() {\n var params = AV.InboxQuery.__super__._getParams.call(this);\n\n params.owner = AV._encode(this._owner);\n params.inboxType = AV._encode(this._inboxType);\n params.sinceId = AV._encode(this._sinceId);\n params.maxId = AV._encode(this._maxId);\n return params;\n }\n });\n /**\n * Create a inbox status query to find someone's inbox statuses.\n * @since 0.3.0\n * @param {AV.User} owner The inbox's owner\n * @param {String} inboxType The inbox type,'default' by default.\n * @return {AV.InboxQuery} The inbox query object.\n * @see AV.InboxQuery\n * @example\n * //Find current user's default inbox statuses.\n * var query = AV.Status.inboxQuery(AV.User.current());\n * //find the statuses after the last message id\n * query.sinceId(lastMessageId);\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n\n AV.Status.inboxQuery = function (owner, inboxType) {\n var query = new AV.InboxQuery(AV.Status);\n\n if (owner) {\n query._owner = owner;\n }\n\n if (inboxType) {\n query._inboxType = inboxType;\n }\n\n return query;\n };\n};\n\n/***/ }),\n/* 564 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _ = __webpack_require__(3);\n\nvar AVRequest = __webpack_require__(27)._request;\n\nmodule.exports = function (AV) {\n /**\n * A builder to generate sort string for app searching.For example:\n * @class\n * @since 0.5.1\n * @example\n * var builder = new AV.SearchSortBuilder();\n * builder.ascending('key1').descending('key2','max');\n * var query = new AV.SearchQuery('Player');\n * query.sortBy(builder);\n * query.find().then();\n */\n AV.SearchSortBuilder = function () {\n this._sortFields = [];\n };\n\n _.extend(AV.SearchSortBuilder.prototype,\n /** @lends AV.SearchSortBuilder.prototype */\n {\n _addField: function _addField(key, order, mode, missing) {\n var field = {};\n field[key] = {\n order: order || 'asc',\n mode: mode || 'avg',\n missing: '_' + (missing || 'last')\n };\n\n this._sortFields.push(field);\n\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n ascending: function ascending(key, mode, missing) {\n return this._addField(key, 'asc', mode, missing);\n },\n\n /**\n * Sorts the results in descending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n descending: function descending(key, mode, missing) {\n return this._addField(key, 'desc', mode, missing);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Object} options The other options such as mode,order, unit etc.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n whereNear: function whereNear(key, point, options) {\n options = options || {};\n var field = {};\n var geo = {\n lat: point.latitude,\n lon: point.longitude\n };\n var m = {\n order: options.order || 'asc',\n mode: options.mode || 'avg',\n unit: options.unit || 'km'\n };\n m[key] = geo;\n field['_geo_distance'] = m;\n\n this._sortFields.push(field);\n\n return this;\n },\n\n /**\n * Build a sort string by configuration.\n * @return {String} the sort string.\n */\n build: function build() {\n return (0, _stringify.default)(AV._encode(this._sortFields));\n }\n });\n /**\n * App searching query.Use just like AV.Query:\n *\n * Visit <a href='https://leancloud.cn/docs/app_search_guide.html'>App Searching Guide</a>\n * for more details.\n * @class\n * @since 0.5.1\n * @example\n * var query = new AV.SearchQuery('Player');\n * query.queryString('*');\n * query.find().then(function(results) {\n * console.log('Found %d objects', query.hits());\n * //Process results\n * });\n */\n\n\n AV.SearchQuery = AV.Query._extend(\n /** @lends AV.SearchQuery.prototype */\n {\n _sid: null,\n _hits: 0,\n _queryString: null,\n _highlights: null,\n _sortBuilder: null,\n _clazz: null,\n constructor: function constructor(className) {\n if (className) {\n this._clazz = className;\n } else {\n className = '__INVALID_CLASS';\n }\n\n AV.Query.call(this, className);\n },\n _createRequest: function _createRequest(params, options) {\n return AVRequest('search/select', null, null, 'GET', params || this._getParams(), options);\n },\n\n /**\n * Sets the sid of app searching query.Default is null.\n * @param {String} sid Scroll id for searching.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n sid: function sid(_sid) {\n this._sid = _sid;\n return this;\n },\n\n /**\n * Sets the query string of app searching.\n * @param {String} q The query string.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n queryString: function queryString(q) {\n this._queryString = q;\n return this;\n },\n\n /**\n * Sets the highlight fields. Such as\n * <pre><code>\n * query.highlights('title');\n * //or pass an array.\n * query.highlights(['title', 'content'])\n * </code></pre>\n * @param {String|String[]} highlights a list of fields.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n highlights: function highlights(_highlights) {\n var objects;\n\n if (_highlights && _.isString(_highlights)) {\n objects = _.toArray(arguments);\n } else {\n objects = _highlights;\n }\n\n this._highlights = objects;\n return this;\n },\n\n /**\n * Sets the sort builder for this query.\n * @see AV.SearchSortBuilder\n * @param { AV.SearchSortBuilder} builder The sort builder.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n *\n */\n sortBy: function sortBy(builder) {\n this._sortBuilder = builder;\n return this;\n },\n\n /**\n * Returns the number of objects that match this query.\n * @return {Number}\n */\n hits: function hits() {\n if (!this._hits) {\n this._hits = 0;\n }\n\n return this._hits;\n },\n _processResult: function _processResult(json) {\n delete json['className'];\n delete json['_app_url'];\n delete json['_deeplink'];\n return json;\n },\n\n /**\n * Returns true when there are more documents can be retrieved by this\n * query instance, you can call find function to get more results.\n * @see AV.SearchQuery#find\n * @return {Boolean}\n */\n hasMore: function hasMore() {\n return !this._hitEnd;\n },\n\n /**\n * Reset current query instance state(such as sid, hits etc) except params\n * for a new searching. After resetting, hasMore() will return true.\n */\n reset: function reset() {\n this._hitEnd = false;\n this._sid = null;\n this._hits = 0;\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n *\n * @see AV.Query#find\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function find(options) {\n var self = this;\n\n var request = this._createRequest(undefined, options);\n\n return request.then(function (response) {\n //update sid for next querying.\n if (response.sid) {\n self._oldSid = self._sid;\n self._sid = response.sid;\n } else {\n self._sid = null;\n self._hitEnd = true;\n }\n\n self._hits = response.hits || 0;\n return (0, _map.default)(_).call(_, response.results, function (json) {\n if (json.className) {\n response.className = json.className;\n }\n\n var obj = self._newObject(response);\n\n obj.appURL = json['_app_url'];\n\n obj._finishFetch(self._processResult(json), true);\n\n return obj;\n });\n });\n },\n _getParams: function _getParams() {\n var params = AV.SearchQuery.__super__._getParams.call(this);\n\n delete params.where;\n\n if (this._clazz) {\n params.clazz = this.className;\n }\n\n if (this._sid) {\n params.sid = this._sid;\n }\n\n if (!this._queryString) {\n throw new Error('Please set query string.');\n } else {\n params.q = this._queryString;\n }\n\n if (this._highlights) {\n params.highlights = this._highlights.join(',');\n }\n\n if (this._sortBuilder && params.order) {\n throw new Error('sort and order can not be set at same time.');\n }\n\n if (this._sortBuilder) {\n params.sort = this._sortBuilder.build();\n }\n\n return params;\n }\n });\n};\n/**\n * Sorts the results in ascending order by the given key.\n *\n * @method AV.SearchQuery#ascending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addAscending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n\n/**\n * Sorts the results in descending order by the given key.\n *\n * @method AV.SearchQuery#descending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addDescending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n\n/**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @method AV.SearchQuery#include\n * @param {String[]} keys The name of the key to include.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @method AV.SearchQuery#skip\n * @param {Number} n the number of results to skip.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @method AV.SearchQuery#limit\n * @param {Number} n the number of results to limit to.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n/***/ }),\n/* 565 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n\nvar AVError = __webpack_require__(46);\n\nvar _require = __webpack_require__(27),\n request = _require.request;\n\nmodule.exports = function (AV) {\n /**\n * 包含了使用了 LeanCloud\n * <a href='/docs/leaninsight_guide.html'>离线数据分析功能</a>的函数。\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @namespace\n */\n AV.Insight = AV.Insight || {};\n\n _.extend(AV.Insight,\n /** @lends AV.Insight */\n {\n /**\n * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用\n * AV.Insight.JobQuery 查询任务状态和结果。\n * @param {Object} jobConfig 任务配置的 JSON 对象,例如:<code><pre>\n * { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n * \"saveAs\": {\n * \"className\" : \"UserGender\",\n * \"limit\": 1\n * }\n * }\n * </pre></code>\n * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n startJob: function startJob(jobConfig, options) {\n if (!jobConfig || !jobConfig.sql) {\n throw new Error('Please provide the sql to run the job.');\n }\n\n var data = {\n jobConfig: jobConfig,\n appId: AV.applicationId\n };\n return request({\n path: '/bigquery/jobs',\n method: 'POST',\n data: AV._encode(data, null, true),\n authOptions: options,\n signKey: false\n }).then(function (resp) {\n return AV._decode(resp).id;\n });\n },\n\n /**\n * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @param {String} event 监听的事件,目前尚不支持。\n * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,\n * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。\n *\n */\n on: function on(event, cb) {}\n });\n /**\n * 创建一个对象,用于查询 Insight 任务状态和结果。\n * @class\n * @param {String} id 任务 id\n * @since 0.5.5\n */\n\n\n AV.Insight.JobQuery = function (id, className) {\n if (!id) {\n throw new Error('Please provide the job id.');\n }\n\n this.id = id;\n this.className = className;\n this._skip = 0;\n this._limit = 100;\n };\n\n _.extend(AV.Insight.JobQuery.prototype,\n /** @lends AV.Insight.JobQuery.prototype */\n {\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function skip(n) {\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function limit(n) {\n this._limit = n;\n return this;\n },\n\n /**\n * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,\n * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间\n * startTime、endTime 等信息。\n *\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n *\n */\n find: function find(options) {\n var params = {\n skip: this._skip,\n limit: this._limit\n };\n return request({\n path: \"/bigquery/jobs/\".concat(this.id),\n method: 'GET',\n query: params,\n authOptions: options,\n signKey: false\n }).then(function (response) {\n if (response.error) {\n return _promise.default.reject(new AVError(response.code, response.error));\n }\n\n return _promise.default.resolve(response);\n });\n }\n });\n};\n\n/***/ }),\n/* 566 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(27),\n LCRequest = _require.request;\n\nvar _require2 = __webpack_require__(30),\n getSessionToken = _require2.getSessionToken;\n\nmodule.exports = function (AV) {\n var getUserWithSessionToken = function getUserWithSessionToken(authOptions) {\n if (authOptions.user) {\n if (!authOptions.user._sessionToken) {\n throw new Error('authOptions.user is not signed in.');\n }\n\n return _promise.default.resolve(authOptions.user);\n }\n\n if (authOptions.sessionToken) {\n return AV.User._fetchUserBySessionToken(authOptions.sessionToken);\n }\n\n return AV.User.currentAsync();\n };\n\n var getSessionTokenAsync = function getSessionTokenAsync(authOptions) {\n var sessionToken = getSessionToken(authOptions);\n\n if (sessionToken) {\n return _promise.default.resolve(sessionToken);\n }\n\n return AV.User.currentAsync().then(function (user) {\n if (user) {\n return user.getSessionToken();\n }\n });\n };\n /**\n * Contains functions to deal with Friendship in LeanCloud.\n * @class\n */\n\n\n AV.Friendship = {\n /**\n * Request friendship.\n * @since 4.8.0\n * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend.\n * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n request: function request(options) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var friend;\n var attributes;\n\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n\n var friendObj = _.isString(friend) ? AV.Object.createWithoutData('_User', friend) : friend;\n return getUserWithSessionToken(authOptions).then(function (userObj) {\n if (!userObj) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: {\n user: userObj._toPointer(),\n friend: friendObj._toPointer(),\n friendship: attributes\n },\n authOptions: authOptions\n });\n });\n },\n\n /**\n * Accept a friendship request.\n * @since 4.8.0\n * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest.\n * @param {AV.Object} options.request The request (or it's objectId) to be accepted.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n acceptRequest: function acceptRequest(options) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var request;\n var attributes;\n\n if (options.request) {\n request = options.request;\n attributes = options.attributes;\n } else {\n request = options;\n }\n\n var requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(function (sessionToken) {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/accept',\n data: {\n friendship: AV._encode(attributes)\n },\n authOptions: authOptions\n });\n });\n },\n\n /**\n * Decline a friendship request.\n * @param {AV.Object | string} request The request (or it's objectId) to be declined.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n declineRequest: function declineRequest(request) {\n var authOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(function (sessionToken) {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions: authOptions\n });\n });\n }\n };\n};\n\n/***/ }),\n/* 567 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(27),\n _request = _require._request;\n\nvar AV = __webpack_require__(69);\n\nvar serializeMessage = function serializeMessage(message) {\n if (typeof message === 'string') {\n return message;\n }\n\n if (typeof message.getPayload === 'function') {\n return (0, _stringify.default)(message.getPayload());\n }\n\n return (0, _stringify.default)(message);\n};\n/**\n * <p>An AV.Conversation is a local representation of a LeanCloud realtime's\n * conversation. This class is a subclass of AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * conversation specific methods, like get members, creators of this conversation.\n * </p>\n *\n * @class AV.Conversation\n * @param {String} name The name of the Role to create.\n * @param {Object} [options]\n * @param {Boolean} [options.isSystem] Set this conversation as system conversation.\n * @param {Boolean} [options.isTransient] Set this conversation as transient conversation.\n */\n\n\nmodule.exports = AV.Object.extend('_Conversation',\n/** @lends AV.Conversation.prototype */\n{\n constructor: function constructor(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n AV.Object.prototype.constructor.call(this, null, null);\n this.set('name', name);\n\n if (options.isSystem !== undefined) {\n this.set('sys', options.isSystem ? true : false);\n }\n\n if (options.isTransient !== undefined) {\n this.set('tr', options.isTransient ? true : false);\n }\n },\n\n /**\n * Get current conversation's creator.\n *\n * @return {String}\n */\n getCreator: function getCreator() {\n return this.get('c');\n },\n\n /**\n * Get the last message's time.\n *\n * @return {Date}\n */\n getLastMessageAt: function getLastMessageAt() {\n return this.get('lm');\n },\n\n /**\n * Get this conversation's members\n *\n * @return {String[]}\n */\n getMembers: function getMembers() {\n return this.get('m');\n },\n\n /**\n * Add a member to this conversation\n *\n * @param {String} member\n */\n addMember: function addMember(member) {\n return this.add('m', member);\n },\n\n /**\n * Get this conversation's members who set this conversation as muted.\n *\n * @return {String[]}\n */\n getMutedMembers: function getMutedMembers() {\n return this.get('mu');\n },\n\n /**\n * Get this conversation's name field.\n *\n * @return String\n */\n getName: function getName() {\n return this.get('name');\n },\n\n /**\n * Returns true if this conversation is transient conversation.\n *\n * @return {Boolean}\n */\n isTransient: function isTransient() {\n return this.get('tr');\n },\n\n /**\n * Returns true if this conversation is system conversation.\n *\n * @return {Boolean}\n */\n isSystem: function isSystem() {\n return this.get('sys');\n },\n\n /**\n * Send realtime message to this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}\n * @param {Object} [options]\n * @param {Boolean} [options.transient] Whether send this message as transient message or not.\n * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation.\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n send: function send(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n transient: false,\n message: serializeMessage(message)\n };\n\n if (options.toClients !== undefined) {\n data.to_peers = options.toClients;\n }\n\n if (options.transient !== undefined) {\n data.transient = options.transient ? true : false;\n }\n\n if (options.pushData !== undefined) {\n data.push_data = options.pushData;\n }\n\n return _request('rtm', 'messages', null, 'POST', data, authOptions);\n },\n\n /**\n * Send realtime broadcast message to all clients, via this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}.\n * @param {Object} [options]\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}.\n * @param {Object} [options.validTill] The message will valid till this time.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n broadcast: function broadcast(fromClient, message) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var authOptions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var data = {\n from_peer: fromClient,\n conv_id: this.id,\n message: serializeMessage(message)\n };\n\n if (options.pushData !== undefined) {\n data.push = options.pushData;\n }\n\n if (options.validTill !== undefined) {\n var ts = options.validTill;\n\n if (_.isDate(ts)) {\n ts = ts.getTime();\n }\n\n options.valid_till = ts;\n }\n\n return _request('rtm', 'broadcast', null, 'POST', data, authOptions);\n }\n});\n\n/***/ }),\n/* 568 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _ = __webpack_require__(3);\n\nvar _require = __webpack_require__(27),\n request = _require.request;\n\nvar _require2 = __webpack_require__(30),\n ensureArray = _require2.ensureArray,\n parseDate = _require2.parseDate;\n\nvar AV = __webpack_require__(69);\n/**\n * The version change interval for Leaderboard\n * @enum\n */\n\n\nAV.LeaderboardVersionChangeInterval = {\n NEVER: 'never',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month'\n};\n/**\n * The order of the leaderboard results\n * @enum\n */\n\nAV.LeaderboardOrder = {\n ASCENDING: 'ascending',\n DESCENDING: 'descending'\n};\n/**\n * The update strategy for Leaderboard\n * @enum\n */\n\nAV.LeaderboardUpdateStrategy = {\n /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */\n BETTER: 'better',\n\n /** Keep the last updated statistic */\n LAST: 'last',\n\n /** Keep the sum of all updated statistics */\n SUM: 'sum'\n};\n/**\n * @typedef {Object} Ranking\n * @property {number} rank Starts at 0\n * @property {number} value the statistic value of this ranking\n * @property {AV.User} user The user of this ranking\n * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`\n */\n\n/**\n * @typedef {Object} LeaderboardArchive\n * @property {string} statisticName\n * @property {number} version version of the leaderboard\n * @property {string} status\n * @property {string} url URL for the downloadable archive\n * @property {Date} activatedAt time when this version became active\n * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing\n */\n\n/**\n * @class\n */\n\nfunction Statistic(_ref) {\n var name = _ref.name,\n value = _ref.value,\n version = _ref.version;\n\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {number}\n */\n\n this.value = value;\n /**\n * @type {number?}\n */\n\n this.version = version;\n}\n\nvar parseStatisticData = function parseStatisticData(statisticData) {\n var _AV$_decode = AV._decode(statisticData),\n name = _AV$_decode.statisticName,\n value = _AV$_decode.statisticValue,\n version = _AV$_decode.version;\n\n return new Statistic({\n name: name,\n value: value,\n version: version\n });\n};\n/**\n * @class\n */\n\n\nAV.Leaderboard = function Leaderboard(statisticName) {\n /**\n * @type {string}\n */\n this.statisticName = statisticName;\n /**\n * @type {AV.LeaderboardOrder}\n */\n\n this.order = undefined;\n /**\n * @type {AV.LeaderboardUpdateStrategy}\n */\n\n this.updateStrategy = undefined;\n /**\n * @type {AV.LeaderboardVersionChangeInterval}\n */\n\n this.versionChangeInterval = undefined;\n /**\n * @type {number}\n */\n\n this.version = undefined;\n /**\n * @type {Date?}\n */\n\n this.nextResetAt = undefined;\n /**\n * @type {Date?}\n */\n\n this.createdAt = undefined;\n};\n\nvar Leaderboard = AV.Leaderboard;\n/**\n * Create an instance of Leaderboard for the give statistic name.\n * @param {string} statisticName\n * @return {AV.Leaderboard}\n */\n\nAV.Leaderboard.createWithoutData = function (statisticName) {\n return new Leaderboard(statisticName);\n};\n/**\n * (masterKey required) Create a new Leaderboard.\n * @param {Object} options\n * @param {string} options.statisticName\n * @param {AV.LeaderboardOrder} options.order\n * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK\n * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n\n\nAV.Leaderboard.createLeaderboard = function (_ref2, authOptions) {\n var statisticName = _ref2.statisticName,\n order = _ref2.order,\n versionChangeInterval = _ref2.versionChangeInterval,\n updateStrategy = _ref2.updateStrategy;\n return request({\n method: 'POST',\n path: '/leaderboard/leaderboards',\n data: {\n statisticName: statisticName,\n order: order,\n versionChangeInterval: versionChangeInterval,\n updateStrategy: updateStrategy\n },\n authOptions: authOptions\n }).then(function (data) {\n var leaderboard = new Leaderboard(statisticName);\n return leaderboard._finishFetch(data);\n });\n};\n/**\n * Get the Leaderboard with the specified statistic name.\n * @param {string} statisticName\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n\n\nAV.Leaderboard.getLeaderboard = function (statisticName, authOptions) {\n return Leaderboard.createWithoutData(statisticName).fetch(authOptions);\n};\n/**\n * Get Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Statistic[]>}\n */\n\n\nAV.Leaderboard.getStatistics = function (user) {\n var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n statisticNames = _ref3.statisticNames;\n\n var authOptions = arguments.length > 2 ? arguments[2] : undefined;\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'GET',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n statistics: statisticNames ? ensureArray(statisticNames).join(',') : undefined\n },\n authOptions: authOptions\n }).then(function (_ref4) {\n var results = _ref4.results;\n return (0, _map.default)(results).call(results, parseStatisticData);\n });\n });\n};\n/**\n * Update Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to update.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards\n * @return {Promise<Statistic[]>}\n */\n\n\nAV.Leaderboard.updateStatistics = function (user, statistics) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n var data = (0, _map.default)(_).call(_, statistics, function (value, key) {\n return {\n statisticName: key,\n statisticValue: value\n };\n });\n var overwrite = options.overwrite;\n return request({\n method: 'POST',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n overwrite: overwrite ? 1 : undefined\n },\n data: data,\n authOptions: options\n }).then(function (_ref5) {\n var results = _ref5.results;\n return (0, _map.default)(results).call(results, parseStatisticData);\n });\n });\n};\n/**\n * Delete Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to delete.\n * @param {AuthOptions} [options]\n * @return {Promise<void>}\n */\n\n\nAV.Leaderboard.deleteStatistics = function (user, statisticNames, authOptions) {\n return _promise.default.resolve().then(function () {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'DELETE',\n path: \"/leaderboard/users/\".concat(user.id, \"/statistics\"),\n query: {\n statistics: ensureArray(statisticNames).join(',')\n },\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n });\n};\n\n_.extend(Leaderboard.prototype,\n/** @lends AV.Leaderboard.prototype */\n{\n _finishFetch: function _finishFetch(data) {\n var _this = this;\n\n _.forEach(data, function (value, key) {\n if (key === 'updatedAt' || key === 'objectId') return;\n\n if (key === 'expiredAt') {\n key = 'nextResetAt';\n }\n\n if (key === 'createdAt') {\n value = parseDate(value);\n }\n\n if (value && value.__type === 'Date') {\n value = parseDate(value.iso);\n }\n\n _this[key] = value;\n });\n\n return this;\n },\n\n /**\n * Fetch data from the srever.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n fetch: function fetch(authOptions) {\n var _this2 = this;\n\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n authOptions: authOptions\n }).then(function (data) {\n return _this2._finishFetch(data);\n });\n },\n\n /**\n * Counts the number of users participated in this leaderboard\n * @param {Object} [options]\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<number>}\n */\n count: function count() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n version = _ref6.version;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/ranks\"),\n query: {\n count: 1,\n limit: 0,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref7) {\n var count = _ref7.count;\n return count;\n });\n },\n _getResults: function _getResults(_ref8, authOptions, userId) {\n var _context;\n\n var skip = _ref8.skip,\n limit = _ref8.limit,\n selectUserKeys = _ref8.selectUserKeys,\n includeUserKeys = _ref8.includeUserKeys,\n includeStatistics = _ref8.includeStatistics,\n version = _ref8.version;\n return request({\n method: 'GET',\n path: (0, _concat.default)(_context = \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/ranks\")).call(_context, userId ? \"/\".concat(userId) : ''),\n query: {\n skip: skip,\n limit: limit,\n selectUserKeys: _.union(ensureArray(selectUserKeys), ensureArray(includeUserKeys)).join(',') || undefined,\n includeUser: includeUserKeys ? ensureArray(includeUserKeys).join(',') : undefined,\n includeStatistics: includeStatistics ? ensureArray(includeStatistics).join(',') : undefined,\n version: version\n },\n authOptions: authOptions\n }).then(function (_ref9) {\n var rankings = _ref9.results;\n return (0, _map.default)(rankings).call(rankings, function (rankingData) {\n var _AV$_decode2 = AV._decode(rankingData),\n user = _AV$_decode2.user,\n value = _AV$_decode2.statisticValue,\n rank = _AV$_decode2.rank,\n _AV$_decode2$statisti = _AV$_decode2.statistics,\n statistics = _AV$_decode2$statisti === void 0 ? [] : _AV$_decode2$statisti;\n\n return {\n user: user,\n value: value,\n rank: rank,\n includedStatistics: (0, _map.default)(statistics).call(statistics, parseStatisticData)\n };\n });\n });\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResults: function getResults() {\n var _ref10 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref10.skip,\n limit = _ref10.limit,\n selectUserKeys = _ref10.selectUserKeys,\n includeUserKeys = _ref10.includeUserKeys,\n includeStatistics = _ref10.includeStatistics,\n version = _ref10.version;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return this._getResults({\n skip: skip,\n limit: limit,\n selectUserKeys: selectUserKeys,\n includeUserKeys: includeUserKeys,\n includeStatistics: includeStatistics,\n version: version\n }, authOptions);\n },\n\n /**\n * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResultsAroundUser: function getResultsAroundUser(user) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var authOptions = arguments.length > 2 ? arguments[2] : undefined;\n\n // getResultsAroundUser(options, authOptions)\n if (user && typeof user.id !== 'string') {\n return this.getResultsAroundUser(undefined, user, options);\n }\n\n var limit = options.limit,\n selectUserKeys = options.selectUserKeys,\n includeUserKeys = options.includeUserKeys,\n includeStatistics = options.includeStatistics,\n version = options.version;\n return this._getResults({\n limit: limit,\n selectUserKeys: selectUserKeys,\n includeUserKeys: includeUserKeys,\n includeStatistics: includeStatistics,\n version: version\n }, authOptions, user ? user.id : 'self');\n },\n _update: function _update(data, authOptions) {\n var _this3 = this;\n\n return request({\n method: 'PUT',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n data: data,\n authOptions: authOptions\n }).then(function (result) {\n return _this3._finishFetch(result);\n });\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateVersionChangeInterval: function updateVersionChangeInterval(versionChangeInterval, authOptions) {\n return this._update({\n versionChangeInterval: versionChangeInterval\n }, authOptions);\n },\n\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardUpdateStrategy} updateStrategy\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateUpdateStrategy: function updateUpdateStrategy(updateStrategy, authOptions) {\n return this._update({\n updateStrategy: updateStrategy\n }, authOptions);\n },\n\n /**\n * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n reset: function reset(authOptions) {\n var _this4 = this;\n\n return request({\n method: 'PUT',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/incrementVersion\"),\n authOptions: authOptions\n }).then(function (data) {\n return _this4._finishFetch(data);\n });\n },\n\n /**\n * (masterKey required) Delete the Leaderboard and its all archived versions.\n * @param {AuthOptions} [authOptions]\n * @return {void}\n */\n destroy: function destroy(authOptions) {\n return AV.request({\n method: 'DELETE',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName),\n authOptions: authOptions\n }).then(function () {\n return undefined;\n });\n },\n\n /**\n * (masterKey required) Get archived versions.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<LeaderboardArchive[]>}\n */\n getArchives: function getArchives() {\n var _this5 = this;\n\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n skip = _ref11.skip,\n limit = _ref11.limit;\n\n var authOptions = arguments.length > 1 ? arguments[1] : undefined;\n return request({\n method: 'GET',\n path: \"/leaderboard/leaderboards/\".concat(this.statisticName, \"/archives\"),\n query: {\n skip: skip,\n limit: limit\n },\n authOptions: authOptions\n }).then(function (_ref12) {\n var results = _ref12.results;\n return (0, _map.default)(results).call(results, function (_ref13) {\n var version = _ref13.version,\n status = _ref13.status,\n url = _ref13.url,\n activatedAt = _ref13.activatedAt,\n deactivatedAt = _ref13.deactivatedAt;\n return {\n statisticName: _this5.statisticName,\n version: version,\n status: status,\n url: url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso)\n };\n });\n });\n }\n});\n\n/***/ }),\n/* 569 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(73));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(92));\n\nvar _setPrototypeOf = _interopRequireDefault(__webpack_require__(238));\n\nvar _assign2 = _interopRequireDefault(__webpack_require__(152));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar _getOwnPropertySymbols = _interopRequireDefault(__webpack_require__(153));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _symbol = _interopRequireDefault(__webpack_require__(149));\n\nvar _iterator = _interopRequireDefault(__webpack_require__(576));\n\nvar _weakMap = _interopRequireDefault(__webpack_require__(260));\n\nvar _keys = _interopRequireDefault(__webpack_require__(115));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(151));\n\nvar _getPrototypeOf = _interopRequireDefault(__webpack_require__(147));\n\nvar _map = _interopRequireDefault(__webpack_require__(583));\n\n(0, _defineProperty.default)(exports, '__esModule', {\n value: true\n});\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar _extendStatics$ = function extendStatics$1(d, b) {\n _extendStatics$ = _setPrototypeOf.default || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics$(d, b);\n};\n\nfunction __extends$1(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics$(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = _assign2.default || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nfunction __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && (0, _indexOf.default)(e).call(e, p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof _getOwnPropertySymbols.default === \"function\") for (var i = 0, p = (0, _getOwnPropertySymbols.default)(s); i < p.length; i++) {\n if ((0, _indexOf.default)(e).call(e, p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nfunction __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = _promise.default))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nfunction __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof _symbol.default === \"function\" && (g[_iterator.default] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\nvar PROVIDER = \"lc_weapp\";\nvar PLATFORM = \"weixin\";\n\nfunction getLoginCode() {\n return new _promise.default(function (resolve, reject) {\n wx.login({\n success: function success(res) {\n return res.code ? resolve(res.code) : reject(new Error(res.errMsg));\n },\n fail: function fail(_a) {\n var errMsg = _a.errMsg;\n return reject(new Error(errMsg));\n }\n });\n });\n}\n\nvar getAuthInfo = function getAuthInfo(_a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.platform,\n platform = _c === void 0 ? PLATFORM : _c,\n _d = _b.preferUnionId,\n preferUnionId = _d === void 0 ? false : _d,\n _e = _b.asMainAccount,\n asMainAccount = _e === void 0 ? false : _e;\n\n return __awaiter(this, void 0, void 0, function () {\n var code, authData;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n return [4\n /*yield*/\n , getLoginCode()];\n\n case 1:\n code = _f.sent();\n authData = {\n code: code\n };\n\n if (preferUnionId) {\n authData.platform = platform;\n authData.main_account = asMainAccount;\n }\n\n return [2\n /*return*/\n , {\n authData: authData,\n platform: platform,\n provider: PROVIDER\n }];\n }\n });\n });\n};\n\nvar storage = {\n getItem: function getItem(key) {\n return wx.getStorageSync(key);\n },\n setItem: function setItem(key, value) {\n return wx.setStorageSync(key, value);\n },\n removeItem: function removeItem(key) {\n return wx.removeStorageSync(key);\n },\n clear: function clear() {\n return wx.clearStorageSync();\n }\n};\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\n\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = _setPrototypeOf.default || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar AbortError =\n/** @class */\nfunction (_super) {\n __extends(AbortError, _super);\n\n function AbortError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.name = \"AbortError\";\n return _this;\n }\n\n return AbortError;\n}(Error);\n\nvar request = function request(url, options) {\n if (options === void 0) {\n options = {};\n }\n\n var method = options.method,\n data = options.data,\n headers = options.headers,\n signal = options.signal;\n\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n return _promise.default.reject(new AbortError(\"Request aborted\"));\n }\n\n return new _promise.default(function (resolve, reject) {\n var task = wx.request({\n url: url,\n method: method,\n data: data,\n header: headers,\n complete: function complete(res) {\n signal === null || signal === void 0 ? void 0 : signal.removeEventListener(\"abort\", abortListener);\n\n if (!res.statusCode) {\n reject(new Error(res.errMsg));\n return;\n }\n\n resolve({\n ok: !(res.statusCode >= 400),\n status: res.statusCode,\n headers: res.header,\n data: res.data\n });\n }\n });\n\n var abortListener = function abortListener() {\n reject(new AbortError(\"Request aborted\"));\n task.abort();\n };\n\n signal === null || signal === void 0 ? void 0 : signal.addEventListener(\"abort\", abortListener);\n });\n};\n\nvar upload = function upload(url, file, options) {\n if (options === void 0) {\n options = {};\n }\n\n var headers = options.headers,\n data = options.data,\n onprogress = options.onprogress,\n signal = options.signal;\n\n if (signal === null || signal === void 0 ? void 0 : signal.aborted) {\n return _promise.default.reject(new AbortError(\"Request aborted\"));\n }\n\n if (!(file && file.data && file.data.uri)) {\n return _promise.default.reject(new TypeError(\"File data must be an object like { uri: localPath }.\"));\n }\n\n return new _promise.default(function (resolve, reject) {\n var task = wx.uploadFile({\n url: url,\n header: headers,\n filePath: file.data.uri,\n name: file.field,\n formData: data,\n success: function success(response) {\n var status = response.statusCode,\n data = response.data,\n rest = __rest(response, [\"statusCode\", \"data\"]);\n\n resolve(_assign(_assign({}, rest), {\n data: typeof data === \"string\" ? JSON.parse(data) : data,\n status: status,\n ok: !(status >= 400)\n }));\n },\n fail: function fail(response) {\n reject(new Error(response.errMsg));\n },\n complete: function complete() {\n signal === null || signal === void 0 ? void 0 : signal.removeEventListener(\"abort\", abortListener);\n }\n });\n\n var abortListener = function abortListener() {\n reject(new AbortError(\"Request aborted\"));\n task.abort();\n };\n\n signal === null || signal === void 0 ? void 0 : signal.addEventListener(\"abort\", abortListener);\n\n if (onprogress) {\n task.onProgressUpdate(function (event) {\n return onprogress({\n loaded: event.totalBytesSent,\n total: event.totalBytesExpectedToSend,\n percent: event.progress\n });\n });\n }\n });\n};\n/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\n\n\nvar privateData = new _weakMap.default();\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\n\nvar wrappers = new _weakMap.default();\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\n\nfunction pd(event) {\n var retv = privateData.get(event);\n console.assert(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n}\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\n\n\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"Unable to preventDefault inside passive event listener invocation.\", data.passiveListener);\n }\n\n return;\n }\n\n if (!data.event.cancelable) {\n return;\n }\n\n data.canceled = true;\n\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n}\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\n\n\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget: eventTarget,\n event: event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now()\n }); // https://heycam.github.io/webidl/#Unforgeable\n\n (0, _defineProperty.default)(this, \"isTrusted\", {\n value: false,\n enumerable: true\n }); // Define accessors\n\n var keys = (0, _keys.default)(event);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in this)) {\n (0, _defineProperty.default)(this, key, defineRedirectDescriptor(key));\n }\n }\n} // Should be enumerable, but class methods are not enumerable.\n\n\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type;\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget;\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget;\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath: function composedPath() {\n var currentTarget = pd(this).currentTarget;\n\n if (currentTarget == null) {\n return [];\n }\n\n return [currentTarget];\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0;\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1;\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2;\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3;\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase;\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation: function stopPropagation() {\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation: function stopImmediatePropagation() {\n var data = pd(this);\n data.stopped = true;\n data.immediateStopped = true;\n\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles);\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable);\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault: function preventDefault() {\n setCancelFlag(pd(this));\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled;\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed);\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp;\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget;\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped;\n },\n\n set cancelBubble(value) {\n if (!value) {\n return;\n }\n\n var data = pd(this);\n data.stopped = true;\n\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled;\n },\n\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent: function initEvent() {// Do nothing.\n }\n}; // `constructor` is not enumerable.\n\n(0, _defineProperty.default)(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true\n}); // Ensure `event instanceof window.Event` is `true`.\n\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n (0, _setPrototypeOf.default)(Event.prototype, window.Event.prototype); // Make association for wrappers.\n\n wrappers.set(window.Event.prototype, Event);\n}\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\n\n\nfunction defineRedirectDescriptor(key) {\n return {\n get: function get() {\n return pd(this).event[key];\n },\n set: function set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true\n };\n}\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\n\n\nfunction defineCallDescriptor(key) {\n return {\n value: function value() {\n var event = pd(this).event;\n return event[key].apply(event, arguments);\n },\n configurable: true,\n enumerable: true\n };\n}\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\n\n\nfunction defineWrapper(BaseEvent, proto) {\n var keys = (0, _keys.default)(proto);\n\n if (keys.length === 0) {\n return BaseEvent;\n }\n /** CustomEvent */\n\n\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: {\n value: CustomEvent,\n configurable: true,\n writable: true\n }\n }); // Define accessors.\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!(key in BaseEvent.prototype)) {\n var descriptor = (0, _getOwnPropertyDescriptor.default)(proto, key);\n var isFunc = typeof descriptor.value === \"function\";\n (0, _defineProperty.default)(CustomEvent.prototype, key, isFunc ? defineCallDescriptor(key) : defineRedirectDescriptor(key));\n }\n }\n\n return CustomEvent;\n}\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\n\n\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event;\n }\n\n var wrapper = wrappers.get(proto);\n\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper((0, _getPrototypeOf.default)(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n\n return wrapper;\n}\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\n\n\nfunction wrapEvent(eventTarget, event) {\n var Wrapper = getWrapper((0, _getPrototypeOf.default)(event));\n return new Wrapper(eventTarget, event);\n}\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\n\n\nfunction isStopped(event) {\n return pd(event).immediateStopped;\n}\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\n\n\nfunction setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n}\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\n\n\nfunction setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n}\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\n\n\nfunction setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n}\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\n\n\nvar listenersMap = new _weakMap.default(); // Listener types\n\nvar CAPTURE = 1;\nvar BUBBLE = 2;\nvar ATTRIBUTE = 3;\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\n\nfunction isObject(x) {\n return x !== null && (0, _typeof2.default)(x) === \"object\"; //eslint-disable-line no-restricted-syntax\n}\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\n\n\nfunction getListeners(eventTarget) {\n var listeners = listenersMap.get(eventTarget);\n\n if (listeners == null) {\n throw new TypeError(\"'this' is expected an EventTarget object, but got another value.\");\n }\n\n return listeners;\n}\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\n\n\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get: function get() {\n var listeners = getListeners(this);\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener;\n }\n\n node = node.next;\n }\n\n return null;\n },\n set: function set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n\n var listeners = getListeners(this); // Traverse to the tail while removing old value.\n\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n } // Add new value.\n\n\n if (listener !== null) {\n var newNode = {\n listener: listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null\n };\n\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true\n };\n}\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\n\n\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n (0, _defineProperty.default)(eventTargetPrototype, \"on\".concat(eventName), defineEventAttributeDescriptor(eventName));\n}\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\n\n\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true\n }\n });\n\n for (var i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget;\n}\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\n\n\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new _map.default());\n return;\n }\n\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0]);\n }\n\n if (arguments.length > 0) {\n var types = new Array(arguments.length);\n\n for (var i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n\n return defineCustomEventTarget(types);\n }\n\n throw new TypeError(\"Cannot call a class as a function\");\n /*eslint-enable consistent-return */\n} // Should be enumerable, but class methods are not enumerable.\n\n\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener: function addEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\");\n }\n\n var listeners = getListeners(this);\n var optionsIsObj = isObject(options);\n var capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var newNode = {\n listener: listener,\n listenerType: listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null\n }; // Set it as the first node if the first node is null.\n\n var node = listeners.get(eventName);\n\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return;\n } // Traverse to the tail while checking duplication..\n\n\n var prev = null;\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n // Should ignore duplication.\n return;\n }\n\n prev = node;\n node = node.next;\n } // Add it.\n\n\n prev.next = newNode;\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener: function removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return;\n }\n\n var listeners = getListeners(this);\n var capture = isObject(options) ? Boolean(options.capture) : Boolean(options);\n var listenerType = capture ? CAPTURE : BUBBLE;\n var prev = null;\n var node = listeners.get(eventName);\n\n while (node != null) {\n if (node.listener === listener && node.listenerType === listenerType) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n\n return;\n }\n\n prev = node;\n node = node.next;\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent: function dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.');\n } // If listeners aren't registered, terminate.\n\n\n var listeners = getListeners(this);\n var eventName = event.type;\n var node = listeners.get(eventName);\n\n if (node == null) {\n return true;\n } // Since we cannot rewrite several properties, so wrap object.\n\n\n var wrappedEvent = wrapEvent(this, event); // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n\n var prev = null;\n\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n } // Call this listener\n\n\n setPassiveListener(wrappedEvent, node.passive ? node.listener : null);\n\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(err);\n }\n }\n } else if (node.listenerType !== ATTRIBUTE && typeof node.listener.handleEvent === \"function\") {\n node.listener.handleEvent(wrappedEvent);\n } // Break if `event.stopImmediatePropagation` was called.\n\n\n if (isStopped(wrappedEvent)) {\n break;\n }\n\n node = node.next;\n }\n\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n return !wrappedEvent.defaultPrevented;\n }\n}; // `constructor` is not enumerable.\n\n(0, _defineProperty.default)(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true\n}); // Ensure `eventTarget instanceof window.EventTarget` is `true`.\n\nif (typeof window !== \"undefined\" && typeof window.EventTarget !== \"undefined\") {\n (0, _setPrototypeOf.default)(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nvar WS =\n/** @class */\nfunction (_super) {\n __extends$1(WS, _super);\n\n function WS(url, protocol) {\n var _this = _super.call(this) || this;\n\n _this._readyState = WS.CLOSED;\n\n if (!url) {\n throw new TypeError(\"Failed to construct 'WebSocket': url required\");\n }\n\n _this._url = url;\n _this._protocol = protocol;\n return _this;\n }\n\n (0, _defineProperty.default)(WS.prototype, \"url\", {\n get: function get() {\n return this._url;\n },\n enumerable: false,\n configurable: true\n });\n (0, _defineProperty.default)(WS.prototype, \"protocol\", {\n get: function get() {\n return this._protocol;\n },\n enumerable: false,\n configurable: true\n });\n (0, _defineProperty.default)(WS.prototype, \"readyState\", {\n get: function get() {\n return this._readyState;\n },\n enumerable: false,\n configurable: true\n });\n WS.CONNECTING = 0;\n WS.OPEN = 1;\n WS.CLOSING = 2;\n WS.CLOSED = 3;\n return WS;\n}(EventTarget(\"open\", \"error\", \"message\", \"close\"));\n\nvar WechatWS =\n/** @class */\nfunction (_super) {\n __extends$1(WechatWS, _super);\n\n function WechatWS(url, protocol) {\n var _this = _super.call(this, url, protocol) || this;\n\n if (protocol && !(wx.canIUse && wx.canIUse(\"connectSocket.object.protocols\"))) {\n throw new Error(\"subprotocol not supported in weapp\");\n }\n\n _this._readyState = WS.CONNECTING;\n\n var errorHandler = function errorHandler(event) {\n _this._readyState = WS.CLOSED;\n\n _this.dispatchEvent({\n type: \"error\",\n message: event.errMsg\n });\n };\n\n var socketTask = wx.connectSocket({\n url: url,\n protocols: _this._protocol === undefined || Array.isArray(_this._protocol) ? _this._protocol : [_this._protocol],\n fail: function fail(error) {\n return setTimeout(function () {\n return errorHandler(error);\n }, 0);\n }\n });\n _this._socketTask = socketTask;\n socketTask.onOpen(function () {\n _this._readyState = WS.OPEN;\n\n _this.dispatchEvent({\n type: \"open\"\n });\n });\n socketTask.onError(errorHandler);\n socketTask.onMessage(function (event) {\n var data = event.data;\n\n _this.dispatchEvent({\n data: data,\n type: \"message\"\n });\n });\n socketTask.onClose(function (event) {\n _this._readyState = WS.CLOSED;\n var code = event.code,\n reason = event.reason;\n\n _this.dispatchEvent({\n code: code,\n reason: reason,\n type: \"close\"\n });\n });\n return _this;\n }\n\n WechatWS.prototype.close = function () {\n if (this.readyState === WS.CLOSED) return;\n\n if (this.readyState === WS.CONNECTING) {\n console.warn(\"close WebSocket which is connecting might not work\");\n }\n\n this._socketTask.close({});\n };\n\n WechatWS.prototype.send = function (data) {\n if (this.readyState !== WS.OPEN) {\n throw new Error(\"INVALID_STATE_ERR\");\n }\n\n if (!(typeof data === \"string\" || data instanceof ArrayBuffer)) {\n throw new TypeError(\"only String/ArrayBuffer supported\");\n }\n\n this._socketTask.send({\n data: data\n });\n };\n\n return WechatWS;\n}(WS);\n\nvar WebSocket = WechatWS;\nvar platformInfo = {\n name: \"Weapp\"\n};\nexports.WebSocket = WebSocket;\nexports.getAuthInfo = getAuthInfo;\nexports.platformInfo = platformInfo;\nexports.request = request;\nexports.storage = storage;\nexports.upload = upload;\n\n/***/ }),\n/* 570 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(571);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 571 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(572);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.assign;\n\n\n/***/ }),\n/* 572 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar assign = __webpack_require__(573);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n\n\n/***/ }),\n/* 573 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(14);\nvar uncurryThis = __webpack_require__(4);\nvar call = __webpack_require__(15);\nvar fails = __webpack_require__(2);\nvar objectKeys = __webpack_require__(105);\nvar getOwnPropertySymbolsModule = __webpack_require__(104);\nvar propertyIsEnumerableModule = __webpack_require__(120);\nvar toObject = __webpack_require__(34);\nvar IndexedObject = __webpack_require__(95);\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n/***/ }),\n/* 574 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(575);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 575 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(244);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n\n\n/***/ }),\n/* 576 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(249);\n\n/***/ }),\n/* 577 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(578);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 578 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(53);\n__webpack_require__(579);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.WeakMap;\n\n\n/***/ }),\n/* 579 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(580);\n\n\n/***/ }),\n/* 580 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7);\nvar uncurryThis = __webpack_require__(4);\nvar defineBuiltIns = __webpack_require__(154);\nvar InternalMetadataModule = __webpack_require__(94);\nvar collection = __webpack_require__(155);\nvar collectionWeak = __webpack_require__(582);\nvar isObject = __webpack_require__(11);\nvar isExtensible = __webpack_require__(261);\nvar enforceInternalState = __webpack_require__(43).enforce;\nvar NATIVE_WEAK_MAP = __webpack_require__(170);\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.enable();\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n var nativeHas = uncurryThis(WeakMapPrototype.has);\n var nativeGet = uncurryThis(WeakMapPrototype.get);\n var nativeSet = uncurryThis(WeakMapPrototype.set);\n defineBuiltIns(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete(this, key) || state.frozen['delete'](key);\n } return nativeDelete(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) || state.frozen.has(key);\n } return nativeHas(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n } return nativeGet(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n } else nativeSet(this, key, value);\n return this;\n }\n });\n}\n\n\n/***/ }),\n/* 581 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = __webpack_require__(2);\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n\n\n/***/ }),\n/* 582 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar uncurryThis = __webpack_require__(4);\nvar defineBuiltIns = __webpack_require__(154);\nvar getWeakData = __webpack_require__(94).getWeakData;\nvar anObject = __webpack_require__(20);\nvar isObject = __webpack_require__(11);\nvar anInstance = __webpack_require__(108);\nvar iterate = __webpack_require__(42);\nvar ArrayIterationModule = __webpack_require__(70);\nvar hasOwn = __webpack_require__(13);\nvar InternalStateModule = __webpack_require__(43);\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\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.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) splice(this.entries, index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n defineBuiltIns(Prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && hasOwn(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && hasOwn(data, state.id);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return Constructor;\n }\n};\n\n\n/***/ }),\n/* 583 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(584);\n\n/***/ }),\n/* 584 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(585);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 585 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(586);\n__webpack_require__(53);\n__webpack_require__(55);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Map;\n\n\n/***/ }),\n/* 586 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(587);\n\n\n/***/ }),\n/* 587 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(155);\nvar collectionStrong = __webpack_require__(263);\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n/* 588 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _require = __webpack_require__(156),\n Realtime = _require.Realtime,\n setRTMAdapters = _require.setAdapters;\n\nvar _require2 = __webpack_require__(664),\n LiveQueryPlugin = _require2.LiveQueryPlugin;\n\nRealtime.__preRegisteredPlugins = [LiveQueryPlugin];\n\nmodule.exports = function (AV) {\n AV._sharedConfig.liveQueryRealtime = Realtime;\n var setAdapters = AV.setAdapters;\n\n AV.setAdapters = function (adapters) {\n setAdapters(adapters);\n setRTMAdapters(adapters);\n };\n\n return AV;\n};\n\n/***/ }),\n/* 589 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _typeof3 = _interopRequireDefault(__webpack_require__(73));\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(92));\n\nvar _freeze = _interopRequireDefault(__webpack_require__(590));\n\nvar _assign = _interopRequireDefault(__webpack_require__(152));\n\nvar _symbol = _interopRequireDefault(__webpack_require__(149));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _keys = _interopRequireDefault(__webpack_require__(115));\n\nvar _getOwnPropertySymbols = _interopRequireDefault(__webpack_require__(153));\n\nvar _filter = _interopRequireDefault(__webpack_require__(250));\n\nvar _getOwnPropertyDescriptor = _interopRequireDefault(__webpack_require__(151));\n\nvar _getOwnPropertyDescriptors = _interopRequireDefault(__webpack_require__(594));\n\nvar _defineProperties = _interopRequireDefault(__webpack_require__(598));\n\nvar _promise = _interopRequireDefault(__webpack_require__(12));\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\nvar _indexOf = _interopRequireDefault(__webpack_require__(71));\n\nvar _weakMap = _interopRequireDefault(__webpack_require__(260));\n\nvar _stringify = _interopRequireDefault(__webpack_require__(36));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _reduce = _interopRequireDefault(__webpack_require__(602));\n\nvar _find = _interopRequireDefault(__webpack_require__(93));\n\nvar _set = _interopRequireDefault(__webpack_require__(264));\n\nvar _context6, _context15;\n\n(0, _defineProperty2.default)(exports, '__esModule', {\n value: true\n});\n\nfunction _interopDefault(ex) {\n return ex && (0, _typeof3.default)(ex) === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar protobufLight = _interopDefault(__webpack_require__(612));\n\nvar EventEmitter = _interopDefault(__webpack_require__(616));\n\nvar _regeneratorRuntime = _interopDefault(__webpack_require__(617));\n\nvar _asyncToGenerator = _interopDefault(__webpack_require__(619));\n\nvar _toConsumableArray = _interopDefault(__webpack_require__(620));\n\nvar _defineProperty = _interopDefault(__webpack_require__(623));\n\nvar _objectWithoutProperties = _interopDefault(__webpack_require__(624));\n\nvar _assertThisInitialized = _interopDefault(__webpack_require__(626));\n\nvar _inheritsLoose = _interopDefault(__webpack_require__(627));\n\nvar d = _interopDefault(__webpack_require__(60));\n\nvar shuffle = _interopDefault(__webpack_require__(628));\n\nvar values = _interopDefault(__webpack_require__(269));\n\nvar _toArray = _interopDefault(__webpack_require__(655));\n\nvar _createClass = _interopDefault(__webpack_require__(658));\n\nvar _applyDecoratedDescriptor = _interopDefault(__webpack_require__(659));\n\nvar StateMachine = _interopDefault(__webpack_require__(660));\n\nvar _typeof = _interopDefault(__webpack_require__(661));\n\nvar isPlainObject = _interopDefault(__webpack_require__(662));\n\nvar promiseTimeout = __webpack_require__(251);\n\nvar messageCompiled = protobufLight.newBuilder({})['import']({\n \"package\": 'push_server.messages2',\n syntax: 'proto2',\n options: {\n objc_class_prefix: 'AVIM'\n },\n messages: [{\n name: 'JsonObjectMessage',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'data',\n id: 1\n }]\n }, {\n name: 'UnreadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'required',\n type: 'int32',\n name: 'unread',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentioned',\n id: 8\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 9\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 10\n }]\n }, {\n name: 'LogItem',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'msgId',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'ackAt',\n id: 5\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'readAt',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 9\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'bin',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 11\n }]\n }, {\n name: 'ConvMemberInfo',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'role',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'infoId',\n id: 3\n }]\n }, {\n name: 'DataCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 1\n }, {\n rule: 'repeated',\n type: 'JsonObjectMessage',\n name: 'msg',\n id: 2\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 3\n }]\n }, {\n name: 'SessionCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'ua',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'tag',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'deviceId',\n id: 7\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'onlineSessionPeerIds',\n id: 9\n }, {\n rule: 'optional',\n type: 'string',\n name: 'st',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'stTtl',\n id: 11\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 12\n }, {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'deviceToken',\n id: 14\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'sp',\n id: 15\n }, {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 16\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastUnreadNotifTime',\n id: 17\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 18\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'configBitmap',\n id: 19\n }]\n }, {\n name: 'ErrorCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'int32',\n name: 'code',\n id: 1\n }, {\n rule: 'required',\n type: 'string',\n name: 'reason',\n id: 2\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 4\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'pids',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 6\n }]\n }, {\n name: 'DirectCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'msg',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'fromPeerId',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 5\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'hasMore',\n id: 6\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toPeerIds',\n id: 7\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 10\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 12\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'dt',\n id: 14\n }, {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 15\n }, {\n rule: 'optional',\n type: 'string',\n name: 'pushData',\n id: 16\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'will',\n id: 17\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 18\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 19\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 20\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 21\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 22\n }]\n }, {\n name: 'AckCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 6\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'fromts',\n id: 7\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'tots',\n id: 8\n }, {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 12\n }]\n }, {\n name: 'UnreadCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'UnreadTuple',\n name: 'convs',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'notifTime',\n id: 2\n }]\n }, {\n name: 'ConvCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'string',\n name: 'm',\n id: 1\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 2\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'unique',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cdate',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'initBy',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'sort',\n id: 7\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 8\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'skip',\n id: 9\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'flag',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'count',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'udate',\n id: 12\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 14\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 15\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'statusSub',\n id: 16\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'statusPub',\n id: 17\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'statusTTL',\n id: 18\n }, {\n rule: 'optional',\n type: 'string',\n name: 'uniqueId',\n id: 19\n }, {\n rule: 'optional',\n type: 'string',\n name: 'targetClientId',\n id: 20\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 21\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 22\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'queryAllMembers',\n id: 23\n }, {\n rule: 'repeated',\n type: 'MaxReadTuple',\n name: 'maxReadTuples',\n id: 24\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 25\n }, {\n rule: 'optional',\n type: 'ConvMemberInfo',\n name: 'info',\n id: 26\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'tempConv',\n id: 27\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'tempConvTTL',\n id: 28\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'tempConvIds',\n id: 29\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 30\n }, {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 31\n }, {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 40\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 100\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'where',\n id: 101\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attr',\n id: 103\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attrModified',\n id: 104\n }]\n }, {\n name: 'RoomCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 4\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 5\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'roomPeerIds',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'byPeerId',\n id: 7\n }]\n }, {\n name: 'LogsCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'l',\n id: 2\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 3\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 4\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'tt',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'tmid',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 7\n }, {\n rule: 'optional',\n type: 'string',\n name: 'checksum',\n id: 8\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'stored',\n id: 9\n }, {\n rule: 'optional',\n type: 'QueryDirection',\n name: 'direction',\n id: 10,\n options: {\n \"default\": 'OLD'\n }\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'tIncluded',\n id: 11\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'ttIncluded',\n id: 12\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'lctype',\n id: 13\n }, {\n rule: 'repeated',\n type: 'LogItem',\n name: 'logs',\n id: 105\n }],\n enums: [{\n name: 'QueryDirection',\n syntax: 'proto2',\n values: [{\n name: 'OLD',\n id: 1\n }, {\n name: 'NEW',\n id: 2\n }]\n }]\n }, {\n name: 'RcpCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'read',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5\n }]\n }, {\n name: 'ReadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3\n }]\n }, {\n name: 'MaxReadTuple',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 3\n }]\n }, {\n name: 'ReadCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2\n }, {\n rule: 'repeated',\n type: 'ReadTuple',\n name: 'convs',\n id: 3\n }]\n }, {\n name: 'PresenceCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'StatusType',\n name: 'status',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 3\n }]\n }, {\n name: 'ReportCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'bool',\n name: 'initiative',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 3\n }]\n }, {\n name: 'PatchItem',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 2\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'recall',\n id: 4\n }, {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 5\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 6\n }, {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 7\n }, {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 8\n }, {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 10\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'patchCode',\n id: 11\n }, {\n rule: 'optional',\n type: 'string',\n name: 'patchReason',\n id: 12\n }]\n }, {\n name: 'PatchCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'repeated',\n type: 'PatchItem',\n name: 'patches',\n id: 1\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 2\n }]\n }, {\n name: 'PubsubCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'topic',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'subtopic',\n id: 4\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'topics',\n id: 5\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'subtopics',\n id: 6\n }, {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 7\n }]\n }, {\n name: 'BlacklistCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'string',\n name: 'srcCid',\n id: 1\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toPids',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'srcPid',\n id: 3\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'toCids',\n id: 4\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 6\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'blockedPids',\n id: 8\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'blockedCids',\n id: 9\n }, {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 10\n }, {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 11\n }, {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 12\n }, {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 13\n }, {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 14\n }]\n }, {\n name: 'GenericCommand',\n syntax: 'proto2',\n fields: [{\n rule: 'optional',\n type: 'CommandType',\n name: 'cmd',\n id: 1\n }, {\n rule: 'optional',\n type: 'OpType',\n name: 'op',\n id: 2\n }, {\n rule: 'optional',\n type: 'string',\n name: 'appId',\n id: 3\n }, {\n rule: 'optional',\n type: 'string',\n name: 'peerId',\n id: 4\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'i',\n id: 5\n }, {\n rule: 'optional',\n type: 'string',\n name: 'installationId',\n id: 6\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'priority',\n id: 7\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'service',\n id: 8\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'serverTs',\n id: 9\n }, {\n rule: 'optional',\n type: 'int64',\n name: 'clientTs',\n id: 10\n }, {\n rule: 'optional',\n type: 'int32',\n name: 'notificationType',\n id: 11\n }, {\n rule: 'optional',\n type: 'DataCommand',\n name: 'dataMessage',\n id: 101\n }, {\n rule: 'optional',\n type: 'SessionCommand',\n name: 'sessionMessage',\n id: 102\n }, {\n rule: 'optional',\n type: 'ErrorCommand',\n name: 'errorMessage',\n id: 103\n }, {\n rule: 'optional',\n type: 'DirectCommand',\n name: 'directMessage',\n id: 104\n }, {\n rule: 'optional',\n type: 'AckCommand',\n name: 'ackMessage',\n id: 105\n }, {\n rule: 'optional',\n type: 'UnreadCommand',\n name: 'unreadMessage',\n id: 106\n }, {\n rule: 'optional',\n type: 'ReadCommand',\n name: 'readMessage',\n id: 107\n }, {\n rule: 'optional',\n type: 'RcpCommand',\n name: 'rcpMessage',\n id: 108\n }, {\n rule: 'optional',\n type: 'LogsCommand',\n name: 'logsMessage',\n id: 109\n }, {\n rule: 'optional',\n type: 'ConvCommand',\n name: 'convMessage',\n id: 110\n }, {\n rule: 'optional',\n type: 'RoomCommand',\n name: 'roomMessage',\n id: 111\n }, {\n rule: 'optional',\n type: 'PresenceCommand',\n name: 'presenceMessage',\n id: 112\n }, {\n rule: 'optional',\n type: 'ReportCommand',\n name: 'reportMessage',\n id: 113\n }, {\n rule: 'optional',\n type: 'PatchCommand',\n name: 'patchMessage',\n id: 114\n }, {\n rule: 'optional',\n type: 'PubsubCommand',\n name: 'pubsubMessage',\n id: 115\n }, {\n rule: 'optional',\n type: 'BlacklistCommand',\n name: 'blacklistMessage',\n id: 116\n }]\n }],\n enums: [{\n name: 'CommandType',\n syntax: 'proto2',\n values: [{\n name: 'session',\n id: 0\n }, {\n name: 'conv',\n id: 1\n }, {\n name: 'direct',\n id: 2\n }, {\n name: 'ack',\n id: 3\n }, {\n name: 'rcp',\n id: 4\n }, {\n name: 'unread',\n id: 5\n }, {\n name: 'logs',\n id: 6\n }, {\n name: 'error',\n id: 7\n }, {\n name: 'login',\n id: 8\n }, {\n name: 'data',\n id: 9\n }, {\n name: 'room',\n id: 10\n }, {\n name: 'read',\n id: 11\n }, {\n name: 'presence',\n id: 12\n }, {\n name: 'report',\n id: 13\n }, {\n name: 'echo',\n id: 14\n }, {\n name: 'loggedin',\n id: 15\n }, {\n name: 'logout',\n id: 16\n }, {\n name: 'loggedout',\n id: 17\n }, {\n name: 'patch',\n id: 18\n }, {\n name: 'pubsub',\n id: 19\n }, {\n name: 'blacklist',\n id: 20\n }, {\n name: 'goaway',\n id: 21\n }]\n }, {\n name: 'OpType',\n syntax: 'proto2',\n values: [{\n name: 'open',\n id: 1\n }, {\n name: 'add',\n id: 2\n }, {\n name: 'remove',\n id: 3\n }, {\n name: 'close',\n id: 4\n }, {\n name: 'opened',\n id: 5\n }, {\n name: 'closed',\n id: 6\n }, {\n name: 'query',\n id: 7\n }, {\n name: 'query_result',\n id: 8\n }, {\n name: 'conflict',\n id: 9\n }, {\n name: 'added',\n id: 10\n }, {\n name: 'removed',\n id: 11\n }, {\n name: 'refresh',\n id: 12\n }, {\n name: 'refreshed',\n id: 13\n }, {\n name: 'start',\n id: 30\n }, {\n name: 'started',\n id: 31\n }, {\n name: 'joined',\n id: 32\n }, {\n name: 'members_joined',\n id: 33\n }, {\n name: 'left',\n id: 39\n }, {\n name: 'members_left',\n id: 40\n }, {\n name: 'results',\n id: 42\n }, {\n name: 'count',\n id: 43\n }, {\n name: 'result',\n id: 44\n }, {\n name: 'update',\n id: 45\n }, {\n name: 'updated',\n id: 46\n }, {\n name: 'mute',\n id: 47\n }, {\n name: 'unmute',\n id: 48\n }, {\n name: 'status',\n id: 49\n }, {\n name: 'members',\n id: 50\n }, {\n name: 'max_read',\n id: 51\n }, {\n name: 'is_member',\n id: 52\n }, {\n name: 'member_info_update',\n id: 53\n }, {\n name: 'member_info_updated',\n id: 54\n }, {\n name: 'member_info_changed',\n id: 55\n }, {\n name: 'join',\n id: 80\n }, {\n name: 'invite',\n id: 81\n }, {\n name: 'leave',\n id: 82\n }, {\n name: 'kick',\n id: 83\n }, {\n name: 'reject',\n id: 84\n }, {\n name: 'invited',\n id: 85\n }, {\n name: 'kicked',\n id: 86\n }, {\n name: 'upload',\n id: 100\n }, {\n name: 'uploaded',\n id: 101\n }, {\n name: 'subscribe',\n id: 120\n }, {\n name: 'subscribed',\n id: 121\n }, {\n name: 'unsubscribe',\n id: 122\n }, {\n name: 'unsubscribed',\n id: 123\n }, {\n name: 'is_subscribed',\n id: 124\n }, {\n name: 'modify',\n id: 150\n }, {\n name: 'modified',\n id: 151\n }, {\n name: 'block',\n id: 170\n }, {\n name: 'unblock',\n id: 171\n }, {\n name: 'blocked',\n id: 172\n }, {\n name: 'unblocked',\n id: 173\n }, {\n name: 'members_blocked',\n id: 174\n }, {\n name: 'members_unblocked',\n id: 175\n }, {\n name: 'check_block',\n id: 176\n }, {\n name: 'check_result',\n id: 177\n }, {\n name: 'add_shutup',\n id: 180\n }, {\n name: 'remove_shutup',\n id: 181\n }, {\n name: 'query_shutup',\n id: 182\n }, {\n name: 'shutup_added',\n id: 183\n }, {\n name: 'shutup_removed',\n id: 184\n }, {\n name: 'shutup_result',\n id: 185\n }, {\n name: 'shutuped',\n id: 186\n }, {\n name: 'unshutuped',\n id: 187\n }, {\n name: 'members_shutuped',\n id: 188\n }, {\n name: 'members_unshutuped',\n id: 189\n }, {\n name: 'check_shutup',\n id: 190\n }]\n }, {\n name: 'StatusType',\n syntax: 'proto2',\n values: [{\n name: 'on',\n id: 1\n }, {\n name: 'off',\n id: 2\n }]\n }],\n isNamespace: true\n}).build();\nvar _messages$push_server = messageCompiled.push_server.messages2,\n JsonObjectMessage = _messages$push_server.JsonObjectMessage,\n UnreadTuple = _messages$push_server.UnreadTuple,\n LogItem = _messages$push_server.LogItem,\n DataCommand = _messages$push_server.DataCommand,\n SessionCommand = _messages$push_server.SessionCommand,\n ErrorCommand = _messages$push_server.ErrorCommand,\n DirectCommand = _messages$push_server.DirectCommand,\n AckCommand = _messages$push_server.AckCommand,\n UnreadCommand = _messages$push_server.UnreadCommand,\n ConvCommand = _messages$push_server.ConvCommand,\n RoomCommand = _messages$push_server.RoomCommand,\n LogsCommand = _messages$push_server.LogsCommand,\n RcpCommand = _messages$push_server.RcpCommand,\n ReadTuple = _messages$push_server.ReadTuple,\n MaxReadTuple = _messages$push_server.MaxReadTuple,\n ReadCommand = _messages$push_server.ReadCommand,\n PresenceCommand = _messages$push_server.PresenceCommand,\n ReportCommand = _messages$push_server.ReportCommand,\n GenericCommand = _messages$push_server.GenericCommand,\n BlacklistCommand = _messages$push_server.BlacklistCommand,\n PatchCommand = _messages$push_server.PatchCommand,\n PatchItem = _messages$push_server.PatchItem,\n ConvMemberInfo = _messages$push_server.ConvMemberInfo,\n CommandType = _messages$push_server.CommandType,\n OpType = _messages$push_server.OpType,\n StatusType = _messages$push_server.StatusType;\nvar message = /*#__PURE__*/(0, _freeze.default)({\n __proto__: null,\n JsonObjectMessage: JsonObjectMessage,\n UnreadTuple: UnreadTuple,\n LogItem: LogItem,\n DataCommand: DataCommand,\n SessionCommand: SessionCommand,\n ErrorCommand: ErrorCommand,\n DirectCommand: DirectCommand,\n AckCommand: AckCommand,\n UnreadCommand: UnreadCommand,\n ConvCommand: ConvCommand,\n RoomCommand: RoomCommand,\n LogsCommand: LogsCommand,\n RcpCommand: RcpCommand,\n ReadTuple: ReadTuple,\n MaxReadTuple: MaxReadTuple,\n ReadCommand: ReadCommand,\n PresenceCommand: PresenceCommand,\n ReportCommand: ReportCommand,\n GenericCommand: GenericCommand,\n BlacklistCommand: BlacklistCommand,\n PatchCommand: PatchCommand,\n PatchItem: PatchItem,\n ConvMemberInfo: ConvMemberInfo,\n CommandType: CommandType,\n OpType: OpType,\n StatusType: StatusType\n});\nvar adapters = {};\n\nvar getAdapter = function getAdapter(name) {\n var adapter = adapters[name];\n\n if (adapter === undefined) {\n throw new Error(\"\".concat(name, \" adapter is not configured\"));\n }\n\n return adapter;\n};\n/**\n * 指定 Adapters\n * @function\n * @memberof module:leancloud-realtime\n * @param {Adapters} newAdapters Adapters 的类型请参考 {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} 中的定义\n */\n\n\nvar setAdapters = function setAdapters(newAdapters) {\n (0, _assign.default)(adapters, newAdapters);\n};\n/* eslint-disable */\n\n\nvar global$1 = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {};\nvar EXPIRED = (0, _symbol.default)('expired');\nvar debug = d('LC:Expirable');\n\nvar Expirable = /*#__PURE__*/function () {\n function Expirable(value, ttl) {\n this.originalValue = value;\n\n if (typeof ttl === 'number') {\n this.expiredAt = Date.now() + ttl;\n }\n }\n\n _createClass(Expirable, [{\n key: \"value\",\n get: function get() {\n var expired = this.expiredAt && this.expiredAt <= Date.now();\n if (expired) debug(\"expired: \".concat(this.originalValue));\n return expired ? EXPIRED : this.originalValue;\n }\n }]);\n\n return Expirable;\n}();\n\nExpirable.EXPIRED = EXPIRED;\nvar debug$1 = d('LC:Cache');\n\nvar Cache = /*#__PURE__*/function () {\n function Cache() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'anonymous';\n this.name = name;\n this._map = {};\n }\n\n var _proto = Cache.prototype;\n\n _proto.get = function get(key) {\n var _context5;\n\n var cache = this._map[key];\n\n if (cache) {\n var value = cache.value;\n\n if (value !== Expirable.EXPIRED) {\n debug$1('[%s] hit: %s', this.name, key);\n return value;\n }\n\n delete this._map[key];\n }\n\n debug$1((0, _concat.default)(_context5 = \"[\".concat(this.name, \"] missed: \")).call(_context5, key));\n return null;\n };\n\n _proto.set = function set(key, value, ttl) {\n debug$1('[%s] set: %s %d', this.name, key, ttl);\n this._map[key] = new Expirable(value, ttl);\n };\n\n return Cache;\n}();\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = (0, _keys.default)(object);\n\n if (_getOwnPropertySymbols.default) {\n var symbols = (0, _getOwnPropertySymbols.default)(object);\n if (enumerableOnly) symbols = (0, _filter.default)(symbols).call(symbols, function (sym) {\n return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (_getOwnPropertyDescriptors.default) {\n (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key));\n });\n }\n }\n\n return target;\n}\n/**\n * 调试日志控制器\n * @const\n * @memberof module:leancloud-realtime\n * @example\n * debug.enable(); // 启用调试日志\n * debug.disable(); // 关闭调试日志\n */\n\n\nvar debug$2 = {\n enable: function enable() {\n var namespaces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'LC*';\n return d.enable(namespaces);\n },\n disable: d.disable\n};\n\nvar tryAll = function tryAll(promiseConstructors) {\n var promise = new _promise.default(promiseConstructors[0]);\n\n if (promiseConstructors.length === 1) {\n return promise;\n }\n\n return promise[\"catch\"](function () {\n return tryAll((0, _slice.default)(promiseConstructors).call(promiseConstructors, 1));\n });\n}; // eslint-disable-next-line no-sequences\n\n\nvar tap = function tap(interceptor) {\n return function (value) {\n return interceptor(value), value;\n };\n};\n\nvar isIE10 = global$1.navigator && global$1.navigator.userAgent && (0, _indexOf.default)(_context6 = global$1.navigator.userAgent).call(_context6, 'MSIE 10.') !== -1;\nvar map = new _weakMap.default(); // protected property helper\n\nvar internal = function internal(object) {\n if (!map.has(object)) {\n map.set(object, {});\n }\n\n return map.get(object);\n};\n\nvar compact = function compact(obj, filter) {\n if (!isPlainObject(obj)) return obj;\n\n var object = _objectSpread({}, obj);\n\n (0, _keys.default)(object).forEach(function (prop) {\n var value = object[prop];\n\n if (value === filter) {\n delete object[prop];\n } else {\n object[prop] = compact(value, filter);\n }\n });\n return object;\n}; // debug utility\n\n\nvar removeNull = function removeNull(obj) {\n return compact(obj, null);\n};\n\nvar trim = function trim(message) {\n return removeNull(JSON.parse((0, _stringify.default)(message)));\n};\n\nvar ensureArray = function ensureArray(target) {\n if (Array.isArray(target)) {\n return target;\n }\n\n if (target === undefined || target === null) {\n return [];\n }\n\n return [target];\n};\n\nvar isWeapp = // eslint-disable-next-line no-undef\n(typeof wx === \"undefined\" ? \"undefined\" : _typeof(wx)) === 'object' && typeof wx.connectSocket === 'function'; // throttle decorator\n\nvar isCNApp = function isCNApp(appId) {\n return (0, _slice.default)(appId).call(appId, -9) !== '-MdYXbMMI';\n};\n\nvar equalBuffer = function equalBuffer(buffer1, buffer2) {\n if (!buffer1 || !buffer2) return false;\n if (buffer1.byteLength !== buffer2.byteLength) return false;\n var a = new Uint8Array(buffer1);\n var b = new Uint8Array(buffer2);\n return !a.some(function (value, index) {\n return value !== b[index];\n });\n};\n\nvar _class;\n\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = (0, _keys.default)(object);\n\n if (_getOwnPropertySymbols.default) {\n var symbols = (0, _getOwnPropertySymbols.default)(object);\n if (enumerableOnly) symbols = (0, _filter.default)(symbols).call(symbols, function (sym) {\n return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (_getOwnPropertyDescriptors.default) {\n (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar debug$3 = d('LC:WebSocketPlus');\nvar OPEN = 'open';\nvar DISCONNECT = 'disconnect';\nvar RECONNECT = 'reconnect';\nvar RETRY = 'retry';\nvar SCHEDULE = 'schedule';\nvar OFFLINE = 'offline';\nvar ONLINE = 'online';\nvar ERROR = 'error';\nvar MESSAGE = 'message';\nvar HEARTBEAT_TIME = 180000;\nvar TIMEOUT_TIME = 380000;\n\nvar DEFAULT_RETRY_STRATEGY = function DEFAULT_RETRY_STRATEGY(attempt) {\n return Math.min(1000 * Math.pow(2, attempt), 300000);\n};\n\nvar requireConnected = function requireConnected(target, name, descriptor) {\n return _objectSpread$1(_objectSpread$1({}, descriptor), {}, {\n value: function requireConnectedWrapper() {\n var _context7;\n\n var _descriptor$value;\n\n this.checkConnectionAvailability(name);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_descriptor$value = descriptor.value).call.apply(_descriptor$value, (0, _concat.default)(_context7 = [this]).call(_context7, args));\n }\n });\n};\n\nvar WebSocketPlus = (_class = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(WebSocketPlus, _EventEmitter);\n\n _createClass(WebSocketPlus, [{\n key: \"urls\",\n get: function get() {\n return this._urls;\n },\n set: function set(urls) {\n this._urls = ensureArray(urls);\n }\n }]);\n\n function WebSocketPlus(getUrls, protocol) {\n var _this;\n\n _this = _EventEmitter.call(this) || this;\n\n _this.init();\n\n _this._protocol = protocol;\n\n _promise.default.resolve(typeof getUrls === 'function' ? getUrls() : getUrls).then(ensureArray).then(function (urls) {\n _this._urls = urls;\n return _this._open();\n }).then(function () {\n _this.__postponeTimeoutTimer = _this._postponeTimeoutTimer.bind(_assertThisInitialized(_this));\n\n if (global$1.addEventListener) {\n _this.__pause = function () {\n if (_this.can('pause')) _this.pause();\n };\n\n _this.__resume = function () {\n if (_this.can('resume')) _this.resume();\n };\n\n global$1.addEventListener('offline', _this.__pause);\n global$1.addEventListener('online', _this.__resume);\n }\n\n _this.open();\n })[\"catch\"](_this[\"throw\"].bind(_assertThisInitialized(_this)));\n\n return _this;\n }\n\n var _proto = WebSocketPlus.prototype;\n\n _proto._open = function _open() {\n var _this2 = this;\n\n return this._createWs(this._urls, this._protocol).then(function (ws) {\n var _context8;\n\n var _this2$_urls = _toArray(_this2._urls),\n first = _this2$_urls[0],\n reset = (0, _slice.default)(_this2$_urls).call(_this2$_urls, 1);\n\n _this2._urls = (0, _concat.default)(_context8 = []).call(_context8, _toConsumableArray(reset), [first]);\n return ws;\n });\n };\n\n _proto._createWs = function _createWs(urls, protocol) {\n var _this3 = this;\n\n return tryAll((0, _map.default)(urls).call(urls, function (url) {\n return function (resolve, reject) {\n var _context9;\n\n debug$3((0, _concat.default)(_context9 = \"connect [\".concat(url, \"] \")).call(_context9, protocol));\n var WebSocket = getAdapter('WebSocket');\n var ws = protocol ? new WebSocket(url, protocol) : new WebSocket(url);\n ws.binaryType = _this3.binaryType || 'arraybuffer';\n\n ws.onopen = function () {\n return resolve(ws);\n };\n\n ws.onclose = function (error) {\n if (error instanceof Error) {\n return reject(error);\n } // in browser, error event is useless\n\n\n return reject(new Error(\"Failed to connect [\".concat(url, \"]\")));\n };\n\n ws.onerror = ws.onclose;\n };\n })).then(function (ws) {\n _this3._ws = ws;\n _this3._ws.onclose = _this3._handleClose.bind(_this3);\n _this3._ws.onmessage = _this3._handleMessage.bind(_this3);\n return ws;\n });\n };\n\n _proto._destroyWs = function _destroyWs() {\n var ws = this._ws;\n if (!ws) return;\n ws.onopen = null;\n ws.onclose = null;\n ws.onerror = null;\n ws.onmessage = null;\n this._ws = null;\n ws.close();\n } // eslint-disable-next-line class-methods-use-this\n ;\n\n _proto.onbeforeevent = function onbeforeevent(event, from, to) {\n var _context10, _context11;\n\n for (var _len2 = arguments.length, payload = new Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n payload[_key2 - 3] = arguments[_key2];\n }\n\n debug$3((0, _concat.default)(_context10 = (0, _concat.default)(_context11 = \"\".concat(event, \": \")).call(_context11, from, \" -> \")).call(_context10, to, \" %o\"), payload);\n };\n\n _proto.onopen = function onopen() {\n this.emit(OPEN);\n };\n\n _proto.onconnected = function onconnected() {\n this._startConnectionKeeper();\n };\n\n _proto.onleaveconnected = function onleaveconnected(event, from, to) {\n this._stopConnectionKeeper();\n\n this._destroyWs();\n\n if (to === 'offline' || to === 'disconnected') {\n this.emit(DISCONNECT);\n }\n };\n\n _proto.onpause = function onpause() {\n this.emit(OFFLINE);\n };\n\n _proto.onbeforeresume = function onbeforeresume() {\n this.emit(ONLINE);\n };\n\n _proto.onreconnect = function onreconnect() {\n this.emit(RECONNECT);\n };\n\n _proto.ondisconnected = function ondisconnected(event, from, to) {\n var _context12;\n\n var _this4 = this;\n\n var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var delay = from === OFFLINE ? 0 : DEFAULT_RETRY_STRATEGY.call(null, attempt);\n debug$3((0, _concat.default)(_context12 = \"schedule attempt=\".concat(attempt, \" delay=\")).call(_context12, delay));\n this.emit(SCHEDULE, attempt, delay);\n\n if (this.__scheduledRetry) {\n clearTimeout(this.__scheduledRetry);\n }\n\n this.__scheduledRetry = setTimeout(function () {\n if (_this4.is('disconnected')) {\n _this4.retry(attempt);\n }\n }, delay);\n };\n\n _proto.onretry = function onretry(event, from, to) {\n var _this5 = this;\n\n var attempt = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n this.emit(RETRY, attempt);\n\n this._open().then(function () {\n return _this5.can('reconnect') && _this5.reconnect();\n }, function () {\n return _this5.can('fail') && _this5.fail(attempt + 1);\n });\n };\n\n _proto.onerror = function onerror(event, from, to, error) {\n this.emit(ERROR, error);\n };\n\n _proto.onclose = function onclose() {\n if (global$1.removeEventListener) {\n if (this.__pause) global$1.removeEventListener('offline', this.__pause);\n if (this.__resume) global$1.removeEventListener('online', this.__resume);\n }\n };\n\n _proto.checkConnectionAvailability = function checkConnectionAvailability() {\n var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'API';\n\n if (!this.is('connected')) {\n var _context13;\n\n var currentState = this.current;\n console.warn((0, _concat.default)(_context13 = \"\".concat(name, \" should not be called when the connection is \")).call(_context13, currentState));\n\n if (this.is('disconnected') || this.is('reconnecting')) {\n console.warn('disconnect and reconnect event should be handled to avoid such calls.');\n }\n\n throw new Error('Connection unavailable');\n }\n } // jsdoc-ignore-start\n ;\n\n _proto. // jsdoc-ignore-end\n _ping = function _ping() {\n debug$3('ping');\n\n try {\n this.ping();\n } catch (error) {\n console.warn(\"websocket ping error: \".concat(error.message));\n }\n };\n\n _proto.ping = function ping() {\n if (this._ws.ping) {\n this._ws.ping();\n } else {\n console.warn(\"The WebSocket implement does not support sending ping frame.\\n Override ping method to use application defined ping/pong mechanism.\");\n }\n };\n\n _proto._postponeTimeoutTimer = function _postponeTimeoutTimer() {\n var _this6 = this;\n\n debug$3('_postponeTimeoutTimer');\n\n this._clearTimeoutTimers();\n\n this._timeoutTimer = setTimeout(function () {\n debug$3('timeout');\n\n _this6.disconnect();\n }, TIMEOUT_TIME);\n };\n\n _proto._clearTimeoutTimers = function _clearTimeoutTimers() {\n if (this._timeoutTimer) {\n clearTimeout(this._timeoutTimer);\n }\n };\n\n _proto._startConnectionKeeper = function _startConnectionKeeper() {\n debug$3('start connection keeper');\n this._heartbeatTimer = setInterval(this._ping.bind(this), HEARTBEAT_TIME);\n var addListener = this._ws.addListener || this._ws.addEventListener;\n\n if (!addListener) {\n debug$3('connection keeper disabled due to the lack of #addEventListener.');\n return;\n }\n\n addListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n addListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n\n this._postponeTimeoutTimer();\n };\n\n _proto._stopConnectionKeeper = function _stopConnectionKeeper() {\n debug$3('stop connection keeper'); // websockets/ws#489\n\n var removeListener = this._ws.removeListener || this._ws.removeEventListener;\n\n if (removeListener) {\n removeListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n removeListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n\n this._clearTimeoutTimers();\n }\n\n if (this._heartbeatTimer) {\n clearInterval(this._heartbeatTimer);\n }\n };\n\n _proto._handleClose = function _handleClose(event) {\n var _context14;\n\n debug$3((0, _concat.default)(_context14 = \"ws closed [\".concat(event.code, \"] \")).call(_context14, event.reason)); // socket closed manually, ignore close event.\n\n if (this.isFinished()) return;\n this.handleClose(event);\n };\n\n _proto.handleClose = function handleClose() {\n // reconnect\n this.disconnect();\n } // jsdoc-ignore-start\n ;\n\n _proto. // jsdoc-ignore-end\n send = function send(data) {\n debug$3('send', data);\n\n this._ws.send(data);\n };\n\n _proto._handleMessage = function _handleMessage(event) {\n debug$3('message', event.data);\n this.handleMessage(event.data);\n };\n\n _proto.handleMessage = function handleMessage(message) {\n this.emit(MESSAGE, message);\n };\n\n return WebSocketPlus;\n}(EventEmitter), (_applyDecoratedDescriptor(_class.prototype, \"_ping\", [requireConnected], (0, _getOwnPropertyDescriptor.default)(_class.prototype, \"_ping\"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, \"send\", [requireConnected], (0, _getOwnPropertyDescriptor.default)(_class.prototype, \"send\"), _class.prototype)), _class);\nStateMachine.create({\n target: WebSocketPlus.prototype,\n initial: {\n state: 'initialized',\n event: 'init',\n defer: true\n },\n terminal: 'closed',\n events: [{\n name: 'open',\n from: 'initialized',\n to: 'connected'\n }, {\n name: 'disconnect',\n from: 'connected',\n to: 'disconnected'\n }, {\n name: 'retry',\n from: 'disconnected',\n to: 'reconnecting'\n }, {\n name: 'fail',\n from: 'reconnecting',\n to: 'disconnected'\n }, {\n name: 'reconnect',\n from: 'reconnecting',\n to: 'connected'\n }, {\n name: 'pause',\n from: ['connected', 'disconnected', 'reconnecting'],\n to: 'offline'\n }, {}, {\n name: 'resume',\n from: 'offline',\n to: 'disconnected'\n }, {\n name: 'close',\n from: ['connected', 'disconnected', 'reconnecting', 'offline'],\n to: 'closed'\n }, {\n name: 'throw',\n from: '*',\n to: 'error'\n }]\n});\nvar error = (0, _freeze.default)({\n 1000: {\n name: 'CLOSE_NORMAL'\n },\n 1006: {\n name: 'CLOSE_ABNORMAL'\n },\n 4100: {\n name: 'APP_NOT_AVAILABLE',\n message: 'App not exists or realtime message service is disabled.'\n },\n 4102: {\n name: 'SIGNATURE_FAILED',\n message: 'Login signature mismatch.'\n },\n 4103: {\n name: 'INVALID_LOGIN',\n message: 'Malformed clientId.'\n },\n 4105: {\n name: 'SESSION_REQUIRED',\n message: 'Message sent before session opened.'\n },\n 4107: {\n name: 'READ_TIMEOUT'\n },\n 4108: {\n name: 'LOGIN_TIMEOUT'\n },\n 4109: {\n name: 'FRAME_TOO_LONG'\n },\n 4110: {\n name: 'INVALID_ORIGIN',\n message: 'Access denied by domain whitelist.'\n },\n 4111: {\n name: 'SESSION_CONFLICT'\n },\n 4112: {\n name: 'SESSION_TOKEN_EXPIRED'\n },\n 4113: {\n name: 'APP_QUOTA_EXCEEDED',\n message: 'The daily active users limit exceeded.'\n },\n 4116: {\n name: 'MESSAGE_SENT_QUOTA_EXCEEDED',\n message: 'Command sent too fast.'\n },\n 4200: {\n name: 'INTERNAL_ERROR',\n message: 'Internal error, please contact LeanCloud for support.'\n },\n 4301: {\n name: 'CONVERSATION_API_FAILED',\n message: 'Upstream Conversatoin API failed, see error.detail for details.'\n },\n 4302: {\n name: 'CONVERSATION_SIGNATURE_FAILED',\n message: 'Conversation action signature mismatch.'\n },\n 4303: {\n name: 'CONVERSATION_NOT_FOUND'\n },\n 4304: {\n name: 'CONVERSATION_FULL'\n },\n 4305: {\n name: 'CONVERSATION_REJECTED_BY_APP',\n message: 'Conversation action rejected by hook.'\n },\n 4306: {\n name: 'CONVERSATION_UPDATE_FAILED'\n },\n 4307: {\n name: 'CONVERSATION_READ_ONLY'\n },\n 4308: {\n name: 'CONVERSATION_NOT_ALLOWED'\n },\n 4309: {\n name: 'CONVERSATION_UPDATE_REJECTED',\n message: 'Conversation update rejected because the client is not a member.'\n },\n 4310: {\n name: 'CONVERSATION_QUERY_FAILED',\n message: 'Conversation query failed because it is too expansive.'\n },\n 4311: {\n name: 'CONVERSATION_LOG_FAILED'\n },\n 4312: {\n name: 'CONVERSATION_LOG_REJECTED',\n message: 'Message query rejected because the client is not a member of the conversation.'\n },\n 4313: {\n name: 'SYSTEM_CONVERSATION_REQUIRED'\n },\n 4314: {\n name: 'NORMAL_CONVERSATION_REQUIRED'\n },\n 4315: {\n name: 'CONVERSATION_BLACKLISTED',\n message: 'Blacklisted in the conversation.'\n },\n 4316: {\n name: 'TRANSIENT_CONVERSATION_REQUIRED'\n },\n 4317: {\n name: 'CONVERSATION_MEMBERSHIP_REQUIRED'\n },\n 4318: {\n name: 'CONVERSATION_API_QUOTA_EXCEEDED',\n message: 'LeanCloud API quota exceeded. You may upgrade your plan.'\n },\n 4323: {\n name: 'TEMPORARY_CONVERSATION_EXPIRED',\n message: 'Temporary conversation expired or does not exist.'\n },\n 4401: {\n name: 'INVALID_MESSAGING_TARGET',\n message: 'Conversation does not exist or client is not a member.'\n },\n 4402: {\n name: 'MESSAGE_REJECTED_BY_APP',\n message: 'Message rejected by hook.'\n },\n 4403: {\n name: 'MESSAGE_OWNERSHIP_REQUIRED'\n },\n 4404: {\n name: 'MESSAGE_NOT_FOUND'\n },\n 4405: {\n name: 'MESSAGE_UPDATE_REJECTED_BY_APP',\n message: 'Message update rejected by hook.'\n },\n 4406: {\n name: 'MESSAGE_EDIT_DISABLED'\n },\n 4407: {\n name: 'MESSAGE_RECALL_DISABLED'\n },\n 5130: {\n name: 'OWNER_PROMOTION_NOT_ALLOWED',\n message: \"Updating a member's role to owner is not allowed.\"\n }\n});\nvar ErrorCode = (0, _freeze.default)((0, _reduce.default)(_context15 = (0, _keys.default)(error)).call(_context15, function (result, code) {\n return (0, _assign.default)(result, _defineProperty({}, error[code].name, Number(code)));\n}, {}));\n\nvar createError = function createError(_ref) {\n var code = _ref.code,\n reason = _ref.reason,\n appCode = _ref.appCode,\n detail = _ref.detail,\n errorMessage = _ref.error;\n var message = reason || detail || errorMessage;\n var name = reason;\n\n if (!message && error[code]) {\n name = error[code].name;\n message = error[code].message || name;\n }\n\n if (!message) {\n message = \"Unknow Error: \".concat(code);\n }\n\n var err = new Error(message);\n return (0, _assign.default)(err, {\n code: code,\n appCode: appCode,\n detail: detail,\n name: name\n });\n};\n\nvar debug$4 = d('LC:Connection');\nvar COMMAND_TIMEOUT = 20000;\nvar EXPIRE = (0, _symbol.default)('expire');\n\nvar isIdempotentCommand = function isIdempotentCommand(command) {\n return !(command.cmd === CommandType.direct || command.cmd === CommandType.session && command.op === OpType.open || command.cmd === CommandType.conv && (command.op === OpType.start || command.op === OpType.update || command.op === OpType.members));\n};\n\nvar Connection = /*#__PURE__*/function (_WebSocketPlus) {\n _inheritsLoose(Connection, _WebSocketPlus);\n\n function Connection(getUrl, _ref) {\n var _context16;\n\n var _this;\n\n var format = _ref.format,\n version = _ref.version;\n debug$4('initializing Connection');\n var protocolString = (0, _concat.default)(_context16 = \"lc.\".concat(format, \".\")).call(_context16, version);\n _this = _WebSocketPlus.call(this, getUrl, protocolString) || this;\n _this._protocolFormat = format;\n _this._commands = {};\n _this._serialId = 0;\n return _this;\n }\n\n var _proto = Connection.prototype;\n\n _proto.send = /*#__PURE__*/function () {\n var _send = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(command) {\n var _this2 = this;\n\n var waitingForRespond,\n buffer,\n serialId,\n duplicatedCommand,\n message,\n promise,\n _args = arguments;\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n var _context17, _context18;\n\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n waitingForRespond = _args.length > 1 && _args[1] !== undefined ? _args[1] : true;\n\n if (!waitingForRespond) {\n _context.next = 11;\n break;\n }\n\n if (!isIdempotentCommand(command)) {\n _context.next = 8;\n break;\n }\n\n buffer = command.toArrayBuffer();\n duplicatedCommand = (0, _find.default)(_context17 = values(this._commands)).call(_context17, function (_ref2) {\n var targetBuffer = _ref2.buffer,\n targetCommand = _ref2.command;\n return targetCommand.cmd === command.cmd && targetCommand.op === command.op && equalBuffer(targetBuffer, buffer);\n });\n\n if (!duplicatedCommand) {\n _context.next = 8;\n break;\n }\n\n console.warn((0, _concat.default)(_context18 = \"Duplicated command [cmd:\".concat(command.cmd, \" op:\")).call(_context18, command.op, \"] is throttled.\"));\n return _context.abrupt(\"return\", duplicatedCommand.promise);\n\n case 8:\n this._serialId += 1;\n serialId = this._serialId;\n command.i = serialId;\n // eslint-disable-line no-param-reassign\n\n case 11:\n if (debug$4.enabled) debug$4('↑ %O sent', trim(command));\n\n if (this._protocolFormat === 'proto2base64') {\n message = command.toBase64();\n } else if (command.toArrayBuffer) {\n message = command.toArrayBuffer();\n }\n\n if (message) {\n _context.next = 15;\n break;\n }\n\n throw new TypeError(\"\".concat(command, \" is not a GenericCommand\"));\n\n case 15:\n _WebSocketPlus.prototype.send.call(this, message);\n\n if (waitingForRespond) {\n _context.next = 18;\n break;\n }\n\n return _context.abrupt(\"return\", undefined);\n\n case 18:\n promise = new _promise.default(function (resolve, reject) {\n _this2._commands[serialId] = {\n command: command,\n buffer: buffer,\n resolve: resolve,\n reject: reject,\n timeout: setTimeout(function () {\n if (_this2._commands[serialId]) {\n var _context19;\n\n if (debug$4.enabled) debug$4('✗ %O timeout', trim(command));\n reject(createError({\n error: (0, _concat.default)(_context19 = \"Command Timeout [cmd:\".concat(command.cmd, \" op:\")).call(_context19, command.op, \"]\"),\n name: 'COMMAND_TIMEOUT'\n }));\n delete _this2._commands[serialId];\n }\n }, COMMAND_TIMEOUT)\n };\n });\n this._commands[serialId].promise = promise;\n return _context.abrupt(\"return\", promise);\n\n case 21:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function send(_x) {\n return _send.apply(this, arguments);\n }\n\n return send;\n }();\n\n _proto.handleMessage = function handleMessage(msg) {\n var message;\n\n try {\n message = GenericCommand.decode(msg);\n if (debug$4.enabled) debug$4('↓ %O received', trim(message));\n } catch (e) {\n console.warn('Decode message failed:', e.message, msg);\n return;\n }\n\n var serialId = message.i;\n\n if (serialId) {\n if (this._commands[serialId]) {\n clearTimeout(this._commands[serialId].timeout);\n\n if (message.cmd === CommandType.error) {\n this._commands[serialId].reject(createError(message.errorMessage));\n } else {\n this._commands[serialId].resolve(message);\n }\n\n delete this._commands[serialId];\n } else {\n console.warn(\"Unexpected command received with serialId [\".concat(serialId, \"],\\n which have timed out or never been requested.\"));\n }\n } else {\n switch (message.cmd) {\n case CommandType.error:\n {\n this.emit(ERROR, createError(message.errorMessage));\n return;\n }\n\n case CommandType.goaway:\n {\n this.emit(EXPIRE);\n return;\n }\n\n default:\n {\n this.emit(MESSAGE, message);\n }\n }\n }\n };\n\n _proto.ping = function ping() {\n return this.send(new GenericCommand({\n cmd: CommandType.echo\n }))[\"catch\"](function (error) {\n return debug$4('ping failed:', error);\n });\n };\n\n return Connection;\n}(WebSocketPlus);\n\nvar debug$5 = d('LC:request');\n\nvar request = function request(_ref) {\n var _ref$method = _ref.method,\n method = _ref$method === void 0 ? 'GET' : _ref$method,\n _url = _ref.url,\n query = _ref.query,\n headers = _ref.headers,\n data = _ref.data,\n time = _ref.timeout;\n var url = _url;\n\n if (query) {\n var _context20, _context21, _context23;\n\n var queryString = (0, _filter.default)(_context20 = (0, _map.default)(_context21 = (0, _keys.default)(query)).call(_context21, function (key) {\n var _context22;\n\n var value = query[key];\n if (value === undefined) return undefined;\n var v = isPlainObject(value) ? (0, _stringify.default)(value) : value;\n return (0, _concat.default)(_context22 = \"\".concat(encodeURIComponent(key), \"=\")).call(_context22, encodeURIComponent(v));\n })).call(_context20, function (qs) {\n return qs;\n }).join('&');\n url = (0, _concat.default)(_context23 = \"\".concat(url, \"?\")).call(_context23, queryString);\n }\n\n debug$5('Req: %O %O %O', method, url, {\n headers: headers,\n data: data\n });\n var request = getAdapter('request');\n var promise = request(url, {\n method: method,\n headers: headers,\n data: data\n }).then(function (response) {\n if (response.ok === false) {\n var error = createError(response.data);\n error.response = response;\n throw error;\n }\n\n debug$5('Res: %O %O %O', url, response.status, response.data);\n return response.data;\n })[\"catch\"](function (error) {\n if (error.response) {\n debug$5('Error: %O %O %O', url, error.response.status, error.response.data);\n }\n\n throw error;\n });\n return time ? promiseTimeout.timeout(promise, time) : promise;\n};\n\nvar applyDecorators = function applyDecorators(decorators, target) {\n if (decorators) {\n decorators.forEach(function (decorator) {\n try {\n decorator(target);\n } catch (error) {\n if (decorator._pluginName) {\n error.message += \"[\".concat(decorator._pluginName, \"]\");\n }\n\n throw error;\n }\n });\n }\n};\n\nvar applyDispatcher = function applyDispatcher(dispatchers, payload) {\n var _context24;\n\n return (0, _reduce.default)(_context24 = ensureArray(dispatchers)).call(_context24, function (resultPromise, dispatcher) {\n return resultPromise.then(function (shouldDispatch) {\n return shouldDispatch === false ? false : dispatcher.apply(void 0, _toConsumableArray(payload));\n })[\"catch\"](function (error) {\n if (dispatcher._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += \"[\".concat(dispatcher._pluginName, \"]\");\n }\n\n throw error;\n });\n }, _promise.default.resolve(true));\n};\n\nvar version = \"5.0.0-rc.7\";\n\nfunction ownKeys$2(object, enumerableOnly) {\n var keys = (0, _keys.default)(object);\n\n if (_getOwnPropertySymbols.default) {\n var symbols = (0, _getOwnPropertySymbols.default)(object);\n if (enumerableOnly) symbols = (0, _filter.default)(symbols).call(symbols, function (sym) {\n return (0, _getOwnPropertyDescriptor.default)(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys$2(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (_getOwnPropertyDescriptors.default) {\n (0, _defineProperties.default)(target, (0, _getOwnPropertyDescriptors.default)(source));\n } else {\n ownKeys$2(Object(source)).forEach(function (key) {\n (0, _defineProperty2.default)(target, key, (0, _getOwnPropertyDescriptor.default)(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar debug$6 = d('LC:Realtime');\nvar routerCache = new Cache('push-router');\nvar initializedApp = {};\n\nvar Realtime = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(Realtime, _EventEmitter);\n /**\n * @extends EventEmitter\n * @param {Object} options\n * @param {String} options.appId\n * @param {String} options.appKey (since 4.0.0)\n * @param {String|Object} [options.server] 指定服务器域名,中国节点应用此参数必填(since 4.0.0)\n * @param {Boolean} [options.noBinary=false] 设置 WebSocket 使用字符串格式收发消息(默认为二进制格式)。\n * 适用于 WebSocket 实现不支持二进制数据格式的情况\n * @param {Boolean} [options.ssl=true] 使用 wss 进行连接\n * @param {String|String[]} [options.RTMServers] 指定私有部署的 RTM 服务器地址(since 4.0.0)\n * @param {Plugin[]} [options.plugins] 加载插件(since 3.1.0)\n */\n\n\n function Realtime(_ref) {\n var _context25;\n\n var _this2;\n\n var plugins = _ref.plugins,\n options = _objectWithoutProperties(_ref, [\"plugins\"]);\n\n debug$6('initializing Realtime %s %O', version, options);\n _this2 = _EventEmitter.call(this) || this;\n var appId = options.appId;\n\n if (typeof appId !== 'string') {\n throw new TypeError(\"appId [\".concat(appId, \"] is not a string\"));\n }\n\n if (initializedApp[appId]) {\n throw new Error(\"App [\".concat(appId, \"] is already initialized.\"));\n }\n\n initializedApp[appId] = true;\n\n if (typeof options.appKey !== 'string') {\n throw new TypeError(\"appKey [\".concat(options.appKey, \"] is not a string\"));\n }\n\n if (isCNApp(appId)) {\n if (!options.server) {\n throw new TypeError(\"server option is required for apps from CN region\");\n }\n }\n\n _this2._options = _objectSpread$2({\n appId: undefined,\n appKey: undefined,\n noBinary: false,\n ssl: true,\n RTMServerName: typeof process !== 'undefined' ? process.env.RTM_SERVER_NAME : undefined\n }, options);\n _this2._cache = new Cache('endpoints');\n\n var _this = internal(_assertThisInitialized(_this2));\n\n _this.clients = new _set.default();\n _this.pendingClients = new _set.default();\n var mergedPlugins = (0, _concat.default)(_context25 = []).call(_context25, _toConsumableArray(ensureArray(Realtime.__preRegisteredPlugins)), _toConsumableArray(ensureArray(plugins)));\n debug$6('Using plugins %o', (0, _map.default)(mergedPlugins).call(mergedPlugins, function (plugin) {\n return plugin.name;\n }));\n _this2._plugins = (0, _reduce.default)(mergedPlugins).call(mergedPlugins, function (result, plugin) {\n (0, _keys.default)(plugin).forEach(function (hook) {\n if ({}.hasOwnProperty.call(plugin, hook) && hook !== 'name') {\n var _context26;\n\n if (plugin.name) {\n ensureArray(plugin[hook]).forEach(function (value) {\n // eslint-disable-next-line no-param-reassign\n value._pluginName = plugin.name;\n });\n } // eslint-disable-next-line no-param-reassign\n\n\n result[hook] = (0, _concat.default)(_context26 = ensureArray(result[hook])).call(_context26, plugin[hook]);\n }\n });\n return result;\n }, {}); // onRealtimeCreate hook\n\n applyDecorators(_this2._plugins.onRealtimeCreate, _assertThisInitialized(_this2));\n return _this2;\n }\n\n var _proto = Realtime.prototype;\n\n _proto._request = /*#__PURE__*/function () {\n var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref2) {\n var method, _url, _ref2$version, version, path, query, headers, data, url, _this$_options, appId, server, _yield$this$construct, api;\n\n return _regeneratorRuntime.wrap(function _callee$(_context) {\n var _context27, _context28;\n\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n method = _ref2.method, _url = _ref2.url, _ref2$version = _ref2.version, version = _ref2$version === void 0 ? '1.1' : _ref2$version, path = _ref2.path, query = _ref2.query, headers = _ref2.headers, data = _ref2.data;\n url = _url;\n\n if (url) {\n _context.next = 9;\n break;\n }\n\n _this$_options = this._options, appId = _this$_options.appId, server = _this$_options.server;\n _context.next = 6;\n return this.constructor._getServerUrls({\n appId: appId,\n server: server\n });\n\n case 6:\n _yield$this$construct = _context.sent;\n api = _yield$this$construct.api;\n url = (0, _concat.default)(_context27 = (0, _concat.default)(_context28 = \"\".concat(api, \"/\")).call(_context28, version)).call(_context27, path);\n\n case 9:\n return _context.abrupt(\"return\", request({\n url: url,\n method: method,\n query: query,\n headers: _objectSpread$2({\n 'X-LC-Id': this._options.appId,\n 'X-LC-Key': this._options.appKey\n }, headers),\n data: data\n }));\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _request(_x) {\n return _request2.apply(this, arguments);\n }\n\n return _request;\n }();\n\n _proto._open = function _open() {\n var _this3 = this;\n\n if (this._openPromise) return this._openPromise;\n var format = 'protobuf2';\n\n if (this._options.noBinary) {\n // 不发送 binary data,fallback to base64 string\n format = 'proto2base64';\n }\n\n var version = 3;\n var protocol = {\n format: format,\n version: version\n };\n this._openPromise = new _promise.default(function (resolve, reject) {\n debug$6('No connection established, create a new one.');\n var connection = new Connection(function () {\n return _this3._getRTMServers(_this3._options);\n }, protocol);\n connection.on(OPEN, function () {\n return resolve(connection);\n }).on(ERROR, function (error) {\n delete _this3._openPromise;\n reject(error);\n }).on(EXPIRE, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {\n return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n debug$6('Connection expired. Refresh endpoints.');\n\n _this3._cache.set('endpoints', null, 0);\n\n _context2.next = 4;\n return _this3._getRTMServers(_this3._options);\n\n case 4:\n connection.urls = _context2.sent;\n connection.disconnect();\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))).on(MESSAGE, _this3._dispatchCommand.bind(_this3));\n /**\n * 连接断开。\n * 连接断开可能是因为 SDK 进入了离线状态(see {@link Realtime#event:OFFLINE}),或长时间没有收到服务器心跳。\n * 连接断开后所有的网络操作都会失败,请在连接断开后禁用相关的 UI 元素。\n * @event Realtime#DISCONNECT\n */\n\n /**\n * 计划在一段时间后尝试重新连接\n * @event Realtime#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n */\n\n /**\n * 正在尝试重新连接\n * @event Realtime#RETRY\n * @param {Number} attempt 尝试重连的次数\n */\n\n /**\n * 连接恢复正常。\n * 请重新启用在 {@link Realtime#event:DISCONNECT} 事件中禁用的相关 UI 元素\n * @event Realtime#RECONNECT\n */\n\n /**\n * 客户端连接断开\n * @event IMClient#DISCONNECT\n * @see Realtime#event:DISCONNECT\n * @since 3.2.0\n */\n\n /**\n * 计划在一段时间后尝试重新连接\n * @event IMClient#SCHEDULE\n * @param {Number} attempt 尝试重连的次数\n * @param {Number} delay 延迟的毫秒数\n * @since 3.2.0\n */\n\n /**\n * 正在尝试重新连接\n * @event IMClient#RETRY\n * @param {Number} attempt 尝试重连的次数\n * @since 3.2.0\n */\n\n /**\n * 客户端进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event Realtime#OFFLINE\n * @since 3.4.0\n */\n\n /**\n * 客户端恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event Realtime#ONLINE\n * @since 3.4.0\n */\n\n /**\n * 进入离线状态。\n * 这通常意味着网络已断开,或者 {@link Realtime#pause} 被调用\n * @event IMClient#OFFLINE\n * @since 3.4.0\n */\n\n /**\n * 恢复在线状态\n * 这通常意味着网络已恢复,或者 {@link Realtime#resume} 被调用\n * @event IMClient#ONLINE\n * @since 3.4.0\n */\n // event proxy\n\n [DISCONNECT, RECONNECT, RETRY, SCHEDULE, OFFLINE, ONLINE].forEach(function (event) {\n return connection.on(event, function () {\n var _context29;\n\n for (var _len = arguments.length, payload = new Array(_len), _key = 0; _key < _len; _key++) {\n payload[_key] = arguments[_key];\n }\n\n debug$6(\"\".concat(event, \" event emitted. %o\"), payload);\n\n _this3.emit.apply(_this3, (0, _concat.default)(_context29 = [event]).call(_context29, payload));\n\n if (event !== RECONNECT) {\n internal(_this3).clients.forEach(function (client) {\n var _context30;\n\n client.emit.apply(client, (0, _concat.default)(_context30 = [event]).call(_context30, payload));\n });\n }\n });\n }); // override handleClose\n\n connection.handleClose = function handleClose(event) {\n var isFatal = [ErrorCode.APP_NOT_AVAILABLE, ErrorCode.INVALID_LOGIN, ErrorCode.INVALID_ORIGIN].some(function (errorCode) {\n return errorCode === event.code;\n });\n\n if (isFatal) {\n // in these cases, SDK should throw.\n this[\"throw\"](createError(event));\n } else {\n // reconnect\n this.disconnect();\n }\n };\n\n internal(_this3).connection = connection;\n });\n return this._openPromise;\n };\n\n _proto._getRTMServers = /*#__PURE__*/function () {\n var _getRTMServers2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(options) {\n var info, cachedEndPoints, _info, server, secondary, ttl;\n\n return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!options.RTMServers) {\n _context3.next = 2;\n break;\n }\n\n return _context3.abrupt(\"return\", shuffle(ensureArray(options.RTMServers)));\n\n case 2:\n cachedEndPoints = this._cache.get('endpoints');\n\n if (!cachedEndPoints) {\n _context3.next = 7;\n break;\n }\n\n info = cachedEndPoints;\n _context3.next = 14;\n break;\n\n case 7:\n _context3.next = 9;\n return this.constructor._fetchRTMServers(options);\n\n case 9:\n info = _context3.sent;\n _info = info, server = _info.server, secondary = _info.secondary, ttl = _info.ttl;\n\n if (!(typeof server !== 'string' && typeof secondary !== 'string' && typeof ttl !== 'number')) {\n _context3.next = 13;\n break;\n }\n\n throw new Error(\"malformed RTM route response: \".concat((0, _stringify.default)(info)));\n\n case 13:\n this._cache.set('endpoints', info, info.ttl * 1000);\n\n case 14:\n debug$6('endpoint info: %O', info);\n return _context3.abrupt(\"return\", [info.server, info.secondary]);\n\n case 16:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _getRTMServers(_x2) {\n return _getRTMServers2.apply(this, arguments);\n }\n\n return _getRTMServers;\n }();\n\n Realtime._getServerUrls = /*#__PURE__*/function () {\n var _getServerUrls2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(_ref4) {\n var appId, server, cachedRouter, defaultProtocol;\n return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n appId = _ref4.appId, server = _ref4.server;\n debug$6('fetch server urls');\n\n if (!server) {\n _context4.next = 6;\n break;\n }\n\n if (!(typeof server !== 'string')) {\n _context4.next = 5;\n break;\n }\n\n return _context4.abrupt(\"return\", server);\n\n case 5:\n return _context4.abrupt(\"return\", {\n RTMRouter: server,\n api: server\n });\n\n case 6:\n cachedRouter = routerCache.get(appId);\n\n if (!cachedRouter) {\n _context4.next = 9;\n break;\n }\n\n return _context4.abrupt(\"return\", cachedRouter);\n\n case 9:\n defaultProtocol = 'https://';\n return _context4.abrupt(\"return\", request({\n url: 'https://app-router.com/2/route',\n query: {\n appId: appId\n },\n timeout: 20000\n }).then(tap(debug$6)).then(function (_ref5) {\n var _context31, _context32;\n\n var RTMRouterServer = _ref5.rtm_router_server,\n APIServer = _ref5.api_server,\n _ref5$ttl = _ref5.ttl,\n ttl = _ref5$ttl === void 0 ? 3600 : _ref5$ttl;\n\n if (!RTMRouterServer) {\n throw new Error('rtm router not exists');\n }\n\n var serverUrls = {\n RTMRouter: (0, _concat.default)(_context31 = \"\".concat(defaultProtocol)).call(_context31, RTMRouterServer),\n api: (0, _concat.default)(_context32 = \"\".concat(defaultProtocol)).call(_context32, APIServer)\n };\n routerCache.set(appId, serverUrls, ttl * 1000);\n return serverUrls;\n })[\"catch\"](function () {\n var _context33, _context34, _context35, _context36;\n\n var id = (0, _slice.default)(appId).call(appId, 0, 8).toLowerCase();\n var domain = 'lncldglobal.com';\n return {\n RTMRouter: (0, _concat.default)(_context33 = (0, _concat.default)(_context34 = \"\".concat(defaultProtocol)).call(_context34, id, \".rtm.\")).call(_context33, domain),\n api: (0, _concat.default)(_context35 = (0, _concat.default)(_context36 = \"\".concat(defaultProtocol)).call(_context36, id, \".api.\")).call(_context35, domain)\n };\n }));\n\n case 11:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function _getServerUrls(_x3) {\n return _getServerUrls2.apply(this, arguments);\n }\n\n return _getServerUrls;\n }();\n\n Realtime._fetchRTMServers = function _fetchRTMServers(_ref6) {\n var appId = _ref6.appId,\n ssl = _ref6.ssl,\n server = _ref6.server,\n RTMServerName = _ref6.RTMServerName;\n debug$6('fetch endpoint info');\n return this._getServerUrls({\n appId: appId,\n server: server\n }).then(tap(debug$6)).then(function (_ref7) {\n var RTMRouter = _ref7.RTMRouter;\n return request({\n url: \"\".concat(RTMRouter, \"/v1/route\"),\n query: {\n appId: appId,\n secure: ssl,\n features: isWeapp ? 'wechat' : undefined,\n server: RTMServerName,\n _t: Date.now()\n },\n timeout: 20000\n }).then(tap(debug$6));\n });\n };\n\n _proto._close = function _close() {\n if (this._openPromise) {\n this._openPromise.then(function (connection) {\n return connection.close();\n });\n }\n\n delete this._openPromise;\n }\n /**\n * 手动进行重连。\n * SDK 在网络出现异常时会自动按照一定的时间间隔尝试重连,调用该方法会立即尝试重连并重置重连尝试计数器。\n * 只能在 `SCHEDULE` 事件之后,`RETRY` 事件之前调用,如果当前网络正常或者正在进行重连,调用该方法会抛异常。\n */\n ;\n\n _proto.retry = function retry() {\n var _internal = internal(this),\n connection = _internal.connection;\n\n if (!connection) {\n throw new Error('no connection established');\n }\n\n if (connection.cannot('retry')) {\n throw new Error(\"retrying not allowed when not disconnected. the connection is now \".concat(connection.current));\n }\n\n return connection.retry();\n }\n /**\n * 暂停,使 SDK 进入离线状态。\n * 你可以在网络断开、应用进入后台等时刻调用该方法让 SDK 进入离线状态,离线状态下不会尝试重连。\n * 在浏览器中 SDK 会自动监听网络变化,因此无需手动调用该方法。\n *\n * @since 3.4.0\n * @see Realtime#event:OFFLINE\n */\n ;\n\n _proto.pause = function pause() {\n // 这个方法常常在网络断开、进入后台时被调用,此时 connection 可能没有建立或者已经 close。\n // 因此不像 retry,这个方法应该尽可能 loose\n var _internal2 = internal(this),\n connection = _internal2.connection;\n\n if (!connection) return;\n if (connection.can('pause')) connection.pause();\n }\n /**\n * 恢复在线状态。\n * 你可以在网络恢复、应用回到前台等时刻调用该方法让 SDK 恢复在线状态,恢复在线状态后 SDK 会开始尝试重连。\n *\n * @since 3.4.0\n * @see Realtime#event:ONLINE\n */\n ;\n\n _proto.resume = function resume() {\n // 与 pause 一样,这个方法应该尽可能 loose\n var _internal3 = internal(this),\n connection = _internal3.connection;\n\n if (!connection) return;\n if (connection.can('resume')) connection.resume();\n };\n\n _proto._registerPending = function _registerPending(value) {\n internal(this).pendingClients.add(value);\n };\n\n _proto._deregisterPending = function _deregisterPending(client) {\n internal(this).pendingClients[\"delete\"](client);\n };\n\n _proto._register = function _register(client) {\n internal(this).clients.add(client);\n };\n\n _proto._deregister = function _deregister(client) {\n var _this = internal(this);\n\n _this.clients[\"delete\"](client);\n\n if (_this.clients.size + _this.pendingClients.size === 0) {\n this._close();\n }\n };\n\n _proto._dispatchCommand = function _dispatchCommand(command) {\n return applyDispatcher(this._plugins.beforeCommandDispatch, [command, this]).then(function (shouldDispatch) {\n // no plugin handled this command\n if (shouldDispatch) return debug$6('[WARN] Unexpected message received: %O', trim(command));\n return false;\n });\n };\n\n return Realtime;\n}(EventEmitter); // For test purpose only\n\n\nvar polyfilledPromise = _promise.default;\nexports.EventEmitter = EventEmitter;\nexports.Promise = polyfilledPromise;\nexports.Protocals = message;\nexports.Protocols = message;\nexports.Realtime = Realtime;\nexports.debug = debug$2;\nexports.getAdapter = getAdapter;\nexports.setAdapters = setAdapters;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(74)))\n\n/***/ }),\n/* 590 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(591);\n\n/***/ }),\n/* 591 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(592);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 592 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(593);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.freeze;\n\n\n/***/ }),\n/* 593 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar FREEZING = __webpack_require__(262);\nvar fails = __webpack_require__(2);\nvar isObject = __webpack_require__(11);\nvar onFreeze = __webpack_require__(94).onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n\n\n/***/ }),\n/* 594 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(595);\n\n/***/ }),\n/* 595 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(596);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 596 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(597);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n\n\n/***/ }),\n/* 597 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(14);\nvar ownKeys = __webpack_require__(162);\nvar toIndexedObject = __webpack_require__(32);\nvar getOwnPropertyDescriptorModule = __webpack_require__(62);\nvar createProperty = __webpack_require__(91);\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n\n\n/***/ }),\n/* 598 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(599);\n\n/***/ }),\n/* 599 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(600);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 600 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(601);\nvar path = __webpack_require__(5);\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n\n\n/***/ }),\n/* 601 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(0);\nvar DESCRIPTORS = __webpack_require__(14);\nvar defineProperties = __webpack_require__(128).f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n\n\n/***/ }),\n/* 602 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(603);\n\n/***/ }),\n/* 603 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(604);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 604 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototypeOf = __webpack_require__(19);\nvar method = __webpack_require__(605);\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reduce;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;\n};\n\n\n/***/ }),\n/* 605 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(606);\nvar entryVirtual = __webpack_require__(40);\n\nmodule.exports = entryVirtual('Array').reduce;\n\n\n/***/ }),\n/* 606 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(0);\nvar $reduce = __webpack_require__(607).left;\nvar arrayMethodIsStrict = __webpack_require__(231);\nvar CHROME_VERSION = __webpack_require__(77);\nvar IS_NODE = __webpack_require__(107);\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n/* 607 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aCallable = __webpack_require__(31);\nvar toObject = __webpack_require__(34);\nvar IndexedObject = __webpack_require__(95);\nvar lengthOfArrayLike = __webpack_require__(41);\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n/***/ }),\n/* 608 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(609);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 609 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(53);\n__webpack_require__(610);\n__webpack_require__(55);\nvar path = __webpack_require__(5);\n\nmodule.exports = path.Set;\n\n\n/***/ }),\n/* 610 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// TODO: Remove this module from `core-js@4` since it's replaced to module below\n__webpack_require__(611);\n\n\n/***/ }),\n/* 611 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar collection = __webpack_require__(155);\nvar collectionStrong = __webpack_require__(263);\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n/***/ }),\n/* 612 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (true)\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(613)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.3\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.<number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.<string,{name: string, wireType: number, defaultValue: *}>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.<!Object.<string,{name: string, wireType: number, defaultValue: *}>>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\r\n * @alias ProtoBuf.Util\r\n * @expose\r\n */\r\n ProtoBuf.Util = (function() {\r\n \"use strict\";\r\n\r\n /**\r\n * ProtoBuf utilities.\r\n * @exports ProtoBuf.Util\r\n * @namespace\r\n */\r\n var Util = {};\r\n\r\n /**\r\n * Flag if running in node or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n Util.IS_NODE = !!(\r\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\r\n );\r\n\r\n /**\r\n * Constructs a XMLHttpRequest object.\r\n * @return {XMLHttpRequest}\r\n * @throws {Error} If XMLHttpRequest is not supported\r\n * @expose\r\n */\r\n Util.XHR = function() {\r\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\r\n var XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n ];\r\n /** @type {?XMLHttpRequest} */\r\n var xhr = null;\r\n for (var i=0;i<XMLHttpFactories.length;i++) {\r\n try { xhr = XMLHttpFactories[i](); }\r\n catch (e) { continue; }\r\n break;\r\n }\r\n if (!xhr)\r\n throw Error(\"XMLHttpRequest is not supported\");\r\n return xhr;\r\n };\r\n\r\n /**\r\n * Fetches a resource.\r\n * @param {string} path Resource path\r\n * @param {function(?string)=} callback Callback receiving the resource's contents. If omitted the resource will\r\n * be fetched synchronously. If the request failed, contents will be null.\r\n * @return {?string|undefined} Resource contents if callback is omitted (null if the request failed), else undefined.\r\n * @expose\r\n */\r\n Util.fetch = function(path, callback) {\r\n if (callback && typeof callback != 'function')\r\n callback = null;\r\n if (Util.IS_NODE) {\r\n var fs = __webpack_require__(615);\r\n if (callback) {\r\n fs.readFile(path, function(err, data) {\r\n if (err)\r\n callback(null);\r\n else\r\n callback(\"\"+data);\r\n });\r\n } else\r\n try {\r\n return fs.readFileSync(path);\r\n } catch (e) {\r\n return null;\r\n }\r\n } else {\r\n var xhr = Util.XHR();\r\n xhr.open('GET', path, callback ? true : false);\r\n // xhr.setRequestHeader('User-Agent', 'XMLHTTP/1.0');\r\n xhr.setRequestHeader('Accept', 'text/plain');\r\n if (typeof xhr.overrideMimeType === 'function') xhr.overrideMimeType('text/plain');\r\n if (callback) {\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState != 4) return;\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n callback(xhr.responseText);\r\n else\r\n callback(null);\r\n };\r\n if (xhr.readyState == 4)\r\n return;\r\n xhr.send(null);\r\n } else {\r\n xhr.send(null);\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n return xhr.responseText;\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Converts a string to camel case.\r\n * @param {string} str\r\n * @returns {string}\r\n * @expose\r\n */\r\n Util.toCamelCase = function(str) {\r\n return str.replace(/_([a-zA-Z])/g, function ($0, $1) {\r\n return $1.toUpperCase();\r\n });\r\n };\r\n\r\n return Util;\r\n })();\r\n\r\n /**\r\n * Language expressions.\r\n * @type {!Object.<string,!RegExp>}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.<ProtoBuf.Reflect.T>}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.<ProtoBuf.Reflect.T>}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i] instanceof type)\r\n children.push(this.children[i]);\r\n return children;\r\n };\r\n\r\n /**\r\n * Adds a child to the namespace.\r\n * @param {ProtoBuf.Reflect.T} child Child\r\n * @throws {Error} If the child cannot be added (duplicate)\r\n * @expose\r\n */\r\n NamespacePrototype.addChild = function(child) {\r\n var other;\r\n if (other = this.getChild(child.name)) {\r\n // Try to revert camelcase transformation on collision\r\n if (other instanceof Message.Field && other.name !== other.originalName && this.getChild(other.originalName) === null)\r\n other.name = other.originalName; // Revert previous first (effectively keeps both originals)\r\n else if (child instanceof Message.Field && child.name !== child.originalName && this.getChild(child.originalName) === null)\r\n child.name = child.originalName;\r\n else\r\n throw Error(\"Duplicate name in namespace \"+this.toString(true)+\": \"+child.name);\r\n }\r\n this.children.push(child);\r\n };\r\n\r\n /**\r\n * Gets a child by its name or id.\r\n * @param {string|number} nameOrId Child name or id\r\n * @return {?ProtoBuf.Reflect.T} The child or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.getChild = function(nameOrId) {\r\n var key = typeof nameOrId === 'number' ? 'id' : 'name';\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i][key] === nameOrId)\r\n return this.children[i];\r\n return null;\r\n };\r\n\r\n /**\r\n * Resolves a reflect object inside of this namespace.\r\n * @param {string|!Array.<string>} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.<string,Function|Object>} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i<k; ++i) {\r\n child = children[i];\r\n if (child instanceof Namespace)\r\n ns[child.name] = child.build();\r\n }\r\n if (Object.defineProperty)\r\n Object.defineProperty(ns, \"$options\", { \"value\": this.buildOpt() });\r\n return ns;\r\n };\r\n\r\n /**\r\n * Builds the namespace's '$options' property.\r\n * @return {Object.<string,*>}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i<k; ++i) {\r\n var key = keys[i],\r\n val = this.options[keys[i]];\r\n // TODO: Options are not resolved, yet.\r\n // if (val instanceof Namespace) {\r\n // opt[key] = val.build();\r\n // } else {\r\n opt[key] = val;\r\n // }\r\n }\r\n return opt;\r\n };\r\n\r\n /**\r\n * Gets the value assigned to the option with the specified name.\r\n * @param {string=} name Returns the option value if specified, otherwise all options are returned.\r\n * @return {*|Object.<string,*>}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @param {string} name Name of the field containing this element (for error\r\n * messages)\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax, name) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n /**\r\n * Name of the field containing this element (for error messages)\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n ElementPrototype.toString = function() {\r\n return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element';\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i<values.length; i++)\r\n if (values[i].name == value)\r\n return values[i].id;\r\n else if (values[i].id == value)\r\n return values[i].id;\r\n\r\n if (this.syntax === 'proto3') {\r\n // proto3: just make sure it's an integer.\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n if (value > 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.<number>|undefined}\r\n * @expose\r\n */\r\n this.extensions = undefined;\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.<number,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.<string,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.<string,*>|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i<k; ++i)\r\n this[oneofs[i].name] = null;\r\n // Create fields and set default values\r\n for (i=0, k=fields.length; i<k; ++i) {\r\n var field = fields[i];\r\n this[field.name] =\r\n field.repeated ? [] :\r\n (field.map ? new ProtoBuf.Map(field) : null);\r\n if ((field.required || T.syntax === 'proto3') &&\r\n field.defaultValue !== null)\r\n this[field.name] = field.defaultValue;\r\n }\r\n\r\n if (arguments.length > 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i<k; ++i)\r\n if (typeof (value = arguments[i]) !== 'undefined')\r\n this.$set(fields[i].name, value); // May throw\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(ProtoBuf.Builder.Message.prototype);\r\n\r\n /**\r\n * Adds a value to a repeated field.\r\n * @name ProtoBuf.Builder.Message#add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.add = function(key, value, noAssert) {\r\n var field = T._fieldsByName[key];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+key+\" is undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true)); // May throw if it's an enum or embedded message\r\n if (!field.repeated)\r\n throw Error(this+\"#\"+key+\" is not a repeated field\");\r\n value = field.verifyValue(value, true);\r\n }\r\n if (this[key] === null)\r\n this[key] = [];\r\n this[key].push(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a value to a repeated field. This is an alias for {@link ProtoBuf.Builder.Message#add}.\r\n * @name ProtoBuf.Builder.Message#$add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.$add = MessagePrototype.add;\r\n\r\n /**\r\n * Sets a field's value.\r\n * @name ProtoBuf.Builder.Message#set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj) {\r\n // Check if virtual oneof field - don't set these\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined)\r\n this.$set(ikey, value, noAssert);\r\n }\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i<fields.length; i++) {\r\n var field = fields[i];\r\n // no setters for extension fields as these are named by their fqn\r\n if (field instanceof ProtoBuf.Reflect.Message.ExtensionField)\r\n continue;\r\n\r\n if (T.builder.options['populateAccessors'])\r\n (function(field) {\r\n // set/get[SomeValue]\r\n var Name = field.originalName.replace(/(_[a-zA-Z])/g, function(match) {\r\n return match.toUpperCase().replace('_','');\r\n });\r\n Name = Name.substring(0,1).toUpperCase() + Name.substring(1);\r\n\r\n // set/get_[some_value] FIXME: Do we really need these?\r\n var name = field.originalName.replace(/([A-Z])/g, function(match) {\r\n return \"_\"+match;\r\n });\r\n\r\n /**\r\n * The current field's unbound setter function.\r\n * @function\r\n * @param {*} value\r\n * @param {boolean=} noAssert\r\n * @returns {!ProtoBuf.Builder.Message}\r\n * @inner\r\n */\r\n var setter = function(value, noAssert) {\r\n this[field.name] = noAssert ? value : field.verifyValue(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * The current field's unbound getter function.\r\n * @function\r\n * @returns {*}\r\n * @inner\r\n */\r\n var getter = function() {\r\n return this[field.name];\r\n };\r\n\r\n if (T.getChild(\"set\"+Name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set[SomeField]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set\"+Name] = setter;\r\n\r\n if (T.getChild(\"set_\"+name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set_[some_field]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set_\"+name] = setter;\r\n\r\n if (T.getChild(\"get\"+Name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get[SomeField]\r\n * @function\r\n * @abstract\r\n * @return {*} The value\r\n */\r\n MessagePrototype[\"get\"+Name] = getter;\r\n\r\n if (T.getChild(\"get_\"+name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get_[some_field]\r\n * @function\r\n * @return {*} The value\r\n * @abstract\r\n */\r\n MessagePrototype[\"get_\"+name] = getter;\r\n\r\n })(field);\r\n }\r\n\r\n // En-/decoding\r\n\r\n /**\r\n * Encodes the message.\r\n * @name ProtoBuf.Builder.Message#$encode\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message#encode64\r\n * @see ProtoBuf.Builder.Message#encodeHex\r\n * @see ProtoBuf.Builder.Message#encodeAB\r\n */\r\n MessagePrototype.encode = function(buffer, noVerify) {\r\n if (typeof buffer === 'boolean')\r\n noVerify = buffer,\r\n buffer = undefined;\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var le = buffer.littleEndian;\r\n try {\r\n T.encode(this, buffer.LE(), noVerify);\r\n return (isNew ? buffer.flip() : buffer).LE(le);\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Encodes a message using the specified data payload.\r\n * @param {!Object.<string,*>} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer, noVerify) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc, noVerify).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.<string,*>} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, length, enc) {\r\n if (typeof length === 'string')\r\n enc = length,\r\n length = -1;\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE(), length);\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n this._oneofsByName = {};\r\n for (var i=0, k=this.children.length, child; i<k; i++) {\r\n child = this.children[i];\r\n if (child instanceof Enum || child instanceof Message || child instanceof Service) {\r\n if (clazz.hasOwnProperty(child.name))\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+child.toString(true)+\" cannot override static property '\"+child.name+\"'\");\r\n clazz[child.name] = child.build();\r\n } else if (child instanceof Message.Field)\r\n child.build(),\r\n this._fields.push(child),\r\n this._fieldsById[child.id] = child,\r\n this._fieldsByName[child.name] = child;\r\n else if (child instanceof Message.OneOf) {\r\n this._oneofsByName[child.name] = child;\r\n }\r\n else if (!(child instanceof Message.OneOf) && !(child instanceof Extension)) // Not built\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+this.children[i].toString(true));\r\n }\r\n\r\n return this.clazz = clazz;\r\n };\r\n\r\n /**\r\n * Encodes a runtime message's contents to the specified buffer.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @param {ByteBuffer} buffer ByteBuffer to write to\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If required fields are missing or the message cannot be encoded for another reason\r\n * @expose\r\n */\r\n MessagePrototype.encode = function(message, buffer, noVerify) {\r\n var fieldMissing = null,\r\n field;\r\n for (var i=0, k=this._fields.length, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null) {\r\n if (fieldMissing === null)\r\n fieldMissing = field;\r\n } else\r\n field.encode(noVerify ? val : field.verifyValue(val), buffer, message);\r\n }\r\n if (fieldMissing !== null) {\r\n var err = Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+fieldMissing);\r\n err[\"encoded\"] = buffer; // Still expose what we got\r\n throw(err);\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates a runtime message's byte length.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @returns {number} Byte length\r\n * @throws {Error} If required fields are missing or the message cannot be calculated for another reason\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function(message) {\r\n for (var n=0, i=0, k=this._fields.length, field, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null)\r\n throw Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+field);\r\n else\r\n n += field.calculate(val, message);\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Skips all data until the end of the specified group has been reached.\r\n * @param {number} expectedId Expected GROUPEND id\r\n * @param {!ByteBuffer} buf ByteBuffer\r\n * @returns {boolean} `true` if a value as been skipped, `false` if the end has been reached\r\n * @throws {Error} If it wasn't possible to find the end of the group (buffer overrun or end tag mismatch)\r\n * @inner\r\n */\r\n function skipTillGroupEnd(expectedId, buf) {\r\n var tag = buf.readVarint32(), // Throws on OOB\r\n wireType = tag & 0x07,\r\n id = tag >>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all remaining data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n if (typeof length !== 'number')\r\n length = -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i<k; ++i) {\r\n field = this._fields[i];\r\n if (msg[field.name] === null) {\r\n if (this.syntax === \"proto3\") { // Proto3 sets default values by specification\r\n msg[field.name] = field.defaultValue;\r\n } else if (field.required) {\r\n var err = Error(\"Missing at least one required field for \" + this.toString(true) + \": \" + field.name);\r\n err[\"decoded\"] = msg; // Still expose what we got\r\n throw(err);\r\n } else if (ProtoBuf.populateDefaults && field.defaultValue !== null)\r\n msg[field.name] = field.defaultValue;\r\n }\r\n }\r\n return msg;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message\r\n * @expose\r\n */\r\n Reflect.Message = Message;\r\n\r\n /**\r\n * Constructs a new Message Field.\r\n * @exports ProtoBuf.Reflect.Message.Field\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string?} keytype Key data type, if any.\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {Object.<string,*>=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.<string,*>}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i<value.length; i++)\r\n res.push(this.element.verifyValue(value[i]));\r\n return res;\r\n }\r\n if (this.map && !skipRepeated) { // Map values as objects\r\n if (!(value instanceof ProtoBuf.Map)) {\r\n // If not already a Map, attempt to convert.\r\n if (!(value instanceof Object)) {\r\n fail(typeof value,\r\n \"expected ProtoBuf.Map or raw object for map field\");\r\n }\r\n return new ProtoBuf.Map(this, value);\r\n } else {\r\n return value;\r\n }\r\n }\r\n // All non-repeated fields expect no array\r\n if (!this.repeated && Array.isArray(value))\r\n fail(typeof value, \"no array expected\");\r\n\r\n return this.element.verifyValue(value);\r\n };\r\n\r\n /**\r\n * Determines whether the field will have a presence on the wire given its\r\n * value.\r\n * @param {*} value Verified field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {boolean} Whether the field will be present on the wire\r\n */\r\n FieldPrototype.hasWirePresence = function(value, message) {\r\n if (this.syntax !== 'proto3')\r\n return (value !== null);\r\n if (this.oneof && message[this.oneof.name] === this.name)\r\n return true;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return value.low !== 0 || value.high !== 0;\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return value;\r\n\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return value !== 0.0;\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return value.length > 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i<value.length; i++)\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n var len = buffer.offset-start,\r\n varintLen = ByteBuffer.calculateVarint32(len);\r\n if (varintLen > 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i<value.length; i++)\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType),\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n }\r\n } else if (this.map) {\r\n // Write out each map entry as a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n // Submessage with wire type of length-delimited.\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.writeVarint32(length);\r\n\r\n // Write out the key and val.\r\n buffer.writeVarint32((1 << 3) | this.keyType.wireType);\r\n this.keyElement.encodeValue(1, key, buffer);\r\n buffer.writeVarint32((2 << 3) | this.type.wireType);\r\n this.element.encodeValue(2, val, buffer);\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType);\r\n this.element.encodeValue(this.id, value, buffer);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates the length of this field's value on the network level.\r\n * @param {*} value Field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @returns {number} Byte length\r\n * @expose\r\n */\r\n FieldPrototype.calculate = function(value, message) {\r\n value = this.verifyValue(value); // May throw\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return 0; // Optional omitted\r\n var n = 0;\r\n try {\r\n if (this.repeated) {\r\n var i, ni;\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i<value.length; i++)\r\n ni += this.element.calculateLength(this.id, value[i]);\r\n n += ByteBuffer.calculateVarint32(ni);\r\n n += ni;\r\n } else {\r\n for (i=0; i<value.length; i++)\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType),\r\n n += this.element.calculateLength(this.id, value[i]);\r\n }\r\n } else if (this.map) {\r\n // Each map entry becomes a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n n += ByteBuffer.calculateVarint32(length);\r\n n += length;\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType);\r\n n += this.element.calculateLength(this.id, value);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Decode the field value from the specified buffer.\r\n * @param {number} wireType Leading wire type\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {boolean=} skipRepeated Whether to skip the repeated check or not. Defaults to false.\r\n * @return {*} Decoded value: array for packed repeated fields, [key, value] for\r\n * map fields, or an individual value otherwise.\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n FieldPrototype.decode = function(wireType, buffer, skipRepeated) {\r\n var value, nBytes;\r\n\r\n // We expect wireType to match the underlying type's wireType unless we see\r\n // a packed repeated field, or unless this is a map field.\r\n var wireTypeOK =\r\n (!this.map && wireType == this.type.wireType) ||\r\n (!skipRepeated && this.repeated && this.options[\"packed\"] &&\r\n wireType == ProtoBuf.WIRE_TYPES.LDELIM) ||\r\n (this.map && wireType == ProtoBuf.WIRE_TYPES.LDELIM);\r\n if (!wireTypeOK)\r\n throw Error(\"Illegal wire type for field \"+this.toString(true)+\": \"+wireType+\" (\"+this.type.wireType+\" expected)\");\r\n\r\n // Handle packed repeated fields.\r\n if (wireType == ProtoBuf.WIRE_TYPES.LDELIM && this.repeated && this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.<string,*>=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.<string,number>|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i<keys.length; ++i)\r\n if (enm[key = keys[i]] === value)\r\n return key;\r\n return null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.prototype\r\n * @inner\r\n */\r\n var EnumPrototype = Enum.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds this enum and returns the runtime counterpart.\r\n * @param {boolean} rebuild Whether to rebuild or not, defaults to false\r\n * @returns {!Object.<string,number>}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i<k; ++i)\r\n enm[values[i]['name']] = values[i]['id'];\r\n if (Object.defineProperty)\r\n Object.defineProperty(enm, '$options', {\r\n \"value\": this.buildOpt(),\r\n \"enumerable\": false\r\n });\r\n return this.object = enm;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum\r\n * @expose\r\n */\r\n Reflect.Enum = Enum;\r\n\r\n /**\r\n * Constructs a new Enum Value.\r\n * @exports ProtoBuf.Reflect.Enum.Value\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Enum} enm Enum reference\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Value = function(builder, enm, name, id) {\r\n T.call(this, builder, enm, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum.Value\";\r\n\r\n /**\r\n * Unique enum value id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n };\r\n\r\n // Extends T\r\n Value.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.Value\r\n * @expose\r\n */\r\n Reflect.Enum.Value = Value;\r\n\r\n /**\r\n * An extension (field).\r\n * @exports ProtoBuf.Reflect.Extension\r\n * @constructor\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n * @param {!ProtoBuf.Reflect.Message.Field} field Extension field\r\n */\r\n var Extension = function(builder, parent, name, field) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * Extended message field.\r\n * @type {!ProtoBuf.Reflect.Message.Field}\r\n * @expose\r\n */\r\n this.field = field;\r\n };\r\n\r\n // Extends T\r\n Extension.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Extension\r\n * @expose\r\n */\r\n Reflect.Extension = Extension;\r\n\r\n /**\r\n * Constructs a new Service.\r\n * @exports ProtoBuf.Reflect.Service\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} root Root\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i<rpc.length; i++) {\r\n (function(method) {\r\n\r\n // service#Method(message, callback)\r\n ServicePrototype[method.name] = function(req, callback) {\r\n try {\r\n try {\r\n // If given as a buffer, decode the request. Will throw a TypeError if not a valid buffer.\r\n req = method.resolvedRequestType.clazz.decode(ByteBuffer.wrap(req));\r\n } catch (err) {\r\n if (!(err instanceof TypeError))\r\n throw err;\r\n }\r\n if (req === null || typeof req !== 'object')\r\n throw Error(\"Illegal arguments\");\r\n if (!(req instanceof method.resolvedRequestType.clazz))\r\n req = new method.resolvedRequestType.clazz(req);\r\n this.rpcImpl(method.fqn(), req, function(err, res) { // Assumes that this is properly async\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n // Coalesce to empty string when service response has empty content\r\n if (res === null)\r\n res = ''\r\n try { res = method.resolvedResponseType.clazz.decode(res); } catch (notABuffer) {}\r\n if (!res || !(res instanceof method.resolvedResponseType.clazz)) {\r\n callback(Error(\"Illegal response type received in service method \"+ T.name+\"#\"+method.name));\r\n return;\r\n }\r\n callback(null, res);\r\n });\r\n } catch (err) {\r\n setTimeout(callback.bind(this, err), 0);\r\n }\r\n };\r\n\r\n // Service.Method(rpcImpl, message, callback)\r\n Service[method.name] = function(rpcImpl, req, callback) {\r\n new Service(rpcImpl)[method.name](req, callback);\r\n };\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service[method.name], \"$options\", { \"value\": method.buildOpt() }),\r\n Object.defineProperty(ServicePrototype[method.name], \"$options\", { \"value\": Service[method.name][\"$options\"] });\r\n })(rpc[i]);\r\n }\r\n\r\n // Properties\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.<string,*>}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.<string,ProtoBuf.Builder.Message|Object>|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.<string>}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.<!Object>} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension ranges\r\n if (def[\"extensions\"]) {\r\n if (typeof def[\"extensions\"][0] === 'number') // pre 5.0.1\r\n obj.extensions = [ def[\"extensions\"] ];\r\n else\r\n obj.extensions = def[\"extensions\"];\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n // Check if field id is allowed to be extended\r\n if (obj.extensions) {\r\n var valid = false;\r\n obj.extensions.forEach(function(range) {\r\n if (fld[\"id\"] >= range[0] && fld[\"id\"] <= range[1])\r\n valid = true;\r\n });\r\n if (!valid)\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (not within valid ranges)\");\r\n }\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.<string,*>} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = __webpack_require__(117)['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = __webpack_require__(117)['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname;\r\n if (ProtoBuf.Util.IS_NODE)\r\n fname = __webpack_require__(117)['join'](root, filename.file);\r\n else\r\n fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i<json['imports'].length; i++) {\r\n if (typeof json['imports'][i] === 'string') { // Import file\r\n if (!importRoot)\r\n throw Error(\"cannot determine import root\");\r\n var importFilename = json['imports'][i];\r\n if (importFilename === \"google/protobuf/descriptor.proto\")\r\n continue; // Not needed and therefore not used\r\n if (ProtoBuf.Util.IS_NODE)\r\n importFilename = __webpack_require__(117)['join'](importRoot, importFilename);\r\n else\r\n importFilename = importRoot + delim + importFilename;\r\n if (this.files[importFilename] === true)\r\n continue; // Already imported\r\n if (/\\.proto$/i.test(importFilename) && !ProtoBuf.DotProto) // If this is a light build\r\n importFilename = importFilename.replace(/\\.proto$/, \".json\"); // always load the JSON file\r\n var contents = ProtoBuf.Util.fetch(importFilename);\r\n if (contents === null)\r\n throw Error(\"failed to import '\"+importFilename+\"' in '\"+filename+\"': file not found\");\r\n if (/\\.json$/i.test(importFilename)) // Always possible\r\n this[\"import\"](JSON.parse(contents+\"\"), importFilename); // May throw\r\n else\r\n this[\"import\"](ProtoBuf.DotProto.Parser.parse(contents), importFilename); // May throw\r\n } else // Import structure\r\n if (!filename)\r\n this[\"import\"](json['imports'][i]);\r\n else if (/\\.(\\w+)$/.test(filename)) // With extension: Append _importN to the name portion to make it unique\r\n this[\"import\"](json['imports'][i], filename.replace(/^(.+)\\.(\\w+)$/, function($0, $1, $2) { return $1+\"_import\"+i+\".\"+$2; }));\r\n else // Without extension: Append _importN to make it unique\r\n this[\"import\"](json['imports'][i], filename+\"_import\"+i);\r\n }\r\n if (resetRoot) // Reset import root override when all imports are done\r\n this.importRoot = null;\r\n }\r\n\r\n // Import structures\r\n\r\n if (json['package'])\r\n this.define(json['package']);\r\n if (json['syntax'])\r\n propagateSyntax(json);\r\n var base = this.ptr;\r\n if (json['options'])\r\n Object.keys(json['options']).forEach(function(key) {\r\n base.options[key] = json['options'][key];\r\n });\r\n if (json['messages'])\r\n this.create(json['messages']),\r\n this.ptr = base;\r\n if (json['enums'])\r\n this.create(json['enums']),\r\n this.ptr = base;\r\n if (json['services'])\r\n this.create(json['services']),\r\n this.ptr = base;\r\n if (json['extends'])\r\n this.create(json['extends']);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Resolves all namespace objects.\r\n * @throws {Error} If a type cannot be resolved\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.resolveAll = function() {\r\n // Resolve all reflected objects\r\n var res;\r\n if (this.ptr == null || typeof this.ptr.type === 'object')\r\n return this; // Done (already resolved)\r\n\r\n if (this.ptr instanceof Reflect.Namespace) { // Resolve children\r\n\r\n this.ptr.children.forEach(function(child) {\r\n this.ptr = child;\r\n this.resolveAll();\r\n }, this);\r\n\r\n } else if (this.ptr instanceof Reflect.Message.Field) { // Resolve type\r\n\r\n if (!Lang.TYPE.test(this.ptr.type)) {\r\n if (!Lang.TYPEREF.test(this.ptr.type))\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n res = (this.ptr instanceof Reflect.Message.ExtensionField ? this.ptr.extension.parent : this.ptr.parent).resolve(this.ptr.type, true);\r\n if (!res)\r\n throw Error(\"unresolvable type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n this.ptr.resolvedType = res;\r\n if (res instanceof Reflect.Enum) {\r\n this.ptr.type = ProtoBuf.TYPES[\"enum\"];\r\n if (this.ptr.syntax === 'proto3' && res.syntax !== 'proto3')\r\n throw Error(\"proto3 message cannot reference proto2 enum\");\r\n }\r\n else if (res instanceof Reflect.Message)\r\n this.ptr.type = res.isGroup ? ProtoBuf.TYPES[\"group\"] : ProtoBuf.TYPES[\"message\"];\r\n else\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n } else\r\n this.ptr.type = ProtoBuf.TYPES[this.ptr.type];\r\n\r\n // If it's a map field, also resolve the key type. The key type can be only a numeric, string, or bool type\r\n // (i.e., no enums or messages), so we don't need to resolve against the current namespace.\r\n if (this.ptr.map) {\r\n if (!Lang.TYPE.test(this.ptr.keyType))\r\n throw Error(\"illegal key type for map field in \"+this.ptr.toString(true)+\": \"+this.ptr.keyType);\r\n this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType];\r\n }\r\n\r\n // If it's a repeated and packable field then proto3 mandates it should be packed by\r\n // default\r\n if (\r\n this.ptr.syntax === 'proto3' &&\r\n this.ptr.repeated && this.ptr.options.packed === undefined &&\r\n ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType) !== -1\r\n ) {\r\n this.ptr.options.packed = true;\r\n }\r\n\r\n } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) {\r\n\r\n if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) {\r\n res = this.ptr.parent.resolve(this.ptr.requestName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.requestName);\r\n this.ptr.resolvedRequestType = res;\r\n res = this.ptr.parent.resolve(this.ptr.responseName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.responseName);\r\n this.ptr.resolvedResponseType = res;\r\n } else // Should not happen as nothing else is implemented\r\n throw Error(\"illegal service type in \"+this.ptr.toString(true));\r\n\r\n } else if (\r\n !(this.ptr instanceof ProtoBuf.Reflect.Message.OneOf) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Extension) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Enum.Value) // Built in enum\r\n )\r\n throw Error(\"illegal object in namespace: \"+typeof(this.ptr)+\": \"+this.ptr);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Builds the protocol. This will first try to resolve all definitions and, if this has been successful,\r\n * return the built package.\r\n * @param {(string|Array.<string>)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.<string,*>}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i<part.length; i++)\r\n if (ptr[part[i]])\r\n ptr = ptr[part[i]];\r\n else {\r\n ptr = null;\r\n break;\r\n }\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Similar to {@link ProtoBuf.Builder#build}, but looks up the internal reflection descriptor.\r\n * @param {string=} path Specifies what to return. If omitted, the entire namespace wiil be returned.\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types like fields, defaults to `false`\r\n * @returns {?ProtoBuf.Reflect.T} Reflection descriptor or `null` if not found\r\n */\r\n BuilderPrototype.lookup = function(path, excludeNonNamespace) {\r\n return path ? this.ns.resolve(path, excludeNonNamespace) : this.ns;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Builder\"\r\n * @expose\r\n */\r\n BuilderPrototype.toString = function() {\r\n return \"Builder\";\r\n };\r\n\r\n // ----- Base classes -----\r\n // Exist for the sole purpose of being able to \"... instanceof ProtoBuf.Builder.Message\" etc.\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Message = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Enum\r\n */\r\n Builder.Enum = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Service = function() {};\r\n\r\n return Builder;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang, ProtoBuf.Reflect);\r\n\r\n /**\r\n * @alias ProtoBuf.Map\r\n * @expose\r\n */\r\n ProtoBuf.Map = (function(ProtoBuf, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Map. A Map is a container that is used to implement map\r\n * fields on message objects. It closely follows the ES6 Map API; however,\r\n * it is distinct because we do not want to depend on external polyfills or\r\n * on ES6 itself.\r\n *\r\n * @exports ProtoBuf.Map\r\n * @param {!ProtoBuf.Reflect.Field} field Map field\r\n * @param {Object.<string,*>=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object<string, {key: *, value: *}>}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.<string,*>=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n\n\n/***/ }),\n/* 613 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n Copyright 2013-2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz <dcode@dcode.io>\r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (true)\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(614)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.<!ByteBuffer|!ArrayBuffer|!Uint8Array|string>} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i<k; ++i) {\r\n if (!ByteBuffer.isByteBuffer(buffers[i]))\r\n buffers[i] = ByteBuffer.wrap(buffers[i], encoding);\r\n length = buffers[i].limit - buffers[i].offset;\r\n if (length > 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i<k) {\r\n bi = buffers[i++];\r\n length = bi.limit - bi.offset;\r\n if (length <= 0) continue;\r\n bb.view.set(bi.view.subarray(bi.offset, bi.limit), bb.offset);\r\n bb.offset += length;\r\n }\r\n bb.limit = bb.offset;\r\n bb.offset = 0;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Tests if the specified type is a ByteBuffer.\r\n * @param {*} bb ByteBuffer to test\r\n * @returns {boolean} `true` if it is a ByteBuffer, otherwise `false`\r\n * @expose\r\n */\r\n ByteBuffer.isByteBuffer = function(bb) {\r\n return (bb && bb[\"__isByteBuffer__\"]) === true;\r\n };\r\n /**\r\n * Gets the backing buffer type.\r\n * @returns {Function} `Buffer` under node.js, `ArrayBuffer` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.type = function() {\r\n return ArrayBuffer;\r\n };\r\n /**\r\n * Wraps a buffer or a string. Sets the allocated ByteBuffer's {@link ByteBuffer#offset} to `0` and its\r\n * {@link ByteBuffer#limit} to the length of the wrapped data.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string|!Array.<number>} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i<buffer.length; ++i)\r\n bb.view[i] = buffer[i];\r\n } else\r\n throw TypeError(\"Illegal buffer\"); // Otherwise fail\r\n return bb;\r\n };\r\n\r\n /**\r\n * Writes the array as a bitset.\r\n * @param {Array<boolean>} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array<boolean>\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i<k; ++i) {\r\n if (str.charCodeAt(i) === 0)\r\n throw RangeError(\"Illegal str: Contains NULL-characters\");\r\n }\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.<string,*>}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i<k; ++i)\r\n ain[aout[i]] = i;\r\n\r\n /**\r\n * Encodes bytes to base64 char codes.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if\r\n * there are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each encoded char\r\n * code.\r\n */\r\n lxiv.encode = function(src, dst) {\r\n var b, t;\r\n while ((b = src()) !== null) {\r\n dst(aout[(b>>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i<k) {\r\n charCode = str.charCodeAt(i);\r\n if (charCode > 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.<string>} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i<k) {\r\n if (i !== -1) {\r\n b = this.view[i];\r\n if (b < 0x10) hex += \"0\"+b.toString(16).toUpperCase();\r\n else hex += b.toString(16).toUpperCase();\r\n if (columns)\r\n asc += b > 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i<k) {\r\n switch (ch = str.charAt(i++)) {\r\n case '!':\r\n if (!noAssert) {\r\n if (ho || hm || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = hl = true;\r\n }\r\n bb.offset = bb.markedOffset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '|':\r\n if (!noAssert) {\r\n if (ho || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hl = true;\r\n }\r\n bb.offset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '[':\r\n if (!noAssert) {\r\n if (ho || hm) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = true;\r\n }\r\n bb.offset = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '<':\r\n if (!noAssert) {\r\n if (ho) {\r\n fail = true;\r\n break;\r\n }\r\n ho = true;\r\n }\r\n bb.offset = j;\r\n rs = false;\r\n break;\r\n case ']':\r\n if (!noAssert) {\r\n if (hl || hm) {\r\n fail = true;\r\n break;\r\n }\r\n hl = hm = true;\r\n }\r\n bb.limit = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '>':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j<bb.buffer.byteLength)\r\n throw TypeError(\"Illegal str: Not a debug encoded string (is it hex?) \"+j+\" < \"+k);\r\n }\r\n return bb;\r\n };\r\n\r\n // encodings/hex\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a hex encoded string.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Hex encoded string\r\n * @expose\r\n */\r\n ByteBufferPrototype.toHex = function(begin, end) {\r\n begin = typeof begin === 'undefined' ? this.offset : begin;\r\n end = typeof end === 'undefined' ? this.limit : end;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i<k; i+=2) {\r\n b = parseInt(str.substring(i, i+2), 16);\r\n if (!noAssert)\r\n if (!isFinite(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.<string,*>}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n/***/ }),\n/* 614 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (true)\r\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n\n\n/***/ }),\n/* 615 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 616 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _slice = _interopRequireDefault(__webpack_require__(61));\n\nvar _getOwnPropertySymbols = _interopRequireDefault(__webpack_require__(153));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar has = Object.prototype.hasOwnProperty,\n prefix = '~';\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\n\nfunction Events() {} //\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\n\n\nif (Object.create) {\n Events.prototype = Object.create(null); //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n\n if (!new Events().__proto__) prefix = false;\n}\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\n\n\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\n\n\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once),\n evt = prefix ? prefix + event : event;\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);else emitter._events[evt] = [emitter._events[evt], listener];\n return emitter;\n}\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\n\n\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();else delete emitter._events[evt];\n}\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\n\n\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\n\n\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = [],\n events,\n name;\n if (this._eventsCount === 0) return names;\n\n for (name in events = this._events) {\n if (has.call(events, name)) names.push(prefix ? (0, _slice.default)(name).call(name, 1) : name);\n }\n\n if (_getOwnPropertySymbols.default) {\n return (0, _concat.default)(names).call(names, (0, _getOwnPropertySymbols.default)(events));\n }\n\n return names;\n};\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\n\n\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event,\n handlers = this._events[evt];\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\n\n\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event,\n listeners = this._events[evt];\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\n\n\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return false;\n var listeners = this._events[evt],\n len = arguments.length,\n args,\n i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1:\n return listeners.fn.call(listeners.context), true;\n\n case 2:\n return listeners.fn.call(listeners.context, a1), true;\n\n case 3:\n return listeners.fn.call(listeners.context, a1, a2), true;\n\n case 4:\n return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\n case 5:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\n case 6:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len - 1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length,\n j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1:\n listeners[i].fn.call(listeners[i].context);\n break;\n\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n\n default:\n if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return this;\n\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n events.push(listeners[i]);\n }\n } //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n\n\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;else clearEvent(this, evt);\n }\n\n return this;\n};\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\n\n\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n}; //\n// Alias methods names because people roll like that.\n//\n\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on; //\n// Expose the prefix.\n//\n\nEventEmitter.prefixed = prefix; //\n// Allow `EventEmitter` to be imported as module namespace.\n//\n\nEventEmitter.EventEmitter = EventEmitter; //\n// Expose the module.\n//\n\nif (true) {\n module.exports = EventEmitter;\n}\n\n/***/ }),\n/* 617 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(618);\n\n\n/***/ }),\n/* 618 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\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 function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\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 exports.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 GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\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 define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.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 exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\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 exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\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 PromiseImpl.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 PromiseImpl.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.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(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 exports.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 exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.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 // Note: [\"return\"] must be used for ES3 parsing compatibility.\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 define(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 exports.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 exports.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 // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n true ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n\n\n/***/ }),\n/* 619 */\n/***/ (function(module, exports) {\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\n\n/***/ }),\n/* 620 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithoutHoles = __webpack_require__(621);\n\nvar iterableToArray = __webpack_require__(266);\n\nvar unsupportedIterableToArray = __webpack_require__(267);\n\nvar nonIterableSpread = __webpack_require__(622);\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n/***/ }),\n/* 621 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeToArray = __webpack_require__(265);\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n/***/ }),\n/* 622 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n/***/ }),\n/* 623 */\n/***/ (function(module, exports) {\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n/***/ }),\n/* 624 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar objectWithoutPropertiesLoose = __webpack_require__(625);\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n/***/ }),\n/* 625 */\n/***/ (function(module, exports) {\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n/***/ }),\n/* 626 */\n/***/ (function(module, exports) {\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n/***/ }),\n/* 627 */\n/***/ (function(module, exports) {\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n/***/ }),\n/* 628 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayShuffle = __webpack_require__(629),\n baseShuffle = __webpack_require__(632),\n isArray = __webpack_require__(273);\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n\n\n/***/ }),\n/* 629 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar copyArray = __webpack_require__(630),\n shuffleSelf = __webpack_require__(268);\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n\n\n/***/ }),\n/* 630 */\n/***/ (function(module, exports) {\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n/***/ }),\n/* 631 */\n/***/ (function(module, exports) {\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n\n\n/***/ }),\n/* 632 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shuffleSelf = __webpack_require__(268),\n values = __webpack_require__(269);\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n\n\n/***/ }),\n/* 633 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayMap = __webpack_require__(634);\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n\n\n/***/ }),\n/* 634 */\n/***/ (function(module, exports) {\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n/***/ }),\n/* 635 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayLikeKeys = __webpack_require__(636),\n baseKeys = __webpack_require__(649),\n isArrayLike = __webpack_require__(652);\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n/***/ }),\n/* 636 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseTimes = __webpack_require__(637),\n isArguments = __webpack_require__(638),\n isArray = __webpack_require__(273),\n isBuffer = __webpack_require__(642),\n isIndex = __webpack_require__(644),\n isTypedArray = __webpack_require__(645);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n/***/ }),\n/* 637 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n/***/ }),\n/* 638 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsArguments = __webpack_require__(639),\n isObjectLike = __webpack_require__(119);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n/***/ }),\n/* 639 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(118),\n isObjectLike = __webpack_require__(119);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n/***/ }),\n/* 640 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(270);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n/***/ }),\n/* 641 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n/***/ }),\n/* 642 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(271),\n stubFalse = __webpack_require__(643);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(274)(module)))\n\n/***/ }),\n/* 643 */\n/***/ (function(module, exports) {\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n/***/ }),\n/* 644 */\n/***/ (function(module, exports) {\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n/***/ }),\n/* 645 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseIsTypedArray = __webpack_require__(646),\n baseUnary = __webpack_require__(647),\n nodeUtil = __webpack_require__(648);\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n/***/ }),\n/* 646 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(118),\n isLength = __webpack_require__(275),\n isObjectLike = __webpack_require__(119);\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n/***/ }),\n/* 647 */\n/***/ (function(module, exports) {\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n/***/ }),\n/* 648 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(272);\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(274)(module)))\n\n/***/ }),\n/* 649 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isPrototype = __webpack_require__(650),\n nativeKeys = __webpack_require__(651);\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n/***/ }),\n/* 650 */\n/***/ (function(module, exports) {\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n/***/ }),\n/* 651 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(276);\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n/***/ }),\n/* 652 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isFunction = __webpack_require__(653),\n isLength = __webpack_require__(275);\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n/***/ }),\n/* 653 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(118),\n isObject = __webpack_require__(654);\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n/***/ }),\n/* 654 */\n/***/ (function(module, exports) {\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n/***/ }),\n/* 655 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar arrayWithHoles = __webpack_require__(656);\n\nvar iterableToArray = __webpack_require__(266);\n\nvar unsupportedIterableToArray = __webpack_require__(267);\n\nvar nonIterableRest = __webpack_require__(657);\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;\n\n/***/ }),\n/* 656 */\n/***/ (function(module, exports) {\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n/***/ }),\n/* 657 */\n/***/ (function(module, exports) {\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\n\n/***/ }),\n/* 658 */\n/***/ (function(module, exports) {\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n/***/ }),\n/* 659 */\n/***/ (function(module, exports) {\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nmodule.exports = _applyDecoratedDescriptor;\n\n/***/ }),\n/* 660 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/*\n\n Javascript State Machine Library - https://github.com/jakesgordon/javascript-state-machine\n\n Copyright (c) 2012, 2013, 2014, 2015, Jake Gordon and contributors\n Released under the MIT license - https://github.com/jakesgordon/javascript-state-machine/blob/master/LICENSE\n\n*/\n\n(function () {\n\n var StateMachine = {\n\n //---------------------------------------------------------------------------\n\n VERSION: \"2.4.0\",\n\n //---------------------------------------------------------------------------\n\n Result: {\n SUCCEEDED: 1, // the event transitioned successfully from one state to another\n NOTRANSITION: 2, // the event was successfull but no state transition was necessary\n CANCELLED: 3, // the event was cancelled by the caller in a beforeEvent callback\n PENDING: 4 // the event is asynchronous and the caller is in control of when the transition occurs\n },\n\n Error: {\n INVALID_TRANSITION: 100, // caller tried to fire an event that was innapropriate in the current state\n PENDING_TRANSITION: 200, // caller tried to fire an event while an async transition was still pending\n INVALID_CALLBACK: 300 // caller provided callback function threw an exception\n },\n\n WILDCARD: '*',\n ASYNC: 'async',\n\n //---------------------------------------------------------------------------\n\n create: function(cfg, target) {\n\n var initial = (typeof cfg.initial == 'string') ? { state: cfg.initial } : cfg.initial; // allow for a simple string, or an object with { state: 'foo', event: 'setup', defer: true|false }\n var terminal = cfg.terminal || cfg['final'];\n var fsm = target || cfg.target || {};\n var events = cfg.events || [];\n var callbacks = cfg.callbacks || {};\n var map = {}; // track state transitions allowed for an event { event: { from: [ to ] } }\n var transitions = {}; // track events allowed from a state { state: [ event ] }\n\n var add = function(e) {\n var from = Array.isArray(e.from) ? e.from : (e.from ? [e.from] : [StateMachine.WILDCARD]); // allow 'wildcard' transition if 'from' is not specified\n map[e.name] = map[e.name] || {};\n for (var n = 0 ; n < from.length ; n++) {\n transitions[from[n]] = transitions[from[n]] || [];\n transitions[from[n]].push(e.name);\n\n map[e.name][from[n]] = e.to || from[n]; // allow no-op transition if 'to' is not specified\n }\n if (e.to)\n transitions[e.to] = transitions[e.to] || [];\n };\n\n if (initial) {\n initial.event = initial.event || 'startup';\n add({ name: initial.event, from: 'none', to: initial.state });\n }\n\n for(var n = 0 ; n < events.length ; n++)\n add(events[n]);\n\n for(var name in map) {\n if (map.hasOwnProperty(name))\n fsm[name] = StateMachine.buildEvent(name, map[name]);\n }\n\n for(var name in callbacks) {\n if (callbacks.hasOwnProperty(name))\n fsm[name] = callbacks[name]\n }\n\n fsm.current = 'none';\n fsm.is = function(state) { return Array.isArray(state) ? (state.indexOf(this.current) >= 0) : (this.current === state); };\n fsm.can = function(event) { return !this.transition && (map[event] !== undefined) && (map[event].hasOwnProperty(this.current) || map[event].hasOwnProperty(StateMachine.WILDCARD)); }\n fsm.cannot = function(event) { return !this.can(event); };\n fsm.transitions = function() { return (transitions[this.current] || []).concat(transitions[StateMachine.WILDCARD] || []); };\n fsm.isFinished = function() { return this.is(terminal); };\n fsm.error = cfg.error || function(name, from, to, args, error, msg, e) { throw e || msg; }; // default behavior when something unexpected happens is to throw an exception, but caller can override this behavior if desired (see github issue #3 and #17)\n fsm.states = function() { return Object.keys(transitions).sort() };\n\n if (initial && !initial.defer)\n fsm[initial.event]();\n\n return fsm;\n\n },\n\n //===========================================================================\n\n doCallback: function(fsm, func, name, from, to, args) {\n if (func) {\n try {\n return func.apply(fsm, [name, from, to].concat(args));\n }\n catch(e) {\n return fsm.error(name, from, to, args, StateMachine.Error.INVALID_CALLBACK, \"an exception occurred in a caller-provided callback function\", e);\n }\n }\n },\n\n beforeAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbeforeevent'], name, from, to, args); },\n afterAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafterevent'] || fsm['onevent'], name, from, to, args); },\n leaveAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleavestate'], name, from, to, args); },\n enterAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenterstate'] || fsm['onstate'], name, from, to, args); },\n changeState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onchangestate'], name, from, to, args); },\n\n beforeThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbefore' + name], name, from, to, args); },\n afterThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafter' + name] || fsm['on' + name], name, from, to, args); },\n leaveThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleave' + from], name, from, to, args); },\n enterThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenter' + to] || fsm['on' + to], name, from, to, args); },\n\n beforeEvent: function(fsm, name, from, to, args) {\n if ((false === StateMachine.beforeThisEvent(fsm, name, from, to, args)) ||\n (false === StateMachine.beforeAnyEvent( fsm, name, from, to, args)))\n return false;\n },\n\n afterEvent: function(fsm, name, from, to, args) {\n StateMachine.afterThisEvent(fsm, name, from, to, args);\n StateMachine.afterAnyEvent( fsm, name, from, to, args);\n },\n\n leaveState: function(fsm, name, from, to, args) {\n var specific = StateMachine.leaveThisState(fsm, name, from, to, args),\n general = StateMachine.leaveAnyState( fsm, name, from, to, args);\n if ((false === specific) || (false === general))\n return false;\n else if ((StateMachine.ASYNC === specific) || (StateMachine.ASYNC === general))\n return StateMachine.ASYNC;\n },\n\n enterState: function(fsm, name, from, to, args) {\n StateMachine.enterThisState(fsm, name, from, to, args);\n StateMachine.enterAnyState( fsm, name, from, to, args);\n },\n\n //===========================================================================\n\n buildEvent: function(name, map) {\n return function() {\n\n var from = this.current;\n var to = map[from] || (map[StateMachine.WILDCARD] != StateMachine.WILDCARD ? map[StateMachine.WILDCARD] : from) || from;\n var args = Array.prototype.slice.call(arguments); // turn arguments into pure array\n\n if (this.transition)\n return this.error(name, from, to, args, StateMachine.Error.PENDING_TRANSITION, \"event \" + name + \" inappropriate because previous transition did not complete\");\n\n if (this.cannot(name))\n return this.error(name, from, to, args, StateMachine.Error.INVALID_TRANSITION, \"event \" + name + \" inappropriate in current state \" + this.current);\n\n if (false === StateMachine.beforeEvent(this, name, from, to, args))\n return StateMachine.Result.CANCELLED;\n\n if (from === to) {\n StateMachine.afterEvent(this, name, from, to, args);\n return StateMachine.Result.NOTRANSITION;\n }\n\n // prepare a transition method for use EITHER lower down, or by caller if they want an async transition (indicated by an ASYNC return value from leaveState)\n var fsm = this;\n this.transition = function() {\n fsm.transition = null; // this method should only ever be called once\n fsm.current = to;\n StateMachine.enterState( fsm, name, from, to, args);\n StateMachine.changeState(fsm, name, from, to, args);\n StateMachine.afterEvent( fsm, name, from, to, args);\n return StateMachine.Result.SUCCEEDED;\n };\n this.transition.cancel = function() { // provide a way for caller to cancel async transition if desired (issue #22)\n fsm.transition = null;\n StateMachine.afterEvent(fsm, name, from, to, args);\n }\n\n var leave = StateMachine.leaveState(this, name, from, to, args);\n if (false === leave) {\n this.transition = null;\n return StateMachine.Result.CANCELLED;\n }\n else if (StateMachine.ASYNC === leave) {\n return StateMachine.Result.PENDING;\n }\n else {\n if (this.transition) // need to check in case user manually called transition() but forgot to return StateMachine.ASYNC\n return this.transition();\n }\n\n };\n }\n\n }; // StateMachine\n\n //===========================================================================\n\n //======\n // NODE\n //======\n if (true) {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = StateMachine;\n }\n exports.StateMachine = StateMachine;\n }\n //============\n // AMD/REQUIRE\n //============\n else if (typeof define === 'function' && define.amd) {\n define(function(require) { return StateMachine; });\n }\n //========\n // BROWSER\n //========\n else if (typeof window !== 'undefined') {\n window.StateMachine = StateMachine;\n }\n //===========\n // WEB WORKER\n //===========\n else if (typeof self !== 'undefined') {\n self.StateMachine = StateMachine;\n }\n\n}());\n\n\n/***/ }),\n/* 661 */\n/***/ (function(module, exports) {\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n/***/ }),\n/* 662 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(118),\n getPrototype = __webpack_require__(663),\n isObjectLike = __webpack_require__(119);\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n/***/ }),\n/* 663 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar overArg = __webpack_require__(276);\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n/***/ }),\n/* 664 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _interopRequireDefault = __webpack_require__(1);\n\nvar _isIterable2 = _interopRequireDefault(__webpack_require__(665));\n\nvar _from = _interopRequireDefault(__webpack_require__(252));\n\nvar _set = _interopRequireDefault(__webpack_require__(264));\n\nvar _concat = _interopRequireDefault(__webpack_require__(22));\n\nvar _assign = _interopRequireDefault(__webpack_require__(152));\n\nvar _map = _interopRequireDefault(__webpack_require__(35));\n\nvar _defineProperty = _interopRequireDefault(__webpack_require__(92));\n\nvar _typeof2 = _interopRequireDefault(__webpack_require__(73));\n\n(function (global, factory) {\n ( false ? \"undefined\" : (0, _typeof2.default)(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, __webpack_require__(156)) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(156)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (global = global || self, factory(global.AV = global.AV || {}, global.AV));\n})(void 0, function (exports, core) {\n 'use strict';\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n }\n\n function _iterableToArray(iter) {\n if ((0, _isIterable2.default)(Object(iter)) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return (0, _from.default)(iter);\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n /* eslint-disable import/no-unresolved */\n\n\n if (!core.Protocals) {\n throw new Error('LeanCloud Realtime SDK not installed');\n }\n\n var CommandType = core.Protocals.CommandType,\n GenericCommand = core.Protocals.GenericCommand,\n AckCommand = core.Protocals.AckCommand;\n\n var warn = function warn(error) {\n return console.warn(error.message);\n };\n\n var LiveQueryClient = /*#__PURE__*/function (_EventEmitter) {\n _inheritsLoose(LiveQueryClient, _EventEmitter);\n\n function LiveQueryClient(appId, subscriptionId, connection) {\n var _this;\n\n _this = _EventEmitter.call(this) || this;\n _this._appId = appId;\n _this.id = subscriptionId;\n _this._connection = connection;\n _this._eventemitter = new core.EventEmitter();\n _this._querys = new _set.default();\n return _this;\n }\n\n var _proto = LiveQueryClient.prototype;\n\n _proto._send = function _send(cmd) {\n var _context;\n\n var _this$_connection;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_this$_connection = this._connection).send.apply(_this$_connection, (0, _concat.default)(_context = [(0, _assign.default)(cmd, {\n appId: this._appId,\n installationId: this.id,\n service: 1\n })]).call(_context, args));\n };\n\n _proto._open = function _open() {\n return this._send(new GenericCommand({\n cmd: CommandType.login\n }));\n };\n\n _proto.close = function close() {\n var _ee = this._eventemitter;\n\n _ee.emit('beforeclose');\n\n return this._send(new GenericCommand({\n cmd: CommandType.logout\n })).then(function () {\n return _ee.emit('close');\n });\n };\n\n _proto.register = function register(liveQuery) {\n this._querys.add(liveQuery);\n };\n\n _proto.deregister = function deregister(liveQuery) {\n var _this2 = this;\n\n this._querys.delete(liveQuery);\n\n setTimeout(function () {\n if (!_this2._querys.size) _this2.close().catch(warn);\n }, 0);\n };\n\n _proto._dispatchCommand = function _dispatchCommand(command) {\n if (command.cmd !== CommandType.data) {\n this.emit('unhandledmessage', command);\n return core.Promise.resolve();\n }\n\n return this._dispatchDataCommand(command);\n };\n\n _proto._dispatchDataCommand = function _dispatchDataCommand(_ref) {\n var _ref$dataMessage = _ref.dataMessage,\n ids = _ref$dataMessage.ids,\n msg = _ref$dataMessage.msg;\n this.emit('message', (0, _map.default)(msg).call(msg, function (_ref2) {\n var data = _ref2.data;\n return JSON.parse(data);\n })); // send ack\n\n var command = new GenericCommand({\n cmd: CommandType.ack,\n ackMessage: new AckCommand({\n ids: ids\n })\n });\n return this._send(command, false).catch(warn);\n };\n\n return LiveQueryClient;\n }(core.EventEmitter);\n\n var finalize = function finalize(callback) {\n return [// eslint-disable-next-line no-sequences\n function (value) {\n return callback(), value;\n }, function (error) {\n callback();\n throw error;\n }];\n };\n\n var onRealtimeCreate = function onRealtimeCreate(realtime) {\n /* eslint-disable no-param-reassign */\n realtime._liveQueryClients = {};\n\n realtime.createLiveQueryClient = function (subscriptionId) {\n var _realtime$_open$then;\n\n if (realtime._liveQueryClients[subscriptionId] !== undefined) {\n return core.Promise.resolve(realtime._liveQueryClients[subscriptionId]);\n }\n\n var promise = (_realtime$_open$then = realtime._open().then(function (connection) {\n var client = new LiveQueryClient(realtime._options.appId, subscriptionId, connection);\n connection.on('reconnect', function () {\n return client._open().then(function () {\n return client.emit('reconnect');\n }, function (error) {\n return client.emit('reconnecterror', error);\n });\n });\n\n client._eventemitter.on('beforeclose', function () {\n delete realtime._liveQueryClients[client.id];\n }, realtime);\n\n client._eventemitter.on('close', function () {\n realtime._deregister(client);\n }, realtime);\n\n return client._open().then(function () {\n realtime._liveQueryClients[client.id] = client;\n\n realtime._register(client);\n\n return client;\n });\n })).then.apply(_realtime$_open$then, _toConsumableArray(finalize(function () {\n if (realtime._deregisterPending) realtime._deregisterPending(promise);\n })));\n\n realtime._liveQueryClients[subscriptionId] = promise;\n if (realtime._registerPending) realtime._registerPending(promise);\n return promise;\n };\n /* eslint-enable no-param-reassign */\n\n };\n\n var beforeCommandDispatch = function beforeCommandDispatch(command, realtime) {\n var isLiveQueryCommand = command.installationId && command.service === 1;\n if (!isLiveQueryCommand) return true;\n var targetClient = realtime._liveQueryClients[command.installationId];\n\n if (targetClient) {\n targetClient._dispatchCommand(command).catch(function (error) {\n return console.warn(error);\n });\n } else {\n console.warn('Unexpected message received without any live client match: %O', command);\n }\n\n return false;\n }; // eslint-disable-next-line import/prefer-default-export\n\n\n var LiveQueryPlugin = {\n name: 'leancloud-realtime-plugin-live-query',\n onRealtimeCreate: onRealtimeCreate,\n beforeCommandDispatch: beforeCommandDispatch\n };\n exports.LiveQueryPlugin = LiveQueryPlugin;\n (0, _defineProperty.default)(exports, '__esModule', {\n value: true\n });\n});\n\n/***/ }),\n/* 665 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(666);\n\n/***/ }),\n/* 666 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(667);\n\n\n/***/ }),\n/* 667 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(668);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 668 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(669);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 669 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar parent = __webpack_require__(670);\n__webpack_require__(39);\n\nmodule.exports = parent;\n\n\n/***/ }),\n/* 670 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(38);\n__webpack_require__(55);\nvar isIterable = __webpack_require__(671);\n\nmodule.exports = isIterable;\n\n\n/***/ }),\n/* 671 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(51);\nvar hasOwn = __webpack_require__(13);\nvar wellKnownSymbol = __webpack_require__(9);\nvar Iterators = __webpack_require__(50);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar $Object = Object;\n\nmodule.exports = function (it) {\n var O = $Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || hasOwn(Iterators, classof(O));\n};\n\n\n/***/ })\n/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// av-live-query-weapp-min.js","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/export.js\n// module id = 0\n// module chunks = 0 1","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js\n// module id = 1\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/fails.js\n// module id = 2\n// module chunks = 0 1","// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\nexport { default } from './index-default.js';\nexport * from './index.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-all.js\n// module id = 3\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-uncurry-this.js\n// module id = 4\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/path.js\n// module id = 5\n// module chunks = 0 1","// Current version.\nexport var VERSION = '1.12.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_setup.js\n// module id = 6\n// module chunks = 0 1","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/global.js\n// module id = 7\n// module chunks = 0 1","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-callable.js\n// module id = 8\n// module chunks = 0 1","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol.js\n// module id = 9\n// module chunks = 0 1","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-well-known-symbol.js\n// module id = 10\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-object.js\n// module id = 11\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/promise\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js\n// module id = 12\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/has-own-property.js\n// module id = 13\n// module chunks = 0 1","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/descriptors.js\n// module id = 14\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-call.js\n// module id = 15\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/keys.js\n// module id = 16\n// module chunks = 0 1","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_tagTester.js\n// module id = 17\n// module chunks = 0 1","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-built-in.js\n// module id = 18\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-is-prototype-of.js\n// module id = 19\n// module chunks = 0 1","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-object.js\n// module id = 20\n// module chunks = 0 1","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_cb.js\n// module id = 21\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/concat\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js\n// module id = 22\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-define-property.js\n// module id = 23\n// module chunks = 0 1","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/restArguments.js\n// module id = 24\n// module chunks = 0 1","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore.js\n// module id = 25\n// module chunks = 0 1","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isArrayLike.js\n// module id = 26\n// module chunks = 0 1","const _ = require('underscore');\nconst md5 = require('md5');\nconst { extend } = require('underscore');\nconst AV = require('./av');\nconst AVError = require('./error');\nconst { getSessionToken } = require('./utils');\nconst ajax = require('./utils/ajax');\n\n// 计算 X-LC-Sign 的签名方法\nconst sign = (key, isMasterKey) => {\n const now = new Date().getTime();\n const signature = md5(now + key);\n if (isMasterKey) {\n return `${signature},${now},master`;\n }\n return `${signature},${now}`;\n};\n\nconst setAppKey = (headers, signKey) => {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.applicationKey);\n } else {\n headers['X-LC-Key'] = AV.applicationKey;\n }\n};\n\nconst setHeaders = (authOptions = {}, signKey) => {\n const headers = {\n 'X-LC-Id': AV.applicationId,\n 'Content-Type': 'application/json;charset=UTF-8',\n };\n let useMasterKey = false;\n if (typeof authOptions.useMasterKey === 'boolean') {\n useMasterKey = authOptions.useMasterKey;\n } else if (typeof AV._config.useMasterKey === 'boolean') {\n useMasterKey = AV._config.useMasterKey;\n }\n if (useMasterKey) {\n if (AV.masterKey) {\n if (signKey) {\n headers['X-LC-Sign'] = sign(AV.masterKey, true);\n } else {\n headers['X-LC-Key'] = `${AV.masterKey},master`;\n }\n } else {\n console.warn('masterKey is not set, fall back to use appKey');\n setAppKey(headers, signKey);\n }\n } else {\n setAppKey(headers, signKey);\n }\n if (AV.hookKey) {\n headers['X-LC-Hook-Key'] = AV.hookKey;\n }\n if (AV._config.production !== null) {\n headers['X-LC-Prod'] = String(AV._config.production);\n }\n headers[process.env.PLATFORM === 'NODE_JS' ? 'User-Agent' : 'X-LC-UA'] =\n AV._sharedConfig.userAgent;\n\n return Promise.resolve().then(() => {\n // Pass the session token\n const sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n headers['X-LC-Session'] = sessionToken;\n } else if (!AV._config.disableCurrentUser) {\n return AV.User.currentAsync().then(currentUser => {\n if (currentUser && currentUser._sessionToken) {\n headers['X-LC-Session'] = currentUser._sessionToken;\n }\n return headers;\n });\n }\n return headers;\n });\n};\n\nconst createApiUrl = ({\n service = 'api',\n version = '1.1',\n path,\n // query, // don't care\n // method, // don't care\n // data, // don't care\n}) => {\n let apiURL = AV._config.serverURLs[service];\n\n if (!apiURL) throw new Error(`undefined server URL for ${service}`);\n\n if (apiURL.charAt(apiURL.length - 1) !== '/') {\n apiURL += '/';\n }\n apiURL += version;\n if (path) {\n apiURL += path;\n }\n\n return apiURL;\n};\n\n/**\n * Low level REST API client. Call REST endpoints with authorization headers.\n * @function AV.request\n * @since 3.0.0\n * @param {Object} options\n * @param {String} options.method HTTP method\n * @param {String} options.path endpoint path, e.g. `/classes/Test/55759577e4b029ae6015ac20`\n * @param {Object} [options.query] query string dict\n * @param {Object} [options.data] HTTP body\n * @param {AuthOptions} [options.authOptions]\n * @param {String} [options.service = 'api']\n * @param {String} [options.version = '1.1']\n */\nconst request = ({\n service,\n version,\n method,\n path,\n query,\n data,\n authOptions,\n signKey = true,\n}) => {\n if (!(AV.applicationId && (AV.applicationKey || AV.masterKey))) {\n throw new Error('Not initialized');\n }\n if (AV._appRouter) {\n AV._appRouter.refresh();\n }\n const { requestTimeout: timeout } = AV._config;\n const url = createApiUrl({ service, path, version });\n return setHeaders(authOptions, signKey).then(headers =>\n ajax({ method, url, query, data, headers, timeout }).catch(error => {\n let errorJSON = {\n code: error.code || -1,\n error: error.message || error.responseText,\n };\n if (error.response && error.response.code) {\n errorJSON = error.response;\n } else if (error.responseText) {\n try {\n errorJSON = JSON.parse(error.responseText);\n } catch (e) {\n // If we fail to parse the error text, that's okay.\n }\n }\n errorJSON.rawMessage = errorJSON.rawMessage || errorJSON.error;\n if (!AV._sharedConfig.keepErrorRawMessage) {\n errorJSON.error += ` [${error.statusCode || 'N/A'} ${method} ${url}]`;\n }\n // Transform the error into an instance of AVError by trying to parse\n // the error string as JSON.\n const err = new AVError(errorJSON.code, errorJSON.error);\n delete errorJSON.error;\n throw _.extend(err, errorJSON);\n })\n );\n};\n\n// lagecy request\nconst _request = (\n route,\n className,\n objectId,\n method,\n data,\n authOptions,\n query\n) => {\n let path = '';\n if (route) path += `/${route}`;\n if (className) path += `/${className}`;\n if (objectId) path += `/${objectId}`;\n // for migeration\n if (data && data._fetchWhenSave)\n throw new Error('_fetchWhenSave should be in the query');\n if (data && data._where) throw new Error('_where should be in the query');\n if (method && method.toLowerCase() === 'get') {\n query = extend({}, query, data);\n data = null;\n }\n return request({\n method,\n path,\n query,\n data,\n authOptions,\n });\n};\n\nAV.request = request;\n\nmodule.exports = {\n _request,\n request,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/request.js","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFunction.js\n// module id = 28\n// module chunks = 0 1","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getLength.js\n// module id = 29\n// module chunks = 0 1","const _ = require('underscore');\n\n// Helper function to check null or undefined.\nconst isNullOrUndefined = x => _.isNull(x) || _.isUndefined(x);\n\nconst ensureArray = target => {\n if (_.isArray(target)) {\n return target;\n }\n if (target === undefined || target === null) {\n return [];\n }\n return [target];\n};\n\nconst transformFetchOptions = ({ keys, include, includeACL } = {}) => {\n const fetchOptions = {};\n if (keys) {\n fetchOptions.keys = ensureArray(keys).join(',');\n }\n if (include) {\n fetchOptions.include = ensureArray(include).join(',');\n }\n if (includeACL) {\n fetchOptions.returnACL = includeACL;\n }\n return fetchOptions;\n};\n\nconst getSessionToken = authOptions => {\n if (authOptions.sessionToken) {\n return authOptions.sessionToken;\n }\n if (\n authOptions.user &&\n typeof authOptions.user.getSessionToken === 'function'\n ) {\n return authOptions.user.getSessionToken();\n }\n};\n\nconst tap = interceptor => value => (interceptor(value), value);\n\n// Shared empty constructor function to aid in prototype-chain creation.\nconst EmptyConstructor = function() {};\n\n// Helper function to correctly set up the prototype chain, for subclasses.\n// Similar to `goog.inherits`, but uses a hash of prototype properties and\n// class properties to be extended.\nconst inherits = function inherits(parent, protoProps, staticProps) {\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent's constructor.\n if (protoProps && protoProps.hasOwnProperty('constructor')) {\n child = protoProps.constructor;\n } else {\n /** @ignore */\n child = function() {\n parent.apply(this, arguments);\n };\n }\n\n // Inherit class (static) properties from parent.\n _.extend(child, parent);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n EmptyConstructor.prototype = parent.prototype;\n child.prototype = new EmptyConstructor();\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n _.extend(child.prototype, protoProps);\n }\n\n // Add static properties to the constructor function, if supplied.\n if (staticProps) {\n _.extend(child, staticProps);\n }\n\n // Correctly set child's `prototype.constructor`.\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is\n // needed later.\n child.__super__ = parent.prototype;\n\n return child;\n};\n\n// Suppress the date string format warning in Weixin DevTools\n// Link: https://developers.weixin.qq.com/community/minihome/doc/00080c6f244718053550067736b401\nconst parseDate =\n typeof wx === 'undefined'\n ? iso8601 => new Date(iso8601)\n : iso8601 => new Date(Date.parse(iso8601));\n\nconst setValue = (target, key, value) => {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n const segs = key.split('.');\n const lastSeg = segs.pop();\n let currentTarget = target;\n segs.forEach(seg => {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nconst findValue = (target, key) => {\n const segs = key.split('.');\n const firstSeg = segs[0];\n const lastSeg = segs.pop();\n let currentTarget = target;\n for (let i = 0; i < segs.length; i++) {\n currentTarget = currentTarget[segs[i]];\n if (currentTarget === undefined) {\n return [undefined, undefined, lastSeg];\n }\n }\n const value = currentTarget[lastSeg];\n return [value, currentTarget, lastSeg, firstSeg];\n};\n\nconst isPlainObject = obj =>\n _.isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype;\n\nconst continueWhile = function(predicate, asyncFunction) {\n if (predicate()) {\n return asyncFunction().then(function() {\n return continueWhile(predicate, asyncFunction);\n });\n }\n return Promise.resolve();\n};\n\nmodule.exports = {\n isNullOrUndefined,\n ensureArray,\n transformFetchOptions,\n getSessionToken,\n tap,\n inherits,\n parseDate,\n setValue,\n findValue,\n isPlainObject,\n continueWhile,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/index.js","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-callable.js\n// module id = 31\n// module chunks = 0 1","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-indexed-object.js\n// module id = 32\n// module chunks = 0 1","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-pure.js\n// module id = 33\n// module chunks = 0 1","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-object.js\n// module id = 34\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/map\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js\n// module id = 35\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/json/stringify\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/json/stringify.js\n// module id = 36\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-non-enumerable-property.js\n// module id = 37\n// module chunks = 0 1","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.iterator.js\n// module id = 38\n// module chunks = 0 1","require('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js\n// module id = 39\n// module chunks = 0 1","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/entry-virtual.js\n// module id = 40\n// module chunks = 0 1","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/length-of-array-like.js\n// module id = 41\n// module chunks = 0 1","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterate.js\n// module id = 42\n// module chunks = 0 1","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/internal-state.js\n// module id = 43\n// module chunks = 0 1","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-built-in.js\n// module id = 44\n// module chunks = 0 1","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_has.js\n// module id = 45\n// module chunks = 0 1","const _ = require('underscore');\n\n/**\n * @class AV.Error\n */\n\nfunction AVError(code, message) {\n if (new.target) {\n const error = new Error(message);\n Object.setPrototypeOf(error, Object.getPrototypeOf(this));\n error.code = code;\n return error;\n }\n return new AVError(code, message);\n}\n\nAVError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\n\nObject.setPrototypeOf(AVError, Error);\n\n_.extend(\n AVError,\n /** @lends AV.Error */ {\n /**\n * Error code indicating some error other than those enumerated here.\n * @constant\n */\n OTHER_CAUSE: -1,\n\n /**\n * Error code indicating that something has gone wrong with the server.\n * If you get this error code, it is AV's fault.\n * @constant\n */\n INTERNAL_SERVER_ERROR: 1,\n\n /**\n * Error code indicating the connection to the AV servers failed.\n * @constant\n */\n CONNECTION_FAILED: 100,\n\n /**\n * Error code indicating the specified object doesn't exist.\n * @constant\n */\n OBJECT_NOT_FOUND: 101,\n\n /**\n * Error code indicating you tried to query with a datatype that doesn't\n * support it, like exact matching an array or object.\n * @constant\n */\n INVALID_QUERY: 102,\n\n /**\n * Error code indicating a missing or invalid classname. Classnames are\n * case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\n * only valid characters.\n * @constant\n */\n INVALID_CLASS_NAME: 103,\n\n /**\n * Error code indicating an unspecified object id.\n * @constant\n */\n MISSING_OBJECT_ID: 104,\n\n /**\n * Error code indicating an invalid key name. Keys are case-sensitive. They\n * must start with a letter, and a-zA-Z0-9_ are the only valid characters.\n * @constant\n */\n INVALID_KEY_NAME: 105,\n\n /**\n * Error code indicating a malformed pointer. You should not see this unless\n * you have been mucking about changing internal AV code.\n * @constant\n */\n INVALID_POINTER: 106,\n\n /**\n * Error code indicating that badly formed JSON was received upstream. This\n * either indicates you have done something unusual with modifying how\n * things encode to JSON, or the network is failing badly.\n * @constant\n */\n INVALID_JSON: 107,\n\n /**\n * Error code indicating that the feature you tried to access is only\n * available internally for testing purposes.\n * @constant\n */\n COMMAND_UNAVAILABLE: 108,\n\n /**\n * You must call AV.initialize before using the AV library.\n * @constant\n */\n NOT_INITIALIZED: 109,\n\n /**\n * Error code indicating that a field was set to an inconsistent type.\n * @constant\n */\n INCORRECT_TYPE: 111,\n\n /**\n * Error code indicating an invalid channel name. A channel name is either\n * an empty string (the broadcast channel) or contains only a-zA-Z0-9_\n * characters.\n * @constant\n */\n INVALID_CHANNEL_NAME: 112,\n\n /**\n * Error code indicating that push is misconfigured.\n * @constant\n */\n PUSH_MISCONFIGURED: 115,\n\n /**\n * Error code indicating that the object is too large.\n * @constant\n */\n OBJECT_TOO_LARGE: 116,\n\n /**\n * Error code indicating that the operation isn't allowed for clients.\n * @constant\n */\n OPERATION_FORBIDDEN: 119,\n\n /**\n * Error code indicating the result was not found in the cache.\n * @constant\n */\n CACHE_MISS: 120,\n\n /**\n * Error code indicating that an invalid key was used in a nested\n * JSONObject.\n * @constant\n */\n INVALID_NESTED_KEY: 121,\n\n /**\n * Error code indicating that an invalid filename was used for AVFile.\n * A valid file name contains only a-zA-Z0-9_. characters and is between 1\n * and 128 characters.\n * @constant\n */\n INVALID_FILE_NAME: 122,\n\n /**\n * Error code indicating an invalid ACL was provided.\n * @constant\n */\n INVALID_ACL: 123,\n\n /**\n * Error code indicating that the request timed out on the server. Typically\n * this indicates that the request is too expensive to run.\n * @constant\n */\n TIMEOUT: 124,\n\n /**\n * Error code indicating that the email address was invalid.\n * @constant\n */\n INVALID_EMAIL_ADDRESS: 125,\n\n /**\n * Error code indicating a missing content type.\n * @constant\n */\n MISSING_CONTENT_TYPE: 126,\n\n /**\n * Error code indicating a missing content length.\n * @constant\n */\n MISSING_CONTENT_LENGTH: 127,\n\n /**\n * Error code indicating an invalid content length.\n * @constant\n */\n INVALID_CONTENT_LENGTH: 128,\n\n /**\n * Error code indicating a file that was too large.\n * @constant\n */\n FILE_TOO_LARGE: 129,\n\n /**\n * Error code indicating an error saving a file.\n * @constant\n */\n FILE_SAVE_ERROR: 130,\n\n /**\n * Error code indicating an error deleting a file.\n * @constant\n */\n FILE_DELETE_ERROR: 153,\n\n /**\n * Error code indicating that a unique field was given a value that is\n * already taken.\n * @constant\n */\n DUPLICATE_VALUE: 137,\n\n /**\n * Error code indicating that a role's name is invalid.\n * @constant\n */\n INVALID_ROLE_NAME: 139,\n\n /**\n * Error code indicating that an application quota was exceeded. Upgrade to\n * resolve.\n * @constant\n */\n EXCEEDED_QUOTA: 140,\n\n /**\n * Error code indicating that a Cloud Code script failed.\n * @constant\n */\n SCRIPT_FAILED: 141,\n\n /**\n * Error code indicating that a Cloud Code validation failed.\n * @constant\n */\n VALIDATION_ERROR: 142,\n\n /**\n * Error code indicating that invalid image data was provided.\n * @constant\n */\n INVALID_IMAGE_DATA: 150,\n\n /**\n * Error code indicating an unsaved file.\n * @constant\n */\n UNSAVED_FILE_ERROR: 151,\n\n /**\n * Error code indicating an invalid push time.\n * @constant\n */\n INVALID_PUSH_TIME_ERROR: 152,\n\n /**\n * Error code indicating that the username is missing or empty.\n * @constant\n */\n USERNAME_MISSING: 200,\n\n /**\n * Error code indicating that the password is missing or empty.\n * @constant\n */\n PASSWORD_MISSING: 201,\n\n /**\n * Error code indicating that the username has already been taken.\n * @constant\n */\n USERNAME_TAKEN: 202,\n\n /**\n * Error code indicating that the email has already been taken.\n * @constant\n */\n EMAIL_TAKEN: 203,\n\n /**\n * Error code indicating that the email is missing, but must be specified.\n * @constant\n */\n EMAIL_MISSING: 204,\n\n /**\n * Error code indicating that a user with the specified email was not found.\n * @constant\n */\n EMAIL_NOT_FOUND: 205,\n\n /**\n * Error code indicating that a user object without a valid session could\n * not be altered.\n * @constant\n */\n SESSION_MISSING: 206,\n\n /**\n * Error code indicating that a user can only be created through signup.\n * @constant\n */\n MUST_CREATE_USER_THROUGH_SIGNUP: 207,\n\n /**\n * Error code indicating that an an account being linked is already linked\n * to another user.\n * @constant\n */\n ACCOUNT_ALREADY_LINKED: 208,\n\n /**\n * Error code indicating that a user cannot be linked to an account because\n * that account's id could not be found.\n * @constant\n */\n LINKED_ID_MISSING: 250,\n\n /**\n * Error code indicating that a user with a linked (e.g. Facebook) account\n * has an invalid session.\n * @constant\n */\n INVALID_LINKED_SESSION: 251,\n\n /**\n * Error code indicating that a service being linked (e.g. Facebook or\n * Twitter) is unsupported.\n * @constant\n */\n UNSUPPORTED_SERVICE: 252,\n /**\n * Error code indicating a real error code is unavailable because\n * we had to use an XDomainRequest object to allow CORS requests in\n * Internet Explorer, which strips the body from HTTP responses that have\n * a non-2XX status code.\n * @constant\n */\n X_DOMAIN_REQUEST: 602,\n }\n);\n\nmodule.exports = AVError;\n\n\n\n// WEBPACK FOOTER //\n// ./src/error.js","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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-property-descriptor.js\n// module id = 47\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-context.js\n// module id = 48\n// module chunks = 0 1","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-create.js\n// module id = 49\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators.js\n// module id = 50\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof.js\n// module id = 51\n// module chunks = 0 1","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-to-string-tag.js\n// module id = 52\n// module chunks = 0 1","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (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 = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/new-promise-capability.js\n// module id = 54\n// module chunks = 0 1","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.string.iterator.js\n// module id = 55\n// module chunks = 0 1","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isObject.js\n// module id = 56\n// module chunks = 0 1","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArray.js\n// module id = 57\n// module chunks = 0 1","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/each.js\n// module id = 58\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js\n// module id = 59\n// module chunks = 0 1","\"use strict\";\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console;\n\n // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = require('./common')(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/browser.js\n// module id = 60\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/slice.js\n// module id = 61\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js\n// module id = 62\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/classof-raw.js\n// module id = 63\n// module chunks = 0 1","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol.js\n// module id = 64\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-native-constructor.js\n// module id = 65\n// module chunks = 0 1","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/values.js\n// module id = 66\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_flatten.js\n// module id = 67\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/map.js\n// module id = 68\n// module chunks = 0 1","const _ = require('underscore');\nconst uuid = require('uuid/v4');\nconst debug = require('debug');\nconst { inherits, parseDate } = require('./utils');\nconst version = require('./version');\nconst { setAdapters, adapterManager } = require('./adapter');\n\nconst AV = global.AV || {};\n\n// All internal configuration items\nAV._config = {\n serverURLs: {},\n useMasterKey: false,\n production: null,\n realtime: null,\n requestTimeout: null,\n};\n\nconst initialUserAgent = `LeanCloud-JS-SDK/${version}`;\n\n// configs shared by all AV instances\nAV._sharedConfig = {\n userAgent: initialUserAgent,\n liveQueryRealtime: null,\n};\n\nadapterManager.on('platformInfo', platformInfo => {\n let ua = initialUserAgent;\n if (platformInfo) {\n if (platformInfo.userAgent) {\n ua = platformInfo.userAgent;\n } else {\n let comments = platformInfo.name;\n if (platformInfo.version) {\n comments += `/${platformInfo.version}`;\n }\n if (platformInfo.extra) {\n comments += `; ${platformInfo.extra}`;\n }\n ua += ` (${comments})`;\n }\n }\n AV._sharedConfig.userAgent = ua;\n});\n\n/**\n * Contains all AV API classes and functions.\n * @namespace AV\n */\n\n/**\n * Returns prefix for localStorage keys used by this instance of AV.\n * @param {String} path The relative suffix to append to it.\n * null or undefined is treated as the empty string.\n * @return {String} The full key name.\n * @private\n */\nAV._getAVPath = function(path) {\n if (!AV.applicationId) {\n throw new Error('You need to call AV.initialize before using AV.');\n }\n if (!path) {\n path = '';\n }\n if (!_.isString(path)) {\n throw new Error(\"Tried to get a localStorage path that wasn't a String.\");\n }\n if (path[0] === '/') {\n path = path.substring(1);\n }\n return 'AV/' + AV.applicationId + '/' + path;\n};\n\n/**\n * Returns the unique string for this app on this machine.\n * Gets reset when localStorage is cleared.\n * @private\n */\nAV._installationId = null;\nAV._getInstallationId = () => {\n // See if it's cached in RAM.\n if (AV._installationId) {\n return Promise.resolve(AV._installationId);\n }\n\n // Try to get it from localStorage.\n const path = AV._getAVPath('installationId');\n return AV.localStorage.getItemAsync(path).then(_installationId => {\n AV._installationId = _installationId;\n if (!AV._installationId) {\n // It wasn't in localStorage, so create a new one.\n AV._installationId = _installationId = uuid();\n return AV.localStorage\n .setItemAsync(path, _installationId)\n .then(() => _installationId);\n }\n return _installationId;\n });\n};\n\nAV._subscriptionId = null;\nAV._refreshSubscriptionId = (path = AV._getAVPath('subscriptionId')) => {\n const subscriptionId = (AV._subscriptionId = uuid());\n return AV.localStorage\n .setItemAsync(path, subscriptionId)\n .then(() => subscriptionId);\n};\nAV._getSubscriptionId = () => {\n // See if it's cached in RAM.\n if (AV._subscriptionId) {\n return Promise.resolve(AV._subscriptionId);\n }\n\n // Try to get it from localStorage.\n const path = AV._getAVPath('subscriptionId');\n return AV.localStorage.getItemAsync(path).then(_subscriptionId => {\n AV._subscriptionId = _subscriptionId;\n if (!AV._subscriptionId) {\n // It wasn't in localStorage, so create a new one.\n _subscriptionId = AV._refreshSubscriptionId(path);\n }\n return _subscriptionId;\n });\n};\n\nAV._parseDate = parseDate;\n\n// A self-propagating extend function.\nAV._extend = function(protoProps, classProps) {\n var child = inherits(this, protoProps, classProps);\n child.extend = this.extend;\n return child;\n};\n\n/**\n * Converts a value in a AV Object into the appropriate representation.\n * This is the JS equivalent of Java's AV.maybeReferenceAndEncode(Object)\n * if seenObjects is falsey. Otherwise any AV.Objects not in\n * seenObjects will be fully embedded rather than encoded\n * as a pointer. This array will be used to prevent going into an infinite\n * loop because we have circular references. If <seenObjects>\n * is set, then none of the AV Objects that are serialized can be dirty.\n * @private\n */\nAV._encode = function(value, seenObjects, disallowObjects, full = true) {\n if (value instanceof AV.Object) {\n if (disallowObjects) {\n throw new Error('AV.Objects not allowed here');\n }\n if (!seenObjects || _.include(seenObjects, value) || !value._hasData) {\n return value._toPointer();\n }\n return value._toFullJSON(seenObjects.concat(value), full);\n }\n if (value instanceof AV.ACL) {\n return value.toJSON();\n }\n if (_.isDate(value)) {\n return full ? { __type: 'Date', iso: value.toJSON() } : value.toJSON();\n }\n if (value instanceof AV.GeoPoint) {\n return value.toJSON();\n }\n if (_.isArray(value)) {\n return _.map(value, function(x) {\n return AV._encode(x, seenObjects, disallowObjects, full);\n });\n }\n if (_.isRegExp(value)) {\n return value.source;\n }\n if (value instanceof AV.Relation) {\n return value.toJSON();\n }\n if (value instanceof AV.Op) {\n return value.toJSON();\n }\n if (value instanceof AV.File) {\n if (!value.url() && !value.id) {\n throw new Error('Tried to save an object containing an unsaved file.');\n }\n return value._toFullJSON(seenObjects, full);\n }\n if (_.isObject(value)) {\n return _.mapObject(value, (v, k) =>\n AV._encode(v, seenObjects, disallowObjects, full)\n );\n }\n return value;\n};\n\n/**\n * The inverse function of AV._encode.\n * @private\n */\nAV._decode = function(value, key) {\n if (!_.isObject(value) || _.isDate(value)) {\n return value;\n }\n if (_.isArray(value)) {\n return _.map(value, v => AV._decode(v));\n }\n if (value instanceof AV.Object) {\n return value;\n }\n if (value instanceof AV.File) {\n return value;\n }\n if (value instanceof AV.Op) {\n return value;\n }\n if (value instanceof AV.GeoPoint) {\n return value;\n }\n if (value instanceof AV.ACL) {\n return value;\n }\n if (key === 'ACL') {\n return new AV.ACL(value);\n }\n if (value.__op) {\n return AV.Op._decode(value);\n }\n var className;\n if (value.__type === 'Pointer') {\n className = value.className;\n var pointer = AV.Object._create(className);\n if (Object.keys(value).length > 3) {\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n pointer._finishFetch(v, true);\n } else {\n pointer._finishFetch({ objectId: value.objectId }, false);\n }\n return pointer;\n }\n if (value.__type === 'Object') {\n // It's an Object included in a query result.\n className = value.className;\n const v = _.clone(value);\n delete v.__type;\n delete v.className;\n var object = AV.Object._create(className);\n object._finishFetch(v, true);\n return object;\n }\n if (value.__type === 'Date') {\n return AV._parseDate(value.iso);\n }\n if (value.__type === 'GeoPoint') {\n return new AV.GeoPoint({\n latitude: value.latitude,\n longitude: value.longitude,\n });\n }\n if (value.__type === 'Relation') {\n if (!key) throw new Error('key missing decoding a Relation');\n var relation = new AV.Relation(null, key);\n relation.targetClassName = value.className;\n return relation;\n }\n if (value.__type === 'File') {\n var file = new AV.File(value.name);\n const v = _.clone(value);\n delete v.__type;\n file._finishFetch(v);\n return file;\n }\n return _.mapObject(value, AV._decode);\n};\n\n/**\n * The inverse function of {@link AV.Object#toFullJSON}.\n * @since 3.0.0\n * @method\n * @param {Object}\n * return {AV.Object|AV.File|any}\n */\nAV.parseJSON = AV._decode;\n\n/**\n * Similar to JSON.parse, except that AV internal types will be used if possible.\n * Inverse to {@link AV.stringify}\n * @since 3.14.0\n * @param {string} text the string to parse.\n * @return {AV.Object|AV.File|any}\n */\nAV.parse = text => AV.parseJSON(JSON.parse(text));\n/**\n * Serialize a target containing AV.Object, similar to JSON.stringify.\n * Inverse to {@link AV.parse}\n * @since 3.14.0\n * @return {string}\n */\nAV.stringify = target => JSON.stringify(AV._encode(target, [], false, true));\n\nAV._encodeObjectOrArray = function(value) {\n var encodeAVObject = function(object) {\n if (object && object._toFullJSON) {\n object = object._toFullJSON([]);\n }\n\n return _.mapObject(object, function(value) {\n return AV._encode(value, []);\n });\n };\n\n if (_.isArray(value)) {\n return value.map(function(object) {\n return encodeAVObject(object);\n });\n } else {\n return encodeAVObject(value);\n }\n};\n\nAV._arrayEach = _.each;\n\n/**\n * Does a deep traversal of every item in object, calling func on every one.\n * @param {Object} object The object or array to traverse deeply.\n * @param {Function} func The function to call for every item. It will\n * be passed the item as an argument. If it returns a truthy value, that\n * value will replace the item in its parent container.\n * @returns {} the result of calling func on the top-level object itself.\n * @private\n */\nAV._traverse = function(object, func, seen) {\n if (object instanceof AV.Object) {\n seen = seen || [];\n if (_.indexOf(seen, object) >= 0) {\n // We've already visited this object in this call.\n return;\n }\n seen.push(object);\n AV._traverse(object.attributes, func, seen);\n return func(object);\n }\n if (object instanceof AV.Relation || object instanceof AV.File) {\n // Nothing needs to be done, but we don't want to recurse into the\n // object's parent infinitely, so we catch this case.\n return func(object);\n }\n if (_.isArray(object)) {\n _.each(object, function(child, index) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[index] = newChild;\n }\n });\n return func(object);\n }\n if (_.isObject(object)) {\n AV._each(object, function(child, key) {\n var newChild = AV._traverse(child, func, seen);\n if (newChild) {\n object[key] = newChild;\n }\n });\n return func(object);\n }\n return func(object);\n};\n\n/**\n * This is like _.each, except:\n * * it doesn't work for so-called array-like objects,\n * * it does work for dictionaries with a \"length\" attribute.\n * @private\n */\nAV._objectEach = AV._each = function(obj, callback) {\n if (_.isObject(obj)) {\n _.each(_.keys(obj), function(key) {\n callback(obj[key], key);\n });\n } else {\n _.each(obj, callback);\n }\n};\n\n/**\n * @namespace\n * @since 3.14.0\n */\nAV.debug = {\n /**\n * Enable debug\n */\n enable: (namespaces = 'leancloud*') => debug.enable(namespaces),\n /**\n * Disable debug\n */\n disable: debug.disable,\n};\n\n/**\n * Specify Adapters\n * @since 4.4.0\n * @function\n * @param {Adapters} newAdapters See {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} for detailed definitions.\n */\nAV.setAdapters = setAdapters;\n\nmodule.exports = AV;\n\n\n\n// WEBPACK FOOTER //\n// ./src/av.js","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-iteration.js\n// module id = 70\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/index-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/index-of.js\n// module id = 71\n// module chunks = 0 1","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\n\nconst AdapterManager = inherits(EventEmitter, {\n constructor() {\n EventEmitter.apply(this);\n this._adapters = {};\n },\n getAdapter(name) {\n const adapter = this._adapters[name];\n if (adapter === undefined) {\n throw new Error(`${name} adapter is not configured`);\n }\n return adapter;\n },\n setAdapters(newAdapters) {\n _.extend(this._adapters, newAdapters);\n _.keys(newAdapters).forEach(name => this.emit(name, newAdapters[name]));\n },\n});\n\nconst adapterManager = new AdapterManager();\n\nmodule.exports = {\n getAdapter: adapterManager.getAdapter.bind(adapterManager),\n setAdapters: adapterManager.setAdapters.bind(adapterManager),\n adapterManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/adapter.js","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _Symbol$iterator = require(\"@babel/runtime-corejs3/core-js/symbol/iterator\");\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof _Symbol && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/typeof.js\n// module id = 73\n// module chunks = 0 1","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 74\n// module chunks = 0 1","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-apply.js\n// module id = 75\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind-native.js\n// module id = 76\n// module chunks = 0 1","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-v8-version.js\n// module id = 77\n// module chunks = 0 1","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/try-to-string.js\n// module id = 78\n// module chunks = 0 1","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.23.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.23.3/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared.js\n// module id = 79\n// module chunks = 0 1","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/hidden-keys.js\n// module id = 80\n// module chunks = 0 1","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string.js\n// module id = 81\n// module chunks = 0 1","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/perform.js\n// module id = 82\n// module chunks = 0 1","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\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 if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-constructor-detection.js\n// module id = 83\n// module chunks = 0 1","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_stringTagBug.js\n// module id = 84\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/allKeys.js\n// module id = 85\n// module chunks = 0 1","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n return _.toPath(path);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toPath.js\n// module id = 86\n// module chunks = 0 1","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_optimizeCb.js\n// module id = 87\n// module chunks = 0 1","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/filter.js\n// module id = 88\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/contains.js\n// module id = 89\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array.js\n// module id = 90\n// module chunks = 0 1","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-property.js\n// module id = 91\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-property.js\n// module id = 92\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/find\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js\n// module id = 93\n// module chunks = 0 1","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/internal-metadata.js\n// module id = 94\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/indexed-object.js\n// module id = 95\n// module chunks = 0 1","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-property-key.js\n// module id = 96\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-symbol.js\n// module id = 97\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-user-agent.js\n// module id = 98\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/uid.js\n// module id = 99\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-prototype-of.js\n// module id = 100\n// module chunks = 0 1","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-key.js\n// module id = 101\n// module chunks = 0 1","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-set-prototype-of.js\n// module id = 102\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names.js\n// module id = 103\n// module chunks = 0 1","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-symbols.js\n// module id = 104\n// module chunks = 0 1","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys.js\n// module id = 105\n// module chunks = 0 1","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator-method.js\n// module id = 106\n// module chunks = 0 1","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-node.js\n// module id = 107\n// module chunks = 0 1","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/an-instance.js\n// module id = 108\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-constructor.js\n// module id = 109\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice.js\n// module id = 110\n// module chunks = 0 1","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/matcher.js\n// module id = 111\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partial.js\n// module id = 112\n// module chunks = 0 1","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_group.js\n// module id = 113\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-has-species-support.js\n// module id = 114\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/keys\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/keys.js\n// module id = 115\n// module chunks = 0 1","const _ = require('underscore');\nconst { timeout } = require('promise-timeout');\nconst debug = require('debug');\nconst debugRequest = debug('leancloud:request');\nconst debugRequestError = debug('leancloud:request:error');\nconst { getAdapter } = require('../adapter');\n\nlet requestsCount = 0;\n\nconst ajax = ({\n method,\n url,\n query,\n data,\n headers = {},\n timeout: time,\n onprogress,\n}) => {\n if (query) {\n const queryString = Object.keys(query)\n .map(key => {\n const value = query[key];\n if (value === undefined) return undefined;\n const v = typeof value === 'object' ? JSON.stringify(value) : value;\n return `${encodeURIComponent(key)}=${encodeURIComponent(v)}`;\n })\n .filter(qs => qs)\n .join('&');\n url = `${url}?${queryString}`;\n }\n\n const count = requestsCount++;\n debugRequest(\n 'request(%d) %s %s %o %o %o',\n count,\n method,\n url,\n query,\n data,\n headers\n );\n\n const request = getAdapter('request');\n const promise = request(url, { method, headers, data, onprogress })\n .then(response => {\n debugRequest(\n 'response(%d) %d %O %o',\n count,\n response.status,\n response.data || response.text,\n response.header\n );\n if (response.ok === false) {\n const error = new Error();\n error.response = response;\n throw error;\n }\n return response.data;\n })\n .catch(error => {\n if (error.response) {\n if (!debug.enabled('leancloud:request')) {\n debugRequestError(\n 'request(%d) %s %s %o %o %o',\n count,\n method,\n url,\n query,\n data,\n headers\n );\n }\n debugRequestError(\n 'response(%d) %d %O %o',\n count,\n error.response.status,\n error.response.data || error.response.text,\n error.response.header\n );\n error.statusCode = error.response.status;\n error.responseText = error.response.text;\n error.response = error.response.data;\n }\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\nmodule.exports = ajax;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ajax.js","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetTag.js\n// module id = 118\n// module chunks = 0 1","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = 119\n// module chunks = 0 1","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-property-is-enumerable.js\n// module id = 120\n// module chunks = 0 1","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/require-object-coercible.js\n// module id = 121\n// module chunks = 0 1","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-method.js\n// module id = 122\n// module chunks = 0 1","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/shared-store.js\n// module id = 123\n// module chunks = 0 1","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/document-create-element.js\n// module id = 124\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-absolute-index.js\n// module id = 125\n// module chunks = 0 1","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-integer-or-infinity.js\n// module id = 126\n// module chunks = 0 1","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/enum-bug-keys.js\n// module id = 127\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-define-properties.js\n// module id = 128\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-string-tag-support.js\n// module id = 129\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/inspect-source.js\n// module id = 130\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-iterator.js\n// module id = 131\n// module chunks = 0 1","// Named Exports\n// =============\n\n// Underscore.js 1.12.1\n// https://underscorejs.org\n// (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\nexport { VERSION } from './_setup.js';\nexport { default as restArguments } from './restArguments.js';\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\nexport { default as isObject } from './isObject.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isString } from './isString.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isError } from './isError.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isDataView } from './isDataView.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isWeakSet } from './isWeakSet.js';\n\n// Functions that treat an object as a dictionary of key-value pairs.\nexport { default as keys } from './keys.js';\nexport { default as allKeys } from './allKeys.js';\nexport { default as values } from './values.js';\nexport { default as pairs } from './pairs.js';\nexport { default as invert } from './invert.js';\nexport { default as functions,\n default as methods } from './functions.js';\nexport { default as extend } from './extend.js';\nexport { default as extendOwn,\n default as assign } from './extendOwn.js';\nexport { default as defaults } from './defaults.js';\nexport { default as create } from './create.js';\nexport { default as clone } from './clone.js';\nexport { default as tap } from './tap.js';\nexport { default as get } from './get.js';\nexport { default as has } from './has.js';\nexport { default as mapObject } from './mapObject.js';\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\nexport { default as identity } from './identity.js';\nexport { default as constant } from './constant.js';\nexport { default as noop } from './noop.js';\nexport { default as toPath } from './toPath.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as matcher,\n default as matches } from './matcher.js';\nexport { default as times } from './times.js';\nexport { default as random } from './random.js';\nexport { default as now } from './now.js';\nexport { default as escape } from './escape.js';\nexport { default as unescape } from './unescape.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as template } from './template.js';\nexport { default as result } from './result.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as chain } from './chain.js';\nexport { default as iteratee } from './iteratee.js';\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\nexport { default as partial } from './partial.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as memoize } from './memoize.js';\nexport { default as delay } from './delay.js';\nexport { default as defer } from './defer.js';\nexport { default as throttle } from './throttle.js';\nexport { default as debounce } from './debounce.js';\nexport { default as wrap } from './wrap.js';\nexport { default as negate } from './negate.js';\nexport { default as compose } from './compose.js';\nexport { default as after } from './after.js';\nexport { default as before } from './before.js';\nexport { default as once } from './once.js';\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\nexport { default as findKey } from './findKey.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as find,\n default as detect } from './find.js';\nexport { default as findWhere } from './findWhere.js';\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\nexport { default as each,\n default as forEach } from './each.js';\nexport { default as map,\n default as collect } from './map.js';\nexport { default as reduce,\n default as foldl,\n default as inject } from './reduce.js';\nexport { default as reduceRight,\n default as foldr } from './reduceRight.js';\nexport { default as filter,\n default as select } from './filter.js';\nexport { default as reject } from './reject.js';\nexport { default as every,\n default as all } from './every.js';\nexport { default as some,\n default as any } from './some.js';\nexport { default as contains,\n default as includes,\n default as include } from './contains.js';\nexport { default as invoke } from './invoke.js';\nexport { default as pluck } from './pluck.js';\nexport { default as where } from './where.js';\nexport { default as max } from './max.js';\nexport { default as min } from './min.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as sample } from './sample.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as countBy } from './countBy.js';\nexport { default as partition } from './partition.js';\nexport { default as toArray } from './toArray.js';\nexport { default as size } from './size.js';\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\nexport { default as pick } from './pick.js';\nexport { default as omit } from './omit.js';\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\nexport { default as first,\n default as head,\n default as take } from './first.js';\nexport { default as initial } from './initial.js';\nexport { default as last } from './last.js';\nexport { default as rest,\n default as tail,\n default as drop } from './rest.js';\nexport { default as compact } from './compact.js';\nexport { default as flatten } from './flatten.js';\nexport { default as without } from './without.js';\nexport { default as uniq,\n default as unique } from './uniq.js';\nexport { default as union } from './union.js';\nexport { default as intersection } from './intersection.js';\nexport { default as difference } from './difference.js';\nexport { default as unzip,\n default as transpose } from './unzip.js';\nexport { default as zip } from './zip.js';\nexport { default as object } from './object.js';\nexport { default as range } from './range.js';\nexport { default as chunk } from './chunk.js';\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\nexport { default as mixin } from './mixin.js';\nexport { default } from './underscore-array-methods.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index.js\n// module id = 132\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isString.js\n// module id = 133\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDataView.js\n// module id = 134\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has(obj, 'callee');\n };\n }\n}());\n\nexport default isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArguments.js\n// module id = 135\n// module chunks = 0 1","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getByteLength.js\n// module id = 136\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_methodFingerprint.js\n// module id = 137\n// module chunks = 0 1","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createAssigner.js\n// module id = 138\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extendOwn.js\n// module id = 139\n// module chunks = 0 1","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_deepGet.js\n// module id = 140\n// module chunks = 0 1","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n return value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/identity.js\n// module id = 141\n// module chunks = 0 1","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/property.js\n// module id = 142\n// module chunks = 0 1","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n return new Date().getTime();\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/now.js\n// module id = 143\n// module chunks = 0 1","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/negate.js\n// module id = 144\n// module chunks = 0 1","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findIndex.js\n// module id = 145\n// module chunks = 0 1","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n return map(obj, property(key));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pluck.js\n// module id = 146\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-prototype-of.js\n// module id = 147\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js\n// module id = 148\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/symbol.js\n// module id = 149\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/define-property\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js\n// module id = 150\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptor\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js\n// module id = 151\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/assign\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/assign.js\n// module id = 152\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-own-property-symbols\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols.js\n// module id = 153\n// module chunks = 0 1","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) {\n if (options && options.unsafe && target[key]) target[key] = src[key];\n else defineBuiltIn(target, key, src[key], options);\n } return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-built-ins.js\n// module id = 154\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar fails = require('../internals/fails');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar defineProperty = require('../internals/object-define-property').f;\nvar forEach = require('../internals/array-iteration').forEach;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var exported = {};\n var Constructor;\n\n if (!DESCRIPTORS || !isCallable(NativeConstructor)\n || !(IS_WEAK || NativePrototype.forEach && !fails(function () { new NativeConstructor().entries().next(); }))\n ) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else {\n Constructor = wrapper(function (target, iterable) {\n setInternalState(anInstance(target, Prototype), {\n type: CONSTRUCTOR_NAME,\n collection: new NativeConstructor()\n });\n if (iterable != undefined) iterate(iterable, target[ADDER], { that: target, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n forEach(['add', 'clear', 'delete', 'forEach', 'get', 'has', 'set', 'keys', 'values', 'entries'], function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in NativePrototype && !(IS_WEAK && KEY == 'clear')) {\n createNonEnumerableProperty(Prototype, KEY, function (a, b) {\n var collection = getInternalState(this).collection;\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = collection[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n }\n });\n\n IS_WEAK || defineProperty(Prototype, 'size', {\n configurable: true,\n get: function () {\n return getInternalState(this).collection.size;\n }\n });\n }\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME, false, true);\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, forced: true }, exported);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/collection.js\n// module id = 155\n// module chunks = 0 1","module.exports = require('./dist/core');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime/core.js","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/use-symbol-as-uid.js\n// module id = 157\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/ie8-dom-define.js\n// module id = 158\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-forced.js\n// module id = 159\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/v8-prototype-define-bug.js\n// module id = 160\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/correct-prototype-getter.js\n// module id = 161\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/own-keys.js\n// module id = 162\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-keys-internal.js\n// module id = 163\n// module chunks = 0 1","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-includes.js\n// module id = 164\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/html.js\n// module id = 165\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-array-iterator-method.js\n// module id = 166\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/get-iterator.js\n// module id = 167\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterator-close.js\n// module id = 168\n// module chunks = 0 1","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/add-to-unscopables.js\n// module id = 169\n// module chunks = 0 1","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-weak-map.js\n// module id = 170\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/iterators-core.js\n// module id = 171\n// module chunks = 0 1","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/set-species.js\n// module id = 172\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/species-constructor.js\n// module id = 173\n// module chunks = 0 1","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-constructor.js\n// module id = 174\n// module chunks = 0 1","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/task.js\n// module id = 175\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios.js\n// module id = 176\n// module chunks = 0 1","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js\n// module id = 177\n// module chunks = 0 1","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js\n// module id = 178\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/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\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/promise-resolve.js\n// module id = 179\n// module chunks = 0 1","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n return obj === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isUndefined.js\n// module id = 180\n// module chunks = 0 1","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isBoolean.js\n// module id = 181\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNumber.js\n// module id = 182\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSymbol.js\n// module id = 183\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArrayBuffer.js\n// module id = 184\n// module chunks = 0 1","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNaN.js\n// module id = 185\n// module chunks = 0 1","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isTypedArray.js\n// module id = 186\n// module chunks = 0 1","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n return function() {\n return value;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/constant.js\n// module id = 187\n// module chunks = 0 1","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createSizePropertyCheck.js\n// module id = 188\n// module chunks = 0 1","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_shallowProperty.js\n// module id = 189\n// module chunks = 0 1","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_collectNonEnumProps.js\n// module id = 190\n// module chunks = 0 1","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMatch.js\n// module id = 191\n// module chunks = 0 1","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invert.js\n// module id = 192\n// module chunks = 0 1","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/functions.js\n// module id = 193\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extend.js\n// module id = 194\n// module chunks = 0 1","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defaults.js\n// module id = 195\n// module chunks = 0 1","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseCreate.js\n// module id = 196\n// module chunks = 0 1","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/clone.js\n// module id = 197\n// module chunks = 0 1","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/get.js\n// module id = 198\n// module chunks = 0 1","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toPath.js\n// module id = 199\n// module chunks = 0 1","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseIteratee.js\n// module id = 200\n// module chunks = 0 1","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/iteratee.js\n// module id = 201\n// module chunks = 0 1","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/noop.js\n// module id = 202\n// module chunks = 0 1","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/random.js\n// module id = 203\n// module chunks = 0 1","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createEscaper.js\n// module id = 204\n// module chunks = 0 1","// Internal list of HTML entities for escaping.\nexport default {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#x27;',\n '`': '&#x60;'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_escapeMap.js\n// module id = 205\n// module chunks = 0 1","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/templateSettings.js\n// module id = 206\n// module chunks = 0 1","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_executeBound.js\n// module id = 207\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bind.js\n// module id = 208\n// module chunks = 0 1","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/delay.js\n// module id = 209\n// module chunks = 0 1","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/before.js\n// module id = 210\n// module chunks = 0 1","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findKey.js\n// module id = 211\n// module chunks = 0 1","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createPredicateIndexFinder.js\n// module id = 212\n// module chunks = 0 1","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findLastIndex.js\n// module id = 213\n// module chunks = 0 1","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortedIndex.js\n// module id = 214\n// module chunks = 0 1","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexOf.js\n// module id = 215\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createIndexFinder.js\n// module id = 216\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/find.js\n// module id = 217\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createReduce.js\n// module id = 218\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/max.js\n// module id = 219\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sample.js\n// module id = 220\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pick.js\n// module id = 221\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/initial.js\n// module id = 222\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/rest.js\n// module id = 223\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n rest = flatten(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/difference.js\n// module id = 224\n// module chunks = 0 1","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniq.js\n// module id = 225\n// module chunks = 0 1","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unzip.js\n// module id = 226\n// module chunks = 0 1","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n return instance._chain ? _(obj).chain() : obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_chainResult.js\n// module id = 227\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.concat.js\n// module id = 228\n// module chunks = 0 1","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-species-create.js\n// module id = 229\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.stringify.js\n// module id = 230\n// module chunks = 0 1","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-method-is-strict.js\n// module id = 231\n// module chunks = 0 1","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/v4.js\n// module id = 232\n// module chunks = 0 1","var parent = require('../../es/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-prototype-of.js\n// module id = 233\n// module chunks = 0 1","module.exports = '4.15.1';\n\n\n\n// WEBPACK FOOTER //\n// ./src/version.js","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/eventemitter3/index.js\n// module id = 235\n// module chunks = 0 1","var { getAdapter } = require('./adapter');\n\nvar syncApiNames = ['getItem', 'setItem', 'removeItem', 'clear'];\n\nconst localStorage = {\n get async() {\n return getAdapter('storage').async;\n },\n};\n\n// wrap sync apis with async ones.\nsyncApiNames.forEach(function(apiName) {\n localStorage[apiName + 'Async'] = function() {\n const storage = getAdapter('storage');\n return Promise.resolve(storage[apiName].apply(storage, arguments));\n };\n\n localStorage[apiName] = function() {\n const storage = getAdapter('storage');\n if (!storage.async) {\n return storage[apiName].apply(storage, arguments);\n }\n const error = new Error(\n 'Synchronous API [' + apiName + '] is not available in this runtime.'\n );\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n };\n});\n\nmodule.exports = localStorage;\n\n\n\n// WEBPACK FOOTER //\n// ./src/localstorage.js","const storage = require('./localstorage');\nconst AV = require('./av');\n\nconst removeAsync = (exports.removeAsync = storage.removeItemAsync.bind(\n storage\n));\n\nconst getCacheData = (cacheData, key) => {\n try {\n cacheData = JSON.parse(cacheData);\n } catch (e) {\n return null;\n }\n if (cacheData) {\n const expired = cacheData.expiredAt && cacheData.expiredAt < Date.now();\n if (!expired) {\n return cacheData.value;\n }\n return removeAsync(key).then(() => null);\n }\n return null;\n};\n\nexports.getAsync = key => {\n key = `AV/${AV.applicationId}/${key}`;\n return storage.getItemAsync(key).then(cache => getCacheData(cache, key));\n};\n\nexports.setAsync = (key, value, ttl) => {\n const cache = { value };\n if (typeof ttl === 'number') {\n cache.expiredAt = Date.now() + ttl;\n }\n return storage.setItemAsync(\n `AV/${AV.applicationId}/${key}`,\n JSON.stringify(cache)\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/cache.js","module.exports = require(\"core-js-pure/stable/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/set-prototype-of.js\n// module id = 238\n// module chunks = 0 1","var parent = require('../../es/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/set-prototype-of.js\n// module id = 239\n// module chunks = 0 1","var parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/slice.js\n// module id = 240\n// module chunks = 0 1","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/define-property.js\n// module id = 241\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol.js\n// module id = 242\n// module chunks = 0 1","var parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/index.js\n// module id = 243\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.js\n// module id = 244\n// module chunks = 0 1","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-get-own-property-names-external.js\n// module id = 245\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/symbol-define-to-primitive.js\n// module id = 246\n// module chunks = 0 1","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/native-symbol-registry.js\n// module id = 247\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.iterator.js\n// module id = 248\n// module chunks = 0 1","var parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/symbol/iterator.js\n// module id = 249\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/filter\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js\n// module id = 250\n// module chunks = 0 1","// Copyright (c) 2015-2017 David M. Lee, II\n'use strict';\n\n/**\n * Local reference to TimeoutError\n * @private\n */\nvar TimeoutError;\n\n/**\n * Rejects a promise with a {@link TimeoutError} if it does not settle within\n * the specified timeout.\n *\n * @param {Promise} promise The promise.\n * @param {number} timeoutMillis Number of milliseconds to wait on settling.\n * @returns {Promise} Either resolves/rejects with `promise`, or rejects with\n * `TimeoutError`, whichever settles first.\n */\nvar timeout = module.exports.timeout = function(promise, timeoutMillis) {\n var error = new TimeoutError(),\n timeout;\n\n return Promise.race([\n promise,\n new Promise(function(resolve, reject) {\n timeout = setTimeout(function() {\n reject(error);\n }, timeoutMillis);\n }),\n ]).then(function(v) {\n clearTimeout(timeout);\n return v;\n }, function(err) {\n clearTimeout(timeout);\n throw err;\n });\n};\n\n/**\n * Exception indicating that the timeout expired.\n */\nTimeoutError = module.exports.TimeoutError = function() {\n Error.call(this)\n this.stack = Error().stack\n this.message = 'Timeout';\n};\n\nTimeoutError.prototype = Object.create(Error.prototype);\nTimeoutError.prototype.name = \"TimeoutError\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise-timeout/index.js\n// module id = 251\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/array/from.js\n// module id = 252\n// module chunks = 0 1","var parent = require('../../es/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/from.js\n// module id = 253\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/get-iterator-method\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/get-iterator-method.js\n// module id = 254\n// module chunks = 0 1","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-bind.js\n// module id = 255\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/set-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js\n// module id = 256\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/bind\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/bind.js\n// module id = 257\n// module chunks = 0 1","var charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/charenc/charenc.js\n// module id = 258\n// module chunks = 0 1","const adapters = require('@leancloud/platform-adapters-node');\n\nmodule.exports = AV => {\n AV.setAdapters(adapters);\n return AV;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/use-adapters.js","module.exports = require(\"core-js-pure/stable/weak-map\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/weak-map.js\n// module id = 260\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-is-extensible.js\n// module id = 261\n// module chunks = 0 1","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/freezing.js\n// module id = 262\n// module chunks = 0 1","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/collection-strong.js\n// module id = 263\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/set\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/set.js\n// module id = 264\n// module chunks = 0 1","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js\n// module id = 265\n// module chunks = 0 1","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/iterableToArray.js\n// module id = 266\n// module chunks = 0 1","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js\n// module id = 267\n// module chunks = 0 1","var baseRandom = require('./_baseRandom');\n\n/**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\nfunction shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n}\n\nmodule.exports = shuffleSelf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_shuffleSelf.js\n// module id = 268\n// module chunks = 0 1","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/values.js\n// module id = 269\n// module chunks = 0 1","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = 270\n// module chunks = 0 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = 271\n// module chunks = 0 1","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = 272\n// module chunks = 0 1","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = 273\n// module chunks = 0 1","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 274\n// module chunks = 0 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isLength.js\n// module id = 275\n// module chunks = 0 1","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overArg.js\n// module id = 276\n// module chunks = 0 1","const AV = require('./index');\nconst useLiveQuery = require('./use-live-query');\nconst useAdatpers = require('./use-adapters');\n\nmodule.exports = useAdatpers(useLiveQuery(AV));\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/index-live-query.js","const AV = require('./core');\nconst useAdatpers = require('./use-adapters');\n\nmodule.exports = useAdatpers(AV);\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/index.js","module.exports = require('../index');\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/core.js","/*!\n * LeanCloud JavaScript SDK\n * https://leancloud.cn\n *\n * Copyright 2016 LeanCloud.cn, Inc.\n * The LeanCloud JavaScript SDK is freely distributable under the MIT license.\n */\nconst _ = require('underscore');\n\nconst AV = require('./av');\n\nAV._ = _;\nAV.version = require('./version');\nAV.Promise = Promise;\nAV.localStorage = require('./localstorage');\nAV.Cache = require('./cache');\nAV.Error = require('./error');\n\nrequire('./init');\nrequire('./event')(AV);\nrequire('./geopoint')(AV);\nrequire('./acl')(AV);\nrequire('./op')(AV);\nrequire('./relation')(AV);\nrequire('./file')(AV);\nrequire('./object')(AV);\nrequire('./role')(AV);\nrequire('./user')(AV);\nrequire('./query')(AV);\nrequire('./live-query')(AV);\nrequire('./captcha')(AV);\nrequire('./cloudfunction')(AV);\nrequire('./push')(AV);\nrequire('./status')(AV);\nrequire('./search')(AV);\nrequire('./insight')(AV);\nrequire('./friendship')(AV);\n\nAV.Conversation = require('./conversation');\nrequire('./leaderboard');\nmodule.exports = AV;\n\n/**\n * Options to controll the authentication for an operation\n * @typedef {Object} AuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n */\n\n/**\n * Options to controll the authentication for an SMS operation\n * @typedef {Object} SMSAuthOptions\n * @property {String} [sessionToken] Specify a user to excute the operation as.\n * @property {AV.User} [user] Specify a user to excute the operation as. The user must have _sessionToken. This option will be ignored if sessionToken option provided.\n * @property {Boolean} [useMasterKey] Indicates whether masterKey is used for this operation. Only valid when masterKey is set.\n * @property {String} [validateToken] a validate token returned by {@link AV.Cloud.verifyCaptcha}\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/promise/index.js\n// module id = 281\n// module chunks = 0 1","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/promise/index.js\n// module id = 282\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.js\n// module id = 283\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar installErrorCause = require('../internals/install-error-cause');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var options = arguments.length > 2 ? arguments[2] : undefined;\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf(new $Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(that, 'stack', clearErrorStack(that.stack, 1));\n installErrorCause(that, options);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.aggregate-error.constructor.js\n// module id = 284\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-primitive.js\n// module id = 285\n// module chunks = 0 1","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/ordinary-to-primitive.js\n// module id = 286\n// module chunks = 0 1","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/define-global-property.js\n// module id = 287\n// module chunks = 0 1","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/a-possible-prototype.js\n// module id = 288\n// module chunks = 0 1","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/copy-constructor-properties.js\n// module id = 289\n// module chunks = 0 1","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/math-trunc.js\n// module id = 290\n// module chunks = 0 1","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/to-length.js\n// module id = 291\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/clear-error-stack.js\n// module id = 292\n// module chunks = 0 1","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/install-error-cause.js\n// module id = 293\n// module chunks = 0 1","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/normalize-string-argument.js\n// module id = 294\n// module chunks = 0 1","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/error-stack-installable.js\n// module id = 295\n// module chunks = 0 1","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/function-name.js\n// module id = 296\n// module chunks = 0 1","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/create-iterator-constructor.js\n// module id = 297\n// module chunks = 0 1","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-to-string.js\n// module id = 298\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.js\n// module id = 299\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\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 (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can 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 call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.constructor.js\n// module id = 300\n// module chunks = 0 1","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/validate-arguments-length.js\n// module id = 301\n// module chunks = 0 1","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || 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\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/microtask.js\n// module id = 302\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-ios-pebble.js\n// module id = 303\n// module chunks = 0 1","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-webos-webkit.js\n// module id = 304\n// module chunks = 0 1","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/host-report-errors.js\n// module id = 305\n// module chunks = 0 1","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/queue.js\n// module id = 306\n// module chunks = 0 1","module.exports = typeof window == 'object' && typeof Deno != 'object';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/engine-is-browser.js\n// module id = 307\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, 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.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all.js\n// module id = 308\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.catch.js\n// module id = 309\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.race.js\n// module id = 310\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.reject.js\n// module id = 311\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.resolve.js\n// module id = 312\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.all-settled.js\n// module id = 313\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.any.js\n// module id = 314\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\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});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.promise.finally.js\n// module id = 315\n// module chunks = 0 1","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/string-multibyte.js\n// module id = 316\n// module chunks = 0 1","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/dom-iterables.js\n// module id = 317\n// module chunks = 0 1","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-default.js\n// module id = 318\n// module chunks = 0 1","// Is a given value equal to null?\nexport default function isNull(obj) {\n return obj === null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNull.js\n// module id = 319\n// module chunks = 0 1","// Is a given value a DOM element?\nexport default function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isElement.js\n// module id = 320\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDate.js\n// module id = 321\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isRegExp.js\n// module id = 322\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isError.js\n// module id = 323\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_hasObjectTag.js\n// module id = 324\n// module chunks = 0 1","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFinite.js\n// module id = 325\n// module chunks = 0 1","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isBufferLike.js\n// module id = 326\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEmpty.js\n// module id = 327\n// module chunks = 0 1","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _) a = a._wrapped;\n if (b instanceof _) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n if (!isDataView(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n isFunction(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n return eq(a, b);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEqual.js\n// module id = 328\n// module chunks = 0 1","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toBufferView.js\n// module id = 329\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMap.js\n// module id = 330\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakMap.js\n// module id = 331\n// module chunks = 0 1","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods } from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSet.js\n// module id = 332\n// module chunks = 0 1","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakSet.js\n// module id = 333\n// module chunks = 0 1","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pairs.js\n// module id = 334\n// module chunks = 0 1","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/create.js\n// module id = 335\n// module chunks = 0 1","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/tap.js\n// module id = 336\n// module chunks = 0 1","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!_has(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/has.js\n// module id = 337\n// module chunks = 0 1","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mapObject.js\n// module id = 338\n// module chunks = 0 1","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/propertyOf.js\n// module id = 339\n// module chunks = 0 1","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/times.js\n// module id = 340\n// module chunks = 0 1","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/escape.js\n// module id = 341\n// module chunks = 0 1","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unescape.js\n// module id = 342\n// module chunks = 0 1","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_unescapeMap.js\n// module id = 343\n// module chunks = 0 1","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/template.js\n// module id = 344\n// module chunks = 0 1","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/result.js\n// module id = 345\n// module chunks = 0 1","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniqueId.js\n// module id = 346\n// module chunks = 0 1","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n var instance = _(obj);\n instance._chain = true;\n return instance;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chain.js\n// module id = 347\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n keys = flatten(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bindAll.js\n// module id = 348\n// module chunks = 0 1","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/memoize.js\n// module id = 349\n// module chunks = 0 1","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defer.js\n// module id = 350\n// module chunks = 0 1","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/throttle.js\n// module id = 351\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/debounce.js\n// module id = 352\n// module chunks = 0 1","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/wrap.js\n// module id = 353\n// module chunks = 0 1","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compose.js\n// module id = 354\n// module chunks = 0 1","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/after.js\n// module id = 355\n// module chunks = 0 1","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/once.js\n// module id = 356\n// module chunks = 0 1","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/lastIndexOf.js\n// module id = 357\n// module chunks = 0 1","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findWhere.js\n// module id = 358\n// module chunks = 0 1","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduce.js\n// module id = 359\n// module chunks = 0 1","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduceRight.js\n// module id = 360\n// module chunks = 0 1","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reject.js\n// module id = 361\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/every.js\n// module id = 362\n// module chunks = 0 1","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/some.js\n// module id = 363\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invoke.js\n// module id = 364\n// module chunks = 0 1","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/where.js\n// module id = 365\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/min.js\n// module id = 366\n// module chunks = 0 1","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/shuffle.js\n// module id = 367\n// module chunks = 0 1","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortBy.js\n// module id = 368\n// module chunks = 0 1","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/groupBy.js\n// module id = 369\n// module chunks = 0 1","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n result[key] = value;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexBy.js\n// module id = 370\n// module chunks = 0 1","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n if (has(result, key)) result[key]++; else result[key] = 1;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/countBy.js\n// module id = 371\n// module chunks = 0 1","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partition.js\n// module id = 372\n// module chunks = 0 1","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toArray.js\n// module id = 373\n// module chunks = 0 1","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/size.js\n// module id = 374\n// module chunks = 0 1","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n return key in obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_keyInObj.js\n// module id = 375\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/omit.js\n// module id = 376\n// module chunks = 0 1","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/first.js\n// module id = 377\n// module chunks = 0 1","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/last.js\n// module id = 378\n// module chunks = 0 1","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n return filter(array, Boolean);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compact.js\n// module id = 379\n// module chunks = 0 1","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n return _flatten(array, depth, false);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/flatten.js\n// module id = 380\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/without.js\n// module id = 381\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n return uniq(flatten(arrays, true, true));\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/union.js\n// module id = 382\n// module chunks = 0 1","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/intersection.js\n// module id = 383\n// module chunks = 0 1","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/zip.js\n// module id = 384\n// module chunks = 0 1","import getLength from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/object.js\n// module id = 385\n// module chunks = 0 1","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/range.js\n// module id = 386\n// module chunks = 0 1","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chunk.js\n// module id = 387\n// module chunks = 0 1","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _[name] = obj[name];\n _.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_, args));\n };\n });\n return _;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mixin.js\n// module id = 388\n// module chunks = 0 1","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore-array-methods.js\n// module id = 389\n// module chunks = 0 1","var parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/concat.js\n// module id = 390\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.concat;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/concat.js\n// module id = 391\n// module chunks = 0 1","require('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/concat.js\n// module id = 392\n// module chunks = 0 1","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js\n// module id = 393\n// module chunks = 0 1","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-species-constructor.js\n// module id = 394\n// module chunks = 0 1","var parent = require('../../es/instance/map');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/map.js\n// module id = 395\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/map');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.map;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.map) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/map.js\n// module id = 396\n// module chunks = 0 1","require('../../../modules/es.array.map');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/map.js\n// module id = 397\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.map.js\n// module id = 398\n// module chunks = 0 1","var parent = require('../../es/object/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/keys.js\n// module id = 399\n// module chunks = 0 1","require('../../modules/es.object.keys');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/keys.js\n// module id = 400\n// module chunks = 0 1","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.keys.js\n// module id = 401\n// module chunks = 0 1","var parent = require('../../es/json/stringify');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/json/stringify.js\n// module id = 402\n// module chunks = 0 1","require('../../modules/es.json.stringify');\nvar path = require('../../internals/path');\nvar apply = require('../../internals/function-apply');\n\n// eslint-disable-next-line es-x/no-json -- safe\nif (!path.JSON) path.JSON = { stringify: JSON.stringify };\n\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nmodule.exports = function stringify(it, replacer, space) {\n return apply(path.JSON.stringify, null, arguments);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/json/stringify.js\n// module id = 403\n// module chunks = 0 1","var parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/index-of.js\n// module id = 404\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.indexOf;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/index-of.js\n// module id = 405\n// module chunks = 0 1","require('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/index-of.js\n// module id = 406\n// module chunks = 0 1","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.index-of.js\n// module id = 407\n// module chunks = 0 1","require('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/keys');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n DOMTokenList: true,\n NodeList: true\n};\n\nmodule.exports = function (it) {\n var own = it.keys;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.keys)\n || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/keys.js\n// module id = 408\n// module chunks = 0 1","var parent = require('../../../es/array/virtual/keys');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/virtual/keys.js\n// module id = 409\n// module chunks = 0 1","require('../../../modules/es.array.iterator');\nrequire('../../../modules/es.object.to-string');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/keys.js\n// module id = 410\n// module chunks = 0 1","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/rng-browser.js\n// module id = 411\n// module chunks = 0 1","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n return ([bth[buf[i++]], bth[buf[i++]], \n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]], '-',\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]],\n\tbth[buf[i++]], bth[buf[i++]]]).join('');\n}\n\nmodule.exports = bytesToUuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/bytesToUuid.js\n// module id = 412\n// module chunks = 0 1","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/debug/src/common.js\n// module id = 413\n// module chunks = 0 1","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ms/index.js\n// module id = 414\n// module chunks = 0 1","require('../../modules/es.object.get-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-prototype-of.js\n// module id = 415\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-prototype-of.js\n// module id = 416\n// module chunks = 0 1","require('../../modules/es.object.set-prototype-of');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.setPrototypeOf;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/set-prototype-of.js\n// module id = 417\n// module chunks = 0 1","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.set-prototype-of.js\n// module id = 418\n// module chunks = 0 1","const AV = require('./av');\nconst AppRouter = require('./app-router');\nconst { isNullOrUndefined } = require('./utils');\nconst { extend, isObject, isEmpty } = require('underscore');\n\nconst isCNApp = appId => appId.slice(-9) !== '-MdYXbMMI';\n\nconst fillServerURLs = url => ({\n push: url,\n stats: url,\n engine: url,\n api: url,\n rtm: url,\n});\n\nfunction getDefaultServerURLs(appId) {\n if (isCNApp(appId)) {\n return {};\n }\n const id = appId.slice(0, 8).toLowerCase();\n const domain = 'lncldglobal.com';\n return {\n push: `https://${id}.push.${domain}`,\n stats: `https://${id}.stats.${domain}`,\n engine: `https://${id}.engine.${domain}`,\n api: `https://${id}.api.${domain}`,\n rtm: `https://${id}.rtm.${domain}`,\n };\n}\n\nlet _disableAppRouter = false;\nlet _initialized = false;\n\n/**\n * URLs for services\n * @typedef {Object} ServerURLs\n * @property {String} [api] serverURL for API service\n * @property {String} [engine] serverURL for engine service\n * @property {String} [stats] serverURL for stats service\n * @property {String} [push] serverURL for push service\n * @property {String} [rtm] serverURL for LiveQuery service\n */\n\n/**\n * Call this method first to set up your authentication tokens for AV.\n * You can get your app keys from the LeanCloud dashboard on http://leancloud.cn .\n * @function AV.init\n * @param {Object} options\n * @param {String} options.appId application id\n * @param {String} options.appKey application key\n * @param {String} [options.masterKey] application master key\n * @param {Boolean} [options.production]\n * @param {String|ServerURLs} [options.serverURL] URLs for services. if a string was given, it will be applied for all services.\n * @param {Boolean} [options.disableCurrentUser]\n */\nAV.init = function init(options, ...params) {\n if (!isObject(options)) {\n return AV.init({\n appId: options,\n appKey: params[0],\n masterKey: params[1],\n });\n }\n const {\n appId,\n appKey,\n masterKey,\n hookKey,\n serverURL,\n serverURLs = serverURL,\n disableCurrentUser,\n production,\n realtime,\n } = options;\n if (_initialized)\n console.warn(\n 'Initializing LeanCloud Storage SDK which has already been initialized. Reinitializing the SDK might cause problems like unexpected cross-app data writing and invalid relations.'\n );\n if (!appId) throw new TypeError('appId must be a string');\n if (!appKey) throw new TypeError('appKey must be a string');\n if (process.env.PLATFORM !== 'NODE_JS' && masterKey)\n console.warn('MasterKey is not supposed to be used at client side.');\n if (isCNApp(appId)) {\n if (!serverURLs && isEmpty(AV._config.serverURLs)) {\n throw new TypeError(\n `serverURL option is required for apps from CN region`\n );\n }\n }\n if (appId !== AV._config.applicationId) {\n // overwrite all keys when reinitializing as a new app\n AV._config.masterKey = masterKey;\n AV._config.hookKey = hookKey;\n } else {\n if (masterKey) AV._config.masterKey = masterKey;\n if (hookKey) AV._config.hookKey = hookKey;\n }\n AV._config.applicationId = appId;\n AV._config.applicationKey = appKey;\n if (!isNullOrUndefined(production)) {\n AV.setProduction(production);\n }\n if (typeof disableCurrentUser !== 'undefined')\n AV._config.disableCurrentUser = disableCurrentUser;\n const disableAppRouter =\n _disableAppRouter || typeof serverURLs !== 'undefined';\n if (!disableAppRouter) {\n AV._appRouter = new AppRouter(AV);\n }\n AV._setServerURLs(\n extend(\n {},\n getDefaultServerURLs(appId),\n AV._config.serverURLs,\n typeof serverURLs === 'string' ? fillServerURLs(serverURLs) : serverURLs\n ),\n disableAppRouter\n );\n if (realtime) {\n AV._config.realtime = realtime;\n } else if (AV._sharedConfig.liveQueryRealtime) {\n const { api, rtm } = AV._config.serverURLs;\n AV._config.realtime = new AV._sharedConfig.liveQueryRealtime({\n appId,\n appKey,\n server: {\n api,\n RTMRouter: rtm,\n },\n });\n }\n _initialized = true;\n};\n\n// If we're running in node.js, allow using the master key.\nif (process.env.PLATFORM === 'NODE_JS') {\n AV.Cloud = AV.Cloud || {};\n /**\n * Switches the LeanCloud SDK to using the Master key. The Master key grants\n * priveleged access to the data in LeanCloud and can be used to bypass ACLs and\n * other restrictions that are applied to the client SDKs.\n * <p><strong><em>Available in Cloud Code and Node.js only.</em></strong>\n * </p>\n */\n AV.Cloud.useMasterKey = () => {\n AV._config.useMasterKey = true;\n };\n}\n\n/**\n * Call this method to set production environment variable.\n * @function AV.setProduction\n * @param {Boolean} production True is production environment,and\n * it's true by default.\n */\nAV.setProduction = production => {\n if (!isNullOrUndefined(production)) {\n AV._config.production = production ? 1 : 0;\n } else {\n // change to default value\n AV._config.production = null;\n }\n};\n\nAV._setServerURLs = (urls, disableAppRouter = true) => {\n if (typeof urls !== 'string') {\n extend(AV._config.serverURLs, urls);\n } else {\n AV._config.serverURLs = fillServerURLs(urls);\n }\n if (disableAppRouter) {\n if (AV._appRouter) {\n AV._appRouter.disable();\n } else {\n _disableAppRouter = true;\n }\n }\n};\n/**\n * Set server URLs for services.\n * @function AV.setServerURL\n * @since 4.3.0\n * @param {String|ServerURLs} urls URLs for services. if a string was given, it will be applied for all services.\n * You can also set them when initializing SDK with `options.serverURL`\n */\nAV.setServerURL = urls => AV._setServerURLs(urls);\nAV.setServerURLs = AV.setServerURL;\n\nAV.keepErrorRawMessage = value => {\n AV._sharedConfig.keepErrorRawMessage = value;\n};\n\n/**\n * Set a deadline for requests to complete.\n * Note that file upload requests are not affected.\n * @function AV.setRequestTimeout\n * @since 3.6.0\n * @param {number} ms\n */\nAV.setRequestTimeout = ms => {\n AV._config.requestTimeout = ms;\n};\n\n// backword compatible\nAV.initialize = AV.init;\n\nconst defineConfig = property =>\n Object.defineProperty(AV, property, {\n get() {\n return AV._config[property];\n },\n set(value) {\n AV._config[property] = value;\n },\n });\n\n['applicationId', 'applicationKey', 'masterKey', 'hookKey'].forEach(\n defineConfig\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/init.js","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.slice;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/slice.js\n// module id = 420\n// module chunks = 0 1","require('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/slice.js\n// module id = 421\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.slice.js\n// module id = 422\n// module chunks = 0 1","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/define-property.js\n// module id = 423\n// module chunks = 0 1","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.define-property.js\n// module id = 424\n// module chunks = 0 1","const ajax = require('./utils/ajax');\nconst Cache = require('./cache');\n\nfunction AppRouter(AV) {\n this.AV = AV;\n this.lockedUntil = 0;\n Cache.getAsync('serverURLs')\n .then(data => {\n if (this.disabled) return;\n if (!data) return this.lock(0);\n const { serverURLs, lockedUntil } = data;\n this.AV._setServerURLs(serverURLs, false);\n this.lockedUntil = lockedUntil;\n })\n .catch(() => this.lock(0));\n}\n\nAppRouter.prototype.disable = function disable() {\n this.disabled = true;\n};\nAppRouter.prototype.lock = function lock(ttl) {\n this.lockedUntil = Date.now() + ttl;\n};\nAppRouter.prototype.refresh = function refresh() {\n if (this.disabled) return;\n if (Date.now() < this.lockedUntil) return;\n this.lock(10);\n const url = 'https://app-router.com/2/route';\n return ajax({\n method: 'get',\n url,\n query: {\n appId: this.AV.applicationId,\n },\n })\n .then(servers => {\n if (this.disabled) return;\n let ttl = servers.ttl;\n if (!ttl) throw new Error('missing ttl');\n ttl = ttl * 1000;\n const protocal = 'https://';\n const serverURLs = {\n push: protocal + servers.push_server,\n stats: protocal + servers.stats_server,\n engine: protocal + servers.engine_server,\n api: protocal + servers.api_server,\n };\n this.AV._setServerURLs(serverURLs, false);\n this.lock(ttl);\n return Cache.setAsync(\n 'serverURLs',\n {\n serverURLs,\n lockedUntil: this.lockedUntil,\n },\n ttl\n );\n })\n .catch(error => {\n // bypass all errors\n console.warn(`refresh server URLs failed: ${error.message}`);\n this.lock(600);\n });\n};\n\nmodule.exports = AppRouter;\n\n\n\n// WEBPACK FOOTER //\n// ./src/app-router.js","module.exports = require('../../full/symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/index.js\n// module id = 426\n// module chunks = 0 1","var parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/index.js\n// module id = 427\n// module chunks = 0 1","var parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/index.js\n// module id = 428\n// module chunks = 0 1","require('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/index.js\n// module id = 429\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.constructor.js\n// module id = 430\n// module chunks = 0 1","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-slice-simple.js\n// module id = 431\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.for.js\n// module id = 432\n// module chunks = 0 1","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.key-for.js\n// module id = 433\n// module chunks = 0 1","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js\n// module id = 434\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.async-iterator.js\n// module id = 435\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.has-instance.js\n// module id = 437\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js\n// module id = 438\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match.js\n// module id = 439\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.match-all.js\n// module id = 440\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.replace.js\n// module id = 441\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.search.js\n// module id = 442\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.species.js\n// module id = 443\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.split.js\n// module id = 444\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-primitive.js\n// module id = 445\n// module chunks = 0 1","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js\n// module id = 446\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.symbol.unscopables.js\n// module id = 447\n// module chunks = 0 1","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.json.to-string-tag.js\n// module id = 448\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js\n// module id = 451\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.dispose.js\n// module id = 452\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.matcher.js\n// module id = 453\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js\n// module id = 454\n// module chunks = 0 1","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.observable.js\n// module id = 455\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.metadata.js\n// module id = 456\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js\n// module id = 457\n// module chunks = 0 1","// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js\n// module id = 458\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/symbol/iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/symbol/iterator.js\n// module id = 459\n// module chunks = 0 1","module.exports = require('../../full/symbol/iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/symbol/iterator.js\n// module id = 460\n// module chunks = 0 1","var parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/symbol/iterator.js\n// module id = 461\n// module chunks = 0 1","var parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/symbol/iterator.js\n// module id = 462\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/symbol/iterator.js\n// module id = 463\n// module chunks = 0 1","var parent = require('../../es/instance/filter');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/filter.js\n// module id = 464\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/filter');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.filter;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.filter) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/filter.js\n// module id = 465\n// module chunks = 0 1","require('../../../modules/es.array.filter');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').filter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/filter.js\n// module id = 466\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.filter.js\n// module id = 467\n// module chunks = 0 1","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n var eventSplitter = /\\s+/;\n var slice = Array.prototype.slice;\n\n /**\n * @class\n *\n * <p>AV.Events is a fork of Backbone's Events module, provided for your\n * convenience.</p>\n *\n * <p>A module that can be mixed in to any object in order to provide\n * it with custom events. You may bind callback functions to an event\n * with `on`, or remove these functions with `off`.\n * Triggering an event fires all callbacks in the order that `on` was\n * called.\n *\n * @private\n * @example\n * var object = {};\n * _.extend(object, AV.Events);\n * object.on('expand', function(){ alert('expanded'); });\n * object.trigger('expand');</pre></p>\n *\n */\n AV.Events = {\n /**\n * Bind one or more space separated events, `events`, to a `callback`\n * function. Passing `\"all\"` will bind the callback to all events fired.\n */\n on: function(events, callback, context) {\n var calls, event, node, tail, list;\n if (!callback) {\n return this;\n }\n events = events.split(eventSplitter);\n calls = this._callbacks || (this._callbacks = {});\n\n // Create an immutable callback list, allowing traversal during\n // modification. The tail is an empty object that will always be used\n // as the next node.\n event = events.shift();\n while (event) {\n list = calls[event];\n node = list ? list.tail : {};\n node.next = tail = {};\n node.context = context;\n node.callback = callback;\n calls[event] = { tail: tail, next: list ? list.next : node };\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Remove one or many callbacks. If `context` is null, removes all callbacks\n * with that function. If `callback` is null, removes all callbacks for the\n * event. If `events` is null, removes all bound callbacks for all events.\n */\n off: function(events, callback, context) {\n var event, calls, node, tail, cb, ctx;\n\n // No events, or removing *all* events.\n if (!(calls = this._callbacks)) {\n return;\n }\n if (!(events || callback || context)) {\n delete this._callbacks;\n return this;\n }\n\n // Loop through the listed events and contexts, splicing them out of the\n // linked list of callbacks if appropriate.\n events = events ? events.split(eventSplitter) : _.keys(calls);\n event = events.shift();\n while (event) {\n node = calls[event];\n delete calls[event];\n if (!node || !(callback || context)) {\n continue;\n }\n // Create a new list, omitting the indicated callbacks.\n tail = node.tail;\n node = node.next;\n while (node !== tail) {\n cb = node.callback;\n ctx = node.context;\n if ((callback && cb !== callback) || (context && ctx !== context)) {\n this.on(event, cb, ctx);\n }\n node = node.next;\n }\n event = events.shift();\n }\n\n return this;\n },\n\n /**\n * Trigger one or many events, firing all bound callbacks. Callbacks are\n * passed the same arguments as `trigger` is, apart from the event name\n * (unless you're listening on `\"all\"`, which will cause your callback to\n * receive the true name of the event as the first argument).\n */\n trigger: function(events) {\n var event, node, calls, tail, args, all, rest;\n if (!(calls = this._callbacks)) {\n return this;\n }\n all = calls.all;\n events = events.split(eventSplitter);\n rest = slice.call(arguments, 1);\n\n // For each event, walk through the linked list of callbacks twice,\n // first to trigger the event, then to trigger any `\"all\"` callbacks.\n event = events.shift();\n while (event) {\n node = calls[event];\n if (node) {\n tail = node.tail;\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, rest);\n }\n }\n node = all;\n if (node) {\n tail = node.tail;\n args = [event].concat(rest);\n while ((node = node.next) !== tail) {\n node.callback.apply(node.context || this, args);\n }\n }\n event = events.shift();\n }\n\n return this;\n },\n };\n\n /**\n * @function\n */\n AV.Events.bind = AV.Events.on;\n\n /**\n * @function\n */\n AV.Events.unbind = AV.Events.off;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/event.js","var _ = require('underscore');\n\n/*global navigator: false */\nmodule.exports = function(AV) {\n /**\n * Creates a new GeoPoint with any of the following forms:<br>\n * @example\n * new GeoPoint(otherGeoPoint)\n * new GeoPoint(30, 30)\n * new GeoPoint([30, 30])\n * new GeoPoint({latitude: 30, longitude: 30})\n * new GeoPoint() // defaults to (0, 0)\n * @class\n *\n * <p>Represents a latitude / longitude point that may be associated\n * with a key in a AVObject or used as a reference point for geo queries.\n * This allows proximity-based queries on the key.</p>\n *\n * <p>Only one key in a class may contain a GeoPoint.</p>\n *\n * <p>Example:<pre>\n * var point = new AV.GeoPoint(30.0, -20.0);\n * var object = new AV.Object(\"PlaceObject\");\n * object.set(\"location\", point);\n * object.save();</pre></p>\n */\n AV.GeoPoint = function(arg1, arg2) {\n if (_.isArray(arg1)) {\n AV.GeoPoint._validate(arg1[0], arg1[1]);\n this.latitude = arg1[0];\n this.longitude = arg1[1];\n } else if (_.isObject(arg1)) {\n AV.GeoPoint._validate(arg1.latitude, arg1.longitude);\n this.latitude = arg1.latitude;\n this.longitude = arg1.longitude;\n } else if (_.isNumber(arg1) && _.isNumber(arg2)) {\n AV.GeoPoint._validate(arg1, arg2);\n this.latitude = arg1;\n this.longitude = arg2;\n } else {\n this.latitude = 0;\n this.longitude = 0;\n }\n\n // Add properties so that anyone using Webkit or Mozilla will get an error\n // if they try to set values that are out of bounds.\n var self = this;\n if (this.__defineGetter__ && this.__defineSetter__) {\n // Use _latitude and _longitude to actually store the values, and add\n // getters and setters for latitude and longitude.\n this._latitude = this.latitude;\n this._longitude = this.longitude;\n this.__defineGetter__('latitude', function() {\n return self._latitude;\n });\n this.__defineGetter__('longitude', function() {\n return self._longitude;\n });\n this.__defineSetter__('latitude', function(val) {\n AV.GeoPoint._validate(val, self.longitude);\n self._latitude = val;\n });\n this.__defineSetter__('longitude', function(val) {\n AV.GeoPoint._validate(self.latitude, val);\n self._longitude = val;\n });\n }\n };\n\n /**\n * @lends AV.GeoPoint.prototype\n * @property {float} latitude North-south portion of the coordinate, in range\n * [-90, 90]. Throws an exception if set out of range in a modern browser.\n * @property {float} longitude East-west portion of the coordinate, in range\n * [-180, 180]. Throws if set out of range in a modern browser.\n */\n\n /**\n * Throws an exception if the given lat-long is out of bounds.\n * @private\n */\n AV.GeoPoint._validate = function(latitude, longitude) {\n if (latitude < -90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' < -90.0.');\n }\n if (latitude > 90.0) {\n throw new Error('AV.GeoPoint latitude ' + latitude + ' > 90.0.');\n }\n if (longitude < -180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' < -180.0.');\n }\n if (longitude > 180.0) {\n throw new Error('AV.GeoPoint longitude ' + longitude + ' > 180.0.');\n }\n };\n\n /**\n * Creates a GeoPoint with the user's current location, if available.\n * @return {Promise.<AV.GeoPoint>}\n */\n AV.GeoPoint.current = () =>\n new Promise((resolve, reject) => {\n navigator.geolocation.getCurrentPosition(function(location) {\n resolve(\n new AV.GeoPoint({\n latitude: location.coords.latitude,\n longitude: location.coords.longitude,\n })\n );\n }, reject);\n });\n\n _.extend(\n AV.GeoPoint.prototype,\n /** @lends AV.GeoPoint.prototype */ {\n /**\n * Returns a JSON representation of the GeoPoint, suitable for AV.\n * @return {Object}\n */\n toJSON: function() {\n AV.GeoPoint._validate(this.latitude, this.longitude);\n return {\n __type: 'GeoPoint',\n latitude: this.latitude,\n longitude: this.longitude,\n };\n },\n\n /**\n * Returns the distance from this GeoPoint to another in radians.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n radiansTo: function(point) {\n var d2r = Math.PI / 180.0;\n var lat1rad = this.latitude * d2r;\n var long1rad = this.longitude * d2r;\n var lat2rad = point.latitude * d2r;\n var long2rad = point.longitude * d2r;\n var deltaLat = lat1rad - lat2rad;\n var deltaLong = long1rad - long2rad;\n var sinDeltaLatDiv2 = Math.sin(deltaLat / 2);\n var sinDeltaLongDiv2 = Math.sin(deltaLong / 2);\n // Square of half the straight line chord distance between both points.\n var a =\n sinDeltaLatDiv2 * sinDeltaLatDiv2 +\n Math.cos(lat1rad) *\n Math.cos(lat2rad) *\n sinDeltaLongDiv2 *\n sinDeltaLongDiv2;\n a = Math.min(1.0, a);\n return 2 * Math.asin(Math.sqrt(a));\n },\n\n /**\n * Returns the distance from this GeoPoint to another in kilometers.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n kilometersTo: function(point) {\n return this.radiansTo(point) * 6371.0;\n },\n\n /**\n * Returns the distance from this GeoPoint to another in miles.\n * @param {AV.GeoPoint} point the other AV.GeoPoint.\n * @return {Number}\n */\n milesTo: function(point) {\n return this.radiansTo(point) * 3958.8;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/geopoint.js","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n var PUBLIC_KEY = '*';\n\n /**\n * Creates a new ACL.\n * If no argument is given, the ACL has no permissions for anyone.\n * If the argument is a AV.User, the ACL will have read and write\n * permission for only that user.\n * If the argument is any other JSON object, that object will be interpretted\n * as a serialized ACL created with toJSON().\n * @see AV.Object#setACL\n * @class\n *\n * <p>An ACL, or Access Control List can be added to any\n * <code>AV.Object</code> to restrict access to only a subset of users\n * of your application.</p>\n */\n AV.ACL = function(arg1) {\n var self = this;\n self.permissionsById = {};\n if (_.isObject(arg1)) {\n if (arg1 instanceof AV.User) {\n self.setReadAccess(arg1, true);\n self.setWriteAccess(arg1, true);\n } else {\n if (_.isFunction(arg1)) {\n throw new Error(\n 'AV.ACL() called with a function. Did you forget ()?'\n );\n }\n AV._objectEach(arg1, function(accessList, userId) {\n if (!_.isString(userId)) {\n throw new Error('Tried to create an ACL with an invalid userId.');\n }\n self.permissionsById[userId] = {};\n AV._objectEach(accessList, function(allowed, permission) {\n if (permission !== 'read' && permission !== 'write') {\n throw new Error(\n 'Tried to create an ACL with an invalid permission type.'\n );\n }\n if (!_.isBoolean(allowed)) {\n throw new Error(\n 'Tried to create an ACL with an invalid permission value.'\n );\n }\n self.permissionsById[userId][permission] = allowed;\n });\n });\n }\n }\n };\n\n /**\n * Returns a JSON-encoded version of the ACL.\n * @return {Object}\n */\n AV.ACL.prototype.toJSON = function() {\n return _.clone(this.permissionsById);\n };\n\n AV.ACL.prototype._setAccess = function(accessType, userId, allowed) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n if (!_.isString(userId)) {\n throw new Error('userId must be a string.');\n }\n if (!_.isBoolean(allowed)) {\n throw new Error('allowed must be either true or false.');\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n if (!allowed) {\n // The user already doesn't have this permission, so no action needed.\n return;\n } else {\n permissions = {};\n this.permissionsById[userId] = permissions;\n }\n }\n\n if (allowed) {\n this.permissionsById[userId][accessType] = true;\n } else {\n delete permissions[accessType];\n if (_.isEmpty(permissions)) {\n delete this.permissionsById[userId];\n }\n }\n };\n\n AV.ACL.prototype._getAccess = function(accessType, userId) {\n if (userId instanceof AV.User) {\n userId = userId.id;\n } else if (userId instanceof AV.Role) {\n userId = 'role:' + userId.getName();\n }\n var permissions = this.permissionsById[userId];\n if (!permissions) {\n return false;\n }\n return permissions[accessType] ? true : false;\n };\n\n /**\n * Set whether the given user is allowed to read this object.\n * @param userId An instance of AV.User or its objectId.\n * @param {Boolean} allowed Whether that user should have read access.\n */\n AV.ACL.prototype.setReadAccess = function(userId, allowed) {\n this._setAccess('read', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to read this object.\n * Even if this returns false, the user may still be able to access it if\n * getPublicReadAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getReadAccess = function(userId) {\n return this._getAccess('read', userId);\n };\n\n /**\n * Set whether the given user id is allowed to write this object.\n * @param userId An instance of AV.User or its objectId, or a AV.Role..\n * @param {Boolean} allowed Whether that user should have write access.\n */\n AV.ACL.prototype.setWriteAccess = function(userId, allowed) {\n this._setAccess('write', userId, allowed);\n };\n\n /**\n * Get whether the given user id is *explicitly* allowed to write this object.\n * Even if this returns false, the user may still be able to write it if\n * getPublicWriteAccess returns true or a role that the user belongs to has\n * write access.\n * @param userId An instance of AV.User or its objectId, or a AV.Role.\n * @return {Boolean}\n */\n AV.ACL.prototype.getWriteAccess = function(userId) {\n return this._getAccess('write', userId);\n };\n\n /**\n * Set whether the public is allowed to read this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicReadAccess = function(allowed) {\n this.setReadAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to read this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicReadAccess = function() {\n return this.getReadAccess(PUBLIC_KEY);\n };\n\n /**\n * Set whether the public is allowed to write this object.\n * @param {Boolean} allowed\n */\n AV.ACL.prototype.setPublicWriteAccess = function(allowed) {\n this.setWriteAccess(PUBLIC_KEY, allowed);\n };\n\n /**\n * Get whether the public is allowed to write this object.\n * @return {Boolean}\n */\n AV.ACL.prototype.getPublicWriteAccess = function() {\n return this.getWriteAccess(PUBLIC_KEY);\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to read this object. Even if this returns false, the role may\n * still be able to write it if a parent role has read access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has read access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleReadAccess = function(role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getReadAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Get whether users belonging to the given role are allowed\n * to write this object. Even if this returns false, the role may\n * still be able to write it if a parent role has write access.\n *\n * @param role The name of the role, or a AV.Role object.\n * @return {Boolean} true if the role has write access. false otherwise.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.getRoleWriteAccess = function(role) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n return this.getWriteAccess('role:' + role);\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to read this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can read this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleReadAccess = function(role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setReadAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n\n /**\n * Set whether users belonging to the given role are allowed\n * to write this object.\n *\n * @param role The name of the role, or a AV.Role object.\n * @param {Boolean} allowed Whether the given role can write this object.\n * @throws {String} If role is neither a AV.Role nor a String.\n */\n AV.ACL.prototype.setRoleWriteAccess = function(role, allowed) {\n if (role instanceof AV.Role) {\n // Normalize to the String name\n role = role.getName();\n }\n if (_.isString(role)) {\n this.setWriteAccess('role:' + role, allowed);\n return;\n }\n throw new Error('role must be a AV.Role or a String');\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/acl.js","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n /**\n * @private\n * @class\n * A AV.Op is an atomic operation that can be applied to a field in a\n * AV.Object. For example, calling <code>object.set(\"foo\", \"bar\")</code>\n * is an example of a AV.Op.Set. Calling <code>object.unset(\"foo\")</code>\n * is a AV.Op.Unset. These operations are stored in a AV.Object and\n * sent to the server as part of <code>object.save()</code> operations.\n * Instances of AV.Op should be immutable.\n *\n * You should not create subclasses of AV.Op or instantiate AV.Op\n * directly.\n */\n AV.Op = function() {\n this._initialize.apply(this, arguments);\n };\n\n _.extend(\n AV.Op.prototype,\n /** @lends AV.Op.prototype */ {\n _initialize: function() {},\n }\n );\n\n _.extend(AV.Op, {\n /**\n * To create a new Op, call AV.Op._extend();\n * @private\n */\n _extend: AV._extend,\n\n // A map of __op string to decoder function.\n _opDecoderMap: {},\n\n /**\n * Registers a function to convert a json object with an __op field into an\n * instance of a subclass of AV.Op.\n * @private\n */\n _registerDecoder: function(opName, decoder) {\n AV.Op._opDecoderMap[opName] = decoder;\n },\n\n /**\n * Converts a json object into an instance of a subclass of AV.Op.\n * @private\n */\n _decode: function(json) {\n var decoder = AV.Op._opDecoderMap[json.__op];\n if (decoder) {\n return decoder(json);\n } else {\n return undefined;\n }\n },\n });\n\n /*\n * Add a handler for Batch ops.\n */\n AV.Op._registerDecoder('Batch', function(json) {\n var op = null;\n AV._arrayEach(json.ops, function(nextOp) {\n nextOp = AV.Op._decode(nextOp);\n op = nextOp._mergeWithPrevious(op);\n });\n return op;\n });\n\n /**\n * @private\n * @class\n * A Set operation indicates that either the field was changed using\n * AV.Object.set, or it is a mutable container that was detected as being\n * changed.\n */\n AV.Op.Set = AV.Op._extend(\n /** @lends AV.Op.Set.prototype */ {\n _initialize: function(value) {\n this._value = value;\n },\n\n /**\n * Returns the new value of this field after the set.\n */\n value: function() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return AV._encode(this.value());\n },\n\n _mergeWithPrevious: function(previous) {\n return this;\n },\n\n _estimate: function(oldValue) {\n return this.value();\n },\n }\n );\n\n /**\n * A sentinel value that is returned by AV.Op.Unset._estimate to\n * indicate the field should be deleted. Basically, if you find _UNSET as a\n * value in your object, you should remove that key.\n */\n AV.Op._UNSET = {};\n\n /**\n * @private\n * @class\n * An Unset operation indicates that this field has been deleted from the\n * object.\n */\n AV.Op.Unset = AV.Op._extend(\n /** @lends AV.Op.Unset.prototype */ {\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Delete' };\n },\n\n _mergeWithPrevious: function(previous) {\n return this;\n },\n\n _estimate: function(oldValue) {\n return AV.Op._UNSET;\n },\n }\n );\n\n AV.Op._registerDecoder('Delete', function(json) {\n return new AV.Op.Unset();\n });\n\n /**\n * @private\n * @class\n * An Increment is an atomic operation where the numeric value for the field\n * will be increased by a given amount.\n */\n AV.Op.Increment = AV.Op._extend(\n /** @lends AV.Op.Increment.prototype */ {\n _initialize: function(amount) {\n this._amount = amount;\n },\n\n /**\n * Returns the amount to increment by.\n * @return {Number} the amount to increment by.\n */\n amount: function() {\n return this._amount;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Increment', amount: this._amount };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.amount());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() + this.amount());\n } else if (previous instanceof AV.Op.Increment) {\n return new AV.Op.Increment(this.amount() + previous.amount());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return this.amount();\n }\n return oldValue + this.amount();\n },\n }\n );\n\n AV.Op._registerDecoder('Increment', function(json) {\n return new AV.Op.Increment(json.amount);\n });\n\n /**\n * @private\n * @class\n * BitAnd is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitAnd = AV.Op._extend(\n /** @lends AV.Op.BitAnd.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitAnd', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(0);\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() & this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue & this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitAnd', function(json) {\n return new AV.Op.BitAnd(json.value);\n });\n\n /**\n * @private\n * @class\n * BitOr is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitOr = AV.Op._extend(\n /** @lends AV.Op.BitOr.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitOr', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() | this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue | this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitOr', function(json) {\n return new AV.Op.BitOr(json.value);\n });\n\n /**\n * @private\n * @class\n * BitXor is an atomic operation where the given value will be bit and to the\n * value than is stored in this field.\n */\n AV.Op.BitXor = AV.Op._extend(\n /** @lends AV.Op.BitXor.prototype */ {\n _initialize(value) {\n this._value = value;\n },\n\n value() {\n return this._value;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON() {\n return { __op: 'BitXor', value: this.value() };\n },\n\n _mergeWithPrevious(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.value());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(previous.value() ^ this.value());\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate(oldValue) {\n return oldValue ^ this.value();\n },\n }\n );\n\n AV.Op._registerDecoder('BitXor', function(json) {\n return new AV.Op.BitXor(json.value);\n });\n\n /**\n * @private\n * @class\n * Add is an atomic operation where the given objects will be appended to the\n * array that is stored in this field.\n */\n AV.Op.Add = AV.Op._extend(\n /** @lends AV.Op.Add.prototype */ {\n _initialize: function(objects) {\n this._objects = objects;\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Add', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Add) {\n return new AV.Op.Add(previous.objects().concat(this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n return oldValue.concat(this.objects());\n }\n },\n }\n );\n\n AV.Op._registerDecoder('Add', function(json) {\n return new AV.Op.Add(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * AddUnique is an atomic operation where the given items will be appended to\n * the array that is stored in this field only if they were not already\n * present in the array.\n */\n AV.Op.AddUnique = AV.Op._extend(\n /** @lends AV.Op.AddUnique.prototype */ {\n _initialize: function(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be added to the array.\n * @return {Array} The objects to be added to the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'AddUnique', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return new AV.Op.Set(this.objects());\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.AddUnique) {\n return new AV.Op.AddUnique(this._estimate(previous.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return _.clone(this.objects());\n } else {\n // We can't just take the _.uniq(_.union(...)) of oldValue and\n // this.objects, because the uniqueness may not apply to oldValue\n // (especially if the oldValue was set via .set())\n var newValue = _.clone(oldValue);\n AV._arrayEach(this.objects(), function(obj) {\n if (obj instanceof AV.Object && obj.id) {\n var matchingObj = _.find(newValue, function(anObj) {\n return anObj instanceof AV.Object && anObj.id === obj.id;\n });\n if (!matchingObj) {\n newValue.push(obj);\n } else {\n var index = _.indexOf(newValue, matchingObj);\n newValue[index] = obj;\n }\n } else if (!_.contains(newValue, obj)) {\n newValue.push(obj);\n }\n });\n return newValue;\n }\n },\n }\n );\n\n AV.Op._registerDecoder('AddUnique', function(json) {\n return new AV.Op.AddUnique(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * Remove is an atomic operation where the given objects will be removed from\n * the array that is stored in this field.\n */\n AV.Op.Remove = AV.Op._extend(\n /** @lends AV.Op.Remove.prototype */ {\n _initialize: function(objects) {\n this._objects = _.uniq(objects);\n },\n\n /**\n * Returns the objects to be removed from the array.\n * @return {Array} The objects to be removed from the array.\n */\n objects: function() {\n return this._objects;\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n return { __op: 'Remove', objects: AV._encode(this.objects()) };\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n return previous;\n } else if (previous instanceof AV.Op.Set) {\n return new AV.Op.Set(this._estimate(previous.value()));\n } else if (previous instanceof AV.Op.Remove) {\n return new AV.Op.Remove(_.union(previous.objects(), this.objects()));\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue) {\n if (!oldValue) {\n return [];\n } else {\n var newValue = _.difference(oldValue, this.objects());\n // If there are saved AV Objects being removed, also remove them.\n AV._arrayEach(this.objects(), function(obj) {\n if (obj instanceof AV.Object && obj.id) {\n newValue = _.reject(newValue, function(other) {\n return other instanceof AV.Object && other.id === obj.id;\n });\n }\n });\n return newValue;\n }\n },\n }\n );\n\n AV.Op._registerDecoder('Remove', function(json) {\n return new AV.Op.Remove(AV._decode(json.objects));\n });\n\n /**\n * @private\n * @class\n * A Relation operation indicates that the field is an instance of\n * AV.Relation, and objects are being added to, or removed from, that\n * relation.\n */\n AV.Op.Relation = AV.Op._extend(\n /** @lends AV.Op.Relation.prototype */ {\n _initialize: function(adds, removes) {\n this._targetClassName = null;\n\n var self = this;\n\n var pointerToId = function(object) {\n if (object instanceof AV.Object) {\n if (!object.id) {\n throw new Error(\n \"You can't add an unsaved AV.Object to a relation.\"\n );\n }\n if (!self._targetClassName) {\n self._targetClassName = object.className;\n }\n if (self._targetClassName !== object.className) {\n throw new Error(\n 'Tried to create a AV.Relation with 2 different types: ' +\n self._targetClassName +\n ' and ' +\n object.className +\n '.'\n );\n }\n return object.id;\n }\n return object;\n };\n\n this.relationsToAdd = _.uniq(_.map(adds, pointerToId));\n this.relationsToRemove = _.uniq(_.map(removes, pointerToId));\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being added to the\n * relation.\n * @return {Array}\n */\n added: function() {\n var self = this;\n return _.map(this.relationsToAdd, function(objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns an array of unfetched AV.Object that are being removed from\n * the relation.\n * @return {Array}\n */\n removed: function() {\n var self = this;\n return _.map(this.relationsToRemove, function(objectId) {\n var object = AV.Object._create(self._targetClassName);\n object.id = objectId;\n return object;\n });\n },\n\n /**\n * Returns a JSON version of the operation suitable for sending to AV.\n * @return {Object}\n */\n toJSON: function() {\n var adds = null;\n var removes = null;\n var self = this;\n var idToPointer = function(id) {\n return {\n __type: 'Pointer',\n className: self._targetClassName,\n objectId: id,\n };\n };\n var pointers = null;\n if (this.relationsToAdd.length > 0) {\n pointers = _.map(this.relationsToAdd, idToPointer);\n adds = { __op: 'AddRelation', objects: pointers };\n }\n\n if (this.relationsToRemove.length > 0) {\n pointers = _.map(this.relationsToRemove, idToPointer);\n removes = { __op: 'RemoveRelation', objects: pointers };\n }\n\n if (adds && removes) {\n return { __op: 'Batch', ops: [adds, removes] };\n }\n\n return adds || removes || {};\n },\n\n _mergeWithPrevious: function(previous) {\n if (!previous) {\n return this;\n } else if (previous instanceof AV.Op.Unset) {\n throw new Error(\"You can't modify a relation after deleting it.\");\n } else if (previous instanceof AV.Op.Relation) {\n if (\n previous._targetClassName &&\n previous._targetClassName !== this._targetClassName\n ) {\n throw new Error(\n 'Related object must be of class ' +\n previous._targetClassName +\n ', but ' +\n this._targetClassName +\n ' was passed in.'\n );\n }\n var newAdd = _.union(\n _.difference(previous.relationsToAdd, this.relationsToRemove),\n this.relationsToAdd\n );\n var newRemove = _.union(\n _.difference(previous.relationsToRemove, this.relationsToAdd),\n this.relationsToRemove\n );\n\n var newRelation = new AV.Op.Relation(newAdd, newRemove);\n newRelation._targetClassName = this._targetClassName;\n return newRelation;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n\n _estimate: function(oldValue, object, key) {\n if (!oldValue) {\n var relation = new AV.Relation(object, key);\n relation.targetClassName = this._targetClassName;\n } else if (oldValue instanceof AV.Relation) {\n if (this._targetClassName) {\n if (oldValue.targetClassName) {\n if (oldValue.targetClassName !== this._targetClassName) {\n throw new Error(\n 'Related object must be a ' +\n oldValue.targetClassName +\n ', but a ' +\n this._targetClassName +\n ' was passed in.'\n );\n }\n } else {\n oldValue.targetClassName = this._targetClassName;\n }\n }\n return oldValue;\n } else {\n throw new Error('Op is invalid after previous op.');\n }\n },\n }\n );\n\n AV.Op._registerDecoder('AddRelation', function(json) {\n return new AV.Op.Relation(AV._decode(json.objects), []);\n });\n AV.Op._registerDecoder('RemoveRelation', function(json) {\n return new AV.Op.Relation([], AV._decode(json.objects));\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/op.js","var parent = require('../../es/instance/find');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/find.js\n// module id = 472\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/find');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.find;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.find) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/find.js\n// module id = 473\n// module chunks = 0 1","require('../../../modules/es.array.find');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').find;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/find.js\n// module id = 474\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.find.js\n// module id = 475\n// module chunks = 0 1","var _ = require('underscore');\n\nmodule.exports = function(AV) {\n /**\n * Creates a new Relation for the given parent object and key. This\n * constructor should rarely be used directly, but rather created by\n * {@link AV.Object#relation}.\n * @param {AV.Object} parent The parent of this relation.\n * @param {String} key The key for this relation on the parent.\n * @see AV.Object#relation\n * @class\n *\n * <p>\n * A class that is used to access all of the children of a many-to-many\n * relationship. Each instance of AV.Relation is associated with a\n * particular parent object and key.\n * </p>\n */\n AV.Relation = function(parent, key) {\n if (!_.isString(key)) {\n throw new TypeError('key must be a string');\n }\n this.parent = parent;\n this.key = key;\n this.targetClassName = null;\n };\n\n /**\n * Creates a query that can be used to query the parent objects in this relation.\n * @param {String} parentClass The parent class or name.\n * @param {String} relationKey The relation field key in parent.\n * @param {AV.Object} child The child object.\n * @return {AV.Query}\n */\n AV.Relation.reverseQuery = function(parentClass, relationKey, child) {\n var query = new AV.Query(parentClass);\n query.equalTo(relationKey, child._toPointer());\n return query;\n };\n\n _.extend(\n AV.Relation.prototype,\n /** @lends AV.Relation.prototype */ {\n /**\n * Makes sure that this relation has the right parent and key.\n * @private\n */\n _ensureParentAndKey: function(parent, key) {\n this.parent = this.parent || parent;\n this.key = this.key || key;\n if (this.parent !== parent) {\n throw new Error(\n 'Internal Error. Relation retrieved from two different Objects.'\n );\n }\n if (this.key !== key) {\n throw new Error(\n 'Internal Error. Relation retrieved from two different keys.'\n );\n }\n },\n\n /**\n * Adds a AV.Object or an array of AV.Objects to the relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to add.\n */\n add: function(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation(objects, []);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Removes a AV.Object or an array of AV.Objects from this relation.\n * @param {AV.Object|AV.Object[]} objects The item or items to remove.\n */\n remove: function(objects) {\n if (!_.isArray(objects)) {\n objects = [objects];\n }\n\n var change = new AV.Op.Relation([], objects);\n this.parent.set(this.key, change);\n this.targetClassName = change._targetClassName;\n },\n\n /**\n * Returns a JSON version of the object suitable for saving to disk.\n * @return {Object}\n */\n toJSON: function() {\n return { __type: 'Relation', className: this.targetClassName };\n },\n\n /**\n * Returns a AV.Query that is limited to objects in this\n * relation.\n * @return {AV.Query}\n */\n query: function() {\n var targetClass;\n var query;\n if (!this.targetClassName) {\n targetClass = AV.Object._getSubclass(this.parent.className);\n query = new AV.Query(targetClass);\n query._defaultParams.redirectClassNameForKey = this.key;\n } else {\n targetClass = AV.Object._getSubclass(this.targetClassName);\n query = new AV.Query(targetClass);\n }\n query._addCondition('$relatedTo', 'object', this.parent._toPointer());\n query._addCondition('$relatedTo', 'key', this.key);\n\n return query;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/relation.js","const _ = require('underscore');\nconst cos = require('./uploader/cos');\nconst qiniu = require('./uploader/qiniu');\nconst s3 = require('./uploader/s3');\nconst AVError = require('./error');\nconst { request, _request: AVRequest } = require('./request');\nconst { tap, transformFetchOptions } = require('./utils');\nconst debug = require('debug')('leancloud:file');\nconst parseBase64 = require('./utils/parse-base64');\n\nmodule.exports = function(AV) {\n // port from browserify path module\n // since react-native packager won't shim node modules.\n const extname = path => {\n if (!_.isString(path)) return '';\n return path.match(\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/\n )[4];\n };\n\n const b64Digit = number => {\n if (number < 26) {\n return String.fromCharCode(65 + number);\n }\n if (number < 52) {\n return String.fromCharCode(97 + (number - 26));\n }\n if (number < 62) {\n return String.fromCharCode(48 + (number - 52));\n }\n if (number === 62) {\n return '+';\n }\n if (number === 63) {\n return '/';\n }\n throw new Error('Tried to encode large digit ' + number + ' in base64.');\n };\n\n var encodeBase64 = function(array) {\n var chunks = [];\n chunks.length = Math.ceil(array.length / 3);\n _.times(chunks.length, function(i) {\n var b1 = array[i * 3];\n var b2 = array[i * 3 + 1] || 0;\n var b3 = array[i * 3 + 2] || 0;\n\n var has2 = i * 3 + 1 < array.length;\n var has3 = i * 3 + 2 < array.length;\n\n chunks[i] = [\n b64Digit((b1 >> 2) & 0x3f),\n b64Digit(((b1 << 4) & 0x30) | ((b2 >> 4) & 0x0f)),\n has2 ? b64Digit(((b2 << 2) & 0x3c) | ((b3 >> 6) & 0x03)) : '=',\n has3 ? b64Digit(b3 & 0x3f) : '=',\n ].join('');\n });\n return chunks.join('');\n };\n\n /**\n * An AV.File is a local representation of a file that is saved to the AV\n * cloud.\n * @param name {String} The file's name. This will change to a unique value\n * once the file has finished saving.\n * @param data {Array} The data for the file, as either:\n * 1. an Array of byte value Numbers, or\n * 2. an Object like { base64: \"...\" } with a base64-encoded String.\n * 3. a Blob(File) selected with a file upload control in a browser.\n * 4. an Object like { blob: {uri: \"...\"} } that mimics Blob\n * in some non-browser environments such as React Native.\n * 5. a Buffer in Node.js runtime.\n * 6. a Stream in Node.js runtime.\n *\n * For example:<pre>\n * var fileUploadControl = $(\"#profilePhotoFileUpload\")[0];\n * if (fileUploadControl.files.length > 0) {\n * var file = fileUploadControl.files[0];\n * var name = \"photo.jpg\";\n * var file = new AV.File(name, file);\n * file.save().then(function() {\n * // The file has been saved to AV.\n * }, function(error) {\n * // The file either could not be read, or could not be saved to AV.\n * });\n * }</pre>\n *\n * @class\n * @param [mimeType] {String} Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n */\n AV.File = function(name, data, mimeType) {\n this.attributes = {\n name,\n url: '',\n metaData: {},\n // 用来存储转换后要上传的 base64 String\n base64: '',\n };\n\n if (_.isString(data)) {\n throw new TypeError(\n 'Creating an AV.File from a String is not yet supported.'\n );\n }\n if (_.isArray(data)) {\n this.attributes.metaData.size = data.length;\n data = { base64: encodeBase64(data) };\n }\n\n this._extName = '';\n this._data = data;\n this._uploadHeaders = {};\n\n if (data && data.blob && typeof data.blob.uri === 'string') {\n this._extName = extname(data.blob.uri);\n }\n\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n if (data.size) {\n this.attributes.metaData.size = data.size;\n }\n if (data.name) {\n this._extName = extname(data.name);\n }\n }\n\n\n let owner;\n if (data && data.owner) {\n owner = data.owner;\n } else if (!AV._config.disableCurrentUser) {\n try {\n owner = AV.User.current();\n } catch (error) {\n if ('SYNC_API_NOT_AVAILABLE' !== error.code) {\n throw error;\n }\n }\n }\n\n this.attributes.metaData.owner = owner ? owner.id : 'unknown';\n\n this.set('mime_type', mimeType);\n };\n\n /**\n * Creates a fresh AV.File object with exists url for saving to AVOS Cloud.\n * @param {String} name the file name\n * @param {String} url the file url.\n * @param {Object} [metaData] the file metadata object.\n * @param {String} [type] Content-Type header to use for the file. If\n * this is omitted, the content type will be inferred from the name's\n * extension.\n * @return {AV.File} the file object\n */\n AV.File.withURL = function(name, url, metaData, type) {\n if (!name || !url) {\n throw new Error('Please provide file name and url');\n }\n var file = new AV.File(name, null, type);\n //copy metaData properties to file.\n if (metaData) {\n for (var prop in metaData) {\n if (!file.attributes.metaData[prop])\n file.attributes.metaData[prop] = metaData[prop];\n }\n }\n file.attributes.url = url;\n //Mark the file is from external source.\n file.attributes.metaData.__source = 'external';\n file.attributes.metaData.size = 0;\n return file;\n };\n\n /**\n * Creates a file object with exists objectId.\n * @param {String} objectId The objectId string\n * @return {AV.File} the file object\n */\n AV.File.createWithoutData = function(objectId) {\n if (!objectId) {\n throw new TypeError('The objectId must be provided');\n }\n var file = new AV.File();\n file.id = objectId;\n return file;\n };\n\n /**\n * Request file censor.\n * @since 4.13.0\n * @param {String} objectId\n * @return {Promise.<string>}\n */\n AV.File.censor = function(objectId) {\n if (!AV._config.masterKey) {\n throw new Error('Cannot censor a file without masterKey');\n }\n return request({\n method: 'POST',\n path: `/files/${objectId}/censor`,\n authOptions: { useMasterKey: true },\n }).then(res => res.censorResult);\n };\n\n _.extend(\n AV.File.prototype,\n /** @lends AV.File.prototype */ {\n className: '_File',\n\n _toFullJSON(seenObjects, full = true) {\n var json = _.clone(this.attributes);\n AV._objectEach(json, function(val, key) {\n json[key] = AV._encode(val, seenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function(val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(key => {\n if (_.has(this, key)) {\n const val = this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'File';\n }\n return json;\n },\n\n /**\n * Returns a JSON version of the file with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON(seenObjects = []) {\n return this._toFullJSON(seenObjects);\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON(key, holder, seenObjects = [this]) {\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Gets a Pointer referencing this file.\n * @private\n */\n _toPointer() {\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id,\n };\n },\n\n /**\n * Returns the ACL for this file.\n * @returns {AV.ACL} An instance of AV.ACL.\n */\n getACL() {\n return this._acl;\n },\n\n /**\n * Sets the ACL to be used for this file.\n * @param {AV.ACL} acl An instance of AV.ACL.\n */\n setACL(acl) {\n if (!(acl instanceof AV.ACL)) {\n return new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n this._acl = acl;\n return this;\n },\n\n /**\n * Gets the name of the file. Before save is called, this is the filename\n * given by the user. After save is called, that name gets prefixed with a\n * unique identifier.\n */\n name() {\n return this.get('name');\n },\n\n /**\n * Gets the url of the file. It is only available after you save the file or\n * after you get the file from a AV.Object.\n * @return {String}\n */\n url() {\n return this.get('url');\n },\n\n /**\n * Gets the attributs of the file object.\n * @param {String} The attribute name which want to get.\n * @returns {Any}\n */\n get(attrName) {\n switch (attrName) {\n case 'objectId':\n return this.id;\n case 'url':\n case 'name':\n case 'mime_type':\n case 'metaData':\n case 'createdAt':\n case 'updatedAt':\n return this.attributes[attrName];\n default:\n return this.attributes.metaData[attrName];\n }\n },\n\n /**\n * Set the metaData of the file object.\n * @param {Object} Object is an key value Object for setting metaData.\n * @param {String} attr is an optional metadata key.\n * @param {Object} value is an optional metadata value.\n * @returns {String|Number|Array|Object}\n */\n set(...args) {\n const set = (attrName, value) => {\n switch (attrName) {\n case 'name':\n case 'url':\n case 'mime_type':\n case 'base64':\n case 'metaData':\n this.attributes[attrName] = value;\n break;\n default:\n // File 并非一个 AVObject,不能完全自定义其他属性,所以只能都放在 metaData 上面\n this.attributes.metaData[attrName] = value;\n break;\n }\n };\n\n switch (args.length) {\n case 1:\n // 传入一个 Object\n for (var k in args[0]) {\n set(k, args[0][k]);\n }\n break;\n case 2:\n set(args[0], args[1]);\n break;\n }\n return this;\n },\n\n /**\n * Set a header for the upload request.\n * For more infomation, go to https://url.leanapp.cn/avfile-upload-headers\n *\n * @param {String} key header key\n * @param {String} value header value\n * @return {AV.File} this\n */\n setUploadHeader(key, value) {\n this._uploadHeaders[key] = value;\n return this;\n },\n\n /**\n * <p>Returns the file's metadata JSON object if no arguments is given.Returns the\n * metadata value if a key is given.Set metadata value if key and value are both given.</p>\n * <p><pre>\n * var metadata = file.metaData(); //Get metadata JSON object.\n * var size = file.metaData('size'); // Get the size metadata value.\n * file.metaData('format', 'jpeg'); //set metadata attribute and value.\n *</pre></p>\n * @return {Object} The file's metadata JSON object.\n * @param {String} attr an optional metadata key.\n * @param {Object} value an optional metadata value.\n **/\n metaData(attr, value) {\n if (attr && value) {\n this.attributes.metaData[attr] = value;\n return this;\n } else if (attr && !value) {\n return this.attributes.metaData[attr];\n } else {\n return this.attributes.metaData;\n }\n },\n\n /**\n * 如果文件是图片,获取图片的缩略图URL。可以传入宽度、高度、质量、格式等参数。\n * @return {String} 缩略图URL\n * @param {Number} width 宽度,单位:像素\n * @param {Number} heigth 高度,单位:像素\n * @param {Number} quality 质量,1-100的数字,默认100\n * @param {Number} scaleToFit 是否将图片自适应大小。默认为true。\n * @param {String} fmt 格式,默认为png,也可以为jpeg,gif等格式。\n */\n\n thumbnailURL(\n width,\n height,\n quality = 100,\n scaleToFit = true,\n fmt = 'png'\n ) {\n const url = this.attributes.url;\n if (!url) {\n throw new Error('Invalid url.');\n }\n if (!width || !height || width <= 0 || height <= 0) {\n throw new Error('Invalid width or height value.');\n }\n if (quality <= 0 || quality > 100) {\n throw new Error('Invalid quality value.');\n }\n const mode = scaleToFit ? 2 : 1;\n return (\n url +\n '?imageView/' +\n mode +\n '/w/' +\n width +\n '/h/' +\n height +\n '/q/' +\n quality +\n '/format/' +\n fmt\n );\n },\n\n /**\n * Returns the file's size.\n * @return {Number} The file's size in bytes.\n **/\n size() {\n return this.metaData().size;\n },\n\n /**\n * Returns the file's owner.\n * @return {String} The file's owner id.\n */\n ownerId() {\n return this.metaData().owner;\n },\n\n /**\n * Destroy the file.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy(options) {\n if (!this.id) {\n return Promise.reject(new Error('The file id does not eixst.'));\n }\n var request = AVRequest(\n 'files',\n null,\n this.id,\n 'DELETE',\n null,\n options\n );\n return request;\n },\n\n /**\n * Request Qiniu upload token\n * @param {string} type\n * @return {Promise} Resolved with the response\n * @private\n */\n _fileToken(type, authOptions) {\n let name = this.attributes.name;\n\n let extName = extname(name);\n if (!extName && this._extName) {\n name += this._extName;\n extName = this._extName;\n }\n const data = {\n name,\n keep_file_name: authOptions.keepFileName,\n key: authOptions.key,\n ACL: this._acl,\n mime_type: type,\n metaData: this.attributes.metaData,\n };\n return AVRequest('fileTokens', null, null, 'POST', data, authOptions);\n },\n\n /**\n * @callback UploadProgressCallback\n * @param {XMLHttpRequestProgressEvent} event - The progress event with 'loaded' and 'total' attributes\n */\n /**\n * Saves the file to the AV cloud.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {UploadProgressCallback} [options.onprogress] 文件上传进度,在 Node.js 中无效,回调参数说明详见 {@link UploadProgressCallback}。\n * @param {boolean} [options.keepFileName = false] 保留下载文件的文件名。\n * @param {string} [options.key] 指定文件的 key。设置该选项需要使用 masterKey\n * @return {Promise} Promise that is resolved when the save finishes.\n */\n save(options = {}) {\n if (this.id) {\n throw new Error('File is already saved.');\n }\n if (!this._previousSave) {\n if (this._data) {\n let mimeType = this.get('mime_type');\n this._previousSave = this._fileToken(mimeType, options).then(\n uploadInfo => {\n if (uploadInfo.mime_type) {\n mimeType = uploadInfo.mime_type;\n this.set('mime_type', mimeType);\n }\n this._token = uploadInfo.token;\n return Promise.resolve()\n .then(() => {\n const data = this._data;\n if (data && data.base64) {\n return parseBase64(data.base64, mimeType);\n }\n if (data && data.blob) {\n if (!data.blob.type && mimeType) {\n data.blob.type = mimeType;\n }\n if (!data.blob.name) {\n data.blob.name = this.get('name');\n }\n return data.blob;\n }\n if (typeof Blob !== 'undefined' && data instanceof Blob) {\n return data;\n }\n throw new TypeError('malformed file data');\n })\n .then(data => {\n const _options = _.extend({}, options);\n // filter out download progress events\n if (options.onprogress) {\n _options.onprogress = event => {\n if (event.direction === 'download') return;\n return options.onprogress(event);\n };\n }\n switch (uploadInfo.provider) {\n case 's3':\n return s3(uploadInfo, data, this, _options);\n case 'qcloud':\n return cos(uploadInfo, data, this, _options);\n case 'qiniu':\n default:\n return qiniu(uploadInfo, data, this, _options);\n }\n })\n .then(tap(() => this._callback(true)), error => {\n this._callback(false);\n throw error;\n });\n }\n );\n } else if (\n this.attributes.url &&\n this.attributes.metaData.__source === 'external'\n ) {\n // external link file.\n const data = {\n name: this.attributes.name,\n ACL: this._acl,\n metaData: this.attributes.metaData,\n mime_type: this.mimeType,\n url: this.attributes.url,\n };\n this._previousSave = AVRequest(\n 'files',\n null,\n null,\n 'post',\n data,\n options\n ).then(response => {\n this.id = response.objectId;\n return this;\n });\n }\n }\n return this._previousSave;\n },\n\n _callback(success) {\n AVRequest('fileCallback', null, null, 'post', {\n token: this._token,\n result: success,\n }).catch(debug);\n delete this._token;\n delete this._data;\n },\n\n /**\n * fetch the file from server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch(fetchOptions, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved file');\n }\n var request = AVRequest(\n 'files',\n null,\n this.id,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n );\n return request.then(this._finishFetch.bind(this));\n },\n _finishFetch(response) {\n var value = AV.Object.prototype.parse(response);\n value.attributes = {\n name: value.name,\n url: value.url,\n mime_type: value.mime_type,\n bucket: value.bucket,\n };\n value.attributes.metaData = value.metaData || {};\n value.id = value.objectId;\n // clean\n delete value.objectId;\n delete value.metaData;\n delete value.url;\n delete value.name;\n delete value.mime_type;\n delete value.bucket;\n _.extend(this, value);\n return this;\n },\n\n /**\n * Request file censor\n * @since 4.13.0\n * @return {Promise.<string>}\n */\n censor() {\n if (!this.id) {\n throw new Error('Cannot censor an unsaved file');\n }\n return AV.File.censor(this.id);\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/file.js","const { getAdapter } = require('../adapter');\nconst debug = require('debug')('cos');\n\nmodule.exports = function(uploadInfo, data, file, saveOptions = {}) {\n const url =\n uploadInfo.upload_url + '?sign=' + encodeURIComponent(uploadInfo.token);\n const fileFormData = {\n field: 'fileContent',\n data,\n name: file.attributes.name,\n };\n const options = {\n headers: file._uploadHeaders,\n data: {\n op: 'upload',\n },\n onprogress: saveOptions.onprogress,\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n const upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(\n response => {\n debug(response.status, response.data);\n if (response.ok === false) {\n const error = new Error(response.status);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n },\n error => {\n const { response } = error;\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/cos.js","const { getAdapter } = require('../adapter');\nconst debug = require('debug')('leancloud:qiniu');\nconst ajax = require('../utils/ajax');\nconst btoa = require('../utils/btoa');\n\nconst SHARD_THRESHOLD = 1024 * 1024 * 64;\n\nconst CHUNK_SIZE = 1024 * 1024 * 16;\n\nfunction upload(uploadInfo, data, file, saveOptions = {}) {\n // Get the uptoken to upload files to qiniu.\n const uptoken = uploadInfo.token;\n const url = uploadInfo.upload_url || 'https://upload.qiniup.com';\n const fileFormData = {\n field: 'file',\n data,\n name: file.attributes.name,\n };\n const options = {\n headers: file._uploadHeaders,\n data: {\n name: file.attributes.name,\n key: uploadInfo.key,\n token: uptoken,\n },\n onprogress: saveOptions.onprogress,\n };\n debug('url: %s, file: %o, options: %o', url, fileFormData, options);\n const upload = getAdapter('upload');\n return upload(url, fileFormData, options).then(\n response => {\n debug(response.status, response.data);\n if (response.ok === false) {\n let message = response.status;\n if (response.data) {\n if (response.data.error) {\n message = response.data.error;\n } else {\n message = JSON.stringify(response.data);\n }\n }\n const error = new Error(message);\n error.response = response;\n throw error;\n }\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n },\n error => {\n const { response } = error;\n if (response) {\n debug(response.status, response.data);\n error.statusCode = response.status;\n error.response = response.data;\n }\n throw error;\n }\n );\n}\n\nfunction urlSafeBase64(string) {\n const base64 = btoa(unescape(encodeURIComponent(string)));\n let result = '';\n for (const ch of base64) {\n switch (ch) {\n case '+':\n result += '-';\n break;\n case '/':\n result += '_';\n break;\n default:\n result += ch;\n }\n }\n return result;\n}\n\nclass ShardUploader {\n constructor(uploadInfo, data, file, saveOptions) {\n this.uploadInfo = uploadInfo;\n this.data = data;\n this.file = file;\n this.size = undefined;\n this.offset = 0;\n this.uploadedChunks = 0;\n\n const key = urlSafeBase64(uploadInfo.key);\n const uploadURL = uploadInfo.upload_url || 'https://upload.qiniup.com';\n this.baseURL = `${uploadURL}/buckets/${uploadInfo.bucket}/objects/${key}/uploads`;\n this.upToken = 'UpToken ' + uploadInfo.token;\n\n this.uploaded = 0;\n if (saveOptions && saveOptions.onprogress) {\n this.onProgress = ({ loaded }) => {\n loaded += this.uploadedChunks * CHUNK_SIZE;\n if (loaded <= this.uploaded) {\n return;\n }\n if (this.size) {\n saveOptions.onprogress({\n loaded,\n total: this.size,\n percent: (loaded / this.size) * 100,\n });\n } else {\n saveOptions.onprogress({ loaded });\n }\n this.uploaded = loaded;\n };\n }\n }\n\n /**\n * @returns {Promise<string>}\n */\n getUploadId() {\n return ajax({\n method: 'POST',\n url: this.baseURL,\n headers: {\n Authorization: this.upToken,\n },\n }).then(res => res.uploadId);\n }\n\n getChunk() {\n throw new Error('Not implemented');\n }\n\n /**\n * @param {string} uploadId\n * @param {number} partNumber\n * @param {any} data\n * @returns {Promise<{ partNumber: number, etag: string }>}\n */\n uploadPart(uploadId, partNumber, data) {\n return ajax({\n method: 'PUT',\n url: `${this.baseURL}/${uploadId}/${partNumber}`,\n headers: {\n Authorization: this.upToken,\n },\n data,\n onprogress: this.onProgress,\n }).then(({ etag }) => ({ partNumber, etag }));\n }\n\n stopUpload(uploadId) {\n return ajax({\n method: 'DELETE',\n url: `${this.baseURL}/${uploadId}`,\n headers: {\n Authorization: this.upToken,\n },\n });\n }\n\n upload() {\n const parts = [];\n return this.getUploadId()\n .then(uploadId => {\n const uploadPart = () => {\n return Promise.resolve(this.getChunk())\n .then(chunk => {\n if (!chunk) {\n return;\n }\n const partNumber = parts.length + 1;\n return this.uploadPart(uploadId, partNumber, chunk).then(part => {\n parts.push(part);\n this.uploadedChunks++;\n return uploadPart();\n });\n })\n .catch(error =>\n this.stopUpload(uploadId).then(() => Promise.reject(error))\n );\n };\n\n return uploadPart().then(() =>\n ajax({\n method: 'POST',\n url: `${this.baseURL}/${uploadId}`,\n headers: {\n Authorization: this.upToken,\n },\n data: {\n parts,\n fname: this.file.attributes.name,\n mimeType: this.file.attributes.mime_type,\n },\n })\n );\n })\n .then(() => {\n this.file.attributes.url = this.uploadInfo.url;\n this.file._bucket = this.uploadInfo.bucket;\n this.file.id = this.uploadInfo.objectId;\n return this.file;\n });\n }\n}\n\nclass BlobUploader extends ShardUploader {\n constructor(uploadInfo, data, file, saveOptions) {\n super(uploadInfo, data, file, saveOptions);\n this.size = data.size;\n }\n\n /**\n * @returns {Blob | null}\n */\n getChunk() {\n if (this.offset >= this.size) {\n return null;\n }\n const chunk = this.data.slice(this.offset, this.offset + CHUNK_SIZE);\n this.offset += chunk.size;\n return chunk;\n }\n}\n\n\n\nfunction isBlob(data) {\n return typeof Blob !== 'undefined' && data instanceof Blob;\n}\n\n\n\nmodule.exports = function(uploadInfo, data, file, saveOptions = {}) {\n if (isBlob(data) && data.size >= SHARD_THRESHOLD) {\n return new BlobUploader(uploadInfo, data, file, saveOptions).upload();\n }\n return upload(uploadInfo, data, file, saveOptions);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/qiniu.js","require('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/from.js\n// module id = 480\n// module chunks = 0 1","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.from.js\n// module id = 481\n// module chunks = 0 1","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-from.js\n// module id = 482\n// module chunks = 0 1","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/call-with-safe-iteration-closing.js\n// module id = 483\n// module chunks = 0 1","module.exports = require('../full/get-iterator-method');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/get-iterator-method.js\n// module id = 484\n// module chunks = 0 1","var parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/get-iterator-method.js\n// module id = 485\n// module chunks = 0 1","var parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/get-iterator-method.js\n// module id = 486\n// module chunks = 0 1","var parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/get-iterator-method.js\n// module id = 487\n// module chunks = 0 1","require('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/get-iterator-method.js\n// module id = 488\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/reflect/construct\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/reflect/construct.js\n// module id = 489\n// module chunks = 0 1","var parent = require('../../es/reflect/construct');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/reflect/construct.js\n// module id = 490\n// module chunks = 0 1","require('../../modules/es.reflect.construct');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Reflect.construct;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/reflect/construct.js\n// module id = 491\n// module chunks = 0 1","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\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 !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(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 apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.reflect.construct.js\n// module id = 492\n// module chunks = 0 1","var _Object$create = require(\"@babel/runtime-corejs3/core-js/object/create\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n\n _Object$defineProperty(subClass, \"prototype\", {\n writable: false\n });\n\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/inherits.js\n// module id = 493\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/create\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/create.js\n// module id = 494\n// module chunks = 0 1","module.exports = require('../../full/object/create');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/create.js\n// module id = 495\n// module chunks = 0 1","var parent = require('../../actual/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/create.js\n// module id = 496\n// module chunks = 0 1","var parent = require('../../stable/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/create.js\n// module id = 497\n// module chunks = 0 1","var parent = require('../../es/object/create');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/create.js\n// module id = 498\n// module chunks = 0 1","require('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n return Object.create(P, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/create.js\n// module id = 499\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.create.js\n// module id = 500\n// module chunks = 0 1","module.exports = require('../../full/object/define-property');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/define-property.js\n// module id = 501\n// module chunks = 0 1","var parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/define-property.js\n// module id = 502\n// module chunks = 0 1","var parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/define-property.js\n// module id = 503\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nfunction _setPrototypeOf(o, p) {\n var _context;\n\n module.exports = _setPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$setPrototypeOf).call(_context) : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/setPrototypeOf.js\n// module id = 504\n// module chunks = 0 1","module.exports = require('../../full/object/set-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/set-prototype-of.js\n// module id = 505\n// module chunks = 0 1","var parent = require('../../actual/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/set-prototype-of.js\n// module id = 506\n// module chunks = 0 1","var parent = require('../../stable/object/set-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/set-prototype-of.js\n// module id = 507\n// module chunks = 0 1","module.exports = require('../../full/instance/bind');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/bind.js\n// module id = 508\n// module chunks = 0 1","var parent = require('../../actual/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/bind.js\n// module id = 509\n// module chunks = 0 1","var parent = require('../../stable/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/bind.js\n// module id = 510\n// module chunks = 0 1","var parent = require('../../es/instance/bind');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/bind.js\n// module id = 511\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../function/virtual/bind');\n\nvar FunctionPrototype = Function.prototype;\n\nmodule.exports = function (it) {\n var own = it.bind;\n return it === FunctionPrototype || (isPrototypeOf(FunctionPrototype, it) && own === FunctionPrototype.bind) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/bind.js\n// module id = 512\n// module chunks = 0 1","require('../../../modules/es.function.bind');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Function').bind;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/function/virtual/bind.js\n// module id = 513\n// module chunks = 0 1","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.function.bind.js\n// module id = 514\n// module chunks = 0 1","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/possibleConstructorReturn.js\n// module id = 515\n// module chunks = 0 1","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/assertThisInitialized.js\n// module id = 516\n// module chunks = 0 1","var _Object$setPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/set-prototype-of\");\n\nvar _bindInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/bind\");\n\nvar _Object$getPrototypeOf = require(\"@babel/runtime-corejs3/core-js/object/get-prototype-of\");\n\nfunction _getPrototypeOf(o) {\n var _context;\n\n module.exports = _getPrototypeOf = _Object$setPrototypeOf ? _bindInstanceProperty(_context = _Object$getPrototypeOf).call(_context) : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/getPrototypeOf.js\n// module id = 517\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/object/get-prototype-of\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/object/get-prototype-of.js\n// module id = 518\n// module chunks = 0 1","module.exports = require('../../full/object/get-prototype-of');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/object/get-prototype-of.js\n// module id = 519\n// module chunks = 0 1","var parent = require('../../actual/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/object/get-prototype-of.js\n// module id = 520\n// module chunks = 0 1","var parent = require('../../stable/object/get-prototype-of');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/object/get-prototype-of.js\n// module id = 521\n// module chunks = 0 1","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/classCallCheck.js\n// module id = 522\n// module chunks = 0 1","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n _Object$defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/createClass.js\n// module id = 523\n// module chunks = 0 1","// base64 character set, plus padding character (=)\nconst b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nmodule.exports = string => {\n let result = '';\n\n for (let i = 0; i < string.length; ) {\n const a = string.charCodeAt(i++);\n const b = string.charCodeAt(i++);\n const c = string.charCodeAt(i++);\n if (a > 255 || b > 255 || c > 255) {\n throw new TypeError(\n 'Failed to encode base64: The string to be encoded contains characters outside of the Latin1 range.'\n );\n }\n\n const bitmap = (a << 16) | (b << 8) | c;\n result +=\n b64.charAt((bitmap >> 18) & 63) +\n b64.charAt((bitmap >> 12) & 63) +\n b64.charAt((bitmap >> 6) & 63) +\n b64.charAt(bitmap & 63);\n }\n\n // To determine the final padding\n const rest = string.length % 3;\n // If there's need of padding, replace the last 'A's with equal signs\n return rest ? result.slice(0, rest - 3) + '==='.substring(rest) : result;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/btoa.js","const _ = require('underscore');\nconst ajax = require('../utils/ajax');\n\nmodule.exports = function upload(uploadInfo, data, file, saveOptions = {}) {\n\n return ajax({\n url: uploadInfo.upload_url,\n method: 'PUT',\n data,\n headers: _.extend(\n {\n 'Content-Type': file.get('mime_type'),\n 'Cache-Control': 'public, max-age=31536000',\n },\n file._uploadHeaders\n ),\n onprogress: saveOptions.onprogress,\n }).then(() => {\n file.attributes.url = uploadInfo.url;\n file._bucket = uploadInfo.bucket;\n file.id = uploadInfo.objectId;\n return file;\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/uploader/s3.js","(function(){\r\n var crypt = require('crypt'),\r\n utf8 = require('charenc').utf8,\r\n isBuffer = require('is-buffer'),\r\n bin = require('charenc').bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message))\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/md5/md5.js\n// module id = 526\n// module chunks = 0 1","(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/crypt/crypt.js\n// module id = 527\n// module chunks = 0 1","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 528\n// module chunks = 0 1","var dataURItoBlob = function(dataURI, type) {\n var byteString;\n\n // 传入的 base64,不是 dataURL\n if (dataURI.indexOf('base64') < 0) {\n byteString = atob(dataURI);\n } else if (dataURI.split(',')[0].indexOf('base64') >= 0) {\n type =\n type ||\n dataURI\n .split(',')[0]\n .split(':')[1]\n .split(';')[0];\n byteString = atob(dataURI.split(',')[1]);\n } else {\n byteString = unescape(dataURI.split(',')[1]);\n }\n var ia = new Uint8Array(byteString.length);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ia], { type });\n};\n\nmodule.exports = dataURItoBlob;\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/parse-base64-browser.js","const _ = require('underscore');\nconst AVError = require('./error');\nconst { _request } = require('./request');\nconst {\n isNullOrUndefined,\n ensureArray,\n transformFetchOptions,\n setValue,\n findValue,\n isPlainObject,\n continueWhile,\n} = require('./utils');\n\nconst recursiveToPointer = value => {\n if (_.isArray(value)) return value.map(recursiveToPointer);\n if (isPlainObject(value)) return _.mapObject(value, recursiveToPointer);\n if (_.isObject(value) && value._toPointer) return value._toPointer();\n return value;\n};\n\nconst RESERVED_KEYS = ['objectId', 'createdAt', 'updatedAt'];\nconst checkReservedKey = key => {\n if (RESERVED_KEYS.indexOf(key) !== -1) {\n throw new Error(`key[${key}] is reserved`);\n }\n};\n\nconst handleBatchResults = results => {\n const firstError = _.find(results, result => result instanceof Error);\n if (!firstError) {\n return results;\n }\n const error = new AVError(firstError.code, firstError.message);\n error.results = results;\n throw error;\n};\n\n// Helper function to get a value from a Backbone object as a property\n// or as a function.\nfunction getValue(object, prop) {\n if (!(object && object[prop])) {\n return null;\n }\n return _.isFunction(object[prop]) ? object[prop]() : object[prop];\n}\n\n// AV.Object is analogous to the Java AVObject.\n// It also implements the same interface as a Backbone model.\n\nmodule.exports = function(AV) {\n /**\n * Creates a new model with defined attributes. A client id (cid) is\n * automatically generated and assigned for you.\n *\n * <p>You won't normally call this method directly. It is recommended that\n * you use a subclass of <code>AV.Object</code> instead, created by calling\n * <code>extend</code>.</p>\n *\n * <p>However, if you don't want to use a subclass, or aren't sure which\n * subclass is appropriate, you can use this form:<pre>\n * var object = new AV.Object(\"ClassName\");\n * </pre>\n * That is basically equivalent to:<pre>\n * var MyClass = AV.Object.extend(\"ClassName\");\n * var object = new MyClass();\n * </pre></p>\n *\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @see AV.Object.extend\n *\n * @class\n *\n * <p>The fundamental unit of AV data, which implements the Backbone Model\n * interface.</p>\n */\n AV.Object = function(attributes, options) {\n // Allow new AV.Object(\"ClassName\") as a shortcut to _create.\n if (_.isString(attributes)) {\n return AV.Object._create.apply(this, arguments);\n }\n\n attributes = attributes || {};\n if (options && options.parse) {\n attributes = this.parse(attributes);\n attributes = this._mergeMagicFields(attributes);\n }\n var defaults = getValue(this, 'defaults');\n if (defaults) {\n attributes = _.extend({}, defaults, attributes);\n }\n if (options && options.collection) {\n this.collection = options.collection;\n }\n\n this._serverData = {}; // The last known data for this object from cloud.\n this._opSetQueue = [{}]; // List of sets of changes to the data.\n this._flags = {};\n this.attributes = {}; // The best estimate of this's current data.\n\n this._hashedJSON = {}; // Hash of values of containers at last save.\n this._escapedAttributes = {};\n this.cid = _.uniqueId('c');\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this.set(attributes, { silent: true });\n this.changed = {};\n this._silent = {};\n this._pending = {};\n this._hasData = true;\n this._previousAttributes = _.clone(this.attributes);\n this.initialize.apply(this, arguments);\n };\n\n /**\n * @lends AV.Object.prototype\n * @property {String} id The objectId of the AV Object.\n */\n\n /**\n * Saves the given list of AV.Object.\n * If any error is encountered, stops and calls the error handler.\n *\n * @example\n * AV.Object.saveAll([object1, object2, ...]).then(function(list) {\n * // All the objects were saved.\n * }, function(error) {\n * // An error occurred while saving one of the objects.\n * });\n *\n * @param {Array} list A list of <code>AV.Object</code>.\n */\n AV.Object.saveAll = function(list, options) {\n return AV.Object._deepSaveAsync(list, null, options);\n };\n\n /**\n * Fetch the given list of AV.Object.\n *\n * @param {AV.Object[]} objects A list of <code>AV.Object</code>\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object[]>} The given list of <code>AV.Object</code>, updated\n */\n\n AV.Object.fetchAll = (objects, options) =>\n Promise.resolve()\n .then(() =>\n _request(\n 'batch',\n null,\n null,\n 'POST',\n {\n requests: _.map(objects, object => {\n if (!object.className)\n throw new Error('object must have className to fetch');\n if (!object.id) throw new Error('object must have id to fetch');\n if (object.dirty())\n throw new Error('object is modified but not saved');\n return {\n method: 'GET',\n path: `/1.1/classes/${object.className}/${object.id}`,\n };\n }),\n },\n options\n )\n )\n .then(function(response) {\n const results = _.map(objects, function(object, i) {\n if (response[i].success) {\n const fetchedAttrs = object.parse(response[i].success);\n object._cleanupUnsetKeys(fetchedAttrs);\n object._finishFetch(fetchedAttrs);\n return object;\n }\n if (response[i].success === null) {\n return new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n }\n return new AVError(response[i].error.code, response[i].error.error);\n });\n return handleBatchResults(results);\n });\n\n // Attach all inheritable methods to the AV.Object prototype.\n _.extend(\n AV.Object.prototype,\n AV.Events,\n /** @lends AV.Object.prototype */ {\n _fetchWhenSave: false,\n\n /**\n * Initialize is an empty function by default. Override it with your own\n * initialization logic.\n */\n initialize: function() {},\n\n /**\n * Set whether to enable fetchWhenSave option when updating object.\n * When set true, SDK would fetch the latest object after saving.\n * Default is false.\n *\n * @deprecated use AV.Object#save with options.fetchWhenSave instead\n * @param {boolean} enable true to enable fetchWhenSave option.\n */\n fetchWhenSave: function(enable) {\n console.warn(\n 'AV.Object#fetchWhenSave is deprecated, use AV.Object#save with options.fetchWhenSave instead.'\n );\n if (!_.isBoolean(enable)) {\n throw new Error('Expect boolean value for fetchWhenSave');\n }\n this._fetchWhenSave = enable;\n },\n\n /**\n * Returns the object's objectId.\n * @return {String} the objectId.\n */\n getObjectId: function() {\n return this.id;\n },\n\n /**\n * Returns the object's createdAt attribute.\n * @return {Date}\n */\n getCreatedAt: function() {\n return this.createdAt;\n },\n\n /**\n * Returns the object's updatedAt attribute.\n * @return {Date}\n */\n getUpdatedAt: function() {\n return this.updatedAt;\n },\n\n /**\n * Returns a JSON version of the object.\n * @return {Object}\n */\n toJSON: function(key, holder, seenObjects = []) {\n return this._toFullJSON(seenObjects, false);\n },\n\n /**\n * Returns a JSON version of the object with meta data.\n * Inverse to {@link AV.parseJSON}\n * @since 3.0.0\n * @return {Object}\n */\n toFullJSON(seenObjects = []) {\n return this._toFullJSON(seenObjects);\n },\n\n _toFullJSON: function(seenObjects, full = true) {\n var json = _.clone(this.attributes);\n if (_.isArray(seenObjects)) {\n var newSeenObjects = seenObjects.concat(this);\n }\n AV._objectEach(json, function(val, key) {\n json[key] = AV._encode(val, newSeenObjects, undefined, full);\n });\n AV._objectEach(this._operations, function(val, key) {\n json[key] = val;\n });\n\n if (_.has(this, 'id')) {\n json.objectId = this.id;\n }\n ['createdAt', 'updatedAt'].forEach(key => {\n if (_.has(this, key)) {\n const val = this[key];\n json[key] = _.isDate(val) ? val.toJSON() : val;\n }\n });\n if (full) {\n json.__type = 'Object';\n if (_.isArray(seenObjects) && seenObjects.length)\n json.__type = 'Pointer';\n json.className = this.className;\n }\n return json;\n },\n\n /**\n * Updates _hashedJSON to reflect the current state of this object.\n * Adds any changed hash values to the set of pending changes.\n * @private\n */\n _refreshCache: function() {\n var self = this;\n if (self._refreshingCache) {\n return;\n }\n self._refreshingCache = true;\n AV._objectEach(this.attributes, function(value, key) {\n if (value instanceof AV.Object) {\n value._refreshCache();\n } else if (_.isObject(value)) {\n if (self._resetCacheForKey(key)) {\n self.set(key, new AV.Op.Set(value), { silent: true });\n }\n }\n });\n delete self._refreshingCache;\n },\n\n /**\n * Returns true if this object has been modified since its last\n * save/refresh. If an attribute is specified, it returns true only if that\n * particular attribute has been modified since the last save/refresh.\n * @param {String} attr An attribute name (optional).\n * @return {Boolean}\n */\n dirty: function(attr) {\n this._refreshCache();\n\n var currentChanges = _.last(this._opSetQueue);\n\n if (attr) {\n return currentChanges[attr] ? true : false;\n }\n if (!this.id) {\n return true;\n }\n if (_.keys(currentChanges).length > 0) {\n return true;\n }\n return false;\n },\n\n /**\n * Returns the keys of the modified attribute since its last save/refresh.\n * @return {String[]}\n */\n dirtyKeys: function() {\n this._refreshCache();\n var currentChanges = _.last(this._opSetQueue);\n return _.keys(currentChanges);\n },\n\n /**\n * Gets a Pointer referencing this Object.\n * @private\n */\n _toPointer: function() {\n // if (!this.id) {\n // throw new Error(\"Can't serialize an unsaved AV.Object\");\n // }\n return {\n __type: 'Pointer',\n className: this.className,\n objectId: this.id,\n };\n },\n\n /**\n * Gets the value of an attribute.\n * @param {String} attr The string name of an attribute.\n */\n get: function(attr) {\n switch (attr) {\n case 'objectId':\n return this.id;\n case 'createdAt':\n case 'updatedAt':\n return this[attr];\n default:\n return this.attributes[attr];\n }\n },\n\n /**\n * Gets a relation on the given class for the attribute.\n * @param {String} attr The attribute to get the relation for.\n * @return {AV.Relation}\n */\n relation: function(attr) {\n var value = this.get(attr);\n if (value) {\n if (!(value instanceof AV.Relation)) {\n throw new Error('Called relation() on non-relation field ' + attr);\n }\n value._ensureParentAndKey(this, attr);\n return value;\n } else {\n return new AV.Relation(this, attr);\n }\n },\n\n /**\n * Gets the HTML-escaped value of an attribute.\n */\n escape: function(attr) {\n var html = this._escapedAttributes[attr];\n if (html) {\n return html;\n }\n var val = this.attributes[attr];\n var escaped;\n if (isNullOrUndefined(val)) {\n escaped = '';\n } else {\n escaped = _.escape(val.toString());\n }\n this._escapedAttributes[attr] = escaped;\n return escaped;\n },\n\n /**\n * Returns <code>true</code> if the attribute contains a value that is not\n * null or undefined.\n * @param {String} attr The string name of the attribute.\n * @return {Boolean}\n */\n has: function(attr) {\n return !isNullOrUndefined(this.attributes[attr]);\n },\n\n /**\n * Pulls \"special\" fields like objectId, createdAt, etc. out of attrs\n * and puts them on \"this\" directly. Removes them from attrs.\n * @param attrs - A dictionary with the data for this AV.Object.\n * @private\n */\n _mergeMagicFields: function(attrs) {\n // Check for changes of magic fields.\n var model = this;\n var specialFields = ['objectId', 'createdAt', 'updatedAt'];\n AV._arrayEach(specialFields, function(attr) {\n if (attrs[attr]) {\n if (attr === 'objectId') {\n model.id = attrs[attr];\n } else if (\n (attr === 'createdAt' || attr === 'updatedAt') &&\n !_.isDate(attrs[attr])\n ) {\n model[attr] = AV._parseDate(attrs[attr]);\n } else {\n model[attr] = attrs[attr];\n }\n delete attrs[attr];\n }\n });\n return attrs;\n },\n\n /**\n * Returns the json to be sent to the server.\n * @private\n */\n _startSave: function() {\n this._opSetQueue.push({});\n },\n\n /**\n * Called when a save fails because of an error. Any changes that were part\n * of the save need to be merged with changes made after the save. This\n * might throw an exception is you do conflicting operations. For example,\n * if you do:\n * object.set(\"foo\", \"bar\");\n * object.set(\"invalid field name\", \"baz\");\n * object.save();\n * object.increment(\"foo\");\n * then this will throw when the save fails and the client tries to merge\n * \"bar\" with the +1.\n * @private\n */\n _cancelSave: function() {\n var failedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n var nextChanges = _.first(this._opSetQueue);\n AV._objectEach(failedChanges, function(op, key) {\n var op1 = failedChanges[key];\n var op2 = nextChanges[key];\n if (op1 && op2) {\n nextChanges[key] = op2._mergeWithPrevious(op1);\n } else if (op1) {\n nextChanges[key] = op1;\n }\n });\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a save completes successfully. This merges the changes that\n * were saved into the known server data, and overrides it with any data\n * sent directly from the server.\n * @private\n */\n _finishSave: function(serverData) {\n // Grab a copy of any object referenced by this object. These instances\n // may have already been fetched, and we don't want to lose their data.\n // Note that doing it like this means we will unify separate copies of the\n // same object, but that's a risk we have to take.\n var fetchedObjects = {};\n AV._traverse(this.attributes, function(object) {\n if (object instanceof AV.Object && object.id && object._hasData) {\n fetchedObjects[object.id] = object;\n }\n });\n\n var savedChanges = _.first(this._opSetQueue);\n this._opSetQueue = _.rest(this._opSetQueue);\n this._applyOpSet(savedChanges, this._serverData);\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function(value, key) {\n self._serverData[key] = AV._decode(value, key);\n\n // Look for any objects that might have become unfetched and fix them\n // by replacing their values with the previously observed values.\n var fetched = AV._traverse(self._serverData[key], function(object) {\n if (object instanceof AV.Object && fetchedObjects[object.id]) {\n return fetchedObjects[object.id];\n }\n });\n if (fetched) {\n self._serverData[key] = fetched;\n }\n });\n this._rebuildAllEstimatedData();\n const opSetQueue = this._opSetQueue.map(_.clone);\n this._refreshCache();\n this._opSetQueue = opSetQueue;\n this._saving = this._saving - 1;\n },\n\n /**\n * Called when a fetch or login is complete to set the known server data to\n * the given object.\n * @private\n */\n _finishFetch: function(serverData, hasData) {\n // Clear out any changes the user might have made previously.\n this._opSetQueue = [{}];\n\n // Bring in all the new server data.\n this._mergeMagicFields(serverData);\n var self = this;\n AV._objectEach(serverData, function(value, key) {\n self._serverData[key] = AV._decode(value, key);\n });\n\n // Refresh the attributes.\n this._rebuildAllEstimatedData();\n\n // Clear out the cache of mutable containers.\n this._refreshCache();\n this._opSetQueue = [{}];\n\n this._hasData = hasData;\n },\n\n /**\n * Applies the set of AV.Op in opSet to the object target.\n * @private\n */\n _applyOpSet: function(opSet, target) {\n var self = this;\n AV._objectEach(opSet, function(change, key) {\n const [value, actualTarget, actualKey] = findValue(target, key);\n setValue(target, key, change._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n });\n },\n\n /**\n * Replaces the cached value for key with the current value.\n * Returns true if the new value is different than the old value.\n * @private\n */\n _resetCacheForKey: function(key) {\n var value = this.attributes[key];\n if (\n _.isObject(value) &&\n !(value instanceof AV.Object) &&\n !(value instanceof AV.File)\n ) {\n var json = JSON.stringify(recursiveToPointer(value));\n if (this._hashedJSON[key] !== json) {\n var wasSet = !!this._hashedJSON[key];\n this._hashedJSON[key] = json;\n return wasSet;\n }\n }\n return false;\n },\n\n /**\n * Populates attributes[key] by starting with the last known data from the\n * server, and applying all of the local changes that have been made to that\n * key since then.\n * @private\n */\n _rebuildEstimatedDataForKey: function(key) {\n var self = this;\n delete this.attributes[key];\n if (this._serverData[key]) {\n this.attributes[key] = this._serverData[key];\n }\n AV._arrayEach(this._opSetQueue, function(opSet) {\n var op = opSet[key];\n if (op) {\n const [value, actualTarget, actualKey, firstKey] = findValue(\n self.attributes,\n key\n );\n setValue(self.attributes, key, op._estimate(value, self, key));\n if (actualTarget && actualTarget[actualKey] === AV.Op._UNSET) {\n delete actualTarget[actualKey];\n }\n self._resetCacheForKey(firstKey);\n }\n });\n },\n\n /**\n * Populates attributes by starting with the last known data from the\n * server, and applying all of the local changes that have been made since\n * then.\n * @private\n */\n _rebuildAllEstimatedData: function() {\n var self = this;\n\n var previousAttributes = _.clone(this.attributes);\n\n this.attributes = _.clone(this._serverData);\n AV._arrayEach(this._opSetQueue, function(opSet) {\n self._applyOpSet(opSet, self.attributes);\n AV._objectEach(opSet, function(op, key) {\n self._resetCacheForKey(key);\n });\n });\n\n // Trigger change events for anything that changed because of the fetch.\n AV._objectEach(previousAttributes, function(oldValue, key) {\n if (self.attributes[key] !== oldValue) {\n self.trigger('change:' + key, self, self.attributes[key], {});\n }\n });\n AV._objectEach(this.attributes, function(newValue, key) {\n if (!_.has(previousAttributes, key)) {\n self.trigger('change:' + key, self, newValue, {});\n }\n });\n },\n\n /**\n * Sets a hash of model attributes on the object, firing\n * <code>\"change\"</code> unless you choose to silence it.\n *\n * <p>You can call it with an object containing keys and values, or with one\n * key and value. For example:</p>\n *\n * @example\n * gameTurn.set({\n * player: player1,\n * diceRoll: 2\n * });\n *\n * game.set(\"currentPlayer\", player2);\n *\n * game.set(\"finished\", true);\n *\n * @param {String} key The key to set.\n * @param {Any} value The value to give it.\n * @param {Object} [options]\n * @param {Boolean} [options.silent]\n * @return {AV.Object} self if succeeded, throws if the value is not valid.\n * @see AV.Object#validate\n */\n set: function(key, value, options) {\n var attrs;\n if (_.isObject(key) || isNullOrUndefined(key)) {\n attrs = _.mapObject(key, function(v, k) {\n checkReservedKey(k);\n return AV._decode(v, k);\n });\n options = value;\n } else {\n attrs = {};\n checkReservedKey(key);\n attrs[key] = AV._decode(value, key);\n }\n\n // Extract attributes and options.\n options = options || {};\n if (!attrs) {\n return this;\n }\n if (attrs instanceof AV.Object) {\n attrs = attrs.attributes;\n }\n\n // If the unset option is used, every attribute should be a Unset.\n if (options.unset) {\n AV._objectEach(attrs, function(unused_value, key) {\n attrs[key] = new AV.Op.Unset();\n });\n }\n\n // Apply all the attributes to get the estimated values.\n var dataToValidate = _.clone(attrs);\n var self = this;\n AV._objectEach(dataToValidate, function(value, key) {\n if (value instanceof AV.Op) {\n dataToValidate[key] = value._estimate(\n self.attributes[key],\n self,\n key\n );\n if (dataToValidate[key] === AV.Op._UNSET) {\n delete dataToValidate[key];\n }\n }\n });\n\n // Run validation.\n this._validate(attrs, options);\n\n options.changes = {};\n var escaped = this._escapedAttributes;\n\n // Update attributes.\n AV._arrayEach(_.keys(attrs), function(attr) {\n var val = attrs[attr];\n\n // If this is a relation object we need to set the parent correctly,\n // since the location where it was parsed does not have access to\n // this object.\n if (val instanceof AV.Relation) {\n val.parent = self;\n }\n\n if (!(val instanceof AV.Op)) {\n val = new AV.Op.Set(val);\n }\n\n // See if this change will actually have any effect.\n var isRealChange = true;\n if (\n val instanceof AV.Op.Set &&\n _.isEqual(self.attributes[attr], val.value)\n ) {\n isRealChange = false;\n }\n\n if (isRealChange) {\n delete escaped[attr];\n if (options.silent) {\n self._silent[attr] = true;\n } else {\n options.changes[attr] = true;\n }\n }\n\n var currentChanges = _.last(self._opSetQueue);\n currentChanges[attr] = val._mergeWithPrevious(currentChanges[attr]);\n self._rebuildEstimatedDataForKey(attr);\n\n if (isRealChange) {\n self.changed[attr] = self.attributes[attr];\n if (!options.silent) {\n self._pending[attr] = true;\n }\n } else {\n delete self.changed[attr];\n delete self._pending[attr];\n }\n });\n\n if (!options.silent) {\n this.change(options);\n }\n return this;\n },\n\n /**\n * Remove an attribute from the model, firing <code>\"change\"</code> unless\n * you choose to silence it. This is a noop if the attribute doesn't\n * exist.\n * @param key {String} The key.\n */\n unset: function(attr, options) {\n options = options || {};\n options.unset = true;\n return this.set(attr, null, options);\n },\n\n /**\n * Atomically increments the value of the given attribute the next time the\n * object is saved. If no amount is specified, 1 is used by default.\n *\n * @param key {String} The key.\n * @param amount {Number} The amount to increment by.\n */\n increment: function(attr, amount) {\n if (_.isUndefined(amount) || _.isNull(amount)) {\n amount = 1;\n }\n return this.set(attr, new AV.Op.Increment(amount));\n },\n\n /**\n * Atomically add an object to the end of the array associated with a given\n * key.\n * @param key {String} The key.\n * @param item {} The item to add.\n */\n add: function(attr, item) {\n return this.set(attr, new AV.Op.Add(ensureArray(item)));\n },\n\n /**\n * Atomically add an object to the array associated with a given key, only\n * if it is not already present in the array. The position of the insert is\n * not guaranteed.\n *\n * @param key {String} The key.\n * @param item {} The object to add.\n */\n addUnique: function(attr, item) {\n return this.set(attr, new AV.Op.AddUnique(ensureArray(item)));\n },\n\n /**\n * Atomically remove all instances of an object from the array associated\n * with a given key.\n *\n * @param key {String} The key.\n * @param item {} The object to remove.\n */\n remove: function(attr, item) {\n return this.set(attr, new AV.Op.Remove(ensureArray(item)));\n },\n\n /**\n * Atomically apply a \"bit and\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitAnd(attr, value) {\n return this.set(attr, new AV.Op.BitAnd(value));\n },\n\n /**\n * Atomically apply a \"bit or\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitOr(attr, value) {\n return this.set(attr, new AV.Op.BitOr(value));\n },\n\n /**\n * Atomically apply a \"bit xor\" operation on the value associated with a\n * given key.\n *\n * @param key {String} The key.\n * @param value {Number} The value to apply.\n */\n bitXor(attr, value) {\n return this.set(attr, new AV.Op.BitXor(value));\n },\n\n /**\n * Returns an instance of a subclass of AV.Op describing what kind of\n * modification has been performed on this field since the last time it was\n * saved. For example, after calling object.increment(\"x\"), calling\n * object.op(\"x\") would return an instance of AV.Op.Increment.\n *\n * @param key {String} The key.\n * @returns {AV.Op} The operation, or undefined if none.\n */\n op: function(attr) {\n return _.last(this._opSetQueue)[attr];\n },\n\n /**\n * Clear all attributes on the model, firing <code>\"change\"</code> unless\n * you choose to silence it.\n */\n clear: function(options) {\n options = options || {};\n options.unset = true;\n var keysToClear = _.extend(this.attributes, this._operations);\n return this.set(keysToClear, options);\n },\n\n /**\n * Clears any (or specific) changes to the model made since the last save.\n * @param {string|string[]} [keys] specify keys to revert.\n */\n revert(keys) {\n const lastOp = _.last(this._opSetQueue);\n const _keys = ensureArray(keys || _.keys(lastOp));\n _keys.forEach(key => {\n delete lastOp[key];\n });\n this._rebuildAllEstimatedData();\n return this;\n },\n\n /**\n * Returns a JSON-encoded set of operations to be sent with the next save\n * request.\n * @private\n */\n _getSaveJSON: function() {\n var json = _.clone(_.first(this._opSetQueue));\n AV._objectEach(json, function(op, key) {\n json[key] = op.toJSON();\n });\n return json;\n },\n\n /**\n * Returns true if this object can be serialized for saving.\n * @private\n */\n _canBeSerialized: function() {\n return AV.Object._canBeSerializedAsValue(this.attributes);\n },\n\n /**\n * Fetch the model from the server. If the server's representation of the\n * model differs from its current attributes, they will be overriden,\n * triggering a <code>\"change\"</code> event.\n * @param {Object} fetchOptions Optional options to set 'keys',\n * 'include' and 'includeACL' option.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the fetch\n * completes.\n */\n fetch: function(fetchOptions = {}, options) {\n if (!this.id) {\n throw new Error('Cannot fetch unsaved object');\n }\n var self = this;\n var request = _request(\n 'classes',\n this.className,\n this.id,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n );\n return request.then(function(response) {\n const fetchedAttrs = self.parse(response);\n self._cleanupUnsetKeys(\n fetchedAttrs,\n fetchOptions.keys\n ? ensureArray(fetchOptions.keys)\n .join(',')\n .split(',')\n : undefined\n );\n self._finishFetch(fetchedAttrs, true);\n return self;\n });\n },\n\n _cleanupUnsetKeys(fetchedAttrs, fetchedKeys = _.keys(this._serverData)) {\n _.forEach(fetchedKeys, key => {\n if (fetchedAttrs[key] === undefined) delete this._serverData[key];\n });\n },\n\n /**\n * Set a hash of model attributes, and save the model to the server.\n * updatedAt will be updated when the request returns.\n * You can either call it as:<pre>\n * object.save();</pre>\n * or<pre>\n * object.save(null, options);</pre>\n * or<pre>\n * object.save(attrs, options);</pre>\n * or<pre>\n * object.save(key, value, options);</pre>\n *\n * @example\n * gameTurn.save({\n * player: \"Jake Cutter\",\n * diceRoll: 2\n * }).then(function(gameTurnAgain) {\n * // The save was successful.\n * }, function(error) {\n * // The save failed. Error is an instance of AVError.\n * });\n *\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} options.fetchWhenSave fetch and update object after save succeeded\n * @param {AV.Query} options.query Save object only when it matches the query\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n * @see AVError\n */\n save: function(arg1, arg2, arg3) {\n var attrs, current, options;\n if (_.isObject(arg1) || isNullOrUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n\n options = _.clone(options) || {};\n if (options.wait) {\n current = _.clone(this.attributes);\n }\n\n var setOptions = _.clone(options) || {};\n if (setOptions.wait) {\n setOptions.silent = true;\n }\n if (attrs) {\n this.set(attrs, setOptions);\n }\n\n var model = this;\n\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(model, unsavedChildren, unsavedFiles);\n if (unsavedChildren.length + unsavedFiles.length > 1) {\n return AV.Object._deepSaveAsync(this, model, options);\n }\n\n this._startSave();\n this._saving = (this._saving || 0) + 1;\n\n this._allPreviousSaves = this._allPreviousSaves || Promise.resolve();\n this._allPreviousSaves = this._allPreviousSaves\n .catch(e => {})\n .then(function() {\n var method = model.id ? 'PUT' : 'POST';\n\n var json = model._getSaveJSON();\n var query = {};\n\n if (model._fetchWhenSave || options.fetchWhenSave) {\n query['new'] = 'true';\n }\n // user login option\n if (options._failOnNotExist) {\n query.failOnNotExist = 'true';\n }\n\n if (options.query) {\n var queryParams;\n if (typeof options.query._getParams === 'function') {\n queryParams = options.query._getParams();\n if (queryParams) {\n query.where = queryParams.where;\n }\n }\n if (!query.where) {\n var error = new Error('options.query is not an AV.Query');\n throw error;\n }\n }\n\n _.extend(json, model._flags);\n\n var route = 'classes';\n var className = model.className;\n if (model.className === '_User' && !model.id) {\n // Special-case user sign-up.\n route = 'users';\n className = null;\n }\n //hook makeRequest in options.\n var makeRequest = options._makeRequest || _request;\n var requestPromise = makeRequest(\n route,\n className,\n model.id,\n method,\n json,\n options,\n query\n );\n\n requestPromise = requestPromise.then(\n function(resp) {\n var serverAttrs = model.parse(resp);\n if (options.wait) {\n serverAttrs = _.extend(attrs || {}, serverAttrs);\n }\n model._finishSave(serverAttrs);\n if (options.wait) {\n model.set(current, setOptions);\n }\n return model;\n },\n function(error) {\n model._cancelSave();\n throw error;\n }\n );\n\n return requestPromise;\n });\n return this._allPreviousSaves;\n },\n\n /**\n * Destroy this model on the server if it was already persisted.\n * Optimistically removes the model from its collection, if it has one.\n * @param {AuthOptions} options AuthOptions plus:\n * @param {Boolean} [options.wait] wait for the server to respond\n * before removal.\n *\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function(options) {\n options = options || {};\n var model = this;\n\n var triggerDestroy = function() {\n model.trigger('destroy', model, model.collection, options);\n };\n\n if (!this.id) {\n return triggerDestroy();\n }\n\n if (!options.wait) {\n triggerDestroy();\n }\n\n var request = _request(\n 'classes',\n this.className,\n this.id,\n 'DELETE',\n this._flags,\n options\n );\n return request.then(function() {\n if (options.wait) {\n triggerDestroy();\n }\n return model;\n });\n },\n\n /**\n * Converts a response into the hash of attributes to be set on the model.\n * @ignore\n */\n parse: function(resp) {\n var output = _.clone(resp);\n ['createdAt', 'updatedAt'].forEach(function(key) {\n if (output[key]) {\n output[key] = AV._parseDate(output[key]);\n }\n });\n if (output.createdAt && !output.updatedAt) {\n output.updatedAt = output.createdAt;\n }\n return output;\n },\n\n /**\n * Creates a new model with identical attributes to this one.\n * @return {AV.Object}\n */\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n /**\n * Returns true if this object has never been saved to AV.\n * @return {Boolean}\n */\n isNew: function() {\n return !this.id;\n },\n\n /**\n * Call this method to manually fire a `\"change\"` event for this model and\n * a `\"change:attribute\"` event for each changed attribute.\n * Calling this will cause all objects observing the model to update.\n */\n change: function(options) {\n options = options || {};\n var changing = this._changing;\n this._changing = true;\n\n // Silent changes become pending changes.\n var self = this;\n AV._objectEach(this._silent, function(attr) {\n self._pending[attr] = true;\n });\n\n // Silent changes are triggered.\n var changes = _.extend({}, options.changes, this._silent);\n this._silent = {};\n AV._objectEach(changes, function(unused_value, attr) {\n self.trigger('change:' + attr, self, self.get(attr), options);\n });\n if (changing) {\n return this;\n }\n\n // This is to get around lint not letting us make a function in a loop.\n var deleteChanged = function(value, attr) {\n if (!self._pending[attr] && !self._silent[attr]) {\n delete self.changed[attr];\n }\n };\n\n // Continue firing `\"change\"` events while there are pending changes.\n while (!_.isEmpty(this._pending)) {\n this._pending = {};\n this.trigger('change', this, options);\n // Pending and silent changes still remain.\n AV._objectEach(this.changed, deleteChanged);\n self._previousAttributes = _.clone(this.attributes);\n }\n\n this._changing = false;\n return this;\n },\n\n /**\n * Gets the previous value of an attribute, recorded at the time the last\n * <code>\"change\"</code> event was fired.\n * @param {String} attr Name of the attribute to get.\n */\n previous: function(attr) {\n if (!arguments.length || !this._previousAttributes) {\n return null;\n }\n return this._previousAttributes[attr];\n },\n\n /**\n * Gets all of the attributes of the model at the time of the previous\n * <code>\"change\"</code> event.\n * @return {Object}\n */\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n /**\n * Checks if the model is currently in a valid state. It's only possible to\n * get into an *invalid* state if you're using silent changes.\n * @return {Boolean}\n */\n isValid: function() {\n try {\n this.validate(this.attributes);\n } catch (error) {\n return false;\n }\n return true;\n },\n\n /**\n * You should not call this function directly unless you subclass\n * <code>AV.Object</code>, in which case you can override this method\n * to provide additional validation on <code>set</code> and\n * <code>save</code>. Your implementation should throw an Error if\n * the attrs is invalid\n *\n * @param {Object} attrs The current data to validate.\n * @see AV.Object#set\n */\n validate: function(attrs) {\n if (_.has(attrs, 'ACL') && !(attrs.ACL instanceof AV.ACL)) {\n throw new AVError(AVError.OTHER_CAUSE, 'ACL must be a AV.ACL.');\n }\n },\n\n /**\n * Run validation against a set of incoming attributes, returning `true`\n * if all is well. If a specific `error` callback has been passed,\n * call that instead of firing the general `\"error\"` event.\n * @private\n */\n _validate: function(attrs, options) {\n if (options.silent || !this.validate) {\n return;\n }\n attrs = _.extend({}, this.attributes, attrs);\n this.validate(attrs);\n },\n\n /**\n * Returns the ACL for this object.\n * @returns {AV.ACL} An instance of AV.ACL.\n * @see AV.Object#get\n */\n getACL: function() {\n return this.get('ACL');\n },\n\n /**\n * Sets the ACL to be used for this object.\n * @param {AV.ACL} acl An instance of AV.ACL.\n * @param {Object} options Optional Backbone-like options object to be\n * passed in to set.\n * @return {AV.Object} self\n * @see AV.Object#set\n */\n setACL: function(acl, options) {\n return this.set('ACL', acl, options);\n },\n\n disableBeforeHook: function() {\n this.ignoreHook('beforeSave');\n this.ignoreHook('beforeUpdate');\n this.ignoreHook('beforeDelete');\n },\n\n disableAfterHook: function() {\n this.ignoreHook('afterSave');\n this.ignoreHook('afterUpdate');\n this.ignoreHook('afterDelete');\n },\n\n ignoreHook: function(hookName) {\n if (\n !_.contains(\n [\n 'beforeSave',\n 'afterSave',\n 'beforeUpdate',\n 'afterUpdate',\n 'beforeDelete',\n 'afterDelete',\n ],\n hookName\n )\n ) {\n throw new Error('Unsupported hookName: ' + hookName);\n }\n\n if (!AV.hookKey) {\n throw new Error('ignoreHook required hookKey');\n }\n\n if (!this._flags.__ignore_hooks) {\n this._flags.__ignore_hooks = [];\n }\n\n this._flags.__ignore_hooks.push(hookName);\n },\n }\n );\n\n /**\n * Creates an instance of a subclass of AV.Object for the give classname\n * and id.\n * @param {String|Function} class the className or a subclass of AV.Object.\n * @param {String} id The object id of this model.\n * @return {AV.Object} A new subclass instance of AV.Object.\n */\n AV.Object.createWithoutData = (klass, id, hasData) => {\n let _klass;\n if (_.isString(klass)) {\n _klass = AV.Object._getSubclass(klass);\n } else if (klass.prototype && klass.prototype instanceof AV.Object) {\n _klass = klass;\n } else {\n throw new Error('class must be a string or a subclass of AV.Object.');\n }\n if (!id) {\n throw new TypeError('The objectId must be provided');\n }\n const object = new _klass();\n object.id = id;\n object._hasData = hasData;\n return object;\n };\n /**\n * Delete objects in batch.\n * @param {AV.Object[]} objects The <code>AV.Object</code> array to be deleted.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n AV.Object.destroyAll = function(objects, options = {}) {\n if (!objects || objects.length === 0) {\n return Promise.resolve();\n }\n const objectsByClassNameAndFlags = _.groupBy(objects, object =>\n JSON.stringify({\n className: object.className,\n flags: object._flags,\n })\n );\n const body = {\n requests: _.map(objectsByClassNameAndFlags, objects => {\n const ids = _.map(objects, 'id').join(',');\n return {\n method: 'DELETE',\n path: `/1.1/classes/${objects[0].className}/${ids}`,\n body: objects[0]._flags,\n };\n }),\n };\n return _request('batch', null, null, 'POST', body, options).then(\n response => {\n const firstError = _.find(response, result => !result.success);\n if (firstError)\n throw new AVError(firstError.error.code, firstError.error.error);\n return undefined;\n }\n );\n };\n\n /**\n * Returns the appropriate subclass for making new instances of the given\n * className string.\n * @private\n */\n AV.Object._getSubclass = function(className) {\n if (!_.isString(className)) {\n throw new Error('AV.Object._getSubclass requires a string argument.');\n }\n var ObjectClass = AV.Object._classMap[className];\n if (!ObjectClass) {\n ObjectClass = AV.Object.extend(className);\n AV.Object._classMap[className] = ObjectClass;\n }\n return ObjectClass;\n };\n\n /**\n * Creates an instance of a subclass of AV.Object for the given classname.\n * @private\n */\n AV.Object._create = function(className, attributes, options) {\n var ObjectClass = AV.Object._getSubclass(className);\n return new ObjectClass(attributes, options);\n };\n\n // Set up a map of className to class so that we can create new instances of\n // AV Objects from JSON automatically.\n AV.Object._classMap = {};\n\n AV.Object._extend = AV._extend;\n\n /**\n * Creates a new model with defined attributes,\n * It's the same with\n * <pre>\n * new AV.Object(attributes, options);\n * </pre>\n * @param {Object} attributes The initial set of data to store in the object.\n * @param {Object} options A set of Backbone-like options for creating the\n * object. The only option currently supported is \"collection\".\n * @return {AV.Object}\n * @since v0.4.4\n * @see AV.Object\n * @see AV.Object.extend\n */\n AV.Object['new'] = function(attributes, options) {\n return new AV.Object(attributes, options);\n };\n\n /**\n * Creates a new subclass of AV.Object for the given AV class name.\n *\n * <p>Every extension of a AV class will inherit from the most recent\n * previous extension of that class. When a AV.Object is automatically\n * created by parsing JSON, it will use the most recent extension of that\n * class.</p>\n *\n * @example\n * var MyClass = AV.Object.extend(\"MyClass\", {\n * // Instance properties\n * }, {\n * // Class properties\n * });\n *\n * @param {String} className The name of the AV class backing this model.\n * @param {Object} protoProps Instance properties to add to instances of the\n * class returned from this method.\n * @param {Object} classProps Class properties to add the class returned from\n * this method.\n * @return {Class} A new subclass of AV.Object.\n */\n AV.Object.extend = function(className, protoProps, classProps) {\n // Handle the case with only two args.\n if (!_.isString(className)) {\n if (className && _.has(className, 'className')) {\n return AV.Object.extend(className.className, className, protoProps);\n } else {\n throw new Error(\n \"AV.Object.extend's first argument should be the className.\"\n );\n }\n }\n\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n className = '_User';\n }\n\n var NewClassObject = null;\n if (_.has(AV.Object._classMap, className)) {\n var OldClassObject = AV.Object._classMap[className];\n // This new subclass has been told to extend both from \"this\" and from\n // OldClassObject. This is multiple inheritance, which isn't supported.\n // For now, let's just pick one.\n if (protoProps || classProps) {\n NewClassObject = OldClassObject._extend(protoProps, classProps);\n } else {\n return OldClassObject;\n }\n } else {\n protoProps = protoProps || {};\n protoProps._className = className;\n NewClassObject = this._extend(protoProps, classProps);\n }\n // Extending a subclass should reuse the classname automatically.\n NewClassObject.extend = function(arg0) {\n if (_.isString(arg0) || (arg0 && _.has(arg0, 'className'))) {\n return AV.Object.extend.apply(NewClassObject, arguments);\n }\n var newArguments = [className].concat(_.toArray(arguments));\n return AV.Object.extend.apply(NewClassObject, newArguments);\n };\n // Add the query property descriptor.\n Object.defineProperty(\n NewClassObject,\n 'query',\n Object.getOwnPropertyDescriptor(AV.Object, 'query')\n );\n NewClassObject['new'] = function(attributes, options) {\n return new NewClassObject(attributes, options);\n };\n AV.Object._classMap[className] = NewClassObject;\n return NewClassObject;\n };\n\n // ES6 class syntax support\n Object.defineProperty(AV.Object.prototype, 'className', {\n get: function() {\n const className =\n this._className ||\n this.constructor._LCClassName ||\n this.constructor.name;\n // If someone tries to subclass \"User\", coerce it to the right type.\n if (className === 'User') {\n return '_User';\n }\n return className;\n },\n });\n\n /**\n * Register a class.\n * If a subclass of <code>AV.Object</code> is defined with your own implement\n * rather then <code>AV.Object.extend</code>, the subclass must be registered.\n * @param {Function} klass A subclass of <code>AV.Object</code>\n * @param {String} [name] Specify the name of the class. Useful when the class might be uglified.\n * @example\n * class Person extend AV.Object {}\n * AV.Object.register(Person);\n */\n AV.Object.register = (klass, name) => {\n if (!(klass.prototype instanceof AV.Object)) {\n throw new Error('registered class is not a subclass of AV.Object');\n }\n const className = name || klass.name;\n if (!className.length) {\n throw new Error('registered class must be named');\n }\n if (name) {\n klass._LCClassName = name;\n }\n AV.Object._classMap[className] = klass;\n };\n\n /**\n * Get a new Query of the current class\n * @name query\n * @memberof AV.Object\n * @type AV.Query\n * @readonly\n * @since v3.1.0\n * @example\n * const Post = AV.Object.extend('Post');\n * Post.query.equalTo('author', 'leancloud').find().then();\n */\n Object.defineProperty(AV.Object, 'query', {\n get() {\n return new AV.Query(this.prototype.className);\n },\n });\n\n AV.Object._findUnsavedChildren = function(objects, children, files) {\n AV._traverse(objects, function(object) {\n if (object instanceof AV.Object) {\n if (object.dirty()) {\n children.push(object);\n }\n return;\n }\n\n if (object instanceof AV.File) {\n if (!object.id) {\n files.push(object);\n }\n return;\n }\n });\n };\n\n AV.Object._canBeSerializedAsValue = function(object) {\n var canBeSerializedAsValue = true;\n\n if (object instanceof AV.Object || object instanceof AV.File) {\n canBeSerializedAsValue = !!object.id;\n } else if (_.isArray(object)) {\n AV._arrayEach(object, function(child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n } else if (_.isObject(object)) {\n AV._objectEach(object, function(child) {\n if (!AV.Object._canBeSerializedAsValue(child)) {\n canBeSerializedAsValue = false;\n }\n });\n }\n\n return canBeSerializedAsValue;\n };\n\n AV.Object._deepSaveAsync = function(object, model, options) {\n var unsavedChildren = [];\n var unsavedFiles = [];\n AV.Object._findUnsavedChildren(object, unsavedChildren, unsavedFiles);\n\n unsavedFiles = _.uniq(unsavedFiles);\n\n var promise = Promise.resolve();\n _.each(unsavedFiles, function(file) {\n promise = promise.then(function() {\n return file.save();\n });\n });\n\n var objects = _.uniq(unsavedChildren);\n var remaining = _.uniq(objects);\n\n return promise\n .then(function() {\n return continueWhile(\n function() {\n return remaining.length > 0;\n },\n function() {\n // Gather up all the objects that can be saved in this batch.\n var batch = [];\n var newRemaining = [];\n AV._arrayEach(remaining, function(object) {\n if (object._canBeSerialized()) {\n batch.push(object);\n } else {\n newRemaining.push(object);\n }\n });\n remaining = newRemaining;\n\n // If we can't save any objects, there must be a circular reference.\n if (batch.length === 0) {\n return Promise.reject(\n new AVError(\n AVError.OTHER_CAUSE,\n 'Tried to save a batch with a cycle.'\n )\n );\n }\n\n // Reserve a spot in every object's save queue.\n var readyToStart = Promise.resolve(\n _.map(batch, function(object) {\n return object._allPreviousSaves || Promise.resolve();\n })\n );\n\n // Save a single batch, whether previous saves succeeded or failed.\n const bathSavePromise = readyToStart.then(() =>\n _request(\n 'batch',\n null,\n null,\n 'POST',\n {\n requests: _.map(batch, function(object) {\n var method = object.id ? 'PUT' : 'POST';\n\n var json = object._getSaveJSON();\n\n _.extend(json, object._flags);\n\n var route = 'classes';\n var className = object.className;\n var path = `/${route}/${className}`;\n if (object.className === '_User' && !object.id) {\n // Special-case user sign-up.\n path = '/users';\n }\n\n var path = `/1.1${path}`;\n if (object.id) {\n path = path + '/' + object.id;\n }\n\n object._startSave();\n\n return {\n method: method,\n path: path,\n body: json,\n params:\n options && options.fetchWhenSave\n ? { fetchWhenSave: true }\n : undefined,\n };\n }),\n },\n options\n ).then(function(response) {\n const results = _.map(batch, function(object, i) {\n if (response[i].success) {\n object._finishSave(object.parse(response[i].success));\n return object;\n }\n object._cancelSave();\n return new AVError(\n response[i].error.code,\n response[i].error.error\n );\n });\n return handleBatchResults(results);\n })\n );\n AV._arrayEach(batch, function(object) {\n object._allPreviousSaves = bathSavePromise;\n });\n return bathSavePromise;\n }\n );\n })\n .then(function() {\n return object;\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/object.js","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/slicedToArray.js\n// module id = 531\n// module chunks = 0 1","var _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayWithHoles.js\n// module id = 532\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/is-array\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/is-array.js\n// module id = 533\n// module chunks = 0 1","module.exports = require('../../full/array/is-array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/is-array.js\n// module id = 534\n// module chunks = 0 1","var parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/is-array.js\n// module id = 535\n// module chunks = 0 1","var parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/is-array.js\n// module id = 536\n// module chunks = 0 1","var parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/array/is-array.js\n// module id = 537\n// module chunks = 0 1","require('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/is-array.js\n// module id = 538\n// module chunks = 0 1","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.is-array.js\n// module id = 539\n// module chunks = 0 1","var _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/iterableToArrayLimit.js\n// module id = 540\n// module chunks = 0 1","var _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n var _context;\n\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/unsupportedIterableToArray.js\n// module id = 541\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/instance/slice\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js\n// module id = 542\n// module chunks = 0 1","module.exports = require('../../full/instance/slice');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/instance/slice.js\n// module id = 543\n// module chunks = 0 1","var parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/instance/slice.js\n// module id = 544\n// module chunks = 0 1","var parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/instance/slice.js\n// module id = 545\n// module chunks = 0 1","module.exports = require(\"core-js-pure/features/array/from\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/array/from.js\n// module id = 546\n// module chunks = 0 1","module.exports = require('../../full/array/from');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/array/from.js\n// module id = 547\n// module chunks = 0 1","var parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/array/from.js\n// module id = 548\n// module chunks = 0 1","var parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/array/from.js\n// module id = 549\n// module chunks = 0 1","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/arrayLikeToArray.js\n// module id = 550\n// module chunks = 0 1","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/nonIterableRest.js\n// module id = 551\n// module chunks = 0 1","var parent = require('../../es/object/get-own-property-descriptor');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js\n// module id = 552\n// module chunks = 0 1","require('../../modules/es.object.get-own-property-descriptor');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {\n return Object.getOwnPropertyDescriptor(it, key);\n};\n\nif (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js\n// module id = 553\n// module chunks = 0 1","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js\n// module id = 554\n// module chunks = 0 1","const _ = require('underscore');\nconst AVError = require('./error');\n\nmodule.exports = function(AV) {\n AV.Role = AV.Object.extend(\n '_Role',\n /** @lends AV.Role.prototype */ {\n // Instance Methods\n\n /**\n * Represents a Role on the AV server. Roles represent groupings of\n * Users for the purposes of granting permissions (e.g. specifying an ACL\n * for an Object). Roles are specified by their sets of child users and\n * child roles, all of which are granted any permissions that the parent\n * role has.\n *\n * <p>Roles must have a name (which cannot be changed after creation of the\n * role), and must specify an ACL.</p>\n * An AV.Role is a local representation of a role persisted to the AV\n * cloud.\n * @class AV.Role\n * @param {String} name The name of the Role to create.\n * @param {AV.ACL} acl The ACL for this role.\n */\n constructor: function(name, acl) {\n if (_.isString(name)) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.setName(name);\n } else {\n AV.Object.prototype.constructor.call(this, name, acl);\n }\n if (acl) {\n if (!(acl instanceof AV.ACL)) {\n throw new TypeError('acl must be an instance of AV.ACL');\n } else {\n this.setACL(acl);\n }\n }\n },\n\n /**\n * Gets the name of the role. You can alternatively call role.get(\"name\")\n *\n * @return {String} the name of the role.\n */\n getName: function() {\n return this.get('name');\n },\n\n /**\n * Sets the name for a role. This value must be set before the role has\n * been saved to the server, and cannot be set once the role has been\n * saved.\n *\n * <p>\n * A role's name can only contain alphanumeric characters, _, -, and\n * spaces.\n * </p>\n *\n * <p>This is equivalent to calling role.set(\"name\", name)</p>\n *\n * @param {String} name The name of the role.\n */\n setName: function(name, options) {\n return this.set('name', name, options);\n },\n\n /**\n * Gets the AV.Relation for the AV.Users that are direct\n * children of this role. These users are granted any privileges that this\n * role has been granted (e.g. read or write access through ACLs). You can\n * add or remove users from the role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"users\")</p>\n *\n * @return {AV.Relation} the relation for the users belonging to this\n * role.\n */\n getUsers: function() {\n return this.relation('users');\n },\n\n /**\n * Gets the AV.Relation for the AV.Roles that are direct\n * children of this role. These roles' users are granted any privileges that\n * this role has been granted (e.g. read or write access through ACLs). You\n * can add or remove child roles from this role through this relation.\n *\n * <p>This is equivalent to calling role.relation(\"roles\")</p>\n *\n * @return {AV.Relation} the relation for the roles belonging to this\n * role.\n */\n getRoles: function() {\n return this.relation('roles');\n },\n\n /**\n * @ignore\n */\n validate: function(attrs, options) {\n if ('name' in attrs && attrs.name !== this.getName()) {\n var newName = attrs.name;\n if (this.id && this.id !== attrs.objectId) {\n // Check to see if the objectId being set matches this.id.\n // This happens during a fetch -- the id is set before calling fetch.\n // Let the name be set in this case.\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name can only be set before it has been saved.\"\n );\n }\n if (!_.isString(newName)) {\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name must be a String.\"\n );\n }\n if (!/^[0-9a-zA-Z\\-_ ]+$/.test(newName)) {\n return new AVError(\n AVError.OTHER_CAUSE,\n \"A role's name can only contain alphanumeric characters, _,\" +\n ' -, and spaces.'\n );\n }\n }\n if (AV.Object.prototype.validate) {\n return AV.Object.prototype.validate.call(this, attrs, options);\n }\n return false;\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/role.js","const _ = require('underscore');\nconst uuid = require('uuid/v4');\nconst AVError = require('./error');\nconst { _request: AVRequest, request } = require('./request');\nconst { getAdapter } = require('./adapter');\n\nconst PLATFORM_ANONYMOUS = 'anonymous';\nconst PLATFORM_QQAPP = 'lc_qqapp';\n\nconst mergeUnionDataIntoAuthData = (defaultUnionIdPlatform = 'weixin') => (\n authData,\n unionId,\n { unionIdPlatform = defaultUnionIdPlatform, asMainAccount = false } = {}\n) => {\n if (typeof unionId !== 'string')\n throw new AVError(AVError.OTHER_CAUSE, 'unionId is not a string');\n if (typeof unionIdPlatform !== 'string')\n throw new AVError(AVError.OTHER_CAUSE, 'unionIdPlatform is not a string');\n\n return _.extend({}, authData, {\n platform: unionIdPlatform,\n unionid: unionId,\n main_account: Boolean(asMainAccount),\n });\n};\n\nmodule.exports = function(AV) {\n /**\n * @class\n *\n * <p>An AV.User object is a local representation of a user persisted to the\n * LeanCloud server. This class is a subclass of an AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * user specific methods, like authentication, signing up, and validation of\n * uniqueness.</p>\n */\n AV.User = AV.Object.extend(\n '_User',\n /** @lends AV.User.prototype */ {\n // Instance Variables\n _isCurrentUser: false,\n\n // Instance Methods\n\n /**\n * Internal method to handle special fields in a _User response.\n * @private\n */\n _mergeMagicFields: function(attrs) {\n if (attrs.sessionToken) {\n this._sessionToken = attrs.sessionToken;\n delete attrs.sessionToken;\n }\n return AV.User.__super__._mergeMagicFields.call(this, attrs);\n },\n\n /**\n * Removes null values from authData (which exist temporarily for\n * unlinking)\n * @private\n */\n _cleanupAuthData: function() {\n if (!this.isCurrent()) {\n return;\n }\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n AV._objectEach(this.get('authData'), function(value, key) {\n if (!authData[key]) {\n delete authData[key];\n }\n });\n },\n\n /**\n * Synchronizes authData for all providers.\n * @private\n */\n _synchronizeAllAuthData: function() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n\n var self = this;\n AV._objectEach(this.get('authData'), function(value, key) {\n self._synchronizeAuthData(key);\n });\n },\n\n /**\n * Synchronizes auth data for a provider (e.g. puts the access token in the\n * right place to be used by the Facebook SDK).\n * @private\n */\n _synchronizeAuthData: function(provider) {\n if (!this.isCurrent()) {\n return;\n }\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[authType];\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData');\n if (!authData || !provider) {\n return;\n }\n var success = provider.restoreAuthentication(authData[authType]);\n if (!success) {\n this.dissociateAuthData(provider);\n }\n },\n\n _handleSaveResult: function(makeCurrent) {\n // Clean up and synchronize the authData object, removing any unset values\n if (makeCurrent && !AV._config.disableCurrentUser) {\n this._isCurrentUser = true;\n }\n this._cleanupAuthData();\n this._synchronizeAllAuthData();\n // Don't keep the password around.\n delete this._serverData.password;\n this._rebuildEstimatedDataForKey('password');\n this._refreshCache();\n if (\n (makeCurrent || this.isCurrent()) &&\n !AV._config.disableCurrentUser\n ) {\n // Some old version of leanengine-node-sdk will overwrite\n // AV.User._saveCurrentUser which returns no Promise.\n // So we need a Promise wrapper.\n return Promise.resolve(AV.User._saveCurrentUser(this));\n } else {\n return Promise.resolve();\n }\n },\n\n /**\n * Unlike in the Android/iOS SDKs, logInWith is unnecessary, since you can\n * call linkWith on the user (even if it doesn't exist yet on the server).\n * @private\n */\n _linkWith: function(\n provider,\n data,\n { failOnNotExist = false, useMasterKey, sessionToken, user } = {}\n ) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n provider = AV.User._authProviders[provider];\n } else {\n authType = provider.getAuthType();\n }\n if (data) {\n return this.save(\n { authData: { [authType]: data } },\n {\n useMasterKey,\n sessionToken,\n user,\n fetchWhenSave: !!this.get('authData'),\n _failOnNotExist: failOnNotExist,\n }\n ).then(function(model) {\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n } else {\n return provider\n .authenticate()\n .then(result => this._linkWith(provider, result));\n }\n },\n\n /**\n * Associate the user with a third party authData.\n * @since 3.3.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthData(authData, platform) {\n return this._linkWith(platform, authData);\n },\n\n /**\n * Associate the user with a third party authData and unionId.\n * @since 3.5.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example user.associateWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n associateWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionOptions\n ) {\n return this._linkWith(\n platform,\n mergeUnionDataIntoAuthData()(authData, unionId, unionOptions)\n );\n },\n\n /**\n * Associate the user with the identity of the current mini-app.\n * @since 4.6.0\n * @param {Object} [authInfo]\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n * @return {Promise<AV.User>}\n */\n associateWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this._linkWith(authInfo.provider, authInfo.authData, option)\n );\n }\n return this._linkWith(authInfo.provider, authInfo.authData, option);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的微信帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId = false] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => this.associateWithMiniApp(authInfo));\n },\n\n /**\n * @deprecated renamed to {@link AV.User#associateWithWeapp}\n * @return {Promise<AV.User>}\n */\n linkWithWeapp(options) {\n console.warn(\n 'DEPRECATED: User#linkWithWeapp 已废弃,请使用 User#associateWithWeapp 代替'\n );\n return this.associateWithWeapp(options);\n },\n\n /**\n * 将用户与 QQ 小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用 QQ 小程序的 QQ 帐号。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 4.2.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithQQAppWithUnionId(\n unionId,\n { unionIdPlatform = 'qq', asMainAccount = false } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * 将用户与微信小程序用户进行关联。适用于为已经在用户系统中存在的用户关联当前使用微信小程序的微信帐号。\n * 仅在微信小程序中可用。\n *\n * @deprecated Please use {@link AV.User#associateWithMiniApp}\n * @since 3.13.0\n * @param {string} unionId\n * @param {Object} [unionOptions]\n * @param {string} [unionOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n associateWithWeappWithUnionId(\n unionId,\n { unionIdPlatform = 'weixin', asMainAccount = false } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.associateWithMiniApp(authInfo);\n });\n },\n\n /**\n * Unlinks a user from a service.\n * @param {string} platform\n * @return {Promise<AV.User>}\n * @since 3.3.0\n */\n dissociateAuthData(provider) {\n this.unset(`authData.${provider}`);\n return this.save().then(model =>\n model._handleSaveResult(true).then(() => model)\n );\n },\n\n /**\n * @private\n * @deprecated\n */\n _unlinkFrom(provider) {\n console.warn(\n 'DEPRECATED: User#_unlinkFrom 已废弃,请使用 User#dissociateAuthData 代替'\n );\n return this.dissociateAuthData(provider);\n },\n\n /**\n * Checks whether a user is linked to a service.\n * @private\n */\n _isLinked: function(provider) {\n var authType;\n if (_.isString(provider)) {\n authType = provider;\n } else {\n authType = provider.getAuthType();\n }\n var authData = this.get('authData') || {};\n return !!authData[authType];\n },\n\n /**\n * Checks whether a user is anonymous.\n * @since 3.9.0\n * @return {boolean}\n */\n isAnonymous() {\n return this._isLinked(PLATFORM_ANONYMOUS);\n },\n\n logOut: function() {\n this._logOutWithAll();\n this._isCurrentUser = false;\n },\n\n /**\n * Deauthenticates all providers.\n * @private\n */\n _logOutWithAll: function() {\n var authData = this.get('authData');\n if (!authData) {\n return;\n }\n var self = this;\n AV._objectEach(this.get('authData'), function(value, key) {\n self._logOutWith(key);\n });\n },\n\n /**\n * Deauthenticates a single provider (e.g. removing access tokens from the\n * Facebook SDK).\n * @private\n */\n _logOutWith: function(provider) {\n if (!this.isCurrent()) {\n return;\n }\n if (_.isString(provider)) {\n provider = AV.User._authProviders[provider];\n }\n if (provider && provider.deauthenticate) {\n provider.deauthenticate();\n }\n },\n\n /**\n * Signs up a new user. You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUp\n */\n signUp: function(attrs, options) {\n var error;\n\n var username = (attrs && attrs.username) || this.get('username');\n if (!username || username === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up user with an empty name.'\n );\n throw error;\n }\n\n var password = (attrs && attrs.password) || this.get('password');\n if (!password || password === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up user with an empty password.'\n );\n throw error;\n }\n\n return this.save(attrs, options).then(function(model) {\n if (model.isAnonymous()) {\n model.unset(`authData.${PLATFORM_ANONYMOUS}`);\n model._opSetQueue = [{}];\n }\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Signs up a new user with mobile phone and sms code.\n * You should call this instead of save for\n * new AV.Users. This will create a new AV.User on the server, and\n * also persist the session on disk so that you can access the user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling signUp.</p>\n *\n * @param {Object} attrs Extra fields to set on the new user, or null.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the signup\n * finishes.\n * @see AV.User.signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function(attrs, options = {}) {\n var error;\n\n var mobilePhoneNumber =\n (attrs && attrs.mobilePhoneNumber) || this.get('mobilePhoneNumber');\n if (!mobilePhoneNumber || mobilePhoneNumber === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up or login user by mobilePhoneNumber ' +\n 'with an empty mobilePhoneNumber.'\n );\n throw error;\n }\n\n var smsCode = (attrs && attrs.smsCode) || this.get('smsCode');\n if (!smsCode || smsCode === '') {\n error = new AVError(\n AVError.OTHER_CAUSE,\n 'Cannot sign up or login user by mobilePhoneNumber ' +\n 'with an empty smsCode.'\n );\n throw error;\n }\n\n options._makeRequest = function(route, className, id, method, json) {\n return AVRequest('usersByMobilePhone', null, null, 'POST', json);\n };\n return this.save(attrs, options).then(function(model) {\n delete model.attributes.smsCode;\n delete model._serverData.smsCode;\n return model._handleSaveResult(true).then(function() {\n return model;\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthData}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthData(authData, platform, options) {\n return this._linkWith(platform, authData, options);\n },\n\n /**\n * The same with {@link AV.User.loginWithAuthDataAndUnionId}, except that you can set attributes before login.\n * @since 3.7.0\n */\n loginWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionLoginOptions\n ) {\n return this.loginWithAuthData(\n mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),\n platform,\n unionLoginOptions\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeapp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.7.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @return {Promise<AV.User>}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * The same with {@link AV.User.loginWithWeappWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 3.13.0\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQApp}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithQQAppWithUnionId}, except that you can set attributes before login.\n * @deprecated please use {@link AV.User#loginWithMiniApp}\n * @since 4.2.0\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * The same with {@link AV.User.loginWithMiniApp}, except that you can set attributes before login.\n * @since 4.6.0\n */\n loginWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this.loginWithAuthData(authInfo.authData, authInfo.provider, option)\n );\n }\n return this.loginWithAuthData(\n authInfo.authData,\n authInfo.provider,\n option\n );\n },\n\n /**\n * Logs in a AV.User. On success, this saves the session to localStorage,\n * so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * <p>A username and password must be set before calling logIn.</p>\n *\n * @see AV.User.logIn\n * @return {Promise} A promise that is fulfilled with the user when\n * the login is complete.\n */\n logIn: function() {\n var model = this;\n var request = AVRequest('login', null, null, 'POST', this.toJSON());\n return request.then(function(resp) {\n var serverAttrs = model.parse(resp);\n model._finishFetch(serverAttrs);\n return model._handleSaveResult(true).then(function() {\n if (!serverAttrs.smsCode) delete model.attributes['smsCode'];\n return model;\n });\n });\n },\n /**\n * @see AV.Object#save\n */\n save: function(arg1, arg2, arg3) {\n var attrs, options;\n if (_.isObject(arg1) || _.isNull(arg1) || _.isUndefined(arg1)) {\n attrs = arg1;\n options = arg2;\n } else {\n attrs = {};\n attrs[arg1] = arg2;\n options = arg3;\n }\n options = options || {};\n\n return AV.Object.prototype.save\n .call(this, attrs, options)\n .then(function(model) {\n return model._handleSaveResult(false).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Follow a user\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as\n * conditions of followerQuery/followeeQuery.\n * @param {AuthOptions} [authOptions]\n */\n follow: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n let user;\n let attributes;\n if (options.user) {\n user = options.user;\n attributes = options.attributes;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(\n route,\n null,\n null,\n 'POST',\n AV._encode(attributes),\n authOptions\n );\n return request;\n },\n\n /**\n * Unfollow a user.\n * @since 0.3.0\n * @param {Object | AV.User | String} options if an AV.User or string is given, it will be used as the target user.\n * @param {AV.User | String} options.user The target user or user's objectId to unfollow.\n * @param {AuthOptions} [authOptions]\n */\n unfollow: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n let user;\n if (options.user) {\n user = options.user;\n } else {\n user = options;\n }\n var userObjectId = _.isString(user) ? user : user.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n var route = 'users/' + this.id + '/friendship/' + userObjectId;\n var request = AVRequest(route, null, null, 'DELETE', null, authOptions);\n return request;\n },\n\n /**\n * Get the user's followers and followees.\n * @since 4.8.0\n * @param {Object} [options]\n * @param {Number} [options.skip]\n * @param {Number} [options.limit]\n * @param {AuthOptions} [authOptions]\n */\n getFollowersAndFollowees: function(options, authOptions) {\n if (!this.id) {\n throw new Error('Please signin.');\n }\n return request({\n method: 'GET',\n path: `/users/${this.id}/followersAndFollowees`,\n query: {\n skip: options && options.skip,\n limit: options && options.limit,\n include: 'follower,followee',\n keys: 'follower,followee',\n },\n authOptions,\n }).then(({ followers, followees }) => ({\n followers: followers.map(({ follower }) => AV._decode(follower)),\n followees: followees.map(({ followee }) => AV._decode(followee)),\n }));\n },\n\n /**\n *Create a follower query to query the user's followers.\n * @since 0.3.0\n * @see AV.User#followerQuery\n */\n followerQuery: function() {\n return AV.User.followerQuery(this.id);\n },\n\n /**\n *Create a followee query to query the user's followees.\n * @since 0.3.0\n * @see AV.User#followeeQuery\n */\n followeeQuery: function() {\n return AV.User.followeeQuery(this.id);\n },\n\n /**\n * @see AV.Object#fetch\n */\n fetch: function(fetchOptions, options) {\n return AV.Object.prototype.fetch\n .call(this, fetchOptions, options)\n .then(function(model) {\n return model._handleSaveResult(false).then(function() {\n return model;\n });\n });\n },\n\n /**\n * Update user's new password safely based on old password.\n * @param {String} oldPassword the old password.\n * @param {String} newPassword the new password.\n * @param {AuthOptions} options\n */\n updatePassword: function(oldPassword, newPassword, options) {\n var route = 'users/' + this.id + '/updatePassword';\n var params = {\n old_password: oldPassword,\n new_password: newPassword,\n };\n var request = AVRequest(route, null, null, 'PUT', params, options);\n return request.then(resp => {\n this._finishFetch(this.parse(resp));\n return this._handleSaveResult(true).then(() => resp);\n });\n },\n\n /**\n * Returns true if <code>current</code> would return this user.\n * @see AV.User#current\n */\n isCurrent: function() {\n return this._isCurrentUser;\n },\n\n /**\n * Returns get(\"username\").\n * @return {String}\n * @see AV.Object#get\n */\n getUsername: function() {\n return this.get('username');\n },\n\n /**\n * Returns get(\"mobilePhoneNumber\").\n * @return {String}\n * @see AV.Object#get\n */\n getMobilePhoneNumber: function() {\n return this.get('mobilePhoneNumber');\n },\n\n /**\n * Calls set(\"mobilePhoneNumber\", phoneNumber, options) and returns the result.\n * @param {String} mobilePhoneNumber\n * @return {Boolean}\n * @see AV.Object#set\n */\n setMobilePhoneNumber: function(phone, options) {\n return this.set('mobilePhoneNumber', phone, options);\n },\n\n /**\n * Calls set(\"username\", username, options) and returns the result.\n * @param {String} username\n * @return {Boolean}\n * @see AV.Object#set\n */\n setUsername: function(username, options) {\n return this.set('username', username, options);\n },\n\n /**\n * Calls set(\"password\", password, options) and returns the result.\n * @param {String} password\n * @return {Boolean}\n * @see AV.Object#set\n */\n setPassword: function(password, options) {\n return this.set('password', password, options);\n },\n\n /**\n * Returns get(\"email\").\n * @return {String}\n * @see AV.Object#get\n */\n getEmail: function() {\n return this.get('email');\n },\n\n /**\n * Calls set(\"email\", email, options) and returns the result.\n * @param {String} email\n * @param {AuthOptions} options\n * @return {Boolean}\n * @see AV.Object#set\n */\n setEmail: function(email, options) {\n return this.set('email', email, options);\n },\n\n /**\n * Checks whether this user is the current user and has been authenticated.\n * @deprecated 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),\n * 如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id\n * @return (Boolean) whether this user is the current user and is logged in.\n */\n authenticated: function() {\n console.warn(\n 'DEPRECATED: 如果要判断当前用户的登录状态是否有效,请使用 currentUser.isAuthenticated().then(),如果要判断该用户是否是当前登录用户,请使用 user.id === currentUser.id。'\n );\n return (\n !!this._sessionToken &&\n (!AV._config.disableCurrentUser &&\n AV.User.current() &&\n AV.User.current().id === this.id)\n );\n },\n\n /**\n * Detects if current sessionToken is valid.\n *\n * @since 2.0.0\n * @return Promise.<Boolean>\n */\n isAuthenticated() {\n return Promise.resolve().then(\n () =>\n !!this._sessionToken &&\n AV.User._fetchUserBySessionToken(this._sessionToken).then(\n () => true,\n error => {\n if (error.code === 211) {\n return false;\n }\n throw error;\n }\n )\n );\n },\n\n /**\n * Get sessionToken of current user.\n * @return {String} sessionToken\n */\n getSessionToken() {\n return this._sessionToken;\n },\n\n /**\n * Refresh sessionToken of current user.\n * @since 2.1.0\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.User>} user with refreshed sessionToken\n */\n refreshSessionToken(options) {\n return AVRequest(\n `users/${this.id}/refreshSessionToken`,\n null,\n null,\n 'PUT',\n null,\n options\n ).then(response => {\n this._finishFetch(response);\n return this._handleSaveResult(true).then(() => this);\n });\n },\n\n /**\n * Get this user's Roles.\n * @param {AuthOptions} [options]\n * @return {Promise.<AV.Role[]>} A promise that is fulfilled with the roles when\n * the query is complete.\n */\n getRoles(options) {\n return AV.Relation.reverseQuery('_Role', 'users', this).find(options);\n },\n },\n /** @lends AV.User */ {\n // Class Variables\n\n // The currently logged-in user.\n _currentUser: null,\n\n // Whether currentUser is known to match the serialized version on disk.\n // This is useful for saving a localstorage check if you try to load\n // _currentUser frequently while there is none stored.\n _currentUserMatchesDisk: false,\n\n // The localStorage key suffix that the current user is stored under.\n _CURRENT_USER_KEY: 'currentUser',\n\n // The mapping of auth provider names to actual providers\n _authProviders: {},\n\n // Class Methods\n\n /**\n * Signs up a new user with a username (or email) and password.\n * This will create a new AV.User on the server, and also persist the\n * session in localStorage so that you can access the user using\n * {@link #current}.\n *\n * @param {String} username The username (or email) to sign up with.\n * @param {String} password The password to sign up with.\n * @param {Object} [attrs] Extra fields to set on the new user.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that is fulfilled with the user when\n * the signup completes.\n * @see AV.User#signUp\n */\n signUp: function(username, password, attrs, options) {\n attrs = attrs || {};\n attrs.username = username;\n attrs.password = password;\n var user = AV.Object._create('_User');\n return user.signUp(attrs, options);\n },\n\n /**\n * Logs in a user with a username (or email) and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} username The username (or email) to log in with.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logIn: function(username, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({ username: username, password: password });\n return user.logIn();\n },\n\n /**\n * Logs in a user with a session token. On success, this saves the session\n * to disk, so you can retrieve the currently logged in user using\n * <code>current</code>.\n *\n * @param {String} sessionToken The sessionToken to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n become: function(sessionToken) {\n return this._fetchUserBySessionToken(sessionToken).then(user =>\n user._handleSaveResult(true).then(() => user)\n );\n },\n\n _fetchUserBySessionToken: function(sessionToken) {\n if (sessionToken === undefined) {\n return Promise.reject(\n new Error('The sessionToken cannot be undefined')\n );\n }\n\n var user = AV.Object._create('_User');\n return request({\n method: 'GET',\n path: '/users/me',\n authOptions: {\n sessionToken,\n },\n }).then(function(resp) {\n var serverAttrs = user.parse(resp);\n user._finishFetch(serverAttrs);\n return user;\n });\n },\n\n /**\n * Logs in a user with a mobile phone number and sms code sent by\n * AV.User.requestLoginSmsCode.On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} smsCode The sms code sent by AV.User.requestLoginSmsCode\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhoneSmsCode: function(mobilePhone, smsCode) {\n var user = AV.Object._create('_User');\n user._finishFetch({ mobilePhoneNumber: mobilePhone, smsCode: smsCode });\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a mobilePhoneNumber and smsCode.\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @param {String} mobilePhoneNumber The user's mobilePhoneNumber.\n * @param {String} smsCode The sms code sent by AV.Cloud.requestSmsCode\n * @param {Object} attributes The user's other attributes such as username etc.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#signUpOrlogInWithMobilePhone\n * @see AV.Cloud.requestSmsCode\n */\n signUpOrlogInWithMobilePhone: function(\n mobilePhoneNumber,\n smsCode,\n attrs,\n options\n ) {\n attrs = attrs || {};\n attrs.mobilePhoneNumber = mobilePhoneNumber;\n attrs.smsCode = smsCode;\n var user = AV.Object._create('_User');\n return user.signUpOrlogInWithMobilePhone(attrs, options);\n },\n\n /**\n * Logs in a user with a mobile phone number and password. On success, this\n * saves the session to disk, so you can retrieve the currently logged in\n * user using <code>current</code>.\n *\n * @param {String} mobilePhone The user's mobilePhoneNumber\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @see AV.User#logIn\n */\n logInWithMobilePhone: function(mobilePhone, password) {\n var user = AV.Object._create('_User');\n user._finishFetch({\n mobilePhoneNumber: mobilePhone,\n password: password,\n });\n return user.logIn();\n },\n\n /**\n * Logs in a user with email and password.\n *\n * @since 3.13.0\n * @param {String} email The user's email.\n * @param {String} password The password to log in with.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n */\n loginWithEmail(email, password) {\n const user = AV.Object._create('_User');\n user._finishFetch({\n email,\n password,\n });\n return user.logIn();\n },\n\n /**\n * Signs up or logs in a user with a third party auth data(AccessToken).\n * On success, this saves the session to disk, so you can retrieve the currently\n * logged in user using <code>current</code>.\n *\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {Object} [options]\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise} A promise that is fulfilled with the user when\n * the login completes.\n * @example AV.User.loginWithAuthData({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin').then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n * @see {@link https://leancloud.cn/docs/js_guide.html#绑定第三方平台账户}\n */\n loginWithAuthData(authData, platform, options) {\n return AV.User._logInWith(platform, authData, options);\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthData}\n */\n signUpOrlogInWithAuthData(...param) {\n console.warn(\n 'DEPRECATED: User.signUpOrlogInWithAuthData 已废弃,请使用 User#loginWithAuthData 代替'\n );\n return this.loginWithAuthData(...param);\n },\n\n /**\n * Signs up or logs in a user with a third party authData and unionId.\n * @since 3.7.0\n * @param {Object} authData The response json data returned from third party token, maybe like { openid: 'abc123', access_token: '123abc', expires_in: 1382686496 }\n * @param {string} platform Available platform for sign up.\n * @param {string} unionId\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise<AV.User>} A promise that is fulfilled with the user when completed.\n * @example AV.User.loginWithAuthDataAndUnionId({\n * openid: 'abc123',\n * access_token: '123abc',\n * expires_in: 1382686496\n * }, 'weixin', 'union123', {\n * unionIdPlatform: 'weixin',\n * asMainAccount: true,\n * }).then(function(user) {\n * //Access user here\n * }).catch(function(error) {\n * //console.error(\"error: \", error);\n * });\n */\n loginWithAuthDataAndUnionId(\n authData,\n platform,\n unionId,\n unionLoginOptions\n ) {\n return this.loginWithAuthData(\n mergeUnionDataIntoAuthData()(authData, unionId, unionLoginOptions),\n platform,\n unionLoginOptions\n );\n },\n\n /**\n * @deprecated renamed to {@link AV.User.loginWithAuthDataAndUnionId}\n * @since 3.5.0\n */\n signUpOrlogInWithAuthDataAndUnionId(...param) {\n console.warn(\n 'DEPRECATED: User.signUpOrlogInWithAuthDataAndUnionId 已废弃,请使用 User#loginWithAuthDataAndUnionId 代替'\n );\n return this.loginWithAuthDataAndUnionId(...param);\n },\n\n /**\n * Merge unionId into authInfo.\n * @since 4.6.0\n * @param {Object} authInfo\n * @param {String} unionId\n * @param {Object} [unionIdOption]\n * @param {Boolean} [unionIdOption.asMainAccount] If true, the unionId will be associated with the user.\n */\n mergeUnionId(authInfo, unionId, { asMainAccount = false } = {}) {\n authInfo = JSON.parse(JSON.stringify(authInfo));\n const { authData, platform } = authInfo;\n authData.platform = platform;\n authData.main_account = asMainAccount;\n authData.unionid = unionId;\n return authInfo;\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 2.0.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 当用户满足 {@link https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html 获取 UnionId 的条件} 时,是否使用 UnionId 登录。(since 3.13.0)\n * @param {string} [options.unionIdPlatform = 'weixin'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithWeapp({\n preferUnionId = false,\n unionIdPlatform = 'weixin',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo =>\n this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n })\n );\n },\n\n /**\n * 使用当前使用微信小程序的微信用户身份注册或登录,\n * 仅在微信小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 3.13.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'weixin'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists. * @return {Promise.<AV.User>}\n */\n loginWithWeappWithUnionId(\n unionId,\n {\n unionIdPlatform = 'weixin',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,成功后用户的 session 会在设备上持久化保存,之后可以使用 AV.User.current() 获取当前登录用户。\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [options]\n * @param {boolean} [options.preferUnionId] 如果服务端在登录时获取到了用户的 UnionId,是否将 UnionId 保存在用户账号中。\n * @param {string} [options.unionIdPlatform = 'qq'] (only take effect when preferUnionId) unionId platform\n * @param {boolean} [options.asMainAccount = true] (only take effect when preferUnionId) If true, the unionId will be associated with the user.\n * @param {boolean} [options.failOnNotExist] If true, the login request will fail when no user matches this authData exists. (since v3.7.0)\n * @return {Promise.<AV.User>}\n */\n loginWithQQApp({\n preferUnionId = false,\n unionIdPlatform = 'qq',\n asMainAccount = true,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({\n preferUnionId,\n asMainAccount,\n platform: unionIdPlatform,\n }).then(authInfo => {\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * 使用当前使用 QQ 小程序的 QQ 用户身份注册或登录,\n * 仅在 QQ 小程序中可用。\n *\n * @deprecated please use {@link AV.User.loginWithMiniApp}\n * @since 4.2.0\n * @param {Object} [unionLoginOptions]\n * @param {string} [unionLoginOptions.unionIdPlatform = 'qq'] unionId platform\n * @param {boolean} [unionLoginOptions.asMainAccount = false] If true, the unionId will be associated with the user.\n * @param {boolean} [unionLoginOptions.failOnNotExist] If true, the login request will fail when no user matches this authData exists.\n * @return {Promise.<AV.User>}\n */\n loginWithQQAppWithUnionId(\n unionId,\n {\n unionIdPlatform = 'qq',\n asMainAccount = false,\n failOnNotExist = false,\n useMasterKey,\n sessionToken,\n user,\n } = {}\n ) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo({ platform: unionIdPlatform }).then(authInfo => {\n authInfo = AV.User.mergeUnionId(authInfo, unionId, { asMainAccount });\n authInfo.provider = PLATFORM_QQAPP;\n return this.loginWithMiniApp(authInfo, {\n failOnNotExist,\n useMasterKey,\n sessionToken,\n user,\n });\n });\n },\n\n /**\n * Register or login using the identity of the current mini-app.\n * @param {Object} authInfo\n * @param {Object} [option]\n * @param {Boolean} [option.failOnNotExist] If true, the login request will fail when no user matches this authInfo.authData exists.\n */\n loginWithMiniApp(authInfo, option) {\n if (authInfo === undefined) {\n const getAuthInfo = getAdapter('getAuthInfo');\n return getAuthInfo().then(authInfo =>\n this.loginWithAuthData(authInfo.authData, authInfo.provider, option)\n );\n }\n return this.loginWithAuthData(\n authInfo.authData,\n authInfo.provider,\n option\n );\n },\n\n /**\n * Only use for DI in tests to produce deterministic IDs.\n */\n _genId() {\n return uuid();\n },\n\n /**\n * Creates an anonymous user.\n *\n * @since 3.9.0\n * @return {Promise.<AV.User>}\n */\n loginAnonymously() {\n return this.loginWithAuthData(\n {\n id: AV.User._genId(),\n },\n 'anonymous'\n );\n },\n\n associateWithAuthData(userObj, platform, authData) {\n console.warn(\n 'DEPRECATED: User.associateWithAuthData 已废弃,请使用 User#associateWithAuthData 代替'\n );\n return userObj._linkWith(platform, authData);\n },\n /**\n * Logs out the currently logged in user session. This will remove the\n * session from disk, log out of linked services, and future calls to\n * <code>current</code> will return <code>null</code>.\n * @return {Promise}\n */\n logOut: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.current() was disabled in multi-user environment, call logOut() from user object instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return Promise.resolve(null);\n }\n\n if (AV.User._currentUser !== null) {\n AV.User._currentUser._logOutWithAll();\n AV.User._currentUser._isCurrentUser = false;\n }\n AV.User._currentUserMatchesDisk = true;\n AV.User._currentUser = null;\n return AV.localStorage\n .removeItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))\n .then(() => AV._refreshSubscriptionId());\n },\n\n /**\n *Create a follower query for special user to query the user's followers.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followerQuery: function(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Follower');\n query._friendshipTag = 'follower';\n query.equalTo(\n 'user',\n AV.Object.createWithoutData('_User', userObjectId)\n );\n return query;\n },\n\n /**\n *Create a followee query for special user to query the user's followees.\n * @param {String} userObjectId The user object id.\n * @return {AV.FriendShipQuery}\n * @since 0.3.0\n */\n followeeQuery: function(userObjectId) {\n if (!userObjectId || !_.isString(userObjectId)) {\n throw new Error('Invalid user object id.');\n }\n var query = new AV.FriendShipQuery('_Followee');\n query._friendshipTag = 'followee';\n query.equalTo(\n 'user',\n AV.Object.createWithoutData('_User', userObjectId)\n );\n return query;\n },\n\n /**\n * Requests a password reset email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * reset their password on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * forgot their password.\n * @return {Promise}\n */\n requestPasswordReset: function(email) {\n var json = { email: email };\n var request = AVRequest(\n 'requestPasswordReset',\n null,\n null,\n 'POST',\n json\n );\n return request;\n },\n\n /**\n * Requests a verify email to be sent to the specified email address\n * associated with the user account. This email allows the user to securely\n * verify their email address on the AV site.\n *\n * @param {String} email The email address associated with the user that\n * doesn't verify their email address.\n * @return {Promise}\n */\n requestEmailVerify: function(email) {\n var json = { email: email };\n var request = AVRequest('requestEmailVerify', null, null, 'POST', json);\n return request;\n },\n\n /**\n * Requests a verify sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * verify their mobile phone number by calling AV.User.verifyMobilePhone\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestMobilePhoneVerify: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestMobilePhoneVerify',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Requests a reset password sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * reset their account's password by calling AV.User.resetPasswordBySmsCode\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that doesn't verify their mobile phone number.\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestPasswordResetBySmsCode: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestPasswordResetBySmsCode',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Requests a change mobile phone number sms code to be sent to the mobilePhoneNumber.\n * This sms code allows current user to reset it's mobilePhoneNumber by\n * calling {@link AV.User.changePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {Number} [ttl] ttl of sms code (default is 6 minutes)\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestChangePhoneNumber(mobilePhoneNumber, ttl, options) {\n const data = { mobilePhoneNumber };\n if (ttl) {\n data.ttl = options.ttl;\n }\n if (options && options.validateToken) {\n data.validate_token = options.validateToken;\n }\n return AVRequest(\n 'requestChangePhoneNumber',\n null,\n null,\n 'POST',\n data,\n options\n );\n },\n\n /**\n * Makes a call to reset user's account mobilePhoneNumber by sms code.\n * The sms code is sent by {@link AV.User.requestChangePhoneNumber}\n * @since 4.7.0\n * @param {String} mobilePhoneNumber\n * @param {String} code The sms code.\n * @return {Promise}\n */\n changePhoneNumber(mobilePhoneNumber, code) {\n const data = { mobilePhoneNumber, code };\n return AVRequest('changePhoneNumber', null, null, 'POST', data);\n },\n\n /**\n * Makes a call to reset user's account password by sms code and new password.\n * The sms code is sent by AV.User.requestPasswordResetBySmsCode.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @param {String} password The new password.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n resetPasswordBySmsCode: function(code, password) {\n var json = { password: password };\n var request = AVRequest(\n 'resetPasswordBySmsCode',\n null,\n code,\n 'PUT',\n json\n );\n return request;\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.User.Cloud.requestSmsCode\n * If verify successfully,the user mobilePhoneVerified attribute will be true.\n * @param {String} code The sms code sent by AV.User.Cloud.requestSmsCode\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifyMobilePhone: function(code) {\n var request = AVRequest('verifyMobilePhone', null, code, 'POST', null);\n return request;\n },\n\n /**\n * Requests a logIn sms code to be sent to the specified mobile phone\n * number associated with the user account. This sms code allows the user to\n * login by AV.User.logInWithMobilePhoneSmsCode function.\n *\n * @param {String} mobilePhoneNumber The mobile phone number associated with the\n * user that want to login by AV.User.logInWithMobilePhoneSmsCode\n * @param {SMSAuthOptions} [options]\n * @return {Promise}\n */\n requestLoginSmsCode: function(mobilePhoneNumber, options = {}) {\n const data = {\n mobilePhoneNumber,\n };\n if (options.validateToken) {\n data.validate_token = options.validateToken;\n }\n var request = AVRequest(\n 'requestLoginSmsCode',\n null,\n null,\n 'POST',\n data,\n options\n );\n return request;\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {Promise.<AV.User>} resolved with the currently logged in AV.User.\n */\n currentAsync: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.currentAsync() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return Promise.resolve(null);\n }\n\n if (AV.User._currentUser) {\n return Promise.resolve(AV.User._currentUser);\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return Promise.resolve(AV.User._currentUser);\n }\n\n return AV.localStorage\n .getItemAsync(AV._getAVPath(AV.User._CURRENT_USER_KEY))\n .then(function(userData) {\n if (!userData) {\n return null;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n });\n },\n\n /**\n * Retrieves the currently logged in AVUser with a valid session,\n * either from memory or localStorage, if necessary.\n * @return {AV.User} The currently logged in AV.User.\n */\n current: function() {\n if (AV._config.disableCurrentUser) {\n console.warn(\n 'AV.User.current() was disabled in multi-user environment, access user from request instead https://leancloud.cn/docs/leanengine-node-sdk-upgrade-1.html'\n );\n return null;\n }\n\n if (AV.localStorage.async) {\n const error = new Error(\n 'Synchronous API User.current() is not available in this runtime. Use User.currentAsync() instead.'\n );\n error.code = 'SYNC_API_NOT_AVAILABLE';\n throw error;\n }\n\n if (AV.User._currentUser) {\n return AV.User._currentUser;\n }\n\n if (AV.User._currentUserMatchesDisk) {\n return AV.User._currentUser;\n }\n\n // Load the user from local storage.\n AV.User._currentUserMatchesDisk = true;\n\n var userData = AV.localStorage.getItem(\n AV._getAVPath(AV.User._CURRENT_USER_KEY)\n );\n if (!userData) {\n return null;\n }\n AV.User._currentUser = AV.Object._create('_User');\n AV.User._currentUser._isCurrentUser = true;\n\n var json = JSON.parse(userData);\n AV.User._currentUser.id = json._id;\n delete json._id;\n AV.User._currentUser._sessionToken = json._sessionToken;\n delete json._sessionToken;\n AV.User._currentUser._finishFetch(json);\n //AV.User._currentUser.set(json);\n\n AV.User._currentUser._synchronizeAllAuthData();\n AV.User._currentUser._refreshCache();\n AV.User._currentUser._opSetQueue = [{}];\n return AV.User._currentUser;\n },\n\n /**\n * Persists a user as currentUser to localStorage, and into the singleton.\n * @private\n */\n _saveCurrentUser: function(user) {\n var promise;\n if (AV.User._currentUser !== user) {\n promise = AV.User.logOut();\n } else {\n promise = Promise.resolve();\n }\n return promise.then(function() {\n user._isCurrentUser = true;\n AV.User._currentUser = user;\n\n var json = user._toFullJSON();\n json._id = user.id;\n json._sessionToken = user._sessionToken;\n return AV.localStorage\n .setItemAsync(\n AV._getAVPath(AV.User._CURRENT_USER_KEY),\n JSON.stringify(json)\n )\n .then(function() {\n AV.User._currentUserMatchesDisk = true;\n return AV._refreshSubscriptionId();\n });\n });\n },\n\n _registerAuthenticationProvider: function(provider) {\n AV.User._authProviders[provider.getAuthType()] = provider;\n // Synchronize the current user with the auth provider.\n if (!AV._config.disableCurrentUser && AV.User.current()) {\n AV.User.current()._synchronizeAuthData(provider.getAuthType());\n }\n },\n\n _logInWith: function(provider, authData, options) {\n var user = AV.Object._create('_User');\n return user._linkWith(provider, authData, options);\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/user.js","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js\n// module id = 557\n// module chunks = 0 1","const _ = require('underscore');\nconst debug = require('debug')('leancloud:query');\nconst AVError = require('./error');\nconst { _request, request } = require('./request');\nconst {\n ensureArray,\n transformFetchOptions,\n continueWhile,\n} = require('./utils');\n\nconst requires = (value, message) => {\n if (value === undefined) {\n throw new Error(message);\n }\n};\n\n// AV.Query is a way to create a list of AV.Objects.\nmodule.exports = function(AV) {\n /**\n * Creates a new AV.Query for the given AV.Object subclass.\n * @param {Class|String} objectClass An instance of a subclass of AV.Object, or a AV className string.\n * @class\n *\n * <p>AV.Query defines a query that is used to fetch AV.Objects. The\n * most common use case is finding all objects that match a query through the\n * <code>find</code> method. For example, this sample code fetches all objects\n * of class <code>MyClass</code>. It calls a different function depending on\n * whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.find().then(function(results) {\n * // results is an array of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to retrieve a single object whose id is\n * known, through the get method. For example, this sample code fetches an\n * object of class <code>MyClass</code> and id <code>myId</code>. It calls a\n * different function depending on whether the fetch succeeded or not.\n *\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.get(myId).then(function(object) {\n * // object is an instance of AV.Object.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n *\n * <p>An AV.Query can also be used to count the number of objects that match\n * the query without retrieving all of those objects. For example, this\n * sample code counts the number of objects of the class <code>MyClass</code>\n * <pre>\n * var query = new AV.Query(MyClass);\n * query.count().then(function(number) {\n * // There are number instances of MyClass.\n * }, function(error) {\n * // error is an instance of AVError.\n * });</pre></p>\n */\n AV.Query = function(objectClass) {\n if (_.isString(objectClass)) {\n objectClass = AV.Object._getSubclass(objectClass);\n }\n\n this.objectClass = objectClass;\n\n this.className = objectClass.prototype.className;\n\n this._where = {};\n this._include = [];\n this._select = [];\n this._limit = -1; // negative limit means, do not send a limit\n this._skip = 0;\n this._defaultParams = {};\n };\n\n /**\n * Constructs a AV.Query that is the OR of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.or(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an or of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to OR.\n * @return {AV.Query} The query that is the OR of the passed in queries.\n */\n AV.Query.or = function() {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function(q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._orQuery(queries);\n return query;\n };\n\n /**\n * Constructs a AV.Query that is the AND of the passed in queries. For\n * example:\n * <pre>var compoundQuery = AV.Query.and(query1, query2, query3);</pre>\n *\n * will create a compoundQuery that is an 'and' of the query1, query2, and\n * query3.\n * @param {...AV.Query} var_args The list of queries to AND.\n * @return {AV.Query} The query that is the AND of the passed in queries.\n */\n AV.Query.and = function() {\n var queries = _.toArray(arguments);\n var className = null;\n AV._arrayEach(queries, function(q) {\n if (_.isNull(className)) {\n className = q.className;\n }\n\n if (className !== q.className) {\n throw new Error('All queries must be for the same class');\n }\n });\n var query = new AV.Query(className);\n query._andQuery(queries);\n return query;\n };\n\n /**\n * Retrieves a list of AVObjects that satisfy the CQL.\n * CQL syntax please see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n *\n * @param {String} cql A CQL string, see {@link https://leancloud.cn/docs/cql_guide.html CQL Guide}.\n * @param {Array} pvalues An array contains placeholder values.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n AV.Query.doCloudQuery = function(cql, pvalues, options) {\n var params = { cql: cql };\n if (_.isArray(pvalues)) {\n params.pvalues = pvalues;\n } else {\n options = pvalues;\n }\n\n var request = _request('cloudQuery', null, null, 'GET', params, options);\n return request.then(function(response) {\n //query to process results.\n var query = new AV.Query(response.className);\n var results = _.map(response.results, function(json) {\n var obj = query._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(query._processResult(json), true);\n }\n return obj;\n });\n return {\n results: results,\n count: response.count,\n className: response.className,\n };\n });\n };\n\n /**\n * Return a query with conditions from json.\n * This can be useful to send a query from server side to client side.\n * @since 4.0.0\n * @param {Object} json from {@link AV.Query#toJSON}\n * @return {AV.Query}\n */\n AV.Query.fromJSON = ({\n className,\n where,\n include,\n select,\n includeACL,\n limit,\n skip,\n order,\n }) => {\n if (typeof className !== 'string') {\n throw new TypeError('Invalid Query JSON, className must be a String.');\n }\n const query = new AV.Query(className);\n _.extend(query, {\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order,\n });\n return query;\n };\n\n AV.Query._extend = AV._extend;\n\n _.extend(\n AV.Query.prototype,\n /** @lends AV.Query.prototype */ {\n //hook to iterate result. Added by dennis<xzhuang@avoscloud.com>.\n _processResult: function(obj) {\n return obj;\n },\n\n /**\n * Constructs an AV.Object whose id is already known by fetching data from\n * the server.\n *\n * @param {String} objectId The id of the object to be fetched.\n * @param {AuthOptions} options\n * @return {Promise.<AV.Object>}\n */\n get: function(objectId, options) {\n if (!_.isString(objectId)) {\n throw new Error('objectId must be a string');\n }\n if (objectId === '') {\n return Promise.reject(\n new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.')\n );\n }\n\n var obj = this._newObject();\n obj.id = objectId;\n\n var queryJSON = this._getParams();\n var fetchOptions = {};\n\n if (queryJSON.keys) fetchOptions.keys = queryJSON.keys;\n if (queryJSON.include) fetchOptions.include = queryJSON.include;\n if (queryJSON.includeACL)\n fetchOptions.includeACL = queryJSON.includeACL;\n\n return _request(\n 'classes',\n this.className,\n objectId,\n 'GET',\n transformFetchOptions(fetchOptions),\n options\n ).then(response => {\n if (_.isEmpty(response))\n throw new AVError(AVError.OBJECT_NOT_FOUND, 'Object not found.');\n obj._finishFetch(obj.parse(response), true);\n return obj;\n });\n },\n\n /**\n * Returns a JSON representation of this query.\n * @return {Object}\n */\n toJSON() {\n const {\n className,\n _where: where,\n _include: include,\n _select: select,\n _includeACL: includeACL,\n _limit: limit,\n _skip: skip,\n _order: order,\n } = this;\n return {\n className,\n where,\n include,\n select,\n includeACL,\n limit,\n skip,\n order,\n };\n },\n\n _getParams: function() {\n var params = _.extend({}, this._defaultParams, {\n where: this._where,\n });\n\n if (this._include.length > 0) {\n params.include = this._include.join(',');\n }\n if (this._select.length > 0) {\n params.keys = this._select.join(',');\n }\n if (this._includeACL !== undefined) {\n params.returnACL = this._includeACL;\n }\n if (this._limit >= 0) {\n params.limit = this._limit;\n }\n if (this._skip > 0) {\n params.skip = this._skip;\n }\n if (this._order !== undefined) {\n params.order = this._order;\n }\n\n return params;\n },\n\n _newObject: function(response) {\n var obj;\n if (response && response.className) {\n obj = new AV.Object(response.className);\n } else {\n obj = new this.objectClass();\n }\n return obj;\n },\n _createRequest(\n params = this._getParams(),\n options,\n path = `/classes/${this.className}`\n ) {\n if (encodeURIComponent(JSON.stringify(params)).length > 2000) {\n const body = {\n requests: [\n {\n method: 'GET',\n path: `/1.1${path}`,\n params,\n },\n ],\n };\n return request({\n path: '/batch',\n method: 'POST',\n data: body,\n authOptions: options,\n }).then(response => {\n const result = response[0];\n if (result.success) {\n return result.success;\n }\n const error = new AVError(\n result.error.code,\n result.error.error || 'Unknown batch error'\n );\n throw error;\n });\n }\n return request({\n method: 'GET',\n path,\n query: params,\n authOptions: options,\n });\n },\n\n _parseResponse(response) {\n return _.map(response.results, json => {\n var obj = this._newObject(response);\n if (obj._finishFetch) {\n obj._finishFetch(this._processResult(json), true);\n }\n return obj;\n });\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find(options) {\n const request = this._createRequest(undefined, options);\n return request.then(this._parseResponse.bind(this));\n },\n\n /**\n * Retrieves both AVObjects and total count.\n *\n * @since 4.12.0\n * @param {AuthOptions} options\n * @return {Promise} A tuple contains results and count.\n */\n findAndCount(options) {\n const params = this._getParams();\n params.count = 1;\n const request = this._createRequest(params, options);\n\n return request.then(response => [\n this._parseResponse(response),\n response.count,\n ]);\n },\n\n /**\n * scan a Query. masterKey required.\n *\n * @since 2.1.0\n * @param {object} [options]\n * @param {string} [options.orderedBy] specify the key to sort\n * @param {number} [options.batchSize] specify the batch size for each request\n * @param {AuthOptions} [authOptions]\n * @return {AsyncIterator.<AV.Object>}\n * @example const testIterator = {\n * [Symbol.asyncIterator]() {\n * return new Query('Test').scan(undefined, { useMasterKey: true });\n * },\n * };\n * for await (const test of testIterator) {\n * console.log(test.id);\n * }\n */\n scan({ orderedBy, batchSize } = {}, authOptions) {\n const condition = this._getParams();\n debug('scan %O', condition);\n if (condition.order) {\n console.warn(\n 'The order of the query is ignored for Query#scan. Checkout the orderedBy option of Query#scan.'\n );\n delete condition.order;\n }\n if (condition.skip) {\n console.warn(\n 'The skip option of the query is ignored for Query#scan.'\n );\n delete condition.skip;\n }\n if (condition.limit) {\n console.warn(\n 'The limit option of the query is ignored for Query#scan.'\n );\n delete condition.limit;\n }\n if (orderedBy) condition.scan_key = orderedBy;\n if (batchSize) condition.limit = batchSize;\n let cursor;\n let remainResults = [];\n return {\n next: () => {\n if (remainResults.length) {\n return Promise.resolve({\n done: false,\n value: remainResults.shift(),\n });\n }\n if (cursor === null) {\n return Promise.resolve({ done: true });\n }\n return _request(\n 'scan/classes',\n this.className,\n null,\n 'GET',\n cursor ? _.extend({}, condition, { cursor }) : condition,\n authOptions\n ).then(response => {\n cursor = response.cursor;\n if (response.results.length) {\n const results = this._parseResponse(response);\n results.forEach(result => remainResults.push(result));\n }\n if (cursor === null && remainResults.length === 0) {\n return { done: true };\n }\n return {\n done: false,\n value: remainResults.shift(),\n };\n });\n },\n };\n },\n\n /**\n * Delete objects retrieved by this query.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the save\n * completes.\n */\n destroyAll: function(options) {\n var self = this;\n return self.find(options).then(function(objects) {\n return AV.Object.destroyAll(objects, options);\n });\n },\n\n /**\n * Counts the number of objects that match this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the count when\n * the query completes.\n */\n count: function(options) {\n var params = this._getParams();\n params.limit = 0;\n params.count = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function(response) {\n return response.count;\n });\n },\n\n /**\n * Retrieves at most one AV.Object that satisfies this query.\n *\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the object when\n * the query completes.\n */\n first: function(options) {\n var self = this;\n\n var params = this._getParams();\n params.limit = 1;\n var request = this._createRequest(params, options);\n\n return request.then(function(response) {\n return _.map(response.results, function(json) {\n var obj = self._newObject();\n if (obj._finishFetch) {\n obj._finishFetch(self._processResult(json), true);\n }\n return obj;\n })[0];\n });\n },\n\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function(n) {\n requires(n, 'undefined is not a valid skip value');\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function(n) {\n requires(n, 'undefined is not a valid limit value');\n this._limit = n;\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that the AV.Object must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n equalTo: function(key, value) {\n requires(key, 'undefined is not a valid key');\n requires(value, 'undefined is not a valid value');\n this._where[key] = AV._encode(value);\n return this;\n },\n\n /**\n * Helper for condition queries\n * @private\n */\n _addCondition: function(key, condition, value) {\n requires(key, 'undefined is not a valid condition key');\n requires(condition, 'undefined is not a valid condition');\n requires(value, 'undefined is not a valid condition value');\n\n // Check if we already have a condition\n if (!this._where[key]) {\n this._where[key] = {};\n }\n this._where[key][condition] = AV._encode(value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular\n * <strong>array</strong> key's length to be equal to the provided value.\n * @param {String} key The array key to check.\n * @param {number} value The length value.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n sizeEqualTo: function(key, value) {\n this._addCondition(key, '$size', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be not equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that must not be equalled.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notEqualTo: function(key, value) {\n this._addCondition(key, '$ne', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThan: function(key, value) {\n this._addCondition(key, '$lt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThan: function(key, value) {\n this._addCondition(key, '$gt', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be less than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an upper bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n lessThanOrEqualTo: function(key, value) {\n this._addCondition(key, '$lte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be greater than or equal to the provided value.\n * @param {String} key The key to check.\n * @param value The value that provides an lower bound.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n greaterThanOrEqualTo: function(key, value) {\n this._addCondition(key, '$gte', value);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containedIn: function(key, values) {\n this._addCondition(key, '$in', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * not be contained in the provided list of values.\n * @param {String} key The key to check.\n * @param {Array} values The values that will not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n notContainedIn: function(key, values) {\n this._addCondition(key, '$nin', values);\n return this;\n },\n\n /**\n * Add a constraint to the query that requires a particular key's value to\n * contain each one of the provided list of values.\n * @param {String} key The key to check. This key's value must be an array.\n * @param {Array} values The values that will match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n containsAll: function(key, values) {\n this._addCondition(key, '$all', values);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that contain the given key.\n * @param {String} key The key that should exist.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n exists: function(key) {\n this._addCondition(key, '$exists', true);\n return this;\n },\n\n /**\n * Add a constraint for finding objects that do not contain a given key.\n * @param {String} key The key that should not exist\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotExist: function(key) {\n this._addCondition(key, '$exists', false);\n return this;\n },\n\n /**\n * Add a regular expression constraint for finding string values that match\n * the provided regular expression.\n * This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {RegExp} regex The regular expression pattern to match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matches: function(key, regex, modifiers) {\n this._addCondition(key, '$regex', regex);\n if (!modifiers) {\n modifiers = '';\n }\n // Javascript regex options support mig as inline options but store them\n // as properties of the object. We support mi & should migrate them to\n // modifiers\n if (regex.ignoreCase) {\n modifiers += 'i';\n }\n if (regex.multiline) {\n modifiers += 'm';\n }\n\n if (modifiers && modifiers.length) {\n this._addCondition(key, '$options', modifiers);\n }\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a AV.Query\n * constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesQuery: function(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$inQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not matches a\n * AV.Query constraint.\n * @param {String} key The key that the contains the object to match the\n * query.\n * @param {AV.Query} query The query that should not match.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchQuery: function(key, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$notInQuery', queryJSON);\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value matches a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * matched.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n matchesKeyInQuery: function(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$select', { key: queryKey, query: queryJSON });\n return this;\n },\n\n /**\n * Add a constraint that requires that a key's value not match a value in\n * an object returned by a different AV.Query.\n * @param {String} key The key that contains the value that is being\n * excluded.\n * @param {String} queryKey The key in the objects returned by the query to\n * match against.\n * @param {AV.Query} query The query to run.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n doesNotMatchKeyInQuery: function(key, queryKey, query) {\n var queryJSON = query._getParams();\n queryJSON.className = query.className;\n this._addCondition(key, '$dontSelect', {\n key: queryKey,\n query: queryJSON,\n });\n return this;\n },\n\n /**\n * Add constraint that at least one of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _orQuery: function(queries) {\n var queryJSON = _.map(queries, function(q) {\n return q._getParams().where;\n });\n\n this._where.$or = queryJSON;\n return this;\n },\n\n /**\n * Add constraint that both of the passed in queries matches.\n * @param {Array} queries\n * @return {AV.Query} Returns the query, so you can chain this call.\n * @private\n */\n _andQuery: function(queries) {\n var queryJSON = _.map(queries, function(q) {\n return q._getParams().where;\n });\n\n this._where.$and = queryJSON;\n return this;\n },\n\n /**\n * Converts a string into a regex that matches it.\n * Surrounding with \\Q .. \\E does this, we just need to escape \\E's in\n * the text separately.\n * @private\n */\n _quote: function(s) {\n return '\\\\Q' + s.replace('\\\\E', '\\\\E\\\\\\\\E\\\\Q') + '\\\\E';\n },\n\n /**\n * Add a constraint for finding string values that contain a provided\n * string. This may be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} substring The substring that the value must contain.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n contains: function(key, value) {\n this._addCondition(key, '$regex', this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that start with a provided\n * string. This query will use the backend index, so it will be fast even\n * for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} prefix The substring that the value must start with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n startsWith: function(key, value) {\n this._addCondition(key, '$regex', '^' + this._quote(value));\n return this;\n },\n\n /**\n * Add a constraint for finding string values that end with a provided\n * string. This will be slow for large datasets.\n * @param {String} key The key that the string to match is stored in.\n * @param {String} suffix The substring that the value must end with.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n endsWith: function(key, value) {\n this._addCondition(key, '$regex', this._quote(value) + '$');\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n ascending: function(key) {\n requires(key, 'undefined is not a valid key');\n this._order = key;\n return this;\n },\n\n /**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addAscending: function(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',' + key;\n else this._order = key;\n return this;\n },\n\n /**\n * Sorts the results in descending order by the given key.\n *\n * @param {String} key The key to order by.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n descending: function(key) {\n requires(key, 'undefined is not a valid key');\n this._order = '-' + key;\n return this;\n },\n\n /**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @param {String} key The key to order by\n * @return {AV.Query} Returns the query so you can chain this call.\n */\n addDescending: function(key) {\n requires(key, 'undefined is not a valid key');\n if (this._order) this._order += ',-' + key;\n else this._order = '-' + key;\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n near: function(key, point) {\n if (!(point instanceof AV.GeoPoint)) {\n // Try to cast it to a GeoPoint, so that near(\"loc\", [20,30]) works.\n point = new AV.GeoPoint(point);\n }\n this._addCondition(key, '$nearSphere', point);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param maxDistance Maximum distance (in radians) of results to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinRadians: function(key, point, distance) {\n this.near(key, point);\n this._addCondition(key, '$maxDistance', distance);\n return this;\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 3958.8 miles.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in miles) of results to\n * return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinMiles: function(key, point, distance) {\n return this.withinRadians(key, point, distance / 3958.8);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given and within the maximum distance given.\n * Radius of earth used is 6371.0 kilometers.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Number} maxDistance Maximum distance (in kilometers) of results\n * to return.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinKilometers: function(key, point, distance) {\n return this.withinRadians(key, point, distance / 6371.0);\n },\n\n /**\n * Add a constraint to the query that requires a particular key's\n * coordinates be contained within a given rectangular geographic bounding\n * box.\n * @param {String} key The key to be constrained.\n * @param {AV.GeoPoint} southwest\n * The lower-left inclusive corner of the box.\n * @param {AV.GeoPoint} northeast\n * The upper-right inclusive corner of the box.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n withinGeoBox: function(key, southwest, northeast) {\n if (!(southwest instanceof AV.GeoPoint)) {\n southwest = new AV.GeoPoint(southwest);\n }\n if (!(northeast instanceof AV.GeoPoint)) {\n northeast = new AV.GeoPoint(northeast);\n }\n this._addCondition(key, '$within', { $box: [southwest, northeast] });\n return this;\n },\n\n /**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @param {String[]} keys The name of the key to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n include: function(keys) {\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, keys => {\n this._include = this._include.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Include the ACL.\n * @param {Boolean} [value=true] Whether to include the ACL\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n includeACL: function(value = true) {\n this._includeACL = value;\n return this;\n },\n\n /**\n * Restrict the fields of the returned AV.Objects to include only the\n * provided keys. If this is called multiple times, then all of the keys\n * specified in each of the calls will be included.\n * @param {String[]} keys The names of the keys to include.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n select: function(keys) {\n requires(keys, 'undefined is not a valid key');\n _.forEach(arguments, keys => {\n this._select = this._select.concat(ensureArray(keys));\n });\n return this;\n },\n\n /**\n * Iterates over each result of a query, calling a callback for each one. If\n * the callback returns a promise, the iteration will not continue until\n * that promise has been fulfilled. If the callback returns a rejected\n * promise, then iteration will stop with that error. The items are\n * processed in an unspecified order. The query may not have any sort order,\n * and may not use limit or skip.\n * @param callback {Function} Callback that will be called with each result\n * of the query.\n * @return {Promise} A promise that will be fulfilled once the\n * iteration has completed.\n */\n each: function(callback, options = {}) {\n if (this._order || this._skip || this._limit >= 0) {\n var error = new Error(\n 'Cannot iterate on a query with sort, skip, or limit.'\n );\n return Promise.reject(error);\n }\n\n var query = new AV.Query(this.objectClass);\n // We can override the batch size from the options.\n // This is undocumented, but useful for testing.\n query._limit = options.batchSize || 100;\n query._where = _.clone(this._where);\n query._include = _.clone(this._include);\n\n query.ascending('objectId');\n\n var finished = false;\n return continueWhile(\n function() {\n return !finished;\n },\n function() {\n return query.find(options).then(function(results) {\n var callbacksDone = Promise.resolve();\n _.each(results, function(result) {\n callbacksDone = callbacksDone.then(function() {\n return callback(result);\n });\n });\n\n return callbacksDone.then(function() {\n if (results.length >= query._limit) {\n query.greaterThan('objectId', results[results.length - 1].id);\n } else {\n finished = true;\n }\n });\n });\n }\n );\n },\n\n /**\n * Subscribe the changes of this query.\n *\n * LiveQuery is not included in the default bundle: {@link https://url.leanapp.cn/enable-live-query}.\n *\n * @since 3.0.0\n * @return {AV.LiveQuery} An eventemitter which can be used to get LiveQuery updates;\n */\n subscribe(options) {\n return AV.LiveQuery.init(this, options);\n },\n }\n );\n\n AV.FriendShipQuery = AV.Query._extend({\n _newObject: function() {\n const UserClass = AV.Object._getSubclass('_User');\n return new UserClass();\n },\n _processResult: function(json) {\n if (json && json[this._friendshipTag]) {\n var user = json[this._friendshipTag];\n if (user.__type === 'Pointer' && user.className === '_User') {\n delete user.__type;\n delete user.className;\n }\n return user;\n } else {\n return null;\n }\n },\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/query.js","const _ = require('underscore');\nconst EventEmitter = require('eventemitter3');\nconst { inherits } = require('./utils');\nconst { request } = require('./request');\n\nconst subscribe = (queryJSON, subscriptionId) =>\n request({\n method: 'POST',\n path: '/LiveQuery/subscribe',\n data: {\n query: queryJSON,\n id: subscriptionId,\n },\n });\n\nmodule.exports = AV => {\n const requireRealtime = () => {\n if (!AV._config.realtime) {\n throw new Error(\n 'LiveQuery not supported. Please use the LiveQuery bundle. https://url.leanapp.cn/enable-live-query'\n );\n }\n };\n /**\n * @class\n * A LiveQuery, created by {@link AV.Query#subscribe} is an EventEmitter notifies changes of the Query.\n * @since 3.0.0\n */\n AV.LiveQuery = inherits(\n EventEmitter,\n /** @lends AV.LiveQuery.prototype */ {\n constructor(id, client, queryJSON, subscriptionId) {\n EventEmitter.apply(this);\n this.id = id;\n this._client = client;\n this._client.register(this);\n this._queryJSON = queryJSON;\n this._subscriptionId = subscriptionId;\n this._onMessage = this._dispatch.bind(this);\n this._onReconnect = () => {\n subscribe(this._queryJSON, this._subscriptionId).catch(error =>\n console.error(`LiveQuery resubscribe error: ${error.message}`)\n );\n };\n client.on('message', this._onMessage);\n client.on('reconnect', this._onReconnect);\n },\n _dispatch(message) {\n message.forEach(({ op, object, query_id: queryId, updatedKeys }) => {\n if (queryId !== this.id) return;\n const target = AV.parseJSON(\n _.extend(\n {\n __type: object.className === '_File' ? 'File' : 'Object',\n },\n object\n )\n );\n if (updatedKeys) {\n /**\n * An existing AV.Object which fulfills the Query you subscribe is updated.\n * @event AV.LiveQuery#update\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which doesn't fulfill the Query is updated and now it fulfills the Query.\n * @event AV.LiveQuery#enter\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n /**\n * An existing AV.Object which fulfills the Query is updated and now it doesn't fulfill the Query.\n * @event AV.LiveQuery#leave\n * @param {AV.Object|AV.File} target updated object\n * @param {String[]} updatedKeys updated keys\n */\n this.emit(op, target, updatedKeys);\n } else {\n /**\n * A new AV.Object which fulfills the Query you subscribe is created.\n * @event AV.LiveQuery#create\n * @param {AV.Object|AV.File} target updated object\n */\n /**\n * An existing AV.Object which fulfills the Query you subscribe is deleted.\n * @event AV.LiveQuery#delete\n * @param {AV.Object|AV.File} target updated object\n */\n this.emit(op, target);\n }\n });\n },\n /**\n * unsubscribe the query\n *\n * @return {Promise}\n */\n unsubscribe() {\n const client = this._client;\n client.off('message', this._onMessage);\n client.off('reconnect', this._onReconnect);\n client.deregister(this);\n return request({\n method: 'POST',\n path: '/LiveQuery/unsubscribe',\n data: {\n id: client.id,\n query_id: this.id,\n },\n });\n },\n },\n /** @lends AV.LiveQuery */\n {\n init(\n query,\n {\n subscriptionId: userDefinedSubscriptionId = AV._getSubscriptionId(),\n } = {}\n ) {\n requireRealtime();\n if (!(query instanceof AV.Query))\n throw new TypeError('LiveQuery must be inited with a Query');\n return Promise.resolve(userDefinedSubscriptionId).then(subscriptionId =>\n AV._config.realtime\n .createLiveQueryClient(subscriptionId)\n .then(liveQueryClient => {\n const { where, keys, returnACL } = query._getParams();\n const queryJSON = {\n where,\n keys,\n returnACL,\n className: query.className,\n };\n const promise = subscribe(queryJSON, subscriptionId)\n .then(\n ({ query_id: queryId }) =>\n new AV.LiveQuery(\n queryId,\n liveQueryClient,\n queryJSON,\n subscriptionId\n )\n )\n .finally(() => {\n liveQueryClient.deregister(promise);\n });\n liveQueryClient.register(promise);\n return promise;\n })\n );\n },\n /**\n * Pause the LiveQuery connection. This is useful to deactivate the SDK when the app is swtiched to background.\n * @static\n * @return void\n */\n pause() {\n requireRealtime();\n return AV._config.realtime.pause();\n },\n /**\n * Resume the LiveQuery connection. All subscriptions will be restored after reconnection.\n * @static\n * @return void\n */\n resume() {\n requireRealtime();\n return AV._config.realtime.resume();\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/live-query.js","const _ = require('underscore');\nconst { tap } = require('./utils');\n\nmodule.exports = AV => {\n /**\n * @class\n * @example\n * AV.Captcha.request().then(captcha => {\n * captcha.bind({\n * textInput: 'code', // the id for textInput\n * image: 'captcha',\n * verifyButton: 'verify',\n * }, {\n * success: (validateCode) => {}, // next step\n * error: (error) => {}, // present error.message to user\n * });\n * });\n */\n AV.Captcha = function Captcha(options, authOptions) {\n this._options = options;\n this._authOptions = authOptions;\n /**\n * The image url of the captcha\n * @type string\n */\n this.url = undefined;\n /**\n * The captchaToken of the captcha.\n * @type string\n */\n this.captchaToken = undefined;\n /**\n * The validateToken of the captcha.\n * @type string\n */\n this.validateToken = undefined;\n };\n\n /**\n * Refresh the captcha\n * @return {Promise.<string>} a new capcha url\n */\n AV.Captcha.prototype.refresh = function refresh() {\n return AV.Cloud._requestCaptcha(this._options, this._authOptions).then(\n ({ captchaToken, url }) => {\n _.extend(this, { captchaToken, url });\n return url;\n }\n );\n };\n\n /**\n * Verify the captcha\n * @param {String} code The code from user input\n * @return {Promise.<string>} validateToken if the code is valid\n */\n AV.Captcha.prototype.verify = function verify(code) {\n return AV.Cloud.verifyCaptcha(code, this.captchaToken).then(\n tap(validateToken => (this.validateToken = validateToken))\n );\n };\n\n if (process.env.PLATFORM === 'Browser') {\n /**\n * Bind the captcha to HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n * @param [elements]\n * @param {String|HTMLInputElement} [elements.textInput] An input element typed text, or the id for the element.\n * @param {String|HTMLImageElement} [elements.image] An image element, or the id for the element.\n * @param {String|HTMLElement} [elements.verifyButton] A button element, or the id for the element.\n * @param [callbacks]\n * @param {Function} [callbacks.success] Success callback will be called if the code is verified. The param `validateCode` can be used for further SMS request.\n * @param {Function} [callbacks.error] Error callback will be called if something goes wrong, detailed in param `error.message`.\n */\n AV.Captcha.prototype.bind = function bind(\n { textInput, image, verifyButton },\n { success, error }\n ) {\n if (typeof textInput === 'string') {\n textInput = document.getElementById(textInput);\n if (!textInput)\n throw new Error(`textInput with id ${textInput} not found`);\n }\n if (typeof image === 'string') {\n image = document.getElementById(image);\n if (!image) throw new Error(`image with id ${image} not found`);\n }\n if (typeof verifyButton === 'string') {\n verifyButton = document.getElementById(verifyButton);\n if (!verifyButton)\n throw new Error(`verifyButton with id ${verifyButton} not found`);\n }\n\n this.__refresh = () =>\n this.refresh()\n .then(url => {\n image.src = url;\n if (textInput) {\n textInput.value = '';\n textInput.focus();\n }\n })\n .catch(err => console.warn(`refresh captcha fail: ${err.message}`));\n if (image) {\n this.__image = image;\n image.src = this.url;\n image.addEventListener('click', this.__refresh);\n }\n\n this.__verify = () => {\n const code = textInput.value;\n this.verify(code)\n .catch(err => {\n this.__refresh();\n throw err;\n })\n .then(success, error)\n .catch(err => console.warn(`verify captcha fail: ${err.message}`));\n };\n if (textInput && verifyButton) {\n this.__verifyButton = verifyButton;\n verifyButton.addEventListener('click', this.__verify);\n }\n };\n\n /**\n * unbind the captcha from HTMLElements. <b>ONLY AVAILABLE in browsers</b>.\n */\n AV.Captcha.prototype.unbind = function unbind() {\n if (this.__image)\n this.__image.removeEventListener('click', this.__refresh);\n if (this.__verifyButton)\n this.__verifyButton.removeEventListener('click', this.__verify);\n };\n }\n\n /**\n * Request a captcha\n * @param [options]\n * @param {Number} [options.width] width(px) of the captcha, ranged 60-200\n * @param {Number} [options.height] height(px) of the captcha, ranged 30-100\n * @param {Number} [options.size=4] length of the captcha, ranged 3-6. MasterKey required.\n * @param {Number} [options.ttl=60] time to live(s), ranged 10-180. MasterKey required.\n * @return {Promise.<AV.Captcha>}\n */\n AV.Captcha.request = (options, authOptions) => {\n const captcha = new AV.Captcha(options, authOptions);\n return captcha.refresh().then(() => captcha);\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/captcha.js","const _ = require('underscore');\nconst { _request, request } = require('./request');\n\nmodule.exports = function(AV) {\n /**\n * Contains functions for calling and declaring\n * <p><strong><em>\n * Some functions are only available from Cloud Code.\n * </em></strong></p>\n *\n * @namespace\n * @borrows AV.Captcha.request as requestCaptcha\n */\n AV.Cloud = AV.Cloud || {};\n\n _.extend(\n AV.Cloud,\n /** @lends AV.Cloud */ {\n /**\n * Makes a call to a cloud function.\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n run(name, data, options) {\n return request({\n service: 'engine',\n method: 'POST',\n path: `/functions/${name}`,\n data: AV._encode(data, null, true),\n authOptions: options,\n }).then(resp => {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Makes a call to a cloud function, you can send {AV.Object} as param or a field of param; the response\n * from server will also be parsed as an {AV.Object}, array of {AV.Object}, or object includes {AV.Object}\n * @param {String} name The function name.\n * @param {Object} [data] The parameters to send to the cloud function.\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result of the function.\n */\n rpc(name, data, options) {\n if (_.isArray(data)) {\n return Promise.reject(\n new Error(\n \"Can't pass Array as the param of rpc function in JavaScript SDK.\"\n )\n );\n }\n\n return request({\n service: 'engine',\n method: 'POST',\n path: `/call/${name}`,\n data: AV._encodeObjectOrArray(data),\n authOptions: options,\n }).then(resp => {\n return AV._decode(resp).result;\n });\n },\n\n /**\n * Make a call to request server date time.\n * @return {Promise.<Date>} A promise that will be resolved with the result\n * of the function.\n * @since 0.5.9\n */\n getServerDate() {\n return _request('date', null, null, 'GET').then(function(resp) {\n return AV._decode(resp);\n });\n },\n\n /**\n * Makes a call to request an sms code for operation verification.\n * @param {String|Object} data The mobile phone number string or a JSON\n * object that contains mobilePhoneNumber,template,sign,op,ttl,name etc.\n * @param {String} data.mobilePhoneNumber\n * @param {String} [data.template] sms template name\n * @param {String} [data.sign] sms signature name\n * @param {String} [data.smsType] sending code by `sms` (default) or `voice` call\n * @param {SMSAuthOptions} [options]\n * @return {Promise} A promise that will be resolved if the request succeed\n */\n requestSmsCode(data, options = {}) {\n if (_.isString(data)) {\n data = { mobilePhoneNumber: data };\n }\n if (!data.mobilePhoneNumber) {\n throw new Error('Missing mobilePhoneNumber.');\n }\n if (options.validateToken) {\n data = _.extend({}, data, {\n validate_token: options.validateToken,\n });\n }\n return _request('requestSmsCode', null, null, 'POST', data, options);\n },\n\n /**\n * Makes a call to verify sms code that sent by AV.Cloud.requestSmsCode\n * @param {String} code The sms code sent by AV.Cloud.requestSmsCode\n * @param {phone} phone The mobile phoner number.\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n verifySmsCode(code, phone) {\n if (!code) throw new Error('Missing sms code.');\n var params = {};\n if (_.isString(phone)) {\n params['mobilePhoneNumber'] = phone;\n }\n\n return _request('verifySmsCode', code, null, 'POST', params);\n },\n\n _requestCaptcha(options, authOptions) {\n return _request(\n 'requestCaptcha',\n null,\n null,\n 'GET',\n options,\n authOptions\n ).then(({ captcha_url: url, captcha_token: captchaToken }) => ({\n captchaToken,\n url,\n }));\n },\n\n /**\n * Request a captcha.\n */\n requestCaptcha: AV.Captcha.request,\n\n /**\n * Verify captcha code. This is the low-level API for captcha.\n * Checkout {@link AV.Captcha} for high abstract APIs.\n * @param {String} code the code from user input\n * @param {String} captchaToken captchaToken returned by {@link AV.Cloud.requestCaptcha}\n * @return {Promise.<String>} validateToken if the code is valid\n */\n verifyCaptcha(code, captchaToken) {\n return _request('verifyCaptcha', null, null, 'POST', {\n captcha_code: code,\n captcha_token: captchaToken,\n }).then(({ validate_token: validateToken }) => validateToken);\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/cloudfunction.js","const request = require('./request').request;\n\nmodule.exports = function(AV) {\n AV.Installation = AV.Object.extend('_Installation');\n\n /**\n * @namespace\n */\n AV.Push = AV.Push || {};\n\n /**\n * Sends a push notification.\n * @param {Object} data The data of the push notification.\n * @param {String[]} [data.channels] An Array of channels to push to.\n * @param {Date} [data.push_time] A Date object for when to send the push.\n * @param {Date} [data.expiration_time] A Date object for when to expire\n * the push.\n * @param {Number} [data.expiration_interval] The seconds from now to expire the push.\n * @param {Number} [data.flow_control] The clients to notify per second\n * @param {AV.Query} [data.where] An AV.Query over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {String} [data.cql] A CQL statement over AV.Installation that is used to match\n * a set of installations to push to.\n * @param {Object} data.data The data to send as part of the push.\n More details: https://url.leanapp.cn/pushData\n * @param {AuthOptions} [options]\n * @return {Promise}\n */\n AV.Push.send = function(data, options) {\n if (data.where) {\n data.where = data.where._getParams().where;\n }\n\n if (data.where && data.cql) {\n throw new Error(\"Both where and cql can't be set\");\n }\n\n if (data.push_time) {\n data.push_time = data.push_time.toJSON();\n }\n\n if (data.expiration_time) {\n data.expiration_time = data.expiration_time.toJSON();\n }\n\n if (data.expiration_time && data.expiration_interval) {\n throw new Error(\n \"Both expiration_time and expiration_interval can't be set\"\n );\n }\n\n return request({\n service: 'push',\n method: 'POST',\n path: '/push',\n data,\n authOptions: options,\n });\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/push.js","const _ = require('underscore');\nconst AVRequest = require('./request')._request;\nconst { getSessionToken } = require('./utils');\n\nmodule.exports = function(AV) {\n const getUser = (options = {}) => {\n const sessionToken = getSessionToken(options);\n if (sessionToken) {\n return AV.User._fetchUserBySessionToken(getSessionToken(options));\n }\n return AV.User.currentAsync();\n };\n\n const getUserPointer = options =>\n getUser(options).then(currUser =>\n AV.Object.createWithoutData('_User', currUser.id)._toPointer()\n );\n\n /**\n * Contains functions to deal with Status in LeanCloud.\n * @class\n */\n AV.Status = function(imageUrl, message) {\n this.data = {};\n this.inboxType = 'default';\n this.query = null;\n if (imageUrl && typeof imageUrl === 'object') {\n this.data = imageUrl;\n } else {\n if (imageUrl) {\n this.data.image = imageUrl;\n }\n if (message) {\n this.data.message = message;\n }\n }\n return this;\n };\n\n _.extend(\n AV.Status.prototype,\n /** @lends AV.Status.prototype */ {\n /**\n * Gets the value of an attribute in status data.\n * @param {String} attr The string name of an attribute.\n */\n get: function(attr) {\n return this.data[attr];\n },\n /**\n * Sets a hash of model attributes on the status data.\n * @param {String} key The key to set.\n * @param {any} value The value to give it.\n */\n set: function(key, value) {\n this.data[key] = value;\n return this;\n },\n /**\n * Destroy this status,then it will not be avaiable in other user's inboxes.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the destroy\n * completes.\n */\n destroy: function(options) {\n if (!this.id)\n return Promise.reject(new Error('The status id is not exists.'));\n var request = AVRequest('statuses', null, this.id, 'DELETE', options);\n return request;\n },\n /**\n * Cast the AV.Status object to an AV.Object pointer.\n * @return {AV.Object} A AV.Object pointer.\n */\n toObject: function() {\n if (!this.id) return null;\n return AV.Object.createWithoutData('_Status', this.id);\n },\n _getDataJSON: function() {\n var json = _.clone(this.data);\n return AV._encode(json);\n },\n /**\n * Send a status by a AV.Query object.\n * @since 0.3.0\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a status to male users\n * var status = new AVStatus('image url', 'a message');\n * status.query = new AV.Query('_User');\n * status.query.equalTo('gender', 'male');\n * status.send().then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n send: function(options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!this.query) {\n return AV.Status.sendStatusToFollowers(this, options);\n }\n\n return getUserPointer(options)\n .then(currUser => {\n var query = this.query._getParams();\n query.className = this.query.className;\n var data = {};\n data.query = query;\n this.data = this.data || {};\n this.data.source = this.data.source || currUser;\n data.data = this._getDataJSON();\n data.inboxType = this.inboxType || 'default';\n\n return AVRequest('statuses', null, null, 'POST', data, options);\n })\n .then(response => {\n this.id = response.objectId;\n this.createdAt = AV._parseDate(response.createdAt);\n return this;\n });\n },\n\n _finishFetch: function(serverData) {\n this.id = serverData.objectId;\n this.createdAt = AV._parseDate(serverData.createdAt);\n this.updatedAt = AV._parseDate(serverData.updatedAt);\n this.messageId = serverData.messageId;\n delete serverData.messageId;\n delete serverData.objectId;\n delete serverData.createdAt;\n delete serverData.updatedAt;\n this.data = AV._decode(serverData);\n },\n }\n );\n\n /**\n * Send a status to current signined user's followers.\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendStatusToFollowers(status).then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendStatusToFollowers = function(status, options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n return getUserPointer(options).then(currUser => {\n var query = {};\n query.className = '_Follower';\n query.keys = 'follower';\n query.where = { user: currUser };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = status.inboxType || 'default';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function(response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * <p>Send a status from current signined user to other user's private status inbox.</p>\n * @since 0.3.0\n * @param {AV.Status} status A status object to be send to followers.\n * @param {String} target The target user or user's objectId.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the send\n * completes.\n * @example\n * // send a private status to user '52e84e47e4b0f8de283b079b'\n * var status = new AVStatus('image url', 'a message');\n * AV.Status.sendPrivateStatus(status, '52e84e47e4b0f8de283b079b').then(function(){\n * //send status successfully.\n * }, function(err){\n * //an error threw.\n * console.dir(err);\n * });\n */\n AV.Status.sendPrivateStatus = function(status, target, options = {}) {\n if (!getSessionToken(options) && !AV.User.current()) {\n throw new Error('Please signin an user.');\n }\n if (!target) {\n throw new Error('Invalid target user.');\n }\n var userObjectId = _.isString(target) ? target : target.id;\n if (!userObjectId) {\n throw new Error('Invalid target user.');\n }\n return getUserPointer(options).then(currUser => {\n var query = {};\n query.className = '_User';\n query.where = { objectId: userObjectId };\n var data = {};\n data.query = query;\n status.data = status.data || {};\n status.data.source = status.data.source || currUser;\n data.data = status._getDataJSON();\n data.inboxType = 'private';\n status.inboxType = 'private';\n\n var request = AVRequest('statuses', null, null, 'POST', data, options);\n return request.then(function(response) {\n status.id = response.objectId;\n status.createdAt = AV._parseDate(response.createdAt);\n return status;\n });\n });\n };\n\n /**\n * Count unread statuses in someone's inbox.\n * @since 0.3.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the count\n * completes.\n * @example\n * AV.Status.countUnreadStatuses(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.countUnreadStatuses = function(\n owner,\n inboxType = 'default',\n options = {}\n ) {\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return Promise.resolve(owner || getUser(options)).then(owner => {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest(\n 'subscribe/statuses/count',\n null,\n null,\n 'GET',\n params,\n options\n );\n });\n };\n\n /**\n * reset unread statuses count in someone's inbox.\n * @since 2.1.0\n * @param {AV.User} owner The status owner.\n * @param {String} inboxType The inbox type, 'default' by default.\n * @param {AuthOptions} options\n * @return {Promise} A promise that is fulfilled when the reset\n * completes.\n * @example\n * AV.Status.resetUnreadCount(AV.User.current()).then(function(response){\n * console.log(response.unread); //unread statuses number.\n * console.log(response.total); //total statuses number.\n * });\n */\n AV.Status.resetUnreadCount = function(\n owner,\n inboxType = 'default',\n options = {}\n ) {\n if (!_.isString(inboxType)) options = inboxType;\n if (!getSessionToken(options) && owner == null && !AV.User.current()) {\n throw new Error('Please signin an user or pass the owner objectId.');\n }\n return Promise.resolve(owner || getUser(options)).then(owner => {\n var params = {};\n params.inboxType = AV._encode(inboxType);\n params.owner = AV._encode(owner);\n return AVRequest(\n 'subscribe/statuses/resetUnreadCount',\n null,\n null,\n 'POST',\n params,\n options\n );\n });\n };\n\n /**\n * Create a status query to find someone's published statuses.\n * @since 0.3.0\n * @param {AV.User} source The status source, typically the publisher.\n * @return {AV.Query} The query object for status.\n * @example\n * //Find current user's published statuses.\n * var query = AV.Status.statusQuery(AV.User.current());\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.statusQuery = function(source) {\n var query = new AV.Query('_Status');\n if (source) {\n query.equalTo('source', source);\n }\n return query;\n };\n\n /**\n * <p>AV.InboxQuery defines a query that is used to fetch somebody's inbox statuses.</p>\n * @class\n */\n AV.InboxQuery = AV.Query._extend(\n /** @lends AV.InboxQuery.prototype */ {\n _objectClass: AV.Status,\n _sinceId: 0,\n _maxId: 0,\n _inboxType: 'default',\n _owner: null,\n _newObject: function() {\n return new AV.Status();\n },\n _createRequest: function(params, options) {\n return AV.InboxQuery.__super__._createRequest.call(\n this,\n params,\n options,\n '/subscribe/statuses'\n );\n },\n\n /**\n * Sets the messageId of results to skip before returning any results.\n * This is useful for pagination.\n * Default is zero.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n sinceId: function(id) {\n this._sinceId = id;\n return this;\n },\n /**\n * Sets the maximal messageId of results。\n * This is useful for pagination.\n * Default is zero that is no limition.\n * @param {Number} n the mesage id.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n maxId: function(id) {\n this._maxId = id;\n return this;\n },\n /**\n * Sets the owner of the querying inbox.\n * @param {AV.User} owner The inbox owner.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n owner: function(owner) {\n this._owner = owner;\n return this;\n },\n /**\n * Sets the querying inbox type.default is 'default'.\n * @param {String} type The inbox type.\n * @return {AV.InboxQuery} Returns the query, so you can chain this call.\n */\n inboxType: function(type) {\n this._inboxType = type;\n return this;\n },\n _getParams: function() {\n var params = AV.InboxQuery.__super__._getParams.call(this);\n params.owner = AV._encode(this._owner);\n params.inboxType = AV._encode(this._inboxType);\n params.sinceId = AV._encode(this._sinceId);\n params.maxId = AV._encode(this._maxId);\n return params;\n },\n }\n );\n\n /**\n * Create a inbox status query to find someone's inbox statuses.\n * @since 0.3.0\n * @param {AV.User} owner The inbox's owner\n * @param {String} inboxType The inbox type,'default' by default.\n * @return {AV.InboxQuery} The inbox query object.\n * @see AV.InboxQuery\n * @example\n * //Find current user's default inbox statuses.\n * var query = AV.Status.inboxQuery(AV.User.current());\n * //find the statuses after the last message id\n * query.sinceId(lastMessageId);\n * query.find().then(function(statuses){\n * //process statuses\n * });\n */\n AV.Status.inboxQuery = function(owner, inboxType) {\n var query = new AV.InboxQuery(AV.Status);\n if (owner) {\n query._owner = owner;\n }\n if (inboxType) {\n query._inboxType = inboxType;\n }\n return query;\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/status.js","const _ = require('underscore');\nconst AVRequest = require('./request')._request;\n\nmodule.exports = function(AV) {\n /**\n * A builder to generate sort string for app searching.For example:\n * @class\n * @since 0.5.1\n * @example\n * var builder = new AV.SearchSortBuilder();\n * builder.ascending('key1').descending('key2','max');\n * var query = new AV.SearchQuery('Player');\n * query.sortBy(builder);\n * query.find().then();\n */\n AV.SearchSortBuilder = function() {\n this._sortFields = [];\n };\n\n _.extend(\n AV.SearchSortBuilder.prototype,\n /** @lends AV.SearchSortBuilder.prototype */ {\n _addField: function(key, order, mode, missing) {\n var field = {};\n field[key] = {\n order: order || 'asc',\n mode: mode || 'avg',\n missing: '_' + (missing || 'last'),\n };\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Sorts the results in ascending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n ascending: function(key, mode, missing) {\n return this._addField(key, 'asc', mode, missing);\n },\n\n /**\n * Sorts the results in descending order by the given key and options.\n *\n * @param {String} key The key to order by.\n * @param {String} mode The sort mode, default is 'avg', you can choose\n * 'max' or 'min' too.\n * @param {String} missing The missing key behaviour, default is 'last',\n * you can choose 'first' too.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n descending: function(key, mode, missing) {\n return this._addField(key, 'desc', mode, missing);\n },\n\n /**\n * Add a proximity based constraint for finding objects with key point\n * values near the point given.\n * @param {String} key The key that the AV.GeoPoint is stored in.\n * @param {AV.GeoPoint} point The reference AV.GeoPoint that is used.\n * @param {Object} options The other options such as mode,order, unit etc.\n * @return {AV.SearchSortBuilder} Returns the builder, so you can chain this call.\n */\n whereNear: function(key, point, options) {\n options = options || {};\n var field = {};\n var geo = {\n lat: point.latitude,\n lon: point.longitude,\n };\n var m = {\n order: options.order || 'asc',\n mode: options.mode || 'avg',\n unit: options.unit || 'km',\n };\n m[key] = geo;\n field['_geo_distance'] = m;\n\n this._sortFields.push(field);\n return this;\n },\n\n /**\n * Build a sort string by configuration.\n * @return {String} the sort string.\n */\n build: function() {\n return JSON.stringify(AV._encode(this._sortFields));\n },\n }\n );\n\n /**\n * App searching query.Use just like AV.Query:\n *\n * Visit <a href='https://leancloud.cn/docs/app_search_guide.html'>App Searching Guide</a>\n * for more details.\n * @class\n * @since 0.5.1\n * @example\n * var query = new AV.SearchQuery('Player');\n * query.queryString('*');\n * query.find().then(function(results) {\n * console.log('Found %d objects', query.hits());\n * //Process results\n * });\n */\n AV.SearchQuery = AV.Query._extend(\n /** @lends AV.SearchQuery.prototype */ {\n _sid: null,\n _hits: 0,\n _queryString: null,\n _highlights: null,\n _sortBuilder: null,\n _clazz: null,\n\n constructor: function(className) {\n if (className) {\n this._clazz = className;\n } else {\n className = '__INVALID_CLASS';\n }\n AV.Query.call(this, className);\n },\n\n _createRequest: function(params, options) {\n return AVRequest(\n 'search/select',\n null,\n null,\n 'GET',\n params || this._getParams(),\n options\n );\n },\n\n /**\n * Sets the sid of app searching query.Default is null.\n * @param {String} sid Scroll id for searching.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n sid: function(sid) {\n this._sid = sid;\n return this;\n },\n\n /**\n * Sets the query string of app searching.\n * @param {String} q The query string.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n queryString: function(q) {\n this._queryString = q;\n return this;\n },\n\n /**\n * Sets the highlight fields. Such as\n * <pre><code>\n * query.highlights('title');\n * //or pass an array.\n * query.highlights(['title', 'content'])\n * </code></pre>\n * @param {String|String[]} highlights a list of fields.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n highlights: function(highlights) {\n var objects;\n if (highlights && _.isString(highlights)) {\n objects = _.toArray(arguments);\n } else {\n objects = highlights;\n }\n this._highlights = objects;\n return this;\n },\n\n /**\n * Sets the sort builder for this query.\n * @see AV.SearchSortBuilder\n * @param { AV.SearchSortBuilder} builder The sort builder.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n *\n */\n sortBy: function(builder) {\n this._sortBuilder = builder;\n return this;\n },\n\n /**\n * Returns the number of objects that match this query.\n * @return {Number}\n */\n hits: function() {\n if (!this._hits) {\n this._hits = 0;\n }\n return this._hits;\n },\n\n _processResult: function(json) {\n delete json['className'];\n delete json['_app_url'];\n delete json['_deeplink'];\n return json;\n },\n\n /**\n * Returns true when there are more documents can be retrieved by this\n * query instance, you can call find function to get more results.\n * @see AV.SearchQuery#find\n * @return {Boolean}\n */\n hasMore: function() {\n return !this._hitEnd;\n },\n\n /**\n * Reset current query instance state(such as sid, hits etc) except params\n * for a new searching. After resetting, hasMore() will return true.\n */\n reset: function() {\n this._hitEnd = false;\n this._sid = null;\n this._hits = 0;\n },\n\n /**\n * Retrieves a list of AVObjects that satisfy this query.\n * Either options.success or options.error is called when the find\n * completes.\n *\n * @see AV.Query#find\n * @param {AuthOptions} options\n * @return {Promise} A promise that is resolved with the results when\n * the query completes.\n */\n find: function(options) {\n var self = this;\n\n var request = this._createRequest(undefined, options);\n\n return request.then(function(response) {\n //update sid for next querying.\n if (response.sid) {\n self._oldSid = self._sid;\n self._sid = response.sid;\n } else {\n self._sid = null;\n self._hitEnd = true;\n }\n self._hits = response.hits || 0;\n\n return _.map(response.results, function(json) {\n if (json.className) {\n response.className = json.className;\n }\n var obj = self._newObject(response);\n obj.appURL = json['_app_url'];\n obj._finishFetch(self._processResult(json), true);\n return obj;\n });\n });\n },\n\n _getParams: function() {\n var params = AV.SearchQuery.__super__._getParams.call(this);\n delete params.where;\n if (this._clazz) {\n params.clazz = this.className;\n }\n if (this._sid) {\n params.sid = this._sid;\n }\n if (!this._queryString) {\n throw new Error('Please set query string.');\n } else {\n params.q = this._queryString;\n }\n if (this._highlights) {\n params.highlights = this._highlights.join(',');\n }\n if (this._sortBuilder && params.order) {\n throw new Error('sort and order can not be set at same time.');\n }\n if (this._sortBuilder) {\n params.sort = this._sortBuilder.build();\n }\n\n return params;\n },\n }\n );\n};\n\n/**\n * Sorts the results in ascending order by the given key.\n *\n * @method AV.SearchQuery#ascending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in ascending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addAscending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Sorts the results in descending order by the given key.\n *\n * @method AV.SearchQuery#descending\n * @param {String} key The key to order by.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Also sorts the results in descending order by the given key. The previous sort keys have\n * precedence over this key.\n *\n * @method AV.SearchQuery#addDescending\n * @param {String} key The key to order by\n * @return {AV.SearchQuery} Returns the query so you can chain this call.\n */\n/**\n * Include nested AV.Objects for the provided key. You can use dot\n * notation to specify which fields in the included object are also fetch.\n * @method AV.SearchQuery#include\n * @param {String[]} keys The name of the key to include.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @method AV.SearchQuery#skip\n * @param {Number} n the number of results to skip.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n/**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @method AV.SearchQuery#limit\n * @param {Number} n the number of results to limit to.\n * @return {AV.SearchQuery} Returns the query, so you can chain this call.\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/search.js","const _ = require('underscore');\nconst AVError = require('./error');\nconst { request } = require('./request');\n\nmodule.exports = function(AV) {\n /**\n * 包含了使用了 LeanCloud\n * <a href='/docs/leaninsight_guide.html'>离线数据分析功能</a>的函数。\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @namespace\n */\n AV.Insight = AV.Insight || {};\n\n _.extend(\n AV.Insight,\n /** @lends AV.Insight */ {\n /**\n * 开始一个 Insight 任务。结果里将返回 Job id,你可以拿得到的 id 使用\n * AV.Insight.JobQuery 查询任务状态和结果。\n * @param {Object} jobConfig 任务配置的 JSON 对象,例如:<code><pre>\n * { \"sql\" : \"select count(*) as c,gender from _User group by gender\",\n * \"saveAs\": {\n * \"className\" : \"UserGender\",\n * \"limit\": 1\n * }\n * }\n * </pre></code>\n * sql 指定任务执行的 SQL 语句, saveAs(可选) 指定将结果保存在哪张表里,limit 最大 1000。\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n */\n startJob: function(jobConfig, options) {\n if (!jobConfig || !jobConfig.sql) {\n throw new Error('Please provide the sql to run the job.');\n }\n var data = {\n jobConfig: jobConfig,\n appId: AV.applicationId,\n };\n return request({\n path: '/bigquery/jobs',\n method: 'POST',\n data: AV._encode(data, null, true),\n authOptions: options,\n signKey: false,\n }).then(resp => AV._decode(resp).id);\n },\n\n /**\n * 监听 Insight 任务事件(未来推出独立部署的离线分析服务后开放)\n * <p><strong><em>\n * 仅在云引擎运行环境下有效。\n * </em></strong></p>\n * @param {String} event 监听的事件,目前尚不支持。\n * @param {Function} 监听回调函数,接收 (err, id) 两个参数,err 表示错误信息,\n * id 表示任务 id。接下来你可以拿这个 id 使用AV.Insight.JobQuery 查询任务状态和结果。\n *\n */\n on: function(event, cb) {},\n }\n );\n\n /**\n * 创建一个对象,用于查询 Insight 任务状态和结果。\n * @class\n * @param {String} id 任务 id\n * @since 0.5.5\n */\n AV.Insight.JobQuery = function(id, className) {\n if (!id) {\n throw new Error('Please provide the job id.');\n }\n this.id = id;\n this.className = className;\n this._skip = 0;\n this._limit = 100;\n };\n\n _.extend(\n AV.Insight.JobQuery.prototype,\n /** @lends AV.Insight.JobQuery.prototype */ {\n /**\n * Sets the number of results to skip before returning any results.\n * This is useful for pagination.\n * Default is to skip zero results.\n * @param {Number} n the number of results to skip.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n skip: function(n) {\n this._skip = n;\n return this;\n },\n\n /**\n * Sets the limit of the number of results to return. The default limit is\n * 100, with a maximum of 1000 results being returned at a time.\n * @param {Number} n the number of results to limit to.\n * @return {AV.Query} Returns the query, so you can chain this call.\n */\n limit: function(n) {\n this._limit = n;\n return this;\n },\n\n /**\n * 查询任务状态和结果,任务结果为一个 JSON 对象,包括 status 表示任务状态, totalCount 表示总数,\n * results 数组表示任务结果数组,previewCount 表示可以返回的结果总数,任务的开始和截止时间\n * startTime、endTime 等信息。\n *\n * @param {AuthOptions} [options]\n * @return {Promise} A promise that will be resolved with the result\n * of the function.\n *\n */\n find: function(options) {\n var params = {\n skip: this._skip,\n limit: this._limit,\n };\n\n return request({\n path: `/bigquery/jobs/${this.id}`,\n method: 'GET',\n query: params,\n authOptions: options,\n signKey: false,\n }).then(function(response) {\n if (response.error) {\n return Promise.reject(new AVError(response.code, response.error));\n }\n return Promise.resolve(response);\n });\n },\n }\n );\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/insight.js","const _ = require('underscore');\nconst { request: LCRequest } = require('./request');\nconst { getSessionToken } = require('./utils');\n\nmodule.exports = function(AV) {\n const getUserWithSessionToken = authOptions => {\n if (authOptions.user) {\n if (!authOptions.user._sessionToken) {\n throw new Error('authOptions.user is not signed in.');\n }\n return Promise.resolve(authOptions.user);\n }\n if (authOptions.sessionToken) {\n return AV.User._fetchUserBySessionToken(authOptions.sessionToken);\n }\n return AV.User.currentAsync();\n };\n\n const getSessionTokenAsync = authOptions => {\n const sessionToken = getSessionToken(authOptions);\n if (sessionToken) {\n return Promise.resolve(sessionToken);\n }\n return AV.User.currentAsync().then(user => {\n if (user) {\n return user.getSessionToken();\n }\n });\n };\n\n /**\n * Contains functions to deal with Friendship in LeanCloud.\n * @class\n */\n AV.Friendship = {\n /**\n * Request friendship.\n * @since 4.8.0\n * @param {String | AV.User | Object} options if an AV.User or string is given, it will be used as the friend.\n * @param {AV.User | string} options.friend The friend (or friend's objectId) to follow.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of followeeQuery.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n request: function(options, authOptions = {}) {\n let friend;\n let attributes;\n\n if (options.friend) {\n friend = options.friend;\n attributes = options.attributes;\n } else {\n friend = options;\n }\n\n const friendObj = _.isString(friend)\n ? AV.Object.createWithoutData('_User', friend)\n : friend;\n\n return getUserWithSessionToken(authOptions).then(userObj => {\n if (!userObj) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'POST',\n path: '/users/friendshipRequests',\n data: {\n user: userObj._toPointer(),\n friend: friendObj._toPointer(),\n friendship: attributes,\n },\n authOptions,\n });\n });\n },\n\n /**\n * Accept a friendship request.\n * @since 4.8.0\n * @param {AV.Object | string | Object} options if an AV.Object or string is given, it will be used as the request in _FriendshipRequest.\n * @param {AV.Object} options.request The request (or it's objectId) to be accepted.\n * @param {Object} [options.attributes] key-value attributes dictionary to be used as conditions of {@link AV#followeeQuery}.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n acceptRequest: function(options, authOptions = {}) {\n let request;\n let attributes;\n if (options.request) {\n request = options.request;\n attributes = options.attributes;\n } else {\n request = options;\n }\n const requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/accept',\n data: {\n friendship: AV._encode(attributes),\n },\n authOptions,\n });\n });\n },\n\n /**\n * Decline a friendship request.\n * @param {AV.Object | string} request The request (or it's objectId) to be declined.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<void>}\n */\n declineRequest: function(request, authOptions = {}) {\n const requestId = _.isString(request) ? request : request.id;\n return getSessionTokenAsync(authOptions).then(sessionToken => {\n if (!sessionToken) {\n throw new Error('Please signin an user.');\n }\n return LCRequest({\n method: 'PUT',\n path: '/users/friendshipRequests/' + requestId + '/decline',\n authOptions,\n });\n });\n },\n };\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/friendship.js","const _ = require('underscore');\nconst { _request } = require('./request');\nconst AV = require('./av');\n\nconst serializeMessage = message => {\n if (typeof message === 'string') {\n return message;\n }\n if (typeof message.getPayload === 'function') {\n return JSON.stringify(message.getPayload());\n }\n return JSON.stringify(message);\n};\n\n/**\n * <p>An AV.Conversation is a local representation of a LeanCloud realtime's\n * conversation. This class is a subclass of AV.Object, and retains the\n * same functionality of an AV.Object, but also extends it with various\n * conversation specific methods, like get members, creators of this conversation.\n * </p>\n *\n * @class AV.Conversation\n * @param {String} name The name of the Role to create.\n * @param {Object} [options]\n * @param {Boolean} [options.isSystem] Set this conversation as system conversation.\n * @param {Boolean} [options.isTransient] Set this conversation as transient conversation.\n */\nmodule.exports = AV.Object.extend(\n '_Conversation',\n /** @lends AV.Conversation.prototype */ {\n constructor(name, options = {}) {\n AV.Object.prototype.constructor.call(this, null, null);\n this.set('name', name);\n if (options.isSystem !== undefined) {\n this.set('sys', options.isSystem ? true : false);\n }\n if (options.isTransient !== undefined) {\n this.set('tr', options.isTransient ? true : false);\n }\n },\n /**\n * Get current conversation's creator.\n *\n * @return {String}\n */\n getCreator() {\n return this.get('c');\n },\n\n /**\n * Get the last message's time.\n *\n * @return {Date}\n */\n getLastMessageAt() {\n return this.get('lm');\n },\n\n /**\n * Get this conversation's members\n *\n * @return {String[]}\n */\n getMembers() {\n return this.get('m');\n },\n\n /**\n * Add a member to this conversation\n *\n * @param {String} member\n */\n addMember(member) {\n return this.add('m', member);\n },\n\n /**\n * Get this conversation's members who set this conversation as muted.\n *\n * @return {String[]}\n */\n getMutedMembers() {\n return this.get('mu');\n },\n\n /**\n * Get this conversation's name field.\n *\n * @return String\n */\n getName() {\n return this.get('name');\n },\n\n /**\n * Returns true if this conversation is transient conversation.\n *\n * @return {Boolean}\n */\n isTransient() {\n return this.get('tr');\n },\n\n /**\n * Returns true if this conversation is system conversation.\n *\n * @return {Boolean}\n */\n isSystem() {\n return this.get('sys');\n },\n\n /**\n * Send realtime message to this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}\n * @param {Object} [options]\n * @param {Boolean} [options.transient] Whether send this message as transient message or not.\n * @param {String[]} [options.toClients] Ids of clients to send to. This option can be used only in system conversation.\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n send(fromClient, message, options = {}, authOptions = {}) {\n const data = {\n from_peer: fromClient,\n conv_id: this.id,\n transient: false,\n message: serializeMessage(message),\n };\n if (options.toClients !== undefined) {\n data.to_peers = options.toClients;\n }\n if (options.transient !== undefined) {\n data.transient = options.transient ? true : false;\n }\n if (options.pushData !== undefined) {\n data.push_data = options.pushData;\n }\n return _request('rtm', 'messages', null, 'POST', data, authOptions);\n },\n\n /**\n * Send realtime broadcast message to all clients, via this conversation, using HTTP request.\n *\n * @param {String} fromClient Sender's client id.\n * @param {String|Object} message The message which will send to conversation.\n * It could be a raw string, or an object with a `toJSON` method, like a\n * realtime SDK's Message object. See more: {@link https://leancloud.cn/docs/realtime_guide-js.html#消息}.\n * @param {Object} [options]\n * @param {Object} [options.pushData] Push data to this message. See more: {@link https://url.leanapp.cn/pushData 推送消息内容}.\n * @param {Object} [options.validTill] The message will valid till this time.\n * @param {AuthOptions} [authOptions]\n * @return {Promise}\n */\n broadcast(fromClient, message, options = {}, authOptions = {}) {\n const data = {\n from_peer: fromClient,\n conv_id: this.id,\n message: serializeMessage(message),\n };\n if (options.pushData !== undefined) {\n data.push = options.pushData;\n }\n if (options.validTill !== undefined) {\n let ts = options.validTill;\n if (_.isDate(ts)) {\n ts = ts.getTime();\n }\n options.valid_till = ts;\n }\n return _request('rtm', 'broadcast', null, 'POST', data, authOptions);\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/conversation.js","const _ = require('underscore');\nconst { request } = require('./request');\nconst { ensureArray, parseDate } = require('./utils');\nconst AV = require('./av');\n\n/**\n * The version change interval for Leaderboard\n * @enum\n */\nAV.LeaderboardVersionChangeInterval = {\n NEVER: 'never',\n DAY: 'day',\n WEEK: 'week',\n MONTH: 'month',\n};\n\n/**\n * The order of the leaderboard results\n * @enum\n */\nAV.LeaderboardOrder = {\n ASCENDING: 'ascending',\n DESCENDING: 'descending',\n};\n\n/**\n * The update strategy for Leaderboard\n * @enum\n */\nAV.LeaderboardUpdateStrategy = {\n /** Only keep the best statistic. If the leaderboard is in descending order, the best statistic is the highest one. */\n BETTER: 'better',\n /** Keep the last updated statistic */\n LAST: 'last',\n /** Keep the sum of all updated statistics */\n SUM: 'sum',\n};\n\n/**\n * @typedef {Object} Ranking\n * @property {number} rank Starts at 0\n * @property {number} value the statistic value of this ranking\n * @property {AV.User} user The user of this ranking\n * @property {Statistic[]} [includedStatistics] Other statistics of the user, specified by the `includeStatistic` option of `AV.Leaderboard.getResults()`\n */\n\n/**\n * @typedef {Object} LeaderboardArchive\n * @property {string} statisticName\n * @property {number} version version of the leaderboard\n * @property {string} status\n * @property {string} url URL for the downloadable archive\n * @property {Date} activatedAt time when this version became active\n * @property {Date} deactivatedAt time when this version was deactivated by a version incrementing\n */\n\n/**\n * @class\n */\nfunction Statistic({ name, value, version }) {\n /**\n * @type {string}\n */\n this.name = name;\n /**\n * @type {number}\n */\n this.value = value;\n /**\n * @type {number?}\n */\n this.version = version;\n}\n\nconst parseStatisticData = statisticData => {\n const { statisticName: name, statisticValue: value, version } = AV._decode(\n statisticData\n );\n return new Statistic({ name, value, version });\n};\n\n/**\n * @class\n */\nAV.Leaderboard = function Leaderboard(statisticName) {\n /**\n * @type {string}\n */\n this.statisticName = statisticName;\n /**\n * @type {AV.LeaderboardOrder}\n */\n this.order = undefined;\n /**\n * @type {AV.LeaderboardUpdateStrategy}\n */\n this.updateStrategy = undefined;\n /**\n * @type {AV.LeaderboardVersionChangeInterval}\n */\n this.versionChangeInterval = undefined;\n /**\n * @type {number}\n */\n this.version = undefined;\n /**\n * @type {Date?}\n */\n this.nextResetAt = undefined;\n /**\n * @type {Date?}\n */\n this.createdAt = undefined;\n};\nconst Leaderboard = AV.Leaderboard;\n\n/**\n * Create an instance of Leaderboard for the give statistic name.\n * @param {string} statisticName\n * @return {AV.Leaderboard}\n */\nAV.Leaderboard.createWithoutData = statisticName =>\n new Leaderboard(statisticName);\n/**\n * (masterKey required) Create a new Leaderboard.\n * @param {Object} options\n * @param {string} options.statisticName\n * @param {AV.LeaderboardOrder} options.order\n * @param {AV.LeaderboardVersionChangeInterval} [options.versionChangeInterval] default to WEEK\n * @param {AV.LeaderboardUpdateStrategy} [options.updateStrategy] default to BETTER\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.createLeaderboard = (\n { statisticName, order, versionChangeInterval, updateStrategy },\n authOptions\n) =>\n request({\n method: 'POST',\n path: '/leaderboard/leaderboards',\n data: {\n statisticName,\n order,\n versionChangeInterval,\n updateStrategy,\n },\n authOptions,\n }).then(data => {\n const leaderboard = new Leaderboard(statisticName);\n return leaderboard._finishFetch(data);\n });\n/**\n * Get the Leaderboard with the specified statistic name.\n * @param {string} statisticName\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\nAV.Leaderboard.getLeaderboard = (statisticName, authOptions) =>\n Leaderboard.createWithoutData(statisticName).fetch(authOptions);\n/**\n * Get Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {string[]} [options.statisticNames] Specify the statisticNames. If not set, all statistics of the user will be fetched.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.getStatistics = (user, { statisticNames } = {}, authOptions) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'GET',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n statistics: statisticNames\n ? ensureArray(statisticNames).join(',')\n : undefined,\n },\n authOptions,\n }).then(({ results }) => results.map(parseStatisticData));\n });\n\n/**\n * Update Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to update.\n * @param {AuthOptions} [options] AuthOptions plus:\n * @param {boolean} [options.overwrite] Wethere to overwrite these statistics disregarding the updateStrategy of there leaderboards\n * @return {Promise<Statistic[]>}\n */\nAV.Leaderboard.updateStatistics = (user, statistics, options = {}) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n const data = _.map(statistics, (value, key) => ({\n statisticName: key,\n statisticValue: value,\n }));\n const { overwrite } = options;\n return request({\n method: 'POST',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n overwrite: overwrite ? 1 : undefined,\n },\n data,\n authOptions: options,\n }).then(({ results }) => results.map(parseStatisticData));\n });\n\n/**\n * Delete Statistics for the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} statistics A name-value pair representing the statistics to delete.\n * @param {AuthOptions} [options]\n * @return {Promise<void>}\n */\nAV.Leaderboard.deleteStatistics = (user, statisticNames, authOptions) =>\n Promise.resolve().then(() => {\n if (!(user && user.id)) throw new Error('user must be an AV.User');\n return request({\n method: 'DELETE',\n path: `/leaderboard/users/${user.id}/statistics`,\n query: {\n statistics: ensureArray(statisticNames).join(','),\n },\n authOptions,\n }).then(() => undefined);\n });\n\n_.extend(\n Leaderboard.prototype,\n /** @lends AV.Leaderboard.prototype */ {\n _finishFetch(data) {\n _.forEach(data, (value, key) => {\n if (key === 'updatedAt' || key === 'objectId') return;\n if (key === 'expiredAt') {\n key = 'nextResetAt';\n }\n if (key === 'createdAt') {\n value = parseDate(value);\n }\n if (value && value.__type === 'Date') {\n value = parseDate(value.iso);\n }\n this[key] = value;\n });\n return this;\n },\n /**\n * Fetch data from the srever.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n fetch(authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n authOptions,\n }).then(data => this._finishFetch(data));\n },\n /**\n * Counts the number of users participated in this leaderboard\n * @param {Object} [options]\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<number>}\n */\n count({ version } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/ranks`,\n query: {\n count: 1,\n limit: 0,\n version,\n },\n authOptions,\n }).then(({ count }) => count);\n },\n _getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n },\n authOptions,\n userId\n ) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/ranks${\n userId ? `/${userId}` : ''\n }`,\n query: {\n skip,\n limit,\n selectUserKeys:\n _.union(\n ensureArray(selectUserKeys),\n ensureArray(includeUserKeys)\n ).join(',') || undefined,\n includeUser: includeUserKeys\n ? ensureArray(includeUserKeys).join(',')\n : undefined,\n includeStatistics: includeStatistics\n ? ensureArray(includeStatistics).join(',')\n : undefined,\n version,\n },\n authOptions,\n }).then(({ results: rankings }) =>\n rankings.map(rankingData => {\n const {\n user,\n statisticValue: value,\n rank,\n statistics = [],\n } = AV._decode(rankingData);\n return {\n user,\n value,\n rank,\n includedStatistics: statistics.map(parseStatisticData),\n };\n })\n );\n },\n /**\n * Retrieve a list of ranked users for this Leaderboard.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n } = {},\n authOptions\n ) {\n return this._getResults(\n {\n skip,\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n },\n authOptions\n );\n },\n /**\n * Retrieve a list of ranked users for this Leaderboard, centered on the specified user.\n * @param {AV.User} user The specified AV.User pointer.\n * @param {Object} [options]\n * @param {number} [options.limit] The limit of the number of results.\n * @param {string[]} [options.selectUserKeys] Specify keys of the users to include in the Rankings\n * @param {string[]} [options.includeUserKeys] If the value of a selected user keys is a Pointer, use this options to include its value.\n * @param {string[]} [options.includeStatistics] Specify other statistics to include in the Rankings\n * @param {number} [options.version] Specify the version of the leaderboard\n * @param {AuthOptions} [authOptions]\n * @return {Promise<Ranking[]>}\n */\n getResultsAroundUser(user, options = {}, authOptions) {\n // getResultsAroundUser(options, authOptions)\n if (user && typeof user.id !== 'string') {\n return this.getResultsAroundUser(undefined, user, options);\n }\n const {\n limit,\n selectUserKeys,\n includeUserKeys,\n includeStatistics,\n version,\n } = options;\n return this._getResults(\n { limit, selectUserKeys, includeUserKeys, includeStatistics, version },\n authOptions,\n user ? user.id : 'self'\n );\n },\n _update(data, authOptions) {\n return request({\n method: 'PUT',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n data,\n authOptions,\n }).then(result => this._finishFetch(result));\n },\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardVersionChangeInterval} versionChangeInterval\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateVersionChangeInterval(versionChangeInterval, authOptions) {\n return this._update({ versionChangeInterval }, authOptions);\n },\n /**\n * (masterKey required) Update the version change interval of the Leaderboard.\n * @param {AV.LeaderboardUpdateStrategy} updateStrategy\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n updateUpdateStrategy(updateStrategy, authOptions) {\n return this._update({ updateStrategy }, authOptions);\n },\n /**\n * (masterKey required) Reset the Leaderboard. The version of the Leaderboard will be incremented by 1.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<AV.Leaderboard>}\n */\n reset(authOptions) {\n return request({\n method: 'PUT',\n path: `/leaderboard/leaderboards/${this.statisticName}/incrementVersion`,\n authOptions,\n }).then(data => this._finishFetch(data));\n },\n /**\n * (masterKey required) Delete the Leaderboard and its all archived versions.\n * @param {AuthOptions} [authOptions]\n * @return {void}\n */\n destroy(authOptions) {\n return AV.request({\n method: 'DELETE',\n path: `/leaderboard/leaderboards/${this.statisticName}`,\n authOptions,\n }).then(() => undefined);\n },\n /**\n * (masterKey required) Get archived versions.\n * @param {Object} [options]\n * @param {number} [options.skip] The number of results to skip. This is useful for pagination.\n * @param {number} [options.limit] The limit of the number of results.\n * @param {AuthOptions} [authOptions]\n * @return {Promise<LeaderboardArchive[]>}\n */\n getArchives({ skip, limit } = {}, authOptions) {\n return request({\n method: 'GET',\n path: `/leaderboard/leaderboards/${this.statisticName}/archives`,\n query: {\n skip,\n limit,\n },\n authOptions,\n }).then(({ results }) =>\n results.map(({ version, status, url, activatedAt, deactivatedAt }) => ({\n statisticName: this.statisticName,\n version,\n status,\n url,\n activatedAt: parseDate(activatedAt.iso),\n deactivatedAt: parseDate(deactivatedAt.iso),\n }))\n );\n },\n }\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/leaderboard.js","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../node_modules/tslib/tslib.es6.js",null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar AbortError = /** @class */ (function (_super) {\n __extends(AbortError, _super);\n function AbortError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.name = \"AbortError\";\n return _this;\n }\n return AbortError;\n}(Error));\n\nexport { AbortError };\n//# sourceMappingURL=index.es.js.map\n\n\n\n// WEBPACK FOOTER //\n// ../../adapter-utils/lib/index.es.js","/**\n * @author Toru Nagashima <https://github.com/mysticatea>\n * @copyright 2015 Toru Nagashima. All rights reserved.\n * See LICENSE file in root directory for full license.\n */\n/**\n * @typedef {object} PrivateData\n * @property {EventTarget} eventTarget The event target.\n * @property {{type:string}} event The original event object.\n * @property {number} eventPhase The current event phase.\n * @property {EventTarget|null} currentTarget The current event target.\n * @property {boolean} canceled The flag to prevent default.\n * @property {boolean} stopped The flag to stop propagation.\n * @property {boolean} immediateStopped The flag to stop propagation immediately.\n * @property {Function|null} passiveListener The listener if the current listener is passive. Otherwise this is null.\n * @property {number} timeStamp The unix time.\n * @private\n */\n\n/**\n * Private data for event wrappers.\n * @type {WeakMap<Event, PrivateData>}\n * @private\n */\nconst privateData = new WeakMap();\n\n/**\n * Cache for wrapper classes.\n * @type {WeakMap<Object, Function>}\n * @private\n */\nconst wrappers = new WeakMap();\n\n/**\n * Get private data.\n * @param {Event} event The event object to get private data.\n * @returns {PrivateData} The private data of the event.\n * @private\n */\nfunction pd(event) {\n const retv = privateData.get(event);\n console.assert(\n retv != null,\n \"'this' is expected an Event object, but got\",\n event\n );\n return retv\n}\n\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data {PrivateData} private data.\n */\nfunction setCancelFlag(data) {\n if (data.passiveListener != null) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(\n \"Unable to preventDefault inside passive event listener invocation.\",\n data.passiveListener\n );\n }\n return\n }\n if (!data.event.cancelable) {\n return\n }\n\n data.canceled = true;\n if (typeof data.event.preventDefault === \"function\") {\n data.event.preventDefault();\n }\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#interface-event\n * @private\n */\n/**\n * The event wrapper.\n * @constructor\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Event|{type:string}} event The original event to wrap.\n */\nfunction Event(eventTarget, event) {\n privateData.set(this, {\n eventTarget,\n event,\n eventPhase: 2,\n currentTarget: eventTarget,\n canceled: false,\n stopped: false,\n immediateStopped: false,\n passiveListener: null,\n timeStamp: event.timeStamp || Date.now(),\n });\n\n // https://heycam.github.io/webidl/#Unforgeable\n Object.defineProperty(this, \"isTrusted\", { value: false, enumerable: true });\n\n // Define accessors\n const keys = Object.keys(event);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in this)) {\n Object.defineProperty(this, key, defineRedirectDescriptor(key));\n }\n }\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEvent.prototype = {\n /**\n * The type of this event.\n * @type {string}\n */\n get type() {\n return pd(this).event.type\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get target() {\n return pd(this).eventTarget\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n */\n get currentTarget() {\n return pd(this).currentTarget\n },\n\n /**\n * @returns {EventTarget[]} The composed path of this event.\n */\n composedPath() {\n const currentTarget = pd(this).currentTarget;\n if (currentTarget == null) {\n return []\n }\n return [currentTarget]\n },\n\n /**\n * Constant of NONE.\n * @type {number}\n */\n get NONE() {\n return 0\n },\n\n /**\n * Constant of CAPTURING_PHASE.\n * @type {number}\n */\n get CAPTURING_PHASE() {\n return 1\n },\n\n /**\n * Constant of AT_TARGET.\n * @type {number}\n */\n get AT_TARGET() {\n return 2\n },\n\n /**\n * Constant of BUBBLING_PHASE.\n * @type {number}\n */\n get BUBBLING_PHASE() {\n return 3\n },\n\n /**\n * The target of this event.\n * @type {number}\n */\n get eventPhase() {\n return pd(this).eventPhase\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopPropagation() {\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.stopPropagation === \"function\") {\n data.event.stopPropagation();\n }\n },\n\n /**\n * Stop event bubbling.\n * @returns {void}\n */\n stopImmediatePropagation() {\n const data = pd(this);\n\n data.stopped = true;\n data.immediateStopped = true;\n if (typeof data.event.stopImmediatePropagation === \"function\") {\n data.event.stopImmediatePropagation();\n }\n },\n\n /**\n * The flag to be bubbling.\n * @type {boolean}\n */\n get bubbles() {\n return Boolean(pd(this).event.bubbles)\n },\n\n /**\n * The flag to be cancelable.\n * @type {boolean}\n */\n get cancelable() {\n return Boolean(pd(this).event.cancelable)\n },\n\n /**\n * Cancel this event.\n * @returns {void}\n */\n preventDefault() {\n setCancelFlag(pd(this));\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n */\n get defaultPrevented() {\n return pd(this).canceled\n },\n\n /**\n * The flag to be composed.\n * @type {boolean}\n */\n get composed() {\n return Boolean(pd(this).event.composed)\n },\n\n /**\n * The unix time of this event.\n * @type {number}\n */\n get timeStamp() {\n return pd(this).timeStamp\n },\n\n /**\n * The target of this event.\n * @type {EventTarget}\n * @deprecated\n */\n get srcElement() {\n return pd(this).eventTarget\n },\n\n /**\n * The flag to stop event bubbling.\n * @type {boolean}\n * @deprecated\n */\n get cancelBubble() {\n return pd(this).stopped\n },\n set cancelBubble(value) {\n if (!value) {\n return\n }\n const data = pd(this);\n\n data.stopped = true;\n if (typeof data.event.cancelBubble === \"boolean\") {\n data.event.cancelBubble = true;\n }\n },\n\n /**\n * The flag to indicate cancellation state.\n * @type {boolean}\n * @deprecated\n */\n get returnValue() {\n return !pd(this).canceled\n },\n set returnValue(value) {\n if (!value) {\n setCancelFlag(pd(this));\n }\n },\n\n /**\n * Initialize this event object. But do nothing under event dispatching.\n * @param {string} type The event type.\n * @param {boolean} [bubbles=false] The flag to be possible to bubble up.\n * @param {boolean} [cancelable=false] The flag to be possible to cancel.\n * @deprecated\n */\n initEvent() {\n // Do nothing.\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(Event.prototype, \"constructor\", {\n value: Event,\n configurable: true,\n writable: true,\n});\n\n// Ensure `event instanceof window.Event` is `true`.\nif (typeof window !== \"undefined\" && typeof window.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, window.Event.prototype);\n\n // Make association for wrappers.\n wrappers.set(window.Event.prototype, Event);\n}\n\n/**\n * Get the property descriptor to redirect a given property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to redirect the property.\n * @private\n */\nfunction defineRedirectDescriptor(key) {\n return {\n get() {\n return pd(this).event[key]\n },\n set(value) {\n pd(this).event[key] = value;\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Get the property descriptor to call a given method property.\n * @param {string} key Property name to define property descriptor.\n * @returns {PropertyDescriptor} The property descriptor to call the method property.\n * @private\n */\nfunction defineCallDescriptor(key) {\n return {\n value() {\n const event = pd(this).event;\n return event[key].apply(event, arguments)\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define new wrapper class.\n * @param {Function} BaseEvent The base wrapper class.\n * @param {Object} proto The prototype of the original event.\n * @returns {Function} The defined wrapper class.\n * @private\n */\nfunction defineWrapper(BaseEvent, proto) {\n const keys = Object.keys(proto);\n if (keys.length === 0) {\n return BaseEvent\n }\n\n /** CustomEvent */\n function CustomEvent(eventTarget, event) {\n BaseEvent.call(this, eventTarget, event);\n }\n\n CustomEvent.prototype = Object.create(BaseEvent.prototype, {\n constructor: { value: CustomEvent, configurable: true, writable: true },\n });\n\n // Define accessors.\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!(key in BaseEvent.prototype)) {\n const descriptor = Object.getOwnPropertyDescriptor(proto, key);\n const isFunc = typeof descriptor.value === \"function\";\n Object.defineProperty(\n CustomEvent.prototype,\n key,\n isFunc\n ? defineCallDescriptor(key)\n : defineRedirectDescriptor(key)\n );\n }\n }\n\n return CustomEvent\n}\n\n/**\n * Get the wrapper class of a given prototype.\n * @param {Object} proto The prototype of the original event to get its wrapper.\n * @returns {Function} The wrapper class.\n * @private\n */\nfunction getWrapper(proto) {\n if (proto == null || proto === Object.prototype) {\n return Event\n }\n\n let wrapper = wrappers.get(proto);\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapper(Object.getPrototypeOf(proto)), proto);\n wrappers.set(proto, wrapper);\n }\n return wrapper\n}\n\n/**\n * Wrap a given event to management a dispatching.\n * @param {EventTarget} eventTarget The event target of this dispatching.\n * @param {Object} event The event to wrap.\n * @returns {Event} The wrapper instance.\n * @private\n */\nfunction wrapEvent(eventTarget, event) {\n const Wrapper = getWrapper(Object.getPrototypeOf(event));\n return new Wrapper(eventTarget, event)\n}\n\n/**\n * Get the immediateStopped flag of a given event.\n * @param {Event} event The event to get.\n * @returns {boolean} The flag to stop propagation immediately.\n * @private\n */\nfunction isStopped(event) {\n return pd(event).immediateStopped\n}\n\n/**\n * Set the current event phase of a given event.\n * @param {Event} event The event to set current target.\n * @param {number} eventPhase New event phase.\n * @returns {void}\n * @private\n */\nfunction setEventPhase(event, eventPhase) {\n pd(event).eventPhase = eventPhase;\n}\n\n/**\n * Set the current target of a given event.\n * @param {Event} event The event to set current target.\n * @param {EventTarget|null} currentTarget New current target.\n * @returns {void}\n * @private\n */\nfunction setCurrentTarget(event, currentTarget) {\n pd(event).currentTarget = currentTarget;\n}\n\n/**\n * Set a passive listener of a given event.\n * @param {Event} event The event to set current target.\n * @param {Function|null} passiveListener New passive listener.\n * @returns {void}\n * @private\n */\nfunction setPassiveListener(event, passiveListener) {\n pd(event).passiveListener = passiveListener;\n}\n\n/**\n * @typedef {object} ListenerNode\n * @property {Function} listener\n * @property {1|2|3} listenerType\n * @property {boolean} passive\n * @property {boolean} once\n * @property {ListenerNode|null} next\n * @private\n */\n\n/**\n * @type {WeakMap<object, Map<string, ListenerNode>>}\n * @private\n */\nconst listenersMap = new WeakMap();\n\n// Listener types\nconst CAPTURE = 1;\nconst BUBBLE = 2;\nconst ATTRIBUTE = 3;\n\n/**\n * Check whether a given value is an object or not.\n * @param {any} x The value to check.\n * @returns {boolean} `true` if the value is an object.\n */\nfunction isObject(x) {\n return x !== null && typeof x === \"object\" //eslint-disable-line no-restricted-syntax\n}\n\n/**\n * Get listeners.\n * @param {EventTarget} eventTarget The event target to get.\n * @returns {Map<string, ListenerNode>} The listeners.\n * @private\n */\nfunction getListeners(eventTarget) {\n const listeners = listenersMap.get(eventTarget);\n if (listeners == null) {\n throw new TypeError(\n \"'this' is expected an EventTarget object, but got another value.\"\n )\n }\n return listeners\n}\n\n/**\n * Get the property descriptor for the event attribute of a given event.\n * @param {string} eventName The event name to get property descriptor.\n * @returns {PropertyDescriptor} The property descriptor.\n * @private\n */\nfunction defineEventAttributeDescriptor(eventName) {\n return {\n get() {\n const listeners = getListeners(this);\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n return node.listener\n }\n node = node.next;\n }\n return null\n },\n\n set(listener) {\n if (typeof listener !== \"function\" && !isObject(listener)) {\n listener = null; // eslint-disable-line no-param-reassign\n }\n const listeners = getListeners(this);\n\n // Traverse to the tail while removing old value.\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (node.listenerType === ATTRIBUTE) {\n // Remove old value.\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n node = node.next;\n }\n\n // Add new value.\n if (listener !== null) {\n const newNode = {\n listener,\n listenerType: ATTRIBUTE,\n passive: false,\n once: false,\n next: null,\n };\n if (prev === null) {\n listeners.set(eventName, newNode);\n } else {\n prev.next = newNode;\n }\n }\n },\n configurable: true,\n enumerable: true,\n }\n}\n\n/**\n * Define an event attribute (e.g. `eventTarget.onclick`).\n * @param {Object} eventTargetPrototype The event target prototype to define an event attrbite.\n * @param {string} eventName The event name to define.\n * @returns {void}\n */\nfunction defineEventAttribute(eventTargetPrototype, eventName) {\n Object.defineProperty(\n eventTargetPrototype,\n `on${eventName}`,\n defineEventAttributeDescriptor(eventName)\n );\n}\n\n/**\n * Define a custom EventTarget with event attributes.\n * @param {string[]} eventNames Event names for event attributes.\n * @returns {EventTarget} The custom EventTarget.\n * @private\n */\nfunction defineCustomEventTarget(eventNames) {\n /** CustomEventTarget */\n function CustomEventTarget() {\n EventTarget.call(this);\n }\n\n CustomEventTarget.prototype = Object.create(EventTarget.prototype, {\n constructor: {\n value: CustomEventTarget,\n configurable: true,\n writable: true,\n },\n });\n\n for (let i = 0; i < eventNames.length; ++i) {\n defineEventAttribute(CustomEventTarget.prototype, eventNames[i]);\n }\n\n return CustomEventTarget\n}\n\n/**\n * EventTarget.\n *\n * - This is constructor if no arguments.\n * - This is a function which returns a CustomEventTarget constructor if there are arguments.\n *\n * For example:\n *\n * class A extends EventTarget {}\n * class B extends EventTarget(\"message\") {}\n * class C extends EventTarget(\"message\", \"error\") {}\n * class D extends EventTarget([\"message\", \"error\"]) {}\n */\nfunction EventTarget() {\n /*eslint-disable consistent-return */\n if (this instanceof EventTarget) {\n listenersMap.set(this, new Map());\n return\n }\n if (arguments.length === 1 && Array.isArray(arguments[0])) {\n return defineCustomEventTarget(arguments[0])\n }\n if (arguments.length > 0) {\n const types = new Array(arguments.length);\n for (let i = 0; i < arguments.length; ++i) {\n types[i] = arguments[i];\n }\n return defineCustomEventTarget(types)\n }\n throw new TypeError(\"Cannot call a class as a function\")\n /*eslint-enable consistent-return */\n}\n\n// Should be enumerable, but class methods are not enumerable.\nEventTarget.prototype = {\n /**\n * Add a given listener to this event target.\n * @param {string} eventName The event name to add.\n * @param {Function} listener The listener to add.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n addEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n if (typeof listener !== \"function\" && !isObject(listener)) {\n throw new TypeError(\"'listener' should be a function or an object.\")\n }\n\n const listeners = getListeners(this);\n const optionsIsObj = isObject(options);\n const capture = optionsIsObj\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n const newNode = {\n listener,\n listenerType,\n passive: optionsIsObj && Boolean(options.passive),\n once: optionsIsObj && Boolean(options.once),\n next: null,\n };\n\n // Set it as the first node if the first node is null.\n let node = listeners.get(eventName);\n if (node === undefined) {\n listeners.set(eventName, newNode);\n return\n }\n\n // Traverse to the tail while checking duplication..\n let prev = null;\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n // Should ignore duplication.\n return\n }\n prev = node;\n node = node.next;\n }\n\n // Add it.\n prev.next = newNode;\n },\n\n /**\n * Remove a given listener from this event target.\n * @param {string} eventName The event name to remove.\n * @param {Function} listener The listener to remove.\n * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.\n * @returns {void}\n */\n removeEventListener(eventName, listener, options) {\n if (listener == null) {\n return\n }\n\n const listeners = getListeners(this);\n const capture = isObject(options)\n ? Boolean(options.capture)\n : Boolean(options);\n const listenerType = capture ? CAPTURE : BUBBLE;\n\n let prev = null;\n let node = listeners.get(eventName);\n while (node != null) {\n if (\n node.listener === listener &&\n node.listenerType === listenerType\n ) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n return\n }\n\n prev = node;\n node = node.next;\n }\n },\n\n /**\n * Dispatch a given event.\n * @param {Event|{type:string}} event The event to dispatch.\n * @returns {boolean} `false` if canceled.\n */\n dispatchEvent(event) {\n if (event == null || typeof event.type !== \"string\") {\n throw new TypeError('\"event.type\" should be a string.')\n }\n\n // If listeners aren't registered, terminate.\n const listeners = getListeners(this);\n const eventName = event.type;\n let node = listeners.get(eventName);\n if (node == null) {\n return true\n }\n\n // Since we cannot rewrite several properties, so wrap object.\n const wrappedEvent = wrapEvent(this, event);\n\n // This doesn't process capturing phase and bubbling phase.\n // This isn't participating in a tree.\n let prev = null;\n while (node != null) {\n // Remove this listener if it's once\n if (node.once) {\n if (prev !== null) {\n prev.next = node.next;\n } else if (node.next !== null) {\n listeners.set(eventName, node.next);\n } else {\n listeners.delete(eventName);\n }\n } else {\n prev = node;\n }\n\n // Call this listener\n setPassiveListener(\n wrappedEvent,\n node.passive ? node.listener : null\n );\n if (typeof node.listener === \"function\") {\n try {\n node.listener.call(this, wrappedEvent);\n } catch (err) {\n if (\n typeof console !== \"undefined\" &&\n typeof console.error === \"function\"\n ) {\n console.error(err);\n }\n }\n } else if (\n node.listenerType !== ATTRIBUTE &&\n typeof node.listener.handleEvent === \"function\"\n ) {\n node.listener.handleEvent(wrappedEvent);\n }\n\n // Break if `event.stopImmediatePropagation` was called.\n if (isStopped(wrappedEvent)) {\n break\n }\n\n node = node.next;\n }\n setPassiveListener(wrappedEvent, null);\n setEventPhase(wrappedEvent, 0);\n setCurrentTarget(wrappedEvent, null);\n\n return !wrappedEvent.defaultPrevented\n },\n};\n\n// `constructor` is not enumerable.\nObject.defineProperty(EventTarget.prototype, \"constructor\", {\n value: EventTarget,\n configurable: true,\n writable: true,\n});\n\n// Ensure `eventTarget instanceof window.EventTarget` is `true`.\nif (\n typeof window !== \"undefined\" &&\n typeof window.EventTarget !== \"undefined\"\n) {\n Object.setPrototypeOf(EventTarget.prototype, window.EventTarget.prototype);\n}\n\nexport default EventTarget;\nexport { defineEventAttribute, EventTarget };\n//# sourceMappingURL=event-target-shim.mjs.map\n\n\n\n// WEBPACK FOOTER //\n// ../node_modules/event-target-shim/dist/event-target-shim.mjs",null,null,null,null,"var parent = require('../../es/object/assign');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/assign.js\n// module id = 570\n// module chunks = 0 1","require('../../modules/es.object.assign');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/assign.js\n// module id = 571\n// module chunks = 0 1","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.assign.js\n// module id = 572\n// module chunks = 0 1","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/object-assign.js\n// module id = 573\n// module chunks = 0 1","var parent = require('../../es/object/get-own-property-symbols');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-own-property-symbols.js\n// module id = 574\n// module chunks = 0 1","require('../../modules/es.symbol');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertySymbols;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-own-property-symbols.js\n// module id = 575\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/symbol/iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/symbol/iterator.js\n// module id = 576\n// module chunks = 0 1","var parent = require('../../es/weak-map');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/weak-map/index.js\n// module id = 577\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.weak-map');\nvar path = require('../../internals/path');\n\nmodule.exports = path.WeakMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/weak-map/index.js\n// module id = 578\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.weak-map.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.weak-map.js\n// module id = 579\n// module chunks = 0 1","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar collection = require('../internals/collection');\nvar collectionWeak = require('../internals/collection-weak');\nvar isObject = require('../internals/is-object');\nvar isExtensible = require('../internals/object-is-extensible');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\n\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar InternalWeakMap;\n\nvar wrapper = function (init) {\n return function WeakMap() {\n return init(this, arguments.length ? arguments[0] : undefined);\n };\n};\n\n// `WeakMap` constructor\n// https://tc39.es/ecma262/#sec-weakmap-constructor\nvar $WeakMap = collection('WeakMap', wrapper, collectionWeak);\n\n// IE11 WeakMap frozen keys fix\n// We can't use feature detection because it crash some old IE builds\n// https://github.com/zloirock/core-js/issues/485\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true);\n InternalMetadataModule.enable();\n var WeakMapPrototype = $WeakMap.prototype;\n var nativeDelete = uncurryThis(WeakMapPrototype['delete']);\n var nativeHas = uncurryThis(WeakMapPrototype.has);\n var nativeGet = uncurryThis(WeakMapPrototype.get);\n var nativeSet = uncurryThis(WeakMapPrototype.set);\n defineBuiltIns(WeakMapPrototype, {\n 'delete': function (key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeDelete(this, key) || state.frozen['delete'](key);\n } return nativeDelete(this, key);\n },\n has: function has(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) || state.frozen.has(key);\n } return nativeHas(this, key);\n },\n get: function get(key) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n return nativeHas(this, key) ? nativeGet(this, key) : state.frozen.get(key);\n } return nativeGet(this, key);\n },\n set: function set(key, value) {\n if (isObject(key) && !isExtensible(key)) {\n var state = enforceInternalState(this);\n if (!state.frozen) state.frozen = new InternalWeakMap();\n nativeHas(this, key) ? nativeSet(this, key, value) : state.frozen.set(key, value);\n } else nativeSet(this, key, value);\n return this;\n }\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.weak-map.constructor.js\n// module id = 580\n// module chunks = 0 1","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-buffer-non-extensible.js\n// module id = 581\n// module chunks = 0 1","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar getWeakData = require('../internals/internal-metadata').getWeakData;\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar ArrayIterationModule = require('../internals/array-iteration');\nvar hasOwn = require('../internals/has-own-property');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\nvar find = ArrayIterationModule.find;\nvar findIndex = ArrayIterationModule.findIndex;\nvar splice = uncurryThis([].splice);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (store) {\n return store.frozen || (store.frozen = new UncaughtFrozenStore());\n};\n\nvar UncaughtFrozenStore = function () {\n this.entries = [];\n};\n\nvar findUncaughtFrozen = function (store, key) {\n return find(store.entries, function (it) {\n return it[0] === key;\n });\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.entries.push([key, value]);\n },\n 'delete': function (key) {\n var index = findIndex(this.entries, function (it) {\n return it[0] === key;\n });\n if (~index) splice(this.entries, index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n id: id++,\n frozen: undefined\n });\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var data = getWeakData(anObject(key), true);\n if (data === true) uncaughtFrozenStore(state).set(key, value);\n else data[state.id] = value;\n return that;\n };\n\n defineBuiltIns(Prototype, {\n // `{ WeakMap, WeakSet }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.delete\n // https://tc39.es/ecma262/#sec-weakset.prototype.delete\n 'delete': function (key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state)['delete'](key);\n return data && hasOwn(data, state.id) && delete data[state.id];\n },\n // `{ WeakMap, WeakSet }.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-weakmap.prototype.has\n // https://tc39.es/ecma262/#sec-weakset.prototype.has\n has: function has(key) {\n var state = getInternalState(this);\n if (!isObject(key)) return false;\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).has(key);\n return data && hasOwn(data, state.id);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `WeakMap.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.get\n get: function get(key) {\n var state = getInternalState(this);\n if (isObject(key)) {\n var data = getWeakData(key);\n if (data === true) return uncaughtFrozenStore(state).get(key);\n return data ? data[state.id] : undefined;\n }\n },\n // `WeakMap.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-weakmap.prototype.set\n set: function set(key, value) {\n return define(this, key, value);\n }\n } : {\n // `WeakSet.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-weakset.prototype.add\n add: function add(value) {\n return define(this, value, true);\n }\n });\n\n return Constructor;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/collection-weak.js\n// module id = 582\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/map\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/map.js\n// module id = 583\n// module chunks = 0 1","var parent = require('../../es/map');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/map/index.js\n// module id = 584\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.map');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/map/index.js\n// module id = 585\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.map.js\n// module id = 586\n// module chunks = 0 1","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.map.constructor.js\n// module id = 587\n// module chunks = 0 1","const {\n Realtime,\n setAdapters: setRTMAdapters,\n} = require('leancloud-realtime/core');\nconst { LiveQueryPlugin } = require('leancloud-realtime-plugin-live-query');\nRealtime.__preRegisteredPlugins = [LiveQueryPlugin];\n\nmodule.exports = AV => {\n AV._sharedConfig.liveQueryRealtime = Realtime;\n\n const { setAdapters } = AV;\n AV.setAdapters = adapters => {\n setAdapters(adapters);\n setRTMAdapters(adapters);\n };\n\n return AV;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/entry/use-live-query.js","module.exports = require('protobufjs/dist/protobuf-light')\n .newBuilder({})\n ['import']({\n package: 'push_server.messages2',\n syntax: 'proto2',\n options: {\n objc_class_prefix: 'AVIM',\n },\n messages: [\n {\n name: 'JsonObjectMessage',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'data',\n id: 1,\n },\n ],\n },\n {\n name: 'UnreadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'required',\n type: 'int32',\n name: 'unread',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentioned',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 10,\n },\n ],\n },\n {\n name: 'LogItem',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'msgId',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'ackAt',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'readAt',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'bin',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 11,\n },\n ],\n },\n {\n name: 'ConvMemberInfo',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'role',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'infoId',\n id: 3,\n },\n ],\n },\n {\n name: 'DataCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'JsonObjectMessage',\n name: 'msg',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 3,\n },\n ],\n },\n {\n name: 'SessionCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'ua',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'tag',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'deviceId',\n id: 7,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'onlineSessionPeerIds',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'st',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'stTtl',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'deviceToken',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'sp',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastUnreadNotifTime',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'configBitmap',\n id: 19,\n },\n ],\n },\n {\n name: 'ErrorCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'int32',\n name: 'code',\n id: 1,\n },\n {\n rule: 'required',\n type: 'string',\n name: 'reason',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'detail',\n id: 4,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'pids',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 6,\n },\n ],\n },\n {\n name: 'DirectCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'msg',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'fromPeerId',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'offline',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'hasMore',\n id: 6,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toPeerIds',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'r',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'dt',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'pushData',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'will',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 19,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 20,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 21,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'convType',\n id: 22,\n },\n ],\n },\n {\n name: 'AckCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'int32',\n name: 'code',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'reason',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uid',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'fromts',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'tots',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'ids',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'appCode',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appMsg',\n id: 12,\n },\n ],\n },\n {\n name: 'UnreadCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'UnreadTuple',\n name: 'convs',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'notifTime',\n id: 2,\n },\n ],\n },\n {\n name: 'ConvCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'string',\n name: 'm',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'unique',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cdate',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'initBy',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'sort',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'skip',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'flag',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'count',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'udate',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 14,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 15,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'statusSub',\n id: 16,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'statusPub',\n id: 17,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'statusTTL',\n id: 18,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'uniqueId',\n id: 19,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'targetClientId',\n id: 20,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 21,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 22,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'queryAllMembers',\n id: 23,\n },\n {\n rule: 'repeated',\n type: 'MaxReadTuple',\n name: 'maxReadTuples',\n id: 24,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 25,\n },\n {\n rule: 'optional',\n type: 'ConvMemberInfo',\n name: 'info',\n id: 26,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'tempConv',\n id: 27,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'tempConvTTL',\n id: 28,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'tempConvIds',\n id: 29,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 30,\n },\n {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 31,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 40,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 100,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'where',\n id: 101,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attr',\n id: 103,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'attrModified',\n id: 104,\n },\n ],\n },\n {\n name: 'RoomCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'roomId',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'transient',\n id: 5,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'roomPeerIds',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'byPeerId',\n id: 7,\n },\n ],\n },\n {\n name: 'LogsCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'l',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'tt',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'tmid',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'checksum',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'stored',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'QueryDirection',\n name: 'direction',\n id: 10,\n options: {\n default: 'OLD',\n },\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'tIncluded',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'ttIncluded',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'lctype',\n id: 13,\n },\n {\n rule: 'repeated',\n type: 'LogItem',\n name: 'logs',\n id: 105,\n },\n ],\n enums: [\n {\n name: 'QueryDirection',\n syntax: 'proto2',\n values: [\n {\n name: 'OLD',\n id: 1,\n },\n {\n name: 'NEW',\n id: 2,\n },\n ],\n },\n ],\n },\n {\n name: 'RcpCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'id',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'read',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 5,\n },\n ],\n },\n {\n name: 'ReadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'required',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 3,\n },\n ],\n },\n {\n name: 'MaxReadTuple',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'pid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxAckTimestamp',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'maxReadTimestamp',\n id: 3,\n },\n ],\n },\n {\n name: 'ReadCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2,\n },\n {\n rule: 'repeated',\n type: 'ReadTuple',\n name: 'convs',\n id: 3,\n },\n ],\n },\n {\n name: 'PresenceCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'StatusType',\n name: 'status',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'sessionPeerIds',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 3,\n },\n ],\n },\n {\n name: 'ReportCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'bool',\n name: 'initiative',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'type',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 3,\n },\n ],\n },\n {\n name: 'PatchItem',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'mid',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'timestamp',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'recall',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'data',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchTimestamp',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'from',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'bytes',\n name: 'binaryMsg',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'bool',\n name: 'mentionAll',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'mentionPids',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'patchCode',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'patchReason',\n id: 12,\n },\n ],\n },\n {\n name: 'PatchCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'repeated',\n type: 'PatchItem',\n name: 'patches',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'lastPatchTime',\n id: 2,\n },\n ],\n },\n {\n name: 'PubsubCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'cid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'cids',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'topic',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'subtopic',\n id: 4,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'topics',\n id: 5,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'subtopics',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'JsonObjectMessage',\n name: 'results',\n id: 7,\n },\n ],\n },\n {\n name: 'BlacklistCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'string',\n name: 'srcCid',\n id: 1,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toPids',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'srcPid',\n id: 3,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'toCids',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'limit',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'next',\n id: 6,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'blockedPids',\n id: 8,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'blockedCids',\n id: 9,\n },\n {\n rule: 'repeated',\n type: 'string',\n name: 'allowedPids',\n id: 10,\n },\n {\n rule: 'repeated',\n type: 'ErrorCommand',\n name: 'failedPids',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 't',\n id: 12,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'n',\n id: 13,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 's',\n id: 14,\n },\n ],\n },\n {\n name: 'GenericCommand',\n syntax: 'proto2',\n fields: [\n {\n rule: 'optional',\n type: 'CommandType',\n name: 'cmd',\n id: 1,\n },\n {\n rule: 'optional',\n type: 'OpType',\n name: 'op',\n id: 2,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'appId',\n id: 3,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'peerId',\n id: 4,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'i',\n id: 5,\n },\n {\n rule: 'optional',\n type: 'string',\n name: 'installationId',\n id: 6,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'priority',\n id: 7,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'service',\n id: 8,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'serverTs',\n id: 9,\n },\n {\n rule: 'optional',\n type: 'int64',\n name: 'clientTs',\n id: 10,\n },\n {\n rule: 'optional',\n type: 'int32',\n name: 'notificationType',\n id: 11,\n },\n {\n rule: 'optional',\n type: 'DataCommand',\n name: 'dataMessage',\n id: 101,\n },\n {\n rule: 'optional',\n type: 'SessionCommand',\n name: 'sessionMessage',\n id: 102,\n },\n {\n rule: 'optional',\n type: 'ErrorCommand',\n name: 'errorMessage',\n id: 103,\n },\n {\n rule: 'optional',\n type: 'DirectCommand',\n name: 'directMessage',\n id: 104,\n },\n {\n rule: 'optional',\n type: 'AckCommand',\n name: 'ackMessage',\n id: 105,\n },\n {\n rule: 'optional',\n type: 'UnreadCommand',\n name: 'unreadMessage',\n id: 106,\n },\n {\n rule: 'optional',\n type: 'ReadCommand',\n name: 'readMessage',\n id: 107,\n },\n {\n rule: 'optional',\n type: 'RcpCommand',\n name: 'rcpMessage',\n id: 108,\n },\n {\n rule: 'optional',\n type: 'LogsCommand',\n name: 'logsMessage',\n id: 109,\n },\n {\n rule: 'optional',\n type: 'ConvCommand',\n name: 'convMessage',\n id: 110,\n },\n {\n rule: 'optional',\n type: 'RoomCommand',\n name: 'roomMessage',\n id: 111,\n },\n {\n rule: 'optional',\n type: 'PresenceCommand',\n name: 'presenceMessage',\n id: 112,\n },\n {\n rule: 'optional',\n type: 'ReportCommand',\n name: 'reportMessage',\n id: 113,\n },\n {\n rule: 'optional',\n type: 'PatchCommand',\n name: 'patchMessage',\n id: 114,\n },\n {\n rule: 'optional',\n type: 'PubsubCommand',\n name: 'pubsubMessage',\n id: 115,\n },\n {\n rule: 'optional',\n type: 'BlacklistCommand',\n name: 'blacklistMessage',\n id: 116,\n },\n ],\n },\n ],\n enums: [\n {\n name: 'CommandType',\n syntax: 'proto2',\n values: [\n {\n name: 'session',\n id: 0,\n },\n {\n name: 'conv',\n id: 1,\n },\n {\n name: 'direct',\n id: 2,\n },\n {\n name: 'ack',\n id: 3,\n },\n {\n name: 'rcp',\n id: 4,\n },\n {\n name: 'unread',\n id: 5,\n },\n {\n name: 'logs',\n id: 6,\n },\n {\n name: 'error',\n id: 7,\n },\n {\n name: 'login',\n id: 8,\n },\n {\n name: 'data',\n id: 9,\n },\n {\n name: 'room',\n id: 10,\n },\n {\n name: 'read',\n id: 11,\n },\n {\n name: 'presence',\n id: 12,\n },\n {\n name: 'report',\n id: 13,\n },\n {\n name: 'echo',\n id: 14,\n },\n {\n name: 'loggedin',\n id: 15,\n },\n {\n name: 'logout',\n id: 16,\n },\n {\n name: 'loggedout',\n id: 17,\n },\n {\n name: 'patch',\n id: 18,\n },\n {\n name: 'pubsub',\n id: 19,\n },\n {\n name: 'blacklist',\n id: 20,\n },\n {\n name: 'goaway',\n id: 21,\n },\n ],\n },\n {\n name: 'OpType',\n syntax: 'proto2',\n values: [\n {\n name: 'open',\n id: 1,\n },\n {\n name: 'add',\n id: 2,\n },\n {\n name: 'remove',\n id: 3,\n },\n {\n name: 'close',\n id: 4,\n },\n {\n name: 'opened',\n id: 5,\n },\n {\n name: 'closed',\n id: 6,\n },\n {\n name: 'query',\n id: 7,\n },\n {\n name: 'query_result',\n id: 8,\n },\n {\n name: 'conflict',\n id: 9,\n },\n {\n name: 'added',\n id: 10,\n },\n {\n name: 'removed',\n id: 11,\n },\n {\n name: 'refresh',\n id: 12,\n },\n {\n name: 'refreshed',\n id: 13,\n },\n {\n name: 'start',\n id: 30,\n },\n {\n name: 'started',\n id: 31,\n },\n {\n name: 'joined',\n id: 32,\n },\n {\n name: 'members_joined',\n id: 33,\n },\n {\n name: 'left',\n id: 39,\n },\n {\n name: 'members_left',\n id: 40,\n },\n {\n name: 'results',\n id: 42,\n },\n {\n name: 'count',\n id: 43,\n },\n {\n name: 'result',\n id: 44,\n },\n {\n name: 'update',\n id: 45,\n },\n {\n name: 'updated',\n id: 46,\n },\n {\n name: 'mute',\n id: 47,\n },\n {\n name: 'unmute',\n id: 48,\n },\n {\n name: 'status',\n id: 49,\n },\n {\n name: 'members',\n id: 50,\n },\n {\n name: 'max_read',\n id: 51,\n },\n {\n name: 'is_member',\n id: 52,\n },\n {\n name: 'member_info_update',\n id: 53,\n },\n {\n name: 'member_info_updated',\n id: 54,\n },\n {\n name: 'member_info_changed',\n id: 55,\n },\n {\n name: 'join',\n id: 80,\n },\n {\n name: 'invite',\n id: 81,\n },\n {\n name: 'leave',\n id: 82,\n },\n {\n name: 'kick',\n id: 83,\n },\n {\n name: 'reject',\n id: 84,\n },\n {\n name: 'invited',\n id: 85,\n },\n {\n name: 'kicked',\n id: 86,\n },\n {\n name: 'upload',\n id: 100,\n },\n {\n name: 'uploaded',\n id: 101,\n },\n {\n name: 'subscribe',\n id: 120,\n },\n {\n name: 'subscribed',\n id: 121,\n },\n {\n name: 'unsubscribe',\n id: 122,\n },\n {\n name: 'unsubscribed',\n id: 123,\n },\n {\n name: 'is_subscribed',\n id: 124,\n },\n {\n name: 'modify',\n id: 150,\n },\n {\n name: 'modified',\n id: 151,\n },\n {\n name: 'block',\n id: 170,\n },\n {\n name: 'unblock',\n id: 171,\n },\n {\n name: 'blocked',\n id: 172,\n },\n {\n name: 'unblocked',\n id: 173,\n },\n {\n name: 'members_blocked',\n id: 174,\n },\n {\n name: 'members_unblocked',\n id: 175,\n },\n {\n name: 'check_block',\n id: 176,\n },\n {\n name: 'check_result',\n id: 177,\n },\n {\n name: 'add_shutup',\n id: 180,\n },\n {\n name: 'remove_shutup',\n id: 181,\n },\n {\n name: 'query_shutup',\n id: 182,\n },\n {\n name: 'shutup_added',\n id: 183,\n },\n {\n name: 'shutup_removed',\n id: 184,\n },\n {\n name: 'shutup_result',\n id: 185,\n },\n {\n name: 'shutuped',\n id: 186,\n },\n {\n name: 'unshutuped',\n id: 187,\n },\n {\n name: 'members_shutuped',\n id: 188,\n },\n {\n name: 'members_unshutuped',\n id: 189,\n },\n {\n name: 'check_shutup',\n id: 190,\n },\n ],\n },\n {\n name: 'StatusType',\n syntax: 'proto2',\n values: [\n {\n name: 'on',\n id: 1,\n },\n {\n name: 'off',\n id: 2,\n },\n ],\n },\n ],\n isNamespace: true,\n })\n .build();\n\n\n\n// WEBPACK FOOTER //\n// ../proto/message-compiled.js","import messages from './message-compiled';\n\nconst {\n JsonObjectMessage,\n UnreadTuple,\n LogItem,\n DataCommand,\n SessionCommand,\n ErrorCommand,\n DirectCommand,\n AckCommand,\n UnreadCommand,\n ConvCommand,\n RoomCommand,\n LogsCommand,\n RcpCommand,\n ReadTuple,\n MaxReadTuple,\n ReadCommand,\n PresenceCommand,\n ReportCommand,\n GenericCommand,\n BlacklistCommand,\n PatchCommand,\n PatchItem,\n ConvMemberInfo,\n CommandType,\n OpType,\n StatusType,\n} = messages.push_server.messages2;\n\nexport {\n JsonObjectMessage,\n UnreadTuple,\n LogItem,\n DataCommand,\n SessionCommand,\n ErrorCommand,\n DirectCommand,\n AckCommand,\n UnreadCommand,\n ConvCommand,\n RoomCommand,\n LogsCommand,\n RcpCommand,\n ReadTuple,\n MaxReadTuple,\n ReadCommand,\n PresenceCommand,\n ReportCommand,\n GenericCommand,\n BlacklistCommand,\n PatchCommand,\n PatchItem,\n ConvMemberInfo,\n CommandType,\n OpType,\n StatusType,\n};\n\n\n\n// WEBPACK FOOTER //\n// ../proto/message.js","const adapters = {};\n\nconst getAdapter = name => {\n const adapter = adapters[name];\n if (adapter === undefined) {\n throw new Error(`${name} adapter is not configured`);\n }\n return adapter;\n};\n\n/**\n * 指定 Adapters\n * @function\n * @memberof module:leancloud-realtime\n * @param {Adapters} newAdapters Adapters 的类型请参考 {@link https://url.leanapp.cn/adapter-type-definitions @leancloud/adapter-types} 中的定义\n */\nconst setAdapters = newAdapters => {\n Object.assign(adapters, newAdapters);\n};\n\nexport { getAdapter, setAdapters };\n\n\n\n// WEBPACK FOOTER //\n// ../src/adapter.js","/* eslint-disable */\nexport default (typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined' ? window : {});\n\n\n\n// WEBPACK FOOTER //\n// ../src/utils/global.js","import d from 'debug';\n\nconst EXPIRED = Symbol('expired');\nconst debug = d('LC:Expirable');\nexport default class Expirable {\n constructor(value, ttl) {\n this.originalValue = value;\n if (typeof ttl === 'number') {\n this.expiredAt = Date.now() + ttl;\n }\n }\n\n get value() {\n const expired = this.expiredAt && this.expiredAt <= Date.now();\n if (expired) debug(`expired: ${this.originalValue}`);\n return expired ? EXPIRED : this.originalValue;\n }\n}\nExpirable.EXPIRED = EXPIRED;\n\n\n\n// WEBPACK FOOTER //\n// ../src/utils/expirable.js","import d from 'debug';\nimport Expirable from './expirable';\n\nconst debug = d('LC:Cache');\nexport default class Cache {\n constructor(name = 'anonymous') {\n this.name = name;\n this._map = {};\n }\n\n get(key) {\n const cache = this._map[key];\n if (cache) {\n const { value } = cache;\n if (value !== Expirable.EXPIRED) {\n debug('[%s] hit: %s', this.name, key);\n return value;\n }\n delete this._map[key];\n }\n debug(`[${this.name}] missed: ${key}`);\n return null;\n }\n\n set(key, value, ttl) {\n debug('[%s] set: %s %d', this.name, key, ttl);\n this._map[key] = new Expirable(value, ttl);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../src/utils/cache.js","import isPlainObject from 'lodash/isPlainObject';\nimport d from 'debug';\nimport global from './global';\n\nexport { global };\n\n/**\n * 调试日志控制器\n * @const\n * @memberof module:leancloud-realtime\n * @example\n * debug.enable(); // 启用调试日志\n * debug.disable(); // 关闭调试日志\n */\nconst debug = {\n enable: (namespaces = 'LC*') => d.enable(namespaces),\n disable: d.disable,\n};\nexport { debug };\n\nexport const tryAll = promiseConstructors => {\n const promise = new Promise(promiseConstructors[0]);\n if (promiseConstructors.length === 1) {\n return promise;\n }\n return promise.catch(() => tryAll(promiseConstructors.slice(1)));\n};\n\n// eslint-disable-next-line no-sequences\nexport const tap = interceptor => value => (interceptor(value), value);\n\nexport const finalize = callback => [\n // eslint-disable-next-line no-sequences\n value => (callback(), value),\n error => {\n callback();\n throw error;\n },\n];\n\nexport { default as Expirable } from './expirable';\nexport { default as Cache } from './cache';\n\n/**\n * 将对象转换为 Date,支持 string、number、ProtoBuf Long 以及 LeanCloud 的 Date 类型,\n * 其他情况下(包括对象为 falsy)返回原值。\n * @private\n */\nexport const decodeDate = date => {\n if (!date) return date;\n if (typeof date === 'string' || typeof date === 'number') {\n return new Date(date);\n }\n if (date.__type === 'Date' && date.iso) {\n return new Date(date.iso);\n }\n // Long\n if (typeof date.toNumber === 'function') {\n return new Date(date.toNumber());\n }\n return date;\n};\n/**\n * 获取 Date 的毫秒数,如果不是一个 Date 返回 undefined。\n * @private\n */\nexport const getTime = date =>\n date && date.getTime ? date.getTime() : undefined;\n\n/**\n * 解码对象中的 LeanCloud 数据结构。\n * 目前仅会处理 Date 类型。\n * @private\n */\nexport const decode = value => {\n if (!value) return value;\n if (value.__type === 'Date' && value.iso) {\n return new Date(value.iso);\n }\n if (Array.isArray(value)) {\n return value.map(decode);\n }\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(\n (result, key) => ({\n ...result,\n [key]: decode(value[key]),\n }),\n {}\n );\n }\n return value;\n};\n/**\n * 将对象中的特殊类型编码为 LeanCloud 数据结构。\n * 目前仅会处理 Date 类型。\n * @private\n */\nexport const encode = value => {\n if (value instanceof Date) return { __type: 'Date', iso: value.toJSON() };\n if (Array.isArray(value)) {\n return value.map(encode);\n }\n if (isPlainObject(value)) {\n return Object.keys(value).reduce(\n (result, key) => ({\n ...result,\n [key]: encode(value[key]),\n }),\n {}\n );\n }\n return value;\n};\n\nexport const keyRemap = (keymap, obj) =>\n Object.keys(obj).reduce((newObj, key) => {\n const newKey = keymap[key] || key;\n return Object.assign(newObj, {\n [newKey]: obj[key],\n });\n }, {});\n\nexport const isIE10 =\n global.navigator &&\n global.navigator.userAgent &&\n global.navigator.userAgent.indexOf('MSIE 10.') !== -1;\n\n/* eslint-disable no-proto */\nexport const getStaticProperty = (klass, property) =>\n klass[property] ||\n (klass.__proto__ ? getStaticProperty(klass.__proto__, property) : undefined);\n/* eslint-enable no-proto */\n\nexport const union = (a, b) => Array.from(new Set([...a, ...b]));\nexport const difference = (a, b) =>\n Array.from((bSet => new Set(a.filter(x => !bSet.has(x))))(new Set(b)));\n\nconst map = new WeakMap();\n\n// protected property helper\nexport const internal = object => {\n if (!map.has(object)) {\n map.set(object, {});\n }\n return map.get(object);\n};\n\nexport const compact = (obj, filter) => {\n if (!isPlainObject(obj)) return obj;\n const object = { ...obj };\n Object.keys(object).forEach(prop => {\n const value = object[prop];\n if (value === filter) {\n delete object[prop];\n } else {\n object[prop] = compact(value, filter);\n }\n });\n return object;\n};\n\n// debug utility\nconst removeNull = obj => compact(obj, null);\nexport const trim = message => removeNull(JSON.parse(JSON.stringify(message)));\n\nexport const ensureArray = target => {\n if (Array.isArray(target)) {\n return target;\n }\n if (target === undefined || target === null) {\n return [];\n }\n return [target];\n};\n\nexport const setValue = (target, key, value) => {\n // '.' is not allowed in Class keys, escaping is not in concern now.\n const segs = key.split('.');\n const lastSeg = segs.pop();\n let currentTarget = target;\n segs.forEach(seg => {\n if (currentTarget[seg] === undefined) currentTarget[seg] = {};\n currentTarget = currentTarget[seg];\n });\n currentTarget[lastSeg] = value;\n return target;\n};\n\nexport const isWeapp =\n // eslint-disable-next-line no-undef\n typeof wx === 'object' && typeof wx.connectSocket === 'function';\n\n// throttle decorator\nexport const throttle = wait => (target, property, descriptor) => {\n const callback = descriptor.value;\n // very naive, internal use only\n if (callback.length) {\n throw new Error('throttled function should not accept any arguments');\n }\n return {\n ...descriptor,\n value() {\n let { throttleMeta } = internal(this);\n if (!throttleMeta) {\n throttleMeta = {};\n internal(this).throttleMeta = throttleMeta;\n }\n let { [property]: propertyMeta } = throttleMeta;\n if (!propertyMeta) {\n propertyMeta = {};\n throttleMeta[property] = propertyMeta;\n }\n const { previouseTimestamp = 0, timeout } = propertyMeta;\n const now = Date.now();\n const remainingTime = wait - (now - previouseTimestamp);\n if (remainingTime <= 0) {\n throttleMeta[property].previouseTimestamp = now;\n callback.apply(this);\n } else if (!timeout) {\n propertyMeta.timeout = setTimeout(() => {\n propertyMeta.previouseTimestamp = Date.now();\n delete propertyMeta.timeout;\n callback.apply(this);\n }, remainingTime);\n }\n },\n };\n};\n\nexport const isCNApp = appId => appId.slice(-9) !== '-MdYXbMMI';\n\nexport const equalBuffer = (buffer1, buffer2) => {\n if (!buffer1 || !buffer2) return false;\n if (buffer1.byteLength !== buffer2.byteLength) return false;\n const a = new Uint8Array(buffer1);\n const b = new Uint8Array(buffer2);\n return !a.some((value, index) => value !== b[index]);\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/utils/index.js","// WebSocket with auto reconnecting feature, backup endpoint and EventEmitter interface.\n\nimport d from 'debug';\nimport EventEmitter from 'eventemitter3';\nimport StateMachine from 'javascript-state-machine';\nimport { getAdapter } from './adapter';\nimport { ensureArray, tryAll, global } from './utils';\n\nconst debug = d('LC:WebSocketPlus');\n\nexport const OPEN = 'open';\nexport const DISCONNECT = 'disconnect';\nexport const RECONNECT = 'reconnect';\nexport const RETRY = 'retry';\nexport const SCHEDULE = 'schedule';\nexport const OFFLINE = 'offline';\nexport const ONLINE = 'online';\nexport const ERROR = 'error';\nexport const MESSAGE = 'message';\n\nconst HEARTBEAT_TIME = 180000;\nconst TIMEOUT_TIME = 380000;\n\nconst DEFAULT_RETRY_STRATEGY = attempt => Math.min(1000 * 2 ** attempt, 300000);\n\nconst requireConnected = (target, name, descriptor) => ({\n ...descriptor,\n value: function requireConnectedWrapper(...args) {\n this.checkConnectionAvailability(name);\n return descriptor.value.call(this, ...args);\n },\n});\n\nclass WebSocketPlus extends EventEmitter {\n get urls() {\n return this._urls;\n }\n\n set urls(urls) {\n this._urls = ensureArray(urls);\n }\n\n constructor(getUrls, protocol) {\n super();\n this.init();\n this._protocol = protocol;\n Promise.resolve(typeof getUrls === 'function' ? getUrls() : getUrls)\n .then(ensureArray)\n .then(urls => {\n this._urls = urls;\n return this._open();\n })\n .then(() => {\n this.__postponeTimeoutTimer = this._postponeTimeoutTimer.bind(this);\n if (global.addEventListener) {\n this.__pause = () => {\n if (this.can('pause')) this.pause();\n };\n this.__resume = () => {\n if (this.can('resume')) this.resume();\n };\n global.addEventListener('offline', this.__pause);\n global.addEventListener('online', this.__resume);\n }\n this.open();\n })\n .catch(this.throw.bind(this));\n }\n\n _open() {\n return this._createWs(this._urls, this._protocol).then(ws => {\n const [first, ...reset] = this._urls;\n this._urls = [...reset, first];\n return ws;\n });\n }\n\n _createWs(urls, protocol) {\n return tryAll(\n urls.map(url => (resolve, reject) => {\n debug(`connect [${url}] ${protocol}`);\n const WebSocket = getAdapter('WebSocket');\n const ws = protocol ? new WebSocket(url, protocol) : new WebSocket(url);\n ws.binaryType = this.binaryType || 'arraybuffer';\n ws.onopen = () => resolve(ws);\n ws.onclose = error => {\n if (error instanceof Error) {\n return reject(error);\n }\n // in browser, error event is useless\n return reject(new Error(`Failed to connect [${url}]`));\n };\n ws.onerror = ws.onclose;\n })\n ).then(ws => {\n this._ws = ws;\n this._ws.onclose = this._handleClose.bind(this);\n this._ws.onmessage = this._handleMessage.bind(this);\n return ws;\n });\n }\n\n _destroyWs() {\n const ws = this._ws;\n if (!ws) return;\n ws.onopen = null;\n ws.onclose = null;\n ws.onerror = null;\n ws.onmessage = null;\n this._ws = null;\n ws.close();\n }\n\n // eslint-disable-next-line class-methods-use-this\n onbeforeevent(event, from, to, ...payload) {\n debug(`${event}: ${from} -> ${to} %o`, payload);\n }\n\n onopen() {\n this.emit(OPEN);\n }\n\n onconnected() {\n this._startConnectionKeeper();\n }\n\n onleaveconnected(event, from, to) {\n this._stopConnectionKeeper();\n this._destroyWs();\n if (to === 'offline' || to === 'disconnected') {\n this.emit(DISCONNECT);\n }\n }\n\n onpause() {\n this.emit(OFFLINE);\n }\n\n onbeforeresume() {\n this.emit(ONLINE);\n }\n\n onreconnect() {\n this.emit(RECONNECT);\n }\n\n ondisconnected(event, from, to, attempt = 0) {\n const delay =\n from === OFFLINE ? 0 : DEFAULT_RETRY_STRATEGY.call(null, attempt);\n debug(`schedule attempt=${attempt} delay=${delay}`);\n this.emit(SCHEDULE, attempt, delay);\n if (this.__scheduledRetry) {\n clearTimeout(this.__scheduledRetry);\n }\n this.__scheduledRetry = setTimeout(() => {\n if (this.is('disconnected')) {\n this.retry(attempt);\n }\n }, delay);\n }\n\n onretry(event, from, to, attempt = 0) {\n this.emit(RETRY, attempt);\n this._open().then(\n () => this.can('reconnect') && this.reconnect(),\n () => this.can('fail') && this.fail(attempt + 1)\n );\n }\n\n onerror(event, from, to, error) {\n this.emit(ERROR, error);\n }\n\n onclose() {\n if (global.removeEventListener) {\n if (this.__pause) global.removeEventListener('offline', this.__pause);\n if (this.__resume) global.removeEventListener('online', this.__resume);\n }\n }\n\n checkConnectionAvailability(name = 'API') {\n if (!this.is('connected')) {\n const currentState = this.current;\n console.warn(\n `${name} should not be called when the connection is ${currentState}`\n );\n if (this.is('disconnected') || this.is('reconnecting')) {\n console.warn(\n 'disconnect and reconnect event should be handled to avoid such calls.'\n );\n }\n throw new Error('Connection unavailable');\n }\n }\n\n // jsdoc-ignore-start\n @requireConnected\n // jsdoc-ignore-end\n _ping() {\n debug('ping');\n try {\n this.ping();\n } catch (error) {\n console.warn(`websocket ping error: ${error.message}`);\n }\n }\n\n ping() {\n if (this._ws.ping) {\n this._ws.ping();\n } else {\n console.warn(`The WebSocket implement does not support sending ping frame.\n Override ping method to use application defined ping/pong mechanism.`);\n }\n }\n\n _postponeTimeoutTimer() {\n debug('_postponeTimeoutTimer');\n this._clearTimeoutTimers();\n this._timeoutTimer = setTimeout(() => {\n debug('timeout');\n this.disconnect();\n }, TIMEOUT_TIME);\n }\n\n _clearTimeoutTimers() {\n if (this._timeoutTimer) {\n clearTimeout(this._timeoutTimer);\n }\n }\n\n _startConnectionKeeper() {\n debug('start connection keeper');\n this._heartbeatTimer = setInterval(this._ping.bind(this), HEARTBEAT_TIME);\n const addListener = this._ws.addListener || this._ws.addEventListener;\n if (!addListener) {\n debug('connection keeper disabled due to the lack of #addEventListener.');\n return;\n }\n addListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n addListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n this._postponeTimeoutTimer();\n }\n\n _stopConnectionKeeper() {\n debug('stop connection keeper');\n // websockets/ws#489\n const removeListener =\n this._ws.removeListener || this._ws.removeEventListener;\n if (removeListener) {\n removeListener.call(this._ws, 'message', this.__postponeTimeoutTimer);\n removeListener.call(this._ws, 'pong', this.__postponeTimeoutTimer);\n this._clearTimeoutTimers();\n }\n if (this._heartbeatTimer) {\n clearInterval(this._heartbeatTimer);\n }\n }\n\n _handleClose(event) {\n debug(`ws closed [${event.code}] ${event.reason}`);\n // socket closed manually, ignore close event.\n if (this.isFinished()) return;\n this.handleClose(event);\n }\n\n handleClose() {\n // reconnect\n this.disconnect();\n }\n\n // jsdoc-ignore-start\n @requireConnected\n // jsdoc-ignore-end\n send(data) {\n debug('send', data);\n this._ws.send(data);\n }\n\n _handleMessage(event) {\n debug('message', event.data);\n this.handleMessage(event.data);\n }\n\n handleMessage(message) {\n this.emit(MESSAGE, message);\n }\n}\n\nStateMachine.create({\n target: WebSocketPlus.prototype,\n initial: {\n state: 'initialized',\n event: 'init',\n defer: true,\n },\n terminal: 'closed',\n events: [\n {\n name: 'open',\n from: 'initialized',\n to: 'connected',\n },\n {\n name: 'disconnect',\n from: 'connected',\n to: 'disconnected',\n },\n {\n name: 'retry',\n from: 'disconnected',\n to: 'reconnecting',\n },\n {\n name: 'fail',\n from: 'reconnecting',\n to: 'disconnected',\n },\n {\n name: 'reconnect',\n from: 'reconnecting',\n to: 'connected',\n },\n {\n name: 'pause',\n from: ['connected', 'disconnected', 'reconnecting'],\n to: 'offline',\n },\n {},\n {\n name: 'resume',\n from: 'offline',\n to: 'disconnected',\n },\n {\n name: 'close',\n from: ['connected', 'disconnected', 'reconnecting', 'offline'],\n to: 'closed',\n },\n {\n name: 'throw',\n from: '*',\n to: 'error',\n },\n ],\n});\n\nexport default WebSocketPlus;\n\n\n\n// WEBPACK FOOTER //\n// ../src/websocket-plus.js","export const error = Object.freeze({\n 1000: {\n name: 'CLOSE_NORMAL',\n },\n 1006: {\n name: 'CLOSE_ABNORMAL',\n },\n 4100: {\n name: 'APP_NOT_AVAILABLE',\n message: 'App not exists or realtime message service is disabled.',\n },\n 4102: {\n name: 'SIGNATURE_FAILED',\n message: 'Login signature mismatch.',\n },\n 4103: {\n name: 'INVALID_LOGIN',\n message: 'Malformed clientId.',\n },\n 4105: {\n name: 'SESSION_REQUIRED',\n message: 'Message sent before session opened.',\n },\n 4107: {\n name: 'READ_TIMEOUT',\n },\n 4108: {\n name: 'LOGIN_TIMEOUT',\n },\n 4109: {\n name: 'FRAME_TOO_LONG',\n },\n 4110: {\n name: 'INVALID_ORIGIN',\n message: 'Access denied by domain whitelist.',\n },\n 4111: {\n name: 'SESSION_CONFLICT',\n },\n 4112: {\n name: 'SESSION_TOKEN_EXPIRED',\n },\n 4113: {\n name: 'APP_QUOTA_EXCEEDED',\n message: 'The daily active users limit exceeded.',\n },\n 4116: {\n name: 'MESSAGE_SENT_QUOTA_EXCEEDED',\n message: 'Command sent too fast.',\n },\n 4200: {\n name: 'INTERNAL_ERROR',\n message: 'Internal error, please contact LeanCloud for support.',\n },\n 4301: {\n name: 'CONVERSATION_API_FAILED',\n message: 'Upstream Conversatoin API failed, see error.detail for details.',\n },\n 4302: {\n name: 'CONVERSATION_SIGNATURE_FAILED',\n message: 'Conversation action signature mismatch.',\n },\n 4303: {\n name: 'CONVERSATION_NOT_FOUND',\n },\n 4304: {\n name: 'CONVERSATION_FULL',\n },\n 4305: {\n name: 'CONVERSATION_REJECTED_BY_APP',\n message: 'Conversation action rejected by hook.',\n },\n 4306: {\n name: 'CONVERSATION_UPDATE_FAILED',\n },\n 4307: {\n name: 'CONVERSATION_READ_ONLY',\n },\n 4308: {\n name: 'CONVERSATION_NOT_ALLOWED',\n },\n 4309: {\n name: 'CONVERSATION_UPDATE_REJECTED',\n message: 'Conversation update rejected because the client is not a member.',\n },\n 4310: {\n name: 'CONVERSATION_QUERY_FAILED',\n message: 'Conversation query failed because it is too expansive.',\n },\n 4311: {\n name: 'CONVERSATION_LOG_FAILED',\n },\n 4312: {\n name: 'CONVERSATION_LOG_REJECTED',\n message:\n 'Message query rejected because the client is not a member of the conversation.',\n },\n 4313: {\n name: 'SYSTEM_CONVERSATION_REQUIRED',\n },\n 4314: {\n name: 'NORMAL_CONVERSATION_REQUIRED',\n },\n 4315: {\n name: 'CONVERSATION_BLACKLISTED',\n message: 'Blacklisted in the conversation.',\n },\n 4316: {\n name: 'TRANSIENT_CONVERSATION_REQUIRED',\n },\n 4317: {\n name: 'CONVERSATION_MEMBERSHIP_REQUIRED',\n },\n 4318: {\n name: 'CONVERSATION_API_QUOTA_EXCEEDED',\n message: 'LeanCloud API quota exceeded. You may upgrade your plan.',\n },\n 4323: {\n name: 'TEMPORARY_CONVERSATION_EXPIRED',\n message: 'Temporary conversation expired or does not exist.',\n },\n 4401: {\n name: 'INVALID_MESSAGING_TARGET',\n message: 'Conversation does not exist or client is not a member.',\n },\n 4402: {\n name: 'MESSAGE_REJECTED_BY_APP',\n message: 'Message rejected by hook.',\n },\n 4403: {\n name: 'MESSAGE_OWNERSHIP_REQUIRED',\n },\n 4404: {\n name: 'MESSAGE_NOT_FOUND',\n },\n 4405: {\n name: 'MESSAGE_UPDATE_REJECTED_BY_APP',\n message: 'Message update rejected by hook.',\n },\n 4406: {\n name: 'MESSAGE_EDIT_DISABLED',\n },\n 4407: {\n name: 'MESSAGE_RECALL_DISABLED',\n },\n 5130: {\n name: 'OWNER_PROMOTION_NOT_ALLOWED',\n message: \"Updating a member's role to owner is not allowed.\",\n },\n});\n\nexport const ErrorCode = Object.freeze(\n Object.keys(error).reduce(\n (result, code) =>\n Object.assign(result, {\n [error[code].name]: Number(code),\n }),\n {}\n )\n);\n\nexport const createError = ({\n code,\n reason,\n appCode,\n detail,\n error: errorMessage,\n}) => {\n let message = reason || detail || errorMessage;\n let name = reason;\n if (!message && error[code]) {\n ({ name } = error[code]);\n message = error[code].message || name;\n }\n if (!message) {\n message = `Unknow Error: ${code}`;\n }\n const err = new Error(message);\n return Object.assign(err, {\n code,\n appCode,\n detail,\n name,\n });\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/error.js","import d from 'debug';\nimport values from 'lodash/values';\nimport WebSocketPlus, {\n OPEN,\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n ERROR,\n MESSAGE,\n} from './websocket-plus';\nimport { createError } from './error';\nimport { GenericCommand, CommandType, OpType } from '../proto/message';\nimport { trim, equalBuffer } from './utils';\n\nconst debug = d('LC:Connection');\n\nconst COMMAND_TIMEOUT = 20000;\n\nconst EXPIRE = Symbol('expire');\n\nconst isIdempotentCommand = command =>\n !(\n command.cmd === CommandType.direct ||\n (command.cmd === CommandType.session && command.op === OpType.open) ||\n (command.cmd === CommandType.conv &&\n (command.op === OpType.start ||\n command.op === OpType.update ||\n command.op === OpType.members))\n );\n\nexport {\n OPEN,\n DISCONNECT,\n RECONNECT,\n RETRY,\n SCHEDULE,\n OFFLINE,\n ONLINE,\n ERROR,\n MESSAGE,\n EXPIRE,\n};\n\nexport default class Connection extends WebSocketPlus {\n constructor(getUrl, { format, version }) {\n debug('initializing Connection');\n const protocolString = `lc.${format}.${version}`;\n super(getUrl, protocolString);\n this._protocolFormat = format;\n this._commands = {};\n this._serialId = 0;\n }\n\n async send(command, waitingForRespond = true) {\n let buffer;\n let serialId;\n if (waitingForRespond) {\n if (isIdempotentCommand(command)) {\n buffer = command.toArrayBuffer();\n const duplicatedCommand = values(this._commands).find(\n ({ buffer: targetBuffer, command: targetCommand }) =>\n targetCommand.cmd === command.cmd &&\n targetCommand.op === command.op &&\n equalBuffer(targetBuffer, buffer)\n );\n if (duplicatedCommand) {\n console.warn(\n `Duplicated command [cmd:${command.cmd} op:${command.op}] is throttled.`\n );\n return duplicatedCommand.promise;\n }\n }\n\n this._serialId += 1;\n serialId = this._serialId;\n command.i = serialId; // eslint-disable-line no-param-reassign\n }\n if (debug.enabled) debug('↑ %O sent', trim(command));\n\n let message;\n if (this._protocolFormat === 'proto2base64') {\n message = command.toBase64();\n } else if (command.toArrayBuffer) {\n message = command.toArrayBuffer();\n }\n if (!message) {\n throw new TypeError(`${command} is not a GenericCommand`);\n }\n\n super.send(message);\n\n if (!waitingForRespond) return undefined;\n const promise = new Promise((resolve, reject) => {\n this._commands[serialId] = {\n command,\n buffer,\n resolve,\n reject,\n timeout: setTimeout(() => {\n if (this._commands[serialId]) {\n if (debug.enabled) debug('✗ %O timeout', trim(command));\n reject(\n createError({\n error: `Command Timeout [cmd:${command.cmd} op:${command.op}]`,\n name: 'COMMAND_TIMEOUT',\n })\n );\n delete this._commands[serialId];\n }\n }, COMMAND_TIMEOUT),\n };\n });\n this._commands[serialId].promise = promise;\n return promise;\n }\n\n handleMessage(msg) {\n let message;\n try {\n message = GenericCommand.decode(msg);\n if (debug.enabled) debug('↓ %O received', trim(message));\n } catch (e) {\n console.warn('Decode message failed:', e.message, msg);\n return;\n }\n const serialId = message.i;\n if (serialId) {\n if (this._commands[serialId]) {\n clearTimeout(this._commands[serialId].timeout);\n if (message.cmd === CommandType.error) {\n this._commands[serialId].reject(createError(message.errorMessage));\n } else {\n this._commands[serialId].resolve(message);\n }\n delete this._commands[serialId];\n } else {\n console.warn(`Unexpected command received with serialId [${serialId}],\n which have timed out or never been requested.`);\n }\n } else {\n switch (message.cmd) {\n case CommandType.error: {\n this.emit(ERROR, createError(message.errorMessage));\n return;\n }\n case CommandType.goaway: {\n this.emit(EXPIRE);\n return;\n }\n default: {\n this.emit(MESSAGE, message);\n }\n }\n }\n }\n\n ping() {\n return this.send(\n new GenericCommand({\n cmd: CommandType.echo,\n })\n ).catch(error => debug('ping failed:', error));\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../src/connection.js","import d from 'debug';\nimport isPlainObject from 'lodash/isPlainObject';\nimport { timeout } from 'promise-timeout';\nimport { getAdapter } from '../adapter';\nimport { createError } from '../error';\n\nconst debug = d('LC:request');\n\nexport default ({\n method = 'GET',\n url: _url,\n query,\n headers,\n data,\n timeout: time,\n}) => {\n let url = _url;\n if (query) {\n const queryString = Object.keys(query)\n .map(key => {\n const value = query[key];\n if (value === undefined) return undefined;\n const v = isPlainObject(value) ? JSON.stringify(value) : value;\n return `${encodeURIComponent(key)}=${encodeURIComponent(v)}`;\n })\n .filter(qs => qs)\n .join('&');\n url = `${url}?${queryString}`;\n }\n debug('Req: %O %O %O', method, url, { headers, data });\n const request = getAdapter('request');\n const promise = request(url, { method, headers, data })\n .then(response => {\n if (response.ok === false) {\n const error = createError(response.data);\n error.response = response;\n throw error;\n }\n debug('Res: %O %O %O', url, response.status, response.data);\n return response.data;\n })\n .catch(error => {\n if (error.response) {\n debug(\n 'Error: %O %O %O',\n url,\n error.response.status,\n error.response.data\n );\n }\n throw error;\n });\n return time ? timeout(promise, time) : promise;\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/utils/request.js","/* eslint-disable max-len */\n\n/**\n * 插件接口\n *\n * <p>\n * 插件是由一个或多个扩展点组成的字典。SDK 的扩展点可以分为两类:\n * <p>\n * 第一类扩展点是类实例化之后的回调,包括 <code>Realtime</code>、<code>IMClient</code> 与 <code>Conversation</code>。这些扩展点可以通过一个同步的 Decorator 进行扩展。Decorator 接受一个对应的实例并对其进行一些操作。\n * 特别的,由于注册自定义消息类这个需求特别的常用,额外定义一个 messageClasses 扩展点来做这件事情。\n * <p>\n * 第二类扩展点是在某些事件处理前、后可以注入逻辑的点。\n * 其中 <code>beforeMessageParse</code>,<code>afterMessageParse</code> 可以通过一个异步的 Middleware 进行扩展。Middleware 接受一个对象,返回一个同类型对象或同类型对象的 Promise。\n * <code>beforeMessageDispatch</code> 可以通过返回一个 boolean 类型的 shouldDispatch 值来控制是否要继续派发收到的消息。\n * <p>\n * 如果使用了多个插件,这些 hook 会按照插件数组的顺序依次执行。前一个 Middleware 的返回值会作为参数传给后一个 Middleware。\n *\n * @interface Plugin\n * @since 3.1.0\n */\n\n/* eslint-enable max-len */\n\n/**\n * 插件名称,用于在日志中显示异常的插件\n *\n * @name Plugin.name\n * @type string\n */\n\n/**\n * 插件注册的消息类型\n *\n * @name Plugin.messageClasses\n * @type AVMessage[]\n */\n\n/**\n * 在 Realtime 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 Realtime 实例。\n *\n * @name Plugin.onRealtimeCreate\n * @type Function\n */\n\n/**\n * 在 IMClient 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 IMClient 实例。\n *\n * @name Plugin.onIMClientCreate\n * @type Function\n */\n\n/**\n * 在 Conversation 实例化后对其进行修饰。\n * <p>\n * 接受一个参数为 Conversation 实例。\n * 需要注意的是,该扩展点并不是在 <code>{@link IMClient#createConversation}</code> 方法创建成功后调用的 hook,\n * 而是所有的 Conversation 实例化的时候(包括但不限于 query 时)调用的 hook。\n *\n * @name Plugin.onConversationCreate\n * @type Function\n */\n\n/**\n * 在对消息进行 parse 之前,对原始消息进行修改。\n * <p>\n * 接受一个参数为原始消息,是某个消息的内容,一般是一个 JSON 对象。\n * 该方法需要返回一个 JSON 对象。如果这个结果是异步得到的,也可以返回一个 Promise(fulfilled with a JSON)。\n *\n * @name Plugin.beforeMessageParse\n * @type Function\n */\n\n/**\n * 在对消息进行 parse 之后,对消息实例进行修改。\n * <p>\n * 接受一个参数为消息实例,一般是一个已注册的 Message 类或其子类的实例。\n * 该方法需要返回一个同类型的消息实例。如果这个结果是异步得到的,也可以返回一个 Promise。\n *\n * @name Plugin.afterMessageParse\n * @type Function\n */\n\n/**\n * 在收到消息之后,派发消息之前,控制是否派发这条消息。\n * <p>\n * 接受参数为 message 与 conversation。\n * 该方法需要返回 boolean 类型的值,如果返回 false 则 SDK 不再派发这条消息,后续的 beforeMessageDispatch 也不会执行。\n * 如果这个结果是异步得到的,也可以返回一个 Promise。\n *\n * @name Plugin.beforeMessageDispatch\n * @type Function\n * @since 3.4.0\n */\n\nimport { ensureArray, tap } from './utils';\n\nconst checkType = middleware => param => {\n const { constructor } = param;\n return Promise.resolve(param)\n .then(middleware)\n .then(\n tap(result => {\n if (result === undefined || result === null) {\n // eslint-disable-next-line max-len\n return console.warn(\n `Middleware[${middleware._pluginName ||\n 'anonymous plugin'}:${middleware.name ||\n 'anonymous middleware'}] param/return types not match. It returns ${result} while a ${\n param.constructor.name\n } expected.`\n );\n }\n if (!(result instanceof constructor)) {\n // eslint-disable-next-line max-len\n return console.warn(\n `Middleware[${middleware._pluginName ||\n 'anonymous plugin'}:${middleware.name ||\n 'anonymous middleware'}] param/return types not match. It returns a ${\n result.constructor.name\n } while a ${param.constructor.name} expected.`\n );\n }\n return 0;\n })\n );\n};\n\nexport const applyDecorators = (decorators, target) => {\n if (decorators) {\n decorators.forEach(decorator => {\n try {\n decorator(target);\n } catch (error) {\n if (decorator._pluginName) {\n error.message += `[${decorator._pluginName}]`;\n }\n throw error;\n }\n });\n }\n};\n\nexport const applyMiddlewares = middlewares => target =>\n ensureArray(middlewares).reduce(\n (previousPromise, middleware) =>\n previousPromise.then(checkType(middleware)).catch(error => {\n if (middleware._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += `[${middleware._pluginName}]`;\n }\n throw error;\n }),\n Promise.resolve(target)\n );\n\nexport const applyDispatcher = (dispatchers, payload) =>\n ensureArray(dispatchers).reduce(\n (resultPromise, dispatcher) =>\n resultPromise\n .then(\n shouldDispatch =>\n shouldDispatch === false ? false : dispatcher(...payload)\n )\n .catch(error => {\n if (dispatcher._pluginName) {\n // eslint-disable-next-line no-param-reassign\n error.message += `[${dispatcher._pluginName}]`;\n }\n throw error;\n }),\n Promise.resolve(true)\n );\n\n\n\n// WEBPACK FOOTER //\n// ../src/plugin.js","/* eslint-disable import/no-unresolved */\nimport { Protocals, Promise as _Promise } from 'leancloud-realtime/core';\n\nif (!Protocals) {\n throw new Error('LeanCloud Realtime SDK not installed');\n}\nexport { _Promise };\n\nexport { Protocals, EventEmitter } from 'leancloud-realtime/core';\n\n\n\n// WEBPACK FOOTER //\n// ../src/realtime.js","import * as Protocols from '../proto/message';\n\nexport {\n Protocols,\n // misspelling\n Protocols as Protocals,\n};\n\nexport { default as EventEmitter } from 'eventemitter3';\n\nconst polyfilledPromise = Promise;\nexport { polyfilledPromise as Promise };\n\nexport {\n /**\n * @name Realtime\n * @memberof module:leancloud-realtime\n * @see Realtime\n */\n default as Realtime,\n} from './realtime';\n\nexport * from './adapter';\n\nexport { debug } from './utils';\n\n\n\n// WEBPACK FOOTER //\n// ../src/core.js","module.exports = require(\"core-js-pure/stable/object/freeze\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/freeze.js\n// module id = 590\n// module chunks = 0 1","var parent = require('../../es/object/freeze');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/freeze.js\n// module id = 591\n// module chunks = 0 1","require('../../modules/es.object.freeze');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.freeze;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/freeze.js\n// module id = 592\n// module chunks = 0 1","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.freeze.js\n// module id = 593\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/get-own-property-descriptors\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors.js\n// module id = 594\n// module chunks = 0 1","var parent = require('../../es/object/get-own-property-descriptors');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/get-own-property-descriptors.js\n// module id = 595\n// module chunks = 0 1","require('../../modules/es.object.get-own-property-descriptors');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Object.getOwnPropertyDescriptors;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/get-own-property-descriptors.js\n// module id = 596\n// module chunks = 0 1","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js\n// module id = 597\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/object/define-properties\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/object/define-properties.js\n// module id = 598\n// module chunks = 0 1","var parent = require('../../es/object/define-properties');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/object/define-properties.js\n// module id = 599\n// module chunks = 0 1","require('../../modules/es.object.define-properties');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperties = module.exports = function defineProperties(T, D) {\n return Object.defineProperties(T, D);\n};\n\nif (Object.defineProperties.sham) defineProperties.sham = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/object/define-properties.js\n// module id = 600\n// module chunks = 0 1","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.object.define-properties.js\n// module id = 601\n// module chunks = 0 1","module.exports = require(\"core-js-pure/stable/instance/reduce\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js\n// module id = 602\n// module chunks = 0 1","var parent = require('../../es/instance/reduce');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/instance/reduce.js\n// module id = 603\n// module chunks = 0 1","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/reduce');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n var own = it.reduce;\n return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.reduce) ? method : own;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/instance/reduce.js\n// module id = 604\n// module chunks = 0 1","require('../../../modules/es.array.reduce');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').reduce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/array/virtual/reduce.js\n// module id = 605\n// module chunks = 0 1","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.array.reduce.js\n// module id = 606\n// module chunks = 0 1","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/array-reduce.js\n// module id = 607\n// module chunks = 0 1","var parent = require('../../es/set');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/set/index.js\n// module id = 608\n// module chunks = 0 1","require('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.set');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/set/index.js\n// module id = 609\n// module chunks = 0 1","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.set.constructor');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.set.js\n// module id = 610\n// module chunks = 0 1","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/modules/es.set.constructor.js\n// module id = 611\n// module chunks = 0 1","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license protobuf.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/protobuf.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"bytebuffer\"], factory);\r\n /* CommonJS */ else if (typeof require === \"function\" && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory(require(\"bytebuffer\"), true);\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ProtoBuf\"] = factory(global[\"dcodeIO\"][\"ByteBuffer\"]);\r\n\r\n})(this, function(ByteBuffer, isCommonJS) {\r\n \"use strict\";\r\n\r\n /**\r\n * The ProtoBuf namespace.\r\n * @exports ProtoBuf\r\n * @namespace\r\n * @expose\r\n */\r\n var ProtoBuf = {};\r\n\r\n /**\r\n * @type {!function(new: ByteBuffer, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.ByteBuffer = ByteBuffer;\r\n\r\n /**\r\n * @type {?function(new: Long, ...[*])}\r\n * @expose\r\n */\r\n ProtoBuf.Long = ByteBuffer.Long || null;\r\n\r\n /**\r\n * ProtoBuf.js version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.VERSION = \"5.0.3\";\r\n\r\n /**\r\n * Wire types.\r\n * @type {Object.<string,number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES = {};\r\n\r\n /**\r\n * Varint wire type.\r\n * @type {number}\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.VARINT = 0;\r\n\r\n /**\r\n * Fixed 64 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS64 = 1;\r\n\r\n /**\r\n * Length delimited wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.LDELIM = 2;\r\n\r\n /**\r\n * Start group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.STARTGROUP = 3;\r\n\r\n /**\r\n * End group wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.ENDGROUP = 4;\r\n\r\n /**\r\n * Fixed 32 bits wire type.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.WIRE_TYPES.BITS32 = 5;\r\n\r\n /**\r\n * Packable wire types.\r\n * @type {!Array.<number>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.PACKABLE_WIRE_TYPES = [\r\n ProtoBuf.WIRE_TYPES.VARINT,\r\n ProtoBuf.WIRE_TYPES.BITS64,\r\n ProtoBuf.WIRE_TYPES.BITS32\r\n ];\r\n\r\n /**\r\n * Types.\r\n * @dict\r\n * @type {!Object.<string,{name: string, wireType: number, defaultValue: *}>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.TYPES = {\r\n // According to the protobuf spec.\r\n \"int32\": {\r\n name: \"int32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"uint32\": {\r\n name: \"uint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"sint32\": {\r\n name: \"sint32\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"int64\": {\r\n name: \"int64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"uint64\": {\r\n name: \"uint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sint64\": {\r\n name: \"sint64\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"bool\": {\r\n name: \"bool\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: false\r\n },\r\n \"double\": {\r\n name: \"double\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: 0\r\n },\r\n \"string\": {\r\n name: \"string\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: \"\"\r\n },\r\n \"bytes\": {\r\n name: \"bytes\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null // overridden in the code, must be a unique instance\r\n },\r\n \"fixed32\": {\r\n name: \"fixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"sfixed32\": {\r\n name: \"sfixed32\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"fixed64\": {\r\n name: \"fixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.UZERO : undefined\r\n },\r\n \"sfixed64\": {\r\n name: \"sfixed64\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS64,\r\n defaultValue: ProtoBuf.Long ? ProtoBuf.Long.ZERO : undefined\r\n },\r\n \"float\": {\r\n name: \"float\",\r\n wireType: ProtoBuf.WIRE_TYPES.BITS32,\r\n defaultValue: 0\r\n },\r\n \"enum\": {\r\n name: \"enum\",\r\n wireType: ProtoBuf.WIRE_TYPES.VARINT,\r\n defaultValue: 0\r\n },\r\n \"message\": {\r\n name: \"message\",\r\n wireType: ProtoBuf.WIRE_TYPES.LDELIM,\r\n defaultValue: null\r\n },\r\n \"group\": {\r\n name: \"group\",\r\n wireType: ProtoBuf.WIRE_TYPES.STARTGROUP,\r\n defaultValue: null\r\n }\r\n };\r\n\r\n /**\r\n * Valid map key types.\r\n * @type {!Array.<!Object.<string,{name: string, wireType: number, defaultValue: *}>>}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.MAP_KEY_TYPES = [\r\n ProtoBuf.TYPES[\"int32\"],\r\n ProtoBuf.TYPES[\"sint32\"],\r\n ProtoBuf.TYPES[\"sfixed32\"],\r\n ProtoBuf.TYPES[\"uint32\"],\r\n ProtoBuf.TYPES[\"fixed32\"],\r\n ProtoBuf.TYPES[\"int64\"],\r\n ProtoBuf.TYPES[\"sint64\"],\r\n ProtoBuf.TYPES[\"sfixed64\"],\r\n ProtoBuf.TYPES[\"uint64\"],\r\n ProtoBuf.TYPES[\"fixed64\"],\r\n ProtoBuf.TYPES[\"bool\"],\r\n ProtoBuf.TYPES[\"string\"],\r\n ProtoBuf.TYPES[\"bytes\"]\r\n ];\r\n\r\n /**\r\n * Minimum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MIN = 1;\r\n\r\n /**\r\n * Maximum field id.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ProtoBuf.ID_MAX = 0x1FFFFFFF;\r\n\r\n /**\r\n * If set to `true`, field names will be converted from underscore notation to camel case. Defaults to `false`.\r\n * Must be set prior to parsing.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.convertFieldsToCamelCase = false;\r\n\r\n /**\r\n * By default, messages are populated with (setX, set_x) accessors for each field. This can be disabled by\r\n * setting this to `false` prior to building messages.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateAccessors = true;\r\n\r\n /**\r\n * By default, messages are populated with default values if a field is not present on the wire. To disable\r\n * this behavior, set this setting to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ProtoBuf.populateDefaults = true;\r\n\r\n /**\r\n * @alias ProtoBuf.Util\r\n * @expose\r\n */\r\n ProtoBuf.Util = (function() {\r\n \"use strict\";\r\n\r\n /**\r\n * ProtoBuf utilities.\r\n * @exports ProtoBuf.Util\r\n * @namespace\r\n */\r\n var Util = {};\r\n\r\n /**\r\n * Flag if running in node or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n Util.IS_NODE = !!(\r\n typeof process === 'object' && process+'' === '[object process]' && !process['browser']\r\n );\r\n\r\n /**\r\n * Constructs a XMLHttpRequest object.\r\n * @return {XMLHttpRequest}\r\n * @throws {Error} If XMLHttpRequest is not supported\r\n * @expose\r\n */\r\n Util.XHR = function() {\r\n // No dependencies please, ref: http://www.quirksmode.org/js/xmlhttp.html\r\n var XMLHttpFactories = [\r\n function () {return new XMLHttpRequest()},\r\n function () {return new ActiveXObject(\"Msxml2.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Msxml3.XMLHTTP\")},\r\n function () {return new ActiveXObject(\"Microsoft.XMLHTTP\")}\r\n ];\r\n /** @type {?XMLHttpRequest} */\r\n var xhr = null;\r\n for (var i=0;i<XMLHttpFactories.length;i++) {\r\n try { xhr = XMLHttpFactories[i](); }\r\n catch (e) { continue; }\r\n break;\r\n }\r\n if (!xhr)\r\n throw Error(\"XMLHttpRequest is not supported\");\r\n return xhr;\r\n };\r\n\r\n /**\r\n * Fetches a resource.\r\n * @param {string} path Resource path\r\n * @param {function(?string)=} callback Callback receiving the resource's contents. If omitted the resource will\r\n * be fetched synchronously. If the request failed, contents will be null.\r\n * @return {?string|undefined} Resource contents if callback is omitted (null if the request failed), else undefined.\r\n * @expose\r\n */\r\n Util.fetch = function(path, callback) {\r\n if (callback && typeof callback != 'function')\r\n callback = null;\r\n if (Util.IS_NODE) {\r\n var fs = require(\"fs\");\r\n if (callback) {\r\n fs.readFile(path, function(err, data) {\r\n if (err)\r\n callback(null);\r\n else\r\n callback(\"\"+data);\r\n });\r\n } else\r\n try {\r\n return fs.readFileSync(path);\r\n } catch (e) {\r\n return null;\r\n }\r\n } else {\r\n var xhr = Util.XHR();\r\n xhr.open('GET', path, callback ? true : false);\r\n // xhr.setRequestHeader('User-Agent', 'XMLHTTP/1.0');\r\n xhr.setRequestHeader('Accept', 'text/plain');\r\n if (typeof xhr.overrideMimeType === 'function') xhr.overrideMimeType('text/plain');\r\n if (callback) {\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState != 4) return;\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n callback(xhr.responseText);\r\n else\r\n callback(null);\r\n };\r\n if (xhr.readyState == 4)\r\n return;\r\n xhr.send(null);\r\n } else {\r\n xhr.send(null);\r\n if (/* remote */ xhr.status == 200 || /* local */ (xhr.status == 0 && typeof xhr.responseText === 'string'))\r\n return xhr.responseText;\r\n return null;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Converts a string to camel case.\r\n * @param {string} str\r\n * @returns {string}\r\n * @expose\r\n */\r\n Util.toCamelCase = function(str) {\r\n return str.replace(/_([a-zA-Z])/g, function ($0, $1) {\r\n return $1.toUpperCase();\r\n });\r\n };\r\n\r\n return Util;\r\n })();\r\n\r\n /**\r\n * Language expressions.\r\n * @type {!Object.<string,!RegExp>}\r\n * @expose\r\n */\r\n ProtoBuf.Lang = {\r\n\r\n // Characters always ending a statement\r\n DELIM: /[\\s\\{\\}=;:\\[\\],'\"\\(\\)<>]/g,\r\n\r\n // Field rules\r\n RULE: /^(?:required|optional|repeated|map)$/,\r\n\r\n // Field types\r\n TYPE: /^(?:double|float|int32|uint32|sint32|int64|uint64|sint64|fixed32|sfixed32|fixed64|sfixed64|bool|string|bytes)$/,\r\n\r\n // Names\r\n NAME: /^[a-zA-Z_][a-zA-Z_0-9]*$/,\r\n\r\n // Type definitions\r\n TYPEDEF: /^[a-zA-Z][a-zA-Z_0-9]*$/,\r\n\r\n // Type references\r\n TYPEREF: /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/,\r\n\r\n // Fully qualified type references\r\n FQTYPEREF: /^(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)+$/,\r\n\r\n // All numbers\r\n NUMBER: /^-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+|([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?)|inf|nan)$/,\r\n\r\n // Decimal numbers\r\n NUMBER_DEC: /^(?:[1-9][0-9]*|0)$/,\r\n\r\n // Hexadecimal numbers\r\n NUMBER_HEX: /^0[xX][0-9a-fA-F]+$/,\r\n\r\n // Octal numbers\r\n NUMBER_OCT: /^0[0-7]+$/,\r\n\r\n // Floating point numbers\r\n NUMBER_FLT: /^([0-9]*(\\.[0-9]*)?([Ee][+-]?[0-9]+)?|inf|nan)$/,\r\n\r\n // Booleans\r\n BOOL: /^(?:true|false)$/i,\r\n\r\n // Id numbers\r\n ID: /^(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Negative id numbers (enum values)\r\n NEGID: /^\\-?(?:[1-9][0-9]*|0|0[xX][0-9a-fA-F]+|0[0-7]+)$/,\r\n\r\n // Whitespaces\r\n WHITESPACE: /\\s/,\r\n\r\n // All strings\r\n STRING: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")|(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g,\r\n\r\n // Double quoted strings\r\n STRING_DQ: /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\r\n\r\n // Single quoted strings\r\n STRING_SQ: /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g\r\n };\r\n\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect\r\n * @expose\r\n */\r\n ProtoBuf.Reflect = (function(ProtoBuf) {\r\n \"use strict\";\r\n\r\n /**\r\n * Reflection types.\r\n * @exports ProtoBuf.Reflect\r\n * @namespace\r\n */\r\n var Reflect = {};\r\n\r\n /**\r\n * Constructs a Reflect base class.\r\n * @exports ProtoBuf.Reflect.T\r\n * @constructor\r\n * @abstract\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n */\r\n var T = function(builder, parent, name) {\r\n\r\n /**\r\n * Builder reference.\r\n * @type {!ProtoBuf.Builder}\r\n * @expose\r\n */\r\n this.builder = builder;\r\n\r\n /**\r\n * Parent object.\r\n * @type {?ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.parent = parent;\r\n\r\n /**\r\n * Object name in namespace.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.name = name;\r\n\r\n /**\r\n * Fully qualified class name\r\n * @type {string}\r\n * @expose\r\n */\r\n this.className;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T.prototype\r\n * @inner\r\n */\r\n var TPrototype = T.prototype;\r\n\r\n /**\r\n * Returns the fully qualified name of this object.\r\n * @returns {string} Fully qualified name as of \".PATH.TO.THIS\"\r\n * @expose\r\n */\r\n TPrototype.fqn = function() {\r\n var name = this.name,\r\n ptr = this;\r\n do {\r\n ptr = ptr.parent;\r\n if (ptr == null)\r\n break;\r\n name = ptr.name+\".\"+name;\r\n } while (true);\r\n return name;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this Reflect object (its fully qualified name).\r\n * @param {boolean=} includeClass Set to true to include the class name. Defaults to false.\r\n * @return String representation\r\n * @expose\r\n */\r\n TPrototype.toString = function(includeClass) {\r\n return (includeClass ? this.className + \" \" : \"\") + this.fqn();\r\n };\r\n\r\n /**\r\n * Builds this type.\r\n * @throws {Error} If this type cannot be built directly\r\n * @expose\r\n */\r\n TPrototype.build = function() {\r\n throw Error(this.toString(true)+\" cannot be built directly\");\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.T\r\n * @expose\r\n */\r\n Reflect.T = T;\r\n\r\n /**\r\n * Constructs a new Namespace.\r\n * @exports ProtoBuf.Reflect.Namespace\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {?ProtoBuf.Reflect.Namespace} parent Namespace parent\r\n * @param {string} name Namespace name\r\n * @param {Object.<string,*>=} options Namespace options\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Namespace = function(builder, parent, name, options, syntax) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Namespace\";\r\n\r\n /**\r\n * Children inside the namespace.\r\n * @type {!Array.<ProtoBuf.Reflect.T>}\r\n */\r\n this.children = [];\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Syntax level (e.g., proto2 or proto3).\r\n * @type {!string}\r\n */\r\n this.syntax = syntax || \"proto2\";\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace.prototype\r\n * @inner\r\n */\r\n var NamespacePrototype = Namespace.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Returns an array of the namespace's children.\r\n * @param {ProtoBuf.Reflect.T=} type Filter type (returns instances of this type only). Defaults to null (all children).\r\n * @return {Array.<ProtoBuf.Reflect.T>}\r\n * @expose\r\n */\r\n NamespacePrototype.getChildren = function(type) {\r\n type = type || null;\r\n if (type == null)\r\n return this.children.slice();\r\n var children = [];\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i] instanceof type)\r\n children.push(this.children[i]);\r\n return children;\r\n };\r\n\r\n /**\r\n * Adds a child to the namespace.\r\n * @param {ProtoBuf.Reflect.T} child Child\r\n * @throws {Error} If the child cannot be added (duplicate)\r\n * @expose\r\n */\r\n NamespacePrototype.addChild = function(child) {\r\n var other;\r\n if (other = this.getChild(child.name)) {\r\n // Try to revert camelcase transformation on collision\r\n if (other instanceof Message.Field && other.name !== other.originalName && this.getChild(other.originalName) === null)\r\n other.name = other.originalName; // Revert previous first (effectively keeps both originals)\r\n else if (child instanceof Message.Field && child.name !== child.originalName && this.getChild(child.originalName) === null)\r\n child.name = child.originalName;\r\n else\r\n throw Error(\"Duplicate name in namespace \"+this.toString(true)+\": \"+child.name);\r\n }\r\n this.children.push(child);\r\n };\r\n\r\n /**\r\n * Gets a child by its name or id.\r\n * @param {string|number} nameOrId Child name or id\r\n * @return {?ProtoBuf.Reflect.T} The child or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.getChild = function(nameOrId) {\r\n var key = typeof nameOrId === 'number' ? 'id' : 'name';\r\n for (var i=0, k=this.children.length; i<k; ++i)\r\n if (this.children[i][key] === nameOrId)\r\n return this.children[i];\r\n return null;\r\n };\r\n\r\n /**\r\n * Resolves a reflect object inside of this namespace.\r\n * @param {string|!Array.<string>} qn Qualified name to resolve\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types, defaults to `false`\r\n * @return {?ProtoBuf.Reflect.Namespace} The resolved type or null if not found\r\n * @expose\r\n */\r\n NamespacePrototype.resolve = function(qn, excludeNonNamespace) {\r\n var part = typeof qn === 'string' ? qn.split(\".\") : qn,\r\n ptr = this,\r\n i = 0;\r\n if (part[i] === \"\") { // Fully qualified name, e.g. \".My.Message'\r\n while (ptr.parent !== null)\r\n ptr = ptr.parent;\r\n i++;\r\n }\r\n var child;\r\n do {\r\n do {\r\n if (!(ptr instanceof Reflect.Namespace)) {\r\n ptr = null;\r\n break;\r\n }\r\n child = ptr.getChild(part[i]);\r\n if (!child || !(child instanceof Reflect.T) || (excludeNonNamespace && !(child instanceof Reflect.Namespace))) {\r\n ptr = null;\r\n break;\r\n }\r\n ptr = child; i++;\r\n } while (i < part.length);\r\n if (ptr != null)\r\n break; // Found\r\n // Else search the parent\r\n if (this.parent !== null)\r\n return this.parent.resolve(qn, excludeNonNamespace);\r\n } while (ptr != null);\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Determines the shortest qualified name of the specified type, if any, relative to this namespace.\r\n * @param {!ProtoBuf.Reflect.T} t Reflection type\r\n * @returns {string} The shortest qualified name or, if there is none, the fqn\r\n * @expose\r\n */\r\n NamespacePrototype.qn = function(t) {\r\n var part = [], ptr = t;\r\n do {\r\n part.unshift(ptr.name);\r\n ptr = ptr.parent;\r\n } while (ptr !== null);\r\n for (var len=1; len <= part.length; len++) {\r\n var qn = part.slice(part.length-len);\r\n if (t === this.resolve(qn, t instanceof Reflect.Namespace))\r\n return qn.join(\".\");\r\n }\r\n return t.fqn();\r\n };\r\n\r\n /**\r\n * Builds the namespace and returns the runtime counterpart.\r\n * @return {Object.<string,Function|Object>} Runtime namespace\r\n * @expose\r\n */\r\n NamespacePrototype.build = function() {\r\n /** @dict */\r\n var ns = {};\r\n var children = this.children;\r\n for (var i=0, k=children.length, child; i<k; ++i) {\r\n child = children[i];\r\n if (child instanceof Namespace)\r\n ns[child.name] = child.build();\r\n }\r\n if (Object.defineProperty)\r\n Object.defineProperty(ns, \"$options\", { \"value\": this.buildOpt() });\r\n return ns;\r\n };\r\n\r\n /**\r\n * Builds the namespace's '$options' property.\r\n * @return {Object.<string,*>}\r\n */\r\n NamespacePrototype.buildOpt = function() {\r\n var opt = {},\r\n keys = Object.keys(this.options);\r\n for (var i=0, k=keys.length; i<k; ++i) {\r\n var key = keys[i],\r\n val = this.options[keys[i]];\r\n // TODO: Options are not resolved, yet.\r\n // if (val instanceof Namespace) {\r\n // opt[key] = val.build();\r\n // } else {\r\n opt[key] = val;\r\n // }\r\n }\r\n return opt;\r\n };\r\n\r\n /**\r\n * Gets the value assigned to the option with the specified name.\r\n * @param {string=} name Returns the option value if specified, otherwise all options are returned.\r\n * @return {*|Object.<string,*>}null} Option value or NULL if there is no such option\r\n */\r\n NamespacePrototype.getOption = function(name) {\r\n if (typeof name === 'undefined')\r\n return this.options;\r\n return typeof this.options[name] !== 'undefined' ? this.options[name] : null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Namespace\r\n * @expose\r\n */\r\n Reflect.Namespace = Namespace;\r\n\r\n /**\r\n * Constructs a new Element implementation that checks and converts values for a\r\n * particular field type, as appropriate.\r\n *\r\n * An Element represents a single value: either the value of a singular field,\r\n * or a value contained in one entry of a repeated field or map field. This\r\n * class does not implement these higher-level concepts; it only encapsulates\r\n * the low-level typechecking and conversion.\r\n *\r\n * @exports ProtoBuf.Reflect.Element\r\n * @param {{name: string, wireType: number}} type Resolved data type\r\n * @param {ProtoBuf.Reflect.T|null} resolvedType Resolved type, if relevant\r\n * (e.g. submessage field).\r\n * @param {boolean} isMapKey Is this element a Map key? The value will be\r\n * converted to string form if so.\r\n * @param {string} syntax Syntax level of defining message type, e.g.,\r\n * proto2 or proto3.\r\n * @param {string} name Name of the field containing this element (for error\r\n * messages)\r\n * @constructor\r\n */\r\n var Element = function(type, resolvedType, isMapKey, syntax, name) {\r\n\r\n /**\r\n * Element type, as a string (e.g., int32).\r\n * @type {{name: string, wireType: number}}\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Element type reference to submessage or enum definition, if needed.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n */\r\n this.resolvedType = resolvedType;\r\n\r\n /**\r\n * Element is a map key.\r\n * @type {boolean}\r\n */\r\n this.isMapKey = isMapKey;\r\n\r\n /**\r\n * Syntax level of defining message type, e.g., proto2 or proto3.\r\n * @type {string}\r\n */\r\n this.syntax = syntax;\r\n\r\n /**\r\n * Name of the field containing this element (for error messages)\r\n * @type {string}\r\n */\r\n this.name = name;\r\n\r\n if (isMapKey && ProtoBuf.MAP_KEY_TYPES.indexOf(type) < 0)\r\n throw Error(\"Invalid map key type: \" + type.name);\r\n };\r\n\r\n var ElementPrototype = Element.prototype;\r\n\r\n /**\r\n * Obtains a (new) default value for the specified type.\r\n * @param type {string|{name: string, wireType: number}} Field type\r\n * @returns {*} Default value\r\n * @inner\r\n */\r\n function mkDefault(type) {\r\n if (typeof type === 'string')\r\n type = ProtoBuf.TYPES[type];\r\n if (typeof type.defaultValue === 'undefined')\r\n throw Error(\"default value for type \"+type.name+\" is not supported\");\r\n if (type == ProtoBuf.TYPES[\"bytes\"])\r\n return new ByteBuffer(0);\r\n return type.defaultValue;\r\n }\r\n\r\n /**\r\n * Returns the default value for this field in proto3.\r\n * @function\r\n * @param type {string|{name: string, wireType: number}} the field type\r\n * @returns {*} Default value\r\n */\r\n Element.defaultFieldValue = mkDefault;\r\n\r\n /**\r\n * Makes a Long from a value.\r\n * @param {{low: number, high: number, unsigned: boolean}|string|number} value Value\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for\r\n * strings and numbers\r\n * @returns {!Long}\r\n * @throws {Error} If the value cannot be converted to a Long\r\n * @inner\r\n */\r\n function mkLong(value, unsigned) {\r\n if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'\r\n && value.low === value.low && value.high === value.high)\r\n return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);\r\n if (typeof value === 'string')\r\n return ProtoBuf.Long.fromString(value, unsigned || false, 10);\r\n if (typeof value === 'number')\r\n return ProtoBuf.Long.fromNumber(value, unsigned || false);\r\n throw Error(\"not convertible to Long\");\r\n }\r\n\r\n ElementPrototype.toString = function() {\r\n return (this.name || '') + (this.isMapKey ? 'map' : 'value') + ' element';\r\n }\r\n\r\n /**\r\n * Checks if the given value can be set for an element of this type (singular\r\n * field or one element of a repeated field or map).\r\n * @param {*} value Value to check\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be verified for this element slot\r\n * @expose\r\n */\r\n ElementPrototype.verifyValue = function(value) {\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n switch (this.type) {\r\n // Signed 32bit\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n // Account for !NaN: value === value\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value > 4294967295 ? value | 0 : value;\r\n\r\n // Unsigned 32bit\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n return value < 0 ? value >>> 0 : value;\r\n\r\n // Signed 64bit\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, false);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Unsigned 64bit\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]: {\r\n if (ProtoBuf.Long)\r\n try {\r\n return mkLong(value, true);\r\n } catch (e) {\r\n fail(typeof value, e.message);\r\n }\r\n else\r\n fail(typeof value, \"requires Long.js\");\r\n }\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value !== 'boolean')\r\n fail(typeof value, \"not a boolean\");\r\n return value;\r\n\r\n // Float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n if (typeof value !== 'number')\r\n fail(typeof value, \"not a number\");\r\n return value;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n if (typeof value !== 'string' && !(value && value instanceof String))\r\n fail(typeof value, \"not a string\");\r\n return \"\"+value; // Convert String object to string\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (ByteBuffer.isByteBuffer(value))\r\n return value;\r\n return ByteBuffer.wrap(value, \"base64\");\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]: {\r\n var values = this.resolvedType.getChildren(ProtoBuf.Reflect.Enum.Value);\r\n for (i=0; i<values.length; i++)\r\n if (values[i].name == value)\r\n return values[i].id;\r\n else if (values[i].id == value)\r\n return values[i].id;\r\n\r\n if (this.syntax === 'proto3') {\r\n // proto3: just make sure it's an integer.\r\n if (typeof value !== 'number' || (value === value && value % 1 !== 0))\r\n fail(typeof value, \"not an integer\");\r\n if (value > 4294967295 || value < 0)\r\n fail(typeof value, \"not in range for uint32\")\r\n return value;\r\n } else {\r\n // proto2 requires enum values to be valid.\r\n fail(value, \"not a valid enum value\");\r\n }\r\n }\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"group\"]:\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n if (!value || typeof value !== 'object')\r\n fail(typeof value, \"object expected\");\r\n if (value instanceof this.resolvedType.clazz)\r\n return value;\r\n if (value instanceof ProtoBuf.Builder.Message) {\r\n // Mismatched type: Convert to object (see: https://github.com/dcodeIO/ProtoBuf.js/issues/180)\r\n var obj = {};\r\n for (var i in value)\r\n if (value.hasOwnProperty(i))\r\n obj[i] = value[i];\r\n value = obj;\r\n }\r\n // Else let's try to construct one from a key-value object\r\n return new (this.resolvedType.clazz)(value); // May throw for a hundred of reasons\r\n }\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value for \"+this.toString(true)+\": \"+value+\" (undefined type \"+this.type+\")\");\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an element on the wire.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @returns {number} Byte length\r\n * @throws {Error} If the value cannot be calculated\r\n * @expose\r\n */\r\n ElementPrototype.calculateLength = function(id, value) {\r\n if (value === null) return 0; // Nothing to encode\r\n // Tag has already been written\r\n var n;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return value < 0 ? ByteBuffer.calculateVarint64(value) : ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return ByteBuffer.calculateVarint32(ByteBuffer.zigZagEncode32(value));\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return 4;\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return ByteBuffer.calculateVarint64(value);\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return ByteBuffer.calculateVarint64(ByteBuffer.zigZagEncode64(value));\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return 1;\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return ByteBuffer.calculateVarint32(value);\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return 8;\r\n case ProtoBuf.TYPES[\"string\"]:\r\n n = ByteBuffer.calculateUTF8Bytes(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n return ByteBuffer.calculateVarint32(value.remaining()) + value.remaining();\r\n case ProtoBuf.TYPES[\"message\"]:\r\n n = this.resolvedType.calculate(value);\r\n return ByteBuffer.calculateVarint32(n) + n;\r\n case ProtoBuf.TYPES[\"group\"]:\r\n n = this.resolvedType.calculate(value);\r\n return n + ByteBuffer.calculateVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n }\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n };\r\n\r\n /**\r\n * Encodes a value to the specified buffer. Does not encode the key.\r\n * @param {number} id Field number\r\n * @param {*} value Field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the value cannot be encoded\r\n * @expose\r\n */\r\n ElementPrototype.encodeValue = function(id, value, buffer) {\r\n if (value === null) return buffer; // Nothing to encode\r\n // Tag has already been written\r\n\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n // \"If you use int32 or int64 as the type for a negative number, the resulting varint is always ten bytes\r\n // long – it is, effectively, treated like a very large unsigned integer.\" (see #122)\r\n if (value < 0)\r\n buffer.writeVarint64(value);\r\n else\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n buffer.writeVarint32ZigZag(value);\r\n break;\r\n\r\n // Fixed unsigned 32bit\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n buffer.writeUint32(value);\r\n break;\r\n\r\n // Fixed signed 32bit\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n buffer.writeInt32(value);\r\n break;\r\n\r\n // 64bit varint as-is\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n buffer.writeVarint64(value); // throws\r\n break;\r\n\r\n // 64bit varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n buffer.writeVarint64ZigZag(value); // throws\r\n break;\r\n\r\n // Fixed unsigned 64bit\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n buffer.writeUint64(value); // throws\r\n break;\r\n\r\n // Fixed signed 64bit\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n buffer.writeInt64(value); // throws\r\n break;\r\n\r\n // Bool\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n if (typeof value === 'string')\r\n buffer.writeVarint32(value.toLowerCase() === 'false' ? 0 : !!value);\r\n else\r\n buffer.writeVarint32(value ? 1 : 0);\r\n break;\r\n\r\n // Constant enum value\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n buffer.writeVarint32(value);\r\n break;\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n buffer.writeFloat32(value);\r\n break;\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n buffer.writeFloat64(value);\r\n break;\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n buffer.writeVString(value);\r\n break;\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n if (value.remaining() < 0)\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value.remaining()+\" bytes remaining\");\r\n var prevOffset = value.offset;\r\n buffer.writeVarint32(value.remaining());\r\n buffer.append(value);\r\n value.offset = prevOffset;\r\n break;\r\n\r\n // Embedded message\r\n case ProtoBuf.TYPES[\"message\"]:\r\n var bb = new ByteBuffer().LE();\r\n this.resolvedType.encode(value, bb);\r\n buffer.writeVarint32(bb.offset);\r\n buffer.append(bb.flip());\r\n break;\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n this.resolvedType.encode(value, buffer);\r\n buffer.writeVarint32((id << 3) | ProtoBuf.WIRE_TYPES.ENDGROUP);\r\n break;\r\n\r\n default:\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal value to encode in \"+this.toString(true)+\": \"+value+\" (unknown type)\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Decode one element value from the specified buffer.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number} wireType The field wire type\r\n * @param {number} id The field number\r\n * @return {*} Decoded value\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n ElementPrototype.decode = function(buffer, wireType, id) {\r\n if (wireType != this.type.wireType)\r\n throw Error(\"Unexpected wire type for element\");\r\n\r\n var value, nBytes;\r\n switch (this.type) {\r\n // 32bit signed varint\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n return buffer.readVarint32() | 0;\r\n\r\n // 32bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n return buffer.readVarint32() >>> 0;\r\n\r\n // 32bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n return buffer.readVarint32ZigZag() | 0;\r\n\r\n // Fixed 32bit unsigned\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return buffer.readUint32() >>> 0;\r\n\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n return buffer.readInt32() | 0;\r\n\r\n // 64bit signed varint\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n return buffer.readVarint64();\r\n\r\n // 64bit unsigned varint\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n return buffer.readVarint64().toUnsigned();\r\n\r\n // 64bit signed varint zig-zag\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n return buffer.readVarint64ZigZag();\r\n\r\n // Fixed 64bit unsigned\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return buffer.readUint64();\r\n\r\n // Fixed 64bit signed\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n return buffer.readInt64();\r\n\r\n // Bool varint\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return !!buffer.readVarint32();\r\n\r\n // Constant enum value (varint)\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n // The following Builder.Message#set will already throw\r\n return buffer.readVarint32();\r\n\r\n // 32bit float\r\n case ProtoBuf.TYPES[\"float\"]:\r\n return buffer.readFloat();\r\n\r\n // 64bit float\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return buffer.readDouble();\r\n\r\n // Length-delimited string\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return buffer.readVString();\r\n\r\n // Length-delimited bytes\r\n case ProtoBuf.TYPES[\"bytes\"]: {\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n value = buffer.clone(); // Offset already set\r\n value.limit = value.offset+nBytes;\r\n buffer.offset += nBytes;\r\n return value;\r\n }\r\n\r\n // Length-delimited embedded message\r\n case ProtoBuf.TYPES[\"message\"]: {\r\n nBytes = buffer.readVarint32();\r\n return this.resolvedType.decode(buffer, nBytes);\r\n }\r\n\r\n // Legacy group\r\n case ProtoBuf.TYPES[\"group\"]:\r\n return this.resolvedType.decode(buffer, -1, id);\r\n }\r\n\r\n // We should never end here\r\n throw Error(\"[INTERNAL] Illegal decode type\");\r\n };\r\n\r\n /**\r\n * Converts a value from a string to the canonical element type.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {string} str The string value\r\n * @returns {*} The value\r\n */\r\n ElementPrototype.valueFromString = function(str) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueFromString() called on non-map-key element\");\r\n }\r\n\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return this.verifyValue(parseInt(str));\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n // Long-based fields support conversions from string already.\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return str === \"true\";\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return this.verifyValue(str);\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return ByteBuffer.fromBinary(str);\r\n }\r\n };\r\n\r\n /**\r\n * Converts a value from the canonical element type to a string.\r\n *\r\n * It should be the case that `valueFromString(valueToString(val))` returns\r\n * a value equivalent to `verifyValue(val)` for every legal value of `val`\r\n * according to this element type.\r\n *\r\n * This may be used when the element must be stored or used as a string,\r\n * e.g., as a map key on an Object.\r\n *\r\n * Legal only when isMapKey is true.\r\n *\r\n * @param {*} val The value\r\n * @returns {string} The string form of the value.\r\n */\r\n ElementPrototype.valueToString = function(value) {\r\n if (!this.isMapKey) {\r\n throw Error(\"valueToString() called on non-map-key element\");\r\n }\r\n\r\n if (this.type === ProtoBuf.TYPES[\"bytes\"]) {\r\n return value.toString(\"binary\");\r\n } else {\r\n return value.toString();\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Element\r\n * @expose\r\n */\r\n Reflect.Element = Element;\r\n\r\n /**\r\n * Constructs a new Message.\r\n * @exports ProtoBuf.Reflect.Message\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} parent Parent message or namespace\r\n * @param {string} name Message name\r\n * @param {Object.<string,*>=} options Message options\r\n * @param {boolean=} isGroup `true` if this is a legacy group\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Message = function(builder, parent, name, options, isGroup, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message\";\r\n\r\n /**\r\n * Extensions range.\r\n * @type {!Array.<number>|undefined}\r\n * @expose\r\n */\r\n this.extensions = undefined;\r\n\r\n /**\r\n * Runtime message class.\r\n * @type {?function(new:ProtoBuf.Builder.Message)}\r\n * @expose\r\n */\r\n this.clazz = null;\r\n\r\n /**\r\n * Whether this is a legacy group or not.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.isGroup = !!isGroup;\r\n\r\n // The following cached collections are used to efficiently iterate over or look up fields when decoding.\r\n\r\n /**\r\n * Cached fields.\r\n * @type {?Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fields = null;\r\n\r\n /**\r\n * Cached fields by id.\r\n * @type {?Object.<number,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsById = null;\r\n\r\n /**\r\n * Cached fields by name.\r\n * @type {?Object.<string,!ProtoBuf.Reflect.Message.Field>}\r\n * @private\r\n */\r\n this._fieldsByName = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the message and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Message\r\n * @param {boolean=} rebuild Whether to rebuild or not, defaults to false\r\n * @return {ProtoBuf.Reflect.Message} Message class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n MessagePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Message class in its own scope\r\n var clazz = (function(ProtoBuf, T) {\r\n\r\n var fields = T.getChildren(ProtoBuf.Reflect.Message.Field),\r\n oneofs = T.getChildren(ProtoBuf.Reflect.Message.OneOf);\r\n\r\n /**\r\n * Constructs a new runtime Message.\r\n * @name ProtoBuf.Builder.Message\r\n * @class Barebone of all runtime messages.\r\n * @param {!Object.<string,*>|string} values Preset values\r\n * @param {...string} var_args\r\n * @constructor\r\n * @throws {Error} If the message cannot be created\r\n */\r\n var Message = function(values, var_args) {\r\n ProtoBuf.Builder.Message.call(this);\r\n\r\n // Create virtual oneof properties\r\n for (var i=0, k=oneofs.length; i<k; ++i)\r\n this[oneofs[i].name] = null;\r\n // Create fields and set default values\r\n for (i=0, k=fields.length; i<k; ++i) {\r\n var field = fields[i];\r\n this[field.name] =\r\n field.repeated ? [] :\r\n (field.map ? new ProtoBuf.Map(field) : null);\r\n if ((field.required || T.syntax === 'proto3') &&\r\n field.defaultValue !== null)\r\n this[field.name] = field.defaultValue;\r\n }\r\n\r\n if (arguments.length > 0) {\r\n var value;\r\n // Set field values from a values object\r\n if (arguments.length === 1 && values !== null && typeof values === 'object' &&\r\n /* not _another_ Message */ (typeof values.encode !== 'function' || values instanceof Message) &&\r\n /* not a repeated field */ !Array.isArray(values) &&\r\n /* not a Map */ !(values instanceof ProtoBuf.Map) &&\r\n /* not a ByteBuffer */ !ByteBuffer.isByteBuffer(values) &&\r\n /* not an ArrayBuffer */ !(values instanceof ArrayBuffer) &&\r\n /* not a Long */ !(ProtoBuf.Long && values instanceof ProtoBuf.Long)) {\r\n this.$set(values);\r\n } else // Set field values from arguments, in declaration order\r\n for (i=0, k=arguments.length; i<k; ++i)\r\n if (typeof (value = arguments[i]) !== 'undefined')\r\n this.$set(fields[i].name, value); // May throw\r\n }\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message.prototype\r\n * @inner\r\n */\r\n var MessagePrototype = Message.prototype = Object.create(ProtoBuf.Builder.Message.prototype);\r\n\r\n /**\r\n * Adds a value to a repeated field.\r\n * @name ProtoBuf.Builder.Message#add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.add = function(key, value, noAssert) {\r\n var field = T._fieldsByName[key];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+key+\" is undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true)); // May throw if it's an enum or embedded message\r\n if (!field.repeated)\r\n throw Error(this+\"#\"+key+\" is not a repeated field\");\r\n value = field.verifyValue(value, true);\r\n }\r\n if (this[key] === null)\r\n this[key] = [];\r\n this[key].push(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * Adds a value to a repeated field. This is an alias for {@link ProtoBuf.Builder.Message#add}.\r\n * @name ProtoBuf.Builder.Message#$add\r\n * @function\r\n * @param {string} key Field name\r\n * @param {*} value Value to add\r\n * @param {boolean=} noAssert Whether to assert the value or not (asserts by default)\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be added\r\n * @expose\r\n */\r\n MessagePrototype.$add = MessagePrototype.add;\r\n\r\n /**\r\n * Sets a field's value.\r\n * @name ProtoBuf.Builder.Message#set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert for an actual field / proper value type, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.set = function(keyOrObj, value, noAssert) {\r\n if (keyOrObj && typeof keyOrObj === 'object') {\r\n noAssert = value;\r\n for (var ikey in keyOrObj) {\r\n // Check if virtual oneof field - don't set these\r\n if (keyOrObj.hasOwnProperty(ikey) && typeof (value = keyOrObj[ikey]) !== 'undefined' && T._oneofsByName[ikey] === undefined)\r\n this.$set(ikey, value, noAssert);\r\n }\r\n return this;\r\n }\r\n var field = T._fieldsByName[keyOrObj];\r\n if (!noAssert) {\r\n if (!field)\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+keyOrObj+\" is not a field: \"+field.toString(true));\r\n this[field.name] = (value = field.verifyValue(value)); // May throw\r\n } else\r\n this[keyOrObj] = value;\r\n if (field && field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = this[field.oneof.name]; // Virtual field references currently set field\r\n if (value !== null) {\r\n if (currentField !== null && currentField !== field.name)\r\n this[currentField] = null; // Clear currently set field\r\n this[field.oneof.name] = field.name; // Point virtual field at this field\r\n } else if (/* value === null && */currentField === keyOrObj)\r\n this[field.oneof.name] = null; // Clear virtual field (current field explicitly cleared)\r\n }\r\n return this;\r\n };\r\n\r\n /**\r\n * Sets a field's value. This is an alias for [@link ProtoBuf.Builder.Message#set}.\r\n * @name ProtoBuf.Builder.Message#$set\r\n * @function\r\n * @param {string|!Object.<string,*>} keyOrObj String key or plain object holding multiple values\r\n * @param {(*|boolean)=} value Value to set if key is a string, otherwise omitted\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @throws {Error} If the value cannot be set\r\n * @expose\r\n */\r\n MessagePrototype.$set = MessagePrototype.set;\r\n\r\n /**\r\n * Gets a field's value.\r\n * @name ProtoBuf.Builder.Message#get\r\n * @function\r\n * @param {string} key Key\r\n * @param {boolean=} noAssert Whether to not assert for an actual field, defaults to `false`\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.get = function(key, noAssert) {\r\n if (noAssert)\r\n return this[key];\r\n var field = T._fieldsByName[key];\r\n if (!field || !(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: undefined\");\r\n if (!(field instanceof ProtoBuf.Reflect.Message.Field))\r\n throw Error(this+\"#\"+key+\" is not a field: \"+field.toString(true));\r\n return this[field.name];\r\n };\r\n\r\n /**\r\n * Gets a field's value. This is an alias for {@link ProtoBuf.Builder.Message#$get}.\r\n * @name ProtoBuf.Builder.Message#$get\r\n * @function\r\n * @param {string} key Key\r\n * @return {*} Value\r\n * @throws {Error} If there is no such field\r\n * @expose\r\n */\r\n MessagePrototype.$get = MessagePrototype.get;\r\n\r\n // Getters and setters\r\n\r\n for (var i=0; i<fields.length; i++) {\r\n var field = fields[i];\r\n // no setters for extension fields as these are named by their fqn\r\n if (field instanceof ProtoBuf.Reflect.Message.ExtensionField)\r\n continue;\r\n\r\n if (T.builder.options['populateAccessors'])\r\n (function(field) {\r\n // set/get[SomeValue]\r\n var Name = field.originalName.replace(/(_[a-zA-Z])/g, function(match) {\r\n return match.toUpperCase().replace('_','');\r\n });\r\n Name = Name.substring(0,1).toUpperCase() + Name.substring(1);\r\n\r\n // set/get_[some_value] FIXME: Do we really need these?\r\n var name = field.originalName.replace(/([A-Z])/g, function(match) {\r\n return \"_\"+match;\r\n });\r\n\r\n /**\r\n * The current field's unbound setter function.\r\n * @function\r\n * @param {*} value\r\n * @param {boolean=} noAssert\r\n * @returns {!ProtoBuf.Builder.Message}\r\n * @inner\r\n */\r\n var setter = function(value, noAssert) {\r\n this[field.name] = noAssert ? value : field.verifyValue(value);\r\n return this;\r\n };\r\n\r\n /**\r\n * The current field's unbound getter function.\r\n * @function\r\n * @returns {*}\r\n * @inner\r\n */\r\n var getter = function() {\r\n return this[field.name];\r\n };\r\n\r\n if (T.getChild(\"set\"+Name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set[SomeField]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set\"+Name] = setter;\r\n\r\n if (T.getChild(\"set_\"+name) === null)\r\n /**\r\n * Sets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#set_[some_field]\r\n * @function\r\n * @param {*} value Value to set\r\n * @param {boolean=} noAssert Whether to not assert the value, defaults to `false`\r\n * @returns {!ProtoBuf.Builder.Message} this\r\n * @abstract\r\n * @throws {Error} If the value cannot be set\r\n */\r\n MessagePrototype[\"set_\"+name] = setter;\r\n\r\n if (T.getChild(\"get\"+Name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get[SomeField]\r\n * @function\r\n * @abstract\r\n * @return {*} The value\r\n */\r\n MessagePrototype[\"get\"+Name] = getter;\r\n\r\n if (T.getChild(\"get_\"+name) === null)\r\n /**\r\n * Gets a value. This method is present for each field, but only if there is no name conflict with\r\n * another field.\r\n * @name ProtoBuf.Builder.Message#get_[some_field]\r\n * @function\r\n * @return {*} The value\r\n * @abstract\r\n */\r\n MessagePrototype[\"get_\"+name] = getter;\r\n\r\n })(field);\r\n }\r\n\r\n // En-/decoding\r\n\r\n /**\r\n * Encodes the message.\r\n * @name ProtoBuf.Builder.Message#$encode\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message#encode64\r\n * @see ProtoBuf.Builder.Message#encodeHex\r\n * @see ProtoBuf.Builder.Message#encodeAB\r\n */\r\n MessagePrototype.encode = function(buffer, noVerify) {\r\n if (typeof buffer === 'boolean')\r\n noVerify = buffer,\r\n buffer = undefined;\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var le = buffer.littleEndian;\r\n try {\r\n T.encode(this, buffer.LE(), noVerify);\r\n return (isNew ? buffer.flip() : buffer).LE(le);\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Encodes a message using the specified data payload.\r\n * @param {!Object.<string,*>} data Data payload\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @expose\r\n */\r\n Message.encode = function(data, buffer, noVerify) {\r\n return new Message(data).encode(buffer, noVerify);\r\n };\r\n\r\n /**\r\n * Calculates the byte length of the message.\r\n * @name ProtoBuf.Builder.Message#calculate\r\n * @function\r\n * @returns {number} Byte length\r\n * @throws {Error} If the message cannot be calculated or if required fields are missing.\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function() {\r\n return T.calculate(this);\r\n };\r\n\r\n /**\r\n * Encodes the varint32 length-delimited message.\r\n * @name ProtoBuf.Builder.Message#encodeDelimited\r\n * @function\r\n * @param {(!ByteBuffer|boolean)=} buffer ByteBuffer to encode to. Will create a new one and flip it if omitted.\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {!ByteBuffer} Encoded message as a ByteBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ByteBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeDelimited = function(buffer, noVerify) {\r\n var isNew = false;\r\n if (!buffer)\r\n buffer = new ByteBuffer(),\r\n isNew = true;\r\n var enc = new ByteBuffer().LE();\r\n T.encode(this, enc, noVerify).flip();\r\n buffer.writeVarint32(enc.remaining());\r\n buffer.append(enc);\r\n return isNew ? buffer.flip() : buffer;\r\n };\r\n\r\n /**\r\n * Directly encodes the message to an ArrayBuffer.\r\n * @name ProtoBuf.Builder.Message#encodeAB\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeAB = function() {\r\n try {\r\n return this.encode().toArrayBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toArrayBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as an ArrayBuffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeAB}.\r\n * @name ProtoBuf.Builder.Message#toArrayBuffer\r\n * @function\r\n * @return {ArrayBuffer} Encoded message as ArrayBuffer\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded ArrayBuffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toArrayBuffer = MessagePrototype.encodeAB;\r\n\r\n /**\r\n * Directly encodes the message to a node Buffer.\r\n * @name ProtoBuf.Builder.Message#encodeNB\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded, not running under node.js or if required fields are\r\n * missing. The later still returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeNB = function() {\r\n try {\r\n return this.encode().toBuffer();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBuffer();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a node Buffer. This is an alias for {@link ProtoBuf.Builder.Message#encodeNB}.\r\n * @name ProtoBuf.Builder.Message#toBuffer\r\n * @function\r\n * @return {!Buffer}\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded node Buffer in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBuffer = MessagePrototype.encodeNB;\r\n\r\n /**\r\n * Directly encodes the message to a base64 encoded string.\r\n * @name ProtoBuf.Builder.Message#encode64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encode64 = function() {\r\n try {\r\n return this.encode().toBase64();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toBase64();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a base64 encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encode64}.\r\n * @name ProtoBuf.Builder.Message#toBase64\r\n * @function\r\n * @return {string} Base64 encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded base64 string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toBase64 = MessagePrototype.encode64;\r\n\r\n /**\r\n * Directly encodes the message to a hex encoded string.\r\n * @name ProtoBuf.Builder.Message#encodeHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the underlying buffer cannot be encoded or if required fields are missing. The later\r\n * still returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.encodeHex = function() {\r\n try {\r\n return this.encode().toHex();\r\n } catch (e) {\r\n if (e[\"encoded\"]) e[\"encoded\"] = e[\"encoded\"].toHex();\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the message as a hex encoded string. This is an alias for {@link ProtoBuf.Builder.Message#encodeHex}.\r\n * @name ProtoBuf.Builder.Message#toHex\r\n * @function\r\n * @return {string} Hex encoded string\r\n * @throws {Error} If the message cannot be encoded or if required fields are missing. The later still\r\n * returns the encoded hex string in the `encoded` property on the error.\r\n * @expose\r\n */\r\n MessagePrototype.toHex = MessagePrototype.encodeHex;\r\n\r\n /**\r\n * Clones a message object or field value to a raw object.\r\n * @param {*} obj Object to clone\r\n * @param {boolean} binaryAsBase64 Whether to include binary data as base64 strings or as a buffer otherwise\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @param {!ProtoBuf.Reflect.T=} resolvedType The resolved field type if a field\r\n * @returns {*} Cloned object\r\n * @inner\r\n */\r\n function cloneRaw(obj, binaryAsBase64, longsAsStrings, resolvedType) {\r\n if (obj === null || typeof obj !== 'object') {\r\n // Convert enum values to their respective names\r\n if (resolvedType && resolvedType instanceof ProtoBuf.Reflect.Enum) {\r\n var name = ProtoBuf.Reflect.Enum.getName(resolvedType.object, obj);\r\n if (name !== null)\r\n return name;\r\n }\r\n // Pass-through string, number, boolean, null...\r\n return obj;\r\n }\r\n // Convert ByteBuffers to raw buffer or strings\r\n if (ByteBuffer.isByteBuffer(obj))\r\n return binaryAsBase64 ? obj.toBase64() : obj.toBuffer();\r\n // Convert Longs to proper objects or strings\r\n if (ProtoBuf.Long.isLong(obj))\r\n return longsAsStrings ? obj.toString() : ProtoBuf.Long.fromValue(obj);\r\n var clone;\r\n // Clone arrays\r\n if (Array.isArray(obj)) {\r\n clone = [];\r\n obj.forEach(function(v, k) {\r\n clone[k] = cloneRaw(v, binaryAsBase64, longsAsStrings, resolvedType);\r\n });\r\n return clone;\r\n }\r\n clone = {};\r\n // Convert maps to objects\r\n if (obj instanceof ProtoBuf.Map) {\r\n var it = obj.entries();\r\n for (var e = it.next(); !e.done; e = it.next())\r\n clone[obj.keyElem.valueToString(e.value[0])] = cloneRaw(e.value[1], binaryAsBase64, longsAsStrings, obj.valueElem.resolvedType);\r\n return clone;\r\n }\r\n // Everything else is a non-null object\r\n var type = obj.$type,\r\n field = undefined;\r\n for (var i in obj)\r\n if (obj.hasOwnProperty(i)) {\r\n if (type && (field = type.getChild(i)))\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings, field.resolvedType);\r\n else\r\n clone[i] = cloneRaw(obj[i], binaryAsBase64, longsAsStrings);\r\n }\r\n return clone;\r\n }\r\n\r\n /**\r\n * Returns the message's raw payload.\r\n * @param {boolean=} binaryAsBase64 Whether to include binary data as base64 strings instead of Buffers, defaults to `false`\r\n * @param {boolean} longsAsStrings Whether to encode longs as strings\r\n * @returns {Object.<string,*>} Raw payload\r\n * @expose\r\n */\r\n MessagePrototype.toRaw = function(binaryAsBase64, longsAsStrings) {\r\n return cloneRaw(this, !!binaryAsBase64, !!longsAsStrings, this.$type);\r\n };\r\n\r\n /**\r\n * Encodes a message to JSON.\r\n * @returns {string} JSON string\r\n * @expose\r\n */\r\n MessagePrototype.encodeJSON = function() {\r\n return JSON.stringify(\r\n cloneRaw(this,\r\n /* binary-as-base64 */ true,\r\n /* longs-as-strings */ true,\r\n this.$type\r\n )\r\n );\r\n };\r\n\r\n /**\r\n * Decodes a message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decode\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {(number|string)=} length Message length. Defaults to decode all the remainig data.\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n * @see ProtoBuf.Builder.Message.decode64\r\n * @see ProtoBuf.Builder.Message.decodeHex\r\n */\r\n Message.decode = function(buffer, length, enc) {\r\n if (typeof length === 'string')\r\n enc = length,\r\n length = -1;\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n var le = buffer.littleEndian;\r\n try {\r\n var msg = T.decode(buffer.LE(), length);\r\n buffer.LE(le);\r\n return msg;\r\n } catch (e) {\r\n buffer.LE(le);\r\n throw(e);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes a varint32 length-delimited message from the specified buffer or string.\r\n * @name ProtoBuf.Builder.Message.decodeDelimited\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Buffer|string} buffer Buffer to decode from\r\n * @param {string=} enc Encoding if buffer is a string: hex, utf8 (not recommended), defaults to base64\r\n * @return {ProtoBuf.Builder.Message} Decoded message or `null` if not enough bytes are available yet\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeDelimited = function(buffer, enc) {\r\n if (typeof buffer === 'string')\r\n buffer = ByteBuffer.wrap(buffer, enc ? enc : \"base64\");\r\n else if (!ByteBuffer.isByteBuffer(buffer))\r\n buffer = ByteBuffer.wrap(buffer); // May throw\r\n if (buffer.remaining() < 1)\r\n return null;\r\n var off = buffer.offset,\r\n len = buffer.readVarint32();\r\n if (buffer.remaining() < len) {\r\n buffer.offset = off;\r\n return null;\r\n }\r\n try {\r\n var msg = T.decode(buffer.slice(buffer.offset, buffer.offset + len).LE());\r\n buffer.offset += len;\r\n return msg;\r\n } catch (err) {\r\n buffer.offset += len;\r\n throw err;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified base64 encoded string.\r\n * @name ProtoBuf.Builder.Message.decode64\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decode64 = function(str) {\r\n return Message.decode(str, \"base64\");\r\n };\r\n\r\n /**\r\n * Decodes the message from the specified hex encoded string.\r\n * @name ProtoBuf.Builder.Message.decodeHex\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are missing. The later still\r\n * returns the decoded message with missing fields in the `decoded` property on the error.\r\n * @expose\r\n */\r\n Message.decodeHex = function(str) {\r\n return Message.decode(str, \"hex\");\r\n };\r\n\r\n /**\r\n * Decodes the message from a JSON string.\r\n * @name ProtoBuf.Builder.Message.decodeJSON\r\n * @function\r\n * @param {string} str String to decode from\r\n * @return {!ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded or if required fields are\r\n * missing.\r\n * @expose\r\n */\r\n Message.decodeJSON = function(str) {\r\n return new Message(JSON.parse(str));\r\n };\r\n\r\n // Utility\r\n\r\n /**\r\n * Returns a string representation of this Message.\r\n * @name ProtoBuf.Builder.Message#toString\r\n * @function\r\n * @return {string} String representation as of \".Fully.Qualified.MessageName\"\r\n * @expose\r\n */\r\n MessagePrototype.toString = function() {\r\n return T.toString();\r\n };\r\n\r\n // Properties\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Message options.\r\n * @name ProtoBuf.Builder.Message#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message.$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Message#$type\r\n * @type {!ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Message, '$options', { \"value\": T.buildOpt() }),\r\n Object.defineProperty(MessagePrototype, \"$options\", { \"value\": Message[\"$options\"] }),\r\n Object.defineProperty(Message, \"$type\", { \"value\": T }),\r\n Object.defineProperty(MessagePrototype, \"$type\", { \"value\": T });\r\n\r\n return Message;\r\n\r\n })(ProtoBuf, this);\r\n\r\n // Static enums and prototyped sub-messages / cached collections\r\n this._fields = [];\r\n this._fieldsById = {};\r\n this._fieldsByName = {};\r\n this._oneofsByName = {};\r\n for (var i=0, k=this.children.length, child; i<k; i++) {\r\n child = this.children[i];\r\n if (child instanceof Enum || child instanceof Message || child instanceof Service) {\r\n if (clazz.hasOwnProperty(child.name))\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+child.toString(true)+\" cannot override static property '\"+child.name+\"'\");\r\n clazz[child.name] = child.build();\r\n } else if (child instanceof Message.Field)\r\n child.build(),\r\n this._fields.push(child),\r\n this._fieldsById[child.id] = child,\r\n this._fieldsByName[child.name] = child;\r\n else if (child instanceof Message.OneOf) {\r\n this._oneofsByName[child.name] = child;\r\n }\r\n else if (!(child instanceof Message.OneOf) && !(child instanceof Extension)) // Not built\r\n throw Error(\"Illegal reflect child of \"+this.toString(true)+\": \"+this.children[i].toString(true));\r\n }\r\n\r\n return this.clazz = clazz;\r\n };\r\n\r\n /**\r\n * Encodes a runtime message's contents to the specified buffer.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @param {ByteBuffer} buffer ByteBuffer to write to\r\n * @param {boolean=} noVerify Whether to not verify field values, defaults to `false`\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If required fields are missing or the message cannot be encoded for another reason\r\n * @expose\r\n */\r\n MessagePrototype.encode = function(message, buffer, noVerify) {\r\n var fieldMissing = null,\r\n field;\r\n for (var i=0, k=this._fields.length, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null) {\r\n if (fieldMissing === null)\r\n fieldMissing = field;\r\n } else\r\n field.encode(noVerify ? val : field.verifyValue(val), buffer, message);\r\n }\r\n if (fieldMissing !== null) {\r\n var err = Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+fieldMissing);\r\n err[\"encoded\"] = buffer; // Still expose what we got\r\n throw(err);\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates a runtime message's byte length.\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message to encode\r\n * @returns {number} Byte length\r\n * @throws {Error} If required fields are missing or the message cannot be calculated for another reason\r\n * @expose\r\n */\r\n MessagePrototype.calculate = function(message) {\r\n for (var n=0, i=0, k=this._fields.length, field, val; i<k; ++i) {\r\n field = this._fields[i];\r\n val = message[field.name];\r\n if (field.required && val === null)\r\n throw Error(\"Missing at least one required field for \"+this.toString(true)+\": \"+field);\r\n else\r\n n += field.calculate(val, message);\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Skips all data until the end of the specified group has been reached.\r\n * @param {number} expectedId Expected GROUPEND id\r\n * @param {!ByteBuffer} buf ByteBuffer\r\n * @returns {boolean} `true` if a value as been skipped, `false` if the end has been reached\r\n * @throws {Error} If it wasn't possible to find the end of the group (buffer overrun or end tag mismatch)\r\n * @inner\r\n */\r\n function skipTillGroupEnd(expectedId, buf) {\r\n var tag = buf.readVarint32(), // Throws on OOB\r\n wireType = tag & 0x07,\r\n id = tag >>> 3;\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n do tag = buf.readUint8();\r\n while ((tag & 0x80) === 0x80);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buf.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n tag = buf.readVarint32(); // reads the varint\r\n buf.offset += tag; // skips n bytes\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n skipTillGroupEnd(id, buf);\r\n break;\r\n case ProtoBuf.WIRE_TYPES.ENDGROUP:\r\n if (id === expectedId)\r\n return false;\r\n else\r\n throw Error(\"Illegal GROUPEND after unknown group: \"+id+\" (\"+expectedId+\" expected)\");\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buf.offset += 4;\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type in unknown group \"+expectedId+\": \"+wireType);\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Decodes an encoded message and returns the decoded message.\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {number=} length Message length. Defaults to decode all remaining data.\r\n * @param {number=} expectedGroupEndId Expected GROUPEND id if this is a legacy group\r\n * @return {ProtoBuf.Builder.Message} Decoded message\r\n * @throws {Error} If the message cannot be decoded\r\n * @expose\r\n */\r\n MessagePrototype.decode = function(buffer, length, expectedGroupEndId) {\r\n if (typeof length !== 'number')\r\n length = -1;\r\n var start = buffer.offset,\r\n msg = new (this.clazz)(),\r\n tag, wireType, id, field;\r\n while (buffer.offset < start+length || (length === -1 && buffer.remaining() > 0)) {\r\n tag = buffer.readVarint32();\r\n wireType = tag & 0x07;\r\n id = tag >>> 3;\r\n if (wireType === ProtoBuf.WIRE_TYPES.ENDGROUP) {\r\n if (id !== expectedGroupEndId)\r\n throw Error(\"Illegal group end indicator for \"+this.toString(true)+\": \"+id+\" (\"+(expectedGroupEndId ? expectedGroupEndId+\" expected\" : \"not a group\")+\")\");\r\n break;\r\n }\r\n if (!(field = this._fieldsById[id])) {\r\n // \"messages created by your new code can be parsed by your old code: old binaries simply ignore the new field when parsing.\"\r\n switch (wireType) {\r\n case ProtoBuf.WIRE_TYPES.VARINT:\r\n buffer.readVarint32();\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS32:\r\n buffer.offset += 4;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.BITS64:\r\n buffer.offset += 8;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.LDELIM:\r\n var len = buffer.readVarint32();\r\n buffer.offset += len;\r\n break;\r\n case ProtoBuf.WIRE_TYPES.STARTGROUP:\r\n while (skipTillGroupEnd(id, buffer)) {}\r\n break;\r\n default:\r\n throw Error(\"Illegal wire type for unknown field \"+id+\" in \"+this.toString(true)+\"#decode: \"+wireType);\r\n }\r\n continue;\r\n }\r\n if (field.repeated && !field.options[\"packed\"]) {\r\n msg[field.name].push(field.decode(wireType, buffer));\r\n } else if (field.map) {\r\n var keyval = field.decode(wireType, buffer);\r\n msg[field.name].set(keyval[0], keyval[1]);\r\n } else {\r\n msg[field.name] = field.decode(wireType, buffer);\r\n if (field.oneof) { // Field is part of an OneOf (not a virtual OneOf field)\r\n var currentField = msg[field.oneof.name]; // Virtual field references currently set field\r\n if (currentField !== null && currentField !== field.name)\r\n msg[currentField] = null; // Clear currently set field\r\n msg[field.oneof.name] = field.name; // Point virtual field at this field\r\n }\r\n }\r\n }\r\n\r\n // Check if all required fields are present and set default values for optional fields that are not\r\n for (var i=0, k=this._fields.length; i<k; ++i) {\r\n field = this._fields[i];\r\n if (msg[field.name] === null) {\r\n if (this.syntax === \"proto3\") { // Proto3 sets default values by specification\r\n msg[field.name] = field.defaultValue;\r\n } else if (field.required) {\r\n var err = Error(\"Missing at least one required field for \" + this.toString(true) + \": \" + field.name);\r\n err[\"decoded\"] = msg; // Still expose what we got\r\n throw(err);\r\n } else if (ProtoBuf.populateDefaults && field.defaultValue !== null)\r\n msg[field.name] = field.defaultValue;\r\n }\r\n }\r\n return msg;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message\r\n * @expose\r\n */\r\n Reflect.Message = Message;\r\n\r\n /**\r\n * Constructs a new Message Field.\r\n * @exports ProtoBuf.Reflect.Message.Field\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string?} keytype Key data type, if any.\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {Object.<string,*>=} options Options\r\n * @param {!ProtoBuf.Reflect.Message.OneOf=} oneof Enclosing OneOf\r\n * @param {string?} syntax The syntax level of this definition (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Field = function(builder, message, rule, keytype, type, name, id, options, oneof, syntax) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Message.Field\";\r\n\r\n /**\r\n * Message field required flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.required = rule === \"required\";\r\n\r\n /**\r\n * Message field repeated flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.repeated = rule === \"repeated\";\r\n\r\n /**\r\n * Message field map flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.map = rule === \"map\";\r\n\r\n /**\r\n * Message field key type. Type reference string if unresolved, protobuf\r\n * type if resolved. Valid only if this.map === true, null otherwise.\r\n * @type {string|{name: string, wireType: number}|null}\r\n * @expose\r\n */\r\n this.keyType = keytype || null;\r\n\r\n /**\r\n * Message field type. Type reference string if unresolved, protobuf type if\r\n * resolved. In a map field, this is the value type.\r\n * @type {string|{name: string, wireType: number}}\r\n * @expose\r\n */\r\n this.type = type;\r\n\r\n /**\r\n * Resolved type reference inside the global namespace.\r\n * @type {ProtoBuf.Reflect.T|null}\r\n * @expose\r\n */\r\n this.resolvedType = null;\r\n\r\n /**\r\n * Unique message field id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n\r\n /**\r\n * Message field options.\r\n * @type {!Object.<string,*>}\r\n * @dict\r\n * @expose\r\n */\r\n this.options = options || {};\r\n\r\n /**\r\n * Default value.\r\n * @type {*}\r\n * @expose\r\n */\r\n this.defaultValue = null;\r\n\r\n /**\r\n * Enclosing OneOf.\r\n * @type {?ProtoBuf.Reflect.Message.OneOf}\r\n * @expose\r\n */\r\n this.oneof = oneof || null;\r\n\r\n /**\r\n * Syntax level of this definition (e.g., proto3).\r\n * @type {string}\r\n * @expose\r\n */\r\n this.syntax = syntax || 'proto2';\r\n\r\n /**\r\n * Original field name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.originalName = this.name; // Used to revert camelcase transformation on naming collisions\r\n\r\n /**\r\n * Element implementation. Created in build() after types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.element = null;\r\n\r\n /**\r\n * Key element implementation, for map fields. Created in build() after\r\n * types are resolved.\r\n * @type {ProtoBuf.Element}\r\n * @expose\r\n */\r\n this.keyElement = null;\r\n\r\n // Convert field names to camel case notation if the override is set\r\n if (this.builder.options['convertFieldsToCamelCase'] && !(this instanceof Message.ExtensionField))\r\n this.name = ProtoBuf.Util.toCamelCase(this.name);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field.prototype\r\n * @inner\r\n */\r\n var FieldPrototype = Field.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the field.\r\n * @override\r\n * @expose\r\n */\r\n FieldPrototype.build = function() {\r\n this.element = new Element(this.type, this.resolvedType, false, this.syntax, this.name);\r\n if (this.map)\r\n this.keyElement = new Element(this.keyType, undefined, true, this.syntax, this.name);\r\n\r\n // In proto3, fields do not have field presence, and every field is set to\r\n // its type's default value (\"\", 0, 0.0, or false).\r\n if (this.syntax === 'proto3' && !this.repeated && !this.map)\r\n this.defaultValue = Element.defaultFieldValue(this.type);\r\n\r\n // Otherwise, default values are present when explicitly specified\r\n else if (typeof this.options['default'] !== 'undefined')\r\n this.defaultValue = this.verifyValue(this.options['default']);\r\n };\r\n\r\n /**\r\n * Checks if the given value can be set for this field.\r\n * @param {*} value Value to check\r\n * @param {boolean=} skipRepeated Whether to skip the repeated value check or not. Defaults to false.\r\n * @return {*} Verified, maybe adjusted, value\r\n * @throws {Error} If the value cannot be set for this field\r\n * @expose\r\n */\r\n FieldPrototype.verifyValue = function(value, skipRepeated) {\r\n skipRepeated = skipRepeated || false;\r\n var self = this;\r\n function fail(val, msg) {\r\n throw Error(\"Illegal value for \"+self.toString(true)+\" of type \"+self.type.name+\": \"+val+\" (\"+msg+\")\");\r\n }\r\n if (value === null) { // NULL values for optional fields\r\n if (this.required)\r\n fail(typeof value, \"required\");\r\n if (this.syntax === 'proto3' && this.type !== ProtoBuf.TYPES[\"message\"])\r\n fail(typeof value, \"proto3 field without field presence cannot be null\");\r\n return null;\r\n }\r\n var i;\r\n if (this.repeated && !skipRepeated) { // Repeated values as arrays\r\n if (!Array.isArray(value))\r\n value = [value];\r\n var res = [];\r\n for (i=0; i<value.length; i++)\r\n res.push(this.element.verifyValue(value[i]));\r\n return res;\r\n }\r\n if (this.map && !skipRepeated) { // Map values as objects\r\n if (!(value instanceof ProtoBuf.Map)) {\r\n // If not already a Map, attempt to convert.\r\n if (!(value instanceof Object)) {\r\n fail(typeof value,\r\n \"expected ProtoBuf.Map or raw object for map field\");\r\n }\r\n return new ProtoBuf.Map(this, value);\r\n } else {\r\n return value;\r\n }\r\n }\r\n // All non-repeated fields expect no array\r\n if (!this.repeated && Array.isArray(value))\r\n fail(typeof value, \"no array expected\");\r\n\r\n return this.element.verifyValue(value);\r\n };\r\n\r\n /**\r\n * Determines whether the field will have a presence on the wire given its\r\n * value.\r\n * @param {*} value Verified field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {boolean} Whether the field will be present on the wire\r\n */\r\n FieldPrototype.hasWirePresence = function(value, message) {\r\n if (this.syntax !== 'proto3')\r\n return (value !== null);\r\n if (this.oneof && message[this.oneof.name] === this.name)\r\n return true;\r\n switch (this.type) {\r\n case ProtoBuf.TYPES[\"int32\"]:\r\n case ProtoBuf.TYPES[\"sint32\"]:\r\n case ProtoBuf.TYPES[\"sfixed32\"]:\r\n case ProtoBuf.TYPES[\"uint32\"]:\r\n case ProtoBuf.TYPES[\"fixed32\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"int64\"]:\r\n case ProtoBuf.TYPES[\"sint64\"]:\r\n case ProtoBuf.TYPES[\"sfixed64\"]:\r\n case ProtoBuf.TYPES[\"uint64\"]:\r\n case ProtoBuf.TYPES[\"fixed64\"]:\r\n return value.low !== 0 || value.high !== 0;\r\n\r\n case ProtoBuf.TYPES[\"bool\"]:\r\n return value;\r\n\r\n case ProtoBuf.TYPES[\"float\"]:\r\n case ProtoBuf.TYPES[\"double\"]:\r\n return value !== 0.0;\r\n\r\n case ProtoBuf.TYPES[\"string\"]:\r\n return value.length > 0;\r\n\r\n case ProtoBuf.TYPES[\"bytes\"]:\r\n return value.remaining() > 0;\r\n\r\n case ProtoBuf.TYPES[\"enum\"]:\r\n return value !== 0;\r\n\r\n case ProtoBuf.TYPES[\"message\"]:\r\n return value !== null;\r\n default:\r\n return true;\r\n }\r\n };\r\n\r\n /**\r\n * Encodes the specified field value to the specified buffer.\r\n * @param {*} value Verified field value\r\n * @param {ByteBuffer} buffer ByteBuffer to encode to\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @return {ByteBuffer} The ByteBuffer for chaining\r\n * @throws {Error} If the field cannot be encoded\r\n * @expose\r\n */\r\n FieldPrototype.encode = function(value, buffer, message) {\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return buffer; // Optional omitted\r\n try {\r\n if (this.repeated) {\r\n var i;\r\n // \"Only repeated fields of primitive numeric types (types which use the varint, 32-bit, or 64-bit wire\r\n // types) can be declared 'packed'.\"\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n // \"All of the elements of the field are packed into a single key-value pair with wire type 2\r\n // (length-delimited). Each element is encoded the same way it would be normally, except without a\r\n // tag preceding it.\"\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.ensureCapacity(buffer.offset += 1); // We do not know the length yet, so let's assume a varint of length 1\r\n var start = buffer.offset; // Remember where the contents begin\r\n for (i=0; i<value.length; i++)\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n var len = buffer.offset-start,\r\n varintLen = ByteBuffer.calculateVarint32(len);\r\n if (varintLen > 1) { // We need to move the contents\r\n var contents = buffer.slice(start, buffer.offset);\r\n start += varintLen-1;\r\n buffer.offset = start;\r\n buffer.append(contents);\r\n }\r\n buffer.writeVarint32(len, start-varintLen);\r\n } else {\r\n // \"If your message definition has repeated elements (without the [packed=true] option), the encoded\r\n // message has zero or more key-value pairs with the same tag number\"\r\n for (i=0; i<value.length; i++)\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType),\r\n this.element.encodeValue(this.id, value[i], buffer);\r\n }\r\n } else if (this.map) {\r\n // Write out each map entry as a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n // Submessage with wire type of length-delimited.\r\n buffer.writeVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n buffer.writeVarint32(length);\r\n\r\n // Write out the key and val.\r\n buffer.writeVarint32((1 << 3) | this.keyType.wireType);\r\n this.keyElement.encodeValue(1, key, buffer);\r\n buffer.writeVarint32((2 << 3) | this.type.wireType);\r\n this.element.encodeValue(2, val, buffer);\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n buffer.writeVarint32((this.id << 3) | this.type.wireType);\r\n this.element.encodeValue(this.id, value, buffer);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Calculates the length of this field's value on the network level.\r\n * @param {*} value Field value\r\n * @param {!ProtoBuf.Builder.Message} message Runtime message\r\n * @returns {number} Byte length\r\n * @expose\r\n */\r\n FieldPrototype.calculate = function(value, message) {\r\n value = this.verifyValue(value); // May throw\r\n if (this.type === null || typeof this.type !== 'object')\r\n throw Error(\"[INTERNAL] Unresolved type in \"+this.toString(true)+\": \"+this.type);\r\n if (value === null || (this.repeated && value.length == 0))\r\n return 0; // Optional omitted\r\n var n = 0;\r\n try {\r\n if (this.repeated) {\r\n var i, ni;\r\n if (this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n ni = 0;\r\n for (i=0; i<value.length; i++)\r\n ni += this.element.calculateLength(this.id, value[i]);\r\n n += ByteBuffer.calculateVarint32(ni);\r\n n += ni;\r\n } else {\r\n for (i=0; i<value.length; i++)\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType),\r\n n += this.element.calculateLength(this.id, value[i]);\r\n }\r\n } else if (this.map) {\r\n // Each map entry becomes a submessage.\r\n value.forEach(function(val, key, m) {\r\n // Compute the length of the submessage (key, val) pair.\r\n var length =\r\n ByteBuffer.calculateVarint32((1 << 3) | this.keyType.wireType) +\r\n this.keyElement.calculateLength(1, key) +\r\n ByteBuffer.calculateVarint32((2 << 3) | this.type.wireType) +\r\n this.element.calculateLength(2, val);\r\n\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | ProtoBuf.WIRE_TYPES.LDELIM);\r\n n += ByteBuffer.calculateVarint32(length);\r\n n += length;\r\n }, this);\r\n } else {\r\n if (this.hasWirePresence(value, message)) {\r\n n += ByteBuffer.calculateVarint32((this.id << 3) | this.type.wireType);\r\n n += this.element.calculateLength(this.id, value);\r\n }\r\n }\r\n } catch (e) {\r\n throw Error(\"Illegal value for \"+this.toString(true)+\": \"+value+\" (\"+e+\")\");\r\n }\r\n return n;\r\n };\r\n\r\n /**\r\n * Decode the field value from the specified buffer.\r\n * @param {number} wireType Leading wire type\r\n * @param {ByteBuffer} buffer ByteBuffer to decode from\r\n * @param {boolean=} skipRepeated Whether to skip the repeated check or not. Defaults to false.\r\n * @return {*} Decoded value: array for packed repeated fields, [key, value] for\r\n * map fields, or an individual value otherwise.\r\n * @throws {Error} If the field cannot be decoded\r\n * @expose\r\n */\r\n FieldPrototype.decode = function(wireType, buffer, skipRepeated) {\r\n var value, nBytes;\r\n\r\n // We expect wireType to match the underlying type's wireType unless we see\r\n // a packed repeated field, or unless this is a map field.\r\n var wireTypeOK =\r\n (!this.map && wireType == this.type.wireType) ||\r\n (!skipRepeated && this.repeated && this.options[\"packed\"] &&\r\n wireType == ProtoBuf.WIRE_TYPES.LDELIM) ||\r\n (this.map && wireType == ProtoBuf.WIRE_TYPES.LDELIM);\r\n if (!wireTypeOK)\r\n throw Error(\"Illegal wire type for field \"+this.toString(true)+\": \"+wireType+\" (\"+this.type.wireType+\" expected)\");\r\n\r\n // Handle packed repeated fields.\r\n if (wireType == ProtoBuf.WIRE_TYPES.LDELIM && this.repeated && this.options[\"packed\"] && ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.type.wireType) >= 0) {\r\n if (!skipRepeated) {\r\n nBytes = buffer.readVarint32();\r\n nBytes = buffer.offset + nBytes; // Limit\r\n var values = [];\r\n while (buffer.offset < nBytes)\r\n values.push(this.decode(this.type.wireType, buffer, true));\r\n return values;\r\n }\r\n // Read the next value otherwise...\r\n }\r\n\r\n // Handle maps.\r\n if (this.map) {\r\n // Read one (key, value) submessage, and return [key, value]\r\n var key = Element.defaultFieldValue(this.keyType);\r\n value = Element.defaultFieldValue(this.type);\r\n\r\n // Read the length\r\n nBytes = buffer.readVarint32();\r\n if (buffer.remaining() < nBytes)\r\n throw Error(\"Illegal number of bytes for \"+this.toString(true)+\": \"+nBytes+\" required but got only \"+buffer.remaining());\r\n\r\n // Get a sub-buffer of this key/value submessage\r\n var msgbuf = buffer.clone();\r\n msgbuf.limit = msgbuf.offset + nBytes;\r\n buffer.offset += nBytes;\r\n\r\n while (msgbuf.remaining() > 0) {\r\n var tag = msgbuf.readVarint32();\r\n wireType = tag & 0x07;\r\n var id = tag >>> 3;\r\n if (id === 1) {\r\n key = this.keyElement.decode(msgbuf, wireType, id);\r\n } else if (id === 2) {\r\n value = this.element.decode(msgbuf, wireType, id);\r\n } else {\r\n throw Error(\"Unexpected tag in map field key/value submessage\");\r\n }\r\n }\r\n\r\n return [key, value];\r\n }\r\n\r\n // Handle singular and non-packed repeated field values.\r\n return this.element.decode(buffer, wireType, this.id);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.Field\r\n * @expose\r\n */\r\n Reflect.Message.Field = Field;\r\n\r\n /**\r\n * Constructs a new Message ExtensionField.\r\n * @exports ProtoBuf.Reflect.Message.ExtensionField\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} rule Rule, one of requried, optional, repeated\r\n * @param {string} type Data type, e.g. int32\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @param {!Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Message.Field\r\n */\r\n var ExtensionField = function(builder, message, rule, type, name, id, options) {\r\n Field.call(this, builder, message, rule, /* keytype = */ null, type, name, id, options);\r\n\r\n /**\r\n * Extension reference.\r\n * @type {!ProtoBuf.Reflect.Extension}\r\n * @expose\r\n */\r\n this.extension;\r\n };\r\n\r\n // Extends Field\r\n ExtensionField.prototype = Object.create(Field.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.ExtensionField\r\n * @expose\r\n */\r\n Reflect.Message.ExtensionField = ExtensionField;\r\n\r\n /**\r\n * Constructs a new Message OneOf.\r\n * @exports ProtoBuf.Reflect.Message.OneOf\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Message} message Message reference\r\n * @param {string} name OneOf name\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var OneOf = function(builder, message, name) {\r\n T.call(this, builder, message, name);\r\n\r\n /**\r\n * Enclosed fields.\r\n * @type {!Array.<!ProtoBuf.Reflect.Message.Field>}\r\n * @expose\r\n */\r\n this.fields = [];\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Message.OneOf\r\n * @expose\r\n */\r\n Reflect.Message.OneOf = OneOf;\r\n\r\n /**\r\n * Constructs a new Enum.\r\n * @exports ProtoBuf.Reflect.Enum\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent Reflect object\r\n * @param {string} name Enum name\r\n * @param {Object.<string,*>=} options Enum options\r\n * @param {string?} syntax The syntax level (e.g., proto3)\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Enum = function(builder, parent, name, options, syntax) {\r\n Namespace.call(this, builder, parent, name, options, syntax);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum\";\r\n\r\n /**\r\n * Runtime enum object.\r\n * @type {Object.<string,number>|null}\r\n * @expose\r\n */\r\n this.object = null;\r\n };\r\n\r\n /**\r\n * Gets the string name of an enum value.\r\n * @param {!ProtoBuf.Builder.Enum} enm Runtime enum\r\n * @param {number} value Enum value\r\n * @returns {?string} Name or `null` if not present\r\n * @expose\r\n */\r\n Enum.getName = function(enm, value) {\r\n var keys = Object.keys(enm);\r\n for (var i=0, key; i<keys.length; ++i)\r\n if (enm[key = keys[i]] === value)\r\n return key;\r\n return null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.prototype\r\n * @inner\r\n */\r\n var EnumPrototype = Enum.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds this enum and returns the runtime counterpart.\r\n * @param {boolean} rebuild Whether to rebuild or not, defaults to false\r\n * @returns {!Object.<string,number>}\r\n * @expose\r\n */\r\n EnumPrototype.build = function(rebuild) {\r\n if (this.object && !rebuild)\r\n return this.object;\r\n var enm = new ProtoBuf.Builder.Enum(),\r\n values = this.getChildren(Enum.Value);\r\n for (var i=0, k=values.length; i<k; ++i)\r\n enm[values[i]['name']] = values[i]['id'];\r\n if (Object.defineProperty)\r\n Object.defineProperty(enm, '$options', {\r\n \"value\": this.buildOpt(),\r\n \"enumerable\": false\r\n });\r\n return this.object = enm;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum\r\n * @expose\r\n */\r\n Reflect.Enum = Enum;\r\n\r\n /**\r\n * Constructs a new Enum Value.\r\n * @exports ProtoBuf.Reflect.Enum.Value\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Enum} enm Enum reference\r\n * @param {string} name Field name\r\n * @param {number} id Unique field id\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Value = function(builder, enm, name, id) {\r\n T.call(this, builder, enm, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Enum.Value\";\r\n\r\n /**\r\n * Unique enum value id.\r\n * @type {number}\r\n * @expose\r\n */\r\n this.id = id;\r\n };\r\n\r\n // Extends T\r\n Value.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Enum.Value\r\n * @expose\r\n */\r\n Reflect.Enum.Value = Value;\r\n\r\n /**\r\n * An extension (field).\r\n * @exports ProtoBuf.Reflect.Extension\r\n * @constructor\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.T} parent Parent object\r\n * @param {string} name Object name\r\n * @param {!ProtoBuf.Reflect.Message.Field} field Extension field\r\n */\r\n var Extension = function(builder, parent, name, field) {\r\n T.call(this, builder, parent, name);\r\n\r\n /**\r\n * Extended message field.\r\n * @type {!ProtoBuf.Reflect.Message.Field}\r\n * @expose\r\n */\r\n this.field = field;\r\n };\r\n\r\n // Extends T\r\n Extension.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Extension\r\n * @expose\r\n */\r\n Reflect.Extension = Extension;\r\n\r\n /**\r\n * Constructs a new Service.\r\n * @exports ProtoBuf.Reflect.Service\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Namespace} root Root\r\n * @param {string} name Service name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Namespace\r\n */\r\n var Service = function(builder, root, name, options) {\r\n Namespace.call(this, builder, root, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service\";\r\n\r\n /**\r\n * Built runtime service class.\r\n * @type {?function(new:ProtoBuf.Builder.Service)}\r\n */\r\n this.clazz = null;\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(Namespace.prototype);\r\n\r\n /**\r\n * Builds the service and returns the runtime counterpart, which is a fully functional class.\r\n * @see ProtoBuf.Builder.Service\r\n * @param {boolean=} rebuild Whether to rebuild or not\r\n * @return {Function} Service class\r\n * @throws {Error} If the message cannot be built\r\n * @expose\r\n */\r\n ServicePrototype.build = function(rebuild) {\r\n if (this.clazz && !rebuild)\r\n return this.clazz;\r\n\r\n // Create the runtime Service class in its own scope\r\n return this.clazz = (function(ProtoBuf, T) {\r\n\r\n /**\r\n * Constructs a new runtime Service.\r\n * @name ProtoBuf.Builder.Service\r\n * @param {function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))=} rpcImpl RPC implementation receiving the method name and the message\r\n * @class Barebone of all runtime services.\r\n * @constructor\r\n * @throws {Error} If the service cannot be created\r\n */\r\n var Service = function(rpcImpl) {\r\n ProtoBuf.Builder.Service.call(this);\r\n\r\n /**\r\n * Service implementation.\r\n * @name ProtoBuf.Builder.Service#rpcImpl\r\n * @type {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))}\r\n * @expose\r\n */\r\n this.rpcImpl = rpcImpl || function(name, msg, callback) {\r\n // This is what a user has to implement: A function receiving the method name, the actual message to\r\n // send (type checked) and the callback that's either provided with the error as its first\r\n // argument or null and the actual response message.\r\n setTimeout(callback.bind(this, Error(\"Not implemented, see: https://github.com/dcodeIO/ProtoBuf.js/wiki/Services\")), 0); // Must be async!\r\n };\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Service.prototype\r\n * @inner\r\n */\r\n var ServicePrototype = Service.prototype = Object.create(ProtoBuf.Builder.Service.prototype);\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the given RPC implementation.\r\n * @name ProtoBuf.Builder.Service.[Method]\r\n * @function\r\n * @param {!function(string, ProtoBuf.Builder.Message, function(Error, ProtoBuf.Builder.Message=))} rpcImpl RPC implementation\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n /**\r\n * Asynchronously performs an RPC call using the instance's RPC implementation.\r\n * @name ProtoBuf.Builder.Service#[Method]\r\n * @function\r\n * @param {ProtoBuf.Builder.Message} req Request\r\n * @param {function(Error, (ProtoBuf.Builder.Message|ByteBuffer|Buffer|string)=)} callback Callback receiving\r\n * the error if any and the response either as a pre-parsed message or as its raw bytes\r\n * @abstract\r\n */\r\n\r\n var rpc = T.getChildren(ProtoBuf.Reflect.Service.RPCMethod);\r\n for (var i=0; i<rpc.length; i++) {\r\n (function(method) {\r\n\r\n // service#Method(message, callback)\r\n ServicePrototype[method.name] = function(req, callback) {\r\n try {\r\n try {\r\n // If given as a buffer, decode the request. Will throw a TypeError if not a valid buffer.\r\n req = method.resolvedRequestType.clazz.decode(ByteBuffer.wrap(req));\r\n } catch (err) {\r\n if (!(err instanceof TypeError))\r\n throw err;\r\n }\r\n if (req === null || typeof req !== 'object')\r\n throw Error(\"Illegal arguments\");\r\n if (!(req instanceof method.resolvedRequestType.clazz))\r\n req = new method.resolvedRequestType.clazz(req);\r\n this.rpcImpl(method.fqn(), req, function(err, res) { // Assumes that this is properly async\r\n if (err) {\r\n callback(err);\r\n return;\r\n }\r\n // Coalesce to empty string when service response has empty content\r\n if (res === null)\r\n res = ''\r\n try { res = method.resolvedResponseType.clazz.decode(res); } catch (notABuffer) {}\r\n if (!res || !(res instanceof method.resolvedResponseType.clazz)) {\r\n callback(Error(\"Illegal response type received in service method \"+ T.name+\"#\"+method.name));\r\n return;\r\n }\r\n callback(null, res);\r\n });\r\n } catch (err) {\r\n setTimeout(callback.bind(this, err), 0);\r\n }\r\n };\r\n\r\n // Service.Method(rpcImpl, message, callback)\r\n Service[method.name] = function(rpcImpl, req, callback) {\r\n new Service(rpcImpl)[method.name](req, callback);\r\n };\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service[method.name], \"$options\", { \"value\": method.buildOpt() }),\r\n Object.defineProperty(ServicePrototype[method.name], \"$options\", { \"value\": Service[method.name][\"$options\"] });\r\n })(rpc[i]);\r\n }\r\n\r\n // Properties\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service.$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $optionsS; // cc needs this\r\n\r\n /**\r\n * Service options.\r\n * @name ProtoBuf.Builder.Service#$options\r\n * @type {Object.<string,*>}\r\n * @expose\r\n */\r\n var $options;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service.$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $typeS;\r\n\r\n /**\r\n * Reflection type.\r\n * @name ProtoBuf.Builder.Service#$type\r\n * @type {!ProtoBuf.Reflect.Service}\r\n * @expose\r\n */\r\n var $type;\r\n\r\n if (Object.defineProperty)\r\n Object.defineProperty(Service, \"$options\", { \"value\": T.buildOpt() }),\r\n Object.defineProperty(ServicePrototype, \"$options\", { \"value\": Service[\"$options\"] }),\r\n Object.defineProperty(Service, \"$type\", { \"value\": T }),\r\n Object.defineProperty(ServicePrototype, \"$type\", { \"value\": T });\r\n\r\n return Service;\r\n\r\n })(ProtoBuf, this);\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service\r\n * @expose\r\n */\r\n Reflect.Service = Service;\r\n\r\n /**\r\n * Abstract service method.\r\n * @exports ProtoBuf.Reflect.Service.Method\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.T\r\n */\r\n var Method = function(builder, svc, name, options) {\r\n T.call(this, builder, svc, name);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.Method\";\r\n\r\n /**\r\n * Options.\r\n * @type {Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method.prototype\r\n * @inner\r\n */\r\n var MethodPrototype = Method.prototype = Object.create(T.prototype);\r\n\r\n /**\r\n * Builds the method's '$options' property.\r\n * @name ProtoBuf.Reflect.Service.Method#buildOpt\r\n * @function\r\n * @return {Object.<string,*>}\r\n */\r\n MethodPrototype.buildOpt = NamespacePrototype.buildOpt;\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.Method\r\n * @expose\r\n */\r\n Reflect.Service.Method = Method;\r\n\r\n /**\r\n * RPC service method.\r\n * @exports ProtoBuf.Reflect.Service.RPCMethod\r\n * @param {!ProtoBuf.Builder} builder Builder reference\r\n * @param {!ProtoBuf.Reflect.Service} svc Service\r\n * @param {string} name Method name\r\n * @param {string} request Request message name\r\n * @param {string} response Response message name\r\n * @param {boolean} request_stream Whether requests are streamed\r\n * @param {boolean} response_stream Whether responses are streamed\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n * @extends ProtoBuf.Reflect.Service.Method\r\n */\r\n var RPCMethod = function(builder, svc, name, request, response, request_stream, response_stream, options) {\r\n Method.call(this, builder, svc, name, options);\r\n\r\n /**\r\n * @override\r\n */\r\n this.className = \"Service.RPCMethod\";\r\n\r\n /**\r\n * Request message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.requestName = request;\r\n\r\n /**\r\n * Response message name.\r\n * @type {string}\r\n * @expose\r\n */\r\n this.responseName = response;\r\n\r\n /**\r\n * Whether requests are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.requestStream = request_stream;\r\n\r\n /**\r\n * Whether responses are streamed\r\n * @type {bool}\r\n * @expose\r\n */\r\n this.responseStream = response_stream;\r\n\r\n /**\r\n * Resolved request message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedRequestType = null;\r\n\r\n /**\r\n * Resolved response message type.\r\n * @type {ProtoBuf.Reflect.Message}\r\n * @expose\r\n */\r\n this.resolvedResponseType = null;\r\n };\r\n\r\n // Extends Method\r\n RPCMethod.prototype = Object.create(Method.prototype);\r\n\r\n /**\r\n * @alias ProtoBuf.Reflect.Service.RPCMethod\r\n * @expose\r\n */\r\n Reflect.Service.RPCMethod = RPCMethod;\r\n\r\n return Reflect;\r\n\r\n })(ProtoBuf);\r\n\r\n /**\r\n * @alias ProtoBuf.Builder\r\n * @expose\r\n */\r\n ProtoBuf.Builder = (function(ProtoBuf, Lang, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Builder.\r\n * @exports ProtoBuf.Builder\r\n * @class Provides the functionality to build protocol messages.\r\n * @param {Object.<string,*>=} options Options\r\n * @constructor\r\n */\r\n var Builder = function(options) {\r\n\r\n /**\r\n * Namespace.\r\n * @type {ProtoBuf.Reflect.Namespace}\r\n * @expose\r\n */\r\n this.ns = new Reflect.Namespace(this, null, \"\"); // Global namespace\r\n\r\n /**\r\n * Namespace pointer.\r\n * @type {ProtoBuf.Reflect.T}\r\n * @expose\r\n */\r\n this.ptr = this.ns;\r\n\r\n /**\r\n * Resolved flag.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.resolved = false;\r\n\r\n /**\r\n * The current building result.\r\n * @type {Object.<string,ProtoBuf.Builder.Message|Object>|null}\r\n * @expose\r\n */\r\n this.result = null;\r\n\r\n /**\r\n * Imported files.\r\n * @type {Array.<string>}\r\n * @expose\r\n */\r\n this.files = {};\r\n\r\n /**\r\n * Import root override.\r\n * @type {?string}\r\n * @expose\r\n */\r\n this.importRoot = null;\r\n\r\n /**\r\n * Options.\r\n * @type {!Object.<string, *>}\r\n * @expose\r\n */\r\n this.options = options || {};\r\n };\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.prototype\r\n * @inner\r\n */\r\n var BuilderPrototype = Builder.prototype;\r\n\r\n // ----- Definition tests -----\r\n\r\n /**\r\n * Tests if a definition most likely describes a message.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessage = function(def) {\r\n // Messages require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Messages do not contain values (enum) or rpc methods (service)\r\n if (typeof def[\"values\"] !== 'undefined' || typeof def[\"rpc\"] !== 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a message field.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isMessageField = function(def) {\r\n // Message fields require a string rule, name and type and an id\r\n if (typeof def[\"rule\"] !== 'string' || typeof def[\"name\"] !== 'string' || typeof def[\"type\"] !== 'string' || typeof def[\"id\"] === 'undefined')\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an enum.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isEnum = function(def) {\r\n // Enums require a string name\r\n if (typeof def[\"name\"] !== 'string')\r\n return false;\r\n // Enums require at least one value\r\n if (typeof def[\"values\"] === 'undefined' || !Array.isArray(def[\"values\"]) || def[\"values\"].length === 0)\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes a service.\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isService = function(def) {\r\n // Services require a string name and an rpc object\r\n if (typeof def[\"name\"] !== 'string' || typeof def[\"rpc\"] !== 'object' || !def[\"rpc\"])\r\n return false;\r\n return true;\r\n };\r\n\r\n /**\r\n * Tests if a definition most likely describes an extended message\r\n * @param {!Object} def\r\n * @returns {boolean}\r\n * @expose\r\n */\r\n Builder.isExtend = function(def) {\r\n // Extends rquire a string ref\r\n if (typeof def[\"ref\"] !== 'string')\r\n return false;\r\n return true;\r\n };\r\n\r\n // ----- Building -----\r\n\r\n /**\r\n * Resets the pointer to the root namespace.\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.reset = function() {\r\n this.ptr = this.ns;\r\n return this;\r\n };\r\n\r\n /**\r\n * Defines a namespace on top of the current pointer position and places the pointer on it.\r\n * @param {string} namespace\r\n * @return {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.define = function(namespace) {\r\n if (typeof namespace !== 'string' || !Lang.TYPEREF.test(namespace))\r\n throw Error(\"illegal namespace: \"+namespace);\r\n namespace.split(\".\").forEach(function(part) {\r\n var ns = this.ptr.getChild(part);\r\n if (ns === null) // Keep existing\r\n this.ptr.addChild(ns = new Reflect.Namespace(this, this.ptr, part));\r\n this.ptr = ns;\r\n }, this);\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates the specified definitions at the current pointer position.\r\n * @param {!Array.<!Object>} defs Messages, enums or services to create\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If a message definition is invalid\r\n * @expose\r\n */\r\n BuilderPrototype.create = function(defs) {\r\n if (!defs)\r\n return this; // Nothing to create\r\n if (!Array.isArray(defs))\r\n defs = [defs];\r\n else {\r\n if (defs.length === 0)\r\n return this;\r\n defs = defs.slice();\r\n }\r\n\r\n // It's quite hard to keep track of scopes and memory here, so let's do this iteratively.\r\n var stack = [defs];\r\n while (stack.length > 0) {\r\n defs = stack.pop();\r\n\r\n if (!Array.isArray(defs)) // Stack always contains entire namespaces\r\n throw Error(\"not a valid namespace: \"+JSON.stringify(defs));\r\n\r\n while (defs.length > 0) {\r\n var def = defs.shift(); // Namespaces always contain an array of messages, enums and services\r\n\r\n if (Builder.isMessage(def)) {\r\n var obj = new Reflect.Message(this, this.ptr, def[\"name\"], def[\"options\"], def[\"isGroup\"], def[\"syntax\"]);\r\n\r\n // Create OneOfs\r\n var oneofs = {};\r\n if (def[\"oneofs\"])\r\n Object.keys(def[\"oneofs\"]).forEach(function(name) {\r\n obj.addChild(oneofs[name] = new Reflect.Message.OneOf(this, obj, name));\r\n }, this);\r\n\r\n // Create fields\r\n if (def[\"fields\"])\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld[\"id\"]|0) !== null)\r\n throw Error(\"duplicate or invalid field id in \"+obj.name+\": \"+fld['id']);\r\n if (fld[\"options\"] && typeof fld[\"options\"] !== 'object')\r\n throw Error(\"illegal field options in \"+obj.name+\"#\"+fld[\"name\"]);\r\n var oneof = null;\r\n if (typeof fld[\"oneof\"] === 'string' && !(oneof = oneofs[fld[\"oneof\"]]))\r\n throw Error(\"illegal oneof in \"+obj.name+\"#\"+fld[\"name\"]+\": \"+fld[\"oneof\"]);\r\n fld = new Reflect.Message.Field(this, obj, fld[\"rule\"], fld[\"keytype\"], fld[\"type\"], fld[\"name\"], fld[\"id\"], fld[\"options\"], oneof, def[\"syntax\"]);\r\n if (oneof)\r\n oneof.fields.push(fld);\r\n obj.addChild(fld);\r\n }, this);\r\n\r\n // Push children to stack\r\n var subObj = [];\r\n if (def[\"enums\"])\r\n def[\"enums\"].forEach(function(enm) {\r\n subObj.push(enm);\r\n });\r\n if (def[\"messages\"])\r\n def[\"messages\"].forEach(function(msg) {\r\n subObj.push(msg);\r\n });\r\n if (def[\"services\"])\r\n def[\"services\"].forEach(function(svc) {\r\n subObj.push(svc);\r\n });\r\n\r\n // Set extension ranges\r\n if (def[\"extensions\"]) {\r\n if (typeof def[\"extensions\"][0] === 'number') // pre 5.0.1\r\n obj.extensions = [ def[\"extensions\"] ];\r\n else\r\n obj.extensions = def[\"extensions\"];\r\n }\r\n\r\n // Create on top of current namespace\r\n this.ptr.addChild(obj);\r\n if (subObj.length > 0) {\r\n stack.push(defs); // Push the current level back\r\n defs = subObj; // Continue processing sub level\r\n subObj = null;\r\n this.ptr = obj; // And move the pointer to this namespace\r\n obj = null;\r\n continue;\r\n }\r\n subObj = null;\r\n\r\n } else if (Builder.isEnum(def)) {\r\n\r\n obj = new Reflect.Enum(this, this.ptr, def[\"name\"], def[\"options\"], def[\"syntax\"]);\r\n def[\"values\"].forEach(function(val) {\r\n obj.addChild(new Reflect.Enum.Value(this, obj, val[\"name\"], val[\"id\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isService(def)) {\r\n\r\n obj = new Reflect.Service(this, this.ptr, def[\"name\"], def[\"options\"]);\r\n Object.keys(def[\"rpc\"]).forEach(function(name) {\r\n var mtd = def[\"rpc\"][name];\r\n obj.addChild(new Reflect.Service.RPCMethod(this, obj, name, mtd[\"request\"], mtd[\"response\"], !!mtd[\"request_stream\"], !!mtd[\"response_stream\"], mtd[\"options\"]));\r\n }, this);\r\n this.ptr.addChild(obj);\r\n\r\n } else if (Builder.isExtend(def)) {\r\n\r\n obj = this.ptr.resolve(def[\"ref\"], true);\r\n if (obj) {\r\n def[\"fields\"].forEach(function(fld) {\r\n if (obj.getChild(fld['id']|0) !== null)\r\n throw Error(\"duplicate extended field id in \"+obj.name+\": \"+fld['id']);\r\n // Check if field id is allowed to be extended\r\n if (obj.extensions) {\r\n var valid = false;\r\n obj.extensions.forEach(function(range) {\r\n if (fld[\"id\"] >= range[0] && fld[\"id\"] <= range[1])\r\n valid = true;\r\n });\r\n if (!valid)\r\n throw Error(\"illegal extended field id in \"+obj.name+\": \"+fld['id']+\" (not within valid ranges)\");\r\n }\r\n // Convert extension field names to camel case notation if the override is set\r\n var name = fld[\"name\"];\r\n if (this.options['convertFieldsToCamelCase'])\r\n name = ProtoBuf.Util.toCamelCase(name);\r\n // see #161: Extensions use their fully qualified name as their runtime key and...\r\n var field = new Reflect.Message.ExtensionField(this, obj, fld[\"rule\"], fld[\"type\"], this.ptr.fqn()+'.'+name, fld[\"id\"], fld[\"options\"]);\r\n // ...are added on top of the current namespace as an extension which is used for\r\n // resolving their type later on (the extension always keeps the original name to\r\n // prevent naming collisions)\r\n var ext = new Reflect.Extension(this, this.ptr, fld[\"name\"], field);\r\n field.extension = ext;\r\n this.ptr.addChild(ext);\r\n obj.addChild(field);\r\n }, this);\r\n\r\n } else if (!/\\.?google\\.protobuf\\./.test(def[\"ref\"])) // Silently skip internal extensions\r\n throw Error(\"extended message \"+def[\"ref\"]+\" is not defined\");\r\n\r\n } else\r\n throw Error(\"not a valid definition: \"+JSON.stringify(def));\r\n\r\n def = null;\r\n obj = null;\r\n }\r\n // Break goes here\r\n defs = null;\r\n this.ptr = this.ptr.parent; // Namespace done, continue at parent\r\n }\r\n this.resolved = false; // Require re-resolve\r\n this.result = null; // Require re-build\r\n return this;\r\n };\r\n\r\n /**\r\n * Propagates syntax to all children.\r\n * @param {!Object} parent\r\n * @inner\r\n */\r\n function propagateSyntax(parent) {\r\n if (parent['messages']) {\r\n parent['messages'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n propagateSyntax(child);\r\n });\r\n }\r\n if (parent['enums']) {\r\n parent['enums'].forEach(function(child) {\r\n child[\"syntax\"] = parent[\"syntax\"];\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Imports another definition into this builder.\r\n * @param {Object.<string,*>} json Parsed import\r\n * @param {(string|{root: string, file: string})=} filename Imported file name\r\n * @returns {!ProtoBuf.Builder} this\r\n * @throws {Error} If the definition or file cannot be imported\r\n * @expose\r\n */\r\n BuilderPrototype[\"import\"] = function(json, filename) {\r\n var delim = '/';\r\n\r\n // Make sure to skip duplicate imports\r\n\r\n if (typeof filename === 'string') {\r\n\r\n if (ProtoBuf.Util.IS_NODE)\r\n filename = require(\"path\")['resolve'](filename);\r\n if (this.files[filename] === true)\r\n return this.reset();\r\n this.files[filename] = true;\r\n\r\n } else if (typeof filename === 'object') { // Object with root, file.\r\n\r\n var root = filename.root;\r\n if (ProtoBuf.Util.IS_NODE)\r\n root = require(\"path\")['resolve'](root);\r\n if (root.indexOf(\"\\\\\") >= 0 || filename.file.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n var fname;\r\n if (ProtoBuf.Util.IS_NODE)\r\n fname = require(\"path\")['join'](root, filename.file);\r\n else\r\n fname = root + delim + filename.file;\r\n if (this.files[fname] === true)\r\n return this.reset();\r\n this.files[fname] = true;\r\n }\r\n\r\n // Import imports\r\n\r\n if (json['imports'] && json['imports'].length > 0) {\r\n var importRoot,\r\n resetRoot = false;\r\n\r\n if (typeof filename === 'object') { // If an import root is specified, override\r\n\r\n this.importRoot = filename[\"root\"]; resetRoot = true; // ... and reset afterwards\r\n importRoot = this.importRoot;\r\n filename = filename[\"file\"];\r\n if (importRoot.indexOf(\"\\\\\") >= 0 || filename.indexOf(\"\\\\\") >= 0)\r\n delim = '\\\\';\r\n\r\n } else if (typeof filename === 'string') {\r\n\r\n if (this.importRoot) // If import root is overridden, use it\r\n importRoot = this.importRoot;\r\n else { // Otherwise compute from filename\r\n if (filename.indexOf(\"/\") >= 0) { // Unix\r\n importRoot = filename.replace(/\\/[^\\/]*$/, \"\");\r\n if (/* /file.proto */ importRoot === \"\")\r\n importRoot = \"/\";\r\n } else if (filename.indexOf(\"\\\\\") >= 0) { // Windows\r\n importRoot = filename.replace(/\\\\[^\\\\]*$/, \"\");\r\n delim = '\\\\';\r\n } else\r\n importRoot = \".\";\r\n }\r\n\r\n } else\r\n importRoot = null;\r\n\r\n for (var i=0; i<json['imports'].length; i++) {\r\n if (typeof json['imports'][i] === 'string') { // Import file\r\n if (!importRoot)\r\n throw Error(\"cannot determine import root\");\r\n var importFilename = json['imports'][i];\r\n if (importFilename === \"google/protobuf/descriptor.proto\")\r\n continue; // Not needed and therefore not used\r\n if (ProtoBuf.Util.IS_NODE)\r\n importFilename = require(\"path\")['join'](importRoot, importFilename);\r\n else\r\n importFilename = importRoot + delim + importFilename;\r\n if (this.files[importFilename] === true)\r\n continue; // Already imported\r\n if (/\\.proto$/i.test(importFilename) && !ProtoBuf.DotProto) // If this is a light build\r\n importFilename = importFilename.replace(/\\.proto$/, \".json\"); // always load the JSON file\r\n var contents = ProtoBuf.Util.fetch(importFilename);\r\n if (contents === null)\r\n throw Error(\"failed to import '\"+importFilename+\"' in '\"+filename+\"': file not found\");\r\n if (/\\.json$/i.test(importFilename)) // Always possible\r\n this[\"import\"](JSON.parse(contents+\"\"), importFilename); // May throw\r\n else\r\n this[\"import\"](ProtoBuf.DotProto.Parser.parse(contents), importFilename); // May throw\r\n } else // Import structure\r\n if (!filename)\r\n this[\"import\"](json['imports'][i]);\r\n else if (/\\.(\\w+)$/.test(filename)) // With extension: Append _importN to the name portion to make it unique\r\n this[\"import\"](json['imports'][i], filename.replace(/^(.+)\\.(\\w+)$/, function($0, $1, $2) { return $1+\"_import\"+i+\".\"+$2; }));\r\n else // Without extension: Append _importN to make it unique\r\n this[\"import\"](json['imports'][i], filename+\"_import\"+i);\r\n }\r\n if (resetRoot) // Reset import root override when all imports are done\r\n this.importRoot = null;\r\n }\r\n\r\n // Import structures\r\n\r\n if (json['package'])\r\n this.define(json['package']);\r\n if (json['syntax'])\r\n propagateSyntax(json);\r\n var base = this.ptr;\r\n if (json['options'])\r\n Object.keys(json['options']).forEach(function(key) {\r\n base.options[key] = json['options'][key];\r\n });\r\n if (json['messages'])\r\n this.create(json['messages']),\r\n this.ptr = base;\r\n if (json['enums'])\r\n this.create(json['enums']),\r\n this.ptr = base;\r\n if (json['services'])\r\n this.create(json['services']),\r\n this.ptr = base;\r\n if (json['extends'])\r\n this.create(json['extends']);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Resolves all namespace objects.\r\n * @throws {Error} If a type cannot be resolved\r\n * @returns {!ProtoBuf.Builder} this\r\n * @expose\r\n */\r\n BuilderPrototype.resolveAll = function() {\r\n // Resolve all reflected objects\r\n var res;\r\n if (this.ptr == null || typeof this.ptr.type === 'object')\r\n return this; // Done (already resolved)\r\n\r\n if (this.ptr instanceof Reflect.Namespace) { // Resolve children\r\n\r\n this.ptr.children.forEach(function(child) {\r\n this.ptr = child;\r\n this.resolveAll();\r\n }, this);\r\n\r\n } else if (this.ptr instanceof Reflect.Message.Field) { // Resolve type\r\n\r\n if (!Lang.TYPE.test(this.ptr.type)) {\r\n if (!Lang.TYPEREF.test(this.ptr.type))\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n res = (this.ptr instanceof Reflect.Message.ExtensionField ? this.ptr.extension.parent : this.ptr.parent).resolve(this.ptr.type, true);\r\n if (!res)\r\n throw Error(\"unresolvable type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n this.ptr.resolvedType = res;\r\n if (res instanceof Reflect.Enum) {\r\n this.ptr.type = ProtoBuf.TYPES[\"enum\"];\r\n if (this.ptr.syntax === 'proto3' && res.syntax !== 'proto3')\r\n throw Error(\"proto3 message cannot reference proto2 enum\");\r\n }\r\n else if (res instanceof Reflect.Message)\r\n this.ptr.type = res.isGroup ? ProtoBuf.TYPES[\"group\"] : ProtoBuf.TYPES[\"message\"];\r\n else\r\n throw Error(\"illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.type);\r\n } else\r\n this.ptr.type = ProtoBuf.TYPES[this.ptr.type];\r\n\r\n // If it's a map field, also resolve the key type. The key type can be only a numeric, string, or bool type\r\n // (i.e., no enums or messages), so we don't need to resolve against the current namespace.\r\n if (this.ptr.map) {\r\n if (!Lang.TYPE.test(this.ptr.keyType))\r\n throw Error(\"illegal key type for map field in \"+this.ptr.toString(true)+\": \"+this.ptr.keyType);\r\n this.ptr.keyType = ProtoBuf.TYPES[this.ptr.keyType];\r\n }\r\n\r\n // If it's a repeated and packable field then proto3 mandates it should be packed by\r\n // default\r\n if (\r\n this.ptr.syntax === 'proto3' &&\r\n this.ptr.repeated && this.ptr.options.packed === undefined &&\r\n ProtoBuf.PACKABLE_WIRE_TYPES.indexOf(this.ptr.type.wireType) !== -1\r\n ) {\r\n this.ptr.options.packed = true;\r\n }\r\n\r\n } else if (this.ptr instanceof ProtoBuf.Reflect.Service.Method) {\r\n\r\n if (this.ptr instanceof ProtoBuf.Reflect.Service.RPCMethod) {\r\n res = this.ptr.parent.resolve(this.ptr.requestName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.requestName);\r\n this.ptr.resolvedRequestType = res;\r\n res = this.ptr.parent.resolve(this.ptr.responseName, true);\r\n if (!res || !(res instanceof ProtoBuf.Reflect.Message))\r\n throw Error(\"Illegal type reference in \"+this.ptr.toString(true)+\": \"+this.ptr.responseName);\r\n this.ptr.resolvedResponseType = res;\r\n } else // Should not happen as nothing else is implemented\r\n throw Error(\"illegal service type in \"+this.ptr.toString(true));\r\n\r\n } else if (\r\n !(this.ptr instanceof ProtoBuf.Reflect.Message.OneOf) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Extension) && // Not built\r\n !(this.ptr instanceof ProtoBuf.Reflect.Enum.Value) // Built in enum\r\n )\r\n throw Error(\"illegal object in namespace: \"+typeof(this.ptr)+\": \"+this.ptr);\r\n\r\n return this.reset();\r\n };\r\n\r\n /**\r\n * Builds the protocol. This will first try to resolve all definitions and, if this has been successful,\r\n * return the built package.\r\n * @param {(string|Array.<string>)=} path Specifies what to return. If omitted, the entire namespace will be returned.\r\n * @returns {!ProtoBuf.Builder.Message|!Object.<string,*>}\r\n * @throws {Error} If a type could not be resolved\r\n * @expose\r\n */\r\n BuilderPrototype.build = function(path) {\r\n this.reset();\r\n if (!this.resolved)\r\n this.resolveAll(),\r\n this.resolved = true,\r\n this.result = null; // Require re-build\r\n if (this.result === null) // (Re-)Build\r\n this.result = this.ns.build();\r\n if (!path)\r\n return this.result;\r\n var part = typeof path === 'string' ? path.split(\".\") : path,\r\n ptr = this.result; // Build namespace pointer (no hasChild etc.)\r\n for (var i=0; i<part.length; i++)\r\n if (ptr[part[i]])\r\n ptr = ptr[part[i]];\r\n else {\r\n ptr = null;\r\n break;\r\n }\r\n return ptr;\r\n };\r\n\r\n /**\r\n * Similar to {@link ProtoBuf.Builder#build}, but looks up the internal reflection descriptor.\r\n * @param {string=} path Specifies what to return. If omitted, the entire namespace wiil be returned.\r\n * @param {boolean=} excludeNonNamespace Excludes non-namespace types like fields, defaults to `false`\r\n * @returns {?ProtoBuf.Reflect.T} Reflection descriptor or `null` if not found\r\n */\r\n BuilderPrototype.lookup = function(path, excludeNonNamespace) {\r\n return path ? this.ns.resolve(path, excludeNonNamespace) : this.ns;\r\n };\r\n\r\n /**\r\n * Returns a string representation of this object.\r\n * @return {string} String representation as of \"Builder\"\r\n * @expose\r\n */\r\n BuilderPrototype.toString = function() {\r\n return \"Builder\";\r\n };\r\n\r\n // ----- Base classes -----\r\n // Exist for the sole purpose of being able to \"... instanceof ProtoBuf.Builder.Message\" etc.\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Message = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Enum\r\n */\r\n Builder.Enum = function() {};\r\n\r\n /**\r\n * @alias ProtoBuf.Builder.Message\r\n */\r\n Builder.Service = function() {};\r\n\r\n return Builder;\r\n\r\n })(ProtoBuf, ProtoBuf.Lang, ProtoBuf.Reflect);\r\n\r\n /**\r\n * @alias ProtoBuf.Map\r\n * @expose\r\n */\r\n ProtoBuf.Map = (function(ProtoBuf, Reflect) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new Map. A Map is a container that is used to implement map\r\n * fields on message objects. It closely follows the ES6 Map API; however,\r\n * it is distinct because we do not want to depend on external polyfills or\r\n * on ES6 itself.\r\n *\r\n * @exports ProtoBuf.Map\r\n * @param {!ProtoBuf.Reflect.Field} field Map field\r\n * @param {Object.<string,*>=} contents Initial contents\r\n * @constructor\r\n */\r\n var Map = function(field, contents) {\r\n if (!field.map)\r\n throw Error(\"field is not a map\");\r\n\r\n /**\r\n * The field corresponding to this map.\r\n * @type {!ProtoBuf.Reflect.Field}\r\n */\r\n this.field = field;\r\n\r\n /**\r\n * Element instance corresponding to key type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.keyElem = new Reflect.Element(field.keyType, null, true, field.syntax);\r\n\r\n /**\r\n * Element instance corresponding to value type.\r\n * @type {!ProtoBuf.Reflect.Element}\r\n */\r\n this.valueElem = new Reflect.Element(field.type, field.resolvedType, false, field.syntax);\r\n\r\n /**\r\n * Internal map: stores mapping of (string form of key) -> (key, value)\r\n * pair.\r\n *\r\n * We provide map semantics for arbitrary key types, but we build on top\r\n * of an Object, which has only string keys. In order to avoid the need\r\n * to convert a string key back to its native type in many situations,\r\n * we store the native key value alongside the value. Thus, we only need\r\n * a one-way mapping from a key type to its string form that guarantees\r\n * uniqueness and equality (i.e., str(K1) === str(K2) if and only if K1\r\n * === K2).\r\n *\r\n * @type {!Object<string, {key: *, value: *}>}\r\n */\r\n this.map = {};\r\n\r\n /**\r\n * Returns the number of elements in the map.\r\n */\r\n Object.defineProperty(this, \"size\", {\r\n get: function() { return Object.keys(this.map).length; }\r\n });\r\n\r\n // Fill initial contents from a raw object.\r\n if (contents) {\r\n var keys = Object.keys(contents);\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = this.keyElem.valueFromString(keys[i]);\r\n var val = this.valueElem.verifyValue(contents[keys[i]]);\r\n this.map[this.keyElem.valueToString(key)] =\r\n { key: key, value: val };\r\n }\r\n }\r\n };\r\n\r\n var MapPrototype = Map.prototype;\r\n\r\n /**\r\n * Helper: return an iterator over an array.\r\n * @param {!Array<*>} arr the array\r\n * @returns {!Object} an iterator\r\n * @inner\r\n */\r\n function arrayIterator(arr) {\r\n var idx = 0;\r\n return {\r\n next: function() {\r\n if (idx < arr.length)\r\n return { done: false, value: arr[idx++] };\r\n return { done: true };\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clears the map.\r\n */\r\n MapPrototype.clear = function() {\r\n this.map = {};\r\n };\r\n\r\n /**\r\n * Deletes a particular key from the map.\r\n * @returns {boolean} Whether any entry with this key was deleted.\r\n */\r\n MapPrototype[\"delete\"] = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n var hadKey = keyValue in this.map;\r\n delete this.map[keyValue];\r\n return hadKey;\r\n };\r\n\r\n /**\r\n * Returns an iterator over [key, value] pairs in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.entries = function() {\r\n var entries = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n entries.push([(entry=this.map[strKeys[i]]).key, entry.value]);\r\n return arrayIterator(entries);\r\n };\r\n\r\n /**\r\n * Returns an iterator over keys in the map.\r\n * @returns {Object} The iterator\r\n */\r\n MapPrototype.keys = function() {\r\n var keys = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n keys.push(this.map[strKeys[i]].key);\r\n return arrayIterator(keys);\r\n };\r\n\r\n /**\r\n * Returns an iterator over values in the map.\r\n * @returns {!Object} The iterator\r\n */\r\n MapPrototype.values = function() {\r\n var values = [];\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0; i < strKeys.length; i++)\r\n values.push(this.map[strKeys[i]].value);\r\n return arrayIterator(values);\r\n };\r\n\r\n /**\r\n * Iterates over entries in the map, calling a function on each.\r\n * @param {function(this:*, *, *, *)} cb The callback to invoke with value, key, and map arguments.\r\n * @param {Object=} thisArg The `this` value for the callback\r\n */\r\n MapPrototype.forEach = function(cb, thisArg) {\r\n var strKeys = Object.keys(this.map);\r\n for (var i = 0, entry; i < strKeys.length; i++)\r\n cb.call(thisArg, (entry=this.map[strKeys[i]]).value, entry.key, this);\r\n };\r\n\r\n /**\r\n * Sets a key in the map to the given value.\r\n * @param {*} key The key\r\n * @param {*} value The value\r\n * @returns {!ProtoBuf.Map} The map instance\r\n */\r\n MapPrototype.set = function(key, value) {\r\n var keyValue = this.keyElem.verifyValue(key);\r\n var valValue = this.valueElem.verifyValue(value);\r\n this.map[this.keyElem.valueToString(keyValue)] =\r\n { key: keyValue, value: valValue };\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the value corresponding to a key in the map.\r\n * @param {*} key The key\r\n * @returns {*|undefined} The value, or `undefined` if key not present\r\n */\r\n MapPrototype.get = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n if (!(keyValue in this.map))\r\n return undefined;\r\n return this.map[keyValue].value;\r\n };\r\n\r\n /**\r\n * Determines whether the given key is present in the map.\r\n * @param {*} key The key\r\n * @returns {boolean} `true` if the key is present\r\n */\r\n MapPrototype.has = function(key) {\r\n var keyValue = this.keyElem.valueToString(this.keyElem.verifyValue(key));\r\n return (keyValue in this.map);\r\n };\r\n\r\n return Map;\r\n })(ProtoBuf, ProtoBuf.Reflect);\r\n\r\n\r\n /**\r\n * Constructs a new empty Builder.\r\n * @param {Object.<string,*>=} options Builder options, defaults to global options set on ProtoBuf\r\n * @return {!ProtoBuf.Builder} Builder\r\n * @expose\r\n */\r\n ProtoBuf.newBuilder = function(options) {\r\n options = options || {};\r\n if (typeof options['convertFieldsToCamelCase'] === 'undefined')\r\n options['convertFieldsToCamelCase'] = ProtoBuf.convertFieldsToCamelCase;\r\n if (typeof options['populateAccessors'] === 'undefined')\r\n options['populateAccessors'] = ProtoBuf.populateAccessors;\r\n return new ProtoBuf.Builder(options);\r\n };\r\n\r\n /**\r\n * Loads a .json definition and returns the Builder.\r\n * @param {!*|string} json JSON definition\r\n * @param {(ProtoBuf.Builder|string|{root: string, file: string})=} builder Builder to append to. Will create a new one if omitted.\r\n * @param {(string|{root: string, file: string})=} filename The corresponding file name if known. Must be specified for imports.\r\n * @return {ProtoBuf.Builder} Builder to create new messages\r\n * @throws {Error} If the definition cannot be parsed or built\r\n * @expose\r\n */\r\n ProtoBuf.loadJson = function(json, builder, filename) {\r\n if (typeof builder === 'string' || (builder && typeof builder[\"file\"] === 'string' && typeof builder[\"root\"] === 'string'))\r\n filename = builder,\r\n builder = null;\r\n if (!builder || typeof builder !== 'object')\r\n builder = ProtoBuf.newBuilder();\r\n if (typeof json === 'string')\r\n json = JSON.parse(json);\r\n builder[\"import\"](json, filename);\r\n builder.resolveAll();\r\n return builder;\r\n };\r\n\r\n /**\r\n * Loads a .json file and returns the Builder.\r\n * @param {string|!{root: string, file: string}} filename Path to json file or an object specifying 'file' with\r\n * an overridden 'root' path for all imported files.\r\n * @param {function(?Error, !ProtoBuf.Builder=)=} callback Callback that will receive `null` as the first and\r\n * the Builder as its second argument on success, otherwise the error as its first argument. If omitted, the\r\n * file will be read synchronously and this function will return the Builder.\r\n * @param {ProtoBuf.Builder=} builder Builder to append to. Will create a new one if omitted.\r\n * @return {?ProtoBuf.Builder|undefined} The Builder if synchronous (no callback specified, will be NULL if the\r\n * request has failed), else undefined\r\n * @expose\r\n */\r\n ProtoBuf.loadJsonFile = function(filename, callback, builder) {\r\n if (callback && typeof callback === 'object')\r\n builder = callback,\r\n callback = null;\r\n else if (!callback || typeof callback !== 'function')\r\n callback = null;\r\n if (callback)\r\n return ProtoBuf.Util.fetch(typeof filename === 'string' ? filename : filename[\"root\"]+\"/\"+filename[\"file\"], function(contents) {\r\n if (contents === null) {\r\n callback(Error(\"Failed to fetch file\"));\r\n return;\r\n }\r\n try {\r\n callback(null, ProtoBuf.loadJson(JSON.parse(contents), builder, filename));\r\n } catch (e) {\r\n callback(e);\r\n }\r\n });\r\n var contents = ProtoBuf.Util.fetch(typeof filename === 'object' ? filename[\"root\"]+\"/\"+filename[\"file\"] : filename);\r\n return contents === null ? null : ProtoBuf.loadJson(JSON.parse(contents), builder, filename);\r\n };\r\n\r\n return ProtoBuf;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/protobufjs/dist/protobuf-light.js\n// module id = 612\n// module chunks = 0 1","/*\r\n Copyright 2013-2014 Daniel Wirtz <dcode@dcode.io>\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license bytebuffer.js (c) 2015 Daniel Wirtz <dcode@dcode.io>\r\n * Backing buffer: ArrayBuffer, Accessor: Uint8Array\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/bytebuffer.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([\"long\"], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module['exports'] = (function() {\r\n var Long; try { Long = require(\"long\"); } catch (e) {}\r\n return factory(Long);\r\n })();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"ByteBuffer\"] = factory(global[\"dcodeIO\"][\"Long\"]);\r\n\r\n})(this, function(Long) {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a new ByteBuffer.\r\n * @class The swiss army knife for binary data in JavaScript.\r\n * @exports ByteBuffer\r\n * @constructor\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @expose\r\n */\r\n var ByteBuffer = function(capacity, littleEndian, noAssert) {\r\n if (typeof capacity === 'undefined')\r\n capacity = ByteBuffer.DEFAULT_CAPACITY;\r\n if (typeof littleEndian === 'undefined')\r\n littleEndian = ByteBuffer.DEFAULT_ENDIAN;\r\n if (typeof noAssert === 'undefined')\r\n noAssert = ByteBuffer.DEFAULT_NOASSERT;\r\n if (!noAssert) {\r\n capacity = capacity | 0;\r\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity\");\r\n littleEndian = !!littleEndian;\r\n noAssert = !!noAssert;\r\n }\r\n\r\n /**\r\n * Backing ArrayBuffer.\r\n * @type {!ArrayBuffer}\r\n * @expose\r\n */\r\n this.buffer = capacity === 0 ? EMPTY_BUFFER : new ArrayBuffer(capacity);\r\n\r\n /**\r\n * Uint8Array utilized to manipulate the backing buffer. Becomes `null` if the backing buffer has a capacity of `0`.\r\n * @type {?Uint8Array}\r\n * @expose\r\n */\r\n this.view = capacity === 0 ? null : new Uint8Array(this.buffer);\r\n\r\n /**\r\n * Absolute read/write offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.offset = 0;\r\n\r\n /**\r\n * Marked offset.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#mark\r\n * @see ByteBuffer#reset\r\n */\r\n this.markedOffset = -1;\r\n\r\n /**\r\n * Absolute limit of the contained data. Set to the backing buffer's capacity upon allocation.\r\n * @type {number}\r\n * @expose\r\n * @see ByteBuffer#flip\r\n * @see ByteBuffer#clear\r\n */\r\n this.limit = capacity;\r\n\r\n /**\r\n * Whether to use little endian byte order, defaults to `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.littleEndian = littleEndian;\r\n\r\n /**\r\n * Whether to skip assertions of offsets and values, defaults to `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n this.noAssert = noAssert;\r\n };\r\n\r\n /**\r\n * ByteBuffer version.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.VERSION = \"5.0.1\";\r\n\r\n /**\r\n * Little endian constant that can be used instead of its boolean value. Evaluates to `true`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.LITTLE_ENDIAN = true;\r\n\r\n /**\r\n * Big endian constant that can be used instead of its boolean value. Evaluates to `false`.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.BIG_ENDIAN = false;\r\n\r\n /**\r\n * Default initial capacity of `16`.\r\n * @type {number}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_CAPACITY = 16;\r\n\r\n /**\r\n * Default endianess of `false` for big endian.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_ENDIAN = ByteBuffer.BIG_ENDIAN;\r\n\r\n /**\r\n * Default no assertions flag of `false`.\r\n * @type {boolean}\r\n * @expose\r\n */\r\n ByteBuffer.DEFAULT_NOASSERT = false;\r\n\r\n /**\r\n * A `Long` class for representing a 64-bit two's-complement integer value. May be `null` if Long.js has not been loaded\r\n * and int64 support is not available.\r\n * @type {?Long}\r\n * @const\r\n * @see https://github.com/dcodeIO/long.js\r\n * @expose\r\n */\r\n ByteBuffer.Long = Long || null;\r\n\r\n /**\r\n * @alias ByteBuffer.prototype\r\n * @inner\r\n */\r\n var ByteBufferPrototype = ByteBuffer.prototype;\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a ByteBuffer or not.\r\n * @type {boolean}\r\n * @const\r\n * @expose\r\n * @private\r\n */\r\n ByteBufferPrototype.__isByteBuffer__;\r\n\r\n Object.defineProperty(ByteBufferPrototype, \"__isByteBuffer__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n // helpers\r\n\r\n /**\r\n * @type {!ArrayBuffer}\r\n * @inner\r\n */\r\n var EMPTY_BUFFER = new ArrayBuffer(0);\r\n\r\n /**\r\n * String.fromCharCode reference for compile-time renaming.\r\n * @type {function(...number):string}\r\n * @inner\r\n */\r\n var stringFromCharCode = String.fromCharCode;\r\n\r\n /**\r\n * Creates a source function for a string.\r\n * @param {string} s String to read from\r\n * @returns {function():number|null} Source function returning the next char code respectively `null` if there are\r\n * no more characters left.\r\n * @throws {TypeError} If the argument is invalid\r\n * @inner\r\n */\r\n function stringSource(s) {\r\n var i=0; return function() {\r\n return i < s.length ? s.charCodeAt(i++) : null;\r\n };\r\n }\r\n\r\n /**\r\n * Creates a destination function for a string.\r\n * @returns {function(number=):undefined|string} Destination function successively called with the next char code.\r\n * Returns the final string when called without arguments.\r\n * @inner\r\n */\r\n function stringDestination() {\r\n var cs = [], ps = []; return function() {\r\n if (arguments.length === 0)\r\n return ps.join('')+stringFromCharCode.apply(String, cs);\r\n if (cs.length + arguments.length > 1024)\r\n ps.push(stringFromCharCode.apply(String, cs)),\r\n cs.length = 0;\r\n Array.prototype.push.apply(cs, arguments);\r\n };\r\n }\r\n\r\n /**\r\n * Gets the accessor type.\r\n * @returns {Function} `Buffer` under node.js, `Uint8Array` respectively `DataView` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.accessor = function() {\r\n return Uint8Array;\r\n };\r\n /**\r\n * Allocates a new ByteBuffer backed by a buffer of the specified capacity.\r\n * @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBuffer.allocate = function(capacity, littleEndian, noAssert) {\r\n return new ByteBuffer(capacity, littleEndian, noAssert);\r\n };\r\n\r\n /**\r\n * Concatenates multiple ByteBuffers into one.\r\n * @param {!Array.<!ByteBuffer|!ArrayBuffer|!Uint8Array|string>} buffers Buffers to concatenate\r\n * @param {(string|boolean)=} encoding String encoding if `buffers` contains a string (\"base64\", \"hex\", \"binary\",\r\n * defaults to \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order for the resulting ByteBuffer. Defaults\r\n * to {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values for the resulting ByteBuffer. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} Concatenated ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.concat = function(buffers, encoding, littleEndian, noAssert) {\r\n if (typeof encoding === 'boolean' || typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n var capacity = 0;\r\n for (var i=0, k=buffers.length, length; i<k; ++i) {\r\n if (!ByteBuffer.isByteBuffer(buffers[i]))\r\n buffers[i] = ByteBuffer.wrap(buffers[i], encoding);\r\n length = buffers[i].limit - buffers[i].offset;\r\n if (length > 0) capacity += length;\r\n }\r\n if (capacity === 0)\r\n return new ByteBuffer(0, littleEndian, noAssert);\r\n var bb = new ByteBuffer(capacity, littleEndian, noAssert),\r\n bi;\r\n i=0; while (i<k) {\r\n bi = buffers[i++];\r\n length = bi.limit - bi.offset;\r\n if (length <= 0) continue;\r\n bb.view.set(bi.view.subarray(bi.offset, bi.limit), bb.offset);\r\n bb.offset += length;\r\n }\r\n bb.limit = bb.offset;\r\n bb.offset = 0;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Tests if the specified type is a ByteBuffer.\r\n * @param {*} bb ByteBuffer to test\r\n * @returns {boolean} `true` if it is a ByteBuffer, otherwise `false`\r\n * @expose\r\n */\r\n ByteBuffer.isByteBuffer = function(bb) {\r\n return (bb && bb[\"__isByteBuffer__\"]) === true;\r\n };\r\n /**\r\n * Gets the backing buffer type.\r\n * @returns {Function} `Buffer` under node.js, `ArrayBuffer` in the browser (classes)\r\n * @expose\r\n */\r\n ByteBuffer.type = function() {\r\n return ArrayBuffer;\r\n };\r\n /**\r\n * Wraps a buffer or a string. Sets the allocated ByteBuffer's {@link ByteBuffer#offset} to `0` and its\r\n * {@link ByteBuffer#limit} to the length of the wrapped data.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string|!Array.<number>} buffer Anything that can be wrapped\r\n * @param {(string|boolean)=} encoding String encoding if `buffer` is a string (\"base64\", \"hex\", \"binary\", defaults to\r\n * \"utf8\")\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} A ByteBuffer wrapping `buffer`\r\n * @expose\r\n */\r\n ByteBuffer.wrap = function(buffer, encoding, littleEndian, noAssert) {\r\n if (typeof encoding !== 'string') {\r\n noAssert = littleEndian;\r\n littleEndian = encoding;\r\n encoding = undefined;\r\n }\r\n if (typeof buffer === 'string') {\r\n if (typeof encoding === 'undefined')\r\n encoding = \"utf8\";\r\n switch (encoding) {\r\n case \"base64\":\r\n return ByteBuffer.fromBase64(buffer, littleEndian);\r\n case \"hex\":\r\n return ByteBuffer.fromHex(buffer, littleEndian);\r\n case \"binary\":\r\n return ByteBuffer.fromBinary(buffer, littleEndian);\r\n case \"utf8\":\r\n return ByteBuffer.fromUTF8(buffer, littleEndian);\r\n case \"debug\":\r\n return ByteBuffer.fromDebug(buffer, littleEndian);\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n }\r\n if (buffer === null || typeof buffer !== 'object')\r\n throw TypeError(\"Illegal buffer\");\r\n var bb;\r\n if (ByteBuffer.isByteBuffer(buffer)) {\r\n bb = ByteBufferPrototype.clone.call(buffer);\r\n bb.markedOffset = -1;\r\n return bb;\r\n }\r\n if (buffer instanceof Uint8Array) { // Extract ArrayBuffer from Uint8Array\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER\r\n bb.buffer = buffer.buffer;\r\n bb.offset = buffer.byteOffset;\r\n bb.limit = buffer.byteOffset + buffer.byteLength;\r\n bb.view = new Uint8Array(buffer.buffer);\r\n }\r\n } else if (buffer instanceof ArrayBuffer) { // Reuse ArrayBuffer\r\n bb = new ByteBuffer(0, littleEndian, noAssert);\r\n if (buffer.byteLength > 0) {\r\n bb.buffer = buffer;\r\n bb.offset = 0;\r\n bb.limit = buffer.byteLength;\r\n bb.view = buffer.byteLength > 0 ? new Uint8Array(buffer) : null;\r\n }\r\n } else if (Object.prototype.toString.call(buffer) === \"[object Array]\") { // Create from octets\r\n bb = new ByteBuffer(buffer.length, littleEndian, noAssert);\r\n bb.limit = buffer.length;\r\n for (var i=0; i<buffer.length; ++i)\r\n bb.view[i] = buffer[i];\r\n } else\r\n throw TypeError(\"Illegal buffer\"); // Otherwise fail\r\n return bb;\r\n };\r\n\r\n /**\r\n * Writes the array as a bitset.\r\n * @param {Array<boolean>} value Array of booleans to write\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBitSet = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (!(value instanceof Array))\r\n throw TypeError(\"Illegal BitSet: Not an array\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n\r\n var start = offset,\r\n bits = value.length,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n k;\r\n\r\n offset += this.writeVarint32(bits,offset);\r\n\r\n while(bytes--) {\r\n k = (!!value[bit++] & 1) |\r\n ((!!value[bit++] & 1) << 1) |\r\n ((!!value[bit++] & 1) << 2) |\r\n ((!!value[bit++] & 1) << 3) |\r\n ((!!value[bit++] & 1) << 4) |\r\n ((!!value[bit++] & 1) << 5) |\r\n ((!!value[bit++] & 1) << 6) |\r\n ((!!value[bit++] & 1) << 7);\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0; k = 0;\r\n while(bit < bits) k = k | ((!!value[bit++] & 1) << (m++));\r\n this.writeByte(k,offset++);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n }\r\n\r\n /**\r\n * Reads a BitSet as an array of booleans.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {Array<boolean>\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBitSet = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n\r\n var ret = this.readVarint32(offset),\r\n bits = ret.value,\r\n bytes = (bits >> 3),\r\n bit = 0,\r\n value = [],\r\n k;\r\n\r\n offset += ret.length;\r\n\r\n while(bytes--) {\r\n k = this.readByte(offset++);\r\n value[bit++] = !!(k & 0x01);\r\n value[bit++] = !!(k & 0x02);\r\n value[bit++] = !!(k & 0x04);\r\n value[bit++] = !!(k & 0x08);\r\n value[bit++] = !!(k & 0x10);\r\n value[bit++] = !!(k & 0x20);\r\n value[bit++] = !!(k & 0x40);\r\n value[bit++] = !!(k & 0x80);\r\n }\r\n\r\n if(bit < bits) {\r\n var m = 0;\r\n k = this.readByte(offset++);\r\n while(bit < bits) value[bit++] = !!((k >> (m++)) & 1);\r\n }\r\n\r\n if (relative) {\r\n this.offset = offset;\r\n }\r\n return value;\r\n }\r\n /**\r\n * Reads the specified number of bytes.\r\n * @param {number} length Number of bytes to read\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `length` if omitted.\r\n * @returns {!ByteBuffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readBytes = function(length, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var slice = this.slice(offset, offset + length);\r\n if (relative) this.offset += length;\n return slice;\r\n };\r\n\r\n /**\r\n * Writes a payload of bytes. This is an alias of {@link ByteBuffer#append}.\r\n * @function\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to write. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeBytes = ByteBufferPrototype.append;\r\n\r\n // types/ints/int8\r\n\r\n /**\r\n * Writes an 8bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity0 = this.buffer.byteLength;\n if (offset > capacity0)\n this.resize((capacity0 *= 2) > offset ? capacity0 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit signed integer. This is an alias of {@link ByteBuffer#writeInt8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeByte = ByteBufferPrototype.writeInt8;\r\n\r\n /**\r\n * Reads an 8bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if ((value & 0x80) === 0x80) value = -(0xFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit signed integer. This is an alias of {@link ByteBuffer#readInt8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readByte = ByteBufferPrototype.readInt8;\r\n\r\n /**\r\n * Writes an 8bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint8 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 1;\n var capacity1 = this.buffer.byteLength;\n if (offset > capacity1)\n this.resize((capacity1 *= 2) > offset ? capacity1 : offset);\n offset -= 1;\n this.view[offset] = value;\r\n if (relative) this.offset += 1;\n return this;\r\n };\r\n\r\n /**\r\n * Writes an 8bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint8}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt8 = ByteBufferPrototype.writeUint8;\r\n\r\n /**\r\n * Reads an 8bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint8 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var value = this.view[offset];\r\n if (relative) this.offset += 1;\n return value;\r\n };\r\n\r\n /**\r\n * Reads an 8bit unsigned integer. This is an alias of {@link ByteBuffer#readUint8}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `1` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt8 = ByteBufferPrototype.readUint8;\r\n\r\n // types/ints/int16\r\n\r\n /**\r\n * Writes a 16bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity2 = this.buffer.byteLength;\n if (offset > capacity2)\n this.resize((capacity2 *= 2) > offset ? capacity2 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit signed integer. This is an alias of {@link ByteBuffer#writeInt16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeShort = ByteBufferPrototype.writeInt16;\r\n\r\n /**\r\n * Reads a 16bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if ((value & 0x8000) === 0x8000) value = -(0xFFFF - value + 1); // Cast to signed\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit signed integer. This is an alias of {@link ByteBuffer#readInt16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readShort = ByteBufferPrototype.readInt16;\r\n\r\n /**\r\n * Writes a 16bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint16 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 2;\n var capacity3 = this.buffer.byteLength;\n if (offset > capacity3)\n this.resize((capacity3 *= 2) > offset ? capacity3 : offset);\n offset -= 2;\n if (this.littleEndian) {\r\n this.view[offset+1] = (value & 0xFF00) >>> 8;\r\n this.view[offset ] = value & 0x00FF;\r\n } else {\r\n this.view[offset] = (value & 0xFF00) >>> 8;\r\n this.view[offset+1] = value & 0x00FF;\r\n }\r\n if (relative) this.offset += 2;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 16bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint16}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @throws {TypeError} If `offset` or `value` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt16 = ByteBufferPrototype.writeUint16;\r\n\r\n /**\r\n * Reads a 16bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint16 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 2 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+2+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\r\n value = this.view[offset ];\r\n value |= this.view[offset+1] << 8;\r\n } else {\r\n value = this.view[offset ] << 8;\r\n value |= this.view[offset+1];\r\n }\r\n if (relative) this.offset += 2;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 16bit unsigned integer. This is an alias of {@link ByteBuffer#readUint16}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `2` if omitted.\r\n * @returns {number} Value read\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt16 = ByteBufferPrototype.readUint16;\r\n\r\n // types/ints/int32\r\n\r\n /**\r\n * Writes a 32bit signed integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity4 = this.buffer.byteLength;\n if (offset > capacity4)\n this.resize((capacity4 *= 2) > offset ? capacity4 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit signed integer. This is an alias of {@link ByteBuffer#writeInt32}.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt = ByteBufferPrototype.writeInt32;\r\n\r\n /**\r\n * Reads a 32bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n value |= 0; // Cast to signed\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit signed integer. This is an alias of {@link ByteBuffer#readInt32}.\r\n * @param {number=} offset Offset to read from. Will use and advance {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt = ByteBufferPrototype.readInt32;\r\n\r\n /**\r\n * Writes a 32bit unsigned integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value >>>= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity5 = this.buffer.byteLength;\n if (offset > capacity5)\n this.resize((capacity5 *= 2) > offset ? capacity5 : offset);\n offset -= 4;\n if (this.littleEndian) {\n this.view[offset+3] = (value >>> 24) & 0xFF;\n this.view[offset+2] = (value >>> 16) & 0xFF;\n this.view[offset+1] = (value >>> 8) & 0xFF;\n this.view[offset ] = value & 0xFF;\n } else {\n this.view[offset ] = (value >>> 24) & 0xFF;\n this.view[offset+1] = (value >>> 16) & 0xFF;\n this.view[offset+2] = (value >>> 8) & 0xFF;\n this.view[offset+3] = value & 0xFF;\n }\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt32 = ByteBufferPrototype.writeUint32;\r\n\r\n /**\r\n * Reads a 32bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = 0;\r\n if (this.littleEndian) {\n value = this.view[offset+2] << 16;\n value |= this.view[offset+1] << 8;\n value |= this.view[offset ];\n value += this.view[offset+3] << 24 >>> 0;\n } else {\n value = this.view[offset+1] << 16;\n value |= this.view[offset+2] << 8;\n value |= this.view[offset+3];\n value += this.view[offset ] << 24 >>> 0;\n }\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit unsigned integer. This is an alias of {@link ByteBuffer#readUint32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number} Value read\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt32 = ByteBufferPrototype.readUint32;\r\n\r\n // types/ints/int64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Writes a 64bit signed integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeInt64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity6 = this.buffer.byteLength;\n if (offset > capacity6)\n this.resize((capacity6 *= 2) > offset ? capacity6 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit signed integer. This is an alias of {@link ByteBuffer#writeInt64}.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeLong = ByteBufferPrototype.writeInt64;\r\n\r\n /**\r\n * Reads a 64bit signed integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readInt64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, false);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit signed integer. This is an alias of {@link ByteBuffer#readInt64}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readLong = ByteBufferPrototype.readInt64;\r\n\r\n /**\r\n * Writes a 64bit unsigned integer.\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n offset += 8;\n var capacity7 = this.buffer.byteLength;\n if (offset > capacity7)\n this.resize((capacity7 *= 2) > offset ? capacity7 : offset);\n offset -= 8;\n var lo = value.low,\r\n hi = value.high;\r\n if (this.littleEndian) {\r\n this.view[offset+3] = (lo >>> 24) & 0xFF;\n this.view[offset+2] = (lo >>> 16) & 0xFF;\n this.view[offset+1] = (lo >>> 8) & 0xFF;\n this.view[offset ] = lo & 0xFF;\n offset += 4;\r\n this.view[offset+3] = (hi >>> 24) & 0xFF;\n this.view[offset+2] = (hi >>> 16) & 0xFF;\n this.view[offset+1] = (hi >>> 8) & 0xFF;\n this.view[offset ] = hi & 0xFF;\n } else {\r\n this.view[offset ] = (hi >>> 24) & 0xFF;\n this.view[offset+1] = (hi >>> 16) & 0xFF;\n this.view[offset+2] = (hi >>> 8) & 0xFF;\n this.view[offset+3] = hi & 0xFF;\n offset += 4;\r\n this.view[offset ] = (lo >>> 24) & 0xFF;\n this.view[offset+1] = (lo >>> 16) & 0xFF;\n this.view[offset+2] = (lo >>> 8) & 0xFF;\n this.view[offset+3] = lo & 0xFF;\n }\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit unsigned integer. This is an alias of {@link ByteBuffer#writeUint64}.\r\n * @function\r\n * @param {number|!Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUInt64 = ByteBufferPrototype.writeUint64;\r\n\r\n /**\r\n * Reads a 64bit unsigned integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var lo = 0,\r\n hi = 0;\r\n if (this.littleEndian) {\r\n lo = this.view[offset+2] << 16;\n lo |= this.view[offset+1] << 8;\n lo |= this.view[offset ];\n lo += this.view[offset+3] << 24 >>> 0;\n offset += 4;\r\n hi = this.view[offset+2] << 16;\n hi |= this.view[offset+1] << 8;\n hi |= this.view[offset ];\n hi += this.view[offset+3] << 24 >>> 0;\n } else {\r\n hi = this.view[offset+1] << 16;\n hi |= this.view[offset+2] << 8;\n hi |= this.view[offset+3];\n hi += this.view[offset ] << 24 >>> 0;\n offset += 4;\r\n lo = this.view[offset+1] << 16;\n lo |= this.view[offset+2] << 8;\n lo |= this.view[offset+3];\n lo += this.view[offset ] << 24 >>> 0;\n }\r\n var value = new Long(lo, hi, true);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit unsigned integer. This is an alias of {@link ByteBuffer#readUint64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!Long}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUInt64 = ByteBufferPrototype.readUint64;\r\n\r\n } // Long\r\n\r\n\r\n // types/floats/float32\r\n\r\n /*\r\n ieee754 - https://github.com/feross/ieee754\r\n\r\n The MIT License (MIT)\r\n\r\n Copyright (c) Feross Aboukhadijeh\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining a copy\r\n of this software and associated documentation files (the \"Software\"), to deal\r\n in the Software without restriction, including without limitation the rights\r\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n copies of the Software, and to permit persons to whom the Software is\r\n furnished to do so, subject to the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be included in\r\n all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n THE SOFTWARE.\r\n */\r\n\r\n /**\r\n * Reads an IEEE754 float from a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @returns {number}\r\n * @inner\r\n */\r\n function ieee754_read(buffer, offset, isLE, mLen, nBytes) {\r\n var e, m,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n nBits = -7,\r\n i = isLE ? (nBytes - 1) : 0,\r\n d = isLE ? -1 : 1,\r\n s = buffer[offset + i];\r\n\r\n i += d;\r\n\r\n e = s & ((1 << (-nBits)) - 1);\r\n s >>= (-nBits);\r\n nBits += eLen;\r\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n m = e & ((1 << (-nBits)) - 1);\r\n e >>= (-nBits);\r\n nBits += mLen;\r\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\r\n\r\n if (e === 0) {\r\n e = 1 - eBias;\r\n } else if (e === eMax) {\r\n return m ? NaN : ((s ? -1 : 1) * Infinity);\r\n } else {\r\n m = m + Math.pow(2, mLen);\r\n e = e - eBias;\r\n }\r\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\r\n }\r\n\r\n /**\r\n * Writes an IEEE754 float to a byte array.\r\n * @param {!Array} buffer\r\n * @param {number} value\r\n * @param {number} offset\r\n * @param {boolean} isLE\r\n * @param {number} mLen\r\n * @param {number} nBytes\r\n * @inner\r\n */\r\n function ieee754_write(buffer, value, offset, isLE, mLen, nBytes) {\r\n var e, m, c,\r\n eLen = nBytes * 8 - mLen - 1,\r\n eMax = (1 << eLen) - 1,\r\n eBias = eMax >> 1,\r\n rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),\r\n i = isLE ? 0 : (nBytes - 1),\r\n d = isLE ? 1 : -1,\r\n s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\r\n\r\n value = Math.abs(value);\r\n\r\n if (isNaN(value) || value === Infinity) {\r\n m = isNaN(value) ? 1 : 0;\r\n e = eMax;\r\n } else {\r\n e = Math.floor(Math.log(value) / Math.LN2);\r\n if (value * (c = Math.pow(2, -e)) < 1) {\r\n e--;\r\n c *= 2;\r\n }\r\n if (e + eBias >= 1) {\r\n value += rt / c;\r\n } else {\r\n value += rt * Math.pow(2, 1 - eBias);\r\n }\r\n if (value * c >= 2) {\r\n e++;\r\n c /= 2;\r\n }\r\n\r\n if (e + eBias >= eMax) {\r\n m = 0;\r\n e = eMax;\r\n } else if (e + eBias >= 1) {\r\n m = (value * c - 1) * Math.pow(2, mLen);\r\n e = e + eBias;\r\n } else {\r\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\r\n e = 0;\r\n }\r\n }\r\n\r\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\r\n\r\n e = (e << mLen) | m;\r\n eLen += mLen;\r\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\r\n\r\n buffer[offset + i - d] |= s * 128;\r\n }\r\n\r\n /**\r\n * Writes a 32bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 4;\n var capacity8 = this.buffer.byteLength;\n if (offset > capacity8)\n this.resize((capacity8 *= 2) > offset ? capacity8 : offset);\n offset -= 4;\n ieee754_write(this.view, value, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 32bit float. This is an alias of {@link ByteBuffer#writeFloat32}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat = ByteBufferPrototype.writeFloat32;\r\n\r\n /**\r\n * Reads a 32bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 23, 4);\r\n if (relative) this.offset += 4;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 32bit float. This is an alias of {@link ByteBuffer#readFloat32}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `4` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat = ByteBufferPrototype.readFloat32;\r\n\r\n // types/floats/float64\r\n\r\n /**\r\n * Writes a 64bit float.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeFloat64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number')\r\n throw TypeError(\"Illegal value: \"+value+\" (not a number)\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n offset += 8;\n var capacity9 = this.buffer.byteLength;\n if (offset > capacity9)\n this.resize((capacity9 *= 2) > offset ? capacity9 : offset);\n offset -= 8;\n ieee754_write(this.view, value, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return this;\r\n };\r\n\r\n /**\r\n * Writes a 64bit float. This is an alias of {@link ByteBuffer#writeFloat64}.\r\n * @function\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeDouble = ByteBufferPrototype.writeFloat64;\r\n\r\n /**\r\n * Reads a 64bit float.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readFloat64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 8 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+8+\") <= \"+this.buffer.byteLength);\n }\r\n var value = ieee754_read(this.view, offset, this.littleEndian, 52, 8);\r\n if (relative) this.offset += 8;\n return value;\r\n };\r\n\r\n /**\r\n * Reads a 64bit float. This is an alias of {@link ByteBuffer#readFloat64}.\r\n * @function\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by `8` if omitted.\r\n * @returns {number}\r\n * @expose\r\n */\r\n ByteBufferPrototype.readDouble = ByteBufferPrototype.readFloat64;\r\n\r\n\r\n // types/varints/varint32\r\n\r\n /**\r\n * Maximum number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT32_BYTES = 5;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT32_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint32 = function(value) {\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n value = value >>> 0;\r\n if (value < 1 << 7 ) return 1;\r\n else if (value < 1 << 14) return 2;\r\n else if (value < 1 << 21) return 3;\r\n else if (value < 1 << 28) return 4;\r\n else return 5;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 32bit integer so that it can be effectively used with varint encoding.\r\n * @param {number} n Signed 32bit integer\r\n * @returns {number} Unsigned zigzag encoded 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode32 = function(n) {\r\n return (((n |= 0) << 1) ^ (n >> 31)) >>> 0; // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 32bit integer.\r\n * @param {number} n Unsigned zigzag encoded 32bit integer\r\n * @returns {number} Signed 32bit integer\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode32 = function(n) {\r\n return ((n >>> 1) ^ -(n & 1)) | 0; // // ref: src/google/protobuf/wire_format_lite.h\r\n };\r\n\r\n /**\r\n * Writes a 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var size = ByteBuffer.calculateVarint32(value),\r\n b;\r\n offset += size;\n var capacity10 = this.buffer.byteLength;\n if (offset > capacity10)\n this.resize((capacity10 *= 2) > offset ? capacity10 : offset);\n offset -= size;\n value >>>= 0;\r\n while (value >= 0x80) {\r\n b = (value & 0x7f) | 0x80;\r\n this.view[offset++] = b;\r\n value >>>= 7;\r\n }\r\n this.view[offset++] = value;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return size;\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} this if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint32ZigZag = function(value, offset) {\r\n return this.writeVarint32(ByteBuffer.zigZagEncode32(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint. Has a property `truncated = true` if there is not enough data available\r\n * to fully decode the varint.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var c = 0,\r\n value = 0 >>> 0,\r\n b;\r\n do {\r\n if (!this.noAssert && offset > this.limit) {\r\n var err = Error(\"Truncated\");\r\n err['truncated'] = true;\r\n throw err;\r\n }\r\n b = this.view[offset++];\r\n if (c < 5)\r\n value |= (b & 0x7f) << (7*c);\r\n ++c;\r\n } while ((b & 0x80) !== 0);\r\n value |= 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n }\r\n return {\r\n \"value\": value,\r\n \"length\": c\r\n };\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded (signed) 32bit base 128 variable-length integer.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {number|!{value: number, length: number}} The value read if offset is omitted, else the value read\r\n * and the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint32ZigZag = function(offset) {\r\n var val = this.readVarint32(offset);\r\n if (typeof val === 'object')\r\n val[\"value\"] = ByteBuffer.zigZagDecode32(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode32(val);\r\n return val;\r\n };\r\n\r\n // types/varints/varint64\r\n\r\n if (Long) {\r\n\r\n /**\r\n * Maximum number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @type {number}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.MAX_VARINT64_BYTES = 10;\r\n\r\n /**\r\n * Calculates the actual number of bytes required to store a 64bit base 128 variable-length integer.\r\n * @param {number|!Long} value Value to encode\r\n * @returns {number} Number of bytes required. Capped to {@link ByteBuffer.MAX_VARINT64_BYTES}\r\n * @expose\r\n */\r\n ByteBuffer.calculateVarint64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n if (part2 == 0) {\r\n if (part1 == 0) {\r\n if (part0 < 1 << 14)\r\n return part0 < 1 << 7 ? 1 : 2;\r\n else\r\n return part0 < 1 << 21 ? 3 : 4;\r\n } else {\r\n if (part1 < 1 << 14)\r\n return part1 < 1 << 7 ? 5 : 6;\r\n else\r\n return part1 < 1 << 21 ? 7 : 8;\r\n }\r\n } else\r\n return part2 < 1 << 7 ? 9 : 10;\r\n };\r\n\r\n /**\r\n * Zigzag encodes a signed 64bit integer so that it can be effectively used with varint encoding.\r\n * @param {number|!Long} value Signed long\r\n * @returns {!Long} Unsigned zigzag encoded long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagEncode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftLeft(1).xor(value.shiftRight(63)).toUnsigned();\r\n };\r\n\r\n /**\r\n * Decodes a zigzag encoded signed 64bit integer.\r\n * @param {!Long|number} value Unsigned zigzag encoded long or JavaScript number\r\n * @returns {!Long} Signed long\r\n * @expose\r\n */\r\n ByteBuffer.zigZagDecode64 = function(value) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n // ref: src/google/protobuf/wire_format_lite.h\r\n return value.shiftRightUnsigned(1).xor(value.and(Long.ONE).toSigned().negate()).toSigned();\r\n };\r\n\r\n /**\r\n * Writes a 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64 = function(value, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof value === 'number')\n value = Long.fromNumber(value);\n else if (typeof value === 'string')\n value = Long.fromString(value);\n else if (!(value && value instanceof Long))\n throw TypeError(\"Illegal value: \"+value+\" (not an integer or Long)\");\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (typeof value === 'number')\n value = Long.fromNumber(value, false);\n else if (typeof value === 'string')\n value = Long.fromString(value, false);\n else if (value.unsigned !== false) value = value.toSigned();\n var size = ByteBuffer.calculateVarint64(value),\r\n part0 = value.toInt() >>> 0,\r\n part1 = value.shiftRightUnsigned(28).toInt() >>> 0,\r\n part2 = value.shiftRightUnsigned(56).toInt() >>> 0;\r\n offset += size;\n var capacity11 = this.buffer.byteLength;\n if (offset > capacity11)\n this.resize((capacity11 *= 2) > offset ? capacity11 : offset);\n offset -= size;\n switch (size) {\r\n case 10: this.view[offset+9] = (part2 >>> 7) & 0x01;\r\n case 9 : this.view[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;\r\n case 8 : this.view[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;\r\n case 7 : this.view[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;\r\n case 6 : this.view[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;\r\n case 5 : this.view[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;\r\n case 4 : this.view[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;\r\n case 3 : this.view[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;\r\n case 2 : this.view[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;\r\n case 1 : this.view[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;\r\n }\r\n if (relative) {\r\n this.offset += size;\r\n return this;\r\n } else {\r\n return size;\r\n }\r\n };\r\n\r\n /**\r\n * Writes a zig-zag encoded 64bit base 128 variable-length integer.\r\n * @param {number|Long} value Value to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeVarint64ZigZag = function(value, offset) {\r\n return this.writeVarint64(ByteBuffer.zigZagEncode64(value), offset);\r\n };\r\n\r\n /**\r\n * Reads a 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64 = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n // ref: src/google/protobuf/io/coded_stream.cc\r\n var start = offset,\r\n part0 = 0,\r\n part1 = 0,\r\n part2 = 0,\r\n b = 0;\r\n b = this.view[offset++]; part0 = (b & 0x7F) ; if ( b & 0x80 ) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part0 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 14; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part1 |= (b & 0x7F) << 21; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 = (b & 0x7F) ; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n b = this.view[offset++]; part2 |= (b & 0x7F) << 7; if ((b & 0x80) || (this.noAssert && typeof b === 'undefined')) {\r\n throw Error(\"Buffer overrun\"); }}}}}}}}}}\r\n var value = Long.fromBits(part0 | (part1 << 28), (part1 >>> 4) | (part2) << 24, false);\r\n if (relative) {\r\n this.offset = offset;\r\n return value;\r\n } else {\r\n return {\r\n 'value': value,\r\n 'length': offset-start\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * Reads a zig-zag encoded 64bit base 128 variable-length integer. Requires Long.js.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!Long|!{value: Long, length: number}} The value read if offset is omitted, else the value read and\r\n * the actual number of bytes read.\r\n * @throws {Error} If it's not a valid varint\r\n * @expose\r\n */\r\n ByteBufferPrototype.readVarint64ZigZag = function(offset) {\r\n var val = this.readVarint64(offset);\r\n if (val && val['value'] instanceof Long)\r\n val[\"value\"] = ByteBuffer.zigZagDecode64(val[\"value\"]);\r\n else\r\n val = ByteBuffer.zigZagDecode64(val);\r\n return val;\r\n };\r\n\r\n } // Long\r\n\r\n\r\n // types/strings/cstring\r\n\r\n /**\r\n * Writes a NULL-terminated UTF8 encoded string. For this to work the specified string must not contain any NULL\r\n * characters itself.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * contained in `str` + 1 if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeCString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n var i,\r\n k = str.length;\r\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n for (i=0; i<k; ++i) {\r\n if (str.charCodeAt(i) === 0)\r\n throw RangeError(\"Illegal str: Contains NULL-characters\");\r\n }\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n // UTF8 strings do not contain zero bytes in between except for the zero character, so:\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k+1;\n var capacity12 = this.buffer.byteLength;\n if (offset > capacity12)\n this.resize((capacity12 *= 2) > offset ? capacity12 : offset);\n offset -= k+1;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n this.view[offset++] = 0;\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return k;\r\n };\r\n\r\n /**\r\n * Reads a NULL-terminated UTF8 encoded string. For this to work the string read must not contain any NULL characters\r\n * itself.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readCString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n temp;\r\n // UTF8 strings do not contain zero bytes in between except for the zero character itself, so:\r\n var sd, b = -1;\r\n utfx.decodeUTF8toUTF16(function() {\r\n if (b === 0) return null;\r\n if (offset >= this.limit)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" < \"+this.limit);\r\n b = this.view[offset++];\r\n return b === 0 ? null : b;\r\n }.bind(this), sd = stringDestination(), true);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/istring\r\n\r\n /**\r\n * Writes a length as uint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeIString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n offset += 4+k;\n var capacity13 = this.buffer.byteLength;\n if (offset > capacity13)\n this.resize((capacity13 *= 2) > offset ? capacity13 : offset);\n offset -= 4+k;\n if (this.littleEndian) {\n this.view[offset+3] = (k >>> 24) & 0xFF;\n this.view[offset+2] = (k >>> 16) & 0xFF;\n this.view[offset+1] = (k >>> 8) & 0xFF;\n this.view[offset ] = k & 0xFF;\n } else {\n this.view[offset ] = (k >>> 24) & 0xFF;\n this.view[offset+1] = (k >>> 16) & 0xFF;\n this.view[offset+2] = (k >>> 8) & 0xFF;\n this.view[offset+3] = k & 0xFF;\n }\n offset += 4;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start + 4 + k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+4+k));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as uint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readIString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 4 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+4+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readUint32(offset);\r\n var str = this.readUTF8String(len, ByteBuffer.METRICS_BYTES, offset += 4);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n // types/strings/utf8string\r\n\r\n /**\r\n * Metrics representing number of UTF8 characters. Evaluates to `c`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_CHARS = 'c';\r\n\r\n /**\r\n * Metrics representing number of bytes. Evaluates to `b`.\r\n * @type {string}\r\n * @const\r\n * @expose\r\n */\r\n ByteBuffer.METRICS_BYTES = 'b';\r\n\r\n /**\r\n * Writes an UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeUTF8String = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var k;\r\n var start = offset;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n offset += k;\n var capacity14 = this.buffer.byteLength;\n if (offset > capacity14)\n this.resize((capacity14 *= 2) > offset ? capacity14 : offset);\n offset -= k;\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Writes an UTF8 encoded string. This is an alias of {@link ByteBuffer#writeUTF8String}.\r\n * @function\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} if omitted.\r\n * @returns {!ByteBuffer|number} this if offset is omitted, else the actual number of bytes written.\r\n * @expose\r\n */\r\n ByteBufferPrototype.writeString = ByteBufferPrototype.writeUTF8String;\r\n\r\n /**\r\n * Calculates the number of UTF8 characters of a string. JavaScript itself uses UTF-16, so that a string's\r\n * `length` property does not reflect its actual UTF8 size if it contains code points larger than 0xFFFF.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 characters\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Chars = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[0];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string.\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateUTF8Bytes = function(str) {\r\n return utfx.calculateUTF16asUTF8(stringSource(str))[1];\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes of a string. This is an alias of {@link ByteBuffer.calculateUTF8Bytes}.\r\n * @function\r\n * @param {string} str String to calculate\r\n * @returns {number} Number of UTF8 bytes\r\n * @expose\r\n */\r\n ByteBuffer.calculateString = ByteBuffer.calculateUTF8Bytes;\r\n\r\n /**\r\n * Reads an UTF8 encoded string.\r\n * @param {number} length Number of characters or bytes to read.\r\n * @param {string=} metrics Metrics specifying what `length` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readUTF8String = function(length, metrics, offset) {\r\n if (typeof metrics === 'number') {\r\n offset = metrics;\r\n metrics = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (typeof metrics === 'undefined') metrics = ByteBuffer.METRICS_CHARS;\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var i = 0,\r\n start = offset,\r\n sd;\r\n if (metrics === ByteBuffer.METRICS_CHARS) { // The same for node and the browser\r\n sd = stringDestination();\r\n utfx.decodeUTF8(function() {\r\n return i < length && offset < this.limit ? this.view[offset++] : null;\r\n }.bind(this), function(cp) {\r\n ++i; utfx.UTF8toUTF16(cp, sd);\r\n });\r\n if (i !== length)\r\n throw RangeError(\"Illegal range: Truncated data, \"+i+\" == \"+length);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n \"string\": sd(),\r\n \"length\": offset - start\r\n };\r\n }\r\n } else if (metrics === ByteBuffer.METRICS_BYTES) {\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + length > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+length+\") <= \"+this.buffer.byteLength);\n }\r\n var k = offset + length;\r\n utfx.decodeUTF8toUTF16(function() {\r\n return offset < k ? this.view[offset++] : null;\r\n }.bind(this), sd = stringDestination(), this.noAssert);\r\n if (offset !== k)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+k);\r\n if (relative) {\r\n this.offset = offset;\r\n return sd();\r\n } else {\r\n return {\r\n 'string': sd(),\r\n 'length': offset - start\r\n };\r\n }\r\n } else\r\n throw TypeError(\"Unsupported metrics: \"+metrics);\r\n };\r\n\r\n /**\r\n * Reads an UTF8 encoded string. This is an alias of {@link ByteBuffer#readUTF8String}.\r\n * @function\r\n * @param {number} length Number of characters or bytes to read\r\n * @param {number=} metrics Metrics specifying what `n` is meant to count. Defaults to\r\n * {@link ByteBuffer.METRICS_CHARS}.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n */\r\n ByteBufferPrototype.readString = ByteBufferPrototype.readUTF8String;\r\n\r\n // types/strings/vstring\r\n\r\n /**\r\n * Writes a length as varint32 prefixed UTF8 encoded string.\r\n * @param {string} str String to write\r\n * @param {number=} offset Offset to write to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer|number} `this` if `offset` is omitted, else the actual number of bytes written\r\n * @expose\r\n * @see ByteBuffer#writeVarint32\r\n */\r\n ByteBufferPrototype.writeVString = function(str, offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset,\r\n k, l;\r\n k = utfx.calculateUTF16asUTF8(stringSource(str), this.noAssert)[1];\r\n l = ByteBuffer.calculateVarint32(k);\r\n offset += l+k;\n var capacity15 = this.buffer.byteLength;\n if (offset > capacity15)\n this.resize((capacity15 *= 2) > offset ? capacity15 : offset);\n offset -= l+k;\n offset += this.writeVarint32(k, offset);\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n this.view[offset++] = b;\r\n }.bind(this));\r\n if (offset !== start+k+l)\r\n throw RangeError(\"Illegal range: Truncated data, \"+offset+\" == \"+(offset+k+l));\r\n if (relative) {\r\n this.offset = offset;\r\n return this;\r\n }\r\n return offset - start;\r\n };\r\n\r\n /**\r\n * Reads a length as varint32 prefixed UTF8 encoded string.\r\n * @param {number=} offset Offset to read from. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {string|!{string: string, length: number}} The string read if offset is omitted, else the string\r\n * read and the actual number of bytes read.\r\n * @expose\r\n * @see ByteBuffer#readVarint32\r\n */\r\n ByteBufferPrototype.readVString = function(offset) {\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 1 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+1+\") <= \"+this.buffer.byteLength);\n }\r\n var start = offset;\r\n var len = this.readVarint32(offset);\r\n var str = this.readUTF8String(len['value'], ByteBuffer.METRICS_BYTES, offset += len['length']);\r\n offset += str['length'];\r\n if (relative) {\r\n this.offset = offset;\r\n return str['string'];\r\n } else {\r\n return {\r\n 'string': str['string'],\r\n 'length': offset - start\r\n };\r\n }\r\n };\r\n\r\n\r\n /**\r\n * Appends some data to this ByteBuffer. This will overwrite any contents behind the specified offset up to the appended\r\n * data's length.\r\n * @param {!ByteBuffer|!ArrayBuffer|!Uint8Array|string} source Data to append. If `source` is a ByteBuffer, its offsets\r\n * will be modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to append at. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `<01 02>03.append(<04 05>)` will result in `<01 02 04 05>, 04 05|`\r\n * @example An absolute `<01 02>03.append(04 05>, 1)` will result in `<01 04>05, 04 05|`\r\n */\r\n ByteBufferPrototype.append = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var length = source.limit - source.offset;\r\n if (length <= 0) return this; // Nothing to append\r\n offset += length;\n var capacity16 = this.buffer.byteLength;\n if (offset > capacity16)\n this.resize((capacity16 *= 2) > offset ? capacity16 : offset);\n offset -= length;\n this.view.set(source.view.subarray(source.offset, source.limit), offset);\r\n source.offset += length;\r\n if (relative) this.offset += length;\n return this;\r\n };\r\n\r\n /**\r\n * Appends this ByteBuffer's contents to another ByteBuffer. This will overwrite any contents at and after the\r\n specified offset up to the length of this ByteBuffer's data.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to append to. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * read if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#append\r\n */\r\n ByteBufferPrototype.appendTo = function(target, offset) {\r\n target.append(this, offset);\r\n return this;\r\n };\r\n\r\n /**\r\n * Enables or disables assertions of argument types and offsets. Assertions are enabled by default but you can opt to\r\n * disable them if your code already makes sure that everything is valid.\r\n * @param {boolean} assert `true` to enable assertions, otherwise `false`\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.assert = function(assert) {\r\n this.noAssert = !assert;\r\n return this;\r\n };\r\n\r\n /**\r\n * Gets the capacity of this ByteBuffer's backing buffer.\r\n * @returns {number} Capacity of the backing buffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.capacity = function() {\r\n return this.buffer.byteLength;\r\n };\r\n /**\r\n * Clears this ByteBuffer's offsets by setting {@link ByteBuffer#offset} to `0` and {@link ByteBuffer#limit} to the\r\n * backing buffer's capacity. Discards {@link ByteBuffer#markedOffset}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.clear = function() {\r\n this.offset = 0;\r\n this.limit = this.buffer.byteLength;\r\n this.markedOffset = -1;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a cloned instance of this ByteBuffer, preset with this ByteBuffer's values for {@link ByteBuffer#offset},\r\n * {@link ByteBuffer#markedOffset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} copy Whether to copy the backing buffer or to return another view on the same, defaults to `false`\r\n * @returns {!ByteBuffer} Cloned instance\r\n * @expose\r\n */\r\n ByteBufferPrototype.clone = function(copy) {\r\n var bb = new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n if (copy) {\r\n bb.buffer = new ArrayBuffer(this.buffer.byteLength);\r\n bb.view = new Uint8Array(bb.buffer);\r\n } else {\r\n bb.buffer = this.buffer;\r\n bb.view = this.view;\r\n }\r\n bb.offset = this.offset;\r\n bb.markedOffset = this.markedOffset;\r\n bb.limit = this.limit;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Compacts this ByteBuffer to be backed by a {@link ByteBuffer#buffer} of its contents' length. Contents are the bytes\r\n * between {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. Will set `offset = 0` and `limit = capacity` and\r\n * adapt {@link ByteBuffer#markedOffset} to the same relative position if set.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.compact = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === 0 && end === this.buffer.byteLength)\r\n return this; // Already compacted\r\n var len = end - begin;\r\n if (len === 0) {\r\n this.buffer = EMPTY_BUFFER;\r\n this.view = null;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = 0;\r\n return this;\r\n }\r\n var buffer = new ArrayBuffer(len);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(begin, end));\r\n this.buffer = buffer;\r\n this.view = view;\r\n if (this.markedOffset >= 0) this.markedOffset -= begin;\r\n this.offset = 0;\r\n this.limit = len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Creates a copy of this ByteBuffer's contents. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Copy\r\n * @expose\r\n */\r\n ByteBufferPrototype.copy = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return new ByteBuffer(0, this.littleEndian, this.noAssert);\r\n var capacity = end - begin,\r\n bb = new ByteBuffer(capacity, this.littleEndian, this.noAssert);\r\n bb.offset = 0;\r\n bb.limit = capacity;\r\n if (bb.markedOffset >= 0) bb.markedOffset -= begin;\r\n this.copyTo(bb, 0, begin, end);\r\n return bb;\r\n };\r\n\r\n /**\r\n * Copies this ByteBuffer's contents to another ByteBuffer. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} targetOffset Offset to copy to. Will use and increase the target's {@link ByteBuffer#offset}\r\n * by the number of bytes copied if omitted.\r\n * @param {number=} sourceOffset Offset to start copying from. Will use and increase {@link ByteBuffer#offset} by the\r\n * number of bytes copied if omitted.\r\n * @param {number=} sourceLimit Offset to end copying from, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.copyTo = function(target, targetOffset, sourceOffset, sourceLimit) {\r\n var relative,\r\n targetRelative;\r\n if (!this.noAssert) {\r\n if (!ByteBuffer.isByteBuffer(target))\r\n throw TypeError(\"Illegal target: Not a ByteBuffer\");\r\n }\r\n targetOffset = (targetRelative = typeof targetOffset === 'undefined') ? target.offset : targetOffset | 0;\r\n sourceOffset = (relative = typeof sourceOffset === 'undefined') ? this.offset : sourceOffset | 0;\r\n sourceLimit = typeof sourceLimit === 'undefined' ? this.limit : sourceLimit | 0;\r\n\r\n if (targetOffset < 0 || targetOffset > target.buffer.byteLength)\r\n throw RangeError(\"Illegal target range: 0 <= \"+targetOffset+\" <= \"+target.buffer.byteLength);\r\n if (sourceOffset < 0 || sourceLimit > this.buffer.byteLength)\r\n throw RangeError(\"Illegal source range: 0 <= \"+sourceOffset+\" <= \"+this.buffer.byteLength);\r\n\r\n var len = sourceLimit - sourceOffset;\r\n if (len === 0)\r\n return target; // Nothing to copy\r\n\r\n target.ensureCapacity(targetOffset + len);\r\n\r\n target.view.set(this.view.subarray(sourceOffset, sourceLimit), targetOffset);\r\n\r\n if (relative) this.offset += len;\r\n if (targetRelative) target.offset += len;\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes sure that this ByteBuffer is backed by a {@link ByteBuffer#buffer} of at least the specified capacity. If the\r\n * current capacity is exceeded, it will be doubled. If double the current capacity is less than the required capacity,\r\n * the required capacity will be used instead.\r\n * @param {number} capacity Required capacity\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.ensureCapacity = function(capacity) {\r\n var current = this.buffer.byteLength;\r\n if (current < capacity)\r\n return this.resize((current *= 2) > capacity ? current : capacity);\r\n return this;\r\n };\r\n\r\n /**\r\n * Overwrites this ByteBuffer's contents with the specified value. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {number|string} value Byte value to fill with. If given as a string, the first character is used.\r\n * @param {number=} begin Begin offset. Will use and increase {@link ByteBuffer#offset} by the number of bytes\r\n * written if omitted. defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example `someByteBuffer.clear().fill(0)` fills the entire backing buffer with zeroes\r\n */\r\n ByteBufferPrototype.fill = function(value, begin, end) {\r\n var relative = typeof begin === 'undefined';\n if (relative) begin = this.offset;\n if (typeof value === 'string' && value.length > 0)\r\n value = value.charCodeAt(0);\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof value !== 'number' || value % 1 !== 0)\n throw TypeError(\"Illegal value: \"+value+\" (not an integer)\");\n value |= 0;\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin >= end)\r\n return this; // Nothing to fill\r\n while (begin < end) this.view[begin++] = value;\r\n if (relative) this.offset = begin;\r\n return this;\r\n };\r\n\r\n /**\r\n * Makes this ByteBuffer ready for a new sequence of write or relative read operations. Sets `limit = offset` and\r\n * `offset = 0`. Make sure always to flip a ByteBuffer when all relative read or write operations are complete.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.flip = function() {\r\n this.limit = this.offset;\r\n this.offset = 0;\r\n return this;\r\n };\r\n /**\r\n * Marks an offset on this ByteBuffer to be used later.\r\n * @param {number=} offset Offset to mark. Defaults to {@link ByteBuffer#offset}.\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `offset` is not a valid number\r\n * @throws {RangeError} If `offset` is out of bounds\r\n * @see ByteBuffer#reset\r\n * @expose\r\n */\r\n ByteBufferPrototype.mark = function(offset) {\r\n offset = typeof offset === 'undefined' ? this.offset : offset;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n this.markedOffset = offset;\r\n return this;\r\n };\r\n /**\r\n * Sets the byte order.\r\n * @param {boolean} littleEndian `true` for little endian byte order, `false` for big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.order = function(littleEndian) {\r\n if (!this.noAssert) {\r\n if (typeof littleEndian !== 'boolean')\r\n throw TypeError(\"Illegal littleEndian: Not a boolean\");\r\n }\r\n this.littleEndian = !!littleEndian;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) little endian byte order.\r\n * @param {boolean=} littleEndian Defaults to `true`, otherwise uses big endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.LE = function(littleEndian) {\r\n this.littleEndian = typeof littleEndian !== 'undefined' ? !!littleEndian : true;\r\n return this;\r\n };\r\n\r\n /**\r\n * Switches (to) big endian byte order.\r\n * @param {boolean=} bigEndian Defaults to `true`, otherwise uses little endian\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.BE = function(bigEndian) {\r\n this.littleEndian = typeof bigEndian !== 'undefined' ? !bigEndian : false;\r\n return this;\r\n };\r\n /**\r\n * Prepends some data to this ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer|string|!ArrayBuffer} source Data to prepend. If `source` is a ByteBuffer, its offset will be\r\n * modified according to the performed read operation.\r\n * @param {(string|number)=} encoding Encoding if `data` is a string (\"base64\", \"hex\", \"binary\", defaults to \"utf8\")\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @example A relative `00<01 02 03>.prepend(<04 05>)` results in `<04 05 01 02 03>, 04 05|`\r\n * @example An absolute `00<01 02 03>.prepend(<04 05>, 2)` results in `04<05 02 03>, 04 05|`\r\n */\r\n ByteBufferPrototype.prepend = function(source, encoding, offset) {\r\n if (typeof encoding === 'number' || typeof encoding !== 'string') {\r\n offset = encoding;\r\n encoding = undefined;\r\n }\r\n var relative = typeof offset === 'undefined';\n if (relative) offset = this.offset;\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: \"+offset+\" (not an integer)\");\n offset >>>= 0;\n if (offset < 0 || offset + 0 > this.buffer.byteLength)\n throw RangeError(\"Illegal offset: 0 <= \"+offset+\" (+\"+0+\") <= \"+this.buffer.byteLength);\n }\r\n if (!(source instanceof ByteBuffer))\r\n source = ByteBuffer.wrap(source, encoding);\r\n var len = source.limit - source.offset;\r\n if (len <= 0) return this; // Nothing to prepend\r\n var diff = len - offset;\r\n if (diff > 0) { // Not enough space before offset, so resize + move\r\n var buffer = new ArrayBuffer(this.buffer.byteLength + diff);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view.subarray(offset, this.buffer.byteLength), len);\r\n this.buffer = buffer;\r\n this.view = view;\r\n this.offset += diff;\r\n if (this.markedOffset >= 0) this.markedOffset += diff;\r\n this.limit += diff;\r\n offset += diff;\r\n } else {\r\n var arrayView = new Uint8Array(this.buffer);\r\n }\r\n this.view.set(source.view.subarray(source.offset, source.limit), offset - len);\r\n\r\n source.offset = source.limit;\r\n if (relative)\r\n this.offset -= len;\r\n return this;\r\n };\r\n\r\n /**\r\n * Prepends this ByteBuffer to another ByteBuffer. This will overwrite any contents before the specified offset up to the\r\n * prepended data's length. If there is not enough space available before the specified `offset`, the backing buffer\r\n * will be resized and its contents moved accordingly.\r\n * @param {!ByteBuffer} target Target ByteBuffer\r\n * @param {number=} offset Offset to prepend at. Will use and decrease {@link ByteBuffer#offset} by the number of bytes\r\n * prepended if omitted.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n * @see ByteBuffer#prepend\r\n */\r\n ByteBufferPrototype.prependTo = function(target, offset) {\r\n target.prepend(this, offset);\r\n return this;\r\n };\r\n /**\r\n * Prints debug information about this ByteBuffer's contents.\r\n * @param {function(string)=} out Output function to call, defaults to console.log\r\n * @expose\r\n */\r\n ByteBufferPrototype.printDebug = function(out) {\r\n if (typeof out !== 'function') out = console.log.bind(console);\r\n out(\r\n this.toString()+\"\\n\"+\r\n \"-------------------------------------------------------------------\\n\"+\r\n this.toDebug(/* columns */ true)\r\n );\r\n };\r\n\r\n /**\r\n * Gets the number of remaining readable bytes. Contents are the bytes between {@link ByteBuffer#offset} and\r\n * {@link ByteBuffer#limit}, so this returns `limit - offset`.\r\n * @returns {number} Remaining readable bytes. May be negative if `offset > limit`.\r\n * @expose\r\n */\r\n ByteBufferPrototype.remaining = function() {\r\n return this.limit - this.offset;\r\n };\r\n /**\r\n * Resets this ByteBuffer's {@link ByteBuffer#offset}. If an offset has been marked through {@link ByteBuffer#mark}\r\n * before, `offset` will be set to {@link ByteBuffer#markedOffset}, which will then be discarded. If no offset has been\r\n * marked, sets `offset = 0`.\r\n * @returns {!ByteBuffer} this\r\n * @see ByteBuffer#mark\r\n * @expose\r\n */\r\n ByteBufferPrototype.reset = function() {\r\n if (this.markedOffset >= 0) {\r\n this.offset = this.markedOffset;\r\n this.markedOffset = -1;\r\n } else {\r\n this.offset = 0;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Resizes this ByteBuffer to be backed by a buffer of at least the given capacity. Will do nothing if already that\r\n * large or larger.\r\n * @param {number} capacity Capacity required\r\n * @returns {!ByteBuffer} this\r\n * @throws {TypeError} If `capacity` is not a number\r\n * @throws {RangeError} If `capacity < 0`\r\n * @expose\r\n */\r\n ByteBufferPrototype.resize = function(capacity) {\r\n if (!this.noAssert) {\r\n if (typeof capacity !== 'number' || capacity % 1 !== 0)\n throw TypeError(\"Illegal capacity: \"+capacity+\" (not an integer)\");\n capacity |= 0;\n if (capacity < 0)\r\n throw RangeError(\"Illegal capacity: 0 <= \"+capacity);\r\n }\r\n if (this.buffer.byteLength < capacity) {\r\n var buffer = new ArrayBuffer(capacity);\r\n var view = new Uint8Array(buffer);\r\n view.set(this.view);\r\n this.buffer = buffer;\r\n this.view = view;\r\n }\r\n return this;\r\n };\r\n /**\r\n * Reverses this ByteBuffer's contents.\r\n * @param {number=} begin Offset to start at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.reverse = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n if (begin === end)\r\n return this; // Nothing to reverse\r\n Array.prototype.reverse.call(this.view.subarray(begin, end));\r\n return this;\r\n };\r\n /**\r\n * Skips the next `length` bytes. This will just advance\r\n * @param {number} length Number of bytes to skip. May also be negative to move the offset back.\r\n * @returns {!ByteBuffer} this\r\n * @expose\r\n */\r\n ByteBufferPrototype.skip = function(length) {\r\n if (!this.noAssert) {\r\n if (typeof length !== 'number' || length % 1 !== 0)\n throw TypeError(\"Illegal length: \"+length+\" (not an integer)\");\n length |= 0;\n }\r\n var offset = this.offset + length;\r\n if (!this.noAssert) {\r\n if (offset < 0 || offset > this.buffer.byteLength)\r\n throw RangeError(\"Illegal length: 0 <= \"+this.offset+\" + \"+length+\" <= \"+this.buffer.byteLength);\r\n }\r\n this.offset = offset;\r\n return this;\r\n };\r\n\r\n /**\r\n * Slices this ByteBuffer by creating a cloned instance with `offset = begin` and `limit = end`.\r\n * @param {number=} begin Begin offset, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end End offset, defaults to {@link ByteBuffer#limit}.\r\n * @returns {!ByteBuffer} Clone of this ByteBuffer with slicing applied, backed by the same {@link ByteBuffer#buffer}\r\n * @expose\r\n */\r\n ByteBufferPrototype.slice = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var bb = this.clone();\r\n bb.offset = begin;\r\n bb.limit = end;\r\n return bb;\r\n };\r\n /**\r\n * Returns a copy of the backing buffer that contains this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}.\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory if\r\n * possible. Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBuffer = function(forceCopy) {\r\n var offset = this.offset,\r\n limit = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof offset !== 'number' || offset % 1 !== 0)\n throw TypeError(\"Illegal offset: Not an integer\");\n offset >>>= 0;\n if (typeof limit !== 'number' || limit % 1 !== 0)\n throw TypeError(\"Illegal limit: Not an integer\");\n limit >>>= 0;\n if (offset < 0 || offset > limit || limit > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+offset+\" <= \"+limit+\" <= \"+this.buffer.byteLength);\n }\r\n // NOTE: It's not possible to have another ArrayBuffer reference the same memory as the backing buffer. This is\r\n // possible with Uint8Array#subarray only, but we have to return an ArrayBuffer by contract. So:\r\n if (!forceCopy && offset === 0 && limit === this.buffer.byteLength)\r\n return this.buffer;\r\n if (offset === limit)\r\n return EMPTY_BUFFER;\r\n var buffer = new ArrayBuffer(limit - offset);\r\n new Uint8Array(buffer).set(new Uint8Array(this.buffer).subarray(offset, limit), 0);\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Returns a raw buffer compacted to contain this ByteBuffer's contents. Contents are the bytes between\r\n * {@link ByteBuffer#offset} and {@link ByteBuffer#limit}. This is an alias of {@link ByteBuffer#toBuffer}.\r\n * @function\r\n * @param {boolean=} forceCopy If `true` returns a copy, otherwise returns a view referencing the same memory.\r\n * Defaults to `false`\r\n * @returns {!ArrayBuffer} Contents as an ArrayBuffer\r\n * @expose\r\n */\r\n ByteBufferPrototype.toArrayBuffer = ByteBufferPrototype.toBuffer;\r\n\r\n /**\r\n * Converts the ByteBuffer's contents to a string.\r\n * @param {string=} encoding Output encoding. Returns an informative string representation if omitted but also allows\r\n * direct conversion to \"utf8\", \"hex\", \"base64\" and \"binary\" encoding. \"debug\" returns a hex representation with\r\n * highlighted offsets.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}\r\n * @returns {string} String representation\r\n * @throws {Error} If `encoding` is invalid\r\n * @expose\r\n */\r\n ByteBufferPrototype.toString = function(encoding, begin, end) {\r\n if (typeof encoding === 'undefined')\r\n return \"ByteBufferAB(offset=\"+this.offset+\",markedOffset=\"+this.markedOffset+\",limit=\"+this.limit+\",capacity=\"+this.capacity()+\")\";\r\n if (typeof encoding === 'number')\r\n encoding = \"utf8\",\r\n begin = encoding,\r\n end = begin;\r\n switch (encoding) {\r\n case \"utf8\":\r\n return this.toUTF8(begin, end);\r\n case \"base64\":\r\n return this.toBase64(begin, end);\r\n case \"hex\":\r\n return this.toHex(begin, end);\r\n case \"binary\":\r\n return this.toBinary(begin, end);\r\n case \"debug\":\r\n return this.toDebug();\r\n case \"columns\":\r\n return this.toColumns();\r\n default:\r\n throw Error(\"Unsupported encoding: \"+encoding);\r\n }\r\n };\r\n\r\n // lxiv-embeddable\r\n\r\n /**\r\n * lxiv-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/lxiv for details\r\n */\r\n var lxiv = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * lxiv namespace.\r\n * @type {!Object.<string,*>}\r\n * @exports lxiv\r\n */\r\n var lxiv = {};\r\n\r\n /**\r\n * Character codes for output.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var aout = [\r\n 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,\r\n 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102,\r\n 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\r\n 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47\r\n ];\r\n\r\n /**\r\n * Character codes for input.\r\n * @type {!Array.<number>}\r\n * @inner\r\n */\r\n var ain = [];\r\n for (var i=0, k=aout.length; i<k; ++i)\r\n ain[aout[i]] = i;\r\n\r\n /**\r\n * Encodes bytes to base64 char codes.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if\r\n * there are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each encoded char\r\n * code.\r\n */\r\n lxiv.encode = function(src, dst) {\r\n var b, t;\r\n while ((b = src()) !== null) {\r\n dst(aout[(b>>2)&0x3f]);\r\n t = (b&0x3)<<4;\r\n if ((b = src()) !== null) {\r\n t |= (b>>4)&0xf;\r\n dst(aout[(t|((b>>4)&0xf))&0x3f]);\r\n t = (b&0xf)<<2;\r\n if ((b = src()) !== null)\r\n dst(aout[(t|((b>>6)&0x3))&0x3f]),\r\n dst(aout[b&0x3f]);\r\n else\r\n dst(aout[t&0x3f]),\r\n dst(61);\r\n } else\r\n dst(aout[t&0x3f]),\r\n dst(61),\r\n dst(61);\r\n }\r\n };\r\n\r\n /**\r\n * Decodes base64 char codes to bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n * @throws {Error} If a character code is invalid\r\n */\r\n lxiv.decode = function(src, dst) {\r\n var c, t1, t2;\r\n function fail(c) {\r\n throw Error(\"Illegal character code: \"+c);\r\n }\r\n while ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined') fail(c);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined') fail(c);\r\n dst((t1<<2)>>>0|(t2&0x30)>>4);\r\n if ((c = src()) !== null) {\r\n t1 = ain[c];\r\n if (typeof t1 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t2&0xf)<<4)>>>0|(t1&0x3c)>>2);\r\n if ((c = src()) !== null) {\r\n t2 = ain[c];\r\n if (typeof t2 === 'undefined')\r\n if (c === 61) break; else fail(c);\r\n dst(((t1&0x3)<<6)>>>0|t2);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Tests if a string is valid base64.\r\n * @param {string} str String to test\r\n * @returns {boolean} `true` if valid, otherwise `false`\r\n */\r\n lxiv.test = function(str) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(str);\r\n };\r\n\r\n return lxiv;\r\n }();\r\n\r\n // encodings/base64\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a base64 encoded string.\r\n * @param {number=} begin Offset to begin at, defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at, defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Base64 encoded string\r\n * @throws {RangeError} If `begin` or `end` is out of bounds\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBase64 = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin = begin | 0; end = end | 0;\r\n if (begin < 0 || end > this.capacity || begin > end)\r\n throw RangeError(\"begin, end\");\r\n var sd; lxiv.encode(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBase64 = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var bb = new ByteBuffer(str.length/4*3, littleEndian),\r\n i = 0;\r\n lxiv.decode(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n /**\r\n * Encodes a binary string to base64 like `window.btoa` does.\r\n * @param {string} str Binary string\r\n * @returns {string} Base64 encoded string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.btoa\r\n * @expose\r\n */\r\n ByteBuffer.btoa = function(str) {\r\n return ByteBuffer.fromBinary(str).toBase64();\r\n };\r\n\r\n /**\r\n * Decodes a base64 encoded string to binary like `window.atob` does.\r\n * @param {string} b64 Base64 encoded string\r\n * @returns {string} Binary string\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.atob\r\n * @expose\r\n */\r\n ByteBuffer.atob = function(b64) {\r\n return ByteBuffer.fromBase64(b64).toBinary();\r\n };\r\n\r\n // encodings/binary\r\n\r\n /**\r\n * Encodes this ByteBuffer to a binary encoded string, that is using only characters 0x00-0xFF as bytes.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Binary encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toBinary = function(begin, end) {\r\n if (typeof begin === 'undefined')\r\n begin = this.offset;\r\n if (typeof end === 'undefined')\r\n end = this.limit;\r\n begin |= 0; end |= 0;\r\n if (begin < 0 || end > this.capacity() || begin > end)\r\n throw RangeError(\"begin, end\");\r\n if (begin === end)\r\n return \"\";\r\n var chars = [],\r\n parts = [];\r\n while (begin < end) {\r\n chars.push(this.view[begin++]);\r\n if (chars.length >= 1024)\r\n parts.push(String.fromCharCode.apply(String, chars)),\r\n chars = [];\r\n }\r\n return parts.join('') + String.fromCharCode.apply(String, chars);\r\n };\r\n\r\n /**\r\n * Decodes a binary encoded string, that is using only characters 0x00-0xFF as bytes, to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromBinary = function(str, littleEndian) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"str\");\r\n var i = 0,\r\n k = str.length,\r\n charCode,\r\n bb = new ByteBuffer(k, littleEndian);\r\n while (i<k) {\r\n charCode = str.charCodeAt(i);\r\n if (charCode > 0xff)\r\n throw RangeError(\"illegal char code: \"+charCode);\r\n bb.view[i++] = charCode;\r\n }\r\n bb.limit = k;\r\n return bb;\r\n };\r\n\r\n // encodings/debug\r\n\r\n /**\r\n * Encodes this ByteBuffer to a hex encoded string with marked offsets. Offset symbols are:\r\n * * `<` : offset,\r\n * * `'` : markedOffset,\r\n * * `>` : limit,\r\n * * `|` : offset and limit,\r\n * * `[` : offset and markedOffset,\r\n * * `]` : markedOffset and limit,\r\n * * `!` : offset, markedOffset and limit\r\n * @param {boolean=} columns If `true` returns two columns hex + ascii, defaults to `false`\r\n * @returns {string|!Array.<string>} Debug string or array of lines if `asArray = true`\r\n * @expose\r\n * @example `>00'01 02<03` contains four bytes with `limit=0, markedOffset=1, offset=3`\r\n * @example `00[01 02 03>` contains four bytes with `offset=markedOffset=1, limit=4`\r\n * @example `00|01 02 03` contains four bytes with `offset=limit=1, markedOffset=-1`\r\n * @example `|` contains zero bytes with `offset=limit=0, markedOffset=-1`\r\n */\r\n ByteBufferPrototype.toDebug = function(columns) {\r\n var i = -1,\r\n k = this.buffer.byteLength,\r\n b,\r\n hex = \"\",\r\n asc = \"\",\r\n out = \"\";\r\n while (i<k) {\r\n if (i !== -1) {\r\n b = this.view[i];\r\n if (b < 0x10) hex += \"0\"+b.toString(16).toUpperCase();\r\n else hex += b.toString(16).toUpperCase();\r\n if (columns)\r\n asc += b > 32 && b < 127 ? String.fromCharCode(b) : '.';\r\n }\r\n ++i;\r\n if (columns) {\r\n if (i > 0 && i % 16 === 0 && i !== k) {\r\n while (hex.length < 3*16+3) hex += \" \";\r\n out += hex+asc+\"\\n\";\r\n hex = asc = \"\";\r\n }\r\n }\r\n if (i === this.offset && i === this.limit)\r\n hex += i === this.markedOffset ? \"!\" : \"|\";\r\n else if (i === this.offset)\r\n hex += i === this.markedOffset ? \"[\" : \"<\";\r\n else if (i === this.limit)\r\n hex += i === this.markedOffset ? \"]\" : \">\";\r\n else\r\n hex += i === this.markedOffset ? \"'\" : (columns || (i !== 0 && i !== k) ? \" \" : \"\");\r\n }\r\n if (columns && hex !== \" \") {\r\n while (hex.length < 3*16+3)\r\n hex += \" \";\r\n out += hex + asc + \"\\n\";\r\n }\r\n return columns ? out : hex;\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string with marked offsets to a ByteBuffer.\r\n * @param {string} str Debug string to decode (not be generated with `columns = true`)\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n * @see ByteBuffer#toDebug\r\n */\r\n ByteBuffer.fromDebug = function(str, littleEndian, noAssert) {\r\n var k = str.length,\r\n bb = new ByteBuffer(((k+1)/3)|0, littleEndian, noAssert);\r\n var i = 0, j = 0, ch, b,\r\n rs = false, // Require symbol next\r\n ho = false, hm = false, hl = false, // Already has offset (ho), markedOffset (hm), limit (hl)?\r\n fail = false;\r\n while (i<k) {\r\n switch (ch = str.charAt(i++)) {\r\n case '!':\r\n if (!noAssert) {\r\n if (ho || hm || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = hl = true;\r\n }\r\n bb.offset = bb.markedOffset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '|':\r\n if (!noAssert) {\r\n if (ho || hl) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hl = true;\r\n }\r\n bb.offset = bb.limit = j;\r\n rs = false;\r\n break;\r\n case '[':\r\n if (!noAssert) {\r\n if (ho || hm) {\r\n fail = true;\r\n break;\r\n }\r\n ho = hm = true;\r\n }\r\n bb.offset = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '<':\r\n if (!noAssert) {\r\n if (ho) {\r\n fail = true;\r\n break;\r\n }\r\n ho = true;\r\n }\r\n bb.offset = j;\r\n rs = false;\r\n break;\r\n case ']':\r\n if (!noAssert) {\r\n if (hl || hm) {\r\n fail = true;\r\n break;\r\n }\r\n hl = hm = true;\r\n }\r\n bb.limit = bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case '>':\r\n if (!noAssert) {\r\n if (hl) {\r\n fail = true;\r\n break;\r\n }\r\n hl = true;\r\n }\r\n bb.limit = j;\r\n rs = false;\r\n break;\r\n case \"'\":\r\n if (!noAssert) {\r\n if (hm) {\r\n fail = true;\r\n break;\r\n }\r\n hm = true;\r\n }\r\n bb.markedOffset = j;\r\n rs = false;\r\n break;\r\n case ' ':\r\n rs = false;\r\n break;\r\n default:\r\n if (!noAssert) {\r\n if (rs) {\r\n fail = true;\r\n break;\r\n }\r\n }\r\n b = parseInt(ch+str.charAt(i++), 16);\r\n if (!noAssert) {\r\n if (isNaN(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Not a debug encoded string\");\r\n }\r\n bb.view[j++] = b;\r\n rs = true;\r\n }\r\n if (fail)\r\n throw TypeError(\"Illegal str: Invalid symbol at \"+i);\r\n }\r\n if (!noAssert) {\r\n if (!ho || !hl)\r\n throw TypeError(\"Illegal str: Missing offset or limit\");\r\n if (j<bb.buffer.byteLength)\r\n throw TypeError(\"Illegal str: Not a debug encoded string (is it hex?) \"+j+\" < \"+k);\r\n }\r\n return bb;\r\n };\r\n\r\n // encodings/hex\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents to a hex encoded string.\r\n * @param {number=} begin Offset to begin at. Defaults to {@link ByteBuffer#offset}.\r\n * @param {number=} end Offset to end at. Defaults to {@link ByteBuffer#limit}.\r\n * @returns {string} Hex encoded string\r\n * @expose\r\n */\r\n ByteBufferPrototype.toHex = function(begin, end) {\r\n begin = typeof begin === 'undefined' ? this.offset : begin;\r\n end = typeof end === 'undefined' ? this.limit : end;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var out = new Array(end - begin),\r\n b;\r\n while (begin < end) {\r\n b = this.view[begin++];\r\n if (b < 0x10)\r\n out.push(\"0\", b.toString(16));\r\n else out.push(b.toString(16));\r\n }\r\n return out.join('');\r\n };\r\n\r\n /**\r\n * Decodes a hex encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromHex = function(str, littleEndian, noAssert) {\r\n if (!noAssert) {\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n if (str.length % 2 !== 0)\r\n throw TypeError(\"Illegal str: Length not a multiple of 2\");\r\n }\r\n var k = str.length,\r\n bb = new ByteBuffer((k / 2) | 0, littleEndian),\r\n b;\r\n for (var i=0, j=0; i<k; i+=2) {\r\n b = parseInt(str.substring(i, i+2), 16);\r\n if (!noAssert)\r\n if (!isFinite(b) || b < 0 || b > 255)\r\n throw TypeError(\"Illegal str: Contains non-hex characters\");\r\n bb.view[j++] = b;\r\n }\r\n bb.limit = j;\r\n return bb;\r\n };\r\n\r\n // utfx-embeddable\r\n\r\n /**\r\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/utfx for details\r\n */\r\n var utfx = function() {\r\n \"use strict\";\r\n\r\n /**\r\n * utfx namespace.\r\n * @inner\r\n * @type {!Object.<string,*>}\r\n */\r\n var utfx = {};\r\n\r\n /**\r\n * Maximum valid code point.\r\n * @type {number}\r\n * @const\r\n */\r\n utfx.MAX_CODEPOINT = 0x10FFFF;\r\n\r\n /**\r\n * Encodes UTF8 code points to UTF8 bytes.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte\r\n */\r\n utfx.encodeUTF8 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src,\r\n src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp < 0x80)\r\n dst(cp&0x7F);\r\n else if (cp < 0x800)\r\n dst(((cp>>6)&0x1F)|0xC0),\r\n dst((cp&0x3F)|0x80);\r\n else if (cp < 0x10000)\r\n dst(((cp>>12)&0x0F)|0xE0),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n else\r\n dst(((cp>>18)&0x07)|0xF0),\r\n dst(((cp>>12)&0x3F)|0x80),\r\n dst(((cp>>6)&0x3F)|0x80),\r\n dst((cp&0x3F)|0x80);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Decodes UTF8 bytes to UTF8 code points.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each decoded code point.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\r\n * remaining bytes.\r\n */\r\n utfx.decodeUTF8 = function(src, dst) {\r\n var a, b, c, d, fail = function(b) {\r\n b = b.slice(0, b.indexOf(null));\r\n var err = Error(b.toString());\r\n err.name = \"TruncatedError\";\r\n err['bytes'] = b;\r\n throw err;\r\n };\r\n while ((a = src()) !== null) {\r\n if ((a&0x80) === 0)\r\n dst(a);\r\n else if ((a&0xE0) === 0xC0)\r\n ((b = src()) === null) && fail([a, b]),\r\n dst(((a&0x1F)<<6) | (b&0x3F));\r\n else if ((a&0xF0) === 0xE0)\r\n ((b=src()) === null || (c=src()) === null) && fail([a, b, c]),\r\n dst(((a&0x0F)<<12) | ((b&0x3F)<<6) | (c&0x3F));\r\n else if ((a&0xF8) === 0xF0)\r\n ((b=src()) === null || (c=src()) === null || (d=src()) === null) && fail([a, b, c ,d]),\r\n dst(((a&0x07)<<18) | ((b&0x3F)<<12) | ((c&0x3F)<<6) | (d&0x3F));\r\n else throw RangeError(\"Illegal starting byte: \"+a);\r\n }\r\n };\r\n\r\n /**\r\n * Converts UTF16 characters to UTF8 code points.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @param {!function(number)} dst Code points destination as a function successively called with each converted code\r\n * point.\r\n */\r\n utfx.UTF16toUTF8 = function(src, dst) {\r\n var c1, c2 = null;\r\n while (true) {\r\n if ((c1 = c2 !== null ? c2 : src()) === null)\r\n break;\r\n if (c1 >= 0xD800 && c1 <= 0xDFFF) {\r\n if ((c2 = src()) !== null) {\r\n if (c2 >= 0xDC00 && c2 <= 0xDFFF) {\r\n dst((c1-0xD800)*0x400+c2-0xDC00+0x10000);\r\n c2 = null; continue;\r\n }\r\n }\r\n }\r\n dst(c1);\r\n }\r\n if (c2 !== null) dst(c2);\r\n };\r\n\r\n /**\r\n * Converts UTF8 code points to UTF16 characters.\r\n * @param {(!function():number|null) | number} src Code points source, either as a function returning the next code point\r\n * respectively `null` if there are no more code points left or a single numeric code point.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a code point is out of range\r\n */\r\n utfx.UTF8toUTF16 = function(src, dst) {\r\n var cp = null;\r\n if (typeof src === 'number')\r\n cp = src, src = function() { return null; };\r\n while (cp !== null || (cp = src()) !== null) {\r\n if (cp <= 0xFFFF)\r\n dst(cp);\r\n else\r\n cp -= 0x10000,\r\n dst((cp>>10)+0xD800),\r\n dst((cp%0x400)+0xDC00);\r\n cp = null;\r\n }\r\n };\r\n\r\n /**\r\n * Converts and encodes UTF16 characters to UTF8 bytes.\r\n * @param {!function():number|null} src Characters source as a function returning the next char code respectively `null`\r\n * if there are no more characters left.\r\n * @param {!function(number)} dst Bytes destination as a function successively called with the next byte.\r\n */\r\n utfx.encodeUTF16toUTF8 = function(src, dst) {\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n utfx.encodeUTF8(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Decodes and converts UTF8 bytes to UTF16 characters.\r\n * @param {!function():number|null} src Bytes source as a function returning the next byte respectively `null` if there\r\n * are no more bytes left.\r\n * @param {!function(number)} dst Characters destination as a function successively called with each converted char code.\r\n * @throws {RangeError} If a starting byte is invalid in UTF8\r\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\r\n */\r\n utfx.decodeUTF8toUTF16 = function(src, dst) {\r\n utfx.decodeUTF8(src, function(cp) {\r\n utfx.UTF8toUTF16(cp, dst);\r\n });\r\n };\r\n\r\n /**\r\n * Calculates the byte length of an UTF8 code point.\r\n * @param {number} cp UTF8 code point\r\n * @returns {number} Byte length\r\n */\r\n utfx.calculateCodePoint = function(cp) {\r\n return (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\r\n * @param {(!function():number|null)} src Code points source as a function returning the next code point respectively\r\n * `null` if there are no more code points left.\r\n * @returns {number} The number of UTF8 bytes required\r\n */\r\n utfx.calculateUTF8 = function(src) {\r\n var cp, l=0;\r\n while ((cp = src()) !== null)\r\n l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n return l;\r\n };\r\n\r\n /**\r\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\r\n * @param {(!function():number|null)} src Characters source as a function returning the next char code respectively\r\n * `null` if there are no more characters left.\r\n * @returns {!Array.<number>} The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\r\n */\r\n utfx.calculateUTF16asUTF8 = function(src) {\r\n var n=0, l=0;\r\n utfx.UTF16toUTF8(src, function(cp) {\r\n ++n; l += (cp < 0x80) ? 1 : (cp < 0x800) ? 2 : (cp < 0x10000) ? 3 : 4;\r\n });\r\n return [n,l];\r\n };\r\n\r\n return utfx;\r\n }();\r\n\r\n // encodings/utf8\r\n\r\n /**\r\n * Encodes this ByteBuffer's contents between {@link ByteBuffer#offset} and {@link ByteBuffer#limit} to an UTF8 encoded\r\n * string.\r\n * @returns {string} Hex encoded string\r\n * @throws {RangeError} If `offset > limit`\r\n * @expose\r\n */\r\n ByteBufferPrototype.toUTF8 = function(begin, end) {\r\n if (typeof begin === 'undefined') begin = this.offset;\r\n if (typeof end === 'undefined') end = this.limit;\r\n if (!this.noAssert) {\r\n if (typeof begin !== 'number' || begin % 1 !== 0)\n throw TypeError(\"Illegal begin: Not an integer\");\n begin >>>= 0;\n if (typeof end !== 'number' || end % 1 !== 0)\n throw TypeError(\"Illegal end: Not an integer\");\n end >>>= 0;\n if (begin < 0 || begin > end || end > this.buffer.byteLength)\n throw RangeError(\"Illegal range: 0 <= \"+begin+\" <= \"+end+\" <= \"+this.buffer.byteLength);\n }\r\n var sd; try {\r\n utfx.decodeUTF8toUTF16(function() {\r\n return begin < end ? this.view[begin++] : null;\r\n }.bind(this), sd = stringDestination());\r\n } catch (e) {\r\n if (begin !== end)\r\n throw RangeError(\"Illegal range: Truncated data, \"+begin+\" != \"+end);\r\n }\r\n return sd();\r\n };\r\n\r\n /**\r\n * Decodes an UTF8 encoded string to a ByteBuffer.\r\n * @param {string} str String to decode\r\n * @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to\r\n * {@link ByteBuffer.DEFAULT_ENDIAN}.\r\n * @param {boolean=} noAssert Whether to skip assertions of offsets and values. Defaults to\r\n * {@link ByteBuffer.DEFAULT_NOASSERT}.\r\n * @returns {!ByteBuffer} ByteBuffer\r\n * @expose\r\n */\r\n ByteBuffer.fromUTF8 = function(str, littleEndian, noAssert) {\r\n if (!noAssert)\r\n if (typeof str !== 'string')\r\n throw TypeError(\"Illegal str: Not a string\");\r\n var bb = new ByteBuffer(utfx.calculateUTF16asUTF8(stringSource(str), true)[1], littleEndian, noAssert),\r\n i = 0;\r\n utfx.encodeUTF16toUTF8(stringSource(str), function(b) {\r\n bb.view[i++] = b;\r\n });\r\n bb.limit = i;\r\n return bb;\r\n };\r\n\r\n return ByteBuffer;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/bytebuffer/dist/bytebuffer.js\n// module id = 613\n// module chunks = 0 1","/*\r\n Copyright 2013 Daniel Wirtz <dcode@dcode.io>\r\n Copyright 2009 The Closure Library Authors. All Rights Reserved.\r\n\r\n Licensed under the Apache License, Version 2.0 (the \"License\");\r\n you may not use this file except in compliance with the License.\r\n You may obtain a copy of the License at\r\n\r\n http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n Unless required by applicable law or agreed to in writing, software\r\n distributed under the License is distributed on an \"AS-IS\" BASIS,\r\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n See the License for the specific language governing permissions and\r\n limitations under the License.\r\n */\r\n\r\n/**\r\n * @license long.js (c) 2013 Daniel Wirtz <dcode@dcode.io>\r\n * Released under the Apache License, Version 2.0\r\n * see: https://github.com/dcodeIO/long.js for details\r\n */\r\n(function(global, factory) {\r\n\r\n /* AMD */ if (typeof define === 'function' && define[\"amd\"])\r\n define([], factory);\r\n /* CommonJS */ else if (typeof require === 'function' && typeof module === \"object\" && module && module[\"exports\"])\r\n module[\"exports\"] = factory();\r\n /* Global */ else\r\n (global[\"dcodeIO\"] = global[\"dcodeIO\"] || {})[\"Long\"] = factory();\r\n\r\n})(this, function() {\r\n \"use strict\";\r\n\r\n /**\r\n * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\r\n * See the from* functions below for more convenient ways of constructing Longs.\r\n * @exports Long\r\n * @class A Long class for representing a 64 bit two's-complement integer value.\r\n * @param {number} low The low (signed) 32 bits of the long\r\n * @param {number} high The high (signed) 32 bits of the long\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @constructor\r\n */\r\n function Long(low, high, unsigned) {\r\n\r\n /**\r\n * The low 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.low = low | 0;\r\n\r\n /**\r\n * The high 32 bits as a signed value.\r\n * @type {number}\r\n */\r\n this.high = high | 0;\r\n\r\n /**\r\n * Whether unsigned or not.\r\n * @type {boolean}\r\n */\r\n this.unsigned = !!unsigned;\r\n }\r\n\r\n // The internal representation of a long is the two given signed, 32-bit values.\r\n // We use 32-bit pieces because these are the size of integers on which\r\n // Javascript performs bit-operations. For operations like addition and\r\n // multiplication, we split each number into 16 bit pieces, which can easily be\r\n // multiplied within Javascript's floating-point representation without overflow\r\n // or change in sign.\r\n //\r\n // In the algorithms below, we frequently reduce the negative case to the\r\n // positive case by negating the input(s) and then post-processing the result.\r\n // Note that we must ALWAYS check specially whether those values are MIN_VALUE\r\n // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\r\n // a positive number, it overflows back into a negative). Not handling this\r\n // case would often result in infinite recursion.\r\n //\r\n // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\r\n // methods on which they depend.\r\n\r\n /**\r\n * An indicator used to reliably determine if an object is a Long or not.\r\n * @type {boolean}\r\n * @const\r\n * @private\r\n */\r\n Long.prototype.__isLong__;\r\n\r\n Object.defineProperty(Long.prototype, \"__isLong__\", {\r\n value: true,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n\r\n /**\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n * @inner\r\n */\r\n function isLong(obj) {\r\n return (obj && obj[\"__isLong__\"]) === true;\r\n }\r\n\r\n /**\r\n * Tests if the specified object is a Long.\r\n * @function\r\n * @param {*} obj Object\r\n * @returns {boolean}\r\n */\r\n Long.isLong = isLong;\r\n\r\n /**\r\n * A cache of the Long representations of small integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var INT_CACHE = {};\r\n\r\n /**\r\n * A cache of the Long representations of small unsigned integer values.\r\n * @type {!Object}\r\n * @inner\r\n */\r\n var UINT_CACHE = {};\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromInt(value, unsigned) {\r\n var obj, cachedObj, cache;\r\n if (unsigned) {\r\n value >>>= 0;\r\n if (cache = (0 <= value && value < 256)) {\r\n cachedObj = UINT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, (value | 0) < 0 ? -1 : 0, true);\r\n if (cache)\r\n UINT_CACHE[value] = obj;\r\n return obj;\r\n } else {\r\n value |= 0;\r\n if (cache = (-128 <= value && value < 128)) {\r\n cachedObj = INT_CACHE[value];\r\n if (cachedObj)\r\n return cachedObj;\r\n }\r\n obj = fromBits(value, value < 0 ? -1 : 0, false);\r\n if (cache)\r\n INT_CACHE[value] = obj;\r\n return obj;\r\n }\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given 32 bit integer value.\r\n * @function\r\n * @param {number} value The 32 bit integer in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromInt = fromInt;\r\n\r\n /**\r\n * @param {number} value\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromNumber(value, unsigned) {\r\n if (isNaN(value) || !isFinite(value))\r\n return unsigned ? UZERO : ZERO;\r\n if (unsigned) {\r\n if (value < 0)\r\n return UZERO;\r\n if (value >= TWO_PWR_64_DBL)\r\n return MAX_UNSIGNED_VALUE;\r\n } else {\r\n if (value <= -TWO_PWR_63_DBL)\r\n return MIN_VALUE;\r\n if (value + 1 >= TWO_PWR_63_DBL)\r\n return MAX_VALUE;\r\n }\r\n if (value < 0)\r\n return fromNumber(-value, unsigned).neg();\r\n return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\r\n * @function\r\n * @param {number} value The number in question\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromNumber = fromNumber;\r\n\r\n /**\r\n * @param {number} lowBits\r\n * @param {number} highBits\r\n * @param {boolean=} unsigned\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromBits(lowBits, highBits, unsigned) {\r\n return new Long(lowBits, highBits, unsigned);\r\n }\r\n\r\n /**\r\n * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\r\n * assumed to use 32 bits.\r\n * @function\r\n * @param {number} lowBits The low 32 bits\r\n * @param {number} highBits The high 32 bits\r\n * @param {boolean=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromBits = fromBits;\r\n\r\n /**\r\n * @function\r\n * @param {number} base\r\n * @param {number} exponent\r\n * @returns {number}\r\n * @inner\r\n */\r\n var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\r\n\r\n /**\r\n * @param {string} str\r\n * @param {(boolean|number)=} unsigned\r\n * @param {number=} radix\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromString(str, unsigned, radix) {\r\n if (str.length === 0)\r\n throw Error('empty string');\r\n if (str === \"NaN\" || str === \"Infinity\" || str === \"+Infinity\" || str === \"-Infinity\")\r\n return ZERO;\r\n if (typeof unsigned === 'number') {\r\n // For goog.math.long compatibility\r\n radix = unsigned,\r\n unsigned = false;\r\n } else {\r\n unsigned = !! unsigned;\r\n }\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n\r\n var p;\r\n if ((p = str.indexOf('-')) > 0)\r\n throw Error('interior hyphen');\r\n else if (p === 0) {\r\n return fromString(str.substring(1), unsigned, radix).neg();\r\n }\r\n\r\n // Do several (8) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 8));\r\n\r\n var result = ZERO;\r\n for (var i = 0; i < str.length; i += 8) {\r\n var size = Math.min(8, str.length - i),\r\n value = parseInt(str.substring(i, i + size), radix);\r\n if (size < 8) {\r\n var power = fromNumber(pow_dbl(radix, size));\r\n result = result.mul(power).add(fromNumber(value));\r\n } else {\r\n result = result.mul(radixToPower);\r\n result = result.add(fromNumber(value));\r\n }\r\n }\r\n result.unsigned = unsigned;\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a Long representation of the given string, written using the specified radix.\r\n * @function\r\n * @param {string} str The textual representation of the Long\r\n * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to `false` for signed\r\n * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\r\n * @returns {!Long} The corresponding Long value\r\n */\r\n Long.fromString = fromString;\r\n\r\n /**\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\r\n * @returns {!Long}\r\n * @inner\r\n */\r\n function fromValue(val) {\r\n if (val /* is compatible */ instanceof Long)\r\n return val;\r\n if (typeof val === 'number')\r\n return fromNumber(val);\r\n if (typeof val === 'string')\r\n return fromString(val);\r\n // Throws for non-objects, converts non-instanceof Long:\r\n return fromBits(val.low, val.high, val.unsigned);\r\n }\r\n\r\n /**\r\n * Converts the specified value to a Long.\r\n * @function\r\n * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value\r\n * @returns {!Long}\r\n */\r\n Long.fromValue = fromValue;\r\n\r\n // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\r\n // no runtime penalty for these.\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_16_DBL = 1 << 16;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24_DBL = 1 << 24;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\r\n\r\n /**\r\n * @type {number}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\r\n\r\n /**\r\n * @type {!Long}\r\n * @const\r\n * @inner\r\n */\r\n var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ZERO = fromInt(0);\r\n\r\n /**\r\n * Signed zero.\r\n * @type {!Long}\r\n */\r\n Long.ZERO = ZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UZERO = fromInt(0, true);\r\n\r\n /**\r\n * Unsigned zero.\r\n * @type {!Long}\r\n */\r\n Long.UZERO = UZERO;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var ONE = fromInt(1);\r\n\r\n /**\r\n * Signed one.\r\n * @type {!Long}\r\n */\r\n Long.ONE = ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var UONE = fromInt(1, true);\r\n\r\n /**\r\n * Unsigned one.\r\n * @type {!Long}\r\n */\r\n Long.UONE = UONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var NEG_ONE = fromInt(-1);\r\n\r\n /**\r\n * Signed negative one.\r\n * @type {!Long}\r\n */\r\n Long.NEG_ONE = NEG_ONE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_VALUE = fromBits(0xFFFFFFFF|0, 0x7FFFFFFF|0, false);\r\n\r\n /**\r\n * Maximum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_VALUE = MAX_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF|0, 0xFFFFFFFF|0, true);\r\n\r\n /**\r\n * Maximum unsigned value.\r\n * @type {!Long}\r\n */\r\n Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\r\n\r\n /**\r\n * @type {!Long}\r\n * @inner\r\n */\r\n var MIN_VALUE = fromBits(0, 0x80000000|0, false);\r\n\r\n /**\r\n * Minimum signed value.\r\n * @type {!Long}\r\n */\r\n Long.MIN_VALUE = MIN_VALUE;\r\n\r\n /**\r\n * @alias Long.prototype\r\n * @inner\r\n */\r\n var LongPrototype = Long.prototype;\r\n\r\n /**\r\n * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\r\n * @returns {number}\r\n */\r\n LongPrototype.toInt = function toInt() {\r\n return this.unsigned ? this.low >>> 0 : this.low;\r\n };\r\n\r\n /**\r\n * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\r\n * @returns {number}\r\n */\r\n LongPrototype.toNumber = function toNumber() {\r\n if (this.unsigned)\r\n return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0);\r\n return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\r\n };\r\n\r\n /**\r\n * Converts the Long to a string written in the specified radix.\r\n * @param {number=} radix Radix (2-36), defaults to 10\r\n * @returns {string}\r\n * @override\r\n * @throws {RangeError} If `radix` is out of range\r\n */\r\n LongPrototype.toString = function toString(radix) {\r\n radix = radix || 10;\r\n if (radix < 2 || 36 < radix)\r\n throw RangeError('radix');\r\n if (this.isZero())\r\n return '0';\r\n if (this.isNegative()) { // Unsigned Longs are never negative\r\n if (this.eq(MIN_VALUE)) {\r\n // We need to change the Long value before it can be negated, so we remove\r\n // the bottom-most digit in this base and then recurse to do the rest.\r\n var radixLong = fromNumber(radix),\r\n div = this.div(radixLong),\r\n rem1 = div.mul(radixLong).sub(this);\r\n return div.toString(radix) + rem1.toInt().toString(radix);\r\n } else\r\n return '-' + this.neg().toString(radix);\r\n }\r\n\r\n // Do several (6) digits each time through the loop, so as to\r\n // minimize the calls to the very expensive emulated div.\r\n var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\r\n rem = this;\r\n var result = '';\r\n while (true) {\r\n var remDiv = rem.div(radixToPower),\r\n intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\r\n digits = intval.toString(radix);\r\n rem = remDiv;\r\n if (rem.isZero())\r\n return digits + result;\r\n else {\r\n while (digits.length < 6)\r\n digits = '0' + digits;\r\n result = '' + digits + result;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as a signed integer.\r\n * @returns {number} Signed high bits\r\n */\r\n LongPrototype.getHighBits = function getHighBits() {\r\n return this.high;\r\n };\r\n\r\n /**\r\n * Gets the high 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned high bits\r\n */\r\n LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\r\n return this.high >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as a signed integer.\r\n * @returns {number} Signed low bits\r\n */\r\n LongPrototype.getLowBits = function getLowBits() {\r\n return this.low;\r\n };\r\n\r\n /**\r\n * Gets the low 32 bits as an unsigned integer.\r\n * @returns {number} Unsigned low bits\r\n */\r\n LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\r\n return this.low >>> 0;\r\n };\r\n\r\n /**\r\n * Gets the number of bits needed to represent the absolute value of this Long.\r\n * @returns {number}\r\n */\r\n LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\r\n if (this.isNegative()) // Unsigned Longs are never negative\r\n return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\r\n var val = this.high != 0 ? this.high : this.low;\r\n for (var bit = 31; bit > 0; bit--)\r\n if ((val & (1 << bit)) != 0)\r\n break;\r\n return this.high != 0 ? bit + 33 : bit + 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals zero.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isZero = function isZero() {\r\n return this.high === 0 && this.low === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is negative.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isNegative = function isNegative() {\r\n return !this.unsigned && this.high < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is positive.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isPositive = function isPositive() {\r\n return this.unsigned || this.high >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is odd.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isOdd = function isOdd() {\r\n return (this.low & 1) === 1;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is even.\r\n * @returns {boolean}\r\n */\r\n LongPrototype.isEven = function isEven() {\r\n return (this.low & 1) === 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.equals = function equals(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1)\r\n return false;\r\n return this.high === other.high && this.low === other.low;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.eq = LongPrototype.equals;\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.notEquals = function notEquals(other) {\r\n return !this.eq(/* validates */ other);\r\n };\r\n\r\n /**\r\n * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.neq = LongPrototype.notEquals;\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThan = function lessThan(other) {\r\n return this.comp(/* validates */ other) < 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lt = LongPrototype.lessThan;\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\r\n return this.comp(/* validates */ other) <= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.lte = LongPrototype.lessThanOrEqual;\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThan = function greaterThan(other) {\r\n return this.comp(/* validates */ other) > 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gt = LongPrototype.greaterThan;\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\r\n return this.comp(/* validates */ other) >= 0;\r\n };\r\n\r\n /**\r\n * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {boolean}\r\n */\r\n LongPrototype.gte = LongPrototype.greaterThanOrEqual;\r\n\r\n /**\r\n * Compares this Long's value with the specified's.\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.compare = function compare(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n if (this.eq(other))\r\n return 0;\r\n var thisNeg = this.isNegative(),\r\n otherNeg = other.isNegative();\r\n if (thisNeg && !otherNeg)\r\n return -1;\r\n if (!thisNeg && otherNeg)\r\n return 1;\r\n // At this point the sign bits are the same\r\n if (!this.unsigned)\r\n return this.sub(other).isNegative() ? -1 : 1;\r\n // Both are positive if at least one is unsigned\r\n return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1;\r\n };\r\n\r\n /**\r\n * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\r\n * @function\r\n * @param {!Long|number|string} other Other value\r\n * @returns {number} 0 if they are the same, 1 if the this is greater and -1\r\n * if the given one is greater\r\n */\r\n LongPrototype.comp = LongPrototype.compare;\r\n\r\n /**\r\n * Negates this Long's value.\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.negate = function negate() {\r\n if (!this.unsigned && this.eq(MIN_VALUE))\r\n return MIN_VALUE;\r\n return this.not().add(ONE);\r\n };\r\n\r\n /**\r\n * Negates this Long's value. This is an alias of {@link Long#negate}.\r\n * @function\r\n * @returns {!Long} Negated Long\r\n */\r\n LongPrototype.neg = LongPrototype.negate;\r\n\r\n /**\r\n * Returns the sum of this and the specified Long.\r\n * @param {!Long|number|string} addend Addend\r\n * @returns {!Long} Sum\r\n */\r\n LongPrototype.add = function add(addend) {\r\n if (!isLong(addend))\r\n addend = fromValue(addend);\r\n\r\n // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = addend.high >>> 16;\r\n var b32 = addend.high & 0xFFFF;\r\n var b16 = addend.low >>> 16;\r\n var b00 = addend.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 + b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 + b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 + b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 + b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long.\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.subtract = function subtract(subtrahend) {\r\n if (!isLong(subtrahend))\r\n subtrahend = fromValue(subtrahend);\r\n return this.add(subtrahend.neg());\r\n };\r\n\r\n /**\r\n * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\r\n * @function\r\n * @param {!Long|number|string} subtrahend Subtrahend\r\n * @returns {!Long} Difference\r\n */\r\n LongPrototype.sub = LongPrototype.subtract;\r\n\r\n /**\r\n * Returns the product of this and the specified Long.\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.multiply = function multiply(multiplier) {\r\n if (this.isZero())\r\n return ZERO;\r\n if (!isLong(multiplier))\r\n multiplier = fromValue(multiplier);\r\n if (multiplier.isZero())\r\n return ZERO;\r\n if (this.eq(MIN_VALUE))\r\n return multiplier.isOdd() ? MIN_VALUE : ZERO;\r\n if (multiplier.eq(MIN_VALUE))\r\n return this.isOdd() ? MIN_VALUE : ZERO;\r\n\r\n if (this.isNegative()) {\r\n if (multiplier.isNegative())\r\n return this.neg().mul(multiplier.neg());\r\n else\r\n return this.neg().mul(multiplier).neg();\r\n } else if (multiplier.isNegative())\r\n return this.mul(multiplier.neg()).neg();\r\n\r\n // If both longs are small, use float multiplication\r\n if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\r\n return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned);\r\n\r\n // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\r\n // We can skip products that would overflow.\r\n\r\n var a48 = this.high >>> 16;\r\n var a32 = this.high & 0xFFFF;\r\n var a16 = this.low >>> 16;\r\n var a00 = this.low & 0xFFFF;\r\n\r\n var b48 = multiplier.high >>> 16;\r\n var b32 = multiplier.high & 0xFFFF;\r\n var b16 = multiplier.low >>> 16;\r\n var b00 = multiplier.low & 0xFFFF;\r\n\r\n var c48 = 0, c32 = 0, c16 = 0, c00 = 0;\r\n c00 += a00 * b00;\r\n c16 += c00 >>> 16;\r\n c00 &= 0xFFFF;\r\n c16 += a16 * b00;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c16 += a00 * b16;\r\n c32 += c16 >>> 16;\r\n c16 &= 0xFFFF;\r\n c32 += a32 * b00;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a16 * b16;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c32 += a00 * b32;\r\n c48 += c32 >>> 16;\r\n c32 &= 0xFFFF;\r\n c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\r\n c48 &= 0xFFFF;\r\n return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\r\n * @function\r\n * @param {!Long|number|string} multiplier Multiplier\r\n * @returns {!Long} Product\r\n */\r\n LongPrototype.mul = LongPrototype.multiply;\r\n\r\n /**\r\n * Returns this Long divided by the specified. The result is signed if this Long is signed or\r\n * unsigned if this Long is unsigned.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.divide = function divide(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n if (divisor.isZero())\r\n throw Error('division by zero');\r\n if (this.isZero())\r\n return this.unsigned ? UZERO : ZERO;\r\n var approx, rem, res;\r\n if (!this.unsigned) {\r\n // This section is only relevant for signed longs and is derived from the\r\n // closure library as a whole.\r\n if (this.eq(MIN_VALUE)) {\r\n if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\r\n return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\r\n else if (divisor.eq(MIN_VALUE))\r\n return ONE;\r\n else {\r\n // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\r\n var halfThis = this.shr(1);\r\n approx = halfThis.div(divisor).shl(1);\r\n if (approx.eq(ZERO)) {\r\n return divisor.isNegative() ? ONE : NEG_ONE;\r\n } else {\r\n rem = this.sub(divisor.mul(approx));\r\n res = approx.add(rem.div(divisor));\r\n return res;\r\n }\r\n }\r\n } else if (divisor.eq(MIN_VALUE))\r\n return this.unsigned ? UZERO : ZERO;\r\n if (this.isNegative()) {\r\n if (divisor.isNegative())\r\n return this.neg().div(divisor.neg());\r\n return this.neg().div(divisor).neg();\r\n } else if (divisor.isNegative())\r\n return this.div(divisor.neg()).neg();\r\n res = ZERO;\r\n } else {\r\n // The algorithm below has not been made for unsigned longs. It's therefore\r\n // required to take special care of the MSB prior to running it.\r\n if (!divisor.unsigned)\r\n divisor = divisor.toUnsigned();\r\n if (divisor.gt(this))\r\n return UZERO;\r\n if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true\r\n return UONE;\r\n res = UZERO;\r\n }\r\n\r\n // Repeat the following until the remainder is less than other: find a\r\n // floating-point that approximates remainder / other *from below*, add this\r\n // into the result, and subtract it from the remainder. It is critical that\r\n // the approximate value is less than or equal to the real value so that the\r\n // remainder never becomes negative.\r\n rem = this;\r\n while (rem.gte(divisor)) {\r\n // Approximate the result of division. This may be a little greater or\r\n // smaller than the actual value.\r\n approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\r\n\r\n // We will tweak the approximate result by changing it in the 48-th digit or\r\n // the smallest non-fractional digit, whichever is larger.\r\n var log2 = Math.ceil(Math.log(approx) / Math.LN2),\r\n delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48),\r\n\r\n // Decrease the approximation until it is smaller than the remainder. Note\r\n // that if it is too large, the product overflows and is negative.\r\n approxRes = fromNumber(approx),\r\n approxRem = approxRes.mul(divisor);\r\n while (approxRem.isNegative() || approxRem.gt(rem)) {\r\n approx -= delta;\r\n approxRes = fromNumber(approx, this.unsigned);\r\n approxRem = approxRes.mul(divisor);\r\n }\r\n\r\n // We know the answer can't be zero... and actually, zero would cause\r\n // infinite recursion since we would make no progress.\r\n if (approxRes.isZero())\r\n approxRes = ONE;\r\n\r\n res = res.add(approxRes);\r\n rem = rem.sub(approxRem);\r\n }\r\n return res;\r\n };\r\n\r\n /**\r\n * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Quotient\r\n */\r\n LongPrototype.div = LongPrototype.divide;\r\n\r\n /**\r\n * Returns this Long modulo the specified.\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.modulo = function modulo(divisor) {\r\n if (!isLong(divisor))\r\n divisor = fromValue(divisor);\r\n return this.sub(this.div(divisor).mul(divisor));\r\n };\r\n\r\n /**\r\n * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\r\n * @function\r\n * @param {!Long|number|string} divisor Divisor\r\n * @returns {!Long} Remainder\r\n */\r\n LongPrototype.mod = LongPrototype.modulo;\r\n\r\n /**\r\n * Returns the bitwise NOT of this Long.\r\n * @returns {!Long}\r\n */\r\n LongPrototype.not = function not() {\r\n return fromBits(~this.low, ~this.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise AND of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.and = function and(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low & other.low, this.high & other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise OR of this Long and the specified.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.or = function or(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low | other.low, this.high | other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns the bitwise XOR of this Long and the given one.\r\n * @param {!Long|number|string} other Other Long\r\n * @returns {!Long}\r\n */\r\n LongPrototype.xor = function xor(other) {\r\n if (!isLong(other))\r\n other = fromValue(other);\r\n return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftLeft = function shiftLeft(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned);\r\n else\r\n return fromBits(0, this.low << (numBits - 32), this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shl = LongPrototype.shiftLeft;\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRight = function shiftRight(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n if ((numBits &= 63) === 0)\r\n return this;\r\n else if (numBits < 32)\r\n return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned);\r\n else\r\n return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned);\r\n };\r\n\r\n /**\r\n * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shr = LongPrototype.shiftRight;\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount.\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\r\n if (isLong(numBits))\r\n numBits = numBits.toInt();\r\n numBits &= 63;\r\n if (numBits === 0)\r\n return this;\r\n else {\r\n var high = this.high;\r\n if (numBits < 32) {\r\n var low = this.low;\r\n return fromBits((low >>> numBits) | (high << (32 - numBits)), high >>> numBits, this.unsigned);\r\n } else if (numBits === 32)\r\n return fromBits(high, 0, this.unsigned);\r\n else\r\n return fromBits(high >>> (numBits - 32), 0, this.unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\r\n * @function\r\n * @param {number|!Long} numBits Number of bits\r\n * @returns {!Long} Shifted Long\r\n */\r\n LongPrototype.shru = LongPrototype.shiftRightUnsigned;\r\n\r\n /**\r\n * Converts this Long to signed.\r\n * @returns {!Long} Signed long\r\n */\r\n LongPrototype.toSigned = function toSigned() {\r\n if (!this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, false);\r\n };\r\n\r\n /**\r\n * Converts this Long to unsigned.\r\n * @returns {!Long} Unsigned long\r\n */\r\n LongPrototype.toUnsigned = function toUnsigned() {\r\n if (this.unsigned)\r\n return this;\r\n return fromBits(this.low, this.high, true);\r\n };\r\n\r\n /**\r\n * Converts this Long to its byte representation.\r\n * @param {boolean=} le Whether little or big endian, defaults to big endian\r\n * @returns {!Array.<number>} Byte representation\r\n */\r\n LongPrototype.toBytes = function(le) {\r\n return le ? this.toBytesLE() : this.toBytesBE();\r\n }\r\n\r\n /**\r\n * Converts this Long to its little endian byte representation.\r\n * @returns {!Array.<number>} Little endian byte representation\r\n */\r\n LongPrototype.toBytesLE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n lo & 0xff,\r\n (lo >>> 8) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 24) & 0xff,\r\n hi & 0xff,\r\n (hi >>> 8) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 24) & 0xff\r\n ];\r\n }\r\n\r\n /**\r\n * Converts this Long to its big endian byte representation.\r\n * @returns {!Array.<number>} Big endian byte representation\r\n */\r\n LongPrototype.toBytesBE = function() {\r\n var hi = this.high,\r\n lo = this.low;\r\n return [\r\n (hi >>> 24) & 0xff,\r\n (hi >>> 16) & 0xff,\r\n (hi >>> 8) & 0xff,\r\n hi & 0xff,\r\n (lo >>> 24) & 0xff,\r\n (lo >>> 16) & 0xff,\r\n (lo >>> 8) & 0xff,\r\n lo & 0xff\r\n ];\r\n }\r\n\r\n return Long;\r\n});\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/long/dist/long.js\n// module id = 614\n// module chunks = 0 1","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/leancloud-realtime/node_modules/eventemitter3/index.js","module.exports = require(\"regenerator-runtime\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/regenerator/index.js\n// module id = 617\n// module chunks = 0 1","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\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 function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\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 exports.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 GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\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 define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.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 exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\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 exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\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 PromiseImpl.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 PromiseImpl.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.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(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 exports.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 exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.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 // Note: [\"return\"] must be used for ES3 parsing compatibility.\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 define(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 exports.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 exports.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 // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/regenerator-runtime/runtime.js\n// module id = 618\n// module chunks = 0 1","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/asyncToGenerator.js\n// module id = 619\n// module chunks = 0 1","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toConsumableArray.js\n// module id = 620\n// module chunks = 0 1","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js\n// module id = 621\n// module chunks = 0 1","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableSpread.js\n// module id = 622\n// module chunks = 0 1","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/defineProperty.js\n// module id = 623\n// module chunks = 0 1","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\n// module id = 624\n// module chunks = 0 1","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js\n// module id = 625\n// module chunks = 0 1","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/assertThisInitialized.js\n// module id = 626\n// module chunks = 0 1","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/inheritsLoose.js\n// module id = 627\n// module chunks = 0 1","var arrayShuffle = require('./_arrayShuffle'),\n baseShuffle = require('./_baseShuffle'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\nfunction shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n}\n\nmodule.exports = shuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/shuffle.js\n// module id = 628\n// module chunks = 0 1","var copyArray = require('./_copyArray'),\n shuffleSelf = require('./_shuffleSelf');\n\n/**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n}\n\nmodule.exports = arrayShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayShuffle.js\n// module id = 629\n// module chunks = 0 1","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_copyArray.js\n// module id = 630\n// module chunks = 0 1","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor,\n nativeRandom = Math.random;\n\n/**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\nfunction baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n}\n\nmodule.exports = baseRandom;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseRandom.js\n// module id = 631\n// module chunks = 0 1","var shuffleSelf = require('./_shuffleSelf'),\n values = require('./values');\n\n/**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\nfunction baseShuffle(collection) {\n return shuffleSelf(values(collection));\n}\n\nmodule.exports = baseShuffle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseShuffle.js\n// module id = 632\n// module chunks = 0 1","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseValues.js\n// module id = 633\n// module chunks = 0 1","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayMap.js\n// module id = 634\n// module chunks = 0 1","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keys.js\n// module id = 635\n// module chunks = 0 1","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayLikeKeys.js\n// module id = 636\n// module chunks = 0 1","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseTimes.js\n// module id = 637\n// module chunks = 0 1","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArguments.js\n// module id = 638\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsArguments.js\n// module id = 639\n// module chunks = 0 1","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = 640\n// module chunks = 0 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = 641\n// module chunks = 0 1","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isBuffer.js\n// module id = 642\n// module chunks = 0 1","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubFalse.js\n// module id = 643\n// module chunks = 0 1","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = 644\n// module chunks = 0 1","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isTypedArray.js\n// module id = 645\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsTypedArray.js\n// module id = 646\n// module chunks = 0 1","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUnary.js\n// module id = 647\n// module chunks = 0 1","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nodeUtil.js\n// module id = 648\n// module chunks = 0 1","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeys.js\n// module id = 649\n// module chunks = 0 1","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isPrototype.js\n// module id = 650\n// module chunks = 0 1","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeys.js\n// module id = 651\n// module chunks = 0 1","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLike.js\n// module id = 652\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = 653\n// module chunks = 0 1","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = 654\n// module chunks = 0 1","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}\n\nmodule.exports = _toArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/toArray.js\n// module id = 655\n// module chunks = 0 1","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/arrayWithHoles.js\n// module id = 656\n// module chunks = 0 1","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/nonIterableRest.js\n// module id = 657\n// module chunks = 0 1","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/createClass.js\n// module id = 658\n// module chunks = 0 1","function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nmodule.exports = _applyDecoratedDescriptor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js\n// module id = 659\n// module chunks = 0 1","/*\n\n Javascript State Machine Library - https://github.com/jakesgordon/javascript-state-machine\n\n Copyright (c) 2012, 2013, 2014, 2015, Jake Gordon and contributors\n Released under the MIT license - https://github.com/jakesgordon/javascript-state-machine/blob/master/LICENSE\n\n*/\n\n(function () {\n\n var StateMachine = {\n\n //---------------------------------------------------------------------------\n\n VERSION: \"2.4.0\",\n\n //---------------------------------------------------------------------------\n\n Result: {\n SUCCEEDED: 1, // the event transitioned successfully from one state to another\n NOTRANSITION: 2, // the event was successfull but no state transition was necessary\n CANCELLED: 3, // the event was cancelled by the caller in a beforeEvent callback\n PENDING: 4 // the event is asynchronous and the caller is in control of when the transition occurs\n },\n\n Error: {\n INVALID_TRANSITION: 100, // caller tried to fire an event that was innapropriate in the current state\n PENDING_TRANSITION: 200, // caller tried to fire an event while an async transition was still pending\n INVALID_CALLBACK: 300 // caller provided callback function threw an exception\n },\n\n WILDCARD: '*',\n ASYNC: 'async',\n\n //---------------------------------------------------------------------------\n\n create: function(cfg, target) {\n\n var initial = (typeof cfg.initial == 'string') ? { state: cfg.initial } : cfg.initial; // allow for a simple string, or an object with { state: 'foo', event: 'setup', defer: true|false }\n var terminal = cfg.terminal || cfg['final'];\n var fsm = target || cfg.target || {};\n var events = cfg.events || [];\n var callbacks = cfg.callbacks || {};\n var map = {}; // track state transitions allowed for an event { event: { from: [ to ] } }\n var transitions = {}; // track events allowed from a state { state: [ event ] }\n\n var add = function(e) {\n var from = Array.isArray(e.from) ? e.from : (e.from ? [e.from] : [StateMachine.WILDCARD]); // allow 'wildcard' transition if 'from' is not specified\n map[e.name] = map[e.name] || {};\n for (var n = 0 ; n < from.length ; n++) {\n transitions[from[n]] = transitions[from[n]] || [];\n transitions[from[n]].push(e.name);\n\n map[e.name][from[n]] = e.to || from[n]; // allow no-op transition if 'to' is not specified\n }\n if (e.to)\n transitions[e.to] = transitions[e.to] || [];\n };\n\n if (initial) {\n initial.event = initial.event || 'startup';\n add({ name: initial.event, from: 'none', to: initial.state });\n }\n\n for(var n = 0 ; n < events.length ; n++)\n add(events[n]);\n\n for(var name in map) {\n if (map.hasOwnProperty(name))\n fsm[name] = StateMachine.buildEvent(name, map[name]);\n }\n\n for(var name in callbacks) {\n if (callbacks.hasOwnProperty(name))\n fsm[name] = callbacks[name]\n }\n\n fsm.current = 'none';\n fsm.is = function(state) { return Array.isArray(state) ? (state.indexOf(this.current) >= 0) : (this.current === state); };\n fsm.can = function(event) { return !this.transition && (map[event] !== undefined) && (map[event].hasOwnProperty(this.current) || map[event].hasOwnProperty(StateMachine.WILDCARD)); }\n fsm.cannot = function(event) { return !this.can(event); };\n fsm.transitions = function() { return (transitions[this.current] || []).concat(transitions[StateMachine.WILDCARD] || []); };\n fsm.isFinished = function() { return this.is(terminal); };\n fsm.error = cfg.error || function(name, from, to, args, error, msg, e) { throw e || msg; }; // default behavior when something unexpected happens is to throw an exception, but caller can override this behavior if desired (see github issue #3 and #17)\n fsm.states = function() { return Object.keys(transitions).sort() };\n\n if (initial && !initial.defer)\n fsm[initial.event]();\n\n return fsm;\n\n },\n\n //===========================================================================\n\n doCallback: function(fsm, func, name, from, to, args) {\n if (func) {\n try {\n return func.apply(fsm, [name, from, to].concat(args));\n }\n catch(e) {\n return fsm.error(name, from, to, args, StateMachine.Error.INVALID_CALLBACK, \"an exception occurred in a caller-provided callback function\", e);\n }\n }\n },\n\n beforeAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbeforeevent'], name, from, to, args); },\n afterAnyEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafterevent'] || fsm['onevent'], name, from, to, args); },\n leaveAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleavestate'], name, from, to, args); },\n enterAnyState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenterstate'] || fsm['onstate'], name, from, to, args); },\n changeState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onchangestate'], name, from, to, args); },\n\n beforeThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onbefore' + name], name, from, to, args); },\n afterThisEvent: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onafter' + name] || fsm['on' + name], name, from, to, args); },\n leaveThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onleave' + from], name, from, to, args); },\n enterThisState: function(fsm, name, from, to, args) { return StateMachine.doCallback(fsm, fsm['onenter' + to] || fsm['on' + to], name, from, to, args); },\n\n beforeEvent: function(fsm, name, from, to, args) {\n if ((false === StateMachine.beforeThisEvent(fsm, name, from, to, args)) ||\n (false === StateMachine.beforeAnyEvent( fsm, name, from, to, args)))\n return false;\n },\n\n afterEvent: function(fsm, name, from, to, args) {\n StateMachine.afterThisEvent(fsm, name, from, to, args);\n StateMachine.afterAnyEvent( fsm, name, from, to, args);\n },\n\n leaveState: function(fsm, name, from, to, args) {\n var specific = StateMachine.leaveThisState(fsm, name, from, to, args),\n general = StateMachine.leaveAnyState( fsm, name, from, to, args);\n if ((false === specific) || (false === general))\n return false;\n else if ((StateMachine.ASYNC === specific) || (StateMachine.ASYNC === general))\n return StateMachine.ASYNC;\n },\n\n enterState: function(fsm, name, from, to, args) {\n StateMachine.enterThisState(fsm, name, from, to, args);\n StateMachine.enterAnyState( fsm, name, from, to, args);\n },\n\n //===========================================================================\n\n buildEvent: function(name, map) {\n return function() {\n\n var from = this.current;\n var to = map[from] || (map[StateMachine.WILDCARD] != StateMachine.WILDCARD ? map[StateMachine.WILDCARD] : from) || from;\n var args = Array.prototype.slice.call(arguments); // turn arguments into pure array\n\n if (this.transition)\n return this.error(name, from, to, args, StateMachine.Error.PENDING_TRANSITION, \"event \" + name + \" inappropriate because previous transition did not complete\");\n\n if (this.cannot(name))\n return this.error(name, from, to, args, StateMachine.Error.INVALID_TRANSITION, \"event \" + name + \" inappropriate in current state \" + this.current);\n\n if (false === StateMachine.beforeEvent(this, name, from, to, args))\n return StateMachine.Result.CANCELLED;\n\n if (from === to) {\n StateMachine.afterEvent(this, name, from, to, args);\n return StateMachine.Result.NOTRANSITION;\n }\n\n // prepare a transition method for use EITHER lower down, or by caller if they want an async transition (indicated by an ASYNC return value from leaveState)\n var fsm = this;\n this.transition = function() {\n fsm.transition = null; // this method should only ever be called once\n fsm.current = to;\n StateMachine.enterState( fsm, name, from, to, args);\n StateMachine.changeState(fsm, name, from, to, args);\n StateMachine.afterEvent( fsm, name, from, to, args);\n return StateMachine.Result.SUCCEEDED;\n };\n this.transition.cancel = function() { // provide a way for caller to cancel async transition if desired (issue #22)\n fsm.transition = null;\n StateMachine.afterEvent(fsm, name, from, to, args);\n }\n\n var leave = StateMachine.leaveState(this, name, from, to, args);\n if (false === leave) {\n this.transition = null;\n return StateMachine.Result.CANCELLED;\n }\n else if (StateMachine.ASYNC === leave) {\n return StateMachine.Result.PENDING;\n }\n else {\n if (this.transition) // need to check in case user manually called transition() but forgot to return StateMachine.ASYNC\n return this.transition();\n }\n\n };\n }\n\n }; // StateMachine\n\n //===========================================================================\n\n //======\n // NODE\n //======\n if (typeof exports !== 'undefined') {\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = StateMachine;\n }\n exports.StateMachine = StateMachine;\n }\n //============\n // AMD/REQUIRE\n //============\n else if (typeof define === 'function' && define.amd) {\n define(function(require) { return StateMachine; });\n }\n //========\n // BROWSER\n //========\n else if (typeof window !== 'undefined') {\n window.StateMachine = StateMachine;\n }\n //===========\n // WEB WORKER\n //===========\n else if (typeof self !== 'undefined') {\n self.StateMachine = StateMachine;\n }\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/javascript-state-machine/state-machine.js\n// module id = 660\n// module chunks = 0 1","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime/helpers/typeof.js\n// module id = 661\n// module chunks = 0 1","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isPlainObject.js\n// module id = 662\n// module chunks = 0 1","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getPrototype.js\n// module id = 663\n// module chunks = 0 1","import { Protocals, _Promise, EventEmitter } from './realtime';\n\nconst { CommandType, GenericCommand, AckCommand } = Protocals;\n\nconst warn = error => console.warn(error.message);\n\nexport default class LiveQueryClient extends EventEmitter {\n constructor(appId, subscriptionId, connection) {\n super();\n this._appId = appId;\n this.id = subscriptionId;\n this._connection = connection;\n this._eventemitter = new EventEmitter();\n this._querys = new Set();\n }\n\n _send(cmd, ...args) {\n return this._connection.send(\n Object.assign(cmd, {\n appId: this._appId,\n installationId: this.id,\n service: 1,\n }),\n ...args\n );\n }\n\n _open() {\n return this._send(\n new GenericCommand({\n cmd: CommandType.login,\n })\n );\n }\n\n close() {\n const _ee = this._eventemitter;\n _ee.emit('beforeclose');\n return this._send(\n new GenericCommand({\n cmd: CommandType.logout,\n })\n ).then(() => _ee.emit('close'));\n }\n\n register(liveQuery) {\n this._querys.add(liveQuery);\n }\n\n deregister(liveQuery) {\n this._querys.delete(liveQuery);\n setTimeout(() => {\n if (!this._querys.size) this.close().catch(warn);\n }, 0);\n }\n\n _dispatchCommand(command) {\n if (command.cmd !== CommandType.data) {\n this.emit('unhandledmessage', command);\n return _Promise.resolve();\n }\n return this._dispatchDataCommand(command);\n }\n\n _dispatchDataCommand({ dataMessage: { ids, msg } }) {\n this.emit('message', msg.map(({ data }) => JSON.parse(data)));\n // send ack\n const command = new GenericCommand({\n cmd: CommandType.ack,\n ackMessage: new AckCommand({\n ids,\n }),\n });\n return this._send(command, false).catch(warn);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ../src/live-query-client.js","import { _Promise } from './realtime';\nimport LiveQueryClient from './live-query-client';\n\nconst finalize = callback => [\n // eslint-disable-next-line no-sequences\n value => (callback(), value),\n error => {\n callback();\n throw error;\n },\n];\n\nconst onRealtimeCreate = realtime => {\n /* eslint-disable no-param-reassign */\n realtime._liveQueryClients = {};\n realtime.createLiveQueryClient = subscriptionId => {\n if (realtime._liveQueryClients[subscriptionId] !== undefined) {\n return _Promise.resolve(realtime._liveQueryClients[subscriptionId]);\n }\n const promise = realtime\n ._open()\n .then(connection => {\n const client = new LiveQueryClient(\n realtime._options.appId,\n subscriptionId,\n connection\n );\n connection.on('reconnect', () =>\n client\n ._open()\n .then(\n () => client.emit('reconnect'),\n error => client.emit('reconnecterror', error)\n )\n );\n client._eventemitter.on(\n 'beforeclose',\n () => {\n delete realtime._liveQueryClients[client.id];\n },\n realtime\n );\n client._eventemitter.on(\n 'close',\n () => {\n realtime._deregister(client);\n },\n realtime\n );\n return client._open().then(() => {\n realtime._liveQueryClients[client.id] = client;\n realtime._register(client);\n return client;\n });\n })\n .then(\n ...finalize(() => {\n if (realtime._deregisterPending) realtime._deregisterPending(promise);\n })\n );\n realtime._liveQueryClients[subscriptionId] = promise;\n if (realtime._registerPending) realtime._registerPending(promise);\n return promise;\n };\n /* eslint-enable no-param-reassign */\n};\n\nconst beforeCommandDispatch = (command, realtime) => {\n const isLiveQueryCommand = command.installationId && command.service === 1;\n if (!isLiveQueryCommand) return true;\n const targetClient = realtime._liveQueryClients[command.installationId];\n if (targetClient) {\n targetClient._dispatchCommand(command).catch(error => console.warn(error));\n } else {\n console.warn(\n 'Unexpected message received without any live client match: %O',\n command\n );\n }\n return false;\n};\n\n// eslint-disable-next-line import/prefer-default-export\nexport const LiveQueryPlugin = {\n name: 'leancloud-realtime-plugin-live-query',\n onRealtimeCreate,\n beforeCommandDispatch,\n};\n\n\n\n// WEBPACK FOOTER //\n// ../src/index.js","module.exports = require(\"core-js-pure/features/is-iterable\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs3/core-js/is-iterable.js\n// module id = 665\n// module chunks = 0 1","module.exports = require('../full/is-iterable');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/features/is-iterable.js\n// module id = 666\n// module chunks = 0 1","var parent = require('../actual/is-iterable');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/full/is-iterable.js\n// module id = 667\n// module chunks = 0 1","var parent = require('../stable/is-iterable');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/actual/is-iterable.js\n// module id = 668\n// module chunks = 0 1","var parent = require('../es/is-iterable');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/stable/is-iterable.js\n// module id = 669\n// module chunks = 0 1","require('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar isIterable = require('../internals/is-iterable');\n\nmodule.exports = isIterable;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/es/is-iterable.js\n// module id = 670\n// module chunks = 0 1","var classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar $Object = Object;\n\nmodule.exports = function (it) {\n var O = $Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || hasOwn(Iterators, classof(O));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/core-js-pure/internals/is-iterable.js\n// module id = 671\n// module chunks = 0 1"],"sourceRoot":""}
\No newline at end of file