@auth0/auth0-spa-js 1.21.1 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/auth0-spa-js.development.js +132 -80
- package/dist/auth0-spa-js.development.js.map +1 -1
- package/dist/auth0-spa-js.production.esm.js +1 -1
- package/dist/auth0-spa-js.production.esm.js.map +1 -1
- package/dist/auth0-spa-js.production.js +1 -1
- package/dist/auth0-spa-js.production.js.map +1 -1
- package/dist/lib/auth0-spa-js.cjs.js +132 -80
- package/dist/lib/auth0-spa-js.cjs.js.map +1 -1
- package/dist/typings/Auth0Client.d.ts +1 -0
- package/dist/typings/constants.d.ts +1 -1
- package/dist/typings/errors.d.ts +5 -0
- package/dist/typings/global.d.ts +20 -0
- package/dist/typings/utils.d.ts +7 -0
- package/dist/typings/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/Auth0Client.ts +24 -7
- package/src/constants.ts +1 -2
- package/src/errors.ts +15 -0
- package/src/global.ts +21 -0
- package/src/utils.ts +10 -0
- package/src/version.ts +1 -1
- package/src/worker/token.worker.ts +2 -2
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Auth0 SDK for Single Page Applications using [Authorization Code Grant Flow with
|
|
|
31
31
|
From the CDN:
|
|
32
32
|
|
|
33
33
|
```html
|
|
34
|
-
<script src="https://cdn.auth0.com/js/auth0-spa-js/1.
|
|
34
|
+
<script src="https://cdn.auth0.com/js/auth0-spa-js/1.22/auth0-spa-js.production.js"></script>
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
Using [npm](https://npmjs.org):
|
|
@@ -385,10 +385,10 @@
|
|
|
385
385
|
(module.exports = function (key, value) {
|
|
386
386
|
return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
|
|
387
387
|
})('versions', []).push({
|
|
388
|
-
version: '3.22.
|
|
388
|
+
version: '3.22.4',
|
|
389
389
|
mode: 'global',
|
|
390
390
|
copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
|
|
391
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.22.
|
|
391
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.22.4/LICENSE',
|
|
392
392
|
source: 'https://github.com/zloirock/core-js'
|
|
393
393
|
});
|
|
394
394
|
});
|
|
@@ -564,6 +564,21 @@
|
|
|
564
564
|
return object;
|
|
565
565
|
};
|
|
566
566
|
|
|
567
|
+
var FunctionPrototype$1 = Function.prototype;
|
|
568
|
+
// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
569
|
+
var getDescriptor = descriptors && Object.getOwnPropertyDescriptor;
|
|
570
|
+
|
|
571
|
+
var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
|
|
572
|
+
// additional protection from minified / mangled / dropped function names
|
|
573
|
+
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
574
|
+
var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
|
|
575
|
+
|
|
576
|
+
var functionName = {
|
|
577
|
+
EXISTS: EXISTS,
|
|
578
|
+
PROPER: PROPER,
|
|
579
|
+
CONFIGURABLE: CONFIGURABLE
|
|
580
|
+
};
|
|
581
|
+
|
|
567
582
|
var functionToString = functionUncurryThis(Function.toString);
|
|
568
583
|
|
|
569
584
|
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
|
|
@@ -647,50 +662,56 @@
|
|
|
647
662
|
getterFor: getterFor
|
|
648
663
|
};
|
|
649
664
|
|
|
650
|
-
var
|
|
651
|
-
|
|
652
|
-
var
|
|
653
|
-
|
|
654
|
-
var EXISTS = hasOwnProperty_1(FunctionPrototype$1, 'name');
|
|
655
|
-
// additional protection from minified / mangled / dropped function names
|
|
656
|
-
var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
|
|
657
|
-
var CONFIGURABLE = EXISTS && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));
|
|
665
|
+
var makeBuiltIn_1 = createCommonjsModule(function (module) {
|
|
666
|
+
var defineProperty = objectDefineProperty.f;
|
|
667
|
+
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
658
668
|
|
|
659
|
-
var functionName = {
|
|
660
|
-
EXISTS: EXISTS,
|
|
661
|
-
PROPER: PROPER,
|
|
662
|
-
CONFIGURABLE: CONFIGURABLE
|
|
663
|
-
};
|
|
664
669
|
|
|
665
|
-
var redefine = createCommonjsModule(function (module) {
|
|
666
|
-
var CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;
|
|
667
670
|
|
|
668
|
-
var getInternalState = internalState.get;
|
|
669
671
|
var enforceInternalState = internalState.enforce;
|
|
672
|
+
var getInternalState = internalState.get;
|
|
673
|
+
|
|
674
|
+
var CONFIGURABLE_LENGTH = !fails(function () {
|
|
675
|
+
return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
|
|
676
|
+
});
|
|
677
|
+
|
|
670
678
|
var TEMPLATE = String(String).split('String');
|
|
671
679
|
|
|
672
|
-
|
|
680
|
+
var makeBuiltIn = module.exports = function (value, name, options) {
|
|
681
|
+
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
682
|
+
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
683
|
+
}
|
|
684
|
+
if (options && options.getter) name = 'get ' + name;
|
|
685
|
+
if (options && options.setter) name = 'set ' + name;
|
|
686
|
+
if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
|
|
687
|
+
defineProperty(value, 'name', { value: name, configurable: true });
|
|
688
|
+
}
|
|
689
|
+
if (CONFIGURABLE_LENGTH && options && hasOwnProperty_1(options, 'arity') && value.length !== options.arity) {
|
|
690
|
+
defineProperty(value, 'length', { value: options.arity });
|
|
691
|
+
}
|
|
692
|
+
var state = enforceInternalState(value);
|
|
693
|
+
if (!hasOwnProperty_1(state, 'source')) {
|
|
694
|
+
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
695
|
+
} return value;
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
|
|
699
|
+
// eslint-disable-next-line no-extend-native -- required
|
|
700
|
+
Function.prototype.toString = makeBuiltIn(function toString() {
|
|
701
|
+
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
702
|
+
}, 'toString');
|
|
703
|
+
});
|
|
704
|
+
|
|
705
|
+
var defineBuiltIn = function (O, key, value, options) {
|
|
673
706
|
var unsafe = options ? !!options.unsafe : false;
|
|
674
707
|
var simple = options ? !!options.enumerable : false;
|
|
675
708
|
var noTargetGet = options ? !!options.noTargetGet : false;
|
|
676
709
|
var name = options && options.name !== undefined ? options.name : key;
|
|
677
|
-
|
|
678
|
-
if (isCallable(value)) {
|
|
679
|
-
if (String(name).slice(0, 7) === 'Symbol(') {
|
|
680
|
-
name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
|
|
681
|
-
}
|
|
682
|
-
if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
|
|
683
|
-
createNonEnumerableProperty(value, 'name', name);
|
|
684
|
-
}
|
|
685
|
-
state = enforceInternalState(value);
|
|
686
|
-
if (!state.source) {
|
|
687
|
-
state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
|
|
688
|
-
}
|
|
689
|
-
}
|
|
710
|
+
if (isCallable(value)) makeBuiltIn_1(value, name, options);
|
|
690
711
|
if (O === global_1) {
|
|
691
712
|
if (simple) O[key] = value;
|
|
692
713
|
else setGlobal(key, value);
|
|
693
|
-
return;
|
|
714
|
+
return O;
|
|
694
715
|
} else if (!unsafe) {
|
|
695
716
|
delete O[key];
|
|
696
717
|
} else if (!noTargetGet && O[key]) {
|
|
@@ -698,11 +719,8 @@
|
|
|
698
719
|
}
|
|
699
720
|
if (simple) O[key] = value;
|
|
700
721
|
else createNonEnumerableProperty(O, key, value);
|
|
701
|
-
|
|
702
|
-
}
|
|
703
|
-
return isCallable(this) && getInternalState(this).source || inspectSource(this);
|
|
704
|
-
});
|
|
705
|
-
});
|
|
722
|
+
return O;
|
|
723
|
+
};
|
|
706
724
|
|
|
707
725
|
var ceil = Math.ceil;
|
|
708
726
|
var floor = Math.floor;
|
|
@@ -909,8 +927,7 @@
|
|
|
909
927
|
if (options.sham || (targetProperty && targetProperty.sham)) {
|
|
910
928
|
createNonEnumerableProperty(sourceProperty, 'sham', true);
|
|
911
929
|
}
|
|
912
|
-
|
|
913
|
-
redefine(target, key, sourceProperty, options);
|
|
930
|
+
defineBuiltIn(target, key, sourceProperty, options);
|
|
914
931
|
}
|
|
915
932
|
};
|
|
916
933
|
|
|
@@ -1150,7 +1167,7 @@
|
|
|
1150
1167
|
// `Array.prototype.concat` method
|
|
1151
1168
|
// https://tc39.es/ecma262/#sec-array.prototype.concat
|
|
1152
1169
|
// with adding support of @@isConcatSpreadable and @@species
|
|
1153
|
-
_export({ target: 'Array', proto: true, forced: FORCED$2 }, {
|
|
1170
|
+
_export({ target: 'Array', proto: true, arity: 1, forced: FORCED$2 }, {
|
|
1154
1171
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
1155
1172
|
concat: function concat(arg) {
|
|
1156
1173
|
var O = toObject(this);
|
|
@@ -1182,7 +1199,7 @@
|
|
|
1182
1199
|
// `Object.prototype.toString` method
|
|
1183
1200
|
// https://tc39.es/ecma262/#sec-object.prototype.tostring
|
|
1184
1201
|
if (!toStringTagSupport) {
|
|
1185
|
-
|
|
1202
|
+
defineBuiltIn(Object.prototype, 'toString', objectToString, { unsafe: true });
|
|
1186
1203
|
}
|
|
1187
1204
|
|
|
1188
1205
|
// `Object.keys` method
|
|
@@ -1364,9 +1381,9 @@
|
|
|
1364
1381
|
// `Symbol.prototype[@@toPrimitive]` method
|
|
1365
1382
|
// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive
|
|
1366
1383
|
// eslint-disable-next-line no-unused-vars -- required for .length
|
|
1367
|
-
|
|
1384
|
+
defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {
|
|
1368
1385
|
return functionCall(valueOf, this);
|
|
1369
|
-
});
|
|
1386
|
+
}, { arity: 1 });
|
|
1370
1387
|
}
|
|
1371
1388
|
};
|
|
1372
1389
|
|
|
@@ -1600,11 +1617,11 @@
|
|
|
1600
1617
|
|
|
1601
1618
|
SymbolPrototype$1 = $Symbol[PROTOTYPE];
|
|
1602
1619
|
|
|
1603
|
-
|
|
1620
|
+
defineBuiltIn(SymbolPrototype$1, 'toString', function toString() {
|
|
1604
1621
|
return getInternalState$2(this).tag;
|
|
1605
1622
|
});
|
|
1606
1623
|
|
|
1607
|
-
|
|
1624
|
+
defineBuiltIn($Symbol, 'withoutSetter', function (description) {
|
|
1608
1625
|
return wrap(uid(description), description);
|
|
1609
1626
|
});
|
|
1610
1627
|
|
|
@@ -1628,7 +1645,7 @@
|
|
|
1628
1645
|
}
|
|
1629
1646
|
});
|
|
1630
1647
|
{
|
|
1631
|
-
|
|
1648
|
+
defineBuiltIn(ObjectPrototype$2, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
|
|
1632
1649
|
}
|
|
1633
1650
|
}
|
|
1634
1651
|
}
|
|
@@ -1768,7 +1785,7 @@
|
|
|
1768
1785
|
if ($stringify) {
|
|
1769
1786
|
// `JSON.stringify` method
|
|
1770
1787
|
// https://tc39.es/ecma262/#sec-json.stringify
|
|
1771
|
-
_export({ target: 'JSON', stat: true, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
|
|
1788
|
+
_export({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {
|
|
1772
1789
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
1773
1790
|
stringify: function stringify(it, replacer, space) {
|
|
1774
1791
|
var args = arraySlice(arguments);
|
|
@@ -1999,7 +2016,7 @@
|
|
|
1999
2016
|
// `%IteratorPrototype%[@@iterator]()` method
|
|
2000
2017
|
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
|
|
2001
2018
|
if (!isCallable(IteratorPrototype$2[ITERATOR$4])) {
|
|
2002
|
-
|
|
2019
|
+
defineBuiltIn(IteratorPrototype$2, ITERATOR$4, function () {
|
|
2003
2020
|
return this;
|
|
2004
2021
|
});
|
|
2005
2022
|
}
|
|
@@ -2105,7 +2122,7 @@
|
|
|
2105
2122
|
if (objectSetPrototypeOf) {
|
|
2106
2123
|
objectSetPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
|
|
2107
2124
|
} else if (!isCallable(CurrentIteratorPrototype[ITERATOR$3])) {
|
|
2108
|
-
|
|
2125
|
+
defineBuiltIn(CurrentIteratorPrototype, ITERATOR$3, returnThis);
|
|
2109
2126
|
}
|
|
2110
2127
|
}
|
|
2111
2128
|
// Set @@toStringTag to native iterators
|
|
@@ -2132,14 +2149,14 @@
|
|
|
2132
2149
|
};
|
|
2133
2150
|
if (FORCED) for (KEY in methods) {
|
|
2134
2151
|
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
|
|
2135
|
-
|
|
2152
|
+
defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
|
|
2136
2153
|
}
|
|
2137
2154
|
} else _export({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
|
|
2138
2155
|
}
|
|
2139
2156
|
|
|
2140
2157
|
// define iterator
|
|
2141
2158
|
if (IterablePrototype[ITERATOR$3] !== defaultIterator) {
|
|
2142
|
-
|
|
2159
|
+
defineBuiltIn(IterablePrototype, ITERATOR$3, defaultIterator, { name: DEFAULT });
|
|
2143
2160
|
}
|
|
2144
2161
|
iterators[NAME] = defaultIterator;
|
|
2145
2162
|
|
|
@@ -2397,7 +2414,7 @@
|
|
|
2397
2414
|
}
|
|
2398
2415
|
}
|
|
2399
2416
|
if (!TypedArrayPrototype[KEY] || forced) {
|
|
2400
|
-
|
|
2417
|
+
defineBuiltIn(TypedArrayPrototype, KEY, forced ? property
|
|
2401
2418
|
: NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);
|
|
2402
2419
|
}
|
|
2403
2420
|
};
|
|
@@ -2415,14 +2432,14 @@
|
|
|
2415
2432
|
if (!TypedArray[KEY] || forced) {
|
|
2416
2433
|
// V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable
|
|
2417
2434
|
try {
|
|
2418
|
-
return
|
|
2435
|
+
return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);
|
|
2419
2436
|
} catch (error) { /* empty */ }
|
|
2420
2437
|
} else return;
|
|
2421
2438
|
}
|
|
2422
2439
|
for (ARRAY in TypedArrayConstructorsList) {
|
|
2423
2440
|
TypedArrayConstructor = global_1[ARRAY];
|
|
2424
2441
|
if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {
|
|
2425
|
-
|
|
2442
|
+
defineBuiltIn(TypedArrayConstructor, KEY, property);
|
|
2426
2443
|
}
|
|
2427
2444
|
}
|
|
2428
2445
|
};
|
|
@@ -2554,9 +2571,15 @@
|
|
|
2554
2571
|
var $includes = arrayIncludes.includes;
|
|
2555
2572
|
|
|
2556
2573
|
|
|
2574
|
+
|
|
2575
|
+
// FF99+ bug
|
|
2576
|
+
var BROKEN_ON_SPARSE = fails(function () {
|
|
2577
|
+
return !Array(1).includes();
|
|
2578
|
+
});
|
|
2579
|
+
|
|
2557
2580
|
// `Array.prototype.includes` method
|
|
2558
2581
|
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
2559
|
-
_export({ target: 'Array', proto: true }, {
|
|
2582
|
+
_export({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
|
|
2560
2583
|
includes: function includes(el /* , fromIndex = 0 */) {
|
|
2561
2584
|
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
|
|
2562
2585
|
}
|
|
@@ -2847,7 +2870,7 @@
|
|
|
2847
2870
|
|
|
2848
2871
|
var fixMethod = function (KEY) {
|
|
2849
2872
|
var uncurriedNativeMethod = functionUncurryThis(NativePrototype[KEY]);
|
|
2850
|
-
|
|
2873
|
+
defineBuiltIn(NativePrototype, KEY,
|
|
2851
2874
|
KEY == 'add' ? function add(value) {
|
|
2852
2875
|
uncurriedNativeMethod(this, value === 0 ? 0 : value);
|
|
2853
2876
|
return this;
|
|
@@ -2926,8 +2949,8 @@
|
|
|
2926
2949
|
return Constructor;
|
|
2927
2950
|
};
|
|
2928
2951
|
|
|
2929
|
-
var
|
|
2930
|
-
for (var key in src)
|
|
2952
|
+
var defineBuiltIns = function (target, src, options) {
|
|
2953
|
+
for (var key in src) defineBuiltIn(target, key, src[key], options);
|
|
2931
2954
|
return target;
|
|
2932
2955
|
};
|
|
2933
2956
|
|
|
@@ -3017,7 +3040,7 @@
|
|
|
3017
3040
|
}
|
|
3018
3041
|
};
|
|
3019
3042
|
|
|
3020
|
-
|
|
3043
|
+
defineBuiltIns(Prototype, {
|
|
3021
3044
|
// `{ Map, Set }.prototype.clear()` methods
|
|
3022
3045
|
// https://tc39.es/ecma262/#sec-map.prototype.clear
|
|
3023
3046
|
// https://tc39.es/ecma262/#sec-set.prototype.clear
|
|
@@ -3077,7 +3100,7 @@
|
|
|
3077
3100
|
}
|
|
3078
3101
|
});
|
|
3079
3102
|
|
|
3080
|
-
|
|
3103
|
+
defineBuiltIns(Prototype, IS_MAP ? {
|
|
3081
3104
|
// `Map.prototype.get(key)` method
|
|
3082
3105
|
// https://tc39.es/ecma262/#sec-map.prototype.get
|
|
3083
3106
|
get: function get(key) {
|
|
@@ -4287,7 +4310,7 @@
|
|
|
4287
4310
|
|
|
4288
4311
|
var Lock = unwrapExports(browserTabsLock);
|
|
4289
4312
|
|
|
4290
|
-
var version = '1.
|
|
4313
|
+
var version = '1.22.0';
|
|
4291
4314
|
|
|
4292
4315
|
/**
|
|
4293
4316
|
* @ignore
|
|
@@ -4315,7 +4338,7 @@
|
|
|
4315
4338
|
/**
|
|
4316
4339
|
* @ignore
|
|
4317
4340
|
*/
|
|
4318
|
-
var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = '
|
|
4341
|
+
var MISSING_REFRESH_TOKEN_ERROR_MESSAGE = 'Missing Refresh Token';
|
|
4319
4342
|
/**
|
|
4320
4343
|
* @ignore
|
|
4321
4344
|
*/
|
|
@@ -4450,6 +4473,20 @@
|
|
|
4450
4473
|
return _this;
|
|
4451
4474
|
}
|
|
4452
4475
|
return MfaRequiredError;
|
|
4476
|
+
}(GenericError));
|
|
4477
|
+
var MissingRefreshTokenError = /** @class */ (function (_super) {
|
|
4478
|
+
__extends(MissingRefreshTokenError, _super);
|
|
4479
|
+
/* istanbul ignore next */
|
|
4480
|
+
function MissingRefreshTokenError(audience, scope) {
|
|
4481
|
+
var _this = _super.call(this, 'missing_refresh_token', "Missing Refresh Token (audience: '".concat(valueOrEmptyString(audience, [
|
|
4482
|
+
'default'
|
|
4483
|
+
]), "', scope: '").concat(valueOrEmptyString(scope), "')")) || this;
|
|
4484
|
+
_this.audience = audience;
|
|
4485
|
+
_this.scope = scope;
|
|
4486
|
+
Object.setPrototypeOf(_this, MissingRefreshTokenError.prototype);
|
|
4487
|
+
return _this;
|
|
4488
|
+
}
|
|
4489
|
+
return MissingRefreshTokenError;
|
|
4453
4490
|
}(GenericError));
|
|
4454
4491
|
|
|
4455
4492
|
var parseQueryResult = function (queryString) {
|
|
@@ -4629,7 +4666,17 @@
|
|
|
4629
4666
|
if (typeof getCryptoSubtle() === 'undefined') {
|
|
4630
4667
|
throw new Error("\n auth0-spa-js must run on a secure origin. See https://github.com/auth0/auth0-spa-js/blob/master/FAQ.md#why-do-i-get-auth0-spa-js-must-run-on-a-secure-origin for more information.\n ");
|
|
4631
4668
|
}
|
|
4632
|
-
};
|
|
4669
|
+
};
|
|
4670
|
+
/**
|
|
4671
|
+
* Returns an empty string when value is falsy, or when it's value is included in the exclude argument.
|
|
4672
|
+
* @param value The value to check
|
|
4673
|
+
* @param exclude An array of values that should result in an empty string.
|
|
4674
|
+
* @returns The value, or an empty string when falsy or included in the exclude argument.
|
|
4675
|
+
*/
|
|
4676
|
+
function valueOrEmptyString(value, exclude) {
|
|
4677
|
+
if (exclude === void 0) { exclude = []; }
|
|
4678
|
+
return value && !exclude.includes(value) ? value : '';
|
|
4679
|
+
}
|
|
4633
4680
|
|
|
4634
4681
|
function fetch(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return {ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(s.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||"get",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+","+t:t;}),t(a());},s.onerror=r,s.withCredentials="include"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null);})}
|
|
4635
4682
|
|
|
@@ -5485,7 +5532,7 @@
|
|
|
5485
5532
|
};
|
|
5486
5533
|
}
|
|
5487
5534
|
|
|
5488
|
-
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogQGlnbm9yZQ0KICAgICAqLw0KICAgIHZhciBNSVNTSU5HX1JFRlJFU0hfVE9LRU5fRVJST1JfTUVTU0FHRSA9ICdUaGUgd2ViIHdvcmtlciBpcyBtaXNzaW5nIHRoZSByZWZyZXNoIHRva2VuJzsKCiAgICB2YXIgcmVmcmVzaFRva2VucyA9IHt9Ow0KICAgIHZhciBjYWNoZUtleSA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsgcmV0dXJuICIiLmNvbmNhdChhdWRpZW5jZSwgInwiKS5jb25jYXQoc2NvcGUpOyB9Ow0KICAgIHZhciBnZXRSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHNldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChyZWZyZXNoVG9rZW4sIGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gKHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV0gPSByZWZyZXNoVG9rZW4pOyB9Ow0KICAgIHZhciBkZWxldGVSZWZyZXNoVG9rZW4gPSBmdW5jdGlvbiAoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgIHJldHVybiBkZWxldGUgcmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXTsNCiAgICB9Ow0KICAgIHZhciB3YWl0ID0gZnVuY3Rpb24gKHRpbWUpIHsNCiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJldHVybiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUpOyB9KTsNCiAgICB9Ow0KICAgIHZhciBmb3JtRGF0YVRvT2JqZWN0ID0gZnVuY3Rpb24gKGZvcm1EYXRhKSB7DQogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoZm9ybURhdGEpOw0KICAgICAgICB2YXIgcGFyc2VkUXVlcnkgPSB7fTsNCiAgICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsLCBrZXkpIHsNCiAgICAgICAgICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSB2YWw7DQogICAgICAgIH0pOw0KICAgICAgICByZXR1cm4gcGFyc2VkUXVlcnk7DQogICAgfTsNCiAgICB2YXIgbWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiAoX2EpIHsNCiAgICAgICAgdmFyIF9iID0gX2EuZGF0YSwgdGltZW91dCA9IF9iLnRpbWVvdXQsIGF1dGggPSBfYi5hdXRoLCBmZXRjaFVybCA9IF9iLmZldGNoVXJsLCBmZXRjaE9wdGlvbnMgPSBfYi5mZXRjaE9wdGlvbnMsIHVzZUZvcm1EYXRhID0gX2IudXNlRm9ybURhdGEsIF9jID0gX19yZWFkKF9hLnBvcnRzLCAxKSwgcG9ydCA9IF9jWzBdOw0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIHZhciBqc29uLCBfZCwgYXVkaWVuY2UsIHNjb3BlLCBib2R5LCByZWZyZXNoVG9rZW4sIGFib3J0Q29udHJvbGxlciwgcmVzcG9uc2UsIGVycm9yXzEsIGVycm9yXzI7DQogICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9lKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoIChfZS5sYWJlbCkgew0KICAgICAgICAgICAgICAgICAgICBjYXNlIDA6DQogICAgICAgICAgICAgICAgICAgICAgICBfZCA9IGF1dGggfHwge30sIGF1ZGllbmNlID0gX2QuYXVkaWVuY2UsIHNjb3BlID0gX2Quc2NvcGU7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDE7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMToNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMSwgNywgLCA4XSk7DQogICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1EYXRhVG9PYmplY3QoZmV0Y2hPcHRpb25zLmJvZHkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGZldGNoT3B0aW9ucy5ib2R5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYm9keS5yZWZyZXNoX3Rva2VuICYmIGJvZHkuZ3JhbnRfdHlwZSA9PT0gJ3JlZnJlc2hfdG9rZW4nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRva2VuID0gZ2V0UmVmcmVzaFRva2VuKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWZyZXNoVG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1JU1NJTkdfUkVGUkVTSF9UT0tFTl9FUlJPUl9NRVNTQUdFKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLmJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5ldyBVUkxTZWFyY2hQYXJhbXMoX19hc3NpZ24oX19hc3NpZ24oe30sIGJvZHkpLCB7IHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbiB9KSkudG9TdHJpbmcoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04uc3RyaW5naWZ5KF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gdm9pZCAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBBYm9ydENvbnRyb2xsZXIgPT09ICdmdW5jdGlvbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hPcHRpb25zLnNpZ25hbCA9IGFib3J0Q29udHJvbGxlci5zaWduYWw7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMjsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsyLCA0LCAsIDVdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIFByb21pc2UucmFjZShbDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQodGltZW91dCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGZldGNoVXJsLCBfX2Fzc2lnbih7fSwgZmV0Y2hPcHRpb25zKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgNV07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzEgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmZXRjaCBlcnJvciwgcmVqZWN0IGBzZW5kTWVzc2FnZWAgdXNpbmcgYGVycm9yYCBrZXkgc28gdGhhdCB3ZSByZXRyeS4NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJvcl8xLm1lc3NhZ2UNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDU6DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgdGltZXMgb3V0LCBhYm9ydCBpdCBhbmQgbGV0IGBzd2l0Y2hGZXRjaGAgcmFpc2UgdGhlIGVycm9yLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhYm9ydENvbnRyb2xsZXIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlci5hYm9ydCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogIlRpbWVvdXQgd2hlbiBleGVjdXRpbmcgJ2ZldGNoJyINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCByZXNwb25zZS5qc29uKCldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDY6DQogICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24ucmVmcmVzaF90b2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlZnJlc2hUb2tlbihqc29uLnJlZnJlc2hfdG9rZW4sIGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGpzb24ucmVmcmVzaF90b2tlbjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJlZnJlc2hUb2tlbihhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHJlc3BvbnNlLm9rLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IGpzb24NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNzoNCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yXzIgPSBfZS5zZW50KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvazogZmFsc2UsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbjogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9kZXNjcmlwdGlvbjogZXJyb3JfMi5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCA4XTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA4OiByZXR1cm4gWzIgLypyZXR1cm4qL107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0pOw0KICAgIH07DQogICAgLy8gRG9uJ3QgcnVuIGBhZGRFdmVudExpc3RlbmVyYCBpbiBvdXIgdGVzdHMgKHRoaXMgaXMgcmVwbGFjZWQgaW4gcm9sbHVwKQ0KICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICAqLw0KICAgIHsNCiAgICAgICAgLy8gQHRzLWlnbm9yZQ0KICAgICAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbWVzc2FnZUhhbmRsZXIpOw0KICAgIH0KCn0pKCk7Cgo=', null, false);
|
|
5535
|
+
var WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KICAgIC8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovDQoNCiAgICB2YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHsNCiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fA0KICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fA0KICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTsNCiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7DQogICAgICAgIGlmICh0eXBlb2YgYiAhPT0gImZ1bmN0aW9uIiAmJiBiICE9PSBudWxsKQ0KICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSAiICsgU3RyaW5nKGIpICsgIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsIik7DQogICAgICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7DQogICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfQ0KICAgICAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7DQogICAgfQ0KDQogICAgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7DQogICAgICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7DQogICAgICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHsNCiAgICAgICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdDsNCiAgICAgICAgfTsNCiAgICAgICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7DQogICAgfTsNCg0KICAgIGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHsNCiAgICAgICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9DQogICAgICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgew0KICAgICAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbInRocm93Il0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfQ0KICAgICAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH0NCiAgICAgICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTsNCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkgew0KICAgICAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnOw0KICAgICAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgInRocm93IjogdmVyYigxKSwgInJldHVybiI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gImZ1bmN0aW9uIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZzsNCiAgICAgICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9DQogICAgICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHsNCiAgICAgICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuIik7DQogICAgICAgICAgICB3aGlsZSAoXykgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5WyJyZXR1cm4iXSA6IG9wWzBdID8geVsidGhyb3ciXSB8fCAoKHQgPSB5WyJyZXR1cm4iXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7DQogICAgICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdOw0KICAgICAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH0NCiAgICAgICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9Ow0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHsNCiAgICAgICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iICYmIG9bU3ltYm9sLml0ZXJhdG9yXTsNCiAgICAgICAgaWYgKCFtKSByZXR1cm4gbzsNCiAgICAgICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH0NCiAgICAgICAgZmluYWxseSB7DQogICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpWyJyZXR1cm4iXSkpIG0uY2FsbChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBhcjsNCiAgICB9CgogICAgLyoqDQogICAgICogUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgd2hlbiB2YWx1ZSBpcyBmYWxzeSwgb3Igd2hlbiBpdCdzIHZhbHVlIGlzIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2sNCiAgICAgKiBAcGFyYW0gZXhjbHVkZSBBbiBhcnJheSBvZiB2YWx1ZXMgdGhhdCBzaG91bGQgcmVzdWx0IGluIGFuIGVtcHR5IHN0cmluZy4NCiAgICAgKiBAcmV0dXJucyBUaGUgdmFsdWUsIG9yIGFuIGVtcHR5IHN0cmluZyB3aGVuIGZhbHN5IG9yIGluY2x1ZGVkIGluIHRoZSBleGNsdWRlIGFyZ3VtZW50Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHZhbHVlT3JFbXB0eVN0cmluZyh2YWx1ZSwgZXhjbHVkZSkgew0KICAgICAgICBpZiAoZXhjbHVkZSA9PT0gdm9pZCAwKSB7IGV4Y2x1ZGUgPSBbXTsgfQ0KICAgICAgICByZXR1cm4gdmFsdWUgJiYgIWV4Y2x1ZGUuaW5jbHVkZXModmFsdWUpID8gdmFsdWUgOiAnJzsNCiAgICB9CgogICAgLyoqDQogICAgICogRm9yIGNvbnRleHQgb24gdGhlIGlzdGFuYnVsIGlnbm9yZSBzdGF0ZW1lbnRzIGJlbG93LCBzZWU6DQogICAgICogaHR0cHM6Ly9naXRodWIuY29tL2dvdHdhcmxvc3QvaXN0YW5idWwvaXNzdWVzLzY5MA0KICAgICAqLw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIG5ldHdvcmsgcmVxdWVzdHMgdG8gdGhlIEF1dGggc2VydmVyIGZhaWwuDQogICAgICovDQogICAgdmFyIEdlbmVyaWNFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKEdlbmVyaWNFcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbikgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5lcnJvciA9IGVycm9yOw0KICAgICAgICAgICAgX3RoaXMuZXJyb3JfZGVzY3JpcHRpb24gPSBlcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgR2VuZXJpY0Vycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgR2VuZXJpY0Vycm9yLmZyb21QYXlsb2FkID0gZnVuY3Rpb24gKF9hKSB7DQogICAgICAgICAgICB2YXIgZXJyb3IgPSBfYS5lcnJvciwgZXJyb3JfZGVzY3JpcHRpb24gPSBfYS5lcnJvcl9kZXNjcmlwdGlvbjsNCiAgICAgICAgICAgIHJldHVybiBuZXcgR2VuZXJpY0Vycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbik7DQogICAgICAgIH07DQogICAgICAgIHJldHVybiBHZW5lcmljRXJyb3I7DQogICAgfShFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIGhhbmRsaW5nIHRoZSByZWRpcmVjdCBjYWxsYmFjayBmYWlscywgd2lsbCBiZSBvbmUgb2YgQXV0aDAncw0KICAgICAqIEF1dGhlbnRpY2F0aW9uIEFQSSdzIFN0YW5kYXJkIEVycm9yIFJlc3BvbnNlczogaHR0cHM6Ly9hdXRoMC5jb20vZG9jcy9hcGkvYXV0aGVudGljYXRpb24/amF2YXNjcmlwdCNzdGFuZGFyZC1lcnJvci1yZXNwb25zZXMNCiAgICAgKi8NCiAgICAvKiogQGNsYXNzICovICgoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoQXV0aGVudGljYXRpb25FcnJvciwgX3N1cGVyKTsNCiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8NCiAgICAgICAgZnVuY3Rpb24gQXV0aGVudGljYXRpb25FcnJvcihlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24sIHN0YXRlLCBhcHBTdGF0ZSkgew0KICAgICAgICAgICAgaWYgKGFwcFN0YXRlID09PSB2b2lkIDApIHsgYXBwU3RhdGUgPSBudWxsOyB9DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5zdGF0ZSA9IHN0YXRlOw0KICAgICAgICAgICAgX3RoaXMuYXBwU3RhdGUgPSBhcHBTdGF0ZTsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgQXV0aGVudGljYXRpb25FcnJvci5wcm90b3R5cGUpOw0KICAgICAgICAgICAgcmV0dXJuIF90aGlzOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBBdXRoZW50aWNhdGlvbkVycm9yOw0KICAgIH0pKEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIFRocm93biB3aGVuIHNpbGVudCBhdXRoIHRpbWVzIG91dCAodXN1YWxseSBkdWUgdG8gYSBjb25maWd1cmF0aW9uIGlzc3VlKSBvcg0KICAgICAqIHdoZW4gbmV0d29yayByZXF1ZXN0cyB0byB0aGUgQXV0aCBzZXJ2ZXIgdGltZW91dC4NCiAgICAgKi8NCiAgICB2YXIgVGltZW91dEVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBUaW1lb3V0RXJyb3IoKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAndGltZW91dCcsICdUaW1lb3V0JykgfHwgdGhpczsNCiAgICAgICAgICAgIC8vaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0LXdpa2kvYmxvYi9tYXN0ZXIvQnJlYWtpbmctQ2hhbmdlcy5tZCNleHRlbmRpbmctYnVpbHQtaW5zLWxpa2UtZXJyb3ItYXJyYXktYW5kLW1hcC1tYXktbm8tbG9uZ2VyLXdvcmsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFRpbWVvdXRFcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOw0KICAgIC8qKg0KICAgICAqIEVycm9yIHRocm93biB3aGVuIHRoZSBsb2dpbiBwb3B1cCB0aW1lcyBvdXQgKGlmIHRoZSB1c2VyIGRvZXMgbm90IGNvbXBsZXRlIGF1dGgpDQogICAgICovDQogICAgLyoqIEBjbGFzcyAqLyAoKGZ1bmN0aW9uIChfc3VwZXIpIHsNCiAgICAgICAgX19leHRlbmRzKFBvcHVwVGltZW91dEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cFRpbWVvdXRFcnJvcihwb3B1cCkgew0KICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcykgfHwgdGhpczsNCiAgICAgICAgICAgIF90aGlzLnBvcHVwID0gcG9wdXA7DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIFBvcHVwVGltZW91dEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwVGltZW91dEVycm9yOw0KICAgIH0pKFRpbWVvdXRFcnJvcikpOw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhQb3B1cENhbmNlbGxlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBQb3B1cENhbmNlbGxlZEVycm9yKHBvcHVwKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnY2FuY2VsbGVkJywgJ1BvcHVwIGNsb3NlZCcpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5wb3B1cCA9IHBvcHVwOw0KICAgICAgICAgICAgLy9odHRwczovL2dpdGh1Yi5jb20vTWljcm9zb2Z0L1R5cGVTY3JpcHQtd2lraS9ibG9iL21hc3Rlci9CcmVha2luZy1DaGFuZ2VzLm1kI2V4dGVuZGluZy1idWlsdC1pbnMtbGlrZS1lcnJvci1hcnJheS1hbmQtbWFwLW1heS1uby1sb25nZXItd29yaw0KICAgICAgICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKF90aGlzLCBQb3B1cENhbmNlbGxlZEVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIFBvcHVwQ2FuY2VsbGVkRXJyb3I7DQogICAgfSkoR2VuZXJpY0Vycm9yKSk7DQogICAgLyoqDQogICAgICogRXJyb3IgdGhyb3duIHdoZW4gdGhlIHRva2VuIGV4Y2hhbmdlIHJlc3VsdHMgaW4gYSBgbWZhX3JlcXVpcmVkYCBlcnJvcg0KICAgICAqLw0KICAgIC8qKiBAY2xhc3MgKi8gKChmdW5jdGlvbiAoX3N1cGVyKSB7DQogICAgICAgIF9fZXh0ZW5kcyhNZmFSZXF1aXJlZEVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNZmFSZXF1aXJlZEVycm9yKGVycm9yLCBlcnJvcl9kZXNjcmlwdGlvbiwgbWZhX3Rva2VuKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCBlcnJvciwgZXJyb3JfZGVzY3JpcHRpb24pIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5tZmFfdG9rZW4gPSBtZmFfdG9rZW47DQogICAgICAgICAgICAvL2h0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC13aWtpL2Jsb2IvbWFzdGVyL0JyZWFraW5nLUNoYW5nZXMubWQjZXh0ZW5kaW5nLWJ1aWx0LWlucy1saWtlLWVycm9yLWFycmF5LWFuZC1tYXAtbWF5LW5vLWxvbmdlci13b3JrDQogICAgICAgICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoX3RoaXMsIE1mYVJlcXVpcmVkRXJyb3IucHJvdG90eXBlKTsNCiAgICAgICAgICAgIHJldHVybiBfdGhpczsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gTWZhUmVxdWlyZWRFcnJvcjsNCiAgICB9KShHZW5lcmljRXJyb3IpKTsNCiAgICB2YXIgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikgew0KICAgICAgICBfX2V4dGVuZHMoTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLCBfc3VwZXIpOw0KICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLw0KICAgICAgICBmdW5jdGlvbiBNaXNzaW5nUmVmcmVzaFRva2VuRXJyb3IoYXVkaWVuY2UsIHNjb3BlKSB7DQogICAgICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzLCAnbWlzc2luZ19yZWZyZXNoX3Rva2VuJywgIk1pc3NpbmcgUmVmcmVzaCBUb2tlbiAoYXVkaWVuY2U6ICciLmNvbmNhdCh2YWx1ZU9yRW1wdHlTdHJpbmcoYXVkaWVuY2UsIFsNCiAgICAgICAgICAgICAgICAnZGVmYXVsdCcNCiAgICAgICAgICAgIF0pLCAiJywgc2NvcGU6ICciKS5jb25jYXQodmFsdWVPckVtcHR5U3RyaW5nKHNjb3BlKSwgIicpIikpIHx8IHRoaXM7DQogICAgICAgICAgICBfdGhpcy5hdWRpZW5jZSA9IGF1ZGllbmNlOw0KICAgICAgICAgICAgX3RoaXMuc2NvcGUgPSBzY29wZTsNCiAgICAgICAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihfdGhpcywgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yLnByb3RvdHlwZSk7DQogICAgICAgICAgICByZXR1cm4gX3RoaXM7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIE1pc3NpbmdSZWZyZXNoVG9rZW5FcnJvcjsNCiAgICB9KEdlbmVyaWNFcnJvcikpOwoKICAgIHZhciByZWZyZXNoVG9rZW5zID0ge307DQogICAgdmFyIGNhY2hlS2V5ID0gZnVuY3Rpb24gKGF1ZGllbmNlLCBzY29wZSkgeyByZXR1cm4gIiIuY29uY2F0KGF1ZGllbmNlLCAifCIpLmNvbmNhdChzY29wZSk7IH07DQogICAgdmFyIGdldFJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIHJlZnJlc2hUb2tlbnNbY2FjaGVLZXkoYXVkaWVuY2UsIHNjb3BlKV07DQogICAgfTsNCiAgICB2YXIgc2V0UmVmcmVzaFRva2VuID0gZnVuY3Rpb24gKHJlZnJlc2hUb2tlbiwgYXVkaWVuY2UsIHNjb3BlKSB7IHJldHVybiAocmVmcmVzaFRva2Vuc1tjYWNoZUtleShhdWRpZW5jZSwgc2NvcGUpXSA9IHJlZnJlc2hUb2tlbik7IH07DQogICAgdmFyIGRlbGV0ZVJlZnJlc2hUb2tlbiA9IGZ1bmN0aW9uIChhdWRpZW5jZSwgc2NvcGUpIHsNCiAgICAgICAgcmV0dXJuIGRlbGV0ZSByZWZyZXNoVG9rZW5zW2NhY2hlS2V5KGF1ZGllbmNlLCBzY29wZSldOw0KICAgIH07DQogICAgdmFyIHdhaXQgPSBmdW5jdGlvbiAodGltZSkgew0KICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmV0dXJuIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSk7IH0pOw0KICAgIH07DQogICAgdmFyIGZvcm1EYXRhVG9PYmplY3QgPSBmdW5jdGlvbiAoZm9ybURhdGEpIHsNCiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhmb3JtRGF0YSk7DQogICAgICAgIHZhciBwYXJzZWRRdWVyeSA9IHt9Ow0KICAgICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWwsIGtleSkgew0KICAgICAgICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbDsNCiAgICAgICAgfSk7DQogICAgICAgIHJldHVybiBwYXJzZWRRdWVyeTsNCiAgICB9Ow0KICAgIHZhciBtZXNzYWdlSGFuZGxlciA9IGZ1bmN0aW9uIChfYSkgew0KICAgICAgICB2YXIgX2IgPSBfYS5kYXRhLCB0aW1lb3V0ID0gX2IudGltZW91dCwgYXV0aCA9IF9iLmF1dGgsIGZldGNoVXJsID0gX2IuZmV0Y2hVcmwsIGZldGNoT3B0aW9ucyA9IF9iLmZldGNoT3B0aW9ucywgdXNlRm9ybURhdGEgPSBfYi51c2VGb3JtRGF0YSwgX2MgPSBfX3JlYWQoX2EucG9ydHMsIDEpLCBwb3J0ID0gX2NbMF07DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgdmFyIGpzb24sIF9kLCBhdWRpZW5jZSwgc2NvcGUsIGJvZHksIHJlZnJlc2hUb2tlbiwgYWJvcnRDb250cm9sbGVyLCByZXNwb25zZSwgZXJyb3JfMSwgZXJyb3JfMjsNCiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2UpIHsNCiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9lLmxhYmVsKSB7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9kID0gYXV0aCB8fCB7fSwgYXVkaWVuY2UgPSBfZC5hdWRpZW5jZSwgc2NvcGUgPSBfZC5zY29wZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLmxhYmVsID0gMTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOg0KICAgICAgICAgICAgICAgICAgICAgICAgX2UudHJ5cy5wdXNoKFsxLCA3LCAsIDhdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB1c2VGb3JtRGF0YQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZm9ybURhdGFUb09iamVjdChmZXRjaE9wdGlvbnMuYm9keSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZmV0Y2hPcHRpb25zLmJvZHkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFib2R5LnJlZnJlc2hfdG9rZW4gJiYgYm9keS5ncmFudF90eXBlID09PSAncmVmcmVzaF90b2tlbicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoVG9rZW4gPSBnZXRSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlZnJlc2hUb2tlbikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWlzc2luZ1JlZnJlc2hUb2tlbkVycm9yKGF1ZGllbmNlLCBzY29wZSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5ib2R5ID0gdXNlRm9ybURhdGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBuZXcgVVJMU2VhcmNoUGFyYW1zKF9fYXNzaWduKF9fYXNzaWduKHt9LCBib2R5KSwgeyByZWZyZXNoX3Rva2VuOiByZWZyZXNoVG9rZW4gfSkpLnRvU3RyaW5nKCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBKU09OLnN0cmluZ2lmeShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYm9keSksIHsgcmVmcmVzaF90b2tlbjogcmVmcmVzaFRva2VuIH0pKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGFib3J0Q29udHJvbGxlciA9IHZvaWQgMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQWJvcnRDb250cm9sbGVyID09PSAnZnVuY3Rpb24nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9ucy5zaWduYWwgPSBhYm9ydENvbnRyb2xsZXIuc2lnbmFsOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB2b2lkIDA7DQogICAgICAgICAgICAgICAgICAgICAgICBfZS5sYWJlbCA9IDI7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoNCiAgICAgICAgICAgICAgICAgICAgICAgIF9lLnRyeXMucHVzaChbMiwgNCwgLCA1XSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBQcm9taXNlLnJhY2UoWw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KHRpbWVvdXQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZXRjaChmZXRjaFVybCwgX19hc3NpZ24oe30sIGZldGNoT3B0aW9ucykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDM6DQogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDVdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8xID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmV0Y2ggZXJyb3IsIHJlamVjdCBgc2VuZE1lc3NhZ2VgIHVzaW5nIGBlcnJvcmAga2V5IHNvIHRoYXQgd2UgcmV0cnkuDQogICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZXJyb3JfMS5tZXNzYWdlDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiAvKnJldHVybiovXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA1Og0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSByZXF1ZXN0IHRpbWVzIG91dCwgYWJvcnQgaXQgYW5kIGxldCBgc3dpdGNoRmV0Y2hgIHJhaXNlIHRoZSBlcnJvci4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWJvcnRDb250cm9sbGVyKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydENvbnRyb2xsZXIuYWJvcnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICJUaW1lb3V0IHdoZW4gZXhlY3V0aW5nICdmZXRjaCciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0IC8qeWllbGQqLywgcmVzcG9uc2UuanNvbigpXTsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSA2Og0KICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IF9lLnNlbnQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLnJlZnJlc2hfdG9rZW4pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZWZyZXNoVG9rZW4oanNvbi5yZWZyZXNoX3Rva2VuLCBhdWRpZW5jZSwgc2NvcGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBqc29uLnJlZnJlc2hfdG9rZW47DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVSZWZyZXNoVG9rZW4oYXVkaWVuY2UsIHNjb3BlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rOiByZXNwb25zZS5vaywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBqc29uDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMyAvKmJyZWFrKi8sIDhdOw0KICAgICAgICAgICAgICAgICAgICBjYXNlIDc6DQogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl8yID0gX2Uuc2VudCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2s6IGZhbHNlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb246IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfZGVzY3JpcHRpb246IGVycm9yXzIubWVzc2FnZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFszIC8qYnJlYWsqLywgOF07DQogICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyIC8qcmV0dXJuKi9dOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9KTsNCiAgICB9Ow0KICAgIC8vIERvbid0IHJ1biBgYWRkRXZlbnRMaXN0ZW5lcmAgaW4gb3VyIHRlc3RzICh0aGlzIGlzIHJlcGxhY2VkIGluIHJvbGx1cCkNCiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAgKi8NCiAgICB7DQogICAgICAgIC8vIEB0cy1pZ25vcmUNCiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIG1lc3NhZ2VIYW5kbGVyKTsNCiAgICB9Cgp9KSgpOwoK', null, false);
|
|
5489
5536
|
/* eslint-enable */
|
|
5490
5537
|
|
|
5491
5538
|
var isIE11 = function () { return /Trident.*rv:11\.0/.test(navigator.userAgent); };
|
|
@@ -5717,6 +5764,8 @@
|
|
|
5717
5764
|
this.worker = new WorkerFactory();
|
|
5718
5765
|
}
|
|
5719
5766
|
this.customOptions = getCustomInitialOptions(options);
|
|
5767
|
+
this.useRefreshTokensFallback =
|
|
5768
|
+
this.options.useRefreshTokensFallback !== false;
|
|
5720
5769
|
}
|
|
5721
5770
|
Auth0Client.prototype._url = function (path) {
|
|
5722
5771
|
var auth0Client = encodeURIComponent(btoa(JSON.stringify(this.options.auth0Client || DEFAULT_AUTH0_CLIENT)));
|
|
@@ -6444,10 +6493,12 @@
|
|
|
6444
6493
|
}))];
|
|
6445
6494
|
case 1:
|
|
6446
6495
|
cache = _a.sent();
|
|
6447
|
-
if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/,
|
|
6496
|
+
if (!((!cache || !cache.refresh_token) && !this.worker)) return [3 /*break*/, 4];
|
|
6497
|
+
if (!this.useRefreshTokensFallback) return [3 /*break*/, 3];
|
|
6448
6498
|
return [4 /*yield*/, this._getTokenFromIFrame(options)];
|
|
6449
6499
|
case 2: return [2 /*return*/, _a.sent()];
|
|
6450
|
-
case 3:
|
|
6500
|
+
case 3: throw new MissingRefreshTokenError(options.audience || 'default', options.scope);
|
|
6501
|
+
case 4:
|
|
6451
6502
|
redirect_uri = options.redirect_uri ||
|
|
6452
6503
|
this.options.redirect_uri ||
|
|
6453
6504
|
window.location.origin;
|
|
@@ -6455,31 +6506,32 @@
|
|
|
6455
6506
|
timeout = typeof options.timeoutInSeconds === 'number'
|
|
6456
6507
|
? options.timeoutInSeconds * 1000
|
|
6457
6508
|
: null;
|
|
6458
|
-
_a.label =
|
|
6459
|
-
case 4:
|
|
6460
|
-
_a.trys.push([4, 6, , 9]);
|
|
6461
|
-
return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: this.httpTimeoutMs }), this.worker)];
|
|
6509
|
+
_a.label = 5;
|
|
6462
6510
|
case 5:
|
|
6463
|
-
|
|
6464
|
-
return [
|
|
6511
|
+
_a.trys.push([5, 7, , 10]);
|
|
6512
|
+
return [4 /*yield*/, oauthToken(__assign(__assign(__assign(__assign(__assign({}, this.customOptions), customOptions), { audience: audience, scope: scope, baseUrl: this.domainUrl, client_id: this.options.client_id, grant_type: 'refresh_token', refresh_token: cache && cache.refresh_token, redirect_uri: redirect_uri }), (timeout && { timeout: timeout })), { auth0Client: this.options.auth0Client, useFormData: this.options.useFormData, timeout: this.httpTimeoutMs }), this.worker)];
|
|
6465
6513
|
case 6:
|
|
6514
|
+
tokenResult = _a.sent();
|
|
6515
|
+
return [3 /*break*/, 10];
|
|
6516
|
+
case 7:
|
|
6466
6517
|
e_2 = _a.sent();
|
|
6467
6518
|
if (!
|
|
6468
6519
|
// The web worker didn't have a refresh token in memory so
|
|
6469
6520
|
// fallback to an iframe.
|
|
6470
|
-
(e_2.message
|
|
6521
|
+
((e_2.message.indexOf(MISSING_REFRESH_TOKEN_ERROR_MESSAGE) > -1 ||
|
|
6471
6522
|
// A refresh token was found, but is it no longer valid.
|
|
6472
6523
|
// Fallback to an iframe.
|
|
6473
6524
|
(e_2.message &&
|
|
6474
|
-
e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1))
|
|
6525
|
+
e_2.message.indexOf(INVALID_REFRESH_TOKEN_ERROR_MESSAGE) > -1)) &&
|
|
6526
|
+
this.useRefreshTokensFallback))
|
|
6475
6527
|
// The web worker didn't have a refresh token in memory so
|
|
6476
6528
|
// fallback to an iframe.
|
|
6477
|
-
return [3 /*break*/,
|
|
6529
|
+
return [3 /*break*/, 9];
|
|
6478
6530
|
return [4 /*yield*/, this._getTokenFromIFrame(options)];
|
|
6479
|
-
case
|
|
6480
|
-
case
|
|
6481
|
-
case
|
|
6482
|
-
case
|
|
6531
|
+
case 8: return [2 /*return*/, _a.sent()];
|
|
6532
|
+
case 9: throw e_2;
|
|
6533
|
+
case 10: return [4 /*yield*/, this._verifyIdToken(tokenResult.id_token)];
|
|
6534
|
+
case 11:
|
|
6483
6535
|
decodedToken = _a.sent();
|
|
6484
6536
|
return [2 /*return*/, __assign(__assign({}, tokenResult), { decodedToken: decodedToken, scope: options.scope, oauthTokenScope: tokenResult.scope, audience: options.audience || 'default' })];
|
|
6485
6537
|
}
|