{"ast":null,"code":"import \"core-js/modules/es.array.push.js\";\n/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return {\n value: false\n };\n}\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\nfunction returnTrue() {\n return true;\n}\nfunction wholeSlice(begin, end, size) {\n return (begin === 0 && !isNeg(begin) || size !== undefined && begin <= -size) && (end === undefined || size !== undefined && end >= size);\n}\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined ? defaultIndex : isNeg(index) ? size === Infinity ? size : Math.max(0, size + index) | 0 : size === undefined || size === index ? index : Math.min(size, index) | 0;\n}\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || value === 0 && 1 / value === -Infinity;\n}\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\nvar KeyedCollection = /*@__PURE__*/function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n if (Collection) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create(Collection && Collection.prototype);\n KeyedCollection.prototype.constructor = KeyedCollection;\n return KeyedCollection;\n}(Collection);\nvar IndexedCollection = /*@__PURE__*/function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n if (Collection) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create(Collection && Collection.prototype);\n IndexedCollection.prototype.constructor = IndexedCollection;\n return IndexedCollection;\n}(Collection);\nvar SetCollection = /*@__PURE__*/function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n if (Collection) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create(Collection && Collection.prototype);\n SetCollection.prototype.constructor = SetCollection;\n return SetCollection;\n}(Collection);\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\nIterator.prototype.toString = function toString() {\n return '[Iterator]';\n};\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? iteratorResult.value = value : iteratorResult = {\n value: value,\n done: false\n };\n return iteratorResult;\n}\nfunction iteratorDone() {\n return {\n value: undefined,\n done: true\n };\n}\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n return !!getIteratorFn(maybeIterable);\n}\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\nfunction getIteratorFn(iterable) {\n var iteratorFn = iterable && (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL] || iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n return value && typeof value === 'object' && Number.isInteger(value.length) && value.length >= 0 && (value.length === 0 ?\n // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1 :\n // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1));\n}\nvar Seq = /*@__PURE__*/function (Collection) {\n function Seq(value) {\n return value === undefined || value === null ? emptySequence() : isImmutable(value) ? value.toSeq() : seqFromValue(value);\n }\n if (Collection) Seq.__proto__ = Collection;\n Seq.prototype = Object.create(Collection && Collection.prototype);\n Seq.prototype.constructor = Seq;\n Seq.prototype.toSeq = function toSeq() {\n return this;\n };\n Seq.prototype.toString = function toString() {\n return this.__toString('Seq {', '}');\n };\n Seq.prototype.cacheResult = function cacheResult() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate(fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator(type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n return Seq;\n}(Collection);\nvar KeyedSeq = /*@__PURE__*/function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null ? emptySequence().toKeyedSeq() : isCollection(value) ? isKeyed(value) ? value.toSeq() : value.fromEntrySeq() : isRecord(value) ? value.toSeq() : keyedSeqFromValue(value);\n }\n if (Seq) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create(Seq && Seq.prototype);\n KeyedSeq.prototype.constructor = KeyedSeq;\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq() {\n return this;\n };\n return KeyedSeq;\n}(Seq);\nvar IndexedSeq = /*@__PURE__*/function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null ? emptySequence() : isCollection(value) ? isKeyed(value) ? value.entrySeq() : value.toIndexedSeq() : isRecord(value) ? value.toSeq().entrySeq() : indexedSeqFromValue(value);\n }\n if (Seq) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create(Seq && Seq.prototype);\n IndexedSeq.prototype.constructor = IndexedSeq;\n IndexedSeq.of = function of( /*...values*/\n ) {\n return IndexedSeq(arguments);\n };\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq() {\n return this;\n };\n IndexedSeq.prototype.toString = function toString() {\n return this.__toString('Seq [', ']');\n };\n return IndexedSeq;\n}(Seq);\nvar SetSeq = /*@__PURE__*/function (Seq) {\n function SetSeq(value) {\n return (isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)).toSetSeq();\n }\n if (Seq) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create(Seq && Seq.prototype);\n SetSeq.prototype.constructor = SetSeq;\n SetSeq.of = function of( /*...values*/\n ) {\n return SetSeq(arguments);\n };\n SetSeq.prototype.toSetSeq = function toSetSeq() {\n return this;\n };\n return SetSeq;\n}(Seq);\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n if (IndexedSeq) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n ArraySeq.prototype.constructor = ArraySeq;\n ArraySeq.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n ArraySeq.prototype.__iterate = function __iterate(fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n ArraySeq.prototype.__iterator = function __iterator(type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n return ArraySeq;\n}(IndexedSeq);\nvar ObjectSeq = /*@__PURE__*/function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n if (KeyedSeq) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create(KeyedSeq && KeyedSeq.prototype);\n ObjectSeq.prototype.constructor = ObjectSeq;\n ObjectSeq.prototype.get = function get(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n ObjectSeq.prototype.has = function has(key) {\n return hasOwnProperty.call(this._object, key);\n };\n ObjectSeq.prototype.__iterate = function __iterate(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n ObjectSeq.prototype.__iterator = function __iterator(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n return ObjectSeq;\n}(KeyedSeq);\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\nvar CollectionSeq = /*@__PURE__*/function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n if (IndexedSeq) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n CollectionSeq.prototype.constructor = CollectionSeq;\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n return CollectionSeq;\n}(IndexedSeq);\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError('Expected Array or collection object of [k, v] entries, or keyed object: ' + value);\n}\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError('Expected Array or collection object of values: ' + value);\n}\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value) ? seq.fromEntrySeq() : isKeysIterable(value) ? seq.toSetSeq() : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError('Expected Array or collection object of values, or keyed object: ' + value);\n}\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value) ? new ArraySeq(value) : hasIterator(value) ? new CollectionSeq(value) : undefined;\n}\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\nfunction isValueObject(maybeValue) {\n return Boolean(maybeValue && typeof maybeValue.equals === 'function' && typeof maybeValue.hashCode === 'function');\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || valueA !== valueA && valueB !== valueB) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' && typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || valueA !== valueA && valueB !== valueB) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(isValueObject(valueA) && isValueObject(valueB) && valueA.equals(valueB));\n}\nvar imul = typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ? Math.imul : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return c * d + ((a >>> 16) * d + c * (b >>> 16) << 16 >>> 0) | 0; // int\n};\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return i32 >>> 1 & 0x40000000 | i32 & 0xbfffffff;\n}\nvar defaultValueOf = Object.prototype.valueOf;\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n var v = valueOf(o);\n if (v == null) {\n return hashNullish(v);\n }\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(v) : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = 31 * hashed + string.charCodeAt(ii) | 0;\n }\n return smi(hashed);\n}\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n hashed = nextHash();\n symbolMap[sym] = hashed;\n return hashed;\n}\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n hashed = nextHash();\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed\n });\n } else if (obj.propertyIsEnumerable !== undefined && obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n}();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1:\n // Element\n return node.uniqueID;\n case 9:\n // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function' ? obj.valueOf(obj) : obj;\n}\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\nvar symbolMap = Object.create(null);\nvar _objHashUID = 0;\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\nvar ToKeyedSequence = /*@__PURE__*/function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n if (KeyedSeq) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create(KeyedSeq && KeyedSeq.prototype);\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n ToKeyedSequence.prototype.get = function get(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n ToKeyedSequence.prototype.has = function has(key) {\n return this._iter.has(key);\n };\n ToKeyedSequence.prototype.valueSeq = function valueSeq() {\n return this._iter.valueSeq();\n };\n ToKeyedSequence.prototype.reverse = function reverse() {\n var this$1$1 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () {\n return this$1$1._iter.toSeq().reverse();\n };\n }\n return reversedSequence;\n };\n ToKeyedSequence.prototype.map = function map(mapper, context) {\n var this$1$1 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () {\n return this$1$1._iter.toSeq().map(mapper, context);\n };\n }\n return mappedSequence;\n };\n ToKeyedSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n return this._iter.__iterate(function (v, k) {\n return fn(v, k, this$1$1);\n }, reverse);\n };\n ToKeyedSequence.prototype.__iterator = function __iterator(type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n return ToKeyedSequence;\n}(KeyedSeq);\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\nvar ToIndexedSequence = /*@__PURE__*/function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n if (IndexedSeq) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n ToIndexedSequence.prototype.includes = function includes(value) {\n return this._iter.includes(value);\n };\n ToIndexedSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(function (v) {\n return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1);\n }, reverse);\n };\n ToIndexedSequence.prototype.__iterator = function __iterator(type, reverse) {\n var this$1$1 = this;\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, reverse ? this$1$1.size - ++i : i++, step.value, step);\n });\n };\n return ToIndexedSequence;\n}(IndexedSeq);\nvar ToSetSequence = /*@__PURE__*/function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n if (SetSeq) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create(SetSeq && SetSeq.prototype);\n ToSetSequence.prototype.constructor = ToSetSequence;\n ToSetSequence.prototype.has = function has(key) {\n return this._iter.includes(key);\n };\n ToSetSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n return this._iter.__iterate(function (v) {\n return fn(v, v, this$1$1);\n }, reverse);\n };\n ToSetSequence.prototype.__iterator = function __iterator(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, step.value, step.value, step);\n });\n };\n return ToSetSequence;\n}(SetSeq);\nvar FromEntriesSequence = /*@__PURE__*/function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n if (KeyedSeq) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create(KeyedSeq && KeyedSeq.prototype);\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n FromEntriesSequence.prototype.entrySeq = function entrySeq() {\n return this._iter.toSeq();\n };\n FromEntriesSequence.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(indexedCollection ? entry.get(1) : entry[1], indexedCollection ? entry.get(0) : entry[0], this$1$1);\n }\n }, reverse);\n };\n FromEntriesSequence.prototype.__iterator = function __iterator(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(type, indexedCollection ? entry.get(0) : entry[0], indexedCollection ? entry.get(1) : entry[1], step);\n }\n }\n });\n };\n return FromEntriesSequence;\n}(KeyedSeq);\nToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough;\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () {\n return collection;\n };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () {\n return collection.reverse();\n };\n return reversedSequence;\n };\n flipSequence.has = function (key) {\n return collection.includes(key);\n };\n flipSequence.includes = function (key) {\n return collection.has(key);\n };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n return collection.__iterate(function (v, k) {\n return fn(k, v, this$1$1) !== false;\n }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES, reverse);\n };\n return flipSequence;\n}\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) {\n return collection.has(key);\n };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET ? notSetValue : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n return collection.__iterate(function (v, k, c) {\n return fn(mapper.call(context, v, k, c), k, this$1$1) !== false;\n }, reverse);\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(type, key, mapper.call(context, entry[1], key, collection), step);\n });\n };\n return mappedSequence;\n}\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () {\n return collection;\n };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () {\n return collection.flip();\n };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) {\n return collection.get(useKeys ? key : -1 - key, notSetValue);\n };\n reversedSequence.has = function (key) {\n return collection.has(useKeys ? key : -1 - key);\n };\n reversedSequence.includes = function (value) {\n return collection.includes(value);\n };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(function (v, k) {\n return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1);\n }, !reverse);\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(type, useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++, entry[1], step);\n });\n };\n return reversedSequence;\n}\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection) ? v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) {\n return a + 1;\n });\n });\n return groups.asImmutable();\n}\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), function (a) {\n return a = a || [], a.push(isKeyedIter ? [k, v] : v), a;\n });\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) {\n return reify(collection, coerce(arr));\n }).asImmutable();\n}\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(isKeyedIter ? [k, v] : v);\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) {\n return reify(collection, coerce(arr));\n });\n}\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : collection.size && sliceSize || undefined;\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ? collection.get(index + resolvedBegin, notSetValue) : notSetValue;\n };\n }\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1) !== false && iterations !== sliceSize;\n }\n });\n return iterations;\n };\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n return sliceSeq;\n}\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1);\n });\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection].concat(values).map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection ? keyedSeqFromValue(v) : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n }).filter(function (v) {\n return v.size !== 0;\n });\n if (iters.length === 0) {\n return collection;\n }\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === collection || isKeyedCollection && isKeyed(singleton) || isIndexed(collection) && isIndexed(singleton)) {\n return singleton;\n }\n }\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection.toSeq().map(function (v, k) {\n return coerce(mapper.call(context, v, k, collection));\n }).flatten(true);\n}\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n var iterations = 0;\n collection.__iterate(function (v) {\n return (!iterations || fn(separator, iterations++, this$1$1) !== false) && fn(v, iterations++, this$1$1) !== false;\n }, reverse);\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ? iteratorValue(type, iterations++, separator) : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection.toSeq().map(function (v, k) {\n return [k, v, index++, mapper ? mapper(v, k, collection) : v];\n }).valueSeq().toArray();\n entries.sort(function (a, b) {\n return comparator(a[3], b[3]) || a[2] - b[2];\n }).forEach(isKeyedCollection ? function (v, i) {\n entries[i].length = 2;\n } : function (v, i) {\n entries[i] = v[1];\n });\n return isKeyedCollection ? KeyedSeq(entries) : isIndexed(collection) ? IndexedSeq(entries) : SetSeq(entries);\n}\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection.toSeq().map(function (v, k) {\n return [v, mapper(v, k, collection)];\n }).reduce(function (a, b) {\n return maxCompare(comparator, a[1], b[1]) ? b : a;\n });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) {\n return maxCompare(comparator, a, b) ? b : a;\n });\n}\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return comp === 0 && b !== a && (b === undefined || b === null || b !== b) || comp > 0;\n}\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) {\n return i.size;\n });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(function (i) {\n return i = Collection(i), getIterator(reverse ? i.reverse() : i);\n });\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) {\n return i.next();\n });\n isDone = zipAll ? steps.every(function (s) {\n return s.done;\n }) : steps.some(function (s) {\n return s.done;\n });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(type, iterations++, zipper.apply(null, steps.map(function (s) {\n return s.value;\n })));\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\nfunction collectionClass(collection) {\n return isKeyed(collection) ? KeyedCollection : isIndexed(collection) ? IndexedCollection : SetCollection;\n}\nfunction makeSequence(collection) {\n return Object.create((isKeyed(collection) ? KeyedSeq : isIndexed(collection) ? IndexedSeq : SetSeq).prototype);\n}\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n if (a === undefined) {\n return 1;\n }\n if (b === undefined) {\n return -1;\n }\n return a > b ? 1 : a < b ? -1 : 0;\n}\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\nfunction invariant(condition, error) {\n if (!condition) {\n throw new Error(error);\n }\n}\nfunction assertNotInfinite(size) {\n invariant(size !== Infinity, 'Cannot perform this action with an infinite size.');\n}\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError('Invalid keyPath: expected Ordered Collection or Array: ' + keyPath);\n}\nvar toString = Object.prototype.toString;\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (!value || typeof value !== 'object' || toString.call(value) !== '[object Object]') {\n return false;\n }\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return typeof value === 'object' && (isImmutable(value) || Array.isArray(value) || isPlainObject(value));\n}\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\nfunction has(collection, key) {\n return isImmutable(collection) ? collection.has(key) : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection) ? collection.get(key, notSetValue) : !has(collection, key) ? notSetValue : typeof collection.get === 'function' ? collection.get(key) : collection[key];\n}\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot update non-data-structure value: ' + collection);\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError('Cannot update immutable value without .remove() method: ' + collection);\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot update non-data-structure value: ' + collection);\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError('Cannot update immutable value without .set() method: ' + collection);\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(isImmutable(collection), collection, coerceKeyPath(keyPath), 0, notSetValue, updater);\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\nfunction updateInDeeply(inImmutable, existing, keyPath, i, notSetValue, updater) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError('Cannot update within non-data-structure value in path [' + keyPath.slice(0, i).map(quoteString) + ']: ' + existing);\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting), nextExisting, keyPath, i + 1, notSetValue, updater);\n return nextUpdated === nextExisting ? existing : nextUpdated === NOT_SET ? remove(existing, key) : set(wasNotSet ? inImmutable ? emptyMap() : {} : existing, key, nextUpdated);\n}\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () {\n return value;\n });\n}\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () {\n return NOT_SET;\n });\n}\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1 ? key(this) : update$1(this, key, notSetValue, updater);\n}\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\nfunction merge$1() {\n var iters = [],\n len = arguments.length;\n while (len--) iters[len] = arguments[len];\n return mergeIntoKeyedWith(this, iters);\n}\nfunction mergeWith$1(merger) {\n var iters = [],\n len = arguments.length - 1;\n while (len-- > 0) iters[len] = arguments[len + 1];\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (collection.toSeq().size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) {\n return oldVal === NOT_SET ? value : merger(oldVal, value, key);\n });\n } : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\nfunction merge(collection) {\n var sources = [],\n len = arguments.length - 1;\n while (len-- > 0) sources[len] = arguments[len + 1];\n return mergeWithSources(collection, sources);\n}\nfunction mergeWith(merger, collection) {\n var sources = [],\n len = arguments.length - 2;\n while (len-- > 0) sources[len] = arguments[len + 2];\n return mergeWithSources(collection, sources, merger);\n}\nfunction mergeDeep$1(collection) {\n var sources = [],\n len = arguments.length - 1;\n while (len-- > 0) sources[len] = arguments[len + 1];\n return mergeDeepWithSources(collection, sources);\n}\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [],\n len = arguments.length - 2;\n while (len-- > 0) sources[len] = arguments[len + 2];\n return mergeDeepWithSources(collection, sources, merger);\n}\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError('Cannot merge into non-data-structure value: ' + collection);\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith ? collection.mergeWith.apply(collection, [merger].concat(sources)) : collection.merge ? collection.merge.apply(collection, sources) : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n } : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal = hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) && isDataStructure(newValue) && areMergeable(oldValue, newValue) ? mergeWithSources(oldValue, [newValue], deepMerger) : merger ? merger(oldValue, newValue, key) : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return isIndexed(oldSeq) === isIndexed(newSeq) && isKeyed(oldSeq) === isKeyed(newSeq);\n}\nfunction mergeDeep() {\n var iters = [],\n len = arguments.length;\n while (len--) iters[len] = arguments[len];\n return mergeDeepWithSources(this, iters);\n}\nfunction mergeDeepWith(merger) {\n var iters = [],\n len = arguments.length - 1;\n while (len-- > 0) iters[len] = arguments[len + 1];\n return mergeDeepWithSources(this, iters, merger);\n}\nfunction mergeIn(keyPath) {\n var iters = [],\n len = arguments.length - 1;\n while (len-- > 0) iters[len] = arguments[len + 1];\n return updateIn$1(this, keyPath, emptyMap(), function (m) {\n return mergeWithSources(m, iters);\n });\n}\nfunction mergeDeepIn(keyPath) {\n var iters = [],\n len = arguments.length - 1;\n while (len-- > 0) iters[len] = arguments[len + 1];\n return updateIn$1(this, keyPath, emptyMap(), function (m) {\n return mergeDeepWithSources(m, iters);\n });\n}\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\nfunction asImmutable() {\n return this.__ensureOwner();\n}\nfunction wasAltered() {\n return this.__altered;\n}\nvar Map = /*@__PURE__*/function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null ? emptyMap() : isMap(value) && !isOrdered(value) ? value : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) {\n return map.set(k, v);\n });\n });\n }\n if (KeyedCollection) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create(KeyedCollection && KeyedCollection.prototype);\n Map.prototype.constructor = Map;\n Map.of = function of() {\n var keyValues = [],\n len = arguments.length;\n while (len--) keyValues[len] = arguments[len];\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n Map.prototype.toString = function toString() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get(k, notSetValue) {\n return this._root ? this._root.get(0, undefined, k, notSetValue) : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set(k, v) {\n return updateMap(this, k, v);\n };\n Map.prototype.remove = function remove(k) {\n return updateMap(this, k, NOT_SET);\n };\n Map.prototype.deleteAll = function deleteAll(keys) {\n var collection = Collection(keys);\n if (collection.size === 0) {\n return this;\n }\n return this.withMutations(function (map) {\n collection.forEach(function (key) {\n return map.remove(key);\n });\n });\n };\n Map.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n Map.prototype.sortBy = function sortBy(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n Map.prototype.map = function map(mapper, context) {\n var this$1$1 = this;\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n Map.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n var iterations = 0;\n this._root && this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n Map.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n return Map;\n}(KeyedCollection);\nMap.isMap = isMap;\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\nArrayMapNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\nArrayMapNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : newEntries[idx] = newEntries.pop();\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n return new ArrayMapNode(ownerID, newEntries);\n};\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\nBitmapIndexedNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue : this.nodes[popCount(bitmap & bit - 1)].get(shift + SHIFT, keyHash, key, notSetValue);\n};\nBitmapIndexedNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n if (!exists && value === NOT_SET) {\n return this;\n }\n var idx = popCount(bitmap & bit - 1);\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ? setAt(nodes, idx, newNode, isEditable) : spliceOut(nodes, idx, isEditable) : spliceIn(nodes, idx, newNode, isEditable);\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\nHashArrayMapNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n};\nHashArrayMapNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n if (removed && !node) {\n return this;\n }\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\nHashCollisionNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\nHashCollisionNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var removed = value === NOT_SET;\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : newEntries[idx] = newEntries.pop();\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\nValueNode.prototype.get = function get(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\nValueNode.prototype.update = function update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n SetRef(didAlter);\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n};\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n};\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\nvar MapIterator = /*@__PURE__*/function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n if (Iterator) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create(Iterator && Iterator.prototype);\n MapIterator.prototype.constructor = MapIterator;\n MapIterator.prototype.next = function next() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = void 0;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n return MapIterator;\n}(Iterator);\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n}\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\nfunction updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n}\nfunction isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n}\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var newNode;\n var nodes = idx1 === idx2 ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] : (newNode = new ValueNode(ownerID, keyHash, entry), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n return new BitmapIndexedNode(ownerID, 1 << idx1 | 1 << idx2, nodes);\n}\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\nfunction popCount(x) {\n x -= x >> 1 & 0x55555555;\n x = (x & 0x33333333) + (x >> 2 & 0x33333333);\n x = x + (x >> 4) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\nvar List = /*@__PURE__*/function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) {\n return list.set(i, v);\n });\n });\n }\n if (IndexedCollection) List.__proto__ = IndexedCollection;\n List.prototype = Object.create(IndexedCollection && IndexedCollection.prototype);\n List.prototype.constructor = List;\n List.of = function of( /*...values*/\n ) {\n return this(arguments);\n };\n List.prototype.toString = function toString() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set(index, value) {\n return updateList(this, index, value);\n };\n List.prototype.remove = function remove(index) {\n return !this.has(index) ? this : index === 0 ? this.shift() : index === this.size - 1 ? this.pop() : this.splice(index, 1);\n };\n List.prototype.insert = function insert(index, value) {\n return this.splice(index, 0, value);\n };\n List.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n List.prototype.push = function push( /*...values*/\n ) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n List.prototype.pop = function pop() {\n return setListBounds(this, 0, -1);\n };\n List.prototype.unshift = function unshift( /*...values*/\n ) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n List.prototype.shift = function shift() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat( /*...collections*/\n ) {\n var arguments$1 = arguments;\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(typeof argument !== 'string' && hasIterator(argument) ? argument : [argument]);\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) {\n return seq.forEach(function (value) {\n return list.push(value);\n });\n });\n });\n };\n List.prototype.setSize = function setSize(size) {\n return setListBounds(this, 0, size);\n };\n List.prototype.map = function map(mapper, context) {\n var this$1$1 = this;\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(this, resolveBegin(begin, size), resolveEnd(end, size));\n };\n List.prototype.__iterator = function __iterator(type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE ? iteratorDone() : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n List.prototype.__iterate = function __iterate(fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n List.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n return List;\n}(IndexedCollection);\nList.isList = isList;\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore(ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = index >>> level & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\nVNode.prototype.removeAfter = function removeAfter(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = index - 1 >>> level & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\nvar DONE = {};\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n return iterateNodeOrLeaf(list._root, list._level, 0);\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ? iterateLeaf(node, offset) : iterateNode(node, level, offset);\n }\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : left - offset >> level;\n var to = (right - offset >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(array && array[idx], level - SHIFT, offset + (idx << level));\n }\n };\n }\n}\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n if (index !== index) {\n return list;\n }\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0 ? setListBounds(list, index).set(0, value) : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n index += list._origin;\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n if (!didAlter.value) {\n return list;\n }\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = index >>> level & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n var newNode;\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n if (didAlter) {\n SetRef(didAlter);\n }\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << list._level + SHIFT) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[rawIndex >>> level & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << newLevel + SHIFT) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ? listNodeFor(list, newCapacity - 1) : newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = oldTailOffset >>> level & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[oldTailOffset >>> SHIFT & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = newOrigin >>> newLevel & MASK;\n if (beginIndex !== newTailOffset >>> newLevel & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : size - 1 >>> SHIFT << SHIFT;\n}\nvar OrderedMap = /*@__PURE__*/function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null ? emptyOrderedMap() : isOrderedMap(value) ? value : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) {\n return map.set(k, v);\n });\n });\n }\n if (Map) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create(Map && Map.prototype);\n OrderedMap.prototype.constructor = OrderedMap;\n OrderedMap.of = function of( /*...values*/\n ) {\n return this(arguments);\n };\n OrderedMap.prototype.toString = function toString() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n OrderedMap.prototype.set = function set(k, v) {\n return updateOrderedMap(this, k, v);\n };\n OrderedMap.prototype.remove = function remove(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n OrderedMap.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n return this._list.__iterate(function (entry) {\n return entry && fn(entry[1], entry[0], this$1$1);\n }, reverse);\n };\n OrderedMap.prototype.__iterator = function __iterator(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n OrderedMap.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n return OrderedMap;\n}(Map);\nOrderedMap.isOrderedMap = isOrderedMap;\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n}\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) {\n return entry !== undefined && i !== idx;\n });\n newMap = newList.toKeyedSeq().map(function (entry) {\n return entry[0];\n }).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\nvar Stack = /*@__PURE__*/function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null ? emptyStack() : isStack(value) ? value : emptyStack().pushAll(value);\n }\n if (IndexedCollection) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create(IndexedCollection && IndexedCollection.prototype);\n Stack.prototype.constructor = Stack;\n Stack.of = function of( /*...values*/\n ) {\n return this(arguments);\n };\n Stack.prototype.toString = function toString() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n Stack.prototype.peek = function peek() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push( /*...values*/\n ) {\n var arguments$1 = arguments;\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n Stack.prototype.pushAll = function pushAll(iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n }, /* reverse */true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n Stack.prototype.pop = function pop() {\n return this.slice(1);\n };\n Stack.prototype.clear = function clear() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n Stack.prototype.slice = function slice(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(function (v, k) {\n return fn(v, k, this$1$1);\n }, reverse);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n Stack.prototype.__iterator = function __iterator(type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n return Stack;\n}(IndexedCollection);\nStack.isStack = isStack;\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (!isCollection(b) || a.size !== undefined && b.size !== undefined && a.size !== b.size || a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash || isKeyed(a) !== isKeyed(b) || isIndexed(a) !== isIndexed(b) || isOrdered(a) !== isOrdered(b)) {\n return false;\n }\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n var notAssociative = !isAssociative(a);\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n var flipped = false;\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (notAssociative ? !a.has(v) : flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n return allEqual && a.size === bSize;\n}\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols && Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\nvar Set = /*@__PURE__*/function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null ? emptySet() : isSet(value) && !isOrdered(value) ? value : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) {\n return set.add(v);\n });\n });\n }\n if (SetCollection) Set.__proto__ = SetCollection;\n Set.prototype = Object.create(SetCollection && SetCollection.prototype);\n Set.prototype.constructor = Set;\n Set.of = function of( /*...values*/\n ) {\n return this(arguments);\n };\n Set.fromKeys = function fromKeys(value) {\n return this(KeyedCollection(value).keySeq());\n };\n Set.intersect = function intersect(sets) {\n sets = Collection(sets).toArray();\n return sets.length ? SetPrototype.intersect.apply(Set(sets.pop()), sets) : emptySet();\n };\n Set.union = function union(sets) {\n sets = Collection(sets).toArray();\n return sets.length ? SetPrototype.union.apply(Set(sets.pop()), sets) : emptySet();\n };\n Set.prototype.toString = function toString() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add(value) {\n return updateSet(this, this._map.set(value, value));\n };\n Set.prototype.remove = function remove(value) {\n return updateSet(this, this._map.remove(value));\n };\n Set.prototype.clear = function clear() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map(mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n var newMap = updateSet(this, this._map.mapEntries(function (ref) {\n var v = ref[1];\n var mapped = mapper.call(context, v, v, this$1$1);\n if (mapped !== v) {\n didChanges = true;\n }\n return [mapped, mapped];\n }, context));\n return didChanges ? newMap : this;\n };\n Set.prototype.union = function union() {\n var iters = [],\n len = arguments.length;\n while (len--) iters[len] = arguments[len];\n iters = iters.filter(function (x) {\n return x.size !== 0;\n });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) {\n return set.add(value);\n });\n }\n }\n });\n };\n Set.prototype.intersect = function intersect() {\n var iters = [],\n len = arguments.length;\n while (len--) iters[len] = arguments[len];\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) {\n return SetCollection(iter);\n });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) {\n return iter.includes(value);\n })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n Set.prototype.subtract = function subtract() {\n var iters = [],\n len = arguments.length;\n while (len--) iters[len] = arguments[len];\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) {\n return SetCollection(iter);\n });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) {\n return iter.includes(value);\n })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n Set.prototype.sort = function sort(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n Set.prototype.sortBy = function sortBy(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n Set.prototype.wasAltered = function wasAltered() {\n return this._map.wasAltered();\n };\n Set.prototype.__iterate = function __iterate(fn, reverse) {\n var this$1$1 = this;\n return this._map.__iterate(function (k) {\n return fn(k, k, this$1$1);\n }, reverse);\n };\n Set.prototype.__iterator = function __iterator(type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n Set.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n return Set;\n}(SetCollection);\nSet.isSet = isSet;\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set : newMap.size === 0 ? set.__empty() : set.__make(newMap);\n}\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n if (IndexedSeq) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n Range.prototype.constructor = Range;\n Range.prototype.toString = function toString() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' + this._start + '...' + this._end + (this._step !== 1 ? ' by ' + this._step : '') + ' ]';\n };\n Range.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._start + wrapIndex(this, index) * this._step : notSetValue;\n };\n Range.prototype.includes = function includes(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 && possibleIndex < this.size && possibleIndex === Math.floor(possibleIndex);\n };\n Range.prototype.slice = function slice(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n Range.prototype.indexOf = function indexOf(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n Range.prototype.lastIndexOf = function lastIndexOf(searchValue) {\n return this.indexOf(searchValue);\n };\n Range.prototype.__iterate = function __iterate(fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n Range.prototype.__iterator = function __iterator(type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n Range.prototype.equals = function equals(other) {\n return other instanceof Range ? this._start === other._start && this._end === other._end && this._step === other._step : deepEqual(this, other);\n };\n return Range;\n}(IndexedSeq);\nvar EMPTY_RANGE;\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\nCollection.Iterator = Iterator;\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n toJS: function toJS$1() {\n return toJS(this);\n },\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n toObject: toObject,\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n toSeq: function toSeq() {\n return isIndexed(this) ? this.toIndexedSeq() : isKeyed(this) ? this.toKeyedSeq() : this.toSetSeq();\n },\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [],\n len = arguments.length;\n while (len--) values[len] = arguments[len];\n return reify(this, concatFactory(this, values));\n },\n includes: function includes(searchValue) {\n return this.some(function (value) {\n return is(value, searchValue);\n });\n },\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? isFirst = false : joined += separator;\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(this, reducer, initialReduction, context, arguments.length < 2, false);\n },\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(this, reducer, initialReduction, context, arguments.length < 2, true);\n },\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () {\n return true;\n });\n },\n count: function count(predicate, context) {\n return ensureSize(predicate ? this.toSeq().filter(predicate, context) : this);\n },\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () {\n return collection.toSeq();\n };\n return entriesSequence;\n },\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) {\n return is(key, searchKey);\n }, undefined, notSetValue);\n },\n getIn: getIn,\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n hasIn: hasIn,\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) {\n return iter.includes(value);\n });\n },\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) {\n return is(value, searchValue);\n });\n },\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n min: function min(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n minBy: function minBy(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n rest: function rest() {\n return this.slice(1);\n },\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n update: function update(fn) {\n return fn(this);\n },\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n }\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n var iterations = 0;\n return reify(this, this.toSeq().map(function (v, k) {\n return mapper.call(context, [k, v], iterations++, this$1$1);\n }).fromEntrySeq());\n },\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n return reify(this, this.toSeq().flip().map(function (k, v) {\n return mapper.call(context, k, v, this$1$1);\n }).flip());\n }\n});\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) {\n return quoteString(k) + ': ' + quoteString(v);\n};\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || numArgs === 2 && !removeNum) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(this, numArgs === 1 ? spliced : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum)));\n },\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 || this.size === Infinity || this.size !== undefined && index > this.size ? notSetValue : this.find(function (_, key) {\n return key === index;\n }, undefined, notSetValue);\n },\n has: function has(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ? this.size === Infinity || index < this.size : this.indexOf(index) !== -1);\n },\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n interleave: function interleave( /*...collections*/\n ) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n zip: function zip( /*, ...collections */\n ) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n zipAll: function zipAll( /*, ...collections */\n ) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n }\n});\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n includes: function includes(value) {\n return this.has(value);\n },\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n }\n});\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\nfunction keyMapper(v, k) {\n return k;\n}\nfunction entryMapper(v, k) {\n return [k, v];\n}\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(keyed ? ordered ? function (v, k) {\n h = 31 * h + hashMerge(hash(v), hash(k)) | 0;\n } : function (v, k) {\n h = h + hashMerge(hash(v), hash(k)) | 0;\n } : ordered ? function (v) {\n h = 31 * h + hash(v) | 0;\n } : function (v) {\n h = h + hash(v) | 0;\n });\n return murmurHashOfSize(size, h);\n}\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul(h << 15 | h >>> -15, 0x1b873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xe6546b64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85ebca6b);\n h = imul(h ^ h >>> 13, 0xc2b2ae35);\n h = smi(h ^ h >>> 16);\n return h;\n}\nfunction hashMerge(a, b) {\n return a ^ b + 0x9e3779b9 + (a << 6) + (a >> 2) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null ? emptyOrderedSet() : isOrderedSet(value) ? value : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) {\n return set.add(v);\n });\n });\n }\n if (Set) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create(Set && Set.prototype);\n OrderedSet.prototype.constructor = OrderedSet;\n OrderedSet.of = function of( /*...values*/\n ) {\n return this(arguments);\n };\n OrderedSet.fromKeys = function fromKeys(value) {\n return this(KeyedCollection(value).keySeq());\n };\n OrderedSet.prototype.toString = function toString() {\n return this.__toString('OrderedSet {', '}');\n };\n return OrderedSet;\n}(Set);\nOrderedSet.isOrderedSet = isOrderedSet;\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n}\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1\n};\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error('Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.');\n }\n if (isImmutable(defaultValues)) {\n throw new Error('Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.');\n }\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error('Can not call `Record` with a non-object as default values. Use a plain javascript object instead.');\n }\n}\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n throwOnInvalidDefaultValues(defaultValues);\n var RecordType = function Record(values) {\n var this$1$1 = this;\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = RecordTypePrototype._indices = {};\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' && console.warn && console.warn('Cannot define ' + recordName(this) + ' with property \"' + propName + '\" since that property name is part of the Record API.');\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n if (name) {\n RecordType.displayName = name;\n }\n return RecordType;\n};\nRecord.prototype.toString = function toString() {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\nRecord.prototype.equals = function equals(other) {\n return this === other || isRecord(other) && recordSeq(this).equals(recordSeq(other));\n};\nRecord.prototype.hashCode = function hashCode() {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has(k) {\n return this._indices.hasOwnProperty(k);\n};\nRecord.prototype.get = function get(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set(k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(this._indices[k], v === this._defaultValues[k] ? undefined : v);\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\nRecord.prototype.remove = function remove(k) {\n return this.set(k);\n};\nRecord.prototype.clear = function clear() {\n var newValues = this._values.clear().setSize(this._keys.length);\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\nRecord.prototype.wasAltered = function wasAltered() {\n return this._values.wasAltered();\n};\nRecord.prototype.toSeq = function toSeq() {\n return recordSeq(this);\n};\nRecord.prototype.toJS = function toJS$1() {\n return toJS(this);\n};\nRecord.prototype.entries = function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n};\nRecord.prototype.__iterator = function __iterator(type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\nRecord.prototype.__iterate = function __iterate(fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\nRecord.prototype.__ensureOwner = function __ensureOwner(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject = CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) {\n return [k, record.get(k)];\n }));\n}\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n if (IndexedSeq) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create(IndexedSeq && IndexedSeq.prototype);\n Repeat.prototype.constructor = Repeat;\n Repeat.prototype.toString = function toString() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n Repeat.prototype.get = function get(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n Repeat.prototype.includes = function includes(searchValue) {\n return is(this._value, searchValue);\n };\n Repeat.prototype.slice = function slice(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this : new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n Repeat.prototype.reverse = function reverse() {\n return this;\n };\n Repeat.prototype.indexOf = function indexOf(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n Repeat.prototype.lastIndexOf = function lastIndexOf(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n Repeat.prototype.__iterate = function __iterate(fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n Repeat.prototype.__iterator = function __iterator(type, reverse) {\n var this$1$1 = this;\n var size = this.size;\n var i = 0;\n return new Iterator(function () {\n return i === size ? iteratorDone() : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value);\n });\n };\n Repeat.prototype.equals = function equals(other) {\n return other instanceof Repeat ? is(this._value, other._value) : deepEqual(other);\n };\n return Repeat;\n}(IndexedSeq);\nvar EMPTY_REPEAT;\nfunction fromJS(value, converter) {\n return fromJSWith([], converter || defaultConverter, value, '', converter && converter.length > 2 ? [] : undefined, {\n '': value\n });\n}\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (typeof value !== 'string' && !isImmutable(value) && (isArrayLike(value) || hasIterator(value) || isPlainObject(value))) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(parentValue, key, Seq(value).map(function (v, k) {\n return fromJSWith(stack, converter, v, k, keyPath, value);\n }), keyPath && keyPath.slice());\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\nvar version = \"4.3.2\";\nvar Immutable = {\n version: version,\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n is: is,\n fromJS: fromJS,\n hash: hash,\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };","map":{"version":3,"names":["DELETE","SHIFT","SIZE","MASK","NOT_SET","MakeRef","value","SetRef","ref","OwnerID","ensureSize","iter","size","undefined","__iterate","returnTrue","wrapIndex","index","uint32Index","NaN","wholeSlice","begin","end","isNeg","resolveBegin","resolveIndex","resolveEnd","defaultIndex","Infinity","Math","max","min","IS_COLLECTION_SYMBOL","isCollection","maybeCollection","Boolean","IS_KEYED_SYMBOL","isKeyed","maybeKeyed","IS_INDEXED_SYMBOL","isIndexed","maybeIndexed","isAssociative","maybeAssociative","Collection","Seq","KeyedCollection","KeyedSeq","__proto__","prototype","Object","create","constructor","IndexedCollection","IndexedSeq","SetCollection","SetSeq","Keyed","Indexed","Set","IS_SEQ_SYMBOL","isSeq","maybeSeq","IS_RECORD_SYMBOL","isRecord","maybeRecord","isImmutable","maybeImmutable","IS_ORDERED_SYMBOL","isOrdered","maybeOrdered","ITERATE_KEYS","ITERATE_VALUES","ITERATE_ENTRIES","REAL_ITERATOR_SYMBOL","Symbol","iterator","FAUX_ITERATOR_SYMBOL","ITERATOR_SYMBOL","Iterator","next","toString","KEYS","VALUES","ENTRIES","inspect","toSource","iteratorValue","type","k","v","iteratorResult","done","iteratorDone","hasIterator","maybeIterable","Array","isArray","getIteratorFn","isIterator","maybeIterator","getIterator","iterable","iteratorFn","call","isEntriesIterable","entries","isKeysIterable","keys","hasOwnProperty","isArrayLike","Number","isInteger","length","emptySequence","toSeq","seqFromValue","__toString","cacheResult","_cache","__iterateUncached","entrySeq","toArray","fn","reverse","cache","i","entry","__iterator","__iteratorUncached","toKeyedSeq","fromEntrySeq","keyedSeqFromValue","toIndexedSeq","indexedSeqFromValue","of","arguments","toSetSeq","ArraySeq","array","_array","get","notSetValue","has","ii","ObjectSeq","object","concat","getOwnPropertySymbols","_object","_keys","key","CollectionSeq","collection","_collection","iterations","step","EMPTY_SEQ","seq","maybeIndexedSeqFromValue","TypeError","IS_MAP_SYMBOL","isMap","maybeMap","isOrderedMap","maybeOrderedMap","isValueObject","maybeValue","equals","hashCode","is","valueA","valueB","valueOf","imul","a","b","c","d","smi","i32","defaultValueOf","hash","o","hashNullish","hashNumber","STRING_HASH_CACHE_MIN_STRLEN","cachedHashString","hashString","hashJSObj","hashSymbol","Error","nullish","n","string","hashed","stringHashCache","STRING_HASH_CACHE_SIZE","STRING_HASH_CACHE_MAX_SIZE","charCodeAt","sym","symbolMap","nextHash","obj","usingWeakMap","weakMap","UID_HASH_KEY","canDefineProperty","propertyIsEnumerable","getIENodeHash","set","isExtensible","defineProperty","enumerable","configurable","writable","apply","nodeType","e","node","uniqueID","documentElement","_objHashUID","WeakMap","ToKeyedSequence","indexed","useKeys","_iter","_useKeys","valueSeq","this$1$1","reversedSequence","reverseFactory","map","mapper","context","mappedSequence","mapFactory","ToIndexedSequence","includes","ToSetSequence","FromEntriesSequence","validateEntry","indexedCollection","cacheResultThrough","flipFactory","flipSequence","makeSequence","flip","filterFactory","predicate","filterSequence","countByFactory","grouper","groups","Map","asMutable","update","asImmutable","groupByFactory","isKeyedIter","OrderedMap","push","coerce","collectionClass","arr","reify","partitionFactory","sliceFactory","originalSize","resolvedBegin","resolvedEnd","resolvedSize","sliceSize","sliceSeq","skipped","isSkipping","takeWhileFactory","takeSequence","iterating","skipWhileFactory","skipSequence","skipping","concatFactory","values","isKeyedCollection","iters","filter","singleton","concatSeq","flatten","reduce","sum","flattenFactory","depth","flatSequence","stopped","flatDeep","currentDepth","stack","pop","flatMapFactory","interposeFactory","separator","interposedSequence","sortFactory","comparator","defaultComparator","sort","forEach","maxFactory","maxCompare","comp","zipWithFactory","keyIter","zipper","zipAll","zipSequence","sizes","iterators","isDone","steps","every","s","some","arrCopy","offset","len","newArr","invariant","condition","error","assertNotInfinite","coerceKeyPath","keyPath","isPlainObject","proto","getPrototypeOf","parentProto","nextProto","isDataStructure","quoteString","JSON","stringify","String","_ignoreError","shallowCopy","from","to","remove","collectionCopy","splice","updateIn$1","updater","updatedValue","updateInDeeply","inImmutable","existing","wasNotSet","existingValue","newValue","slice","nextExisting","nextUpdated","emptyMap","setIn$1","setIn","removeIn","deleteIn","update$1","updateIn","merge$1","mergeIntoKeyedWith","mergeWith$1","merger","collections","collection$1","__ownerID","withMutations","mergeIntoCollection","oldVal","merge","sources","mergeWithSources","mergeWith","mergeDeep$1","mergeDeepWithSources","mergeDeepWith$1","deepMergerWith","merged","mergeItem","hasVal","nextVal","deepMerger","oldValue","areMergeable","oldDataStructure","newDataStructure","oldSeq","newSeq","mergeDeep","mergeDeepWith","mergeIn","m","mergeDeepIn","mutable","wasAltered","__ensureOwner","__altered","keyValues","_root","updateMap","deleteAll","clear","__hash","sortBy","MapIterator","iterate","ownerID","makeMap","MapPrototype","removeAll","result","ArrayMapNode","shift","keyHash","didChangeSize","didAlter","removed","idx","exists","MAX_ARRAY_MAP_SIZE","createNodes","isEditable","newEntries","BitmapIndexedNode","bitmap","nodes","bit","popCount","keyHashFrag","newNode","updateNode","MAX_BITMAP_INDEXED_SIZE","expandNodes","isLeafNode","newBitmap","newNodes","setAt","spliceOut","spliceIn","HashArrayMapNode","count","newCount","MIN_HASH_ARRAY_MAP_SIZE","packNodes","HashCollisionNode","mergeIntoNode","ValueNode","keyMatch","maxIndex","_type","_reverse","_stack","mapIteratorFrame","mapIteratorValue","subNode","__prev","prev","root","EMPTY_MAP","newRoot","newSize","idx1","idx2","excluding","packedII","packedNodes","including","expandedNodes","x","val","canEdit","newArray","newLen","after","IS_LIST_SYMBOL","isList","maybeList","List","empty","emptyList","makeList","VNode","list","setSize","_origin","listNodeFor","updateList","insert","_capacity","_level","_tail","oldSize","setListBounds","unshift","arguments$1","seqs","argument","iterateList","DONE","ListPrototype","removeBefore","level","originIndex","removingFirst","newChild","oldChild","editable","editableVNode","removeAfter","sizeIndex","left","right","tailPos","getTailOffset","tail","iterateNodeOrLeaf","iterateLeaf","iterateNode","origin","capacity","EMPTY_LIST","newTail","updateVNode","nodeHas","lowerNode","newLowerNode","rawIndex","owner","oldOrigin","oldCapacity","newOrigin","newCapacity","newLevel","offsetShift","oldTailOffset","newTailOffset","oldTail","beginIndex","emptyOrderedMap","_map","_list","updateOrderedMap","newMap","newList","makeOrderedMap","omap","EMPTY_ORDERED_MAP","toMap","IS_STACK_SYMBOL","isStack","maybeStack","Stack","emptyStack","pushAll","head","_head","peek","makeStack","StackPrototype","unshiftAll","EMPTY_STACK","IS_SET_SYMBOL","isSet","maybeSet","isOrderedSet","maybeOrderedSet","deepEqual","notAssociative","flipped","_","allEqual","bSize","mixin","ctor","methods","keyCopier","toJS","result$1","emptySet","add","fromKeys","keySeq","intersect","sets","SetPrototype","union","updateSet","didChanges","mapEntries","mapped","toRemove","subtract","OrderedSet","__empty","__make","makeSet","EMPTY_SET","Range","start","abs","_start","_end","_step","ceil","EMPTY_RANGE","searchValue","possibleIndex","floor","indexOf","offsetValue","lastIndexOf","other","getIn$1","searchKeyPath","getIn","hasIn$1","hasIn","toObject","isIterable","useTuples","toJS$1","toOrderedMap","toOrderedSet","toSet","toStack","toList","__toStringMapper","join","returnValue","partition","find","findEntry","sideEffect","bind","joined","isFirst","reduce$1","reducer","initialReduction","reduceRight","butLast","isEmpty","countBy","entriesSequence","entryMapper","filterNot","not","found","findKey","findLast","findLastEntry","findLastKey","first","flatMap","searchKey","groupBy","isSubset","isSuperset","keyOf","keyMapper","last","lastKeyOf","maxBy","neg","defaultNegComparator","minBy","rest","skip","amount","skipLast","skipWhile","skipUntil","take","takeLast","takeWhile","takeUntil","hashCollection","CollectionPrototype","toJSON","chain","contains","mapKeys","KeyedCollectionPrototype","findIndex","removeNum","numArgs","spliced","findLastIndex","interpose","interleave","zipped","interleaved","zip","defaultZipper","zipWith","IndexedCollectionPrototype","SetCollectionPrototype","reduction","useFirst","ordered","keyed","h","hashMerge","murmurHashOfSize","emptyOrderedSet","OrderedSetPrototype","makeOrderedSet","EMPTY_ORDERED_SET","PairSorting","LeftThenRight","RightThenLeft","throwOnInvalidDefaultValues","defaultValues","Record","name","hasInitialized","RecordType","indices","RecordTypePrototype","_indices","_name","_defaultValues","propName","console","warn","recordName","setProp","_values","l","RecordPrototype","displayName","str","recordSeq","newValues","makeRecord","getDescriptiveName","likeRecord","record","Repeat","times","_value","EMPTY_REPEAT","fromJS","converter","fromJSWith","defaultConverter","parentValue","converted","version","Immutable","Iterable"],"sources":["C:/Users/zhouxueli/Desktop/scheduling-app/node_modules/immutable/dist/immutable.es.js"],"sourcesContent":["/**\n * MIT License\n * \n * Copyright (c) 2014-present, Lee Byron and other contributors.\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar DELETE = 'delete';\n\n// Constants describing the size of trie nodes.\nvar SHIFT = 5; // Resulted in best performance after ______?\nvar SIZE = 1 << SHIFT;\nvar MASK = SIZE - 1;\n\n// A consistent shared value representing \"not set\" which equals nothing other\n// than itself, and nothing that could be provided externally.\nvar NOT_SET = {};\n\n// Boolean references, Rough equivalent of `bool &`.\nfunction MakeRef() {\n return { value: false };\n}\n\nfunction SetRef(ref) {\n if (ref) {\n ref.value = true;\n }\n}\n\n// A function which returns a value representing an \"owner\" for transient writes\n// to tries. The return value will only ever equal itself, and will not equal\n// the return of any subsequent call of this function.\nfunction OwnerID() {}\n\nfunction ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n}\n\nfunction wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction wholeSlice(begin, end, size) {\n return (\n ((begin === 0 && !isNeg(begin)) ||\n (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size))\n );\n}\n\nfunction resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n}\n\nfunction resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n}\n\nfunction resolveIndex(index, size, defaultIndex) {\n // Sanitize indices using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n return index === undefined\n ? defaultIndex\n : isNeg(index)\n ? size === Infinity\n ? size\n : Math.max(0, size + index) | 0\n : size === undefined || size === index\n ? index\n : Math.min(size, index) | 0;\n}\n\nfunction isNeg(value) {\n // Account for -0 which is negative, but not less than 0.\n return value < 0 || (value === 0 && 1 / value === -Infinity);\n}\n\nvar IS_COLLECTION_SYMBOL = '@@__IMMUTABLE_ITERABLE__@@';\n\nfunction isCollection(maybeCollection) {\n return Boolean(maybeCollection && maybeCollection[IS_COLLECTION_SYMBOL]);\n}\n\nvar IS_KEYED_SYMBOL = '@@__IMMUTABLE_KEYED__@@';\n\nfunction isKeyed(maybeKeyed) {\n return Boolean(maybeKeyed && maybeKeyed[IS_KEYED_SYMBOL]);\n}\n\nvar IS_INDEXED_SYMBOL = '@@__IMMUTABLE_INDEXED__@@';\n\nfunction isIndexed(maybeIndexed) {\n return Boolean(maybeIndexed && maybeIndexed[IS_INDEXED_SYMBOL]);\n}\n\nfunction isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n}\n\nvar Collection = function Collection(value) {\n return isCollection(value) ? value : Seq(value);\n};\n\nvar KeyedCollection = /*@__PURE__*/(function (Collection) {\n function KeyedCollection(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n if ( Collection ) KeyedCollection.__proto__ = Collection;\n KeyedCollection.prototype = Object.create( Collection && Collection.prototype );\n KeyedCollection.prototype.constructor = KeyedCollection;\n\n return KeyedCollection;\n}(Collection));\n\nvar IndexedCollection = /*@__PURE__*/(function (Collection) {\n function IndexedCollection(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n if ( Collection ) IndexedCollection.__proto__ = Collection;\n IndexedCollection.prototype = Object.create( Collection && Collection.prototype );\n IndexedCollection.prototype.constructor = IndexedCollection;\n\n return IndexedCollection;\n}(Collection));\n\nvar SetCollection = /*@__PURE__*/(function (Collection) {\n function SetCollection(value) {\n return isCollection(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n if ( Collection ) SetCollection.__proto__ = Collection;\n SetCollection.prototype = Object.create( Collection && Collection.prototype );\n SetCollection.prototype.constructor = SetCollection;\n\n return SetCollection;\n}(Collection));\n\nCollection.Keyed = KeyedCollection;\nCollection.Indexed = IndexedCollection;\nCollection.Set = SetCollection;\n\nvar IS_SEQ_SYMBOL = '@@__IMMUTABLE_SEQ__@@';\n\nfunction isSeq(maybeSeq) {\n return Boolean(maybeSeq && maybeSeq[IS_SEQ_SYMBOL]);\n}\n\nvar IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\n\nfunction isRecord(maybeRecord) {\n return Boolean(maybeRecord && maybeRecord[IS_RECORD_SYMBOL]);\n}\n\nfunction isImmutable(maybeImmutable) {\n return isCollection(maybeImmutable) || isRecord(maybeImmutable);\n}\n\nvar IS_ORDERED_SYMBOL = '@@__IMMUTABLE_ORDERED__@@';\n\nfunction isOrdered(maybeOrdered) {\n return Boolean(maybeOrdered && maybeOrdered[IS_ORDERED_SYMBOL]);\n}\n\nvar ITERATE_KEYS = 0;\nvar ITERATE_VALUES = 1;\nvar ITERATE_ENTRIES = 2;\n\nvar REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\n\nvar ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\nvar Iterator = function Iterator(next) {\n this.next = next;\n};\n\nIterator.prototype.toString = function toString () {\n return '[Iterator]';\n};\n\nIterator.KEYS = ITERATE_KEYS;\nIterator.VALUES = ITERATE_VALUES;\nIterator.ENTRIES = ITERATE_ENTRIES;\n\nIterator.prototype.inspect = Iterator.prototype.toSource = function () {\n return this.toString();\n};\nIterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n};\n\nfunction iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult\n ? (iteratorResult.value = value)\n : (iteratorResult = {\n value: value,\n done: false,\n });\n return iteratorResult;\n}\n\nfunction iteratorDone() {\n return { value: undefined, done: true };\n}\n\nfunction hasIterator(maybeIterable) {\n if (Array.isArray(maybeIterable)) {\n // IE11 trick as it does not support `Symbol.iterator`\n return true;\n }\n\n return !!getIteratorFn(maybeIterable);\n}\n\nfunction isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n}\n\nfunction getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n}\n\nfunction getIteratorFn(iterable) {\n var iteratorFn =\n iterable &&\n ((REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nfunction isEntriesIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.entries;\n}\n\nfunction isKeysIterable(maybeIterable) {\n var iteratorFn = getIteratorFn(maybeIterable);\n return iteratorFn && iteratorFn === maybeIterable.keys;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction isArrayLike(value) {\n if (Array.isArray(value) || typeof value === 'string') {\n return true;\n }\n\n return (\n value &&\n typeof value === 'object' &&\n Number.isInteger(value.length) &&\n value.length >= 0 &&\n (value.length === 0\n ? // Only {length: 0} is considered Array-like.\n Object.keys(value).length === 1\n : // An object is only Array-like if it has a property where the last value\n // in the array-like may be found (which could be undefined).\n value.hasOwnProperty(value.length - 1))\n );\n}\n\nvar Seq = /*@__PURE__*/(function (Collection) {\n function Seq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isImmutable(value)\n ? value.toSeq()\n : seqFromValue(value);\n }\n\n if ( Collection ) Seq.__proto__ = Collection;\n Seq.prototype = Object.create( Collection && Collection.prototype );\n Seq.prototype.constructor = Seq;\n\n Seq.prototype.toSeq = function toSeq () {\n return this;\n };\n\n Seq.prototype.toString = function toString () {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function cacheResult () {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function __iterate (fn, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n while (i !== size) {\n var entry = cache[reverse ? size - ++i : i++];\n if (fn(entry[1], entry[0], this) === false) {\n break;\n }\n }\n return i;\n }\n return this.__iterateUncached(fn, reverse);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function __iterator (type, reverse) {\n var cache = this._cache;\n if (cache) {\n var size = cache.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var entry = cache[reverse ? size - ++i : i++];\n return iteratorValue(type, entry[0], entry[1]);\n });\n }\n return this.__iteratorUncached(type, reverse);\n };\n\n return Seq;\n}(Collection));\n\nvar KeyedSeq = /*@__PURE__*/(function (Seq) {\n function KeyedSeq(value) {\n return value === undefined || value === null\n ? emptySequence().toKeyedSeq()\n : isCollection(value)\n ? isKeyed(value)\n ? value.toSeq()\n : value.fromEntrySeq()\n : isRecord(value)\n ? value.toSeq()\n : keyedSeqFromValue(value);\n }\n\n if ( Seq ) KeyedSeq.__proto__ = Seq;\n KeyedSeq.prototype = Object.create( Seq && Seq.prototype );\n KeyedSeq.prototype.constructor = KeyedSeq;\n\n KeyedSeq.prototype.toKeyedSeq = function toKeyedSeq () {\n return this;\n };\n\n return KeyedSeq;\n}(Seq));\n\nvar IndexedSeq = /*@__PURE__*/(function (Seq) {\n function IndexedSeq(value) {\n return value === undefined || value === null\n ? emptySequence()\n : isCollection(value)\n ? isKeyed(value)\n ? value.entrySeq()\n : value.toIndexedSeq()\n : isRecord(value)\n ? value.toSeq().entrySeq()\n : indexedSeqFromValue(value);\n }\n\n if ( Seq ) IndexedSeq.__proto__ = Seq;\n IndexedSeq.prototype = Object.create( Seq && Seq.prototype );\n IndexedSeq.prototype.constructor = IndexedSeq;\n\n IndexedSeq.of = function of (/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function toIndexedSeq () {\n return this;\n };\n\n IndexedSeq.prototype.toString = function toString () {\n return this.__toString('Seq [', ']');\n };\n\n return IndexedSeq;\n}(Seq));\n\nvar SetSeq = /*@__PURE__*/(function (Seq) {\n function SetSeq(value) {\n return (\n isCollection(value) && !isAssociative(value) ? value : IndexedSeq(value)\n ).toSetSeq();\n }\n\n if ( Seq ) SetSeq.__proto__ = Seq;\n SetSeq.prototype = Object.create( Seq && Seq.prototype );\n SetSeq.prototype.constructor = SetSeq;\n\n SetSeq.of = function of (/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function toSetSeq () {\n return this;\n };\n\n return SetSeq;\n}(Seq));\n\nSeq.isSeq = isSeq;\nSeq.Keyed = KeyedSeq;\nSeq.Set = SetSeq;\nSeq.Indexed = IndexedSeq;\n\nSeq.prototype[IS_SEQ_SYMBOL] = true;\n\n// #pragma Root Sequences\n\nvar ArraySeq = /*@__PURE__*/(function (IndexedSeq) {\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n if ( IndexedSeq ) ArraySeq.__proto__ = IndexedSeq;\n ArraySeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ArraySeq.prototype.constructor = ArraySeq;\n\n ArraySeq.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function __iterate (fn, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n while (i !== size) {\n var ii = reverse ? size - ++i : i++;\n if (fn(array[ii], ii, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ArraySeq.prototype.__iterator = function __iterator (type, reverse) {\n var array = this._array;\n var size = array.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var ii = reverse ? size - ++i : i++;\n return iteratorValue(type, ii, array[ii]);\n });\n };\n\n return ArraySeq;\n}(IndexedSeq));\n\nvar ObjectSeq = /*@__PURE__*/(function (KeyedSeq) {\n function ObjectSeq(object) {\n var keys = Object.keys(object).concat(\n Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : []\n );\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n if ( KeyedSeq ) ObjectSeq.__proto__ = KeyedSeq;\n ObjectSeq.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ObjectSeq.prototype.constructor = ObjectSeq;\n\n ObjectSeq.prototype.get = function get (key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function has (key) {\n return hasOwnProperty.call(this._object, key);\n };\n\n ObjectSeq.prototype.__iterate = function __iterate (fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n while (i !== size) {\n var key = keys[reverse ? size - ++i : i++];\n if (fn(object[key], key, this) === false) {\n break;\n }\n }\n return i;\n };\n\n ObjectSeq.prototype.__iterator = function __iterator (type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var size = keys.length;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var key = keys[reverse ? size - ++i : i++];\n return iteratorValue(type, key, object[key]);\n });\n };\n\n return ObjectSeq;\n}(KeyedSeq));\nObjectSeq.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar CollectionSeq = /*@__PURE__*/(function (IndexedSeq) {\n function CollectionSeq(collection) {\n this._collection = collection;\n this.size = collection.length || collection.size;\n }\n\n if ( IndexedSeq ) CollectionSeq.__proto__ = IndexedSeq;\n CollectionSeq.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n CollectionSeq.prototype.constructor = CollectionSeq;\n\n CollectionSeq.prototype.__iterateUncached = function __iterateUncached (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n CollectionSeq.prototype.__iteratorUncached = function __iteratorUncached (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var collection = this._collection;\n var iterator = getIterator(collection);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function () {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n return CollectionSeq;\n}(IndexedSeq));\n\n// # pragma Helper functions\n\nvar EMPTY_SEQ;\n\nfunction emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n}\n\nfunction keyedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq.fromEntrySeq();\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of [k, v] entries, or keyed object: ' +\n value\n );\n}\n\nfunction indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return seq;\n }\n throw new TypeError(\n 'Expected Array or collection object of values: ' + value\n );\n}\n\nfunction seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (seq) {\n return isEntriesIterable(value)\n ? seq.fromEntrySeq()\n : isKeysIterable(value)\n ? seq.toSetSeq()\n : seq;\n }\n if (typeof value === 'object') {\n return new ObjectSeq(value);\n }\n throw new TypeError(\n 'Expected Array or collection object of values, or keyed object: ' + value\n );\n}\n\nfunction maybeIndexedSeqFromValue(value) {\n return isArrayLike(value)\n ? new ArraySeq(value)\n : hasIterator(value)\n ? new CollectionSeq(value)\n : undefined;\n}\n\nvar IS_MAP_SYMBOL = '@@__IMMUTABLE_MAP__@@';\n\nfunction isMap(maybeMap) {\n return Boolean(maybeMap && maybeMap[IS_MAP_SYMBOL]);\n}\n\nfunction isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n}\n\nfunction isValueObject(maybeValue) {\n return Boolean(\n maybeValue &&\n typeof maybeValue.equals === 'function' &&\n typeof maybeValue.hashCode === 'function'\n );\n}\n\n/**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections are Value Objects: they implement `equals()`\n * and `hashCode()`.\n */\nfunction is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (\n typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function'\n ) {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n return !!(\n isValueObject(valueA) &&\n isValueObject(valueB) &&\n valueA.equals(valueB)\n );\n}\n\nvar imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2\n ? Math.imul\n : function imul(a, b) {\n a |= 0; // int\n b |= 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0)) | 0; // int\n };\n\n// v8 has an optimization for storing 31-bit signed numbers.\n// Values which have either 00 or 11 as the high order bits qualify.\n// This function drops the highest order bit in a signed number, maintaining\n// the sign bit.\nfunction smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xbfffffff);\n}\n\nvar defaultValueOf = Object.prototype.valueOf;\n\nfunction hash(o) {\n if (o == null) {\n return hashNullish(o);\n }\n\n if (typeof o.hashCode === 'function') {\n // Drop any high bits from accidentally long hash codes.\n return smi(o.hashCode(o));\n }\n\n var v = valueOf(o);\n\n if (v == null) {\n return hashNullish(v);\n }\n\n switch (typeof v) {\n case 'boolean':\n // The hash values for built-in constants are a 1 value for each 5-byte\n // shift region expect for the first, which encodes the value. This\n // reduces the odds of a hash collision for these common values.\n return v ? 0x42108421 : 0x42108420;\n case 'number':\n return hashNumber(v);\n case 'string':\n return v.length > STRING_HASH_CACHE_MIN_STRLEN\n ? cachedHashString(v)\n : hashString(v);\n case 'object':\n case 'function':\n return hashJSObj(v);\n case 'symbol':\n return hashSymbol(v);\n default:\n if (typeof v.toString === 'function') {\n return hashString(v.toString());\n }\n throw new Error('Value type ' + typeof v + ' cannot be hashed.');\n }\n}\n\nfunction hashNullish(nullish) {\n return nullish === null ? 0x42108422 : /* undefined */ 0x42108423;\n}\n\n// Compress arbitrarily large numbers into smi hashes.\nfunction hashNumber(n) {\n if (n !== n || n === Infinity) {\n return 0;\n }\n var hash = n | 0;\n if (hash !== n) {\n hash ^= n * 0xffffffff;\n }\n while (n > 0xffffffff) {\n n /= 0xffffffff;\n hash ^= n;\n }\n return smi(hash);\n}\n\nfunction cachedHashString(string) {\n var hashed = stringHashCache[string];\n if (hashed === undefined) {\n hashed = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hashed;\n }\n return hashed;\n}\n\n// http://jsperf.com/hashing-strings\nfunction hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hashed = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hashed = (31 * hashed + string.charCodeAt(ii)) | 0;\n }\n return smi(hashed);\n}\n\nfunction hashSymbol(sym) {\n var hashed = symbolMap[sym];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = nextHash();\n\n symbolMap[sym] = hashed;\n\n return hashed;\n}\n\nfunction hashJSObj(obj) {\n var hashed;\n if (usingWeakMap) {\n hashed = weakMap.get(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = obj[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n if (!canDefineProperty) {\n hashed = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hashed !== undefined) {\n return hashed;\n }\n\n hashed = getIENodeHash(obj);\n if (hashed !== undefined) {\n return hashed;\n }\n }\n\n hashed = nextHash();\n\n if (usingWeakMap) {\n weakMap.set(obj, hashed);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: hashed,\n });\n } else if (\n obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable\n ) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function () {\n return this.constructor.prototype.propertyIsEnumerable.apply(\n this,\n arguments\n );\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hashed;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hashed;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hashed;\n}\n\n// Get references to ES5 object methods.\nvar isExtensible = Object.isExtensible;\n\n// True if Object.defineProperty works as expected. IE8 fails this test.\nvar canDefineProperty = (function () {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n})();\n\n// IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n// and avoid memory leaks from the IE cloneNode bug.\nfunction getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n}\n\nfunction valueOf(obj) {\n return obj.valueOf !== defaultValueOf && typeof obj.valueOf === 'function'\n ? obj.valueOf(obj)\n : obj;\n}\n\nfunction nextHash() {\n var nextHash = ++_objHashUID;\n if (_objHashUID & 0x40000000) {\n _objHashUID = 0;\n }\n return nextHash;\n}\n\n// If possible, use a WeakMap.\nvar usingWeakMap = typeof WeakMap === 'function';\nvar weakMap;\nif (usingWeakMap) {\n weakMap = new WeakMap();\n}\n\nvar symbolMap = Object.create(null);\n\nvar _objHashUID = 0;\n\nvar UID_HASH_KEY = '__immutablehash__';\nif (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n}\n\nvar STRING_HASH_CACHE_MIN_STRLEN = 16;\nvar STRING_HASH_CACHE_MAX_SIZE = 255;\nvar STRING_HASH_CACHE_SIZE = 0;\nvar stringHashCache = {};\n\nvar ToKeyedSequence = /*@__PURE__*/(function (KeyedSeq) {\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n if ( KeyedSeq ) ToKeyedSequence.__proto__ = KeyedSeq;\n ToKeyedSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n ToKeyedSequence.prototype.constructor = ToKeyedSequence;\n\n ToKeyedSequence.prototype.get = function get (key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function has (key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function valueSeq () {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function reverse () {\n var this$1$1 = this;\n\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function () { return this$1$1._iter.toSeq().reverse(); };\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function () { return this$1$1._iter.toSeq().map(mapper, context); };\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v, k) { return fn(v, k, this$1$1); }, reverse);\n };\n\n ToKeyedSequence.prototype.__iterator = function __iterator (type, reverse) {\n return this._iter.__iterator(type, reverse);\n };\n\n return ToKeyedSequence;\n}(KeyedSeq));\nToKeyedSequence.prototype[IS_ORDERED_SYMBOL] = true;\n\nvar ToIndexedSequence = /*@__PURE__*/(function (IndexedSeq) {\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( IndexedSeq ) ToIndexedSequence.__proto__ = IndexedSeq;\n ToIndexedSequence.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n ToIndexedSequence.prototype.constructor = ToIndexedSequence;\n\n ToIndexedSequence.prototype.includes = function includes (value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(this);\n return this._iter.__iterate(\n function (v) { return fn(v, reverse ? this$1$1.size - ++i : i++, this$1$1); },\n reverse\n );\n };\n\n ToIndexedSequence.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var i = 0;\n reverse && ensureSize(this);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(\n type,\n reverse ? this$1$1.size - ++i : i++,\n step.value,\n step\n );\n });\n };\n\n return ToIndexedSequence;\n}(IndexedSeq));\n\nvar ToSetSequence = /*@__PURE__*/(function (SetSeq) {\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n if ( SetSeq ) ToSetSequence.__proto__ = SetSeq;\n ToSetSequence.prototype = Object.create( SetSeq && SetSeq.prototype );\n ToSetSequence.prototype.constructor = ToSetSequence;\n\n ToSetSequence.prototype.has = function has (key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (v) { return fn(v, v, this$1$1); }, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n return step.done\n ? step\n : iteratorValue(type, step.value, step.value, step);\n });\n };\n\n return ToSetSequence;\n}(SetSeq));\n\nvar FromEntriesSequence = /*@__PURE__*/(function (KeyedSeq) {\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n if ( KeyedSeq ) FromEntriesSequence.__proto__ = KeyedSeq;\n FromEntriesSequence.prototype = Object.create( KeyedSeq && KeyedSeq.prototype );\n FromEntriesSequence.prototype.constructor = FromEntriesSequence;\n\n FromEntriesSequence.prototype.entrySeq = function entrySeq () {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._iter.__iterate(function (entry) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return fn(\n indexedCollection ? entry.get(1) : entry[1],\n indexedCollection ? entry.get(0) : entry[0],\n this$1$1\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function __iterator (type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedCollection = isCollection(entry);\n return iteratorValue(\n type,\n indexedCollection ? entry.get(0) : entry[0],\n indexedCollection ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n return FromEntriesSequence;\n}(KeyedSeq));\n\nToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\nfunction flipFactory(collection) {\n var flipSequence = makeSequence(collection);\n flipSequence._iter = collection;\n flipSequence.size = collection.size;\n flipSequence.flip = function () { return collection; };\n flipSequence.reverse = function () {\n var reversedSequence = collection.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function () { return collection.reverse(); };\n return reversedSequence;\n };\n flipSequence.has = function (key) { return collection.includes(key); };\n flipSequence.includes = function (key) { return collection.has(key); };\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(function (v, k) { return fn(k, v, this$1$1) !== false; }, reverse);\n };\n flipSequence.__iteratorUncached = function (type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = collection.__iterator(type, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return collection.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n };\n return flipSequence;\n}\n\nfunction mapFactory(collection, mapper, context) {\n var mappedSequence = makeSequence(collection);\n mappedSequence.size = collection.size;\n mappedSequence.has = function (key) { return collection.has(key); };\n mappedSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v === NOT_SET\n ? notSetValue\n : mapper.call(context, v, key, collection);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n return collection.__iterate(\n function (v, k, c) { return fn(mapper.call(context, v, k, c), k, this$1$1) !== false; },\n reverse\n );\n };\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, collection),\n step\n );\n });\n };\n return mappedSequence;\n}\n\nfunction reverseFactory(collection, useKeys) {\n var this$1$1 = this;\n\n var reversedSequence = makeSequence(collection);\n reversedSequence._iter = collection;\n reversedSequence.size = collection.size;\n reversedSequence.reverse = function () { return collection; };\n if (collection.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(collection);\n flipSequence.reverse = function () { return collection.flip(); };\n return flipSequence;\n };\n }\n reversedSequence.get = function (key, notSetValue) { return collection.get(useKeys ? key : -1 - key, notSetValue); };\n reversedSequence.has = function (key) { return collection.has(useKeys ? key : -1 - key); };\n reversedSequence.includes = function (value) { return collection.includes(value); };\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {\n var this$1$1 = this;\n\n var i = 0;\n reverse && ensureSize(collection);\n return collection.__iterate(\n function (v, k) { return fn(v, useKeys ? k : reverse ? this$1$1.size - ++i : i++, this$1$1); },\n !reverse\n );\n };\n reversedSequence.__iterator = function (type, reverse) {\n var i = 0;\n reverse && ensureSize(collection);\n var iterator = collection.__iterator(ITERATE_ENTRIES, !reverse);\n return new Iterator(function () {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n return iteratorValue(\n type,\n useKeys ? entry[0] : reverse ? this$1$1.size - ++i : i++,\n entry[1],\n step\n );\n });\n };\n return reversedSequence;\n}\n\nfunction filterFactory(collection, predicate, context, useKeys) {\n var filterSequence = makeSequence(collection);\n if (useKeys) {\n filterSequence.has = function (key) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, collection);\n };\n filterSequence.get = function (key, notSetValue) {\n var v = collection.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, collection)\n ? v\n : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function () {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, collection)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n };\n return filterSequence;\n}\n\nfunction countByFactory(collection, grouper, context) {\n var groups = Map().asMutable();\n collection.__iterate(function (v, k) {\n groups.update(grouper.call(context, v, k, collection), 0, function (a) { return a + 1; });\n });\n return groups.asImmutable();\n}\n\nfunction groupByFactory(collection, grouper, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = (isOrdered(collection) ? OrderedMap() : Map()).asMutable();\n collection.__iterate(function (v, k) {\n groups.update(\n grouper.call(context, v, k, collection),\n function (a) { return ((a = a || []), a.push(isKeyedIter ? [k, v] : v), a); }\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); }).asImmutable();\n}\n\nfunction partitionFactory(collection, predicate, context) {\n var isKeyedIter = isKeyed(collection);\n var groups = [[], []];\n collection.__iterate(function (v, k) {\n groups[predicate.call(context, v, k, collection) ? 1 : 0].push(\n isKeyedIter ? [k, v] : v\n );\n });\n var coerce = collectionClass(collection);\n return groups.map(function (arr) { return reify(collection, coerce(arr)); });\n}\n\nfunction sliceFactory(collection, begin, end, useKeys) {\n var originalSize = collection.size;\n\n if (wholeSlice(begin, end, originalSize)) {\n return collection;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this collection's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(collection.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(collection);\n\n // If collection.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size =\n sliceSize === 0 ? sliceSize : (collection.size && sliceSize) || undefined;\n\n if (!useKeys && isSeq(collection) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize\n ? collection.get(index + resolvedBegin, notSetValue)\n : notSetValue;\n };\n }\n\n sliceSeq.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return (\n fn(v, useKeys ? k : iterations - 1, this$1$1) !== false &&\n iterations !== sliceSize\n );\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function (type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n if (sliceSize === 0) {\n return new Iterator(iteratorDone);\n }\n var iterator = collection.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function () {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES || step.done) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n }\n return iteratorValue(type, iterations - 1, step.value[1], step);\n });\n };\n\n return sliceSeq;\n}\n\nfunction takeWhileFactory(collection, predicate, context) {\n var takeSequence = makeSequence(collection);\n takeSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n collection.__iterate(\n function (v, k, c) { return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$1$1); }\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function () {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$1$1)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n}\n\nfunction skipWhileFactory(collection, predicate, context, useKeys) {\n var skipSequence = makeSequence(collection);\n skipSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n collection.__iterate(function (v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$1$1);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function (type, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function () {\n var step;\n var k;\n var v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n }\n if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n }\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$1$1));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n}\n\nfunction concatFactory(collection, values) {\n var isKeyedCollection = isKeyed(collection);\n var iters = [collection]\n .concat(values)\n .map(function (v) {\n if (!isCollection(v)) {\n v = isKeyedCollection\n ? keyedSeqFromValue(v)\n : indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedCollection) {\n v = KeyedCollection(v);\n }\n return v;\n })\n .filter(function (v) { return v.size !== 0; });\n\n if (iters.length === 0) {\n return collection;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (\n singleton === collection ||\n (isKeyedCollection && isKeyed(singleton)) ||\n (isIndexed(collection) && isIndexed(singleton))\n ) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedCollection) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(collection)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(function (sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n }, 0);\n return concatSeq;\n}\n\nfunction flattenFactory(collection, depth, useKeys) {\n var flatSequence = makeSequence(collection);\n flatSequence.__iterateUncached = function (fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {\n iter.__iterate(function (v, k) {\n if ((!depth || currentDepth < depth) && isCollection(v)) {\n flatDeep(v, currentDepth + 1);\n } else {\n iterations++;\n if (fn(v, useKeys ? k : iterations - 1, flatSequence) === false) {\n stopped = true;\n }\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(collection, 0);\n return iterations;\n };\n flatSequence.__iteratorUncached = function (type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = collection.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function () {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isCollection(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n };\n return flatSequence;\n}\n\nfunction flatMapFactory(collection, mapper, context) {\n var coerce = collectionClass(collection);\n return collection\n .toSeq()\n .map(function (v, k) { return coerce(mapper.call(context, v, k, collection)); })\n .flatten(true);\n}\n\nfunction interposeFactory(collection, separator) {\n var interposedSequence = makeSequence(collection);\n interposedSequence.size = collection.size && collection.size * 2 - 1;\n interposedSequence.__iterateUncached = function (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n collection.__iterate(\n function (v) { return (!iterations || fn(separator, iterations++, this$1$1) !== false) &&\n fn(v, iterations++, this$1$1) !== false; },\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = collection.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function () {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2\n ? iteratorValue(type, iterations++, separator)\n : iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n}\n\nfunction sortFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedCollection = isKeyed(collection);\n var index = 0;\n var entries = collection\n .toSeq()\n .map(function (v, k) { return [k, v, index++, mapper ? mapper(v, k, collection) : v]; })\n .valueSeq()\n .toArray();\n entries\n .sort(function (a, b) { return comparator(a[3], b[3]) || a[2] - b[2]; })\n .forEach(\n isKeyedCollection\n ? function (v, i) {\n entries[i].length = 2;\n }\n : function (v, i) {\n entries[i] = v[1];\n }\n );\n return isKeyedCollection\n ? KeyedSeq(entries)\n : isIndexed(collection)\n ? IndexedSeq(entries)\n : SetSeq(entries);\n}\n\nfunction maxFactory(collection, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = collection\n .toSeq()\n .map(function (v, k) { return [v, mapper(v, k, collection)]; })\n .reduce(function (a, b) { return (maxCompare(comparator, a[1], b[1]) ? b : a); });\n return entry && entry[0];\n }\n return collection.reduce(function (a, b) { return (maxCompare(comparator, a, b) ? b : a); });\n}\n\nfunction maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (\n (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) ||\n comp > 0\n );\n}\n\nfunction zipWithFactory(keyIter, zipper, iters, zipAll) {\n var zipSequence = makeSequence(keyIter);\n var sizes = new ArraySeq(iters).map(function (i) { return i.size; });\n zipSequence.size = zipAll ? sizes.max() : sizes.min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function (fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function (type, reverse) {\n var iterators = iters.map(\n function (i) { return ((i = Collection(i)), getIterator(reverse ? i.reverse() : i)); }\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function () {\n var steps;\n if (!isDone) {\n steps = iterators.map(function (i) { return i.next(); });\n isDone = zipAll ? steps.every(function (s) { return s.done; }) : steps.some(function (s) { return s.done; });\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(\n null,\n steps.map(function (s) { return s.value; })\n )\n );\n });\n };\n return zipSequence;\n}\n\n// #pragma Helper Functions\n\nfunction reify(iter, seq) {\n return iter === seq ? iter : isSeq(iter) ? seq : iter.constructor(seq);\n}\n\nfunction validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n}\n\nfunction collectionClass(collection) {\n return isKeyed(collection)\n ? KeyedCollection\n : isIndexed(collection)\n ? IndexedCollection\n : SetCollection;\n}\n\nfunction makeSequence(collection) {\n return Object.create(\n (isKeyed(collection)\n ? KeyedSeq\n : isIndexed(collection)\n ? IndexedSeq\n : SetSeq\n ).prototype\n );\n}\n\nfunction cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n }\n return Seq.prototype.cacheResult.call(this);\n}\n\nfunction defaultComparator(a, b) {\n if (a === undefined && b === undefined) {\n return 0;\n }\n\n if (a === undefined) {\n return 1;\n }\n\n if (b === undefined) {\n return -1;\n }\n\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\nfunction arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n}\n\nfunction invariant(condition, error) {\n if (!condition) { throw new Error(error); }\n}\n\nfunction assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n}\n\nfunction coerceKeyPath(keyPath) {\n if (isArrayLike(keyPath) && typeof keyPath !== 'string') {\n return keyPath;\n }\n if (isOrdered(keyPath)) {\n return keyPath.toArray();\n }\n throw new TypeError(\n 'Invalid keyPath: expected Ordered Collection or Array: ' + keyPath\n );\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isPlainObject(value) {\n // The base prototype's toString deals with Argument objects and native namespaces like Math\n if (\n !value ||\n typeof value !== 'object' ||\n toString.call(value) !== '[object Object]'\n ) {\n return false;\n }\n\n var proto = Object.getPrototypeOf(value);\n if (proto === null) {\n return true;\n }\n\n // Iteratively going up the prototype chain is needed for cross-realm environments (differing contexts, iframes, etc)\n var parentProto = proto;\n var nextProto = Object.getPrototypeOf(proto);\n while (nextProto !== null) {\n parentProto = nextProto;\n nextProto = Object.getPrototypeOf(parentProto);\n }\n return parentProto === proto;\n}\n\n/**\n * Returns true if the value is a potentially-persistent data structure, either\n * provided by Immutable.js or a plain Array or Object.\n */\nfunction isDataStructure(value) {\n return (\n typeof value === 'object' &&\n (isImmutable(value) || Array.isArray(value) || isPlainObject(value))\n );\n}\n\nfunction quoteString(value) {\n try {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n } catch (_ignoreError) {\n return JSON.stringify(value);\n }\n}\n\nfunction has(collection, key) {\n return isImmutable(collection)\n ? collection.has(key)\n : isDataStructure(collection) && hasOwnProperty.call(collection, key);\n}\n\nfunction get(collection, key, notSetValue) {\n return isImmutable(collection)\n ? collection.get(key, notSetValue)\n : !has(collection, key)\n ? notSetValue\n : typeof collection.get === 'function'\n ? collection.get(key)\n : collection[key];\n}\n\nfunction shallowCopy(from) {\n if (Array.isArray(from)) {\n return arrCopy(from);\n }\n var to = {};\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n return to;\n}\n\nfunction remove(collection, key) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.remove) {\n throw new TypeError(\n 'Cannot update immutable value without .remove() method: ' + collection\n );\n }\n return collection.remove(key);\n }\n if (!hasOwnProperty.call(collection, key)) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n if (Array.isArray(collectionCopy)) {\n collectionCopy.splice(key, 1);\n } else {\n delete collectionCopy[key];\n }\n return collectionCopy;\n}\n\nfunction set(collection, key, value) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot update non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n if (!collection.set) {\n throw new TypeError(\n 'Cannot update immutable value without .set() method: ' + collection\n );\n }\n return collection.set(key, value);\n }\n if (hasOwnProperty.call(collection, key) && value === collection[key]) {\n return collection;\n }\n var collectionCopy = shallowCopy(collection);\n collectionCopy[key] = value;\n return collectionCopy;\n}\n\nfunction updateIn$1(collection, keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeeply(\n isImmutable(collection),\n collection,\n coerceKeyPath(keyPath),\n 0,\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? notSetValue : updatedValue;\n}\n\nfunction updateInDeeply(\n inImmutable,\n existing,\n keyPath,\n i,\n notSetValue,\n updater\n) {\n var wasNotSet = existing === NOT_SET;\n if (i === keyPath.length) {\n var existingValue = wasNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n if (!wasNotSet && !isDataStructure(existing)) {\n throw new TypeError(\n 'Cannot update within non-data-structure value in path [' +\n keyPath.slice(0, i).map(quoteString) +\n ']: ' +\n existing\n );\n }\n var key = keyPath[i];\n var nextExisting = wasNotSet ? NOT_SET : get(existing, key, NOT_SET);\n var nextUpdated = updateInDeeply(\n nextExisting === NOT_SET ? inImmutable : isImmutable(nextExisting),\n nextExisting,\n keyPath,\n i + 1,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting\n ? existing\n : nextUpdated === NOT_SET\n ? remove(existing, key)\n : set(\n wasNotSet ? (inImmutable ? emptyMap() : {}) : existing,\n key,\n nextUpdated\n );\n}\n\nfunction setIn$1(collection, keyPath, value) {\n return updateIn$1(collection, keyPath, NOT_SET, function () { return value; });\n}\n\nfunction setIn(keyPath, v) {\n return setIn$1(this, keyPath, v);\n}\n\nfunction removeIn(collection, keyPath) {\n return updateIn$1(collection, keyPath, function () { return NOT_SET; });\n}\n\nfunction deleteIn(keyPath) {\n return removeIn(this, keyPath);\n}\n\nfunction update$1(collection, key, notSetValue, updater) {\n return updateIn$1(collection, [key], notSetValue, updater);\n}\n\nfunction update(key, notSetValue, updater) {\n return arguments.length === 1\n ? key(this)\n : update$1(this, key, notSetValue, updater);\n}\n\nfunction updateIn(keyPath, notSetValue, updater) {\n return updateIn$1(this, keyPath, notSetValue, updater);\n}\n\nfunction merge$1() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeIntoKeyedWith(this, iters);\n}\n\nfunction mergeWith$1(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n if (typeof merger !== 'function') {\n throw new TypeError('Invalid merger function: ' + merger);\n }\n return mergeIntoKeyedWith(this, iters, merger);\n}\n\nfunction mergeIntoKeyedWith(collection, collections, merger) {\n var iters = [];\n for (var ii = 0; ii < collections.length; ii++) {\n var collection$1 = KeyedCollection(collections[ii]);\n if (collection$1.size !== 0) {\n iters.push(collection$1);\n }\n }\n if (iters.length === 0) {\n return collection;\n }\n if (\n collection.toSeq().size === 0 &&\n !collection.__ownerID &&\n iters.length === 1\n ) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function (collection) {\n var mergeIntoCollection = merger\n ? function (value, key) {\n update$1(collection, key, NOT_SET, function (oldVal) { return oldVal === NOT_SET ? value : merger(oldVal, value, key); }\n );\n }\n : function (value, key) {\n collection.set(key, value);\n };\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoCollection);\n }\n });\n}\n\nfunction merge(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeWithSources(collection, sources);\n}\n\nfunction mergeWith(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeWithSources(collection, sources, merger);\n}\n\nfunction mergeDeep$1(collection) {\n var sources = [], len = arguments.length - 1;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(collection, sources);\n}\n\nfunction mergeDeepWith$1(merger, collection) {\n var sources = [], len = arguments.length - 2;\n while ( len-- > 0 ) sources[ len ] = arguments[ len + 2 ];\n\n return mergeDeepWithSources(collection, sources, merger);\n}\n\nfunction mergeDeepWithSources(collection, sources, merger) {\n return mergeWithSources(collection, sources, deepMergerWith(merger));\n}\n\nfunction mergeWithSources(collection, sources, merger) {\n if (!isDataStructure(collection)) {\n throw new TypeError(\n 'Cannot merge into non-data-structure value: ' + collection\n );\n }\n if (isImmutable(collection)) {\n return typeof merger === 'function' && collection.mergeWith\n ? collection.mergeWith.apply(collection, [ merger ].concat( sources ))\n : collection.merge\n ? collection.merge.apply(collection, sources)\n : collection.concat.apply(collection, sources);\n }\n var isArray = Array.isArray(collection);\n var merged = collection;\n var Collection = isArray ? IndexedCollection : KeyedCollection;\n var mergeItem = isArray\n ? function (value) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged.push(value);\n }\n : function (value, key) {\n var hasVal = hasOwnProperty.call(merged, key);\n var nextVal =\n hasVal && merger ? merger(merged[key], value, key) : value;\n if (!hasVal || nextVal !== merged[key]) {\n // Copy on write\n if (merged === collection) {\n merged = shallowCopy(merged);\n }\n merged[key] = nextVal;\n }\n };\n for (var i = 0; i < sources.length; i++) {\n Collection(sources[i]).forEach(mergeItem);\n }\n return merged;\n}\n\nfunction deepMergerWith(merger) {\n function deepMerger(oldValue, newValue, key) {\n return isDataStructure(oldValue) &&\n isDataStructure(newValue) &&\n areMergeable(oldValue, newValue)\n ? mergeWithSources(oldValue, [newValue], deepMerger)\n : merger\n ? merger(oldValue, newValue, key)\n : newValue;\n }\n return deepMerger;\n}\n\n/**\n * It's unclear what the desired behavior is for merging two collections that\n * fall into separate categories between keyed, indexed, or set-like, so we only\n * consider them mergeable if they fall into the same category.\n */\nfunction areMergeable(oldDataStructure, newDataStructure) {\n var oldSeq = Seq(oldDataStructure);\n var newSeq = Seq(newDataStructure);\n // This logic assumes that a sequence can only fall into one of the three\n // categories mentioned above (since there's no `isSetLike()` method).\n return (\n isIndexed(oldSeq) === isIndexed(newSeq) &&\n isKeyed(oldSeq) === isKeyed(newSeq)\n );\n}\n\nfunction mergeDeep() {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n return mergeDeepWithSources(this, iters);\n}\n\nfunction mergeDeepWith(merger) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return mergeDeepWithSources(this, iters, merger);\n}\n\nfunction mergeIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeWithSources(m, iters); });\n}\n\nfunction mergeDeepIn(keyPath) {\n var iters = [], len = arguments.length - 1;\n while ( len-- > 0 ) iters[ len ] = arguments[ len + 1 ];\n\n return updateIn$1(this, keyPath, emptyMap(), function (m) { return mergeDeepWithSources(m, iters); }\n );\n}\n\nfunction withMutations(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n}\n\nfunction asMutable() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n}\n\nfunction asImmutable() {\n return this.__ensureOwner();\n}\n\nfunction wasAltered() {\n return this.__altered;\n}\n\nvar Map = /*@__PURE__*/(function (KeyedCollection) {\n function Map(value) {\n return value === undefined || value === null\n ? emptyMap()\n : isMap(value) && !isOrdered(value)\n ? value\n : emptyMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( KeyedCollection ) Map.__proto__ = KeyedCollection;\n Map.prototype = Object.create( KeyedCollection && KeyedCollection.prototype );\n Map.prototype.constructor = Map;\n\n Map.of = function of () {\n var keyValues = [], len = arguments.length;\n while ( len-- ) keyValues[ len ] = arguments[ len ];\n\n return emptyMap().withMutations(function (map) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function toString () {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function get (k, notSetValue) {\n return this._root\n ? this._root.get(0, undefined, k, notSetValue)\n : notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function set (k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.remove = function remove (k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteAll = function deleteAll (keys) {\n var collection = Collection(keys);\n\n if (collection.size === 0) {\n return this;\n }\n\n return this.withMutations(function (map) {\n collection.forEach(function (key) { return map.remove(key); });\n });\n };\n\n Map.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n Map.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (map) {\n map.forEach(function (value, key) {\n map.set(key, mapper.call(context, value, key, this$1$1));\n });\n });\n };\n\n // @pragma Mutability\n\n Map.prototype.__iterator = function __iterator (type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n var iterations = 0;\n this._root &&\n this._root.iterate(function (entry) {\n iterations++;\n return fn(entry[1], entry[0], this$1$1);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n return Map;\n}(KeyedCollection));\n\nMap.isMap = isMap;\n\nvar MapPrototype = Map.prototype;\nMapPrototype[IS_MAP_SYMBOL] = true;\nMapPrototype[DELETE] = MapPrototype.remove;\nMapPrototype.removeAll = MapPrototype.deleteAll;\nMapPrototype.setIn = setIn;\nMapPrototype.removeIn = MapPrototype.deleteIn = deleteIn;\nMapPrototype.update = update;\nMapPrototype.updateIn = updateIn;\nMapPrototype.merge = MapPrototype.concat = merge$1;\nMapPrototype.mergeWith = mergeWith$1;\nMapPrototype.mergeDeep = mergeDeep;\nMapPrototype.mergeDeepWith = mergeDeepWith;\nMapPrototype.mergeIn = mergeIn;\nMapPrototype.mergeDeepIn = mergeDeepIn;\nMapPrototype.withMutations = withMutations;\nMapPrototype.wasAltered = wasAltered;\nMapPrototype.asImmutable = asImmutable;\nMapPrototype['@@transducer/init'] = MapPrototype.asMutable = asMutable;\nMapPrototype['@@transducer/step'] = function (result, arr) {\n return result.set(arr[0], arr[1]);\n};\nMapPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\n// #pragma Trie Nodes\n\nvar ArrayMapNode = function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n};\n\nArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n};\n\nvar BitmapIndexedNode = function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n};\n\nBitmapIndexedNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = 1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK);\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0\n ? notSetValue\n : this.nodes[popCount(bitmap & (bit - 1))].get(\n shift + SHIFT,\n keyHash,\n key,\n notSetValue\n );\n};\n\nBitmapIndexedNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (\n exists &&\n !newNode &&\n nodes.length === 2 &&\n isLeafNode(nodes[idx ^ 1])\n ) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? (newNode ? bitmap : bitmap ^ bit) : bitmap | bit;\n var newNodes = exists\n ? newNode\n ? setAt(nodes, idx, newNode, isEditable)\n : spliceOut(nodes, idx, isEditable)\n : spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n};\n\nvar HashArrayMapNode = function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n};\n\nHashArrayMapNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node\n ? node.get(shift + SHIFT, keyHash, key, notSetValue)\n : notSetValue;\n};\n\nHashArrayMapNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(\n node,\n ownerID,\n shift + SHIFT,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setAt(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n};\n\nvar HashCollisionNode = function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n};\n\nHashCollisionNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n};\n\nHashCollisionNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n var len = entries.length;\n for (; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1\n ? newEntries.pop()\n : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n};\n\nvar ValueNode = function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n};\n\nValueNode.prototype.get = function get (shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n};\n\nValueNode.prototype.update = function update (ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n};\n\n// #pragma Iterators\n\nArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate =\n function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n };\n\nBitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate =\n function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n };\n\n// eslint-disable-next-line no-unused-vars\nValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n};\n\nvar MapIterator = /*@__PURE__*/(function (Iterator) {\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n if ( Iterator ) MapIterator.__proto__ = Iterator;\n MapIterator.prototype = Object.create( Iterator && Iterator.prototype );\n MapIterator.prototype.constructor = MapIterator;\n\n MapIterator.prototype.next = function next () {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex = (void 0);\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(\n type,\n node.entries[this._reverse ? maxIndex - index : index]\n );\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n return MapIterator;\n}(Iterator));\n\nfunction mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n}\n\nfunction mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev,\n };\n}\n\nfunction makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_MAP;\nfunction emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n}\n\nfunction updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef();\n var didAlter = MakeRef();\n newRoot = updateNode(\n map._root,\n map.__ownerID,\n 0,\n undefined,\n k,\n v,\n didChangeSize,\n didAlter\n );\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? (v === NOT_SET ? -1 : 1) : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n}\n\nfunction updateNode(\n node,\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(\n ownerID,\n shift,\n keyHash,\n key,\n value,\n didChangeSize,\n didAlter\n );\n}\n\nfunction isLeafNode(node) {\n return (\n node.constructor === ValueNode || node.constructor === HashCollisionNode\n );\n}\n\nfunction mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes =\n idx1 === idx2\n ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)]\n : ((newNode = new ValueNode(ownerID, keyHash, entry)),\n idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n}\n\nfunction createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n}\n\nfunction packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n}\n\nfunction expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n}\n\nfunction popCount(x) {\n x -= (x >> 1) & 0x55555555;\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x += x >> 8;\n x += x >> 16;\n return x & 0x7f;\n}\n\nfunction setAt(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n}\n\nfunction spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n}\n\nfunction spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n}\n\nvar MAX_ARRAY_MAP_SIZE = SIZE / 4;\nvar MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\nvar MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\nvar IS_LIST_SYMBOL = '@@__IMMUTABLE_LIST__@@';\n\nfunction isList(maybeList) {\n return Boolean(maybeList && maybeList[IS_LIST_SYMBOL]);\n}\n\nvar List = /*@__PURE__*/(function (IndexedCollection) {\n function List(value) {\n var empty = emptyList();\n if (value === undefined || value === null) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedCollection(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function (list) {\n list.setSize(size);\n iter.forEach(function (v, i) { return list.set(i, v); });\n });\n }\n\n if ( IndexedCollection ) List.__proto__ = IndexedCollection;\n List.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n List.prototype.constructor = List;\n\n List.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function toString () {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function get (index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function set (index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function remove (index) {\n return !this.has(index)\n ? this\n : index === 0\n ? this.shift()\n : index === this.size - 1\n ? this.pop()\n : this.splice(index, 1);\n };\n\n List.prototype.insert = function insert (index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function push (/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function (list) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function pop () {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function unshift (/*...values*/) {\n var values = arguments;\n return this.withMutations(function (list) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function shift () {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.concat = function concat (/*...collections*/) {\n var arguments$1 = arguments;\n\n var seqs = [];\n for (var i = 0; i < arguments.length; i++) {\n var argument = arguments$1[i];\n var seq = IndexedCollection(\n typeof argument !== 'string' && hasIterator(argument)\n ? argument\n : [argument]\n );\n if (seq.size !== 0) {\n seqs.push(seq);\n }\n }\n if (seqs.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && seqs.length === 1) {\n return this.constructor(seqs[0]);\n }\n return this.withMutations(function (list) {\n seqs.forEach(function (seq) { return seq.forEach(function (value) { return list.push(value); }); });\n });\n };\n\n List.prototype.setSize = function setSize (size) {\n return setListBounds(this, 0, size);\n };\n\n List.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n return this.withMutations(function (list) {\n for (var i = 0; i < this$1$1.size; i++) {\n list.set(i, mapper.call(context, list.get(i), i, this$1$1));\n }\n });\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function slice (begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function __iterator (type, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n return new Iterator(function () {\n var value = values();\n return value === DONE\n ? iteratorDone()\n : iteratorValue(type, reverse ? --index : index++, value);\n });\n };\n\n List.prototype.__iterate = function __iterate (fn, reverse) {\n var index = reverse ? this.size : 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, reverse ? --index : index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyList();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeList(\n this._origin,\n this._capacity,\n this._level,\n this._root,\n this._tail,\n ownerID,\n this.__hash\n );\n };\n\n return List;\n}(IndexedCollection));\n\nList.isList = isList;\n\nvar ListPrototype = List.prototype;\nListPrototype[IS_LIST_SYMBOL] = true;\nListPrototype[DELETE] = ListPrototype.remove;\nListPrototype.merge = ListPrototype.concat;\nListPrototype.setIn = setIn;\nListPrototype.deleteIn = ListPrototype.removeIn = deleteIn;\nListPrototype.update = update;\nListPrototype.updateIn = updateIn;\nListPrototype.mergeIn = mergeIn;\nListPrototype.mergeDeepIn = mergeDeepIn;\nListPrototype.withMutations = withMutations;\nListPrototype.wasAltered = wasAltered;\nListPrototype.asImmutable = asImmutable;\nListPrototype['@@transducer/init'] = ListPrototype.asMutable = asMutable;\nListPrototype['@@transducer/step'] = function (result, arr) {\n return result.push(arr);\n};\nListPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nvar VNode = function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n};\n\n// TODO: seems like these methods are very similar\n\nVNode.prototype.removeBefore = function removeBefore (ownerID, level, index) {\n if (index === level ? 1 << level : this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild =\n oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n};\n\nVNode.prototype.removeAfter = function removeAfter (ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild =\n oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n};\n\nvar DONE = {};\n\nfunction iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0\n ? iterateLeaf(node, offset)\n : iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function () {\n while (true) {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx],\n level - SHIFT,\n offset + (idx << level)\n );\n }\n };\n }\n}\n\nfunction makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n}\n\nvar EMPTY_LIST;\nfunction emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n}\n\nfunction updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function (list) {\n index < 0\n ? setListBounds(list, index).set(0, value)\n : setListBounds(list, 0, index + 1).set(index, value);\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef();\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(\n newRoot,\n list.__ownerID,\n list._level,\n index,\n value,\n didAlter\n );\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n}\n\nfunction updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(\n lowerNode,\n ownerID,\n level - SHIFT,\n index,\n value,\n didAlter\n );\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n if (didAlter) {\n SetRef(didAlter);\n }\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n}\n\nfunction editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n}\n\nfunction listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n}\n\nfunction setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin |= 0;\n }\n if (end !== undefined) {\n end |= 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity =\n end === undefined\n ? oldCapacity\n : end < 0\n ? oldCapacity + end\n : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [undefined, newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(\n newRoot && newRoot.array.length ? [newRoot] : [],\n owner\n );\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail =\n newTailOffset < oldTailOffset\n ? listNodeFor(list, newCapacity - 1)\n : newTailOffset > oldTailOffset\n ? new VNode([], owner)\n : oldTail;\n\n // Merge Tail into tree.\n if (\n oldTail &&\n newTailOffset > oldTailOffset &&\n newOrigin < oldCapacity &&\n oldTail.array.length\n ) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if ((beginIndex !== newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(\n owner,\n newLevel,\n newTailOffset - offsetShift\n );\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n}\n\nfunction getTailOffset(size) {\n return size < SIZE ? 0 : ((size - 1) >>> SHIFT) << SHIFT;\n}\n\nvar OrderedMap = /*@__PURE__*/(function (Map) {\n function OrderedMap(value) {\n return value === undefined || value === null\n ? emptyOrderedMap()\n : isOrderedMap(value)\n ? value\n : emptyOrderedMap().withMutations(function (map) {\n var iter = KeyedCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v, k) { return map.set(k, v); });\n });\n }\n\n if ( Map ) OrderedMap.__proto__ = Map;\n OrderedMap.prototype = Object.create( Map && Map.prototype );\n OrderedMap.prototype.constructor = OrderedMap;\n\n OrderedMap.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function toString () {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function get (k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n this.__altered = true;\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function set (k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function remove (k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._list.__iterate(\n function (entry) { return entry && fn(entry[1], entry[0], this$1$1); },\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function __iterator (type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return emptyOrderedMap();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n return OrderedMap;\n}(Map));\n\nOrderedMap.isOrderedMap = isOrderedMap;\n\nOrderedMap.prototype[IS_ORDERED_SYMBOL] = true;\nOrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\nfunction makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n omap.__altered = false;\n return omap;\n}\n\nvar EMPTY_ORDERED_MAP;\nfunction emptyOrderedMap() {\n return (\n EMPTY_ORDERED_MAP ||\n (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()))\n );\n}\n\nfunction updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) {\n // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function (entry, idx) { return entry !== undefined && i !== idx; });\n newMap = newList\n .toKeyedSeq()\n .map(function (entry) { return entry[0]; })\n .flip()\n .toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n omap.__altered = true;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n}\n\nvar IS_STACK_SYMBOL = '@@__IMMUTABLE_STACK__@@';\n\nfunction isStack(maybeStack) {\n return Boolean(maybeStack && maybeStack[IS_STACK_SYMBOL]);\n}\n\nvar Stack = /*@__PURE__*/(function (IndexedCollection) {\n function Stack(value) {\n return value === undefined || value === null\n ? emptyStack()\n : isStack(value)\n ? value\n : emptyStack().pushAll(value);\n }\n\n if ( IndexedCollection ) Stack.__proto__ = IndexedCollection;\n Stack.prototype = Object.create( IndexedCollection && IndexedCollection.prototype );\n Stack.prototype.constructor = Stack;\n\n Stack.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function toString () {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function get (index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function peek () {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function push (/*...values*/) {\n var arguments$1 = arguments;\n\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments$1[ii],\n next: head,\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function pushAll (iter) {\n iter = IndexedCollection(iter);\n if (iter.size === 0) {\n return this;\n }\n if (this.size === 0 && isStack(iter)) {\n return iter;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.__iterate(function (value) {\n newSize++;\n head = {\n value: value,\n next: head,\n };\n }, /* reverse */ true);\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function pop () {\n return this.slice(1);\n };\n\n Stack.prototype.clear = function clear () {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n if (this.size === 0) {\n return emptyStack();\n }\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterate(\n function (v, k) { return fn(v, k, this$1$1); },\n reverse\n );\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function __iterator (type, reverse) {\n if (reverse) {\n return new ArraySeq(this.toArray()).__iterator(type, reverse);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function () {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n return Stack;\n}(IndexedCollection));\n\nStack.isStack = isStack;\n\nvar StackPrototype = Stack.prototype;\nStackPrototype[IS_STACK_SYMBOL] = true;\nStackPrototype.shift = StackPrototype.pop;\nStackPrototype.unshift = StackPrototype.push;\nStackPrototype.unshiftAll = StackPrototype.pushAll;\nStackPrototype.withMutations = withMutations;\nStackPrototype.wasAltered = wasAltered;\nStackPrototype.asImmutable = asImmutable;\nStackPrototype['@@transducer/init'] = StackPrototype.asMutable = asMutable;\nStackPrototype['@@transducer/step'] = function (result, arr) {\n return result.unshift(arr);\n};\nStackPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nfunction makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n}\n\nvar EMPTY_STACK;\nfunction emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n}\n\nvar IS_SET_SYMBOL = '@@__IMMUTABLE_SET__@@';\n\nfunction isSet(maybeSet) {\n return Boolean(maybeSet && maybeSet[IS_SET_SYMBOL]);\n}\n\nfunction isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n}\n\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isCollection(b) ||\n (a.size !== undefined && b.size !== undefined && a.size !== b.size) ||\n (a.__hash !== undefined &&\n b.__hash !== undefined &&\n a.__hash !== b.__hash) ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return (\n b.every(function (v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done\n );\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function (v, k) {\n if (\n notAssociative\n ? !a.has(v)\n : flipped\n ? !is(v, a.get(k, NOT_SET))\n : !is(a.get(k, NOT_SET), v)\n ) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n}\n\nfunction mixin(ctor, methods) {\n var keyCopier = function (key) {\n ctor.prototype[key] = methods[key];\n };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n}\n\nfunction toJS(value) {\n if (!value || typeof value !== 'object') {\n return value;\n }\n if (!isCollection(value)) {\n if (!isDataStructure(value)) {\n return value;\n }\n value = Seq(value);\n }\n if (isKeyed(value)) {\n var result$1 = {};\n value.__iterate(function (v, k) {\n result$1[k] = toJS(v);\n });\n return result$1;\n }\n var result = [];\n value.__iterate(function (v) {\n result.push(toJS(v));\n });\n return result;\n}\n\nvar Set = /*@__PURE__*/(function (SetCollection) {\n function Set(value) {\n return value === undefined || value === null\n ? emptySet()\n : isSet(value) && !isOrdered(value)\n ? value\n : emptySet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( SetCollection ) Set.__proto__ = SetCollection;\n Set.prototype = Object.create( SetCollection && SetCollection.prototype );\n Set.prototype.constructor = Set;\n\n Set.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n Set.intersect = function intersect (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.intersect.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.union = function union (sets) {\n sets = Collection(sets).toArray();\n return sets.length\n ? SetPrototype.union.apply(Set(sets.pop()), sets)\n : emptySet();\n };\n\n Set.prototype.toString = function toString () {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function has (value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function add (value) {\n return updateSet(this, this._map.set(value, value));\n };\n\n Set.prototype.remove = function remove (value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function clear () {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.map = function map (mapper, context) {\n var this$1$1 = this;\n\n // keep track if the set is altered by the map function\n var didChanges = false;\n\n var newMap = updateSet(\n this,\n this._map.mapEntries(function (ref) {\n var v = ref[1];\n\n var mapped = mapper.call(context, v, v, this$1$1);\n\n if (mapped !== v) {\n didChanges = true;\n }\n\n return [mapped, mapped];\n }, context)\n );\n\n return didChanges ? newMap : this;\n };\n\n Set.prototype.union = function union () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n iters = iters.filter(function (x) { return x.size !== 0; });\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function (set) {\n for (var ii = 0; ii < iters.length; ii++) {\n if (typeof iters[ii] === 'string') {\n set.add(iters[ii]);\n } else {\n SetCollection(iters[ii]).forEach(function (value) { return set.add(value); });\n }\n }\n });\n };\n\n Set.prototype.intersect = function intersect () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (!iters.every(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.subtract = function subtract () {\n var iters = [], len = arguments.length;\n while ( len-- ) iters[ len ] = arguments[ len ];\n\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function (iter) { return SetCollection(iter); });\n var toRemove = [];\n this.forEach(function (value) {\n if (iters.some(function (iter) { return iter.includes(value); })) {\n toRemove.push(value);\n }\n });\n return this.withMutations(function (set) {\n toRemove.forEach(function (value) {\n set.remove(value);\n });\n });\n };\n\n Set.prototype.sort = function sort (comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function sortBy (mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function wasAltered () {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function __iterate (fn, reverse) {\n var this$1$1 = this;\n\n return this._map.__iterate(function (k) { return fn(k, k, this$1$1); }, reverse);\n };\n\n Set.prototype.__iterator = function __iterator (type, reverse) {\n return this._map.__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n if (this.size === 0) {\n return this.__empty();\n }\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n return Set;\n}(SetCollection));\n\nSet.isSet = isSet;\n\nvar SetPrototype = Set.prototype;\nSetPrototype[IS_SET_SYMBOL] = true;\nSetPrototype[DELETE] = SetPrototype.remove;\nSetPrototype.merge = SetPrototype.concat = SetPrototype.union;\nSetPrototype.withMutations = withMutations;\nSetPrototype.asImmutable = asImmutable;\nSetPrototype['@@transducer/init'] = SetPrototype.asMutable = asMutable;\nSetPrototype['@@transducer/step'] = function (result, arr) {\n return result.add(arr);\n};\nSetPrototype['@@transducer/result'] = function (obj) {\n return obj.asImmutable();\n};\n\nSetPrototype.__empty = emptySet;\nSetPrototype.__make = makeSet;\n\nfunction updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map\n ? set\n : newMap.size === 0\n ? set.__empty()\n : set.__make(newMap);\n}\n\nfunction makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_SET;\nfunction emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n}\n\n/**\n * Returns a lazy seq of nums from start (inclusive) to end\n * (exclusive), by step, where start defaults to 0, step to 1, and end to\n * infinity. When start is equal to end, returns empty list.\n */\nvar Range = /*@__PURE__*/(function (IndexedSeq) {\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n if ( IndexedSeq ) Range.__proto__ = IndexedSeq;\n Range.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Range.prototype.constructor = Range;\n\n Range.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Range []';\n }\n return (\n 'Range [ ' +\n this._start +\n '...' +\n this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]'\n );\n };\n\n Range.prototype.get = function get (index, notSetValue) {\n return this.has(index)\n ? this._start + wrapIndex(this, index) * this._step\n : notSetValue;\n };\n\n Range.prototype.includes = function includes (searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return (\n possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex)\n );\n };\n\n Range.prototype.slice = function slice (begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(\n this.get(begin, this._end),\n this.get(end, this._end),\n this._step\n );\n };\n\n Range.prototype.indexOf = function indexOf (searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index;\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n while (i !== size) {\n if (fn(value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n value += reverse ? -step : step;\n }\n return i;\n };\n\n Range.prototype.__iterator = function __iterator (type, reverse) {\n var size = this.size;\n var step = this._step;\n var value = reverse ? this._start + (size - 1) * step : this._start;\n var i = 0;\n return new Iterator(function () {\n if (i === size) {\n return iteratorDone();\n }\n var v = value;\n value += reverse ? -step : step;\n return iteratorValue(type, reverse ? size - ++i : i++, v);\n });\n };\n\n Range.prototype.equals = function equals (other) {\n return other instanceof Range\n ? this._start === other._start &&\n this._end === other._end &&\n this._step === other._step\n : deepEqual(this, other);\n };\n\n return Range;\n}(IndexedSeq));\n\nvar EMPTY_RANGE;\n\nfunction getIn$1(collection, searchKeyPath, notSetValue) {\n var keyPath = coerceKeyPath(searchKeyPath);\n var i = 0;\n while (i !== keyPath.length) {\n collection = get(collection, keyPath[i++], NOT_SET);\n if (collection === NOT_SET) {\n return notSetValue;\n }\n }\n return collection;\n}\n\nfunction getIn(searchKeyPath, notSetValue) {\n return getIn$1(this, searchKeyPath, notSetValue);\n}\n\nfunction hasIn$1(collection, keyPath) {\n return getIn$1(collection, keyPath, NOT_SET) !== NOT_SET;\n}\n\nfunction hasIn(searchKeyPath) {\n return hasIn$1(this, searchKeyPath);\n}\n\nfunction toObject() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function (v, k) {\n object[k] = v;\n });\n return object;\n}\n\n// Note: all of these methods are deprecated.\nCollection.isIterable = isCollection;\nCollection.isKeyed = isKeyed;\nCollection.isIndexed = isIndexed;\nCollection.isAssociative = isAssociative;\nCollection.isOrdered = isOrdered;\n\nCollection.Iterator = Iterator;\n\nmixin(Collection, {\n // ### Conversion to other types\n\n toArray: function toArray() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n var useTuples = isKeyed(this);\n var i = 0;\n this.__iterate(function (v, k) {\n // Keyed collections produce an array of tuples.\n array[i++] = useTuples ? [k, v] : v;\n });\n return array;\n },\n\n toIndexedSeq: function toIndexedSeq() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function toJS$1() {\n return toJS(this);\n },\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function toMap() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: toObject,\n\n toOrderedMap: function toOrderedMap() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function toOrderedSet() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function toSet() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function toSetSeq() {\n return new ToSetSequence(this);\n },\n\n toSeq: function toSeq() {\n return isIndexed(this)\n ? this.toIndexedSeq()\n : isKeyed(this)\n ? this.toKeyedSeq()\n : this.toSetSeq();\n },\n\n toStack: function toStack() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function toList() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n // ### Common JavaScript methods and properties\n\n toString: function toString() {\n return '[Collection]';\n },\n\n __toString: function __toString(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return (\n head +\n ' ' +\n this.toSeq().map(this.__toStringMapper).join(', ') +\n ' ' +\n tail\n );\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function concat() {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return reify(this, concatFactory(this, values));\n },\n\n includes: function includes(searchValue) {\n return this.some(function (value) { return is(value, searchValue); });\n },\n\n entries: function entries() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function every(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function (v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n partition: function partition(predicate, context) {\n return partitionFactory(this, predicate, context);\n },\n\n find: function find(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function forEach(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function join(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function (v) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function keys() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function map(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function reduce$1(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n false\n );\n },\n\n reduceRight: function reduceRight(reducer, initialReduction, context) {\n return reduce(\n this,\n reducer,\n initialReduction,\n context,\n arguments.length < 2,\n true\n );\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function some(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = false;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n returnValue = true;\n return false;\n }\n });\n return returnValue;\n },\n\n sort: function sort(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function values() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n // ### More sequential methods\n\n butLast: function butLast() {\n return this.slice(0, -1);\n },\n\n isEmpty: function isEmpty() {\n return this.size !== undefined ? this.size === 0 : !this.some(function () { return true; });\n },\n\n count: function count(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function countBy(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function equals(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function entrySeq() {\n var collection = this;\n if (collection._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(collection._cache);\n }\n var entriesSequence = collection.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function () { return collection.toSeq(); };\n return entriesSequence;\n },\n\n filterNot: function filterNot(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function findEntry(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function (v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function findKey(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function findLast(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function findLastEntry(predicate, context, notSetValue) {\n return this.toKeyedSeq()\n .reverse()\n .findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function findLastKey(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function first(notSetValue) {\n return this.find(returnTrue, null, notSetValue);\n },\n\n flatMap: function flatMap(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function fromEntrySeq() {\n return new FromEntriesSequence(this);\n },\n\n get: function get(searchKey, notSetValue) {\n return this.find(function (_, key) { return is(key, searchKey); }, undefined, notSetValue);\n },\n\n getIn: getIn,\n\n groupBy: function groupBy(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function has(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: hasIn,\n\n isSubset: function isSubset(iter) {\n iter = typeof iter.includes === 'function' ? iter : Collection(iter);\n return this.every(function (value) { return iter.includes(value); });\n },\n\n isSuperset: function isSuperset(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Collection(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function keyOf(searchValue) {\n return this.findKey(function (value) { return is(value, searchValue); });\n },\n\n keySeq: function keySeq() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function last(notSetValue) {\n return this.toSeq().reverse().first(notSetValue);\n },\n\n lastKeyOf: function lastKeyOf(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function max(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function maxBy(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function min(comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator\n );\n },\n\n minBy: function minBy(mapper, comparator) {\n return maxFactory(\n this,\n comparator ? neg(comparator) : defaultNegComparator,\n mapper\n );\n },\n\n rest: function rest() {\n return this.slice(1);\n },\n\n skip: function skip(amount) {\n return amount === 0 ? this : this.slice(Math.max(0, amount));\n },\n\n skipLast: function skipLast(amount) {\n return amount === 0 ? this : this.slice(0, -Math.max(0, amount));\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function skipUntil(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function sortBy(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function take(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function takeLast(amount) {\n return this.slice(-Math.max(0, amount));\n },\n\n takeWhile: function takeWhile(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function takeUntil(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n update: function update(fn) {\n return fn(this);\n },\n\n valueSeq: function valueSeq() {\n return this.toIndexedSeq();\n },\n\n // ### Hashable Object\n\n hashCode: function hashCode() {\n return this.__hash || (this.__hash = hashCollection(this));\n },\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n});\n\nvar CollectionPrototype = Collection.prototype;\nCollectionPrototype[IS_COLLECTION_SYMBOL] = true;\nCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.values;\nCollectionPrototype.toJSON = CollectionPrototype.toArray;\nCollectionPrototype.__toStringMapper = quoteString;\nCollectionPrototype.inspect = CollectionPrototype.toSource = function () {\n return this.toString();\n};\nCollectionPrototype.chain = CollectionPrototype.flatMap;\nCollectionPrototype.contains = CollectionPrototype.includes;\n\nmixin(KeyedCollection, {\n // ### More sequential methods\n\n flip: function flip() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function mapEntries(mapper, context) {\n var this$1$1 = this;\n\n var iterations = 0;\n return reify(\n this,\n this.toSeq()\n .map(function (v, k) { return mapper.call(context, [k, v], iterations++, this$1$1); })\n .fromEntrySeq()\n );\n },\n\n mapKeys: function mapKeys(mapper, context) {\n var this$1$1 = this;\n\n return reify(\n this,\n this.toSeq()\n .flip()\n .map(function (k, v) { return mapper.call(context, k, v, this$1$1); })\n .flip()\n );\n },\n});\n\nvar KeyedCollectionPrototype = KeyedCollection.prototype;\nKeyedCollectionPrototype[IS_KEYED_SYMBOL] = true;\nKeyedCollectionPrototype[ITERATOR_SYMBOL] = CollectionPrototype.entries;\nKeyedCollectionPrototype.toJSON = toObject;\nKeyedCollectionPrototype.__toStringMapper = function (v, k) { return quoteString(k) + ': ' + quoteString(v); };\n\nmixin(IndexedCollection, {\n // ### Conversion to other types\n\n toKeyedSeq: function toKeyedSeq() {\n return new ToKeyedSequence(this, false);\n },\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function filter(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function findIndex(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function indexOf(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function lastIndexOf(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function reverse() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function slice(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function splice(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum || 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1\n ? spliced\n : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n // ### More collection methods\n\n findLastIndex: function findLastIndex(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function first(notSetValue) {\n return this.get(0, notSetValue);\n },\n\n flatten: function flatten(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function get(index, notSetValue) {\n index = wrapIndex(this, index);\n return index < 0 ||\n this.size === Infinity ||\n (this.size !== undefined && index > this.size)\n ? notSetValue\n : this.find(function (_, key) { return key === index; }, undefined, notSetValue);\n },\n\n has: function has(index) {\n index = wrapIndex(this, index);\n return (\n index >= 0 &&\n (this.size !== undefined\n ? this.size === Infinity || index < this.size\n : this.indexOf(index) !== -1)\n );\n },\n\n interpose: function interpose(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function interleave(/*...collections*/) {\n var collections = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, collections);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * collections.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function keySeq() {\n return Range(0, this.size);\n },\n\n last: function last(notSetValue) {\n return this.get(-1, notSetValue);\n },\n\n skipWhile: function skipWhile(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function zip(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections));\n },\n\n zipAll: function zipAll(/*, ...collections */) {\n var collections = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, collections, true));\n },\n\n zipWith: function zipWith(zipper /*, ...collections */) {\n var collections = arrCopy(arguments);\n collections[0] = this;\n return reify(this, zipWithFactory(this, zipper, collections));\n },\n});\n\nvar IndexedCollectionPrototype = IndexedCollection.prototype;\nIndexedCollectionPrototype[IS_INDEXED_SYMBOL] = true;\nIndexedCollectionPrototype[IS_ORDERED_SYMBOL] = true;\n\nmixin(SetCollection, {\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function get(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function includes(value) {\n return this.has(value);\n },\n\n // ### More sequential methods\n\n keySeq: function keySeq() {\n return this.valueSeq();\n },\n});\n\nvar SetCollectionPrototype = SetCollection.prototype;\nSetCollectionPrototype.has = CollectionPrototype.includes;\nSetCollectionPrototype.contains = SetCollectionPrototype.includes;\nSetCollectionPrototype.keys = SetCollectionPrototype.values;\n\n// Mixin subclasses\n\nmixin(KeyedSeq, KeyedCollectionPrototype);\nmixin(IndexedSeq, IndexedCollectionPrototype);\nmixin(SetSeq, SetCollectionPrototype);\n\n// #pragma Helper functions\n\nfunction reduce(collection, reducer, reduction, context, useFirst, reverse) {\n assertNotInfinite(collection.size);\n collection.__iterate(function (v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n }, reverse);\n return reduction;\n}\n\nfunction keyMapper(v, k) {\n return k;\n}\n\nfunction entryMapper(v, k) {\n return [k, v];\n}\n\nfunction not(predicate) {\n return function () {\n return !predicate.apply(this, arguments);\n };\n}\n\nfunction neg(predicate) {\n return function () {\n return -predicate.apply(this, arguments);\n };\n}\n\nfunction defaultZipper() {\n return arrCopy(arguments);\n}\n\nfunction defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\nfunction hashCollection(collection) {\n if (collection.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(collection);\n var keyed = isKeyed(collection);\n var h = ordered ? 1 : 0;\n var size = collection.__iterate(\n keyed\n ? ordered\n ? function (v, k) {\n h = (31 * h + hashMerge(hash(v), hash(k))) | 0;\n }\n : function (v, k) {\n h = (h + hashMerge(hash(v), hash(k))) | 0;\n }\n : ordered\n ? function (v) {\n h = (31 * h + hash(v)) | 0;\n }\n : function (v) {\n h = (h + hash(v)) | 0;\n }\n );\n return murmurHashOfSize(size, h);\n}\n\nfunction murmurHashOfSize(size, h) {\n h = imul(h, 0xcc9e2d51);\n h = imul((h << 15) | (h >>> -15), 0x1b873593);\n h = imul((h << 13) | (h >>> -13), 5);\n h = ((h + 0xe6546b64) | 0) ^ size;\n h = imul(h ^ (h >>> 16), 0x85ebca6b);\n h = imul(h ^ (h >>> 13), 0xc2b2ae35);\n h = smi(h ^ (h >>> 16));\n return h;\n}\n\nfunction hashMerge(a, b) {\n return (a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2))) | 0; // int\n}\n\nvar OrderedSet = /*@__PURE__*/(function (Set) {\n function OrderedSet(value) {\n return value === undefined || value === null\n ? emptyOrderedSet()\n : isOrderedSet(value)\n ? value\n : emptyOrderedSet().withMutations(function (set) {\n var iter = SetCollection(value);\n assertNotInfinite(iter.size);\n iter.forEach(function (v) { return set.add(v); });\n });\n }\n\n if ( Set ) OrderedSet.__proto__ = Set;\n OrderedSet.prototype = Object.create( Set && Set.prototype );\n OrderedSet.prototype.constructor = OrderedSet;\n\n OrderedSet.of = function of (/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function fromKeys (value) {\n return this(KeyedCollection(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function toString () {\n return this.__toString('OrderedSet {', '}');\n };\n\n return OrderedSet;\n}(Set));\n\nOrderedSet.isOrderedSet = isOrderedSet;\n\nvar OrderedSetPrototype = OrderedSet.prototype;\nOrderedSetPrototype[IS_ORDERED_SYMBOL] = true;\nOrderedSetPrototype.zip = IndexedCollectionPrototype.zip;\nOrderedSetPrototype.zipWith = IndexedCollectionPrototype.zipWith;\nOrderedSetPrototype.zipAll = IndexedCollectionPrototype.zipAll;\n\nOrderedSetPrototype.__empty = emptyOrderedSet;\nOrderedSetPrototype.__make = makeOrderedSet;\n\nfunction makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n}\n\nvar EMPTY_ORDERED_SET;\nfunction emptyOrderedSet() {\n return (\n EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()))\n );\n}\n\nvar PairSorting = {\n LeftThenRight: -1,\n RightThenLeft: +1,\n};\n\nfunction throwOnInvalidDefaultValues(defaultValues) {\n if (isRecord(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Record as default values. Use a plain javascript object instead.'\n );\n }\n\n if (isImmutable(defaultValues)) {\n throw new Error(\n 'Can not call `Record` with an immutable Collection as default values. Use a plain javascript object instead.'\n );\n }\n\n if (defaultValues === null || typeof defaultValues !== 'object') {\n throw new Error(\n 'Can not call `Record` with a non-object as default values. Use a plain javascript object instead.'\n );\n }\n}\n\nvar Record = function Record(defaultValues, name) {\n var hasInitialized;\n\n throwOnInvalidDefaultValues(defaultValues);\n\n var RecordType = function Record(values) {\n var this$1$1 = this;\n\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n var indices = (RecordTypePrototype._indices = {});\n // Deprecated: left to attempt not to break any external code which\n // relies on a ._name property existing on record instances.\n // Use Record.getDescriptiveName() instead\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n for (var i = 0; i < keys.length; i++) {\n var propName = keys[i];\n indices[propName] = i;\n if (RecordTypePrototype[propName]) {\n /* eslint-disable no-console */\n typeof console === 'object' &&\n console.warn &&\n console.warn(\n 'Cannot define ' +\n recordName(this) +\n ' with property \"' +\n propName +\n '\" since that property name is part of the Record API.'\n );\n /* eslint-enable no-console */\n } else {\n setProp(RecordTypePrototype, propName);\n }\n }\n }\n this.__ownerID = undefined;\n this._values = List().withMutations(function (l) {\n l.setSize(this$1$1._keys.length);\n KeyedCollection(values).forEach(function (v, k) {\n l.set(this$1$1._indices[k], v === this$1$1._defaultValues[k] ? undefined : v);\n });\n });\n return this;\n };\n\n var RecordTypePrototype = (RecordType.prototype =\n Object.create(RecordPrototype));\n RecordTypePrototype.constructor = RecordType;\n\n if (name) {\n RecordType.displayName = name;\n }\n\n return RecordType;\n};\n\nRecord.prototype.toString = function toString () {\n var str = recordName(this) + ' { ';\n var keys = this._keys;\n var k;\n for (var i = 0, l = keys.length; i !== l; i++) {\n k = keys[i];\n str += (i ? ', ' : '') + k + ': ' + quoteString(this.get(k));\n }\n return str + ' }';\n};\n\nRecord.prototype.equals = function equals (other) {\n return (\n this === other ||\n (isRecord(other) && recordSeq(this).equals(recordSeq(other)))\n );\n};\n\nRecord.prototype.hashCode = function hashCode () {\n return recordSeq(this).hashCode();\n};\n\n// @pragma Access\n\nRecord.prototype.has = function has (k) {\n return this._indices.hasOwnProperty(k);\n};\n\nRecord.prototype.get = function get (k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var index = this._indices[k];\n var value = this._values.get(index);\n return value === undefined ? this._defaultValues[k] : value;\n};\n\n// @pragma Modification\n\nRecord.prototype.set = function set (k, v) {\n if (this.has(k)) {\n var newValues = this._values.set(\n this._indices[k],\n v === this._defaultValues[k] ? undefined : v\n );\n if (newValues !== this._values && !this.__ownerID) {\n return makeRecord(this, newValues);\n }\n }\n return this;\n};\n\nRecord.prototype.remove = function remove (k) {\n return this.set(k);\n};\n\nRecord.prototype.clear = function clear () {\n var newValues = this._values.clear().setSize(this._keys.length);\n\n return this.__ownerID ? this : makeRecord(this, newValues);\n};\n\nRecord.prototype.wasAltered = function wasAltered () {\n return this._values.wasAltered();\n};\n\nRecord.prototype.toSeq = function toSeq () {\n return recordSeq(this);\n};\n\nRecord.prototype.toJS = function toJS$1 () {\n return toJS(this);\n};\n\nRecord.prototype.entries = function entries () {\n return this.__iterator(ITERATE_ENTRIES);\n};\n\nRecord.prototype.__iterator = function __iterator (type, reverse) {\n return recordSeq(this).__iterator(type, reverse);\n};\n\nRecord.prototype.__iterate = function __iterate (fn, reverse) {\n return recordSeq(this).__iterate(fn, reverse);\n};\n\nRecord.prototype.__ensureOwner = function __ensureOwner (ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newValues = this._values.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._values = newValues;\n return this;\n }\n return makeRecord(this, newValues, ownerID);\n};\n\nRecord.isRecord = isRecord;\nRecord.getDescriptiveName = recordName;\nvar RecordPrototype = Record.prototype;\nRecordPrototype[IS_RECORD_SYMBOL] = true;\nRecordPrototype[DELETE] = RecordPrototype.remove;\nRecordPrototype.deleteIn = RecordPrototype.removeIn = deleteIn;\nRecordPrototype.getIn = getIn;\nRecordPrototype.hasIn = CollectionPrototype.hasIn;\nRecordPrototype.merge = merge$1;\nRecordPrototype.mergeWith = mergeWith$1;\nRecordPrototype.mergeIn = mergeIn;\nRecordPrototype.mergeDeep = mergeDeep;\nRecordPrototype.mergeDeepWith = mergeDeepWith;\nRecordPrototype.mergeDeepIn = mergeDeepIn;\nRecordPrototype.setIn = setIn;\nRecordPrototype.update = update;\nRecordPrototype.updateIn = updateIn;\nRecordPrototype.withMutations = withMutations;\nRecordPrototype.asMutable = asMutable;\nRecordPrototype.asImmutable = asImmutable;\nRecordPrototype[ITERATOR_SYMBOL] = RecordPrototype.entries;\nRecordPrototype.toJSON = RecordPrototype.toObject =\n CollectionPrototype.toObject;\nRecordPrototype.inspect = RecordPrototype.toSource = function () {\n return this.toString();\n};\n\nfunction makeRecord(likeRecord, values, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._values = values;\n record.__ownerID = ownerID;\n return record;\n}\n\nfunction recordName(record) {\n return record.constructor.displayName || record.constructor.name || 'Record';\n}\n\nfunction recordSeq(record) {\n return keyedSeqFromValue(record._keys.map(function (k) { return [k, record.get(k)]; }));\n}\n\nfunction setProp(prototype, name) {\n try {\n Object.defineProperty(prototype, name, {\n get: function () {\n return this.get(name);\n },\n set: function (value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n },\n });\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n}\n\n/**\n * Returns a lazy Seq of `value` repeated `times` times. When `times` is\n * undefined, returns an infinite sequence of `value`.\n */\nvar Repeat = /*@__PURE__*/(function (IndexedSeq) {\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n if ( IndexedSeq ) Repeat.__proto__ = IndexedSeq;\n Repeat.prototype = Object.create( IndexedSeq && IndexedSeq.prototype );\n Repeat.prototype.constructor = Repeat;\n\n Repeat.prototype.toString = function toString () {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function get (index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function includes (searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function slice (begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size)\n ? this\n : new Repeat(\n this._value,\n resolveEnd(end, size) - resolveBegin(begin, size)\n );\n };\n\n Repeat.prototype.reverse = function reverse () {\n return this;\n };\n\n Repeat.prototype.indexOf = function indexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function lastIndexOf (searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function __iterate (fn, reverse) {\n var size = this.size;\n var i = 0;\n while (i !== size) {\n if (fn(this._value, reverse ? size - ++i : i++, this) === false) {\n break;\n }\n }\n return i;\n };\n\n Repeat.prototype.__iterator = function __iterator (type, reverse) {\n var this$1$1 = this;\n\n var size = this.size;\n var i = 0;\n return new Iterator(function () { return i === size\n ? iteratorDone()\n : iteratorValue(type, reverse ? size - ++i : i++, this$1$1._value); }\n );\n };\n\n Repeat.prototype.equals = function equals (other) {\n return other instanceof Repeat\n ? is(this._value, other._value)\n : deepEqual(other);\n };\n\n return Repeat;\n}(IndexedSeq));\n\nvar EMPTY_REPEAT;\n\nfunction fromJS(value, converter) {\n return fromJSWith(\n [],\n converter || defaultConverter,\n value,\n '',\n converter && converter.length > 2 ? [] : undefined,\n { '': value }\n );\n}\n\nfunction fromJSWith(stack, converter, value, key, keyPath, parentValue) {\n if (\n typeof value !== 'string' &&\n !isImmutable(value) &&\n (isArrayLike(value) || hasIterator(value) || isPlainObject(value))\n ) {\n if (~stack.indexOf(value)) {\n throw new TypeError('Cannot convert circular structure to Immutable');\n }\n stack.push(value);\n keyPath && key !== '' && keyPath.push(key);\n var converted = converter.call(\n parentValue,\n key,\n Seq(value).map(function (v, k) { return fromJSWith(stack, converter, v, k, keyPath, value); }\n ),\n keyPath && keyPath.slice()\n );\n stack.pop();\n keyPath && keyPath.pop();\n return converted;\n }\n return value;\n}\n\nfunction defaultConverter(k, v) {\n // Effectively the opposite of \"Collection.toSeq()\"\n return isIndexed(v) ? v.toList() : isKeyed(v) ? v.toMap() : v.toSet();\n}\n\nvar version = \"4.3.2\";\n\nvar Immutable = {\n version: version,\n\n Collection: Collection,\n // Note: Iterable is deprecated\n Iterable: Collection,\n\n Seq: Seq,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n PairSorting: PairSorting,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS,\n hash: hash,\n\n isImmutable: isImmutable,\n isCollection: isCollection,\n isKeyed: isKeyed,\n isIndexed: isIndexed,\n isAssociative: isAssociative,\n isOrdered: isOrdered,\n isValueObject: isValueObject,\n isPlainObject: isPlainObject,\n isSeq: isSeq,\n isList: isList,\n isMap: isMap,\n isOrderedMap: isOrderedMap,\n isStack: isStack,\n isSet: isSet,\n isOrderedSet: isOrderedSet,\n isRecord: isRecord,\n\n get: get,\n getIn: getIn$1,\n has: has,\n hasIn: hasIn$1,\n merge: merge,\n mergeDeep: mergeDeep$1,\n mergeWith: mergeWith,\n mergeDeepWith: mergeDeepWith$1,\n remove: remove,\n removeIn: removeIn,\n set: set,\n setIn: setIn$1,\n update: update$1,\n updateIn: updateIn$1,\n};\n\n// Note: Iterable is deprecated\nvar Iterable = Collection;\n\nexport default Immutable;\nexport { Collection, Iterable, List, Map, OrderedMap, OrderedSet, PairSorting, Range, Record, Repeat, Seq, Set, Stack, fromJS, get, getIn$1 as getIn, has, hasIn$1 as hasIn, hash, is, isAssociative, isCollection, isImmutable, isIndexed, isKeyed, isList, isMap, isOrdered, isOrderedMap, isOrderedSet, isPlainObject, isRecord, isSeq, isSet, isStack, isValueObject, merge, mergeDeep$1 as mergeDeep, mergeDeepWith$1 as mergeDeepWith, mergeWith, remove, removeIn, set, setIn$1 as setIn, update$1 as update, updateIn$1 as updateIn, version };\n"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}