polyfill-library 3.109.0 → 3.111.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +151 -54
- package/lib/index.js +2 -2
- package/lib/sources.js +6 -2
- package/package.json +8 -5
- package/polyfills/__dist/AggregateError/meta.json +1 -0
- package/polyfills/__dist/AggregateError/min.js +1 -0
- package/polyfills/__dist/AggregateError/raw.js +30 -0
- package/polyfills/__dist/Array.from/meta.json +1 -1
- package/polyfills/__dist/Array.of/meta.json +1 -1
- package/polyfills/__dist/Array.prototype.@@iterator/meta.json +1 -1
- package/polyfills/__dist/Array.prototype.at/meta.json +1 -0
- package/polyfills/__dist/Array.prototype.at/min.js +1 -0
- package/polyfills/__dist/Array.prototype.at/raw.js +21 -0
- package/polyfills/__dist/Array.prototype.fill/meta.json +1 -1
- package/polyfills/__dist/Array.prototype.includes/meta.json +1 -1
- package/polyfills/__dist/Array.prototype.values/meta.json +1 -1
- package/polyfills/__dist/ArrayBuffer/meta.json +1 -1
- package/polyfills/__dist/ArrayBuffer/min.js +1 -1
- package/polyfills/__dist/ArrayBuffer/raw.js +8 -6
- package/polyfills/__dist/ArrayBuffer.isView/meta.json +1 -0
- package/polyfills/__dist/ArrayBuffer.isView/min.js +1 -0
- package/polyfills/__dist/ArrayBuffer.isView/raw.js +13 -0
- package/polyfills/__dist/IntersectionObserver/meta.json +1 -1
- package/polyfills/__dist/Node.prototype.isSameNode/meta.json +1 -0
- package/polyfills/__dist/Node.prototype.isSameNode/min.js +1 -0
- package/polyfills/__dist/Node.prototype.isSameNode/raw.js +27 -0
- package/polyfills/__dist/Object.assign/meta.json +1 -1
- package/polyfills/__dist/Promise.allSettled/meta.json +1 -0
- package/polyfills/__dist/Promise.allSettled/min.js +1 -0
- package/polyfills/__dist/Promise.allSettled/raw.js +41 -0
- package/polyfills/__dist/Promise.any/meta.json +1 -0
- package/polyfills/__dist/Promise.any/min.js +1 -0
- package/polyfills/__dist/Promise.any/raw.js +45 -0
- package/polyfills/__dist/Reflect/meta.json +1 -1
- package/polyfills/__dist/Reflect.apply/meta.json +1 -1
- package/polyfills/__dist/Reflect.construct/meta.json +1 -1
- package/polyfills/__dist/Reflect.defineProperty/meta.json +1 -1
- package/polyfills/__dist/Reflect.deleteProperty/meta.json +1 -1
- package/polyfills/__dist/Reflect.get/meta.json +1 -1
- package/polyfills/__dist/Reflect.getOwnPropertyDescriptor/meta.json +1 -1
- package/polyfills/__dist/Reflect.getPrototypeOf/meta.json +1 -1
- package/polyfills/__dist/Reflect.has/meta.json +1 -1
- package/polyfills/__dist/Reflect.isExtensible/meta.json +1 -1
- package/polyfills/__dist/Reflect.ownKeys/meta.json +1 -1
- package/polyfills/__dist/Reflect.preventExtensions/meta.json +1 -1
- package/polyfills/__dist/Reflect.set/meta.json +1 -1
- package/polyfills/__dist/Reflect.setPrototypeOf/meta.json +1 -1
- package/polyfills/__dist/String.prototype.at/meta.json +1 -0
- package/polyfills/__dist/String.prototype.at/min.js +1 -0
- package/polyfills/__dist/String.prototype.at/raw.js +23 -0
- package/polyfills/__dist/String.prototype.endsWith/meta.json +1 -1
- package/polyfills/__dist/String.prototype.padStart/meta.json +1 -1
- package/polyfills/__dist/String.prototype.startsWith/meta.json +1 -1
- package/polyfills/__dist/TextEncoder/meta.json +1 -1
- package/polyfills/__dist/TextEncoder/min.js +1 -1
- package/polyfills/__dist/TextEncoder/raw.js +67 -44
- package/polyfills/__dist/TypedArray.prototype.at/meta.json +1 -0
- package/polyfills/__dist/TypedArray.prototype.at/min.js +1 -0
- package/polyfills/__dist/TypedArray.prototype.at/raw.js +57 -0
- package/polyfills/__dist/URL/meta.json +1 -1
- package/polyfills/__dist/URL/min.js +1 -1
- package/polyfills/__dist/URL/raw.js +24 -2
- package/polyfills/__dist/_ESAbstract.IterableToList/meta.json +1 -0
- package/polyfills/__dist/_ESAbstract.IterableToList/min.js +1 -0
- package/polyfills/__dist/_ESAbstract.IterableToList/raw.js +31 -0
- package/polyfills/__dist/_ESAbstract.LengthOfArrayLike/meta.json +1 -0
- package/polyfills/__dist/_ESAbstract.LengthOfArrayLike/min.js +1 -0
- package/polyfills/__dist/_ESAbstract.LengthOfArrayLike/raw.js +8 -0
- package/polyfills/__dist/_ESAbstract.ToIntegerOrInfinity/meta.json +1 -0
- package/polyfills/__dist/_ESAbstract.ToIntegerOrInfinity/min.js +1 -0
- package/polyfills/__dist/_ESAbstract.ToIntegerOrInfinity/raw.js +20 -0
- package/polyfills/__dist/aliases.json +1 -1
- package/polyfills/__dist/document.currentScript/meta.json +1 -1
- package/polyfills/__dist/document.visibilityState/meta.json +1 -1
- package/polyfills/__dist/localStorage/meta.json +1 -1
- package/polyfills/__dist/localStorage/min.js +1 -1
- package/polyfills/__dist/localStorage/raw.js +30 -8
- package/polyfills/__dist/requestAnimationFrame/meta.json +1 -1
- package/polyfills/__dist/smoothscroll/meta.json +1 -1
@@ -27,6 +27,29 @@ var ENCODEINTO_BUILD = false;
|
|
27
27
|
var globalTextEncoderPrototype;
|
28
28
|
var globalTextEncoderInstance;
|
29
29
|
|
30
|
+
// In Internet Explorer 8 there is no support for square-bracket notation
|
31
|
+
// in the TypedArrays polyfill instead so we need to use the private `_getter` and `_setter` methods.
|
32
|
+
var typedArraysSupportIndexLookup = (function() {
|
33
|
+
var arr = new NativeUint8Array([42,43]);
|
34
|
+
return arr[0] === 42
|
35
|
+
})();
|
36
|
+
|
37
|
+
function getTypedArrayIndex(array, index) {
|
38
|
+
if (typedArraysSupportIndexLookup) {
|
39
|
+
return array[index];
|
40
|
+
} else {
|
41
|
+
return array._getter(index);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
function setTypedArrayIndex(array, index, value) {
|
46
|
+
if (typedArraysSupportIndexLookup) {
|
47
|
+
array[index] = value;
|
48
|
+
} else {
|
49
|
+
array._setter(index, value);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
30
53
|
/*function decoderReplacer(encoded) {
|
31
54
|
var cp0 = encoded.charCodeAt(0), codePoint=0x110000, i=0, stringLen=encoded.length|0, result="";
|
32
55
|
switch(cp0 >> 4) {
|
@@ -79,10 +102,10 @@ var ENCODEINTO_BUILD = false;
|
|
79
102
|
for (; index < len; ) {
|
80
103
|
nextEnd = index <= lenMinus32 ? 32 : len - index|0;
|
81
104
|
for (; pos < nextEnd; index=index+1|0, pos=pos+1|0) {
|
82
|
-
cp0 = inputAs8
|
105
|
+
cp0 = getTypedArrayIndex(inputAs8, index) & 0xff;
|
83
106
|
switch(cp0 >> 4) {
|
84
107
|
case 15:
|
85
|
-
cp1 = inputAs8
|
108
|
+
cp1 = getTypedArrayIndex(inputAs8, index=index+1|0) & 0xff;
|
86
109
|
if ((cp1 >> 6) !== 2 || 247 < cp0) {
|
87
110
|
index = index - 1|0;
|
88
111
|
break;
|
@@ -91,14 +114,14 @@ var ENCODEINTO_BUILD = false;
|
|
91
114
|
minBits = 5; // 20 ensures it never passes -> all invalid replacements
|
92
115
|
cp0 = 0x100; // keep track of th bit size
|
93
116
|
case 14:
|
94
|
-
cp1 = inputAs8
|
117
|
+
cp1 = getTypedArrayIndex(inputAs8, index=index+1|0) & 0xff;
|
95
118
|
codePoint <<= 6;
|
96
119
|
codePoint |= ((cp0 & 15) << 6) | (cp1 & 63);
|
97
120
|
minBits = (cp1 >> 6) === 2 ? minBits + 4|0 : 24; // 24 ensures it never passes -> all invalid replacements
|
98
121
|
cp0 = (cp0 + 0x100) & 0x300; // keep track of th bit size
|
99
122
|
case 13:
|
100
123
|
case 12:
|
101
|
-
cp1 = inputAs8
|
124
|
+
cp1 = getTypedArrayIndex(inputAs8, index=index+1|0) & 0xff;
|
102
125
|
codePoint <<= 6;
|
103
126
|
codePoint |= ((cp0 & 31) << 6) | cp1 & 63;
|
104
127
|
minBits = minBits + 7|0;
|
@@ -114,7 +137,7 @@ var ENCODEINTO_BUILD = false;
|
|
114
137
|
cp0 = (codePoint & 0x3ff) + 0xDC00|0; // lowSurrogate (will be inserted later in the switch-statement)
|
115
138
|
|
116
139
|
if (pos < 31) { // notice 31 instead of 32
|
117
|
-
tmpBufferU16
|
140
|
+
setTypedArrayIndex(tmpBufferU16, pos, tmp);
|
118
141
|
pos = pos + 1|0;
|
119
142
|
tmp = -1;
|
120
143
|
} else {// else, we are at the end of the inputAs8 and let tmp0 be filled in later on
|
@@ -149,28 +172,28 @@ var ENCODEINTO_BUILD = false;
|
|
149
172
|
case 2:
|
150
173
|
case 1:
|
151
174
|
case 0:
|
152
|
-
tmpBufferU16
|
175
|
+
setTypedArrayIndex(tmpBufferU16, pos, cp0);
|
153
176
|
continue;*/
|
154
177
|
default:
|
155
|
-
tmpBufferU16
|
178
|
+
setTypedArrayIndex(tmpBufferU16, pos, cp0); // fill with invalid replacement character
|
156
179
|
continue;
|
157
180
|
case 11:
|
158
181
|
case 10:
|
159
182
|
case 9:
|
160
183
|
case 8:
|
161
184
|
}
|
162
|
-
tmpBufferU16
|
185
|
+
setTypedArrayIndex(tmpBufferU16, pos, 0xfffd); // fill with invalid replacement character
|
163
186
|
}
|
164
187
|
tmpStr += fromCharCode(
|
165
|
-
tmpBufferU16
|
166
|
-
tmpBufferU16
|
167
|
-
tmpBufferU16
|
168
|
-
tmpBufferU16
|
188
|
+
getTypedArrayIndex(tmpBufferU16, 0), getTypedArrayIndex(tmpBufferU16, 1), getTypedArrayIndex(tmpBufferU16, 2), getTypedArrayIndex(tmpBufferU16, 3), getTypedArrayIndex(tmpBufferU16, 4), getTypedArrayIndex(tmpBufferU16, 5), getTypedArrayIndex(tmpBufferU16, 6), getTypedArrayIndex(tmpBufferU16, 7),
|
189
|
+
getTypedArrayIndex(tmpBufferU16, 8), getTypedArrayIndex(tmpBufferU16, 9), getTypedArrayIndex(tmpBufferU16,10), getTypedArrayIndex(tmpBufferU16,11), getTypedArrayIndex(tmpBufferU16,12), getTypedArrayIndex(tmpBufferU16,13), getTypedArrayIndex(tmpBufferU16,14), getTypedArrayIndex(tmpBufferU16,15),
|
190
|
+
getTypedArrayIndex(tmpBufferU16,16), getTypedArrayIndex(tmpBufferU16,17), getTypedArrayIndex(tmpBufferU16,18), getTypedArrayIndex(tmpBufferU16,19), getTypedArrayIndex(tmpBufferU16,20), getTypedArrayIndex(tmpBufferU16,21), getTypedArrayIndex(tmpBufferU16,22), getTypedArrayIndex(tmpBufferU16,23),
|
191
|
+
getTypedArrayIndex(tmpBufferU16,24), getTypedArrayIndex(tmpBufferU16,25), getTypedArrayIndex(tmpBufferU16,26), getTypedArrayIndex(tmpBufferU16,27), getTypedArrayIndex(tmpBufferU16,28), getTypedArrayIndex(tmpBufferU16,29), getTypedArrayIndex(tmpBufferU16,30), getTypedArrayIndex(tmpBufferU16,31)
|
169
192
|
);
|
170
193
|
if (pos < 32) tmpStr = tmpStr.slice(0, pos-32|0);//-(32-pos));
|
171
194
|
if (index < len) {
|
172
195
|
//fromCharCode.apply(0, tmpBufferU16 : NativeUint8Array ? tmpBufferU16.subarray(0,pos) : tmpBufferU16.slice(0,pos));
|
173
|
-
tmpBufferU16
|
196
|
+
setTypedArrayIndex(tmpBufferU16, 0, tmp);
|
174
197
|
pos = (~tmp) >>> 31;//tmp !== -1 ? 1 : 0;
|
175
198
|
tmp = -1;
|
176
199
|
|
@@ -228,10 +251,10 @@ var ENCODEINTO_BUILD = false;
|
|
228
251
|
for (i=0; i<len; i=i+1|0, pos=pos+1|0) {
|
229
252
|
point = encodedString.charCodeAt(i)|0;
|
230
253
|
if (point <= 0x007f) {
|
231
|
-
result
|
254
|
+
setTypedArrayIndex(result, pos, point);
|
232
255
|
} else if (point <= 0x07ff) {
|
233
|
-
result
|
234
|
-
result
|
256
|
+
setTypedArrayIndex(result, pos, (0x6<<5)|(point>>6));
|
257
|
+
setTypedArrayIndex(result, pos=pos+1|0, (0x2<<6)|(point&0x3f));
|
235
258
|
} else {
|
236
259
|
widenCheck: {
|
237
260
|
if (0xD800 <= point) {
|
@@ -242,10 +265,10 @@ var ENCODEINTO_BUILD = false;
|
|
242
265
|
//point = ((point - 0xD800)<<10) + nextcode - 0xDC00 + 0x10000|0;
|
243
266
|
point = (point<<10) + nextcode - 0x35fdc00|0;
|
244
267
|
if (point > 0xffff) {
|
245
|
-
result
|
246
|
-
result
|
247
|
-
result
|
248
|
-
result
|
268
|
+
setTypedArrayIndex(result, pos, (0x1e/*0b11110*/<<3) | (point>>18));
|
269
|
+
setTypedArrayIndex(result, pos=pos+1|0, (0x2/*0b10*/<<6) | ((point>>12)&0x3f/*0b00111111*/));
|
270
|
+
setTypedArrayIndex(result, pos=pos+1|0, (0x2/*0b10*/<<6) | ((point>>6)&0x3f/*0b00111111*/));
|
271
|
+
setTypedArrayIndex(result, pos=pos+1|0, (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/));
|
249
272
|
continue;
|
250
273
|
}
|
251
274
|
break widenCheck;
|
@@ -262,9 +285,9 @@ var ENCODEINTO_BUILD = false;
|
|
262
285
|
result = tmpResult;
|
263
286
|
}
|
264
287
|
}
|
265
|
-
result
|
266
|
-
result
|
267
|
-
result
|
288
|
+
setTypedArrayIndex(result, pos, (0xe/*0b1110*/<<4) | (point>>12));
|
289
|
+
setTypedArrayIndex(result, pos=pos+1|0,(0x2/*0b10*/<<6) | ((point>>6)&0x3f/*0b00111111*/));
|
290
|
+
setTypedArrayIndex(result, pos=pos+1|0,(0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/));
|
268
291
|
}
|
269
292
|
}
|
270
293
|
return NativeUint8Array ? result.subarray(0, pos) : result.slice(0, pos);
|
@@ -313,7 +336,7 @@ var ENCODEINTO_BUILD = false;
|
|
313
336
|
break putChars;
|
314
337
|
}
|
315
338
|
//read = read + ((char >> 6) !== 2) |0;
|
316
|
-
u8Arr
|
339
|
+
setTypedArrayIndex(u8Arr, i, char);
|
317
340
|
}
|
318
341
|
}
|
319
342
|
return {"written": i, "read": inputLength < read ? inputLength : read};
|
@@ -332,10 +355,10 @@ var ENCODEINTO_BUILD = false;
|
|
332
355
|
read = read - 1|0;
|
333
356
|
break; // we have reached the end of the string
|
334
357
|
}
|
335
|
-
u8Arr
|
358
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, point);
|
336
359
|
} else if (point <= 0x07ff) {
|
337
|
-
u8Arr
|
338
|
-
u8Arr
|
360
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x6<<5)|(point>>6));
|
361
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6)|(point&0x3f));
|
339
362
|
} else {
|
340
363
|
if (0xD800 <= point && point <= 0xDBFF) {
|
341
364
|
nextcode = encodedString.charCodeAt(read)|0; // defaults to 0 when NaN, causing null replacement character
|
@@ -345,10 +368,10 @@ var ENCODEINTO_BUILD = false;
|
|
345
368
|
//point = ((point - 0xD800)<<10) + nextcode - 0xDC00 + 0x10000|0;
|
346
369
|
point = (point<<10) + nextcode - 0x35fdc00|0;
|
347
370
|
if (point > 0xffff) {
|
348
|
-
u8Arr
|
349
|
-
u8Arr
|
350
|
-
u8Arr
|
351
|
-
u8Arr
|
371
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x1e<<3) | (point>>18));
|
372
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>12)&0x3f));
|
373
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>6)&0x3f));
|
374
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | (point&0x3f));
|
352
375
|
continue;
|
353
376
|
}
|
354
377
|
} else if (nextcode === 0 && encodedLen <= read) {
|
@@ -357,9 +380,9 @@ var ENCODEINTO_BUILD = false;
|
|
357
380
|
point = 65533;//0b1111111111111101; // invalid replacement character
|
358
381
|
}
|
359
382
|
}
|
360
|
-
u8Arr
|
361
|
-
u8Arr
|
362
|
-
u8Arr
|
383
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0xe<<4) | (point>>12));
|
384
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>6)&0x3f));
|
385
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | (point&0x3f));
|
363
386
|
if (u8LenLeft < (i + ((encodedLen - read) << 1)|0)) {
|
364
387
|
// These 3x chars are the only way to inflate the size to 3x
|
365
388
|
u8LenLeft = u8LenLeft - i|0;
|
@@ -380,12 +403,12 @@ var ENCODEINTO_BUILD = false;
|
|
380
403
|
break; // we have reached the end of the string
|
381
404
|
}
|
382
405
|
u8LenLeft = u8LenLeft - 1|0;
|
383
|
-
u8Arr
|
406
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, point);
|
384
407
|
} else if (point <= 0x07ff) {
|
385
408
|
u8LenLeft = u8LenLeft - 2|0;
|
386
409
|
if (0 <= u8LenLeft) {
|
387
|
-
u8Arr
|
388
|
-
u8Arr
|
410
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x6<<5)|(point>>6));
|
411
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6)|(point&0x3f));
|
389
412
|
}
|
390
413
|
} else {
|
391
414
|
if (0xD800 <= point && point <= 0xDBFF) {
|
@@ -399,10 +422,10 @@ var ENCODEINTO_BUILD = false;
|
|
399
422
|
if (point > 0xffff) {
|
400
423
|
u8LenLeft = u8LenLeft - 4|0;
|
401
424
|
if (0 <= u8LenLeft) {
|
402
|
-
u8Arr
|
403
|
-
u8Arr
|
404
|
-
u8Arr
|
405
|
-
u8Arr
|
425
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x1e<<3) | (point>>18));
|
426
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>12)&0x3f));
|
427
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>6)&0x3f));
|
428
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | (point&0x3f));
|
406
429
|
}
|
407
430
|
continue;
|
408
431
|
}
|
@@ -417,9 +440,9 @@ var ENCODEINTO_BUILD = false;
|
|
417
440
|
}
|
418
441
|
u8LenLeft = u8LenLeft - 3|0;
|
419
442
|
if (0 <= u8LenLeft) {
|
420
|
-
u8Arr
|
421
|
-
u8Arr
|
422
|
-
u8Arr
|
443
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0xe<<<4) | (point>>12));
|
444
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | ((point>>6)&0x3f));
|
445
|
+
setTypedArrayIndex(u8Arr, i=i+1|0, (0x2<<6) | (point&0x3f));
|
423
446
|
}
|
424
447
|
}
|
425
448
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"aliases":["es2022"],"dependencies":["_ESAbstract.CreateMethodProperty","_ESAbstract.ToIntegerOrInfinity","_ESAbstract.ToString","ArrayBuffer"],"spec":"https://tc39.es/ecma262/#sec-%typedarray%.prototype.at","docs":"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/at","browsers":{"android":"*","bb":"*","chrome":"< 92","edge":"*","edge_mob":"*","firefox":"< 90","firefox_mob":"< 90","ie":"*","ie_mob":"*","ios_chr":"*","ios_saf":"*","op_mini":"*","op_mob":"*","opera":"< 78","safari":"*","samsung_mob":"< 16"},"detectSource":"\"Int8Array\"in self&&\"at\"in self.Int8Array.prototype\n","baseDir":"TypedArray/prototype/at","hasTests":true,"isTestable":true,"isPublic":true,"size":855}
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(){function t(t,r){return e?t[r]:t._getter(r)}function r(r){var e=this,o=e.length,a=ToIntegerOrInfinity(r),p=a>=0?a:o+a;return p<0||p>=o?undefined:t(e,ToString(p))}var e=function(){var t=new Uint8Array(2);return t[0]=42,42===t[0]};"__proto__"in self.Int8Array.prototype?CreateMethodProperty(self.Int8Array.prototype.__proto__,"at",r):(CreateMethodProperty(self.Int8Array.prototype,"at",r),CreateMethodProperty(self.Uint8Array.prototype,"at",r),CreateMethodProperty(self.Uint8ClampedArray.prototype,"at",r),CreateMethodProperty(self.Int16Array.prototype,"at",r),CreateMethodProperty(self.Uint16Array.prototype,"at",r),CreateMethodProperty(self.Int32Array.prototype,"at",r),CreateMethodProperty(self.Uint32Array.prototype,"at",r),CreateMethodProperty(self.Float32Array.prototype,"at",r),CreateMethodProperty(self.Float64Array.prototype,"at",r))}();
|
@@ -0,0 +1,57 @@
|
|
1
|
+
|
2
|
+
// TypedArray.prototype.at
|
3
|
+
/* global CreateMethodProperty, Uint8Array, ToIntegerOrInfinity, ToString */
|
4
|
+
// 23.2.3.1. %TypedArray%.prototype.at ( index )
|
5
|
+
(function () {
|
6
|
+
// In Internet Explorer 8 there is no support for square-bracket notation
|
7
|
+
// in the TypedArrays polyfill instead so we need to use the private `_getter` method
|
8
|
+
var typedArraysSupportIndexLookup = (function() {
|
9
|
+
var uint8 = new Uint8Array(2);
|
10
|
+
uint8[0] = 42;
|
11
|
+
return uint8[0] === 42
|
12
|
+
})
|
13
|
+
|
14
|
+
function getTypedArrayIndex(array, index) {
|
15
|
+
if (typedArraysSupportIndexLookup) {
|
16
|
+
return array[index];
|
17
|
+
} else {
|
18
|
+
return array._getter(index);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
function at(index) {
|
23
|
+
// 1. Let O be the this value.
|
24
|
+
var O = this;
|
25
|
+
// 2. Perform ? ValidateTypedArray(O).
|
26
|
+
// TODO: Add ValidateTypedArray
|
27
|
+
// 3. Let len be O.[[ArrayLength]].
|
28
|
+
var len = O.length;
|
29
|
+
// 4. Let relativeIndex be ? ToIntegerOrInfinity(index).
|
30
|
+
var relativeIndex = ToIntegerOrInfinity(index);
|
31
|
+
// 5. If relativeIndex ≥ 0, then
|
32
|
+
// 5.a. Let k be relativeIndex.
|
33
|
+
// 6. Else,
|
34
|
+
// 6.a. Let k be len + relativeIndex.
|
35
|
+
var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
|
36
|
+
// 7. If k < 0 or k ≥ len, return undefined.
|
37
|
+
if (k < 0 || k >= len) return undefined;
|
38
|
+
// 8. Return ! Get(O, ! ToString(𝔽(k))).
|
39
|
+
// return Get(O, ToString(k));
|
40
|
+
return getTypedArrayIndex(O, ToString(k));
|
41
|
+
}
|
42
|
+
|
43
|
+
if ('__proto__' in self.Int8Array.prototype) {
|
44
|
+
// set this on the underlying "TypedArrayPrototype", which is shared with all "TypedArray" subclasses
|
45
|
+
CreateMethodProperty(self.Int8Array.prototype.__proto__, 'at', at);
|
46
|
+
} else {
|
47
|
+
CreateMethodProperty(self.Int8Array.prototype, 'at', at);
|
48
|
+
CreateMethodProperty(self.Uint8Array.prototype, 'at', at);
|
49
|
+
CreateMethodProperty(self.Uint8ClampedArray.prototype, 'at', at);
|
50
|
+
CreateMethodProperty(self.Int16Array.prototype, 'at', at);
|
51
|
+
CreateMethodProperty(self.Uint16Array.prototype, 'at', at);
|
52
|
+
CreateMethodProperty(self.Int32Array.prototype, 'at', at);
|
53
|
+
CreateMethodProperty(self.Uint32Array.prototype, 'at', at);
|
54
|
+
CreateMethodProperty(self.Float32Array.prototype, 'at', at);
|
55
|
+
CreateMethodProperty(self.Float64Array.prototype, 'at', at);
|
56
|
+
}
|
57
|
+
})();
|
@@ -1 +1 @@
|
|
1
|
-
{"aliases":["modernizr:urlparser","blissfuljs","default-3.4","default-3.5","default-3.6","default","URLSearchParams"],"dependencies":["Object.defineProperties","Array.prototype.forEach","Array.isArray","Array.from","Symbol.iterator"],"notes":["Polyfill requires Object getters so fails in IE <= 8"],"license":"CC0-1.0","repo":"https://github.com/inexorabletash/polyfill","docs":"https://developer.mozilla.org/en-US/docs/Web/API/URL","browsers":{"chrome":"<61","firefox":"<54","edge":"<18.17134","edge_mob":"<17","ie":"9 - *","ie_mob":"*","safari":"<12","firefox_mob":"<54","opera":"<36","op_mini":"*","android":"
|
1
|
+
{"aliases":["modernizr:urlparser","blissfuljs","default-3.4","default-3.5","default-3.6","default","URLSearchParams"],"dependencies":["Object.defineProperties","Array.prototype.forEach","Array.isArray","Array.from","Symbol.iterator"],"notes":["Polyfill requires Object getters so fails in IE <= 8"],"license":"CC0-1.0","repo":"https://github.com/inexorabletash/polyfill","docs":"https://developer.mozilla.org/en-US/docs/Web/API/URL","browsers":{"chrome":"<61","firefox":"<54","edge":"<18.17134","edge_mob":"<17","ie":"9 - *","ie_mob":"*","safari":"<12","firefox_mob":"<54","opera":"<36","op_mini":"*","android":"<71","samsung_mob":"<5","bb":"*","ios_saf":"<12"},"detectSource":"(function(r){\"use strict\"\ntry{var a=new r.URL(\"http://example.com\")\nif(\"href\"in a&&\"searchParams\"in a){var e=new URL(\"http://example.com\")\nif(e.search=\"a=1&b=2\",\"http://example.com/?a=1&b=2\"===e.href&&(e.search=\"\",\"http://example.com/\"===e.href)){if(!(\"sort\"in r.URLSearchParams.prototype))return!1\nvar t=new r.URLSearchParams(\"a=1\"),n=new r.URLSearchParams(t)\nif(\"a=1\"!==String(n))return!1\nvar c=new r.URLSearchParams({a:\"1\"})\nif(\"a=1\"!==String(c))return!1\nvar h=new r.URLSearchParams([[\"a\",\"1\"]])\nreturn\"a=1\"===String(h)}}return!1}catch(m){return!1}})(self)\n","baseDir":"URL","hasTests":true,"isTestable":true,"isPublic":true,"size":8106}
|
@@ -1 +1 @@
|
|
1
|
-
!function(e){"use strict";function t(t){return!!t&&("Symbol"in e&&"iterator"in e.Symbol&&"function"==typeof t[Symbol.iterator]||!!Array.isArray(t))}!function(){function n(e){var t="",n=!0;return e.forEach(function(e){var r=encodeURIComponent(e.name),a=encodeURIComponent(e.value);n||(t+="&"),t+=r+"="+a,n=!1}),t.replace(/%20/g,"+")}function r(e,t){var n=e.split("&");t&&-1===n[0].indexOf("=")&&(n[0]="="+n[0]);var
|
1
|
+
!function(e){"use strict";function t(t){return!!t&&("Symbol"in e&&"iterator"in e.Symbol&&"function"==typeof t[Symbol.iterator]||!!Array.isArray(t))}!function(){function n(e){var t="",n=!0;return e.forEach(function(e){var r=encodeURIComponent(e.name),a=encodeURIComponent(e.value);n||(t+="&"),t+=r+"="+a,n=!1}),t.replace(/%20/g,"+")}function r(e){return e.replace(/((%[0-9A-Fa-f]{2})*)/g,function(e,t){return decodeURIComponent(t)})}function a(e,t){var n=e.split("&");t&&-1===n[0].indexOf("=")&&(n[0]="="+n[0]);var a=[];n.forEach(function(e){if(0!==e.length){var t=e.indexOf("=");if(-1!==t)var n=e.substring(0,t),r=e.substring(t+1);else n=e,r="";n=n.replace(/\+/g," "),r=r.replace(/\+/g," "),a.push({name:n,value:r})}});var i=[];return a.forEach(function(e){i.push({name:r(e.name),value:r(e.value)})}),i}function i(e){if(c)return new s(e);var t=document.createElement("a");return t.href=e,t}function o(e){var r=this;this._list=[],e===undefined||null===e||(e instanceof o?this._list=a(String(e)):"object"==typeof e&&t(e)?Array.from(e).forEach(function(e){if(!t(e))throw TypeError();var n=Array.from(e);if(2!==n.length)throw TypeError();r._list.push({name:String(n[0]),value:String(n[1])})}):"object"==typeof e&&e?Object.keys(e).forEach(function(t){r._list.push({name:String(t),value:String(e[t])})}):(e=String(e),"?"===e.substring(0,1)&&(e=e.substring(1)),this._list=a(e))),this._url_object=null,this._setList=function(e){i||(r._list=e)};var i=!1;this._update_steps=function(){i||(i=!0,r._url_object&&("about:"===r._url_object.protocol&&-1!==r._url_object.pathname.indexOf("?")&&(r._url_object.pathname=r._url_object.pathname.split("?")[0]),r._url_object.search=n(r._list),i=!1))}}function u(e,t){var n=0;this.next=function(){if(n>=e.length)return{done:!0,value:undefined};var r=e[n++];return{done:!1,value:"key"===t?r.name:"value"===t?r.value:[r.name,r.value]}}}function l(t,n){function r(){var e=l.href.replace(/#$|\?$|\?(?=#)/g,"");l.href!==e&&(l.href=e)}function u(){m._setList(l.search?a(l.search.substring(1)):[]),m._update_steps()}if(!(this instanceof e.URL))throw new TypeError("Failed to construct 'URL': Please use the 'new' operator.");n&&(t=function(){if(c)return new s(t,n).href;var e;try{var r;if("[object OperaMini]"===Object.prototype.toString.call(window.operamini)?(e=document.createElement("iframe"),e.style.display="none",document.documentElement.appendChild(e),r=e.contentWindow.document):document.implementation&&document.implementation.createHTMLDocument?r=document.implementation.createHTMLDocument(""):document.implementation&&document.implementation.createDocument?(r=document.implementation.createDocument("http://www.w3.org/1999/xhtml","html",null),r.documentElement.appendChild(r.createElement("head")),r.documentElement.appendChild(r.createElement("body"))):window.ActiveXObject&&(r=new window.ActiveXObject("htmlfile"),r.write("<head></head><body></body>"),r.close()),!r)throw Error("base not supported");var a=r.createElement("base");a.href=n,r.getElementsByTagName("head")[0].appendChild(a);var i=r.createElement("a");return i.href=t,i.href}finally{e&&e.parentNode.removeChild(e)}}());var l=i(t||""),f=function(){if(!("defineProperties"in Object))return!1;try{var e={};return Object.defineProperties(e,{prop:{get:function(){return!0}}}),e.prop}catch(t){return!1}}(),h=f?this:document.createElement("a"),m=new o(l.search?l.search.substring(1):null);return m._url_object=h,Object.defineProperties(h,{href:{get:function(){return l.href},set:function(e){l.href=e,r(),u()},enumerable:!0,configurable:!0},origin:{get:function(){return"data:"===this.protocol.toLowerCase()?null:"origin"in l?l.origin:this.protocol+"//"+this.host},enumerable:!0,configurable:!0},protocol:{get:function(){return l.protocol},set:function(e){l.protocol=e},enumerable:!0,configurable:!0},username:{get:function(){return l.username},set:function(e){l.username=e},enumerable:!0,configurable:!0},password:{get:function(){return l.password},set:function(e){l.password=e},enumerable:!0,configurable:!0},host:{get:function(){var e={"http:":/:80$/,"https:":/:443$/,"ftp:":/:21$/}[l.protocol];return e?l.host.replace(e,""):l.host},set:function(e){l.host=e},enumerable:!0,configurable:!0},hostname:{get:function(){return l.hostname},set:function(e){l.hostname=e},enumerable:!0,configurable:!0},port:{get:function(){return l.port},set:function(e){l.port=e},enumerable:!0,configurable:!0},pathname:{get:function(){return"/"!==l.pathname.charAt(0)?"/"+l.pathname:l.pathname},set:function(e){l.pathname=e},enumerable:!0,configurable:!0},search:{get:function(){return l.search},set:function(e){l.search!==e&&(l.search=e,r(),u())},enumerable:!0,configurable:!0},searchParams:{get:function(){return m},enumerable:!0,configurable:!0},hash:{get:function(){return l.hash},set:function(e){l.hash=e,r()},enumerable:!0,configurable:!0},toString:{value:function(){return l.toString()},enumerable:!1,configurable:!0},valueOf:{value:function(){return l.valueOf()},enumerable:!1,configurable:!0}}),h}var c,s=e.URL;try{if(s){if("searchParams"in(c=new e.URL("http://example.com"))){var f=new l("http://example.com");if(f.search="a=1&b=2","http://example.com/?a=1&b=2"===f.href&&(f.search="","http://example.com/"===f.href))return}"href"in c||(c=undefined),c=undefined}}catch(m){}if(Object.defineProperties(o.prototype,{append:{value:function(e,t){this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},"delete":{value:function(e){for(var t=0;t<this._list.length;)this._list[t].name===e?this._list.splice(t,1):++t;this._update_steps()},writable:!0,enumerable:!0,configurable:!0},get:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return this._list[t].value;return null},writable:!0,enumerable:!0,configurable:!0},getAll:{value:function(e){for(var t=[],n=0;n<this._list.length;++n)this._list[n].name===e&&t.push(this._list[n].value);return t},writable:!0,enumerable:!0,configurable:!0},has:{value:function(e){for(var t=0;t<this._list.length;++t)if(this._list[t].name===e)return!0;return!1},writable:!0,enumerable:!0,configurable:!0},set:{value:function(e,t){for(var n=!1,r=0;r<this._list.length;)this._list[r].name===e?n?this._list.splice(r,1):(this._list[r].value=t,n=!0,++r):++r;n||this._list.push({name:e,value:t}),this._update_steps()},writable:!0,enumerable:!0,configurable:!0},entries:{value:function(){return new u(this._list,"key+value")},writable:!0,enumerable:!0,configurable:!0},keys:{value:function(){return new u(this._list,"key")},writable:!0,enumerable:!0,configurable:!0},values:{value:function(){return new u(this._list,"value")},writable:!0,enumerable:!0,configurable:!0},forEach:{value:function(e){var t=arguments.length>1?arguments[1]:undefined;this._list.forEach(function(n){e.call(t,n.value,n.name)})},writable:!0,enumerable:!0,configurable:!0},toString:{value:function(){return n(this._list)},writable:!0,enumerable:!1,configurable:!0},sort:{value:function p(){for(var e=this.entries(),t=e.next(),n=[],r={};!t.done;){var a=t.value,i=a[0];n.push(i),Object.prototype.hasOwnProperty.call(r,i)||(r[i]=[]),r[i].push(a[1]),t=e.next()}n.sort();for(var o=0;o<n.length;o++)this["delete"](n[o]);for(var u=0;u<n.length;u++)i=n[u],this.append(i,r[i].shift())}}}),"Symbol"in e&&"iterator"in e.Symbol&&(Object.defineProperty(o.prototype,e.Symbol.iterator,{value:o.prototype.entries,writable:!0,enumerable:!0,configurable:!0}),Object.defineProperty(u.prototype,e.Symbol.iterator,{value:function(){return this},writable:!0,enumerable:!0,configurable:!0})),s)for(var h in s)Object.prototype.hasOwnProperty.call(s,h)&&"function"==typeof s[h]&&(l[h]=s[h]);e.URL=l,e.URLSearchParams=o}(),function(){if("1"!==new e.URLSearchParams([["a",1]]).get("a")||"1"!==new e.URLSearchParams({a:1}).get("a")){var n=e.URLSearchParams;e.URLSearchParams=function(e){if(e&&"object"==typeof e&&t(e)){var r=new n;return Array.from(e).forEach(function(e){if(!t(e))throw TypeError();var n=Array.from(e);if(2!==n.length)throw TypeError();r.append(n[0],n[1])}),r}return e&&"object"==typeof e?(r=new n,Object.keys(e).forEach(function(t){r.set(t,e[t])}),r):new n(e)}}}()}(self);
|
@@ -62,7 +62,29 @@
|
|
62
62
|
return output.replace(/%20/g, '+');
|
63
63
|
}
|
64
64
|
|
65
|
+
// NOTE: URL API accepts inputs like `?x=%`, `?x=%a`, and `?x=%2sf`
|
66
|
+
// as literals, whereas legacy decodeURIComponent would throw
|
67
|
+
// URIError (as specified by ECMAScript).
|
68
|
+
//
|
69
|
+
// https://url.spec.whatwg.org/#percent-decode
|
70
|
+
function percent_decode(bytes) {
|
71
|
+
// NOTE:
|
72
|
+
// * Only decode pairs of exactly two bytes.
|
73
|
+
// * Only decode bytes in range 0-9, A-F, a-f.
|
74
|
+
// * Decode as many pairs at the same time as possible.
|
75
|
+
// This is because we're not actually operating on internal bytes,
|
76
|
+
// but on a valid UTF string, and the string must remain valid at
|
77
|
+
// all times, and decodeURIComponent will throw when attempting to
|
78
|
+
// decode a byte that represents only part of a codepoint, for example
|
79
|
+
// "%7F" separately from "%7F%C3%BF".
|
80
|
+
return bytes.replace(/((%[0-9A-Fa-f]{2})*)/g, function (_, m) {
|
81
|
+
return decodeURIComponent(m);
|
82
|
+
});
|
83
|
+
}
|
84
|
+
|
65
85
|
// NOTE: Doesn't do the encoding/decoding dance
|
86
|
+
//
|
87
|
+
// https://url.spec.whatwg.org/#concept-urlencoded-parser
|
66
88
|
function urlencoded_parse(input, isindex) {
|
67
89
|
var sequences = input.split('&');
|
68
90
|
if (isindex && sequences[0].indexOf('=') === -1)
|
@@ -85,8 +107,8 @@
|
|
85
107
|
var output = [];
|
86
108
|
pairs.forEach(function (pair) {
|
87
109
|
output.push({
|
88
|
-
name:
|
89
|
-
value:
|
110
|
+
name: percent_decode(pair.name),
|
111
|
+
value: percent_decode(pair.value)
|
90
112
|
});
|
91
113
|
});
|
92
114
|
return output;
|
@@ -0,0 +1 @@
|
|
1
|
+
{"dependencies":["_ESAbstract.GetIterator","_ESAbstract.IteratorStep","_ESAbstract.IteratorValue"],"spec":"https://tc39.github.io/ecma262/#sec-iterabletolist","browsers":{"android":"*","bb":"*","chrome":"*","edge":"*","edge_mob":"*","firefox":"*","firefox_mob":"*","ie":"*","ie_mob":"*","ios_chr":"*","ios_saf":"*","op_mini":"*","op_mob":"*","opera":"*","safari":"*","samsung_mob":"*"},"detectSource":"","baseDir":"_ESAbstract/IterableToList","hasTests":false,"isTestable":true,"isPublic":false,"size":188}
|
@@ -0,0 +1 @@
|
|
1
|
+
function IterableToList(t){for(var r=arguments.length>1?GetIterator(t,arguments[1]):GetIterator(t),e=[],a=!0;!1!==a;)if(!1!==(a=IteratorStep(r))){var o=IteratorValue(a);e.push(o)}return e}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
// _ESAbstract.IterableToList
|
3
|
+
/* global GetIterator, IteratorStep, IteratorValue */
|
4
|
+
// 7.4.11 IterableToList ( items [ , method ] )
|
5
|
+
function IterableToList(items /*, method */) { // eslint-disable-line no-unused-vars
|
6
|
+
// 1. If method is present, then
|
7
|
+
// 1.a. Let iteratorRecord be ? GetIterator(items, sync, method).
|
8
|
+
// 2. Else,
|
9
|
+
// 2.a. Let iteratorRecord be ? GetIterator(items, sync).
|
10
|
+
var iteratorRecord = arguments.length > 1
|
11
|
+
? GetIterator(items, arguments[1])
|
12
|
+
: GetIterator(items);
|
13
|
+
// 3. Let values be a new empty List.
|
14
|
+
var values = [];
|
15
|
+
// 4. Let next be true.
|
16
|
+
var next = true;
|
17
|
+
// 5. Repeat, while next is not false,
|
18
|
+
while (next !== false) {
|
19
|
+
// 5.a. Set next to ? IteratorStep(iteratorRecord).
|
20
|
+
next = IteratorStep(iteratorRecord);
|
21
|
+
// 5.b. If next is not false, then
|
22
|
+
if (next !== false) {
|
23
|
+
// 5.b.i. Let nextValue be ? IteratorValue(next).
|
24
|
+
var nextValue = IteratorValue(next);
|
25
|
+
// 5.b.ii. Append nextValue to the end of the List values.
|
26
|
+
values.push(nextValue);
|
27
|
+
}
|
28
|
+
}
|
29
|
+
// 6. Return values.
|
30
|
+
return values;
|
31
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"dependencies":["_ESAbstract.Get","_ESAbstract.ToLength"],"spec":"https://tc39.github.io/ecma262/#sec-lengthofarraylike","browsers":{"android":"*","bb":"*","chrome":"*","edge":"*","edge_mob":"*","firefox":"*","firefox_mob":"*","ie":"*","ie_mob":"*","ios_chr":"*","ios_saf":"*","op_mini":"*","op_mob":"*","opera":"*","safari":"*","samsung_mob":"*"},"detectSource":"","baseDir":"_ESAbstract/LengthOfArrayLike","hasTests":false,"isTestable":true,"isPublic":false,"size":63}
|
@@ -0,0 +1 @@
|
|
1
|
+
function LengthOfArrayLike(e){return ToLength(Get(e,"length"))}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
|
2
|
+
// _ESAbstract.LengthOfArrayLike
|
3
|
+
/* global Get, ToLength */
|
4
|
+
// 7.3.19. LengthOfArrayLike ( obj )
|
5
|
+
function LengthOfArrayLike(obj) { // eslint-disable-line no-unused-vars
|
6
|
+
// 1. Return ℝ(? ToLength(? Get(obj, "length"))).
|
7
|
+
return ToLength(Get(obj, 'length'));
|
8
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"dependencies":["_ESAbstract.ToNumber"],"spec":"https://tc39.github.io/ecma262/#sec-tointegerorinfinity","browsers":{"android":"*","bb":"*","chrome":"*","edge":"*","edge_mob":"*","firefox":"*","firefox_mob":"*","ie":"*","ie_mob":"*","ios_chr":"*","ios_saf":"*","op_mini":"*","op_mob":"*","opera":"*","safari":"*","samsung_mob":"*"},"detectSource":"","baseDir":"_ESAbstract/ToIntegerOrInfinity","hasTests":false,"isTestable":true,"isPublic":false,"size":210}
|
@@ -0,0 +1 @@
|
|
1
|
+
function ToIntegerOrInfinity(n){var i=ToNumber(n);if(isNaN(i)||0===i||1/i==-Infinity)return 0;if(i===Infinity)return Infinity;if(i===-Infinity)return-Infinity;var r=Math.floor(Math.abs(i));return i<0&&(r=-r),r}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
// _ESAbstract.ToIntegerOrInfinity
|
3
|
+
/* global ToNumber */
|
4
|
+
// 7.1.5. ToIntegerOrInfinity ( argument )
|
5
|
+
function ToIntegerOrInfinity(argument) { // eslint-disable-line no-unused-vars
|
6
|
+
// 1. Let number be ? ToNumber(argument).
|
7
|
+
var number = ToNumber(argument);
|
8
|
+
// 2. If number is NaN, +0𝔽, or -0𝔽, return 0.
|
9
|
+
if (isNaN(number) || number === 0 || 1/number === -Infinity) return 0;
|
10
|
+
// 3. If number is +∞𝔽, return +∞.
|
11
|
+
if (number === Infinity) return Infinity;
|
12
|
+
// 4. If number is -∞𝔽, return -∞.
|
13
|
+
if (number === -Infinity) return -Infinity;
|
14
|
+
// 5. Let integer be floor(abs(ℝ(number))).
|
15
|
+
var integer = Math.floor(Math.abs(number));
|
16
|
+
// 6. If number < +0𝔽, set integer to -integer.
|
17
|
+
if (number < 0) integer = -integer;
|
18
|
+
// 7. Return integer.
|
19
|
+
return integer;
|
20
|
+
}
|