'use strict';
							 | 
						|
								
							 | 
						|
								var slice = Array.prototype.slice;
							 | 
						|
								var isArgs = require('./isArguments');
							 | 
						|
								
							 | 
						|
								var origKeys = Object.keys;
							 | 
						|
								var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');
							 | 
						|
								
							 | 
						|
								var originalKeys = Object.keys;
							 | 
						|
								
							 | 
						|
								keysShim.shim = function shimObjectKeys() {
							 | 
						|
									if (Object.keys) {
							 | 
						|
										var keysWorksWithArguments = (function () {
							 | 
						|
											// Safari 5.0 bug
							 | 
						|
											var args = Object.keys(arguments);
							 | 
						|
											return args && args.length === arguments.length;
							 | 
						|
										}(1, 2));
							 | 
						|
										if (!keysWorksWithArguments) {
							 | 
						|
											Object.keys = function keys(object) { // eslint-disable-line func-name-matching
							 | 
						|
												if (isArgs(object)) {
							 | 
						|
													return originalKeys(slice.call(object));
							 | 
						|
												}
							 | 
						|
												return originalKeys(object);
							 | 
						|
											};
							 | 
						|
										}
							 | 
						|
									} else {
							 | 
						|
										Object.keys = keysShim;
							 | 
						|
									}
							 | 
						|
									return Object.keys || keysShim;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								module.exports = keysShim;
							 |