clientnode 4.0.1435 → 4.0.1437

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.
Files changed (142) hide show
  1. package/dist/Lock.js +83 -94
  2. package/dist/Logger.js +163 -715
  3. package/dist/Semaphore.js +46 -81
  4. package/dist/array.js +337 -568
  5. package/dist/cli.js +37 -71
  6. package/dist/constants.js +110 -209
  7. package/dist/context.js +25 -229
  8. package/dist/cookie.js +48 -226
  9. package/dist/data-transfer.js +166 -725
  10. package/dist/datetime.js +241 -1059
  11. package/dist/domNode.js +277 -441
  12. package/dist/expression/evaluators.js +234 -1112
  13. package/dist/expression/helper.js +82 -135
  14. package/dist/expression/index.js +10 -1245
  15. package/dist/expression/indicator-functions.js +21 -239
  16. package/dist/expression/type.js +4 -34
  17. package/dist/filesystem.js +323 -309
  18. package/dist/function.js +51 -125
  19. package/dist/index.js +26 -2709
  20. package/dist/indicators.js +68 -440
  21. package/dist/module.js +78 -164
  22. package/dist/number.js +25 -423
  23. package/dist/object.js +771 -852
  24. package/dist/process.js +39 -245
  25. package/dist/property-types.js +96 -157
  26. package/dist/scope.js +56 -1825
  27. package/dist/string.js +603 -909
  28. package/dist/test-helper.js +171 -541
  29. package/dist/type.js +8 -37
  30. package/dist/utility.js +91 -336
  31. package/package.json +2 -2
  32. package/dist/Lock.d.ts +0 -39
  33. package/dist/Logger.d.ts +0 -102
  34. package/dist/Semaphore.d.ts +0 -29
  35. package/dist/array.d.ts +0 -150
  36. package/dist/bundle/Lock.js +0 -111
  37. package/dist/bundle/Logger.js +0 -705
  38. package/dist/bundle/Semaphore.js +0 -100
  39. package/dist/bundle/array.js +0 -648
  40. package/dist/bundle/cli.js +0 -85
  41. package/dist/bundle/constants.js +0 -225
  42. package/dist/bundle/context.js +0 -243
  43. package/dist/bundle/cookie.js +0 -262
  44. package/dist/bundle/data-transfer.js +0 -741
  45. package/dist/bundle/datetime.js +0 -1064
  46. package/dist/bundle/domNode.js +0 -471
  47. package/dist/bundle/expression/evaluators.js +0 -1115
  48. package/dist/bundle/expression/helper.js +0 -106
  49. package/dist/bundle/expression/index.js +0 -1223
  50. package/dist/bundle/expression/indicator-functions.js +0 -235
  51. package/dist/bundle/expression/type.js +0 -50
  52. package/dist/bundle/filesystem.js +0 -374
  53. package/dist/bundle/function.js +0 -105
  54. package/dist/bundle/index.js +0 -2686
  55. package/dist/bundle/indicators.js +0 -459
  56. package/dist/bundle/module.js +0 -180
  57. package/dist/bundle/number.js +0 -425
  58. package/dist/bundle/object.js +0 -1004
  59. package/dist/bundle/process.js +0 -275
  60. package/dist/bundle/property-types.js +0 -167
  61. package/dist/bundle/scope.js +0 -1808
  62. package/dist/bundle/string.js +0 -1095
  63. package/dist/bundle/test-helper.js +0 -690
  64. package/dist/bundle/type.js +0 -50
  65. package/dist/bundle/utility.js +0 -362
  66. package/dist/cli.d.ts +0 -31
  67. package/dist/compatible/Lock.js +0 -111
  68. package/dist/compatible/Logger.js +0 -705
  69. package/dist/compatible/Semaphore.js +0 -100
  70. package/dist/compatible/array.js +0 -648
  71. package/dist/compatible/cli.js +0 -85
  72. package/dist/compatible/constants.js +0 -225
  73. package/dist/compatible/context.js +0 -243
  74. package/dist/compatible/cookie.js +0 -262
  75. package/dist/compatible/data-transfer.js +0 -741
  76. package/dist/compatible/datetime.js +0 -1064
  77. package/dist/compatible/domNode.js +0 -471
  78. package/dist/compatible/expression/evaluators.js +0 -1115
  79. package/dist/compatible/expression/helper.js +0 -106
  80. package/dist/compatible/expression/index.js +0 -1223
  81. package/dist/compatible/expression/indicator-functions.js +0 -235
  82. package/dist/compatible/expression/type.js +0 -50
  83. package/dist/compatible/filesystem.js +0 -374
  84. package/dist/compatible/function.js +0 -105
  85. package/dist/compatible/index.js +0 -2686
  86. package/dist/compatible/indicators.js +0 -459
  87. package/dist/compatible/module.js +0 -180
  88. package/dist/compatible/number.js +0 -425
  89. package/dist/compatible/object.js +0 -1004
  90. package/dist/compatible/process.js +0 -275
  91. package/dist/compatible/property-types.js +0 -167
  92. package/dist/compatible/scope.js +0 -1808
  93. package/dist/compatible/string.js +0 -1095
  94. package/dist/compatible/test-helper.js +0 -690
  95. package/dist/compatible/type.js +0 -50
  96. package/dist/compatible/utility.js +0 -362
  97. package/dist/constants.d.ts +0 -99
  98. package/dist/context.d.ts +0 -8
  99. package/dist/cookie.d.ts +0 -31
  100. package/dist/data-transfer.d.ts +0 -45
  101. package/dist/datetime.d.ts +0 -37
  102. package/dist/domNode.d.ts +0 -82
  103. package/dist/expression/evaluators.d.ts +0 -55
  104. package/dist/expression/helper.d.ts +0 -4
  105. package/dist/expression/index.d.ts +0 -7
  106. package/dist/expression/indicator-functions.d.ts +0 -14
  107. package/dist/expression/type.d.ts +0 -70
  108. package/dist/filesystem.d.ts +0 -143
  109. package/dist/function.d.ts +0 -20
  110. package/dist/index.d.ts +0 -23
  111. package/dist/indicators.d.ts +0 -68
  112. package/dist/module.d.ts +0 -8
  113. package/dist/number.d.ts +0 -35
  114. package/dist/object.d.ts +0 -231
  115. package/dist/process.d.ts +0 -22
  116. package/dist/property-types.d.ts +0 -460
  117. package/dist/scope.d.ts +0 -44
  118. package/dist/string.d.ts +0 -312
  119. package/dist/test/Lock.d.ts +0 -1
  120. package/dist/test/Logger.d.ts +0 -1
  121. package/dist/test/Semaphore.d.ts +0 -1
  122. package/dist/test/array.d.ts +0 -1
  123. package/dist/test/cookie.d.ts +0 -1
  124. package/dist/test/data-transfer.d.ts +0 -1
  125. package/dist/test/datetime.d.ts +0 -1
  126. package/dist/test/domNode.d.ts +0 -1
  127. package/dist/test/expression/evaluators.d.ts +0 -1
  128. package/dist/test/expression/helper.d.ts +0 -1
  129. package/dist/test/expression/indicator-functions.d.ts +0 -1
  130. package/dist/test/filesystem.d.ts +0 -1
  131. package/dist/test/function.d.ts +0 -1
  132. package/dist/test/indicators.d.ts +0 -1
  133. package/dist/test/number.d.ts +0 -1
  134. package/dist/test/object.d.ts +0 -1
  135. package/dist/test/process.d.ts +0 -1
  136. package/dist/test/property-types.d.ts +0 -1
  137. package/dist/test/scope.d.ts +0 -1
  138. package/dist/test/string.d.ts +0 -1
  139. package/dist/test/utility.d.ts +0 -1
  140. package/dist/test-helper.d.ts +0 -143
  141. package/dist/type.d.ts +0 -230
  142. package/dist/utility.d.ts +0 -44
@@ -1,522 +1,9 @@
1
- 'use strict';if(typeof module!=='undefined'&&module!==null&&eval('typeof require')!=='undefined'&&eval('require')!==null&&'main'in eval('require')&&eval('typeof require.main')!=='undefined'&&eval('require.main')!==null){var ORIGINAL_MAIN_MODULE=module;if(module!==eval('require.main')&&'paths'in module&&'paths'in eval('require.main')&&typeof __dirname!=='undefined'&&__dirname!==null)module.paths=eval('require.main.paths').concat(module.paths.filter(function(path){return eval('require.main.paths').includes(path)}))};if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;(function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("@jest/globals"), require("core-js/modules/es.array.includes.js"), require("core-js/modules/es.regexp.flags.js"));
4
- else if(typeof define === 'function' && define.amd)
5
- define(["@jest/globals", "core-js/modules/es.array.includes.js", "core-js/modules/es.regexp.flags.js"], factory);
6
- else {
7
- var a = typeof exports === 'object' ? factory(require("@jest/globals"), require("core-js/modules/es.array.includes.js"), require("core-js/modules/es.regexp.flags.js")) : factory(root["@jest/globals"], root["core-js/modules/es.array.includes.js"], root["core-js/modules/es.regexp.flags.js"]);
8
- for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
- }
10
- })(this, function(__WEBPACK_EXTERNAL_MODULE__34__, __WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__8__) {
11
- return /******/ (function() { // webpackBootstrap
12
- /******/ "use strict";
13
- /******/ var __webpack_modules__ = ({
14
-
15
- /***/ 1:
16
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
17
-
18
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
19
- /* harmony export */ CLASS_TO_TYPE_MAPPING: function() { return /* binding */ CLASS_TO_TYPE_MAPPING; }
20
- /* harmony export */ });
21
- /* unused harmony exports DEFAULT_ENCODING, CLOSE_EVENT_NAMES, CONSOLE_METHODS, VALUE_COPY_SYMBOL, IGNORE_NULL_AND_UNDEFINED_SYMBOL, ABBREVIATIONS, ANIMATION_END_EVENT_NAMES, KEY_CODES, KEYBOARD_CODES, LOCALES, PLAIN_OBJECT_PROTOTYPES, SPECIAL_REGEX_SEQUENCES, TRANSITION_END_EVENT_NAMES */
22
1
  // #!/usr/bin/env babel-node
23
2
  // -*- coding: utf-8 -*-
24
- /** @module constants *//* !
25
- region header
26
- [Project page](https://torben.website/clientnode)
27
-
28
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
29
-
30
- License
31
- -------
32
-
33
- This library written by Torben Sickert stands under a creative commons
34
- naming 3.0 unported license.
35
- See https://creativecommons.org/licenses/by/3.0/deed.de
36
- endregion
37
- */var DEFAULT_ENCODING="utf8";var CLOSE_EVENT_NAMES=(/* unused pure expression or super */ null && (["close","exit","SIGINT","SIGTERM","SIGQUIT","uncaughtException"]));var CONSOLE_METHODS=(/* unused pure expression or super */ null && (["debug","error","info","log","warn"]));var VALUE_COPY_SYMBOL=Symbol.for("clientnodeValue");var IGNORE_NULL_AND_UNDEFINED_SYMBOL=Symbol.for("clientnodeIgnoreNullAndUndefined");// Lists all known abbreviation for proper camel case to delimited and back
38
- // conversion.
39
- var ABBREVIATIONS=(/* unused pure expression or super */ null && (["html","id","url","us","de","api","href"]));// Saves a string with all css3 browser specific animation end event names.
40
- var ANIMATION_END_EVENT_NAMES="animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd";// String representation to object type name mapping.
41
- var CLASS_TO_TYPE_MAPPING={"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Error]":"error","[object Function]":"function","[object Map]":"map","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object Set]":"set","[object String]":"string"};// Saves a mapping from key codes to their corresponding name.
42
- var KEY_CODES=(/* unused pure expression or super */ null && ({BACKSPACE:8,SPACE:32,TAB:9,DELETE:46,ENTER:13,COMMA:188,PERIOD:190,END:35,ESCAPE:27,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,HOME:36,NUMPAD_ADD:107,NUMPAD_SUBTRACT:109,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,PAGE_UP:33,PAGE_DOWN:34,UP:38,DOWN:40,LEFT:37,RIGHT:39}));var KEYBOARD_CODES=(/* unused pure expression or super */ null && ({BACKSPACE:"Backspace",SPACE:"Space",TAB:"Tab",DELETE:"Delete",ENTER:"Enter",COMMA:"Comma",PERIOD:"Period",END:"End",ESCAPE:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F111",F12:"F12",HOME:"Home",NUMPAD_ADD:"NumpadAdd",NUMPAD_SUBTRACT:"NumpadSubtract",NUMPAD_DECIMAL:"NumpadDecimal",NUMPAD_DIVIDE:"NumpadDivide",NUMPAD_ENTER:"NumpadEnter",NUMPAD_MULTIPLY:"NumpadMultiply",PAGE_UP:"PageUp",PAGE_DOWN:"PageUp",UP:"ArrowUp",DOWN:"ArrowDown",LEFT:"ArrowLeft",RIGHT:"ArrowUp"}));var LOCALES=(/* unused pure expression or super */ null && ([]));var PLAIN_OBJECT_PROTOTYPES=[Object.prototype];// A list of special regular expression symbols.
43
- var SPECIAL_REGEX_SEQUENCES=(/* unused pure expression or super */ null && (["-","[","]","(",")","^","$","*","+",".","{","}"]));// Saves a string with all css3 browser specific transition end event names.
44
- var TRANSITION_END_EVENT_NAMES="transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd";
45
-
46
- /***/ }),
47
-
48
- /***/ 4:
49
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
50
-
51
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
52
- /* harmony export */ isFunction: function() { return /* binding */ isFunction; },
53
- /* harmony export */ isMap: function() { return /* binding */ isMap; },
54
- /* harmony export */ isNumeric: function() { return /* binding */ isNumeric; },
55
- /* harmony export */ isSet: function() { return /* binding */ isSet; }
56
- /* harmony export */ });
57
- /* unused harmony exports isWindow, isArrayLike, isAnyMatching, isObject, isPlainObject, isProxy */
58
- /* unused harmony import specifier */ var PLAIN_OBJECT_PROTOTYPES;
59
- /* unused harmony import specifier */ var determineType;
60
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
61
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);
62
- /* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
63
- // #!/usr/bin/env babel-node
64
- // -*- coding: utf-8 -*-
65
- /** @module indicators *//* !
66
- region header
67
- [Project page](https://torben.website/clientnode)
68
-
69
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
70
-
71
- License
72
- -------
73
-
74
- This library written by Torben Sickert stands under a creative commons
75
- naming 3.0 unported license.
76
- See https://creativecommons.org/licenses/by/3.0/deed.de
77
- endregion
78
- */function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}/**
79
- * Determines whether its argument represents a JavaScript number.
80
- * @param value - Value to analyze.
81
- * @returns A boolean value indicating whether given object is numeric
82
- * like.
83
- */var isNumeric=function isNumeric(value){var type=(0,_object__WEBPACK_IMPORTED_MODULE_2__.determineType)(value);/*
84
- NOTE: "parseFloat" "NaNs" numeric-cast false positives ("") but
85
- misinterprets leading-number strings, particularly hex literals
86
- ("0x...") subtraction forces infinities to NaN.
87
- */return["number","string"].includes(type)&&!isNaN(value-parseFloat(value))};/**
88
- * Determine whether the argument is a window.
89
- * @param value - Value to check for.
90
- * @returns Boolean value indicating the result.
91
- */var isWindow=function isWindow(value){return![null,undefined].includes(value)&&_typeof(value)==="object"&&value===(value===null||value===void 0?void 0:value.window)};/**
92
- * Checks if given object is similar to an array and can be handled like an
93
- * array.
94
- * @param object - Object to check behavior for.
95
- * @returns A boolean value indicating whether given object is array like.
96
- */var isArrayLike=function isArrayLike(object){var length;try{length=Boolean(object)&&object.length}catch(_unused){return false}var type=determineType(object);if(type==="function"||isWindow(object))return false;if(type==="array"||length===0)return true;if(typeof length==="number"&&length>0)try{var _dump=object[length-1];return true}catch(_unused2){// Continue regardless of an error.
97
- }return false};/**
98
- * Checks whether one of the given pattern matches given string.
99
- * @param target - Target to check in pattern for.
100
- * @param pattern - List of pattern to check for.
101
- * @returns Value "true" if given object is matches by at leas one of the
102
- * given pattern and "false" otherwise.
103
- */var isAnyMatching=function isAnyMatching(target,pattern){var _iterator=_createForOfIteratorHelper(pattern),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var currentPattern=_step.value;if(typeof currentPattern==="string"){if(currentPattern===target)return true}else if(currentPattern.test(target))return true}}catch(err){_iterator.e(err)}finally{_iterator.f()}return false};/**
104
- * Checks whether given object is a native object but not null.
105
- * @param value - Value to check.
106
- * @returns Value "true" if given object is a plain javaScript object and
107
- * "false" otherwise.
108
- */var isObject=function isObject(value){return value!==null&&_typeof(value)==="object"};/**
109
- * Checks whether given object is a plain native object.
110
- * @param value - Value to check.
111
- * @returns Value "true" if given object is a plain javaScript object and
112
- * "false" otherwise.
113
- */var isPlainObject=function isPlainObject(value){return isObject(value)&&PLAIN_OBJECT_PROTOTYPES.includes(Object.getPrototypeOf(value))};/**
114
- * Checks whether given object is a set.
115
- * @param value - Value to check.
116
- * @returns Value "true" if given object is a set and "false" otherwise.
117
- */var isSet=function isSet(value){return (0,_object__WEBPACK_IMPORTED_MODULE_2__.determineType)(value)==="set"};/**
118
- * Checks whether given object is a map.
119
- * @param value - Value to check.
120
- * @returns Value "true" if given object is a map and "false" otherwise.
121
- */var isMap=function isMap(value){return (0,_object__WEBPACK_IMPORTED_MODULE_2__.determineType)(value)==="map"};/**
122
- * Checks whether given object is a proxy.
123
- * @param value - Value to check.
124
- * @returns Value "true" if given object is a proxy and "false" otherwise.
125
- */var isProxy=function isProxy(value){return Boolean(value.__target__)};/**
126
- * Checks whether given object is a function.
127
- * @param value - Value to check.
128
- * @returns Value "true" if given object is a function and "false"
129
- * otherwise.
130
- */var isFunction=function isFunction(value){return Boolean(value)&&["[object AsyncFunction]","[object Function]"].includes({}.toString.call(value))};
3
+ /** @module testHelper */
4
+ 'use strict';
131
5
 
132
- /***/ }),
133
-
134
- /***/ 3:
135
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
136
-
137
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
138
- /* harmony export */ determineType: function() { return /* binding */ determineType; },
139
- /* harmony export */ represent: function() { return /* binding */ _represent; }
140
- /* harmony export */ });
141
- /* unused harmony exports addDynamicGetterAndSetter, convertCircularObjectToJSON, convertMapToPlainObject, convertPlainObjectToMap, convertSubstringInPlainObject, copy, equals, evaluateDynamicData, evaluateAsyncDynamicData, removeKeysInEvaluation, extend, getProxyHandler, mask, modifyObject, removeKeyPrefixes, sort, unwrapProxy */
142
- /* unused harmony import specifier */ var VALUE_COPY_SYMBOL;
143
- /* unused harmony import specifier */ var IGNORE_NULL_AND_UNDEFINED_SYMBOL;
144
- /* unused harmony import specifier */ var isMap;
145
- /* unused harmony import specifier */ var isSet;
146
- /* unused harmony import specifier */ var isObject;
147
- /* unused harmony import specifier */ var isPlainObject;
148
- /* unused harmony import specifier */ var isFunction;
149
- /* unused harmony import specifier */ var isProxy;
150
- /* unused harmony import specifier */ var isNotANumber;
151
- /* unused harmony import specifier */ var evaluateAndThrowError;
152
- /* unused harmony import specifier */ var escapeRegularExpressions;
153
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
154
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);
155
- /* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
156
- /* harmony import */ var core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_flags_js__WEBPACK_IMPORTED_MODULE_1__);
157
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
158
- /* harmony import */ var _indicators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
159
- // #!/usr/bin/env babel-node
160
- // -*- coding: utf-8 -*-
161
- /** @module object *//* !
162
- region header
163
- [Project page](https://torben.website/clientnode)
164
-
165
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
166
-
167
- License
168
- -------
169
-
170
- This library written by Torben Sickert stands under a creative commons
171
- naming 3.0 unported license.
172
- See https://creativecommons.org/licenses/by/3.0/deed.de
173
- endregion
174
- */function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof Generator?n:Generator,u=Object.create(c.prototype);return _regeneratorDefine2(u,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],y=!1,G={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function d(t,r){return i=t,c=0,u=e,G.n=r,a}};function d(r,n){for(c=r,u=n,t=0;!y&&f&&!o&&t<p.length;t++){var o,i=p[t],d=G.p,l=i[2];r>3?(o=l===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,G.v=n,G.n=i[1]):d<l&&(o=r<3||i[0]>n||n>l)&&(i[4]=r,i[5]=n,G.n=l,c=0))}if(o||r>1)return a;throw y=!0,n}return function(o,p,l){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&d(p,l),c=p,u=l;(t=c<2?e:u)||!y;){i||(c?c<3?(c>1&&(G.n=-1),d(c,u)):G.n=u:G.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(y=G.n<0)?u:r.call(n,G))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:y}}}(r,o,i),!0),u}var a={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}t=Object.getPrototypeOf;var c=[][n]?t(t([][n]())):(_regeneratorDefine2(t={},n,function(){return this}),t),u=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(c);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(e,o,"GeneratorFunction")),e.prototype=Object.create(u),e}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(u,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,o,"GeneratorFunction"),_regeneratorDefine2(u),_regeneratorDefine2(u,o,"Generator"),_regeneratorDefine2(u,n,function(){return this}),_regeneratorDefine2(u,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:f}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}/**
175
- * Adds dynamic getter and setter to any given data structure such as maps.
176
- * @param object - Object to proxy.
177
- * @param getterWrapper - Function to wrap each property get.
178
- * @param setterWrapper - Function to wrap each property set.
179
- * @param methodNames - Method names to perform actions on the given
180
- * object.
181
- * @param deep - Indicates to perform a deep wrapping of specified types.
182
- * @param typesToExtend - Types which should be extended (Checks are
183
- * performed via "value instanceof type".).
184
- * @returns Returns given object wrapped with a dynamic getter proxy.
185
- */var _addDynamicGetterAndSetter=function addDynamicGetterAndSetter(object,getterWrapper,setterWrapper,methodNames,deep,typesToExtend){if(getterWrapper===void 0){getterWrapper=null}if(setterWrapper===void 0){setterWrapper=null}if(methodNames===void 0){methodNames={}}if(deep===void 0){deep=true}if(typesToExtend===void 0){typesToExtend=[Object]}if(deep&&_typeof(object)==="object")if(Array.isArray(object)){var index=0;var _iterator=_createForOfIteratorHelper(object),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var value=_step.value;object[index]=_addDynamicGetterAndSetter(value,getterWrapper,setterWrapper,methodNames,deep);index+=1}}catch(err){_iterator.e(err)}finally{_iterator.f()}}else if(isMap(object)){var _iterator2=_createForOfIteratorHelper(object),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var _step2$value=_slicedToArray(_step2.value,2),key=_step2$value[0],_value=_step2$value[1];object.set(key,_addDynamicGetterAndSetter(_value,getterWrapper,setterWrapper,methodNames,deep))}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}}else if(isSet(object)){var cache=[];var _iterator3=_createForOfIteratorHelper(object),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var _value3=_step3.value;object.delete(_value3);cache.push(_addDynamicGetterAndSetter(_value3,getterWrapper,setterWrapper,methodNames,deep))}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}for(var _i=0,_cache=cache;_i<_cache.length;_i++){var _value2=_cache[_i];object.add(_value2)}}else if(object!==null)for(var _i2=0,_Object$entries=Object.entries(object);_i2<_Object$entries.length;_i2++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i2],2),_key=_Object$entries$_i[0],_value4=_Object$entries$_i[1];object[_key]=_addDynamicGetterAndSetter(_value4,getterWrapper,setterWrapper,methodNames,deep)}if(getterWrapper||setterWrapper){var _iterator4=_createForOfIteratorHelper(typesToExtend),_step4;try{var _loop=function _loop(){var type=_step4.value;if(isObject(object)&&object instanceof type){var defaultHandler=getProxyHandler(object,methodNames);var handler=getProxyHandler(object,methodNames);if(getterWrapper)handler.get=function(_target,name){if(name==="__target__")return object;if(name==="__revoke__")return function(){revoke();return object};if(typeof object[name]==="function")return object[name];return getterWrapper(defaultHandler.get(proxy,name),name,object)};if(setterWrapper)handler.set=function(_target,name,value){return defaultHandler.set(proxy,name,setterWrapper(name,value,object))};var _Proxy$revocable=Proxy.revocable({},handler),proxy=_Proxy$revocable.proxy,revoke=_Proxy$revocable.revoke;return{v:proxy}}},_ret;for(_iterator4.s();!(_step4=_iterator4.n()).done;){_ret=_loop();if(_ret)return _ret.v}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}}return object};/**
186
- * Converts given object into its serialized JSON representation by
187
- * replacing circular references with a given provided value.
188
- *
189
- * This method traverses given object recursively and tracks of seen and
190
- * already serialized structures to reuse generated strings or mark a
191
- * circular reference.
192
- * @param object - Object to serialize.
193
- * @param determineCircularReferenceValue - Callback to create a fallback
194
- * value depending on given redundant value.
195
- * @param numberOfSpaces - Number of spaces to use for string formatting.
196
- * @returns The formatted JSON string.
197
- */var convertCircularObjectToJSON=function convertCircularObjectToJSON(object,determineCircularReferenceValue,numberOfSpaces){if(determineCircularReferenceValue===void 0){determineCircularReferenceValue=function determineCircularReferenceValue(serializedValue){return serializedValue!==null&&serializedValue!==void 0?serializedValue:"__circularReference__"}}if(numberOfSpaces===void 0){numberOfSpaces=0}var seenObjects=new Map;var stringifier=function stringifier(object){var _replacer=function replacer(key,value){if(isObject(value)){var _seenObjects$get;if(seenObjects.has(value))return determineCircularReferenceValue((_seenObjects$get=seenObjects.get(value))!==null&&_seenObjects$get!==void 0?_seenObjects$get:null,key,value,seenObjects);// NOTE: Set before traversing deeper to detect cycles.
198
- seenObjects.set(value,null);var result;if(Array.isArray(value)){result=[];var _iterator5=_createForOfIteratorHelper(value),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var item=_step5.value;result.push(_replacer(null,item))}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}}else{result={};for(var _i3=0,_Object$entries2=Object.entries(value);_i3<_Object$entries2.length;_i3++){var _Object$entries2$_i=_slicedToArray(_Object$entries2[_i3],2),name=_Object$entries2$_i[0],subValue=_Object$entries2$_i[1];result[name]=_replacer(name,subValue)}}seenObjects.set(value,result);return result}return value};return JSON.stringify(object,_replacer,numberOfSpaces)};return stringifier(object)};/**
199
- * Converts given map and all nested found maps objects to corresponding
200
- * object.
201
- * @param object - Map to convert to.
202
- * @param deep - Indicates whether to perform a recursive conversion.
203
- * @returns Given map as object.
204
- */var _convertMapToPlainObject=function convertMapToPlainObject(object,deep){if(deep===void 0){deep=true}if(_typeof(object)==="object"){if(isMap(object)){var newObject={};var _iterator6=_createForOfIteratorHelper(object),_step6;try{for(_iterator6.s();!(_step6=_iterator6.n()).done;){var _step6$value=_slicedToArray(_step6.value,2),key=_step6$value[0],value=_step6$value[1];if(deep)value=_convertMapToPlainObject(value,deep);if(["number","string"].includes(_typeof(key)))newObject[String(key)]=value}}catch(err){_iterator6.e(err)}finally{_iterator6.f()}return newObject}if(deep)if(isPlainObject(object))for(var _i4=0,_Object$entries3=Object.entries(object);_i4<_Object$entries3.length;_i4++){var _Object$entries3$_i=_slicedToArray(_Object$entries3[_i4],2),_key2=_Object$entries3$_i[0],_value5=_Object$entries3$_i[1];object[_key2]=_convertMapToPlainObject(_value5,deep)}else if(Array.isArray(object)){var index=0;for(var _i5=0,_arr=object;_i5<_arr.length;_i5++){var _value6=_arr[_i5];object[index]=_convertMapToPlainObject(_value6,deep);index+=1}}else if(isSet(object)){var cache=[];var _iterator7=_createForOfIteratorHelper(object),_step7;try{for(_iterator7.s();!(_step7=_iterator7.n()).done;){var _value8=_step7.value;object.delete(_value8);cache.push(_convertMapToPlainObject(_value8,deep))}}catch(err){_iterator7.e(err)}finally{_iterator7.f()}for(var _i6=0,_cache2=cache;_i6<_cache2.length;_i6++){var _value7=_cache2[_i6];object.add(_value7)}}}return object};/**
205
- * Converts given plain object and all nested found objects to
206
- * corresponding map.
207
- * @param object - Object to convert to.
208
- * @param deep - Indicates whether to perform a recursive conversion.
209
- * @returns Given object as map.
210
- */var _convertPlainObjectToMap=function convertPlainObjectToMap(object,deep){if(deep===void 0){deep=true}if(_typeof(object)==="object"){if(isPlainObject(object)){var newObject=new Map;for(var _i7=0,_Object$entries4=Object.entries(object);_i7<_Object$entries4.length;_i7++){var _Object$entries4$_i=_slicedToArray(_Object$entries4[_i7],2),key=_Object$entries4$_i[0],value=_Object$entries4$_i[1];if(deep)object[key]=_convertPlainObjectToMap(value,deep);newObject.set(key,object[key])}return newObject}if(deep)if(Array.isArray(object)){var index=0;for(var _i8=0,_arr2=object;_i8<_arr2.length;_i8++){var _value9=_arr2[_i8];object[index]=_convertPlainObjectToMap(_value9,deep);index+=1}}else if(isMap(object)){var _iterator8=_createForOfIteratorHelper(object),_step8;try{for(_iterator8.s();!(_step8=_iterator8.n()).done;){var _step8$value=_slicedToArray(_step8.value,2),_key3=_step8$value[0],_value0=_step8$value[1];object.set(_key3,_convertPlainObjectToMap(_value0,deep))}}catch(err){_iterator8.e(err)}finally{_iterator8.f()}}else if(isSet(object)){var cache=[];var _iterator9=_createForOfIteratorHelper(object),_step9;try{for(_iterator9.s();!(_step9=_iterator9.n()).done;){var _value10=_step9.value;object.delete(_value10);cache.push(_convertPlainObjectToMap(_value10,deep))}}catch(err){_iterator9.e(err)}finally{_iterator9.f()}for(var _i9=0,_cache3=cache;_i9<_cache3.length;_i9++){var _value1=_cache3[_i9];object.add(_value1)}}}return object};/**
211
- * Replaces given pattern in each value in given object recursively with
212
- * given string replacement.
213
- * @param object - Object to convert substrings in.
214
- * @param pattern - Regular expression to replace.
215
- * @param replacement - String to use as replacement for found patterns.
216
- * @returns Converted object with replaced patterns.
217
- */var _convertSubstringInPlainObject=function convertSubstringInPlainObject(object,pattern,replacement){for(var _i0=0,_Object$entries5=Object.entries(object);_i0<_Object$entries5.length;_i0++){var _Object$entries5$_i=_slicedToArray(_Object$entries5[_i0],2),key=_Object$entries5$_i[0],value=_Object$entries5$_i[1];if(isPlainObject(value))object[key]=_convertSubstringInPlainObject(value,pattern,replacement);else if(typeof value==="string")object[key]=value.replace(pattern,replacement)}return object};/* eslint-disable jsdoc/require-description-complete-sentence *//**
218
- * Copies given object (of any type) into optionally given destination.
219
- * @param source - Object to copy.
220
- * @param copyBlobs - Determines whether to copy blobs as well.
221
- * @param recursionLimit - Specifies how deep we should traverse into given
222
- * object recursively.
223
- * @param recursionEndValue - Indicates which value to use for recursion ends.
224
- * Usually a reference to corresponding source value will be used.
225
- * @param destination - Target to copy source to.
226
- * @param cyclic - Indicates whether known sub structures should be copied or
227
- * referenced (if "true" endless loops can occur if source has cyclic
228
- * structures).
229
- * @param knownReferences - Used to avoid traversing loops and not to copy
230
- * references e.g. to objects not to copy (e.g. symbol polyfills).
231
- * @param recursionLevel - Internally used to track current recursion level in
232
- * given source data structure.
233
- * @returns Value "true" if both objects are equal and "false" otherwise.
234
- */var _copy=function copy(source,copyBlobs,recursionLimit,recursionEndValue,destination,cyclic,knownReferences,recursionLevel){if(copyBlobs===void 0){copyBlobs=false}if(recursionLimit===void 0){recursionLimit=-1}if(recursionEndValue===void 0){recursionEndValue=VALUE_COPY_SYMBOL}if(destination===void 0){destination=null}if(cyclic===void 0){cyclic=false}if(knownReferences===void 0){knownReferences=[]}if(recursionLevel===void 0){recursionLevel=0}/* eslint-enable jsdoc/require-description-complete-sentence */if(isObject(source))if(destination){if(source===destination)throw new Error("Can't copy because source and destination are "+"identical.");if(!cyclic&&![undefined,null].includes(source)){var index=knownReferences.indexOf(source);if(index!==-1)return knownReferences[index];knownReferences.push(source)}var copyValue=function copyValue(value){if(recursionLimit!==-1&&recursionLimit<recursionLevel+1)return recursionEndValue===VALUE_COPY_SYMBOL?value:recursionEndValue;var result=_copy(value,copyBlobs,recursionLimit,recursionEndValue,null,cyclic,knownReferences,recursionLevel+1);if(!cyclic&&![undefined,null].includes(value)&&_typeof(value)==="object")knownReferences.push(value);return result};if(Array.isArray(source)){var _iterator0=_createForOfIteratorHelper(source),_step0;try{for(_iterator0.s();!(_step0=_iterator0.n()).done;){var item=_step0.value;destination.push(copyValue(item))}}catch(err){_iterator0.e(err)}finally{_iterator0.f()}}else if(source instanceof Map){var _iterator1=_createForOfIteratorHelper(source),_step1;try{for(_iterator1.s();!(_step1=_iterator1.n()).done;){var _step1$value=_slicedToArray(_step1.value,2),key=_step1$value[0],value=_step1$value[1];destination.set(key,copyValue(value))}}catch(err){_iterator1.e(err)}finally{_iterator1.f()}}else if(source instanceof Set){var _iterator10=_createForOfIteratorHelper(source),_step10;try{for(_iterator10.s();!(_step10=_iterator10.n()).done;){var _value11=_step10.value;destination.add(copyValue(_value11))}}catch(err){_iterator10.e(err)}finally{_iterator10.f()}}else for(var _i1=0,_Object$entries6=Object.entries(source);_i1<_Object$entries6.length;_i1++){var _Object$entries6$_i=_slicedToArray(_Object$entries6[_i1],2),_key4=_Object$entries6$_i[0],_value12=_Object$entries6$_i[1];try{destination[_key4]=copyValue(_value12)}catch(error){throw new Error("Failed to copy property value object \""+"".concat(_key4,"\": ").concat(_represent(error)),{cause:error})}}}else{if(Array.isArray(source))return _copy(source,copyBlobs,recursionLimit,recursionEndValue,[],cyclic,knownReferences,recursionLevel);if(source instanceof Map)return _copy(source,copyBlobs,recursionLimit,recursionEndValue,new Map,cyclic,knownReferences,recursionLevel);if(source instanceof Set)return _copy(source,copyBlobs,recursionLimit,recursionEndValue,new Set,cyclic,knownReferences,recursionLevel);if(source instanceof Date)return new Date(source.getTime());if(source instanceof RegExp){var modifier=/[^/]*$/.exec(source.toString());destination=new RegExp(source.source,modifier?modifier[0]:undefined);destination.lastIndex=source.lastIndex;return destination}if(typeof Blob!=="undefined"&&source instanceof Blob)return copyBlobs?source.slice(0,source.size,source.type):source;return _copy(source,copyBlobs,recursionLimit,recursionEndValue,{},cyclic,knownReferences,recursionLevel)}return destination||source};/**
235
- * Determine the internal JavaScript [[Class]] of an object.
236
- * @param value - Value to analyze.
237
- * @returns Name of determined type.
238
- */var determineType=function determineType(value){if([null,undefined].includes(value))return String(value);var type=_typeof(value);if(["function","object"].includes(type)&&"toString"in value){var stringRepresentation=Object.prototype.toString.call(value);if(Object.prototype.hasOwnProperty.call(_constants__WEBPACK_IMPORTED_MODULE_2__.CLASS_TO_TYPE_MAPPING,stringRepresentation))return _constants__WEBPACK_IMPORTED_MODULE_2__.CLASS_TO_TYPE_MAPPING[stringRepresentation]}return type};/**
239
- * Returns true if given items are equal for given property list. If
240
- * property list isn't set all properties will be checked. All keys which
241
- * starts with one of the exception prefixes will be omitted.
242
- * @param firstValue - First object to compare.
243
- * @param secondValue - Second object to compare.
244
- * @param givenOptions - Options to define how to compare.
245
- * @param givenOptions.properties - Property names to check. Check all if
246
- * "null" is selected (default).
247
- * @param givenOptions.deep - Recursion depth negative values means
248
- * infinitely deep (default).
249
- * @param givenOptions.exceptionPrefixes - Property prefixes which
250
- * indicates properties to ignore.
251
- * @param givenOptions.ignoreFunctions - Indicates whether functions have
252
- * to be identical to interpret is as equal. If set to "true" two functions
253
- * will be assumed to be equal (default).
254
- * @param givenOptions.compareBlobs - Indicates whether binary data should
255
- * be converted to a base64 string to compare their content. Makes this
256
- * function asynchronous in browsers and potentially takes a lot of
257
- * resources.
258
- * @returns Value "true" if both objects are equal and "false" otherwise.
259
- * If "compareBlobs" is activated, and we're running in a browser like
260
- * environment and binary data is given, then a promise wrapping the
261
- * determined boolean values is returned.
262
- */var _equals=function equals(firstValue,secondValue,givenOptions){if(givenOptions===void 0){givenOptions={}}var options=_objectSpread({compareBlobs:false,deep:-1,exceptionPrefixes:[],ignoreFunctions:true,properties:null,returnReasonIfNotEqual:false},givenOptions);if(options.ignoreFunctions&&isFunction(firstValue)&&isFunction(secondValue)||firstValue===secondValue||isNotANumber(firstValue)&&isNotANumber(secondValue)||firstValue instanceof RegExp&&secondValue instanceof RegExp&&firstValue.toString()===secondValue.toString()&&firstValue.flags.split("").sort().join("")===secondValue.flags.split("").sort().join("")||firstValue instanceof Date&&secondValue instanceof Date&&(isNaN(firstValue.getTime())&&isNaN(secondValue.getTime())||!isNaN(firstValue.getTime())&&!isNaN(secondValue.getTime())&&firstValue.getTime()===secondValue.getTime())||options.compareBlobs&&eval("typeof Buffer")!=="undefined"&&Object.prototype.hasOwnProperty.call(eval("Buffer"),"isBuffer")&&firstValue instanceof eval("Buffer")&&secondValue instanceof eval("Buffer")&&firstValue.toString("base64")===secondValue.toString("base64"))return true;if(options.compareBlobs&&typeof Blob!=="undefined"&&firstValue instanceof Blob&&secondValue instanceof Blob)return new Promise(function(resolve){var values=[];for(var _i10=0,_arr3=[firstValue,secondValue];_i10<_arr3.length;_i10++){var value=_arr3[_i10];var fileReader=new FileReader;fileReader.onload=function(event){if(event.target===null)values.push(null);else values.push(event.target.result);if(values.length===2)if(values[0]===values[1])resolve(true);else resolve(options.returnReasonIfNotEqual?">>> Blob(".concat(_represent(values[0]),") !== ")+"Blob(".concat(_represent(values[1]),")"):false)};fileReader.readAsDataURL(value)}});if(isPlainObject(firstValue)&&isPlainObject(secondValue)&&!(firstValue instanceof RegExp||secondValue instanceof RegExp)||Array.isArray(firstValue)&&Array.isArray(secondValue)&&firstValue.length===secondValue.length||determineType(firstValue)===determineType(secondValue)&&["map","set"].includes(determineType(firstValue))&&firstValue.size===secondValue.size){var promises=[];for(var _i11=0,_arr4=[[firstValue,secondValue],[secondValue,firstValue]];_i11<_arr4.length;_i11++){var _arr4$_i=_slicedToArray(_arr4[_i11],2),first=_arr4$_i[0],second=_arr4$_i[1];var firstIsArray=Array.isArray(first);if(firstIsArray&&(!Array.isArray(second)||first.length!==second.length))return options.returnReasonIfNotEqual?".length":false;var firstIsMap=isMap(first);if(firstIsMap&&(!isMap(second)||first.size!==second.size))return options.returnReasonIfNotEqual?".size":false;var firstIsSet=isSet(first);if(firstIsSet&&(!isSet(second)||first.size!==second.size))return options.returnReasonIfNotEqual?".size":false;if(firstIsArray){var index=0;var _loop2=function _loop2(){var value=_arr5[_i12];if(options.deep!==0){var result=_equals(value,second[index],_objectSpread(_objectSpread({},options),{},{deep:options.deep-1}));if(!result)return{v:false};var currentIndex=index;var determineResult=function determineResult(result){var _$$result$;return typeof result==="string"?"[".concat(String(currentIndex),"]")+((_$$result$={"[":"",">":" "}[result[0]])!==null&&_$$result$!==void 0?_$$result$:".")+result:result};if(Object.prototype.hasOwnProperty.call(result,"then"))promises.push(result.then(determineResult));if(typeof result==="string")return{v:determineResult(result)}}index+=1},_ret2;for(var _i12=0,_arr5=first;_i12<_arr5.length;_i12++){_ret2=_loop2();if(_ret2)return _ret2.v}}else if(firstIsMap){var _iterator11=_createForOfIteratorHelper(first),_step11;try{var _loop3=function _loop3(){var _step11$value=_slicedToArray(_step11.value,2),key=_step11$value[0],value=_step11$value[1];if(options.deep!==0){var result=_equals(value,second.get(key),_objectSpread(_objectSpread({},options),{},{deep:options.deep-1}));if(!result)return{v:false};var determineResult=function determineResult(result){var _$$result$2;return typeof result==="string"?"get(".concat(_represent(key),")")+((_$$result$2={"[":"",">":" "}[result[0]])!==null&&_$$result$2!==void 0?_$$result$2:".")+result:result};if(Object.prototype.hasOwnProperty.call(result,"then"))promises.push(result.then(determineResult));if(typeof result==="string")return{v:determineResult(result)}}},_ret3;for(_iterator11.s();!(_step11=_iterator11.n()).done;){_ret3=_loop3();if(_ret3)return _ret3.v}}catch(err){_iterator11.e(err)}finally{_iterator11.f()}}else if(firstIsSet){var _iterator12=_createForOfIteratorHelper(first),_step12;try{var _loop4=function _loop4(){var value=_step12.value;if(options.deep!==0){var equal=false;var subPromises=[];/*
263
- NOTE: Check if their exists at least one being
264
- equally.
265
- */var _iterator13=_createForOfIteratorHelper(second),_step13;try{for(_iterator13.s();!(_step13=_iterator13.n()).done;){var _secondValue=_step13.value;var result=_equals(value,_secondValue,_objectSpread(_objectSpread({},options),{},{deep:options.deep-1}));if(typeof result==="boolean"){if(result){equal=true;break}}else subPromises.push(result)}}catch(err){_iterator13.e(err)}finally{_iterator13.f()}var determineResult=function determineResult(equal){return equal?true:options.returnReasonIfNotEqual?">>> {-> ".concat(_represent(value)," not found}"):false};if(equal)/*
266
- NOTE: We do not have to wait for promises to be
267
- resolved when one match could be found.
268
- */return 0;// continue
269
- if(subPromises.length)promises.push(new Promise(function(resolve){Promise.all(subPromises).then(function(results){resolve(determineResult(results.some(function(result){return result})))},function(){// Do nothing.
270
- })}));return{v:determineResult(false)}}},_ret4;for(_iterator12.s();!(_step12=_iterator12.n()).done;){_ret4=_loop4();if(_ret4===0)continue;if(_ret4)return _ret4.v}}catch(err){_iterator12.e(err)}finally{_iterator12.f()}}else{var _loop5=function _loop5(){var _Object$entries7$_i=_slicedToArray(_Object$entries7[_i13],2),key=_Object$entries7$_i[0],value=_Object$entries7$_i[1];if(options.properties&&!options.properties.includes(key))return 0;// break
271
- var doBreak=false;var _iterator14=_createForOfIteratorHelper(options.exceptionPrefixes),_step14;try{for(_iterator14.s();!(_step14=_iterator14.n()).done;){var exceptionPrefix=_step14.value;if(key.startsWith(exceptionPrefix)){doBreak=true;break}}}catch(err){_iterator14.e(err)}finally{_iterator14.f()}if(doBreak)return 0;// break
272
- if(options.deep!==0){var result=_equals(value,second[key],_objectSpread(_objectSpread({},options),{},{deep:options.deep-1}));if(!result)return{v:false};var determineResult=function determineResult(result){var _$$result$3;return typeof result==="string"?key+((_$$result$3={"[":"",">":" "}[result[0]])!==null&&_$$result$3!==void 0?_$$result$3:".")+result:result};if(Object.prototype.hasOwnProperty.call(result,"then"))promises.push(result.then(determineResult));if(typeof result==="string")return{v:determineResult(result)}}},_ret5;for(var _i13=0,_Object$entries7=Object.entries(first);_i13<_Object$entries7.length;_i13++){_ret5=_loop5();if(_ret5===0)break;if(_ret5)return _ret5.v}}}if(promises.length)return new Promise(function(resolve){Promise.all(promises).then(function(results){var _iterator15=_createForOfIteratorHelper(results),_step15;try{for(_iterator15.s();!(_step15=_iterator15.n()).done;){var result=_step15.value;if(!result||typeof result==="string"){resolve(result);break}}}catch(err){_iterator15.e(err)}finally{_iterator15.f()}resolve(true)},function(){// Do nothing.
273
- })});return true}return options.returnReasonIfNotEqual?">>> ".concat(_represent(firstValue)," !== ").concat(_represent(secondValue)):false};/**
274
- * Wraps given data structure into proxies recursively to evaluate and resolve
275
- * each get request to data having an object with indicating keys and replaces
276
- * that object with corresponding evaluated values. All nested objects are
277
- * wrapped with a proxy to resolve chains of referencing expressions as well.
278
- * @param object - Given mapping to resolve.
279
- * @param givenOptions - Options to configure evaluation.
280
- * @param givenOptions.scope - Scope to use evaluate again.
281
- * @param givenOptions.selfReferenceName - Name to use for reference to given
282
- * object.
283
- * @param givenOptions.expressionIndicatorKey - Indicator property name to mark
284
- * a value to evaluate.
285
- * @param givenOptions.executionIndicatorKey - Indicator property name to mark
286
- * a value to evaluate.
287
- * @returns Evaluated given mapping.
288
- */var evaluateDynamicData=function evaluateDynamicData(object,givenOptions){if(givenOptions===void 0){givenOptions={}}var options=_objectSpread({scope:{},selfReferenceName:"self",expressionIndicatorKey:"__evaluate__",executionIndicatorKey:"__execute__"},givenOptions);if(_typeof(object)!=="object"||object===null)return object;if(!(options.selfReferenceName in options.scope))options.scope[options.selfReferenceName]=object;var internalEvaluateAndThrowError=function internalEvaluateAndThrowError(code,type){if(type===void 0){type=options.expressionIndicatorKey}return evaluateAndThrowError(code,options.scope,type===options.executionIndicatorKey)};var _addProxyRecursively=function addProxyRecursively(data){if(_typeof(data)!=="object"||data===null||typeof Proxy==="undefined")return data;for(var _i14=0,_Object$entries8=Object.entries(data);_i14<_Object$entries8.length;_i14++){var _Object$entries8$_i=_slicedToArray(_Object$entries8[_i14],2),key=_Object$entries8$_i[0],givenValue=_Object$entries8$_i[1];if(key!=="__target__"&&isObject(givenValue)){var value=givenValue;_addProxyRecursively(value);// NOTE: We only wrap needed objects for performance reasons.
289
- if(Object.prototype.hasOwnProperty.call(value,options.expressionIndicatorKey)||Object.prototype.hasOwnProperty.call(value,options.executionIndicatorKey)){var backup=value;data[key]=new Proxy(value,{get:function get(target,key){if(key==="__target__")return target;if(key==="hasOwnProperty")return target[key];/*
290
- NOTE: Very complicated section, do only
291
- changes while having good tests.
292
- */for(var _i15=0,_arr6=[options.expressionIndicatorKey,options.executionIndicatorKey];_i15<_arr6.length;_i15++){var type=_arr6[_i15];if(key===type&&typeof target[key]==="string")return _resolve(internalEvaluateAndThrowError(target[key],type))}var resolvedTarget=_resolve(target);if(key==="toString"){var result=internalEvaluateAndThrowError(resolvedTarget);return result[key].bind(result)}if(typeof key!=="string"){var _result$key;var _result=internalEvaluateAndThrowError(resolvedTarget);if((_result$key=_result[key])!==null&&_result$key!==void 0&&_result$key.bind)return _result[key].bind(_result);return _result[key]}for(var _i16=0,_arr7=[options.expressionIndicatorKey,options.executionIndicatorKey];_i16<_arr7.length;_i16++){var _type=_arr7[_i16];if(Object.prototype.hasOwnProperty.call(target,_type))return internalEvaluateAndThrowError(resolvedTarget,_type)[key]}return resolvedTarget[key];// End of complicated stuff.
293
- },ownKeys:function ownKeys(target){for(var _i17=0,_arr8=[options.expressionIndicatorKey,options.executionIndicatorKey];_i17<_arr8.length;_i17++){var type=_arr8[_i17];if(Object.prototype.hasOwnProperty.call(target,type))return Object.getOwnPropertyNames(_resolve(internalEvaluateAndThrowError(target[type],type)))}return Object.getOwnPropertyNames(target)}});/*
294
- NOTE: Known proxy polyfills does not provide the
295
- "__target__" api.
296
- */if(!data[key].__target__)data[key].__target__=backup}}}return data};var _resolve=function resolve(data){if(isObject(data)){if(isProxy(data)){// NOTE: We have to skip "ownKeys" proxy trap here.
297
- for(var _i18=0,_arr9=[options.expressionIndicatorKey,options.executionIndicatorKey];_i18<_arr9.length;_i18++){var type=_arr9[_i18];if(Object.prototype.hasOwnProperty.call(data,type))return data[type]}data=data.__target__}for(var _i19=0,_Object$entries9=Object.entries(data);_i19<_Object$entries9.length;_i19++){var _Object$entries9$_i=_slicedToArray(_Object$entries9[_i19],2),key=_Object$entries9$_i[0],value=_Object$entries9$_i[1];if([options.expressionIndicatorKey,options.executionIndicatorKey].includes(key)){if(typeof Proxy==="undefined")return _resolve(internalEvaluateAndThrowError(value));return value}data[key]=_resolve(value)}}return data};options.scope.resolve=_resolve;var _removeProxyRecursively=function removeProxyRecursively(data){if(isObject(data))for(var _i20=0,_Object$entries0=Object.entries(data);_i20<_Object$entries0.length;_i20++){var _Object$entries0$_i=_slicedToArray(_Object$entries0[_i20],2),key=_Object$entries0$_i[0],value=_Object$entries0$_i[1];if(key!=="__target__"&&value!==null&&["function","undefined"].includes(_typeof(value))){var target=value.__target__;if(typeof target!=="undefined")data[key]=target;_removeProxyRecursively(value)}}return data};if(Object.prototype.hasOwnProperty.call(object,options.expressionIndicatorKey))return internalEvaluateAndThrowError(object[options.expressionIndicatorKey]);else if(Object.prototype.hasOwnProperty.call(object,options.executionIndicatorKey))return internalEvaluateAndThrowError(object[options.executionIndicatorKey],options.executionIndicatorKey);return _removeProxyRecursively(_resolve(_addProxyRecursively(object)))};/**
298
- * Searches for indicating keys and replaces that data with corresponding
299
- * evaluated and promise resolved value.
300
- * @param data - Given mapping to resolve.
301
- * @param givenOptions - Options to configure evaluation.
302
- * @param givenOptions.scope - Scope to use evaluate again.
303
- * @param givenOptions.selfReferenceName - Name to use for reference to given
304
- * object.
305
- * @param givenOptions.expressionIndicatorKey - Indicator property name to mark
306
- * a value to evaluate.
307
- * @param givenOptions.executionIndicatorKey - Indicator property name to mark
308
- * a value to evaluate.
309
- * @returns Evaluated given mapping.
310
- */var _evaluateAsyncDynamicData=/*#__PURE__*/(/* unused pure expression or super */ null && (function(){var _evaluateAsyncDynamicData2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(data,givenOptions){var options,result,_i21,_Object$entries1,_Object$entries1$_i,key,value;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:if(givenOptions===void 0){givenOptions={}}options=_objectSpread({scope:{},selfReferenceName:"self",expressionIndicatorKey:"__await_evaluate__",executionIndicatorKey:"__await_execute__"},givenOptions);if(!(_typeof(data)!=="object"||data===null)){_context.n=1;break}return _context.a(2,data);case 1:if(!(options.selfReferenceName in options.scope))options.scope[options.selfReferenceName]=data;result=data;_i21=0,_Object$entries1=Object.entries(data);case 2:if(!(_i21<_Object$entries1.length)){_context.n=6;break}_Object$entries1$_i=_slicedToArray(_Object$entries1[_i21],2),key=_Object$entries1$_i[0],value=_Object$entries1$_i[1];if(![options.expressionIndicatorKey,options.executionIndicatorKey].includes(key)){_context.n=4;break}_context.n=3;return evaluateAndThrowError(value,options.scope,key===options.executionIndicatorKey);case 3:result[key]=_context.v;_context.n=5;break;case 4:if(!isPlainObject(value)){_context.n=5;break}_context.n=5;return _evaluateAsyncDynamicData(value,options);case 5:_i21++;_context.n=2;break;case 6:return _context.a(2,result)}},_callee)}));function evaluateAsyncDynamicData(_x,_x2){return _evaluateAsyncDynamicData2.apply(this,arguments)}return evaluateAsyncDynamicData}()));/**
311
- * Removes properties in objects where a dynamic indicator lives.
312
- * @param data - Object to traverse recursively.
313
- * @param expressionIndicators - Property key to remove.
314
- * @returns Given object with removed properties.
315
- */var _removeKeysInEvaluation=function removeKeysInEvaluation(data,expressionIndicators){if(expressionIndicators===void 0){expressionIndicators=["__evaluate__","__execute__"]}for(var _i22=0,_Object$entries10=Object.entries(data);_i22<_Object$entries10.length;_i22++){var _Object$entries10$_i=_slicedToArray(_Object$entries10[_i22],2),key=_Object$entries10$_i[0],value=_Object$entries10$_i[1];if(!expressionIndicators.includes(key)&&expressionIndicators.some(function(name){return Object.prototype.hasOwnProperty.call(data,name)}))delete data[key];else if(isPlainObject(value))_removeKeysInEvaluation(value,expressionIndicators)}return data};/**
316
- * Extends given target object with given sources object. As target and
317
- * sources many expandable types are allowed but target and sources have to
318
- * come from the same type.
319
- * @param targetOrDeepIndicator - Maybe the target or deep indicator.
320
- * @param targetOrSource - Target or source object; depending on first
321
- * argument.
322
- * @param additionalSources - Source objects to extend into target.
323
- * @returns Returns given target extended with all given sources.
324
- */var _extend=function extend(targetOrDeepIndicator,targetOrSource){var deep=false;for(var _len=arguments.length,additionalSources=new Array(_len>2?_len-2:0),_key5=2;_key5<_len;_key5++){additionalSources[_key5-2]=arguments[_key5]}var sources=additionalSources;var target;if(targetOrDeepIndicator===IGNORE_NULL_AND_UNDEFINED_SYMBOL||typeof targetOrDeepIndicator==="boolean"){// Handle a deep copy situation and skip deep indicator and target.
325
- deep=targetOrDeepIndicator;target=targetOrSource}else{target=targetOrDeepIndicator;if(isObject(targetOrSource))sources=[targetOrSource].concat(_toConsumableArray(sources));else if(targetOrSource!==undefined)target=targetOrSource}var mergeValue=function mergeValue(targetValue,value){if(value===targetValue)return targetValue;// Traverse recursively if we're merging plain objects or maps.
326
- if(deep&&value&&(isPlainObject(value)||isMap(value))){var clone;if(isMap(value))clone=targetValue&&isMap(targetValue)?targetValue:new Map;else clone=targetValue&&isPlainObject(targetValue)?targetValue:{};return _extend(deep,clone,value)}return value};var _iterator16=_createForOfIteratorHelper(sources),_step16;try{for(_iterator16.s();!(_step16=_iterator16.n()).done;){var source=_step16.value;var targetType=_typeof(target);var sourceType=_typeof(source);if(isMap(target))targetType+=" Map";if(isMap(source))sourceType+=" Map";if(targetType===sourceType&&target!==source){if(isMap(target)&&isMap(source)){var _iterator17=_createForOfIteratorHelper(source),_step17;try{for(_iterator17.s();!(_step17=_iterator17.n()).done;){var _step17$value=_slicedToArray(_step17.value,2),key=_step17$value[0],value=_step17$value[1];target.set(key,mergeValue(target.get(key),value))}}catch(err){_iterator17.e(err)}finally{_iterator17.f()}}else if(isObject(target)&&!Array.isArray(target)&&!(typeof Blob!=="undefined"&&target instanceof Blob)&&isObject(source)&&!Array.isArray(source)&&!(typeof Blob!=="undefined"&&source instanceof Blob)){for(var _i23=0,_Object$entries11=Object.entries(source);_i23<_Object$entries11.length;_i23++){var _Object$entries11$_i=_slicedToArray(_Object$entries11[_i23],2),_key6=_Object$entries11$_i[0],_value13=_Object$entries11$_i[1];if(!(deep===IGNORE_NULL_AND_UNDEFINED_SYMBOL&&[null,undefined].includes(_value13)))target[_key6]=mergeValue(target[_key6],_value13)}}else target=source;}else target=source}}catch(err){_iterator16.e(err)}finally{_iterator16.f()}return target};/**
327
- * Generates a proxy handler which forwards all operations to given object
328
- * as there wouldn't be a proxy.
329
- * @param target - Object to proxy.
330
- * @param methodNames - Mapping of operand name to object specific method
331
- * name.
332
- * @returns Determined proxy handler.
333
- */var getProxyHandler=function getProxyHandler(target,methodNames){if(methodNames===void 0){methodNames={}}methodNames=_objectSpread({delete:"[]",get:"[]",has:"[]",set:"[]"},methodNames);return{deleteProperty:function deleteProperty(_targetObject,key){if(methodNames.delete==="[]"&&typeof key==="string")delete target[key];else return target[methodNames.delete](key);return true},get:function get(_targetObject,key){if(methodNames.get==="[]"&&typeof key==="string")return target[key];return target[methodNames.get](key)},has:function has(_targetObject,key){if(methodNames.has==="[]")return key in target;return target[methodNames.has](key)},set:function set(_targetObject,key,value){if(methodNames.set==="[]"&&typeof key==="string")target[key]=value;else return target[methodNames.set](key,value);return true}}};/**
334
- * Slices all properties from given object which does not match provided
335
- * object mask. Items can be explicitly whitelisted via "include" mask
336
- * configuration or black listed via "exclude" mask configuration.
337
- * @param object - Object to slice.
338
- * @param maskConfiguration - Mask configuration.
339
- * @returns Given but sliced object. If (nested) object will be modified a
340
- * flat copy of that object will be returned.
341
- */var _mask=function mask(object,maskConfiguration){maskConfiguration=_objectSpread({exclude:false,include:true},maskConfiguration);if(maskConfiguration.exclude===true||Array.isArray(maskConfiguration.exclude)&&maskConfiguration.exclude.length===0||maskConfiguration.include===false||_typeof(object)!=="object")return{};var exclude=Array.isArray(maskConfiguration.exclude)?maskConfiguration.exclude.reduce(function(mask,key){return _objectSpread(_objectSpread({},mask),{},_defineProperty({},key,true))},{}):maskConfiguration.exclude;var include=Array.isArray(maskConfiguration.include)?maskConfiguration.include.reduce(function(mask,key){return _objectSpread(_objectSpread({},mask),{},_defineProperty({},key,true))},{}):maskConfiguration.include;var result={};if(isPlainObject(include)){for(var _i24=0,_Object$entries12=Object.entries(include);_i24<_Object$entries12.length;_i24++){var _Object$entries12$_i=_slicedToArray(_Object$entries12[_i24],2),key=_Object$entries12$_i[0],value=_Object$entries12$_i[1];if(Object.prototype.hasOwnProperty.call(object,key))if(value===true)result[key]=object[key];else if((isPlainObject(value)||Array.isArray(value)&&value.length)&&_typeof(object[key])==="object")result[key]=_mask(object[key],{include:value})}}else// In this branch "mask.include === true" holds.
342
- result=object;if(isPlainObject(exclude)){var useCopy=false;var copy=_objectSpread({},result);for(var _i25=0,_Object$entries13=Object.entries(exclude);_i25<_Object$entries13.length;_i25++){var _Object$entries13$_i=_slicedToArray(_Object$entries13[_i25],2),_key7=_Object$entries13$_i[0],_value14=_Object$entries13$_i[1];if(Object.prototype.hasOwnProperty.call(copy,_key7))if(_value14===true){useCopy=true;delete copy[_key7]}else if((isPlainObject(_value14)||Array.isArray(_value14)&&_value14.length)&&_typeof(copy[_key7])==="object"){var current=copy[_key7];copy[_key7]=_mask(copy[_key7],{exclude:_value14});if(copy[_key7]!==current)useCopy=true}}if(useCopy)result=copy}return result};/**
343
- * Modifies given target corresponding to given source and removes source
344
- * modification infos.
345
- * @param target - Object to modify.
346
- * @param source - Source object to load modifications from.
347
- * @param removeIndicatorKey - Indicator property name or value to mark a
348
- * value to remove from object or list.
349
- * @param prependIndicatorKey - Indicator property name to mark a value to
350
- * prepend to target list.
351
- * @param appendIndicatorKey - Indicator property name to mark a value to
352
- * append to target list.
353
- * @param positionPrefix - Indicates a prefix to use a value on given
354
- * position to add or remove.
355
- * @param positionSuffix - Indicates a suffix to use a value on given
356
- * position to add or remove.
357
- * @param parentSource - Source context to remove modification info from
358
- * (usually only needed internally).
359
- * @param parentKey - Source key in given source context to remove
360
- * modification info from (usually only needed internally).
361
- * @returns Given target modified with given source.
362
- */var _modifyObject=function modifyObject(target,source,removeIndicatorKey,prependIndicatorKey,appendIndicatorKey,positionPrefix,positionSuffix,parentSource,parentKey){if(removeIndicatorKey===void 0){removeIndicatorKey="__remove__"}if(prependIndicatorKey===void 0){prependIndicatorKey="__prepend__"}if(appendIndicatorKey===void 0){appendIndicatorKey="__append__"}if(positionPrefix===void 0){positionPrefix="__"}if(positionSuffix===void 0){positionSuffix="__"}if(parentSource===void 0){parentSource=null}if(parentKey===void 0){parentKey=null}if(isMap(source)&&isMap(target)){var _iterator18=_createForOfIteratorHelper(source),_step18;try{for(_iterator18.s();!(_step18=_iterator18.n()).done;){var _step18$value=_slicedToArray(_step18.value,2),key=_step18$value[0],value=_step18$value[1];if(target.has(key))_modifyObject(target.get(key),value,removeIndicatorKey,prependIndicatorKey,appendIndicatorKey,positionPrefix,positionSuffix,source,key)}}catch(err){_iterator18.e(err)}finally{_iterator18.f()}}else if(isObject(source)&&isObject(target))for(var _i26=0,_Object$entries14=Object.entries(source);_i26<_Object$entries14.length;_i26++){var _Object$entries14$_i=_slicedToArray(_Object$entries14[_i26],2),_key8=_Object$entries14$_i[0],sourceValue=_Object$entries14$_i[1];var index=NaN;if(Array.isArray(target)&&_key8.startsWith(positionPrefix)&&_key8.endsWith(positionSuffix)){index=parseInt(_key8.substring(positionPrefix.length,_key8.length-positionSuffix.length),10);if(index<0||index>=target.length)index=NaN}if([removeIndicatorKey,prependIndicatorKey,appendIndicatorKey].includes(_key8)||!isNaN(index)){if(Array.isArray(target)){if(_key8===removeIndicatorKey){var values=[].concat(sourceValue);var _iterator19=_createForOfIteratorHelper(values),_step19;try{for(_iterator19.s();!(_step19=_iterator19.n()).done;){var _value15=_step19.value;if(typeof _value15==="string"&&_value15.startsWith(positionPrefix)&&_value15.endsWith(positionSuffix))target.splice(parseInt(_value15.substring(positionPrefix.length,_value15.length-positionSuffix.length),10),1);else if(target.includes(_value15))target.splice(target.indexOf(_value15),1);else if(typeof _value15==="number"&&_value15<target.length)target.splice(_value15,1)}}catch(err){_iterator19.e(err)}finally{_iterator19.f()}}else if(_key8===appendIndicatorKey)target=target.concat(sourceValue);else if(_key8===prependIndicatorKey)target=[].concat(sourceValue).concat(target);else if(isObject(target[index])&&isObject(sourceValue))_extend(true,_modifyObject(target[index],sourceValue,removeIndicatorKey,prependIndicatorKey,appendIndicatorKey,positionPrefix,positionSuffix),target[index],sourceValue);else target[index]=sourceValue;}else if(_key8===removeIndicatorKey){var _iterator20=_createForOfIteratorHelper([].concat(sourceValue)),_step20;try{for(_iterator20.s();!(_step20=_iterator20.n()).done;){var _value16=_step20.value;if(typeof _value16==="string"&&Object.prototype.hasOwnProperty.call(target,_value16))delete target[_value16]}}catch(err){_iterator20.e(err)}finally{_iterator20.f()}}delete source[_key8];if(parentSource&&typeof parentKey==="string")delete parentSource[parentKey]}else if(target!==null&&Object.prototype.hasOwnProperty.call(target,_key8))target[_key8]=_modifyObject(target[_key8],sourceValue,removeIndicatorKey,prependIndicatorKey,appendIndicatorKey,positionPrefix,positionSuffix,source,_key8)}return target};/**
363
- * Removes given key from given object recursively.
364
- * @param object - Object to process.
365
- * @param keys - List of keys to remove.
366
- * @returns Processed given object.
367
- */var _removeKeyPrefixes=function removeKeyPrefixes(object,keys){if(keys===void 0){keys="#"}var resolvedKeys=[].concat(keys);if(Array.isArray(object)){var index=0;var _iterator21=_createForOfIteratorHelper(object.slice()),_step21;try{for(_iterator21.s();!(_step21=_iterator21.n()).done;){var subObject=_step21.value;var skip=false;if(typeof subObject==="string"){var _iterator22=_createForOfIteratorHelper(resolvedKeys),_step22;try{for(_iterator22.s();!(_step22=_iterator22.n()).done;){var key=_step22.value;if(subObject.startsWith("".concat(key,":"))){object.splice(index,1);skip=true;break}}}catch(err){_iterator22.e(err)}finally{_iterator22.f()}if(skip)continue}object[index]=_removeKeyPrefixes(subObject,resolvedKeys);index+=1}}catch(err){_iterator21.e(err)}finally{_iterator21.f()}}else if(isSet(object)){var _iterator23=_createForOfIteratorHelper(new Set(object)),_step23;try{for(_iterator23.s();!(_step23=_iterator23.n()).done;){var _subObject=_step23.value;var _skip=false;if(typeof _subObject==="string"){var _iterator24=_createForOfIteratorHelper(resolvedKeys),_step24;try{for(_iterator24.s();!(_step24=_iterator24.n()).done;){var _key9=_step24.value;if(_subObject.startsWith("".concat(_key9,":"))){object.delete(_subObject);_skip=true;break}}}catch(err){_iterator24.e(err)}finally{_iterator24.f()}if(_skip)continue}_removeKeyPrefixes(_subObject,resolvedKeys)}}catch(err){_iterator23.e(err)}finally{_iterator23.f()}}else if(isMap(object)){var _iterator25=_createForOfIteratorHelper(new Map(object)),_step25;try{for(_iterator25.s();!(_step25=_iterator25.n()).done;){var _step25$value=_slicedToArray(_step25.value,2),_key0=_step25$value[0],_subObject2=_step25$value[1];var _skip2=false;if(typeof _key0==="string"){var _iterator26=_createForOfIteratorHelper(resolvedKeys),_step26;try{for(_iterator26.s();!(_step26=_iterator26.n()).done;){var resolvedKey=_step26.value;var escapedKey=escapeRegularExpressions(resolvedKey);if(new RegExp("^".concat(escapedKey,"[0-9]*$")).test(_key0)){object.delete(_key0);_skip2=true;break}}}catch(err){_iterator26.e(err)}finally{_iterator26.f()}if(_skip2)continue}object.set(_key0,_removeKeyPrefixes(_subObject2,resolvedKeys))}}catch(err){_iterator25.e(err)}finally{_iterator25.f()}}else if(isObject(object))for(var _i27=0,_Object$entries15=Object.entries(Object.assign({},object));_i27<_Object$entries15.length;_i27++){var _Object$entries15$_i=_slicedToArray(_Object$entries15[_i27],2),_key1=_Object$entries15$_i[0],value=_Object$entries15$_i[1];var _skip3=false;var _iterator27=_createForOfIteratorHelper(resolvedKeys),_step27;try{for(_iterator27.s();!(_step27=_iterator27.n()).done;){var _resolvedKey=_step27.value;var _escapedKey=escapeRegularExpressions(_resolvedKey);if(new RegExp("^".concat(_escapedKey,"[0-9]*$")).test(_key1)){delete object[_key1];_skip3=true;break}}}catch(err){_iterator27.e(err)}finally{_iterator27.f()}if(_skip3)continue;object[_key1]=_removeKeyPrefixes(value,resolvedKeys)}return object};/**
368
- * Represents given object as formatted string.
369
- * @param object - Object to represent.
370
- * @param maximumLengthOfLists - Maximum number of array item to render.
371
- * @param indention - String (usually whitespaces) to use as indention.
372
- * @param initialIndention - String (usually whitespaces) to use as
373
- * additional indention for the first object traversing level.
374
- * @param maximumNumberOfLevelsReachedIdentifier - Replacement for objects
375
- * which are out of specified bounds to traverse.
376
- * @param numberOfLevels - Specifies number of levels to traverse given
377
- * data structure.
378
- * @returns Representation string.
379
- */var _represent=function represent(object,maximumLengthOfLists,indention,initialIndention,maximumNumberOfLevelsReachedIdentifier,numberOfLevels){if(maximumLengthOfLists===void 0){maximumLengthOfLists=30}if(indention===void 0){indention=" "}if(initialIndention===void 0){initialIndention=""}if(maximumNumberOfLevelsReachedIdentifier===void 0){maximumNumberOfLevelsReachedIdentifier="__maximum_number_of_levels_reached__"}if(numberOfLevels===void 0){numberOfLevels=8}if(numberOfLevels===0)return String(maximumNumberOfLevelsReachedIdentifier);if(object===null)return"null";if(object===undefined)return"undefined";if(typeof object==="string")return"\"".concat(object.replace(/\n/g,"\n".concat(initialIndention)),"\"");if((0,_indicators__WEBPACK_IMPORTED_MODULE_3__.isNumeric)(object)||typeof object==="boolean")return String(object);if(object instanceof Date)return object.toISOString();if(Array.isArray(object)){var _result2="[";var _firstSeen=false;var _counter=1;var _iterator28=_createForOfIteratorHelper(object),_step28;try{for(_iterator28.s();!(_step28=_iterator28.n()).done;){var item=_step28.value;if(_counter>maximumLengthOfLists){_result2+="\n".concat(initialIndention,"...");break}if(_firstSeen)_result2+=",";_result2+="\n".concat(initialIndention).concat(indention)+_represent(item,maximumLengthOfLists,indention,"".concat(initialIndention).concat(indention),maximumNumberOfLevelsReachedIdentifier,numberOfLevels-1);_firstSeen=true;_counter+=1}}catch(err){_iterator28.e(err)}finally{_iterator28.f()}if(_firstSeen)_result2+="\n".concat(initialIndention);_result2+="]";return _result2}if((0,_indicators__WEBPACK_IMPORTED_MODULE_3__.isMap)(object)){var _result3="";var _firstSeen2=false;var _counter2=1;var _iterator29=_createForOfIteratorHelper(object),_step29;try{for(_iterator29.s();!(_step29=_iterator29.n()).done;){var _step29$value=_slicedToArray(_step29.value,2),key=_step29$value[0],_item=_step29$value[1];if(_counter2>maximumLengthOfLists){_result3+=",\n".concat(initialIndention,"...");break}if(_firstSeen2)_result3+=",\n".concat(initialIndention).concat(indention);_result3+=_represent(key,maximumLengthOfLists,indention,"".concat(initialIndention).concat(indention),maximumNumberOfLevelsReachedIdentifier,numberOfLevels-1)+" -> "+_represent(_item,maximumLengthOfLists,indention,"".concat(initialIndention).concat(indention),maximumNumberOfLevelsReachedIdentifier,numberOfLevels-1);_firstSeen2=true;_counter2+=1}}catch(err){_iterator29.e(err)}finally{_iterator29.f()}if(!_firstSeen2)_result3="EmptyMap";return _result3}if((0,_indicators__WEBPACK_IMPORTED_MODULE_3__.isSet)(object)){var _result4="{";var _firstSeen3=false;var _counter3=1;var _iterator30=_createForOfIteratorHelper(object),_step30;try{for(_iterator30.s();!(_step30=_iterator30.n()).done;){var _item2=_step30.value;if(_counter3>maximumLengthOfLists){_result4+=",\n".concat(initialIndention,"...");break}if(_firstSeen3)_result4+=",";_result4+="\n".concat(initialIndention).concat(indention)+_represent(_item2,maximumLengthOfLists,indention,"".concat(initialIndention).concat(indention),maximumNumberOfLevelsReachedIdentifier,numberOfLevels-1);_firstSeen3=true;_counter3+=1}}catch(err){_iterator30.e(err)}finally{_iterator30.f()}if(_firstSeen3)_result4+="\n".concat(initialIndention,"}");else _result4="EmptySet";return _result4}if((0,_indicators__WEBPACK_IMPORTED_MODULE_3__.isFunction)(object))return"__function__";var result="{";var keys=Object.getOwnPropertyNames(object).sort();var firstSeen=false;var counter=1;var _iterator31=_createForOfIteratorHelper(keys),_step31;try{for(_iterator31.s();!(_step31=_iterator31.n()).done;){var _key10=_step31.value;if(counter>maximumLengthOfLists){result+=",\n".concat(initialIndention,"...");break}if(firstSeen)result+=",";result+="\n".concat(initialIndention).concat(indention).concat(_key10,": ")+_represent(object[_key10],maximumLengthOfLists,indention,"".concat(initialIndention).concat(indention),maximumNumberOfLevelsReachedIdentifier,numberOfLevels-1);firstSeen=true;counter+=1}}catch(err){_iterator31.e(err)}finally{_iterator31.f()}if(firstSeen)result+="\n".concat(initialIndention);result+="}";return result};/**
380
- * Sort given objects keys.
381
- * @param object - Object which keys should be sorted.
382
- * @returns Sorted list of given keys.
383
- */var sort=function sort(object){var keys=[];if(Array.isArray(object))for(var index=0;index<object.length;index++)keys.push(index);else if(_typeof(object)==="object")if(isMap(object)){var _iterator32=_createForOfIteratorHelper(object),_step32;try{for(_iterator32.s();!(_step32=_iterator32.n()).done;){var keyValuePair=_step32.value;keys.push(keyValuePair[0])}}catch(err){_iterator32.e(err)}finally{_iterator32.f()}}else if(object!==null)for(var _i28=0,_Object$keys=Object.keys(object);_i28<_Object$keys.length;_i28++){var key=_Object$keys[_i28];keys.push(key)}return keys.sort()};/**
384
- * Removes a proxy from given data structure recursively.
385
- * @param object - Object to proxy.
386
- * @param seenObjects - Tracks all already processed objects to avoid
387
- * endless loops (usually only needed for internal purpose).
388
- * @returns Returns given object unwrapped from a dynamic proxy.
389
- */var _unwrapProxy=function unwrapProxy(object,seenObjects){if(seenObjects===void 0){seenObjects=new Set}if(isObject(object)){if(seenObjects.has(object))return object;try{if(isFunction(object.__revoke__)){if(isProxy(object))object=object.__target__;object.__revoke__()}}catch(_unused){return object}finally{seenObjects.add(object)}if(Array.isArray(object)){var index=0;var _iterator33=_createForOfIteratorHelper(object),_step33;try{for(_iterator33.s();!(_step33=_iterator33.n()).done;){var value=_step33.value;object[index]=_unwrapProxy(value,seenObjects);index+=1}}catch(err){_iterator33.e(err)}finally{_iterator33.f()}}else if(isMap(object)){var _iterator34=_createForOfIteratorHelper(object),_step34;try{for(_iterator34.s();!(_step34=_iterator34.n()).done;){var _step34$value=_slicedToArray(_step34.value,2),key=_step34$value[0],_value17=_step34$value[1];object.set(key,_unwrapProxy(_value17,seenObjects))}}catch(err){_iterator34.e(err)}finally{_iterator34.f()}}else if(isSet(object)){var cache=[];var _iterator35=_createForOfIteratorHelper(object),_step35;try{for(_iterator35.s();!(_step35=_iterator35.n()).done;){var _value19=_step35.value;object.delete(_value19);cache.push(_unwrapProxy(_value19,seenObjects))}}catch(err){_iterator35.e(err)}finally{_iterator35.f()}for(var _i29=0,_cache4=cache;_i29<_cache4.length;_i29++){var _value18=_cache4[_i29];object.add(_value18)}}else for(var _i30=0,_Object$entries16=Object.entries(object);_i30<_Object$entries16.length;_i30++){var _Object$entries16$_i=_slicedToArray(_Object$entries16[_i30],2),_key11=_Object$entries16$_i[0],_value20=_Object$entries16$_i[1];object[_key11]=_unwrapProxy(_value20,seenObjects)}}return object};
390
-
391
- /***/ }),
392
-
393
- /***/ 34:
394
- /***/ (function(module) {
395
-
396
- module.exports = __WEBPACK_EXTERNAL_MODULE__34__;
397
-
398
- /***/ }),
399
-
400
- /***/ 0:
401
- /***/ (function(module) {
402
-
403
- module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
404
-
405
- /***/ }),
406
-
407
- /***/ 8:
408
- /***/ (function(module) {
409
-
410
- module.exports = __WEBPACK_EXTERNAL_MODULE__8__;
411
-
412
- /***/ })
413
-
414
- /******/ });
415
- /************************************************************************/
416
- /******/ // The module cache
417
- /******/ var __webpack_module_cache__ = {};
418
- /******/
419
- /******/ // The require function
420
- /******/ function __webpack_require__(moduleId) {
421
- /******/ // Check if module is in cache
422
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
423
- /******/ if (cachedModule !== undefined) {
424
- /******/ return cachedModule.exports;
425
- /******/ }
426
- /******/ // Create a new module (and put it into the cache)
427
- /******/ var module = __webpack_module_cache__[moduleId] = {
428
- /******/ // no module.id needed
429
- /******/ // no module.loaded needed
430
- /******/ exports: {}
431
- /******/ };
432
- /******/
433
- /******/ // Execute the module function
434
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
435
- /******/
436
- /******/ // Return the exports of the module
437
- /******/ return module.exports;
438
- /******/ }
439
- /******/
440
- /************************************************************************/
441
- /******/ /* webpack/runtime/compat get default export */
442
- /******/ !function() {
443
- /******/ // getDefaultExport function for compatibility with non-harmony modules
444
- /******/ __webpack_require__.n = function(module) {
445
- /******/ var getter = module && module.__esModule ?
446
- /******/ function() { return module['default']; } :
447
- /******/ function() { return module; };
448
- /******/ __webpack_require__.d(getter, { a: getter });
449
- /******/ return getter;
450
- /******/ };
451
- /******/ }();
452
- /******/
453
- /******/ /* webpack/runtime/define property getters */
454
- /******/ !function() {
455
- /******/ // define getter/value functions for harmony exports
456
- /******/ __webpack_require__.d = function(exports, definition) {
457
- /******/ if(Array.isArray(definition)) {
458
- /******/ var i = 0;
459
- /******/ while(i < definition.length) {
460
- /******/ var key = definition[i++];
461
- /******/ var binding = definition[i++];
462
- /******/ if(!__webpack_require__.o(exports, key)) {
463
- /******/ if(binding === 0) {
464
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
465
- /******/ } else {
466
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
467
- /******/ }
468
- /******/ } else if(binding === 0) { i++; }
469
- /******/ }
470
- /******/ } else {
471
- /******/ for(var key in definition) {
472
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
473
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
474
- /******/ }
475
- /******/ }
476
- /******/ }
477
- /******/ };
478
- /******/ }();
479
- /******/
480
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
481
- /******/ !function() {
482
- /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
483
- /******/ }();
484
- /******/
485
- /******/ /* webpack/runtime/make namespace object */
486
- /******/ !function() {
487
- /******/ // define __esModule on exports
488
- /******/ __webpack_require__.r = function(exports) {
489
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
490
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
491
- /******/ }
492
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
493
- /******/ };
494
- /******/ }();
495
- /******/
496
- /************************************************************************/
497
- var __webpack_exports__ = {};
498
- __webpack_require__.r(__webpack_exports__);
499
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
500
- /* harmony export */ TEST_DEFINED_SYMBOL: function() { return /* binding */ TEST_DEFINED_SYMBOL; },
501
- /* harmony export */ TEST_THROW_SYMBOL: function() { return /* binding */ TEST_THROW_SYMBOL; },
502
- /* harmony export */ TEST_UNDEFINED_SYMBOL: function() { return /* binding */ TEST_UNDEFINED_SYMBOL; },
503
- /* harmony export */ expectExpectedType: function() { return /* binding */ expectExpectedType; },
504
- /* harmony export */ testEach: function() { return /* binding */ testEach; },
505
- /* harmony export */ testEachAgainstSameExpectation: function() { return /* binding */ testEachAgainstSameExpectation; },
506
- /* harmony export */ testEachPromise: function() { return /* binding */ testEachPromise; },
507
- /* harmony export */ testEachPromiseAgainstSameExpectation: function() { return /* binding */ testEachPromiseAgainstSameExpectation; },
508
- /* harmony export */ testEachPromiseRejection: function() { return /* binding */ testEachPromiseRejection; },
509
- /* harmony export */ testEachPromiseRejectionAgainstSameExpectation: function() { return /* binding */ testEachPromiseRejectionAgainstSameExpectation; },
510
- /* harmony export */ testEachSingleParameterAgainstSameExpectation: function() { return /* binding */ testEachSingleParameterAgainstSameExpectation; },
511
- /* harmony export */ testEachSingleParameterAgainstSamePromisedExpectation: function() { return /* binding */ testEachSingleParameterAgainstSamePromisedExpectation; },
512
- /* harmony export */ testEachSingleParameterAgainstSameRejectedExpectation: function() { return /* binding */ testEachSingleParameterAgainstSameRejectedExpectation; }
513
- /* harmony export */ });
514
- /* harmony import */ var _jest_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34);
515
- /* harmony import */ var _jest_globals__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_jest_globals__WEBPACK_IMPORTED_MODULE_0__);
516
- /* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
517
- // #!/usr/bin/env babel-node
518
- // -*- coding: utf-8 -*-
519
- /** @module testHelper *//* !
6
+ /* !
520
7
  region header
521
8
  Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
522
9
 
@@ -535,16 +22,30 @@ __webpack_require__.r(__webpack_exports__);
535
22
  (expected: ReturnType<FUNCTION>, ...parameters: Parameters<FUNCTION>) =>
536
23
  expect(FUNCTION(...parameters)).toStrictEqual(expected)
537
24
  )
538
- */// region imports
25
+ */
26
+ // region imports
27
+ import { expect, test } from '@jest/globals';
28
+ import { represent } from "./object.js";
539
29
  // endregion
540
- var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW_SYMBOL=Symbol.for("clientnodeTestHelperThrow");var TEST_UNDEFINED_SYMBOL=Symbol.for("clientnodeTestHelperUndefined");/**
30
+ export const TEST_DEFINED_SYMBOL = Symbol.for('clientnodeTestHelperDefined');
31
+ export const TEST_THROW_SYMBOL = Symbol.for('clientnodeTestHelperThrow');
32
+ export const TEST_UNDEFINED_SYMBOL = Symbol.for('clientnodeTestHelperUndefined');
33
+ /**
541
34
  * Tests given result against given expectations. Respects special symbol
542
35
  * values.
543
36
  * @param givenResult - Target to compare expectation against.
544
37
  * @param expected - Expected result.
545
38
  * @param wrap - Indicates whether to wrap with an expect function call.
546
39
  * @returns Nothing or a promise resolving to nothing.
547
- */var expectExpectedType=function expectExpectedType(givenResult,expected,wrap){if(wrap===void 0){wrap=true}var result=wrap?(0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(givenResult):givenResult;if(expected===TEST_DEFINED_SYMBOL)return result.toBeDefined();if(expected===TEST_THROW_SYMBOL)return result.toThrow();if(expected===TEST_UNDEFINED_SYMBOL)return result.not.toBeDefined();return result.toStrictEqual(expected)};/**
40
+ */
41
+ export const expectExpectedType = (givenResult, expected, wrap = true) => {
42
+ const result = wrap ? expect(givenResult) : givenResult;
43
+ if (expected === TEST_DEFINED_SYMBOL) return result.toBeDefined();
44
+ if (expected === TEST_THROW_SYMBOL) return result.toThrow();
45
+ if (expected === TEST_UNDEFINED_SYMBOL) return result.not.toBeDefined();
46
+ return result.toStrictEqual(expected);
47
+ };
48
+ /**
548
49
  * Tests each given test set (expected value follows by various list of
549
50
  * function parameters). It respects function signature to raise compile time
550
51
  * errors if given test set does not match given function signature.
@@ -553,7 +54,13 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
553
54
  * @param callback - Function reference to test.
554
55
  * @param functionTestTuple - Additional arrays of test sets to test given
555
56
  * function again.
556
- */var _testEach=function _testEach(tester,functionName,callback){for(var _len=arguments.length,functionTestTuple=new Array(_len>3?_len-3:0),_key=3;_key<_len;_key++){functionTestTuple[_key-3]=arguments[_key]}tester([].concat(functionTestTuple))("%p === ".concat(functionName,"(%p, ...)"),function(expected){for(var _len2=arguments.length,parameters=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){parameters[_key2-1]=arguments[_key2]}expectExpectedType(callback.apply(void 0,parameters),expected)})};/**
57
+ */
58
+ const _testEach = (tester, functionName, callback, ...functionTestTuple) => {
59
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => {
60
+ expectExpectedType(callback(...parameters), expected);
61
+ });
62
+ };
63
+ /**
557
64
  * Tests each given test set (expected value follows by various list of
558
65
  * function parameters). It respects function signature to raise compile time
559
66
  * errors if given test set does not match given function signature.
@@ -561,7 +68,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
561
68
  * @param callback - Function reference to test.
562
69
  * @param functionTestTuple - Additional arrays of test sets to test given
563
70
  * function again.
564
- */var testEach=function testEach(functionName,callback){for(var _len3=arguments.length,functionTestTuple=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++){functionTestTuple[_key3-2]=arguments[_key3]}_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback].concat(functionTestTuple))};testEach.only=function(functionName,callback){for(var _len4=arguments.length,functionTestTuple=new Array(_len4>2?_len4-2:0),_key4=2;_key4<_len4;_key4++){functionTestTuple[_key4-2]=arguments[_key4]}_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback].concat(functionTestTuple))};testEach.skip=function(functionName,callback){for(var _len5=arguments.length,functionTestTuple=new Array(_len5>2?_len5-2:0),_key5=2;_key5<_len5;_key5++){functionTestTuple[_key5-2]=arguments[_key5]}_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback].concat(functionTestTuple))};/**
71
+ */
72
+ export const testEach = (functionName, callback, ...functionTestTuple) => {
73
+ _testEach(test.each, functionName, callback, ...functionTestTuple);
74
+ };
75
+ testEach.only = (functionName, callback, ...functionTestTuple) => {
76
+ _testEach(test.only.each, functionName, callback, ...functionTestTuple);
77
+ };
78
+ testEach.skip = (functionName, callback, ...functionTestTuple) => {
79
+ _testEach(test.skip.each, functionName, callback, ...functionTestTuple);
80
+ };
81
+ /**
565
82
  * Tests each given test set (expected value follows by various list of
566
83
  * function parameters). It respects function signature to raise compile time
567
84
  * errors if given test set does not match given function signature.
@@ -570,7 +87,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
570
87
  * @param callback - Function reference to test.
571
88
  * @param functionTestTuple - Additional arrays of test sets to test given
572
89
  * function again.
573
- */var _testEachPromise=function _testEachPromise(tester,functionName,callback){for(var _len6=arguments.length,functionTestTuple=new Array(_len6>3?_len6-3:0),_key6=3;_key6<_len6;_key6++){functionTestTuple[_key6-3]=arguments[_key6]}tester([].concat(functionTestTuple))("%p === ".concat(functionName,"(%p, ...)"),function(expected){for(var _len7=arguments.length,parameters=new Array(_len7>1?_len7-1:0),_key7=1;_key7<_len7;_key7++){parameters[_key7-1]=arguments[_key7]}return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback.apply(void 0,parameters)).resolves,expected,false)})};/**
90
+ */
91
+ const _testEachPromise = (tester, functionName, callback, ...functionTestTuple) => {
92
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => expectExpectedType(expect(callback(...parameters)).resolves, expected, false));
93
+ };
94
+ /**
574
95
  * Tests each given test set (expected value follows by various list of
575
96
  * function parameters). It respects function signature to raise compile time
576
97
  * errors if given test set does not match given function signature.
@@ -578,7 +99,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
578
99
  * @param callback - Function reference to test.
579
100
  * @param functionTestTuple - Additional arrays of test sets to test given
580
101
  * function again.
581
- */var testEachPromise=function testEachPromise(functionName,callback){for(var _len8=arguments.length,functionTestTuple=new Array(_len8>2?_len8-2:0),_key8=2;_key8<_len8;_key8++){functionTestTuple[_key8-2]=arguments[_key8]}_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback].concat(functionTestTuple))};testEachPromise.only=function(functionName,callback){for(var _len9=arguments.length,functionTestTuple=new Array(_len9>2?_len9-2:0),_key9=2;_key9<_len9;_key9++){functionTestTuple[_key9-2]=arguments[_key9]}_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback].concat(functionTestTuple))};testEachPromise.skip=function(functionName,callback){for(var _len0=arguments.length,functionTestTuple=new Array(_len0>2?_len0-2:0),_key0=2;_key0<_len0;_key0++){functionTestTuple[_key0-2]=arguments[_key0]}_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback].concat(functionTestTuple))};/**
102
+ */
103
+ export const testEachPromise = (functionName, callback, ...functionTestTuple) => {
104
+ _testEachPromise(test.each, functionName, callback, ...functionTestTuple);
105
+ };
106
+ testEachPromise.only = (functionName, callback, ...functionTestTuple) => {
107
+ _testEachPromise(test.only.each, functionName, callback, ...functionTestTuple);
108
+ };
109
+ testEachPromise.skip = (functionName, callback, ...functionTestTuple) => {
110
+ _testEachPromise(test.skip.each, functionName, callback, ...functionTestTuple);
111
+ };
112
+ /**
582
113
  * Tests each given test set (expected value follows by various list of
583
114
  * function parameters). It respects function signature to raise compile time
584
115
  * errors if given test set does not match given function signature.
@@ -587,7 +118,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
587
118
  * @param callback - Function reference to test.
588
119
  * @param functionTestTuple - Additional arrays of test sets to test given
589
120
  * function again.
590
- */var _testEachPromiseRejection=function _testEachPromiseRejection(tester,functionName,callback){for(var _len1=arguments.length,functionTestTuple=new Array(_len1>3?_len1-3:0),_key1=3;_key1<_len1;_key1++){functionTestTuple[_key1-3]=arguments[_key1]}tester([].concat(functionTestTuple))("%p === ".concat(functionName,"(%p, ...)"),function(expected){for(var _len10=arguments.length,parameters=new Array(_len10>1?_len10-1:0),_key10=1;_key10<_len10;_key10++){parameters[_key10-1]=arguments[_key10]}return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback.apply(void 0,parameters)).rejects,expected,false)})};/**
121
+ */
122
+ const _testEachPromiseRejection = (tester, functionName, callback, ...functionTestTuple) => {
123
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => expectExpectedType(expect(callback(...parameters)).rejects, expected, false));
124
+ };
125
+ /**
591
126
  * Tests each given test set (expected value follows by various list of
592
127
  * function parameters). It respects function signature to raise compile time
593
128
  * errors if given test set does not match given function signature.
@@ -595,7 +130,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
595
130
  * @param callback - Function reference to test.
596
131
  * @param functionTestTuple - Additional arrays of test sets to test given
597
132
  * function again.
598
- */var testEachPromiseRejection=function testEachPromiseRejection(functionName,callback){for(var _len11=arguments.length,functionTestTuple=new Array(_len11>2?_len11-2:0),_key11=2;_key11<_len11;_key11++){functionTestTuple[_key11-2]=arguments[_key11]}_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback].concat(functionTestTuple))};testEachPromiseRejection.only=function(functionName,callback){for(var _len12=arguments.length,functionTestTuple=new Array(_len12>2?_len12-2:0),_key12=2;_key12<_len12;_key12++){functionTestTuple[_key12-2]=arguments[_key12]}_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback].concat(functionTestTuple))};testEachPromiseRejection.skip=function(functionName,callback){for(var _len13=arguments.length,functionTestTuple=new Array(_len13>2?_len13-2:0),_key13=2;_key13<_len13;_key13++){functionTestTuple[_key13-2]=arguments[_key13]}_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback].concat(functionTestTuple))};/**
133
+ */
134
+ export const testEachPromiseRejection = (functionName, callback, ...functionTestTuple) => {
135
+ _testEachPromiseRejection(test.each, functionName, callback, ...functionTestTuple);
136
+ };
137
+ testEachPromiseRejection.only = (functionName, callback, ...functionTestTuple) => {
138
+ _testEachPromiseRejection(test.only.each, functionName, callback, ...functionTestTuple);
139
+ };
140
+ testEachPromiseRejection.skip = (functionName, callback, ...functionTestTuple) => {
141
+ _testEachPromiseRejection(test.skip.each, functionName, callback, ...functionTestTuple);
142
+ };
143
+ /**
599
144
  * Tests each given single parameter against same given expected value. It
600
145
  * respects function signature to raise compile time errors if given test set
601
146
  * does not match given function signature.
@@ -604,7 +149,13 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
604
149
  * @param callback - Function reference to test.
605
150
  * @param expected - Value to check each function call return value against.
606
151
  * @param parameters - Additional first parameters to test given function with.
607
- */var _testEachSingleParameterAgainstSameExpectation=function _testEachSingleParameterAgainstSameExpectation(tester,functionName,callback,expected){for(var _len14=arguments.length,parameters=new Array(_len14>4?_len14-4:0),_key14=4;_key14<_len14;_key14++){parameters[_key14-4]=arguments[_key14]}tester([].concat(parameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p)"),function(parameter){expectExpectedType(expected===TEST_THROW_SYMBOL?function(){return callback(parameter)}:callback(parameter),expected)})};/**
152
+ */
153
+ const _testEachSingleParameterAgainstSameExpectation = (tester, functionName, callback, expected, ...parameters) => {
154
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => {
155
+ expectExpectedType(expected === TEST_THROW_SYMBOL ? () => callback(parameter) : callback(parameter), expected);
156
+ });
157
+ };
158
+ /**
608
159
  * Tests each given single parameter against same given expected value. It
609
160
  * respects function signature to raise compile time errors if given test set
610
161
  * does not match given function signature.
@@ -612,7 +163,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
612
163
  * @param callback - Function reference to test.
613
164
  * @param expected - Value to check each function call return value against.
614
165
  * @param parameters - Additional first parameters to test given function with.
615
- */var testEachSingleParameterAgainstSameExpectation=function testEachSingleParameterAgainstSameExpectation(functionName,callback,expected){for(var _len15=arguments.length,parameters=new Array(_len15>3?_len15-3:0),_key15=3;_key15<_len15;_key15++){parameters[_key15-3]=arguments[_key15]}_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSameExpectation.only=function(functionName,callback,expected){for(var _len16=arguments.length,parameters=new Array(_len16>3?_len16-3:0),_key16=3;_key16<_len16;_key16++){parameters[_key16-3]=arguments[_key16]}_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSameExpectation.skip=function(functionName,callback,expected){for(var _len17=arguments.length,parameters=new Array(_len17>3?_len17-3:0),_key17=3;_key17<_len17;_key17++){parameters[_key17-3]=arguments[_key17]}_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(parameters))};/**
166
+ */
167
+ export const testEachSingleParameterAgainstSameExpectation = (functionName, callback, expected, ...parameters) => {
168
+ _testEachSingleParameterAgainstSameExpectation(test.each, functionName, callback, expected, ...parameters);
169
+ };
170
+ testEachSingleParameterAgainstSameExpectation.only = (functionName, callback, expected, ...parameters) => {
171
+ _testEachSingleParameterAgainstSameExpectation(test.only.each, functionName, callback, expected, ...parameters);
172
+ };
173
+ testEachSingleParameterAgainstSameExpectation.skip = (functionName, callback, expected, ...parameters) => {
174
+ _testEachSingleParameterAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...parameters);
175
+ };
176
+ /**
616
177
  * Tests each given single parameter against same given expected value. It
617
178
  * respects function signature to raise compile time errors if given test set
618
179
  * does not match given function signature.
@@ -621,7 +182,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
621
182
  * @param callback - Function reference to test.
622
183
  * @param expected - Value to check each function call return value against.
623
184
  * @param parameters - Additional first parameters to test given function with.
624
- */var _testEachSingleParameterAgainstSamePromisedExpectation=function _testEachSingleParameterAgainstSamePromisedExpectation(tester,functionName,callback,expected){for(var _len18=arguments.length,parameters=new Array(_len18>4?_len18-4:0),_key18=4;_key18<_len18;_key18++){parameters[_key18-4]=arguments[_key18]}tester([].concat(parameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p)"),function(parameter){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback(parameter)).resolves,expected,false)})};/**
185
+ */
186
+ const _testEachSingleParameterAgainstSamePromisedExpectation = (tester, functionName, callback, expected, ...parameters) => {
187
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => expectExpectedType(expect(callback(parameter)).resolves, expected, false));
188
+ };
189
+ /**
625
190
  * Tests each given single parameter against same given expected value. It
626
191
  * respects function signature to raise compile time errors if given test set
627
192
  * does not match given function signature.
@@ -629,7 +194,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
629
194
  * @param callback - Function reference to test.
630
195
  * @param expected - Value to check each function call return value against.
631
196
  * @param parameters - Additional first parameters to test given function with.
632
- */var testEachSingleParameterAgainstSamePromisedExpectation=function testEachSingleParameterAgainstSamePromisedExpectation(functionName,callback,expected){for(var _len19=arguments.length,parameters=new Array(_len19>3?_len19-3:0),_key19=3;_key19<_len19;_key19++){parameters[_key19-3]=arguments[_key19]}_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSamePromisedExpectation.only=function(functionName,callback,expected){for(var _len20=arguments.length,parameters=new Array(_len20>3?_len20-3:0),_key20=3;_key20<_len20;_key20++){parameters[_key20-3]=arguments[_key20]}_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSamePromisedExpectation.skip=function(functionName,callback,expected){for(var _len21=arguments.length,parameters=new Array(_len21>3?_len21-3:0),_key21=3;_key21<_len21;_key21++){parameters[_key21-3]=arguments[_key21]}_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(parameters))};/**
197
+ */
198
+ export const testEachSingleParameterAgainstSamePromisedExpectation = (functionName, callback, expected, ...parameters) => {
199
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.each, functionName, callback, expected, ...parameters);
200
+ };
201
+ testEachSingleParameterAgainstSamePromisedExpectation.only = (functionName, callback, expected, ...parameters) => {
202
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.only.each, functionName, callback, expected, ...parameters);
203
+ };
204
+ testEachSingleParameterAgainstSamePromisedExpectation.skip = (functionName, callback, expected, ...parameters) => {
205
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.skip.each, functionName, callback, expected, ...parameters);
206
+ };
207
+ /**
633
208
  * Tests each given single parameter against same given expected value. It
634
209
  * respects function signature to raise compile time errors if given test set
635
210
  * does not match given function signature.
@@ -638,7 +213,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
638
213
  * @param callback - Function reference to test.
639
214
  * @param expected - Value to check each function call return value against.
640
215
  * @param parameters - Additional first parameters to test given function with.
641
- */var _testEachSingleParameterAgainstSameRejectedExpectation=function _testEachSingleParameterAgainstSameRejectedExpectation(tester,functionName,callback,expected){for(var _len22=arguments.length,parameters=new Array(_len22>4?_len22-4:0),_key22=4;_key22<_len22;_key22++){parameters[_key22-4]=arguments[_key22]}tester([].concat(parameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p)"),function(parameter){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback(parameter)).rejects,expected,false)})};/**
216
+ */
217
+ const _testEachSingleParameterAgainstSameRejectedExpectation = (tester, functionName, callback, expected, ...parameters) => {
218
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => expectExpectedType(expect(callback(parameter)).rejects, expected, false));
219
+ };
220
+ /**
642
221
  * Tests each given single parameter against same given expected value. It
643
222
  * respects function signature to raise compile time errors if given test set
644
223
  * does not match given function signature.
@@ -646,7 +225,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
646
225
  * @param callback - Function reference to test.
647
226
  * @param expected - Value to check each function call return value against.
648
227
  * @param parameters - Additional first parameters to test given function with.
649
- */var testEachSingleParameterAgainstSameRejectedExpectation=function testEachSingleParameterAgainstSameRejectedExpectation(functionName,callback,expected){for(var _len23=arguments.length,parameters=new Array(_len23>3?_len23-3:0),_key23=3;_key23<_len23;_key23++){parameters[_key23-3]=arguments[_key23]}_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSameRejectedExpectation.only=function(functionName,callback,expected){for(var _len24=arguments.length,parameters=new Array(_len24>3?_len24-3:0),_key24=3;_key24<_len24;_key24++){parameters[_key24-3]=arguments[_key24]}_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(parameters))};testEachSingleParameterAgainstSameRejectedExpectation.skip=function(functionName,callback,expected){for(var _len25=arguments.length,parameters=new Array(_len25>3?_len25-3:0),_key25=3;_key25<_len25;_key25++){parameters[_key25-3]=arguments[_key25]}_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(parameters))};/**
228
+ */
229
+ export const testEachSingleParameterAgainstSameRejectedExpectation = (functionName, callback, expected, ...parameters) => {
230
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.each, functionName, callback, expected, ...parameters);
231
+ };
232
+ testEachSingleParameterAgainstSameRejectedExpectation.only = (functionName, callback, expected, ...parameters) => {
233
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.only.each, functionName, callback, expected, ...parameters);
234
+ };
235
+ testEachSingleParameterAgainstSameRejectedExpectation.skip = (functionName, callback, expected, ...parameters) => {
236
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.skip.each, functionName, callback, expected, ...parameters);
237
+ };
238
+ /**
650
239
  * Tests each given test set (various list of function parameters) against same
651
240
  * given expected value. It respects function signature to raise compile time
652
241
  * errors if given test set does not match given function signature.
@@ -656,7 +245,13 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
656
245
  * @param expected - Value to check each function call return value against.
657
246
  * @param functionParameters - Additional lists of parameters to test given
658
247
  * function again.
659
- */var _testEachAgainstSameExpectation=function _testEachAgainstSameExpectation(tester,functionName,callback,expected){for(var _len26=arguments.length,functionParameters=new Array(_len26>4?_len26-4:0),_key26=4;_key26<_len26;_key26++){functionParameters[_key26-4]=arguments[_key26]}tester([].concat(functionParameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p, ...)"),function(){for(var _len27=arguments.length,parameters=new Array(_len27),_key27=0;_key27<_len27;_key27++){parameters[_key27]=arguments[_key27]}expectExpectedType(expected===TEST_THROW_SYMBOL?function(){return callback.apply(void 0,parameters)}:callback.apply(void 0,parameters),expected)})};/**
248
+ */
249
+ const _testEachAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
250
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => {
251
+ expectExpectedType(expected === TEST_THROW_SYMBOL ? () => callback(...parameters) : callback(...parameters), expected);
252
+ });
253
+ };
254
+ /**
660
255
  * Tests each given test set (various list of function parameters) against same
661
256
  * given expected value. It respects function signature to raise compile time
662
257
  * errors if given test set does not match given function signature.
@@ -665,7 +260,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
665
260
  * @param expected - Value to check each function call return value against.
666
261
  * @param functionParameters - Additional lists of parameters to test given
667
262
  * function again.
668
- */var testEachAgainstSameExpectation=function testEachAgainstSameExpectation(functionName,callback,expected){for(var _len28=arguments.length,functionParameters=new Array(_len28>3?_len28-3:0),_key28=3;_key28<_len28;_key28++){functionParameters[_key28-3]=arguments[_key28]}_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(functionParameters))};testEachAgainstSameExpectation.only=function(functionName,callback,expected){for(var _len29=arguments.length,functionParameters=new Array(_len29>3?_len29-3:0),_key29=3;_key29<_len29;_key29++){functionParameters[_key29-3]=arguments[_key29]}_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(functionParameters))};testEachAgainstSameExpectation.skip=function(functionName,callback,expected){for(var _len30=arguments.length,functionParameters=new Array(_len30>3?_len30-3:0),_key30=3;_key30<_len30;_key30++){functionParameters[_key30-3]=arguments[_key30]}_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(functionParameters))};/**
263
+ */
264
+ export const testEachAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
265
+ _testEachAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
266
+ };
267
+ testEachAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
268
+ _testEachAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
269
+ };
270
+ testEachAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
271
+ _testEachAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
272
+ };
273
+ /**
669
274
  * Tests each given test set (various list of function parameters) against same
670
275
  * given expected value. It respects function signature to raise compile time
671
276
  * errors if given test set does not match given function signature.
@@ -675,7 +280,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
675
280
  * @param expected - Value to check each function call return value against.
676
281
  * @param functionParameters - Additional lists of parameters to test given
677
282
  * function again.
678
- */var _testEachPromiseAgainstSameExpectation=function _testEachPromiseAgainstSameExpectation(tester,functionName,callback,expected){for(var _len31=arguments.length,functionParameters=new Array(_len31>4?_len31-4:0),_key31=4;_key31<_len31;_key31++){functionParameters[_key31-4]=arguments[_key31]}tester([].concat(functionParameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p, ...)"),function(){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback.apply(void 0,arguments)).resolves,expected,false)})};/**
283
+ */
284
+ const _testEachPromiseAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
285
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => expectExpectedType(expect(callback(...parameters)).resolves, expected, false));
286
+ };
287
+ /**
679
288
  * Tests each given test set (various list of function parameters) against same
680
289
  * given expected value. It respects function signature to raise compile time
681
290
  * errors if given test set does not match given function signature.
@@ -684,7 +293,17 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
684
293
  * @param expected - Value to check each function call return value against.
685
294
  * @param functionParameters - Additional lists of parameters to test given
686
295
  * function again.
687
- */var testEachPromiseAgainstSameExpectation=function testEachPromiseAgainstSameExpectation(functionName,callback,expected){for(var _len32=arguments.length,functionParameters=new Array(_len32>3?_len32-3:0),_key32=3;_key32<_len32;_key32++){functionParameters[_key32-3]=arguments[_key32]}_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(functionParameters))};testEachPromiseAgainstSameExpectation.only=function(functionName,callback,expected){for(var _len33=arguments.length,functionParameters=new Array(_len33>3?_len33-3:0),_key33=3;_key33<_len33;_key33++){functionParameters[_key33-3]=arguments[_key33]}_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(functionParameters))};testEachPromiseAgainstSameExpectation.skip=function(functionName,callback,expected){for(var _len34=arguments.length,functionParameters=new Array(_len34>3?_len34-3:0),_key34=3;_key34<_len34;_key34++){functionParameters[_key34-3]=arguments[_key34]}_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(functionParameters))};/**
296
+ */
297
+ export const testEachPromiseAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
298
+ _testEachPromiseAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
299
+ };
300
+ testEachPromiseAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
301
+ _testEachPromiseAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
302
+ };
303
+ testEachPromiseAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
304
+ _testEachPromiseAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
305
+ };
306
+ /**
688
307
  * Tests each given test set (various list of function parameters) against same
689
308
  * given expected value. It respects function signature to raise compile time
690
309
  * errors if given test set does not match given function signature.
@@ -694,7 +313,11 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
694
313
  * @param expected - Value to check each function call return value against.
695
314
  * @param functionParameters - Additional lists of parameters to test given
696
315
  * function again.
697
- */var _testEachPromiseRejectionAgainstSameExpectation=function _testEachPromiseRejectionAgainstSameExpectation(tester,functionName,callback,expected){for(var _len35=arguments.length,functionParameters=new Array(_len35>4?_len35-4:0),_key35=4;_key35<_len35;_key35++){functionParameters[_key35-4]=arguments[_key35]}tester([].concat(functionParameters))("".concat((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(expected)," === ").concat(functionName,"(%p, ...)"),function(){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(callback.apply(void 0,arguments)).rejects,expected,false)})};/**
316
+ */
317
+ const _testEachPromiseRejectionAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
318
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => expectExpectedType(expect(callback(...parameters)).rejects, expected, false));
319
+ };
320
+ /**
698
321
  * Tests each given test set (various list of function parameters) against same
699
322
  * given expected value. It respects function signature to raise compile time
700
323
  * errors if given test set does not match given function signature.
@@ -703,8 +326,15 @@ var TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined");var TEST_THROW
703
326
  * @param expected - Value to check each function call return value against.
704
327
  * @param functionParameters - Additional lists of parameters to test given
705
328
  * function again.
706
- */var testEachPromiseRejectionAgainstSameExpectation=function testEachPromiseRejectionAgainstSameExpectation(functionName,callback,expected){for(var _len36=arguments.length,functionParameters=new Array(_len36>3?_len36-3:0),_key36=3;_key36<_len36;_key36++){functionParameters[_key36-3]=arguments[_key36]}_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,functionName,callback,expected].concat(functionParameters))};testEachPromiseRejectionAgainstSameExpectation.only=function(functionName,callback,expected){for(var _len37=arguments.length,functionParameters=new Array(_len37>3?_len37-3:0),_key37=3;_key37<_len37;_key37++){functionParameters[_key37-3]=arguments[_key37]}_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,functionName,callback,expected].concat(functionParameters))};testEachPromiseRejectionAgainstSameExpectation.skip=function(functionName,callback,expected){for(var _len38=arguments.length,functionParameters=new Array(_len38>3?_len38-3:0),_key38=3;_key38<_len38;_key38++){functionParameters[_key38-3]=arguments[_key38]}_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,functionName,callback,expected].concat(functionParameters))};/* harmony default export */ __webpack_exports__["default"] = (testEach);
707
- /******/ return __webpack_exports__;
708
- /******/ })()
709
- ;
710
- });
329
+ */
330
+ export const testEachPromiseRejectionAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
331
+ _testEachPromiseRejectionAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
332
+ };
333
+ testEachPromiseRejectionAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
334
+ _testEachPromiseRejectionAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
335
+ };
336
+ testEachPromiseRejectionAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
337
+ _testEachPromiseRejectionAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
338
+ };
339
+ export default testEach;
340
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QtaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vICMhL3Vzci9iaW4vZW52IGJhYmVsLW5vZGVcbi8vIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuLyoqIEBtb2R1bGUgdGVzdEhlbHBlciAqL1xuJ3VzZSBzdHJpY3QnXG4vKiAhXG4gICAgcmVnaW9uIGhlYWRlclxuICAgIENvcHlyaWdodCBUb3JiZW4gU2lja2VydCAoaW5mb1tcIn5hdH5cIl10b3JiZW4ud2Vic2l0ZSkgMTYuMTIuMjAxMlxuXG4gICAgTGljZW5zZVxuICAgIC0tLS0tLS1cblxuICAgIFRoaXMgbGlicmFyeSB3cml0dGVuIGJ5IFRvcmJlbiBTaWNrZXJ0IHN0YW5kcyB1bmRlciBhIGNyZWF0aXZlIGNvbW1vbnNcbiAgICBuYW1pbmcgMy4wIHVucG9ydGVkIGxpY2Vuc2UuXG4gICAgU2VlIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvZGVlZC5kZVxuICAgIGVuZHJlZ2lvblxuXG4gICAgZ2VuZXJpYyB0ZXN0IGJvaWxlcnBsYXRlOlxuXG4gICAgdGVzdC5lYWNoKFtbRVhQRUNURUQsIC4uLlBBUkFNRVRFUlNdLCAuLi5dKShcbiAgICAgICAgJyVwID09PSBGVU5DVElPTiguLi4lcCknLFxuICAgICAgICAoZXhwZWN0ZWQ6IFJldHVyblR5cGU8RlVOQ1RJT04+LCAuLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZVTkNUSU9OPikgPT5cbiAgICAgICAgICAgIGV4cGVjdChGVU5DVElPTiguLi5wYXJhbWV0ZXJzKSkudG9TdHJpY3RFcXVhbChleHBlY3RlZClcbiAgICApXG4qL1xuLy8gcmVnaW9uIGltcG9ydHNcbmltcG9ydCB0eXBlIHtcbiAgICBBbnlGdW5jdGlvbixcbiAgICBGaXJzdFBhcmFtZXRlcixcbiAgICBGdW5jdGlvblRlc3RUdXBsZSxcbiAgICBGdW5jdGlvblRlc3RQcm9taXNlVHVwbGUsXG4gICAgRnVuY3Rpb25UZXN0UHJvbWlzZVJlamVjdGlvblR1cGxlLFxuICAgIFRlc3RNYXRjaGVycyBhcyBNYXRjaGVycyxcbiAgICBUZXN0U3ltYm9sLFxuICAgIFRoZW5QYXJhbWV0ZXIsXG4gICAgVW5rbm93bkZ1bmN0aW9uXG59IGZyb20gJy4vdHlwZSdcblxuaW1wb3J0IHtleHBlY3QsIHRlc3R9IGZyb20gJ0BqZXN0L2dsb2JhbHMnXG5cbmltcG9ydCB7cmVwcmVzZW50fSBmcm9tICcuL29iamVjdCdcbi8vIGVuZHJlZ2lvblxuZXhwb3J0IGNvbnN0IFRFU1RfREVGSU5FRF9TWU1CT0wgPSBTeW1ib2wuZm9yKCdjbGllbnRub2RlVGVzdEhlbHBlckRlZmluZWQnKVxuZXhwb3J0IGNvbnN0IFRFU1RfVEhST1dfU1lNQk9MID0gU3ltYm9sLmZvcignY2xpZW50bm9kZVRlc3RIZWxwZXJUaHJvdycpXG5leHBvcnQgY29uc3QgVEVTVF9VTkRFRklORURfU1lNQk9MID0gU3ltYm9sLmZvcignY2xpZW50bm9kZVRlc3RIZWxwZXJVbmRlZmluZWQnKVxuLyoqXG4gKiBUZXN0cyBnaXZlbiByZXN1bHQgYWdhaW5zdCBnaXZlbiBleHBlY3RhdGlvbnMuIFJlc3BlY3RzIHNwZWNpYWwgc3ltYm9sXG4gKiB2YWx1ZXMuXG4gKiBAcGFyYW0gZ2l2ZW5SZXN1bHQgLSBUYXJnZXQgdG8gY29tcGFyZSBleHBlY3RhdGlvbiBhZ2FpbnN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gRXhwZWN0ZWQgcmVzdWx0LlxuICogQHBhcmFtIHdyYXAgLSBJbmRpY2F0ZXMgd2hldGhlciB0byB3cmFwIHdpdGggYW4gZXhwZWN0IGZ1bmN0aW9uIGNhbGwuXG4gKiBAcmV0dXJucyBOb3RoaW5nIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gbm90aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IGV4cGVjdEV4cGVjdGVkVHlwZSA9IDxcbiAgICBUeXBlID0gdW5rbm93biwgUmVzdWx0IGV4dGVuZHMgUHJvbWlzZTx2b2lkPiB8IHZvaWQgPSB2b2lkXG4+KFxuICAgICAgICBnaXZlblJlc3VsdDogTWF0Y2hlcnM8UmVzdWx0PiB8IFJlc3VsdCxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUeXBlLFxuICAgICAgICB3cmFwID0gdHJ1ZVxuICAgICk6IFJlc3VsdCA9PiB7XG4gICAgY29uc3QgcmVzdWx0OiBNYXRjaGVyczxSZXN1bHQ+ID0gd3JhcCA/XG4gICAgICAgIGV4cGVjdChnaXZlblJlc3VsdCBhcyBSZXN1bHQpIGFzIHVua25vd24gYXMgTWF0Y2hlcnM8UmVzdWx0PiA6XG4gICAgICAgIGdpdmVuUmVzdWx0IGFzIE1hdGNoZXJzPFJlc3VsdD5cblxuICAgIGlmIChleHBlY3RlZCA9PT0gVEVTVF9ERUZJTkVEX1NZTUJPTClcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b0JlRGVmaW5lZCgpXG5cbiAgICBpZiAoZXhwZWN0ZWQgPT09IFRFU1RfVEhST1dfU1lNQk9MKVxuICAgICAgICByZXR1cm4gcmVzdWx0LnRvVGhyb3coKVxuXG4gICAgaWYgKGV4cGVjdGVkID09PSBURVNUX1VOREVGSU5FRF9TWU1CT0wpXG4gICAgICAgIHJldHVybiByZXN1bHQubm90LnRvQmVEZWZpbmVkKClcblxuICAgIHJldHVybiByZXN1bHQudG9TdHJpY3RFcXVhbChleHBlY3RlZClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAoZXhwZWN0ZWQgdmFsdWUgZm9sbG93cyBieSB2YXJpb3VzIGxpc3Qgb2ZcbiAqIGZ1bmN0aW9uIHBhcmFtZXRlcnMpLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgdGVzdGVyOiB0eXBlb2YgdGVzdC5lYWNoLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgdGVzdGVyKFsuLi5mdW5jdGlvblRlc3RUdXBsZV0pKFxuICAgICAgICBgJXAgPT09ICR7ZnVuY3Rpb25OYW1lfSglcCwgLi4uKWAsXG4gICAgICAgICgoXG4gICAgICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgICAgIC4uLnBhcmFtZXRlcnM6IFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPlxuICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+KFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKC4uLnBhcmFtZXRlcnMpIGFzIE1hdGNoZXJzPHZvaWQ+IHwgdm9pZCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAoZXhwZWN0ZWQgdmFsdWUgZm9sbG93cyBieSB2YXJpb3VzIGxpc3Qgb2ZcbiAqIGZ1bmN0aW9uIHBhcmFtZXRlcnMpLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBmdW5jdGlvblRlc3RUdXBsZSAtIEFkZGl0aW9uYWwgYXJyYXlzIG9mIHRlc3Qgc2V0cyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoKHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgLi4uZnVuY3Rpb25UZXN0VHVwbGUpXG59XG50ZXN0RWFjaC5vbmx5ID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoKHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZSlcbn1cbnRlc3RFYWNoLnNraXAgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICAuLi5mdW5jdGlvblRlc3RUdXBsZTogQXJyYXk8RnVuY3Rpb25UZXN0VHVwbGU8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2godGVzdC5za2lwLmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIC4uLmZ1bmN0aW9uVGVzdFR1cGxlKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0IChleHBlY3RlZCB2YWx1ZSBmb2xsb3dzIGJ5IHZhcmlvdXMgbGlzdCBvZlxuICogZnVuY3Rpb24gcGFyYW1ldGVycykuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBmdW5jdGlvblRlc3RUdXBsZSAtIEFkZGl0aW9uYWwgYXJyYXlzIG9mIHRlc3Qgc2V0cyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoUHJvbWlzZSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgdGVzdGVyOiB0eXBlb2YgdGVzdC5lYWNoLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4uZnVuY3Rpb25UZXN0VHVwbGVdKShcbiAgICAgICAgYCVwID09PSAke2Z1bmN0aW9uTmFtZX0oJXAsIC4uLilgLFxuICAgICAgICAoKFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5cbiAgICAgICAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgICAgZXhwZWN0RXhwZWN0ZWRUeXBlPFxuICAgICAgICAgICAgICAgIFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PiwgUHJvbWlzZTx2b2lkPlxuICAgICAgICAgICAgPihleHBlY3QoY2FsbGJhY2soLi4ucGFyYW1ldGVycykpLnJlc29sdmVzLCBleHBlY3RlZCwgZmFsc2UpXG4gICAgICAgIClcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKGV4cGVjdGVkIHZhbHVlIGZvbGxvd3MgYnkgdmFyaW91cyBsaXN0IG9mXG4gKiBmdW5jdGlvbiBwYXJhbWV0ZXJzKS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFByb21pc2UgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICAuLi5mdW5jdGlvblRlc3RUdXBsZTogQXJyYXk8RnVuY3Rpb25UZXN0UHJvbWlzZVR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZSh0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIC4uLmZ1bmN0aW9uVGVzdFR1cGxlKVxufVxudGVzdEVhY2hQcm9taXNlLm9ubHkgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICAuLi5mdW5jdGlvblRlc3RUdXBsZTogQXJyYXk8RnVuY3Rpb25UZXN0UHJvbWlzZVR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZShcbiAgICAgICAgdGVzdC5vbmx5LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIC4uLmZ1bmN0aW9uVGVzdFR1cGxlXG4gICAgKVxufVxudGVzdEVhY2hQcm9taXNlLnNraXAgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICAuLi5mdW5jdGlvblRlc3RUdXBsZTogQXJyYXk8RnVuY3Rpb25UZXN0UHJvbWlzZVR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZShcbiAgICAgICAgdGVzdC5za2lwLmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIC4uLmZ1bmN0aW9uVGVzdFR1cGxlXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0IChleHBlY3RlZCB2YWx1ZSBmb2xsb3dzIGJ5IHZhcmlvdXMgbGlzdCBvZlxuICogZnVuY3Rpb24gcGFyYW1ldGVycykuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBmdW5jdGlvblRlc3RUdXBsZSAtIEFkZGl0aW9uYWwgYXJyYXlzIG9mIHRlc3Qgc2V0cyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgdGVzdGVyOiB0eXBlb2YgdGVzdC5lYWNoLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VSZWplY3Rpb25UdXBsZTxcbiAgICAgICAgICAgIEZ1bmN0aW9uVHlwZVxuICAgICAgICA+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4uZnVuY3Rpb25UZXN0VHVwbGVdKShcbiAgICAgICAgYCVwID09PSAke2Z1bmN0aW9uTmFtZX0oJXAsIC4uLilgLFxuICAgICAgICAoKFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgICAgIC4uLnBhcmFtZXRlcnM6IFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPlxuICAgICAgICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8RXJyb3IsIFByb21pc2U8dm9pZD4+KFxuICAgICAgICAgICAgICAgIGV4cGVjdChjYWxsYmFjayguLi5wYXJhbWV0ZXJzKSkucmVqZWN0cywgZXhwZWN0ZWQsIGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKGV4cGVjdGVkIHZhbHVlIGZvbGxvd3MgYnkgdmFyaW91cyBsaXN0IG9mXG4gKiBmdW5jdGlvbiBwYXJhbWV0ZXJzKS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFByb21pc2VSZWplY3Rpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICAuLi5mdW5jdGlvblRlc3RUdXBsZTogQXJyYXk8RnVuY3Rpb25UZXN0UHJvbWlzZVJlamVjdGlvblR1cGxlPFxuICAgICAgICAgICAgRnVuY3Rpb25UeXBlXG4gICAgICAgID4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbihcbiAgICAgICAgdGVzdC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZVxuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZVJlamVjdGlvbi5vbmx5ID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VSZWplY3Rpb25UdXBsZTxcbiAgICAgICAgICAgIEZ1bmN0aW9uVHlwZVxuICAgICAgICA+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb24oXG4gICAgICAgIHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZVxuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZVJlamVjdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VSZWplY3Rpb25UdXBsZTxcbiAgICAgICAgICAgIEZ1bmN0aW9uVHlwZVxuICAgICAgICA+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiBzaW5nbGUgcGFyYW1ldGVyIGFnYWluc3Qgc2FtZSBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXRcbiAqIHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWUgZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0XG4gKiBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBmaXJzdCBwYXJhbWV0ZXJzIHRvIHRlc3QgZ2l2ZW4gZnVuY3Rpb24gd2l0aC5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVFeHBlY3RhdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgdGVzdGVyOiB0eXBlb2YgdGVzdC5lYWNoLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPiB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgdGVzdGVyKFsuLi5wYXJhbWV0ZXJzXSkoXG4gICAgICAgIGAke3JlcHJlc2VudChleHBlY3RlZCl9ID09PSAke2Z1bmN0aW9uTmFtZX0oJXApYCxcbiAgICAgICAgKChwYXJhbWV0ZXI6IEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4pID0+IHtcbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+KFxuICAgICAgICAgICAgICAgIChleHBlY3RlZCA9PT0gVEVTVF9USFJPV19TWU1CT0wgP1xuICAgICAgICAgICAgICAgICAgICAoKSA9PiBjYWxsYmFjayhwYXJhbWV0ZXIpIGFzIHVua25vd24gOlxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgKSBhcyBNYXRjaGVyczx2b2lkPiB8IHZvaWQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gc2luZ2xlIHBhcmFtZXRlciBhZ2FpbnN0IHNhbWUgZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0XG4gKiByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldFxuICogZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBmaXJzdCBwYXJhbWV0ZXJzIHRvIHRlc3QgZ2l2ZW4gZnVuY3Rpb24gd2l0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVFeHBlY3RhdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4ucGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPiB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5za2lwLmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHNpbmdsZSBwYXJhbWV0ZXIgYWdhaW5zdCBzYW1lIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdFxuICogcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZSBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXRcbiAqIGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSB0ZXN0ZXIgLSBVbmRlcmxpbmcgdGVzdGluZyBmdW5jdGlvbiB0byB1c2UuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGZpcnN0IHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlbiBmdW5jdGlvbiB3aXRoLlxuICovXG5jb25zdCBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVByb21pc2VkRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4ucGFyYW1ldGVyc10pKFxuICAgICAgICBgJHtyZXByZXNlbnQoZXhwZWN0ZWQpfSA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwKWAsXG4gICAgICAgICgocGFyYW1ldGVyOiBGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+KSA9PlxuICAgICAgICAgICAgZXhwZWN0RXhwZWN0ZWRUeXBlPFxuICAgICAgICAgICAgICAgIFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PiwgUHJvbWlzZTx2b2lkPlxuICAgICAgICAgICAgPihleHBlY3QoY2FsbGJhY2socGFyYW1ldGVyKSkucmVzb2x2ZXMsIGV4cGVjdGVkLCBmYWxzZSlcbiAgICAgICAgKVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiBzaW5nbGUgcGFyYW1ldGVyIGFnYWluc3Qgc2FtZSBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXRcbiAqIHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWUgZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0XG4gKiBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGZpcnN0IHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlbiBmdW5jdGlvbiB3aXRoLlxuICovXG5leHBvcnQgY29uc3QgdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVByb21pc2VkRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVByb21pc2VkRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUHJvbWlzZWRFeHBlY3RhdGlvbi5vbmx5ID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVQcm9taXNlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUHJvbWlzZWRFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVQcm9taXNlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gc2luZ2xlIHBhcmFtZXRlciBhZ2FpbnN0IHNhbWUgZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0XG4gKiByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldFxuICogZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgLSBWYWx1ZSB0byBjaGVjayBlYWNoIGZ1bmN0aW9uIGNhbGwgcmV0dXJuIHZhbHVlIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgZmlyc3QgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuIGZ1bmN0aW9uIHdpdGguXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUmVqZWN0ZWRFeHBlY3RhdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgdGVzdGVyOiB0eXBlb2YgdGVzdC5lYWNoLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLnBhcmFtZXRlcnNdKShcbiAgICAgICAgYCR7cmVwcmVzZW50KGV4cGVjdGVkKX0gPT09ICR7ZnVuY3Rpb25OYW1lfSglcClgLFxuICAgICAgICAoKHBhcmFtZXRlcjogRmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPik6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxFcnJvciwgUHJvbWlzZTx2b2lkPj4oXG4gICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxiYWNrKHBhcmFtZXRlcikpLnJlamVjdHMsIGV4cGVjdGVkLCBmYWxzZVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHNpbmdsZSBwYXJhbWV0ZXIgYWdhaW5zdCBzYW1lIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdFxuICogcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZSBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXRcbiAqIGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgLSBWYWx1ZSB0byBjaGVjayBlYWNoIGZ1bmN0aW9uIGNhbGwgcmV0dXJuIHZhbHVlIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgZmlyc3QgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuIGZ1bmN0aW9uIHdpdGguXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUmVqZWN0ZWRFeHBlY3RhdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVSZWplY3RlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVJlamVjdGVkRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVSZWplY3RlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUmVqZWN0ZWRFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVJlamVjdGVkRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4ucGFyYW1ldGVyc1xuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaEFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLmZ1bmN0aW9uUGFyYW1ldGVyc10pKFxuICAgICAgICBgJHtyZXByZXNlbnQoZXhwZWN0ZWQpfSA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwLCAuLi4pYCxcbiAgICAgICAgKCguLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4pID0+IHtcbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+KFxuICAgICAgICAgICAgICAgIChleHBlY3RlZCA9PT0gVEVTVF9USFJPV19TWU1CT0wgP1xuICAgICAgICAgICAgICAgICAgICAoKSA9PiBjYWxsYmFjayguLi5wYXJhbWV0ZXJzKSBhcyB1bmtub3duIDpcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soLi4ucGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICApIGFzIE1hdGNoZXJzPHZvaWQ+IHwgdm9pZCxcbiAgICAgICAgICAgICAgICBleHBlY3RlZFxuICAgICAgICAgICAgKVxuICAgICAgICB9KVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIGZ1bmN0aW9uUGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgbGlzdHMgb2YgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoQWdhaW5zdFNhbWVFeHBlY3RhdGlvbiA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5mdW5jdGlvblBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaEFnYWluc3RTYW1lRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoQWdhaW5zdFNhbWVFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPiB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaEFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0ICh2YXJpb3VzIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycykgYWdhaW5zdCBzYW1lXG4gKiBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSB0ZXN0ZXIgLSBVbmRlcmxpbmcgdGVzdGluZyBmdW5jdGlvbiB0byB1c2UuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIGZ1bmN0aW9uUGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgbGlzdHMgb2YgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLmZ1bmN0aW9uUGFyYW1ldGVyc10pKFxuICAgICAgICBgJHtyZXByZXNlbnQoZXhwZWN0ZWQpfSA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwLCAuLi4pYCxcbiAgICAgICAgKCguLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4pID0+XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8XG4gICAgICAgICAgICAgICAgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LCBQcm9taXNlPHZvaWQ+XG4gICAgICAgICAgICA+KGV4cGVjdChjYWxsYmFjayguLi5wYXJhbWV0ZXJzKSkucmVzb2x2ZXMsIGV4cGVjdGVkLCBmYWxzZSlcbiAgICAgICAgKVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIGZ1bmN0aW9uUGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgbGlzdHMgb2YgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hQcm9taXNlQWdhaW5zdFNhbWVFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5vbmx5LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5mdW5jdGlvblBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uLnNraXAgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0ICh2YXJpb3VzIGxpc3Qgb2YgZnVuY3Rpb24gcGFyYW1ldGVycykgYWdhaW5zdCBzYW1lXG4gKiBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSB0ZXN0ZXIgLSBVbmRlcmxpbmcgdGVzdGluZyBmdW5jdGlvbiB0byB1c2UuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIGZ1bmN0aW9uUGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgbGlzdHMgb2YgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXSkoXG4gICAgICAgIGAke3JlcHJlc2VudChleHBlY3RlZCl9ID09PSAke2Z1bmN0aW9uTmFtZX0oJXAsIC4uLilgLFxuICAgICAgICAoKC4uLnBhcmFtZXRlcnM6IFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPik6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxFcnJvciwgUHJvbWlzZTx2b2lkPj4oXG4gICAgICAgICAgICAgICAgZXhwZWN0KGNhbGxiYWNrKC4uLnBhcmFtZXRlcnMpKS5yZWplY3RzLCBleHBlY3RlZCwgZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIGZ1bmN0aW9uUGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgbGlzdHMgb2YgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuXG4gKiBmdW5jdGlvbiBhZ2Fpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogRXJyb3IgfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uQWdhaW5zdFNhbWVFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uQWdhaW5zdFNhbWVFeHBlY3RhdGlvbi5vbmx5ID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uQWdhaW5zdFNhbWVFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxuZXhwb3J0IGRlZmF1bHQgdGVzdEVhY2hcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0EsWUFBWTs7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFhQSxTQUFRLE1BQU0sRUFBRSxJQUFJLFFBQU8sZUFBZTtBQUUxQyxTQUFRLFNBQVM7QUFDakI7QUFDQSxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztBQUNoRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxNQUFNLGtCQUFrQixHQUFHLENBRzFCLFdBQXNDLEVBQ3RDLFFBQTJCLEVBQzNCLElBQUksR0FBRyxJQUFJLEtBQ0Y7RUFDYixNQUFNLE1B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