| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 
							- 'use strict';
 
- // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
 
- require('../modules/es.map');
 
- require('../modules/es.weak-map');
 
- var getBuiltIn = require('../internals/get-built-in');
 
- var create = require('../internals/object-create');
 
- var isObject = require('../internals/is-object');
 
- var $Object = Object;
 
- var $TypeError = TypeError;
 
- var Map = getBuiltIn('Map');
 
- var WeakMap = getBuiltIn('WeakMap');
 
- var Node = function () {
 
-   // keys
 
-   this.object = null;
 
-   this.symbol = null;
 
-   // child nodes
 
-   this.primitives = null;
 
-   this.objectsByIndex = create(null);
 
- };
 
- Node.prototype.get = function (key, initializer) {
 
-   return this[key] || (this[key] = initializer());
 
- };
 
- Node.prototype.next = function (i, it, IS_OBJECT) {
 
-   var store = IS_OBJECT
 
-     ? this.objectsByIndex[i] || (this.objectsByIndex[i] = new WeakMap())
 
-     : this.primitives || (this.primitives = new Map());
 
-   var entry = store.get(it);
 
-   if (!entry) store.set(it, entry = new Node());
 
-   return entry;
 
- };
 
- var root = new Node();
 
- module.exports = function () {
 
-   var active = root;
 
-   var length = arguments.length;
 
-   var i, it;
 
-   // for prevent leaking, start from objects
 
-   for (i = 0; i < length; i++) {
 
-     if (isObject(it = arguments[i])) active = active.next(i, it, true);
 
-   }
 
-   if (this === $Object && active === root) throw new $TypeError('Composite keys must contain a non-primitive component');
 
-   for (i = 0; i < length; i++) {
 
-     if (!isObject(it = arguments[i])) active = active.next(i, it, false);
 
-   } return active;
 
- };
 
 
  |