You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					335 lines
				
				12 KiB
			
		
		
			
		
	
	
					335 lines
				
				12 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var undefined;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var $SyntaxError = SyntaxError;
							 | 
						||
| 
								 | 
							
								var $Function = Function;
							 | 
						||
| 
								 | 
							
								var $TypeError = TypeError;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// eslint-disable-next-line consistent-return
							 | 
						||
| 
								 | 
							
								var getEvalledConstructor = function (expressionSyntax) {
							 | 
						||
| 
								 | 
							
									try {
							 | 
						||
| 
								 | 
							
										return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')();
							 | 
						||
| 
								 | 
							
									} catch (e) {}
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var $gOPD = Object.getOwnPropertyDescriptor;
							 | 
						||
| 
								 | 
							
								if ($gOPD) {
							 | 
						||
| 
								 | 
							
									try {
							 | 
						||
| 
								 | 
							
										$gOPD({}, '');
							 | 
						||
| 
								 | 
							
									} catch (e) {
							 | 
						||
| 
								 | 
							
										$gOPD = null; // this is IE 8, which has a broken gOPD
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var throwTypeError = function () {
							 | 
						||
| 
								 | 
							
									throw new $TypeError();
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var ThrowTypeError = $gOPD
							 | 
						||
| 
								 | 
							
									? (function () {
							 | 
						||
| 
								 | 
							
										try {
							 | 
						||
| 
								 | 
							
											// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties
							 | 
						||
| 
								 | 
							
											arguments.callee; // IE 8 does not throw here
							 | 
						||
| 
								 | 
							
											return throwTypeError;
							 | 
						||
| 
								 | 
							
										} catch (calleeThrows) {
							 | 
						||
| 
								 | 
							
											try {
							 | 
						||
| 
								 | 
							
												// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')
							 | 
						||
| 
								 | 
							
												return $gOPD(arguments, 'callee').get;
							 | 
						||
| 
								 | 
							
											} catch (gOPDthrows) {
							 | 
						||
| 
								 | 
							
												return throwTypeError;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}())
							 | 
						||
| 
								 | 
							
									: throwTypeError;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var hasSymbols = require('has-symbols')();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var needsEval = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var INTRINSICS = {
							 | 
						||
| 
								 | 
							
									'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,
							 | 
						||
| 
								 | 
							
									'%Array%': Array,
							 | 
						||
| 
								 | 
							
									'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,
							 | 
						||
| 
								 | 
							
									'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,
							 | 
						||
| 
								 | 
							
									'%AsyncFromSyncIteratorPrototype%': undefined,
							 | 
						||
| 
								 | 
							
									'%AsyncFunction%': needsEval,
							 | 
						||
| 
								 | 
							
									'%AsyncGenerator%': needsEval,
							 | 
						||
| 
								 | 
							
									'%AsyncGeneratorFunction%': needsEval,
							 | 
						||
| 
								 | 
							
									'%AsyncIteratorPrototype%': needsEval,
							 | 
						||
| 
								 | 
							
									'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,
							 | 
						||
| 
								 | 
							
									'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,
							 | 
						||
| 
								 | 
							
									'%Boolean%': Boolean,
							 | 
						||
| 
								 | 
							
									'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,
							 | 
						||
| 
								 | 
							
									'%Date%': Date,
							 | 
						||
| 
								 | 
							
									'%decodeURI%': decodeURI,
							 | 
						||
| 
								 | 
							
									'%decodeURIComponent%': decodeURIComponent,
							 | 
						||
| 
								 | 
							
									'%encodeURI%': encodeURI,
							 | 
						||
| 
								 | 
							
									'%encodeURIComponent%': encodeURIComponent,
							 | 
						||
| 
								 | 
							
									'%Error%': Error,
							 | 
						||
| 
								 | 
							
									'%eval%': eval, // eslint-disable-line no-eval
							 | 
						||
| 
								 | 
							
									'%EvalError%': EvalError,
							 | 
						||
| 
								 | 
							
									'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,
							 | 
						||
| 
								 | 
							
									'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,
							 | 
						||
| 
								 | 
							
									'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,
							 | 
						||
| 
								 | 
							
									'%Function%': $Function,
							 | 
						||
| 
								 | 
							
									'%GeneratorFunction%': needsEval,
							 | 
						||
| 
								 | 
							
									'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,
							 | 
						||
| 
								 | 
							
									'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,
							 | 
						||
| 
								 | 
							
									'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,
							 | 
						||
| 
								 | 
							
									'%isFinite%': isFinite,
							 | 
						||
| 
								 | 
							
									'%isNaN%': isNaN,
							 | 
						||
| 
								 | 
							
									'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,
							 | 
						||
| 
								 | 
							
									'%JSON%': typeof JSON === 'object' ? JSON : undefined,
							 | 
						||
| 
								 | 
							
									'%Map%': typeof Map === 'undefined' ? undefined : Map,
							 | 
						||
| 
								 | 
							
									'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),
							 | 
						||
| 
								 | 
							
									'%Math%': Math,
							 | 
						||
| 
								 | 
							
									'%Number%': Number,
							 | 
						||
| 
								 | 
							
									'%Object%': Object,
							 | 
						||
| 
								 | 
							
									'%parseFloat%': parseFloat,
							 | 
						||
| 
								 | 
							
									'%parseInt%': parseInt,
							 | 
						||
| 
								 | 
							
									'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,
							 | 
						||
| 
								 | 
							
									'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,
							 | 
						||
| 
								 | 
							
									'%RangeError%': RangeError,
							 | 
						||
| 
								 | 
							
									'%ReferenceError%': ReferenceError,
							 | 
						||
| 
								 | 
							
									'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,
							 | 
						||
| 
								 | 
							
									'%RegExp%': RegExp,
							 | 
						||
| 
								 | 
							
									'%Set%': typeof Set === 'undefined' ? undefined : Set,
							 | 
						||
| 
								 | 
							
									'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),
							 | 
						||
| 
								 | 
							
									'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,
							 | 
						||
| 
								 | 
							
									'%String%': String,
							 | 
						||
| 
								 | 
							
									'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,
							 | 
						||
| 
								 | 
							
									'%Symbol%': hasSymbols ? Symbol : undefined,
							 | 
						||
| 
								 | 
							
									'%SyntaxError%': $SyntaxError,
							 | 
						||
| 
								 | 
							
									'%ThrowTypeError%': ThrowTypeError,
							 | 
						||
| 
								 | 
							
									'%TypedArray%': TypedArray,
							 | 
						||
| 
								 | 
							
									'%TypeError%': $TypeError,
							 | 
						||
| 
								 | 
							
									'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,
							 | 
						||
| 
								 | 
							
									'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,
							 | 
						||
| 
								 | 
							
									'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,
							 | 
						||
| 
								 | 
							
									'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,
							 | 
						||
| 
								 | 
							
									'%URIError%': URIError,
							 | 
						||
| 
								 | 
							
									'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,
							 | 
						||
| 
								 | 
							
									'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,
							 | 
						||
| 
								 | 
							
									'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var doEval = function doEval(name) {
							 | 
						||
| 
								 | 
							
									var value;
							 | 
						||
| 
								 | 
							
									if (name === '%AsyncFunction%') {
							 | 
						||
| 
								 | 
							
										value = getEvalledConstructor('async function () {}');
							 | 
						||
| 
								 | 
							
									} else if (name === '%GeneratorFunction%') {
							 | 
						||
| 
								 | 
							
										value = getEvalledConstructor('function* () {}');
							 | 
						||
| 
								 | 
							
									} else if (name === '%AsyncGeneratorFunction%') {
							 | 
						||
| 
								 | 
							
										value = getEvalledConstructor('async function* () {}');
							 | 
						||
| 
								 | 
							
									} else if (name === '%AsyncGenerator%') {
							 | 
						||
| 
								 | 
							
										var fn = doEval('%AsyncGeneratorFunction%');
							 | 
						||
| 
								 | 
							
										if (fn) {
							 | 
						||
| 
								 | 
							
											value = fn.prototype;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									} else if (name === '%AsyncIteratorPrototype%') {
							 | 
						||
| 
								 | 
							
										var gen = doEval('%AsyncGenerator%');
							 | 
						||
| 
								 | 
							
										if (gen) {
							 | 
						||
| 
								 | 
							
											value = getProto(gen.prototype);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									INTRINSICS[name] = value;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return value;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var LEGACY_ALIASES = {
							 | 
						||
| 
								 | 
							
									'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ArrayPrototype%': ['Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],
							 | 
						||
| 
								 | 
							
									'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],
							 | 
						||
| 
								 | 
							
									'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],
							 | 
						||
| 
								 | 
							
									'%ArrayProto_values%': ['Array', 'prototype', 'values'],
							 | 
						||
| 
								 | 
							
									'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%BooleanPrototype%': ['Boolean', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%DataViewPrototype%': ['DataView', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%DatePrototype%': ['Date', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ErrorPrototype%': ['Error', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%EvalErrorPrototype%': ['EvalError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%FunctionPrototype%': ['Function', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Generator%': ['GeneratorFunction', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%JSONParse%': ['JSON', 'parse'],
							 | 
						||
| 
								 | 
							
									'%JSONStringify%': ['JSON', 'stringify'],
							 | 
						||
| 
								 | 
							
									'%MapPrototype%': ['Map', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%NumberPrototype%': ['Number', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ObjectPrototype%': ['Object', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ObjProto_toString%': ['Object', 'prototype', 'toString'],
							 | 
						||
| 
								 | 
							
									'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],
							 | 
						||
| 
								 | 
							
									'%PromisePrototype%': ['Promise', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%PromiseProto_then%': ['Promise', 'prototype', 'then'],
							 | 
						||
| 
								 | 
							
									'%Promise_all%': ['Promise', 'all'],
							 | 
						||
| 
								 | 
							
									'%Promise_reject%': ['Promise', 'reject'],
							 | 
						||
| 
								 | 
							
									'%Promise_resolve%': ['Promise', 'resolve'],
							 | 
						||
| 
								 | 
							
									'%RangeErrorPrototype%': ['RangeError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%RegExpPrototype%': ['RegExp', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%SetPrototype%': ['Set', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%StringPrototype%': ['String', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%SymbolPrototype%': ['Symbol', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%TypedArrayPrototype%': ['TypedArray', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%TypeErrorPrototype%': ['TypeError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%URIErrorPrototype%': ['URIError', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%WeakMapPrototype%': ['WeakMap', 'prototype'],
							 | 
						||
| 
								 | 
							
									'%WeakSetPrototype%': ['WeakSet', 'prototype']
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var bind = require('function-bind');
							 | 
						||
| 
								 | 
							
								var hasOwn = require('has');
							 | 
						||
| 
								 | 
							
								var $concat = bind.call(Function.call, Array.prototype.concat);
							 | 
						||
| 
								 | 
							
								var $spliceApply = bind.call(Function.apply, Array.prototype.splice);
							 | 
						||
| 
								 | 
							
								var $replace = bind.call(Function.call, String.prototype.replace);
							 | 
						||
| 
								 | 
							
								var $strSlice = bind.call(Function.call, String.prototype.slice);
							 | 
						||
| 
								 | 
							
								var $exec = bind.call(Function.call, RegExp.prototype.exec);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */
							 | 
						||
| 
								 | 
							
								var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
							 | 
						||
| 
								 | 
							
								var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */
							 | 
						||
| 
								 | 
							
								var stringToPath = function stringToPath(string) {
							 | 
						||
| 
								 | 
							
									var first = $strSlice(string, 0, 1);
							 | 
						||
| 
								 | 
							
									var last = $strSlice(string, -1);
							 | 
						||
| 
								 | 
							
									if (first === '%' && last !== '%') {
							 | 
						||
| 
								 | 
							
										throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`');
							 | 
						||
| 
								 | 
							
									} else if (last === '%' && first !== '%') {
							 | 
						||
| 
								 | 
							
										throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									var result = [];
							 | 
						||
| 
								 | 
							
									$replace(string, rePropName, function (match, number, quote, subString) {
							 | 
						||
| 
								 | 
							
										result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;
							 | 
						||
| 
								 | 
							
									});
							 | 
						||
| 
								 | 
							
									return result;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								/* end adaptation */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {
							 | 
						||
| 
								 | 
							
									var intrinsicName = name;
							 | 
						||
| 
								 | 
							
									var alias;
							 | 
						||
| 
								 | 
							
									if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
							 | 
						||
| 
								 | 
							
										alias = LEGACY_ALIASES[intrinsicName];
							 | 
						||
| 
								 | 
							
										intrinsicName = '%' + alias[0] + '%';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (hasOwn(INTRINSICS, intrinsicName)) {
							 | 
						||
| 
								 | 
							
										var value = INTRINSICS[intrinsicName];
							 | 
						||
| 
								 | 
							
										if (value === needsEval) {
							 | 
						||
| 
								 | 
							
											value = doEval(intrinsicName);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (typeof value === 'undefined' && !allowMissing) {
							 | 
						||
| 
								 | 
							
											throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										return {
							 | 
						||
| 
								 | 
							
											alias: alias,
							 | 
						||
| 
								 | 
							
											name: intrinsicName,
							 | 
						||
| 
								 | 
							
											value: value
							 | 
						||
| 
								 | 
							
										};
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									throw new $SyntaxError('intrinsic ' + name + ' does not exist!');
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = function GetIntrinsic(name, allowMissing) {
							 | 
						||
| 
								 | 
							
									if (typeof name !== 'string' || name.length === 0) {
							 | 
						||
| 
								 | 
							
										throw new $TypeError('intrinsic name must be a non-empty string');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if (arguments.length > 1 && typeof allowMissing !== 'boolean') {
							 | 
						||
| 
								 | 
							
										throw new $TypeError('"allowMissing" argument must be a boolean');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if ($exec(/^%?[^%]*%?$/, name) === null) {
							 | 
						||
| 
								 | 
							
										throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									var parts = stringToPath(name);
							 | 
						||
| 
								 | 
							
									var intrinsicBaseName = parts.length > 0 ? parts[0] : '';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);
							 | 
						||
| 
								 | 
							
									var intrinsicRealName = intrinsic.name;
							 | 
						||
| 
								 | 
							
									var value = intrinsic.value;
							 | 
						||
| 
								 | 
							
									var skipFurtherCaching = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var alias = intrinsic.alias;
							 | 
						||
| 
								 | 
							
									if (alias) {
							 | 
						||
| 
								 | 
							
										intrinsicBaseName = alias[0];
							 | 
						||
| 
								 | 
							
										$spliceApply(parts, $concat([0, 1], alias));
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for (var i = 1, isOwn = true; i < parts.length; i += 1) {
							 | 
						||
| 
								 | 
							
										var part = parts[i];
							 | 
						||
| 
								 | 
							
										var first = $strSlice(part, 0, 1);
							 | 
						||
| 
								 | 
							
										var last = $strSlice(part, -1);
							 | 
						||
| 
								 | 
							
										if (
							 | 
						||
| 
								 | 
							
											(
							 | 
						||
| 
								 | 
							
												(first === '"' || first === "'" || first === '`')
							 | 
						||
| 
								 | 
							
												|| (last === '"' || last === "'" || last === '`')
							 | 
						||
| 
								 | 
							
											)
							 | 
						||
| 
								 | 
							
											&& first !== last
							 | 
						||
| 
								 | 
							
										) {
							 | 
						||
| 
								 | 
							
											throw new $SyntaxError('property names with quotes must have matching quotes');
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (part === 'constructor' || !isOwn) {
							 | 
						||
| 
								 | 
							
											skipFurtherCaching = true;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										intrinsicBaseName += '.' + part;
							 | 
						||
| 
								 | 
							
										intrinsicRealName = '%' + intrinsicBaseName + '%';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (hasOwn(INTRINSICS, intrinsicRealName)) {
							 | 
						||
| 
								 | 
							
											value = INTRINSICS[intrinsicRealName];
							 | 
						||
| 
								 | 
							
										} else if (value != null) {
							 | 
						||
| 
								 | 
							
											if (!(part in value)) {
							 | 
						||
| 
								 | 
							
												if (!allowMissing) {
							 | 
						||
| 
								 | 
							
													throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												return void undefined;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											if ($gOPD && (i + 1) >= parts.length) {
							 | 
						||
| 
								 | 
							
												var desc = $gOPD(value, part);
							 | 
						||
| 
								 | 
							
												isOwn = !!desc;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
												// By convention, when a data property is converted to an accessor
							 | 
						||
| 
								 | 
							
												// property to emulate a data property that does not suffer from
							 | 
						||
| 
								 | 
							
												// the override mistake, that accessor's getter is marked with
							 | 
						||
| 
								 | 
							
												// an `originalValue` property. Here, when we detect this, we
							 | 
						||
| 
								 | 
							
												// uphold the illusion by pretending to see that original data
							 | 
						||
| 
								 | 
							
												// property, i.e., returning the value rather than the getter
							 | 
						||
| 
								 | 
							
												// itself.
							 | 
						||
| 
								 | 
							
												if (isOwn && 'get' in desc && !('originalValue' in desc.get)) {
							 | 
						||
| 
								 | 
							
													value = desc.get;
							 | 
						||
| 
								 | 
							
												} else {
							 | 
						||
| 
								 | 
							
													value = value[part];
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 | 
							
												isOwn = hasOwn(value, part);
							 | 
						||
| 
								 | 
							
												value = value[part];
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
											if (isOwn && !skipFurtherCaching) {
							 | 
						||
| 
								 | 
							
												INTRINSICS[intrinsicRealName] = value;
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return value;
							 | 
						||
| 
								 | 
							
								};
							 |