| 'use strict'; | 
| var fails = require('../internals/fails'); | 
| var isCallable = require('../internals/is-callable'); | 
| var isObject = require('../internals/is-object'); | 
| var create = require('../internals/object-create'); | 
| var getPrototypeOf = require('../internals/object-get-prototype-of'); | 
| var defineBuiltIn = require('../internals/define-built-in'); | 
| var wellKnownSymbol = require('../internals/well-known-symbol'); | 
| var IS_PURE = require('../internals/is-pure'); | 
|   | 
| var ITERATOR = wellKnownSymbol('iterator'); | 
| var BUGGY_SAFARI_ITERATORS = false; | 
|   | 
| // `%IteratorPrototype%` object | 
| // https://tc39.es/ecma262/#sec-%iteratorprototype%-object | 
| var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; | 
|   | 
| /* eslint-disable es/no-array-prototype-keys -- safe */ | 
| if ([].keys) { | 
|   arrayIterator = [].keys(); | 
|   // Safari 8 has buggy iterators w/o `next` | 
|   if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; | 
|   else { | 
|     PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); | 
|     if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; | 
|   } | 
| } | 
|   | 
| var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () { | 
|   var test = {}; | 
|   // FF44- legacy iterators case | 
|   return IteratorPrototype[ITERATOR].call(test) !== test; | 
| }); | 
|   | 
| if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {}; | 
| else if (IS_PURE) IteratorPrototype = create(IteratorPrototype); | 
|   | 
| // `%IteratorPrototype%[@@iterator]()` method | 
| // https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator | 
| if (!isCallable(IteratorPrototype[ITERATOR])) { | 
|   defineBuiltIn(IteratorPrototype, ITERATOR, function () { | 
|     return this; | 
|   }); | 
| } | 
|   | 
| module.exports = { | 
|   IteratorPrototype: IteratorPrototype, | 
|   BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS | 
| }; |