clientnode 4.0.1427 → 4.0.1429

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 (143) hide show
  1. package/dist/Lock.js +100 -1
  2. package/dist/Logger.js +185 -1
  3. package/dist/Semaphore.js +65 -1
  4. package/dist/array.js +452 -1
  5. package/dist/cli.js +51 -1
  6. package/dist/constants.js +126 -1
  7. package/dist/context.js +40 -1
  8. package/dist/cookie.js +84 -1
  9. package/dist/data-transfer.js +216 -1
  10. package/dist/datetime.js +282 -1
  11. package/dist/domNode.js +331 -1
  12. package/dist/expression/evaluators.js +273 -1
  13. package/dist/expression/helper.js +97 -1
  14. package/dist/expression/index.js +26 -1
  15. package/dist/expression/indicator-functions.js +37 -1
  16. package/dist/expression/type.js +20 -0
  17. package/dist/filesystem.js +410 -1
  18. package/dist/function.js +75 -1
  19. package/dist/index.js +43 -1
  20. package/dist/indicators.js +121 -1
  21. package/dist/number.js +61 -1
  22. package/dist/object.js +934 -1
  23. package/dist/process.js +69 -1
  24. package/dist/property-types.js +115 -1
  25. package/dist/require.js +82 -1
  26. package/dist/scope.js +85 -1
  27. package/dist/string.js +806 -1
  28. package/dist/test-helper.js +341 -1
  29. package/dist/type.js +21 -1
  30. package/dist/utility.js +139 -1
  31. package/package.json +23 -21
  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 -1
  37. package/dist/bundle/Logger.js +0 -1
  38. package/dist/bundle/Semaphore.js +0 -1
  39. package/dist/bundle/array.js +0 -1
  40. package/dist/bundle/cli.js +0 -1
  41. package/dist/bundle/constants.js +0 -1
  42. package/dist/bundle/context.js +0 -1
  43. package/dist/bundle/cookie.js +0 -1
  44. package/dist/bundle/data-transfer.js +0 -1
  45. package/dist/bundle/datetime.js +0 -1
  46. package/dist/bundle/domNode.js +0 -1
  47. package/dist/bundle/expression/evaluators.js +0 -1
  48. package/dist/bundle/expression/helper.js +0 -1
  49. package/dist/bundle/expression/index.js +0 -1
  50. package/dist/bundle/expression/indicator-functions.js +0 -1
  51. package/dist/bundle/expression/types.js +0 -1
  52. package/dist/bundle/filesystem.js +0 -1
  53. package/dist/bundle/function.js +0 -1
  54. package/dist/bundle/index.js +0 -1
  55. package/dist/bundle/indicators.js +0 -1
  56. package/dist/bundle/number.js +0 -1
  57. package/dist/bundle/object.js +0 -1
  58. package/dist/bundle/process.js +0 -1
  59. package/dist/bundle/property-types.js +0 -1
  60. package/dist/bundle/require.js +0 -1
  61. package/dist/bundle/scope.js +0 -1
  62. package/dist/bundle/string.js +0 -1
  63. package/dist/bundle/test-helper.js +0 -1
  64. package/dist/bundle/type.js +0 -1
  65. package/dist/bundle/utility.js +0 -1
  66. package/dist/cli.d.ts +0 -31
  67. package/dist/compatible/Lock.js +0 -1
  68. package/dist/compatible/Logger.js +0 -1
  69. package/dist/compatible/Semaphore.js +0 -1
  70. package/dist/compatible/array.js +0 -1
  71. package/dist/compatible/cli.js +0 -1
  72. package/dist/compatible/constants.js +0 -1
  73. package/dist/compatible/context.js +0 -1
  74. package/dist/compatible/cookie.js +0 -1
  75. package/dist/compatible/data-transfer.js +0 -1
  76. package/dist/compatible/datetime.js +0 -1
  77. package/dist/compatible/domNode.js +0 -1
  78. package/dist/compatible/expression/evaluators.js +0 -1
  79. package/dist/compatible/expression/helper.js +0 -1
  80. package/dist/compatible/expression/index.js +0 -1
  81. package/dist/compatible/expression/indicator-functions.js +0 -1
  82. package/dist/compatible/expression/types.js +0 -1
  83. package/dist/compatible/filesystem.js +0 -1
  84. package/dist/compatible/function.js +0 -1
  85. package/dist/compatible/index.js +0 -1
  86. package/dist/compatible/indicators.js +0 -1
  87. package/dist/compatible/number.js +0 -1
  88. package/dist/compatible/object.js +0 -1
  89. package/dist/compatible/process.js +0 -1
  90. package/dist/compatible/property-types.js +0 -1
  91. package/dist/compatible/require.js +0 -1
  92. package/dist/compatible/scope.js +0 -1
  93. package/dist/compatible/string.js +0 -1
  94. package/dist/compatible/test-helper.js +0 -1
  95. package/dist/compatible/type.js +0 -1
  96. package/dist/compatible/utility.js +0 -1
  97. package/dist/constants.d.ts +0 -99
  98. package/dist/context.d.ts +0 -9
  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/types.d.ts +0 -70
  108. package/dist/expression/types.js +0 -1
  109. package/dist/filesystem.d.ts +0 -138
  110. package/dist/function.d.ts +0 -20
  111. package/dist/index.d.ts +0 -23
  112. package/dist/indicators.d.ts +0 -68
  113. package/dist/number.d.ts +0 -35
  114. package/dist/object.d.ts +0 -213
  115. package/dist/process.d.ts +0 -22
  116. package/dist/property-types.d.ts +0 -460
  117. package/dist/require.d.ts +0 -6
  118. package/dist/scope.d.ts +0 -44
  119. package/dist/string.d.ts +0 -299
  120. package/dist/test/Lock.d.ts +0 -1
  121. package/dist/test/Logger.d.ts +0 -1
  122. package/dist/test/Semaphore.d.ts +0 -1
  123. package/dist/test/array.d.ts +0 -1
  124. package/dist/test/cookie.d.ts +0 -1
  125. package/dist/test/data-transfer.d.ts +0 -1
  126. package/dist/test/datetime.d.ts +0 -1
  127. package/dist/test/domNode.d.ts +0 -1
  128. package/dist/test/expression/evaluators.d.ts +0 -1
  129. package/dist/test/expression/helper.d.ts +0 -1
  130. package/dist/test/expression/indicator-functions.d.ts +0 -1
  131. package/dist/test/filesystem.d.ts +0 -1
  132. package/dist/test/function.d.ts +0 -1
  133. package/dist/test/indicators.d.ts +0 -1
  134. package/dist/test/number.d.ts +0 -1
  135. package/dist/test/object.d.ts +0 -1
  136. package/dist/test/process.d.ts +0 -1
  137. package/dist/test/property-types.d.ts +0 -1
  138. package/dist/test/scope.d.ts +0 -1
  139. package/dist/test/string.d.ts +0 -1
  140. package/dist/test/utility.d.ts +0 -1
  141. package/dist/test-helper.d.ts +0 -143
  142. package/dist/type.d.ts +0 -211
  143. package/dist/utility.d.ts +0 -44
@@ -1 +1,341 @@
1
- "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter(function(path){return eval("require.main.paths").includes(path)})))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("@jest/globals"),require("@babel/runtime/helpers/extends"));else if("function"==typeof define&&define.amd)define(["@jest/globals","@babel/runtime/helpers/extends"],t);else{var r="object"==typeof exports?t(require("@jest/globals"),require("@babel/runtime/helpers/extends")):t(e["@jest/globals"],e["@babel/runtime/helpers/extends"]);for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(this,function(__WEBPACK_EXTERNAL_MODULE__37__,__WEBPACK_EXTERNAL_MODULE__3__){return function(){var __webpack_modules__={0:function(e,t,r){r.d(t,{CLASS_TO_TYPE_MAPPING:function(){return n}});Symbol.for("clientnodeValue"),Symbol.for("clientnodeIgnoreNullAndUndefined");var n={"[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"};Object.prototype},4:function(e,t,r){r.d(t,{isFunction:function(){return _},isMap:function(){return i},isNumeric:function(){return a},isSet:function(){return o}});var n=r(2);var a=function(e){var t=(0,n.determineType)(e);return["number","string"].includes(t)&&!isNaN(e-parseFloat(e))},o=function(e){return"set"===(0,n.determineType)(e)},i=function(e){return"map"===(0,n.determineType)(e)},_=function(e){return Boolean(e)&&["[object AsyncFunction]","[object Function]"].includes({}.toString.call(e))}},2:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){var _extends,VALUE_COPY_SYMBOL,IGNORE_NULL_AND_UNDEFINED_SYMBOL,isMap,isSet,isObject,isPlainObject,isFunction,isProxy,isNotANumber,evaluate,escapeRegularExpressions;__webpack_require__.d(__webpack_exports__,{determineType:function(){return determineType},represent:function(){return _represent}});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(3),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_constants__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),_indicators__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(4);function _createForOfIteratorHelperLoose(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=_unsupportedIterableToArray(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var _addDynamicGetterAndSetter=function(e,t,r,n,a,o){if(void 0===t&&(t=null),void 0===r&&(r=null),void 0===n&&(n={}),void 0===a&&(a=!0),void 0===o&&(o=[Object]),a&&"object"==typeof e)if(Array.isArray(e))for(var i,_=0,s=_createForOfIteratorHelperLoose(e);!(i=s()).done;){var c=i.value;e[_]=_addDynamicGetterAndSetter(c,t,r,n,a),_+=1}else if(isMap(e))for(var l,u=_createForOfIteratorHelperLoose(e);!(l=u()).done;){var f=l.value,p=f[0],v=f[1];e.set(p,_addDynamicGetterAndSetter(v,t,r,n,a))}else if(isSet(e)){for(var d,E=[],y=_createForOfIteratorHelperLoose(e);!(d=y()).done;){var g=d.value;e.delete(g),E.push(_addDynamicGetterAndSetter(g,t,r,n,a))}for(var O=0,b=E;O<b.length;O++){var h=b[O];e.add(h)}}else if(null!==e)for(var P=0,m=Object.entries(e);P<m.length;P++){var A=m[P],j=A[0],M=A[1];e[j]=_addDynamicGetterAndSetter(M,t,r,n,a)}if(t||r)for(var x,S,D=function(){var a=S.value;if(isObject(e)&&e instanceof a){var o=getProxyHandler(e,n),i=getProxyHandler(e,n);t&&(i.get=function(r,n){return"__target__"===n?e:"__revoke__"===n?function(){return c(),e}:"function"==typeof e[n]?e[n]:t(o.get(s,n),n,e)}),r&&(i.set=function(t,n,a){return o.set(s,n,r(n,a,e))});var _=Proxy.revocable({},i),s=_.proxy,c=_.revoke;return{v:s}}},T=_createForOfIteratorHelperLoose(o);!(S=T()).done;)if(x=D())return x.v;return e},convertCircularObjectToJSON=function(e,t,r){void 0===t&&(t=function(e){return null!=e?e:"__circularReference__"}),void 0===r&&(r=0);var n=new Map;return function(e){var a=function(e,r){if(isObject(r)){var o,i;if(n.has(r))return t(null!==(o=n.get(r))&&void 0!==o?o:null,e,r,n);if(n.set(r,null),Array.isArray(r)){i=[];for(var _,s=_createForOfIteratorHelperLoose(r);!(_=s()).done;){var c=_.value;i.push(a(null,c))}}else{i={};for(var l=0,u=Object.entries(r);l<u.length;l++){var f=u[l],p=f[0],v=f[1];i[p]=a(p,v)}}return n.set(r,i),i}return r};return JSON.stringify(e,a,r)}(e)},_convertMapToPlainObject=function(e,t){if(void 0===t&&(t=!0),"object"==typeof e){if(isMap(e)){for(var r,n={},a=_createForOfIteratorHelperLoose(e);!(r=a()).done;){var o=r.value,i=o[0],_=o[1];t&&(_=_convertMapToPlainObject(_,t)),["number","string"].includes(typeof i)&&(n[String(i)]=_)}return n}if(t)if(isPlainObject(e))for(var s=0,c=Object.entries(e);s<c.length;s++){var l=c[s],u=l[0],f=l[1];e[u]=_convertMapToPlainObject(f,t)}else if(Array.isArray(e))for(var p=0,v=0,d=e;v<d.length;v++){var E=d[v];e[p]=_convertMapToPlainObject(E,t),p+=1}else if(isSet(e)){for(var y,g=[],O=_createForOfIteratorHelperLoose(e);!(y=O()).done;){var b=y.value;e.delete(b),g.push(_convertMapToPlainObject(b,t))}for(var h=0,P=g;h<P.length;h++){var m=P[h];e.add(m)}}}return e},_convertPlainObjectToMap=function(e,t){if(void 0===t&&(t=!0),"object"==typeof e){if(isPlainObject(e)){for(var r=new Map,n=0,a=Object.entries(e);n<a.length;n++){var o=a[n],i=o[0],_=o[1];t&&(e[i]=_convertPlainObjectToMap(_,t)),r.set(i,e[i])}return r}if(t)if(Array.isArray(e))for(var s=0,c=0,l=e;c<l.length;c++){var u=l[c];e[s]=_convertPlainObjectToMap(u,t),s+=1}else if(isMap(e))for(var f,p=_createForOfIteratorHelperLoose(e);!(f=p()).done;){var v=f.value,d=v[0],E=v[1];e.set(d,_convertPlainObjectToMap(E,t))}else if(isSet(e)){for(var y,g=[],O=_createForOfIteratorHelperLoose(e);!(y=O()).done;){var b=y.value;e.delete(b),g.push(_convertPlainObjectToMap(b,t))}for(var h=0,P=g;h<P.length;h++){var m=P[h];e.add(m)}}}return e},_convertSubstringInPlainObject=function(e,t,r){for(var n=0,a=Object.entries(e);n<a.length;n++){var o=a[n],i=o[0],_=o[1];isPlainObject(_)?e[i]=_convertSubstringInPlainObject(_,t,r):"string"==typeof _&&(e[i]=_.replace(t,r))}return e},_copy=function(e,t,r,n,a,o,i,_){if(void 0===t&&(t=!1),void 0===r&&(r=-1),void 0===n&&(n=VALUE_COPY_SYMBOL),void 0===a&&(a=null),void 0===o&&(o=!1),void 0===i&&(i=[]),void 0===_&&(_=0),isObject(e)){if(!a){if(Array.isArray(e))return _copy(e,t,r,n,[],o,i,_);if(e instanceof Map)return _copy(e,t,r,n,new Map,o,i,_);if(e instanceof Set)return _copy(e,t,r,n,new Set,o,i,_);if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){var s=/[^/]*$/.exec(e.toString());return(a=new RegExp(e.source,s?s[0]:void 0)).lastIndex=e.lastIndex,a}return"undefined"!=typeof Blob&&e instanceof Blob?t?e.slice(0,e.size,e.type):e:_copy(e,t,r,n,{},o,i,_)}if(e===a)throw new Error("Can't copy because source and destination are identical.");if(!o&&![void 0,null].includes(e)){var c=i.indexOf(e);if(-1!==c)return i[c];i.push(e)}var l=function(e){if(-1!==r&&r<_+1)return n===VALUE_COPY_SYMBOL?e:n;var a=_copy(e,t,r,n,null,o,i,_+1);return o||[void 0,null].includes(e)||"object"!=typeof e||i.push(e),a};if(Array.isArray(e))for(var u,f=_createForOfIteratorHelperLoose(e);!(u=f()).done;){var p=u.value;a.push(l(p))}else if(e instanceof Map)for(var v,d=_createForOfIteratorHelperLoose(e);!(v=d()).done;){var E=v.value,y=E[0],g=E[1];a.set(y,l(g))}else if(e instanceof Set)for(var O,b=_createForOfIteratorHelperLoose(e);!(O=b()).done;){var h=O.value;a.add(l(h))}else for(var P=0,m=Object.entries(e);P<m.length;P++){var A=m[P],j=A[0],M=A[1];try{a[j]=l(M)}catch(e){throw new Error('Failed to copy property value object "'+j+'": '+_represent(e),{cause:e})}}}return a||e},determineType=function(e){if([null,void 0].includes(e))return String(e);var t=typeof e;if(["function","object"].includes(t)&&"toString"in e){var r=Object.prototype.toString.call(e);if(Object.prototype.hasOwnProperty.call(_constants__WEBPACK_IMPORTED_MODULE_1__.CLASS_TO_TYPE_MAPPING,r))return _constants__WEBPACK_IMPORTED_MODULE_1__.CLASS_TO_TYPE_MAPPING[r]}return t},_equals=function equals(firstValue,secondValue,givenOptions){void 0===givenOptions&&(givenOptions={});var options=_extends({compareBlobs:!1,deep:-1,exceptionPrefixes:[],ignoreFunctions:!0,properties:null,returnReasonIfNotEqual:!1},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&&"undefined"!==eval("typeof Buffer")&&Object.prototype.hasOwnProperty.call(eval("Buffer"),"isBuffer")&&firstValue instanceof eval("Buffer")&&secondValue instanceof eval("Buffer")&&firstValue.toString("base64")===secondValue.toString("base64"))return!0;if(options.compareBlobs&&"undefined"!=typeof Blob&&firstValue instanceof Blob&&secondValue instanceof Blob)return new Promise(function(e){for(var t=[],r=0,n=[firstValue,secondValue];r<n.length;r++){var a=n[r],o=new FileReader;o.onload=function(r){null===r.target?t.push(null):t.push(r.target.result),2===t.length&&(t[0]===t[1]?e(!0):e(!!options.returnReasonIfNotEqual&&">>> Blob("+_represent(t[0])+") !== Blob("+_represent(t[1])+")"))},o.readAsDataURL(a)}});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){for(var promises=[],_i11=0,_arr4=[[firstValue,secondValue],[secondValue,firstValue]];_i11<_arr4.length;_i11++){var _arr4$_i=_arr4[_i11],first=_arr4$_i[0],second=_arr4$_i[1],firstIsArray=Array.isArray(first);if(firstIsArray&&(!Array.isArray(second)||first.length!==second.length))return!!options.returnReasonIfNotEqual&&".length";var firstIsMap=isMap(first);if(firstIsMap&&(!isMap(second)||first.size!==second.size))return!!options.returnReasonIfNotEqual&&".size";var firstIsSet=isSet(first);if(firstIsSet&&(!isSet(second)||first.size!==second.size))return!!options.returnReasonIfNotEqual&&".size";if(firstIsArray){for(var index=0,_loop2=function(){var e=_arr5[_i12];if(0!==options.deep){var t=_equals(e,second[index],_extends({},options,{deep:options.deep-1}));if(!t)return{v:!1};var r=index,n=function(e){var t;return"string"==typeof e?"["+String(r)+"]"+(null!==(t={"[":"",">":" "}[e[0]])&&void 0!==t?t:".")+e:e};if(Object.prototype.hasOwnProperty.call(t,"then")&&promises.push(t.then(n)),"string"==typeof t)return{v:n(t)}}index+=1},_ret2,_i12=0,_arr5=first;_i12<_arr5.length;_i12++)if(_ret2=_loop2(),_ret2)return _ret2.v}else if(firstIsMap){for(var _loop3=function(){var e=_step11.value,t=e[0],r=e[1];if(0!==options.deep){var n=_equals(r,second.get(t),_extends({},options,{deep:options.deep-1}));if(!n)return{v:!1};var a=function(e){var r;return"string"==typeof e?"get("+_represent(t)+")"+(null!==(r={"[":"",">":" "}[e[0]])&&void 0!==r?r:".")+e:e};if(Object.prototype.hasOwnProperty.call(n,"then")&&promises.push(n.then(a)),"string"==typeof n)return{v:a(n)}}},_ret3,_iterator11=_createForOfIteratorHelperLoose(first),_step11;!(_step11=_iterator11()).done;)if(_ret3=_loop3(),_ret3)return _ret3.v}else if(firstIsSet){for(var _loop4=function(){var e=_step12.value;if(0!==options.deep){for(var t,r=!1,n=[],a=_createForOfIteratorHelperLoose(second);!(t=a()).done;){var o=t.value,i=_equals(e,o,_extends({},options,{deep:options.deep-1}));if("boolean"==typeof i){if(i){r=!0;break}}else n.push(i)}var _=function(t){return!!t||!!options.returnReasonIfNotEqual&&">>> {-> "+_represent(e)+" not found}"};return r?0:(n.length&&promises.push(new Promise(function(e){Promise.all(n).then(function(t){e(_(t.some(function(e){return e})))},function(){})})),{v:_(!1)})}},_ret4,_iterator12=_createForOfIteratorHelperLoose(first),_step12;!(_step12=_iterator12()).done;)if(_ret4=_loop4(),0!==_ret4&&_ret4)return _ret4.v}else for(var _loop5=function(){var e=_Object$entries7[_i13],t=e[0],r=e[1];if(options.properties&&!options.properties.includes(t))return 0;for(var n,a=!1,o=_createForOfIteratorHelperLoose(options.exceptionPrefixes);!(n=o()).done;){var i=n.value;if(t.startsWith(i)){a=!0;break}}if(a)return 0;if(0!==options.deep){var _=_equals(r,second[t],_extends({},options,{deep:options.deep-1}));if(!_)return{v:!1};var s=function(e){var r;return"string"==typeof e?t+(null!==(r={"[":"",">":" "}[e[0]])&&void 0!==r?r:".")+e:e};if(Object.prototype.hasOwnProperty.call(_,"then")&&promises.push(_.then(s)),"string"==typeof _)return{v:s(_)}}},_ret5,_i13=0,_Object$entries7=Object.entries(first);_i13<_Object$entries7.length&&(_ret5=_loop5(),0!==_ret5);_i13++)if(_ret5)return _ret5.v}return!promises.length||new Promise(function(e){Promise.all(promises).then(function(t){for(var r,n=_createForOfIteratorHelperLoose(t);!(r=n()).done;){var a=r.value;if(!a||"string"==typeof a){e(a);break}}e(!0)},function(){})})}return!!options.returnReasonIfNotEqual&&">>> "+_represent(firstValue)+" !== "+_represent(secondValue)},evaluateDynamicData=function(e,t,r,n,a){if(void 0===t&&(t={}),void 0===r&&(r="self"),void 0===n&&(n="__evaluate__"),void 0===a&&(a="__execute__"),"object"!=typeof e||null===e)return e;r in t||(t[r]=e);var o=function(e,r){void 0===r&&(r=n);var o=evaluate(e,t,r===a);if(o.error)throw new Error(o.error);return o.result},i=function(e){if("object"!=typeof e||null===e||"undefined"==typeof Proxy)return e;for(var t=0,r=Object.entries(e);t<r.length;t++){var s=r[t],c=s[0],l=s[1];if("__target__"!==c&&isObject(l)){var u=l;if(i(u),Object.prototype.hasOwnProperty.call(u,n)||Object.prototype.hasOwnProperty.call(u,a)){var f=u;e[c]=new Proxy(u,{get:function(e,t){if("__target__"===t)return e;if("hasOwnProperty"===t)return e[t];for(var r=0,i=[n,a];r<i.length;r++){var s=i[r];if(t===s&&"string"==typeof e[t])return _(o(e[t],s))}var c=_(e);if("toString"===t){var l=o(c);return l[t].bind(l)}if("string"!=typeof t){var u,f=o(c);return null!=(u=f[t])&&u.bind?f[t].bind(f):f[t]}for(var p=0,v=[n,a];p<v.length;p++){var d=v[p];if(Object.prototype.hasOwnProperty.call(e,d))return o(c,d)[t]}return c[t]},ownKeys:function(e){for(var t=0,r=[n,a];t<r.length;t++){var i=r[t];if(Object.prototype.hasOwnProperty.call(e,i))return Object.getOwnPropertyNames(_(o(e[i],i)))}return Object.getOwnPropertyNames(e)}}),e[c].__target__||(e[c].__target__=f)}}}return e},_=function(e){if(isObject(e)){if(isProxy(e)){for(var t=0,r=[n,a];t<r.length;t++){var i=r[t];if(Object.prototype.hasOwnProperty.call(e,i))return e[i]}e=e.__target__}for(var s=0,c=Object.entries(e);s<c.length;s++){var l=c[s],u=l[0],f=l[1];if([n,a].includes(u))return"undefined"==typeof Proxy?_(o(f)):f;e[u]=_(f)}}return e};t.resolve=_;var s=function(e){if(isObject(e))for(var t=0,r=Object.entries(e);t<r.length;t++){var n=r[t],a=n[0],o=n[1];if("__target__"!==a&&null!==o&&["function","undefined"].includes(typeof o)){var i=o.__target__;void 0!==i&&(e[a]=i),s(o)}}return e};return Object.prototype.hasOwnProperty.call(e,n)?o(e[n]):Object.prototype.hasOwnProperty.call(e,a)?o(e[a],a):s(_(i(e)))},_removeKeysInEvaluation=function(e,t){void 0===t&&(t=["__evaluate__","__execute__"]);for(var r=0,n=Object.entries(e);r<n.length;r++){var a=n[r],o=a[0],i=a[1];!t.includes(o)&&t.some(function(t){return Object.prototype.hasOwnProperty.call(e,t)})?delete e[o]:isPlainObject(i)&&_removeKeysInEvaluation(i,t)}return e},_extend=function(e,t){for(var r=!1,n=arguments.length,a=new Array(n>2?n-2:0),o=2;o<n;o++)a[o-2]=arguments[o];var i,_=a;e===IGNORE_NULL_AND_UNDEFINED_SYMBOL||"boolean"==typeof e?(r=e,i=t):(i=e,isObject(t)?_=[t].concat(_):void 0!==t&&(i=t));for(var s,c=function(e,t){return t===e?e:r&&t&&(isPlainObject(t)||isMap(t))?(n=isMap(t)?e&&isMap(e)?e:new Map:e&&isPlainObject(e)?e:{},_extend(r,n,t)):t;var n},l=_createForOfIteratorHelperLoose(_);!(s=l()).done;){var u=s.value,f=typeof i,p=typeof u;if(isMap(i)&&(f+=" Map"),isMap(u)&&(p+=" Map"),f===p&&i!==u)if(isMap(i)&&isMap(u))for(var v,d=_createForOfIteratorHelperLoose(u);!(v=d()).done;){var E=v.value,y=E[0],g=E[1];i.set(y,c(i.get(y),g))}else if(!isObject(i)||Array.isArray(i)||"undefined"!=typeof Blob&&i instanceof Blob||!isObject(u)||Array.isArray(u)||"undefined"!=typeof Blob&&u instanceof Blob)i=u;else for(var O=0,b=Object.entries(u);O<b.length;O++){var h=b[O],P=h[0],m=h[1];r===IGNORE_NULL_AND_UNDEFINED_SYMBOL&&[null,void 0].includes(m)||(i[P]=c(i[P],m))}else i=u}return i},getProxyHandler=function(e,t){return void 0===t&&(t={}),t=_extends({delete:"[]",get:"[]",has:"[]",set:"[]"},t),{deleteProperty:function(r,n){return"[]"!==t.delete||"string"!=typeof n?e[t.delete](n):(delete e[n],!0)},get:function(r,n){return"[]"===t.get&&"string"==typeof n?e[n]:e[t.get](n)},has:function(r,n){return"[]"===t.has?n in e:e[t.has](n)},set:function(r,n,a){return"[]"!==t.set||"string"!=typeof n?e[t.set](n,a):(e[n]=a,!0)}}},_mask=function(e,t){if(!0===(t=_extends({exclude:!1,include:!0},t)).exclude||Array.isArray(t.exclude)&&0===t.exclude.length||!1===t.include||"object"!=typeof e)return{};var r=Array.isArray(t.exclude)?t.exclude.reduce(function(e,t){var r;return _extends({},e,((r={})[t]=!0,r))},{}):t.exclude,n=Array.isArray(t.include)?t.include.reduce(function(e,t){var r;return _extends({},e,((r={})[t]=!0,r))},{}):t.include,a={};if(isPlainObject(n))for(var o=0,i=Object.entries(n);o<i.length;o++){var _=i[o],s=_[0],c=_[1];Object.prototype.hasOwnProperty.call(e,s)&&(!0===c?a[s]=e[s]:(isPlainObject(c)||Array.isArray(c)&&c.length)&&"object"==typeof e[s]&&(a[s]=_mask(e[s],{include:c})))}else a=e;if(isPlainObject(r)){for(var l=!1,u=_extends({},a),f=0,p=Object.entries(r);f<p.length;f++){var v=p[f],d=v[0],E=v[1];if(Object.prototype.hasOwnProperty.call(u,d))if(!0===E)l=!0,delete u[d];else if((isPlainObject(E)||Array.isArray(E)&&E.length)&&"object"==typeof u[d]){var y=u[d];u[d]=_mask(u[d],{exclude:E}),u[d]!==y&&(l=!0)}}l&&(a=u)}return a},_modifyObject=function(e,t,r,n,a,o,i,_,s){if(void 0===r&&(r="__remove__"),void 0===n&&(n="__prepend__"),void 0===a&&(a="__append__"),void 0===o&&(o="__"),void 0===i&&(i="__"),void 0===_&&(_=null),void 0===s&&(s=null),isMap(t)&&isMap(e))for(var c,l=_createForOfIteratorHelperLoose(t);!(c=l()).done;){var u=c.value,f=u[0],p=u[1];e.has(f)&&_modifyObject(e.get(f),p,r,n,a,o,i,t,f)}else if(isObject(t)&&isObject(e))for(var v=0,d=Object.entries(t);v<d.length;v++){var E=d[v],y=E[0],g=E[1],O=NaN;if(Array.isArray(e)&&y.startsWith(o)&&y.endsWith(i)&&((O=parseInt(y.substring(o.length,y.length-i.length),10))<0||O>=e.length)&&(O=NaN),[r,n,a].includes(y)||!isNaN(O)){if(Array.isArray(e))if(y===r)for(var b,h=_createForOfIteratorHelperLoose([].concat(g));!(b=h()).done;){var P=b.value;"string"==typeof P&&P.startsWith(o)&&P.endsWith(i)?e.splice(parseInt(P.substring(o.length,P.length-i.length),10),1):e.includes(P)?e.splice(e.indexOf(P),1):"number"==typeof P&&P<e.length&&e.splice(P,1)}else y===a?e=e.concat(g):y===n?e=[].concat(g).concat(e):isObject(e[O])&&isObject(g)?_extend(!0,_modifyObject(e[O],g,r,n,a,o,i),e[O],g):e[O]=g;else if(y===r)for(var m,A=_createForOfIteratorHelperLoose([].concat(g));!(m=A()).done;){var j=m.value;"string"==typeof j&&Object.prototype.hasOwnProperty.call(e,j)&&delete e[j]}delete t[y],_&&"string"==typeof s&&delete _[s]}else null!==e&&Object.prototype.hasOwnProperty.call(e,y)&&(e[y]=_modifyObject(e[y],g,r,n,a,o,i,t,y))}return e},_removeKeyPrefixes=function(e,t){void 0===t&&(t="#");var r=[].concat(t);if(Array.isArray(e))for(var n,a=0,o=_createForOfIteratorHelperLoose(e.slice());!(n=o()).done;){var i=n.value,_=!1;if("string"==typeof i){for(var s,c=_createForOfIteratorHelperLoose(r);!(s=c()).done;){var l=s.value;if(i.startsWith(l+":")){e.splice(a,1),_=!0;break}}if(_)continue}e[a]=_removeKeyPrefixes(i,r),a+=1}else if(isSet(e))for(var u,f=_createForOfIteratorHelperLoose(new Set(e));!(u=f()).done;){var p=u.value,v=!1;if("string"==typeof p){for(var d,E=_createForOfIteratorHelperLoose(r);!(d=E()).done;){var y=d.value;if(p.startsWith(y+":")){e.delete(p),v=!0;break}}if(v)continue}_removeKeyPrefixes(p,r)}else if(isMap(e))for(var g,O=_createForOfIteratorHelperLoose(new Map(e));!(g=O()).done;){var b=g.value,h=b[0],P=b[1],m=!1;if("string"==typeof h){for(var A,j=_createForOfIteratorHelperLoose(r);!(A=j()).done;){var M=A.value,x=escapeRegularExpressions(M);if(new RegExp("^"+x+"[0-9]*$").test(h)){e.delete(h),m=!0;break}}if(m)continue}e.set(h,_removeKeyPrefixes(P,r))}else if(isObject(e))for(var S=0,D=Object.entries(Object.assign({},e));S<D.length;S++){for(var T,I=D[S],L=I[0],w=I[1],R=!1,B=_createForOfIteratorHelperLoose(r);!(T=B()).done;){var U=T.value,N=escapeRegularExpressions(U);if(new RegExp("^"+N+"[0-9]*$").test(L)){delete e[L],R=!0;break}}R||(e[L]=_removeKeyPrefixes(w,r))}return e},_represent=function(e,t,r,n,a,o){if(void 0===t&&(t=30),void 0===r&&(r=" "),void 0===n&&(n=""),void 0===a&&(a="__maximum_number_of_levels_reached__"),void 0===o&&(o=8),0===o)return String(a);if(null===e)return"null";if(void 0===e)return"undefined";if("string"==typeof e)return'"'+e.replace(/\n/g,"\n"+n)+'"';if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isNumeric)(e)||"boolean"==typeof e)return String(e);if(e instanceof Date)return e.toISOString();if(Array.isArray(e)){for(var i,_="[",s=!1,c=1,l=_createForOfIteratorHelperLoose(e);!(i=l()).done;){var u=i.value;if(c>t){_+="\n"+n+"...";break}s&&(_+=","),_+="\n"+n+r+_represent(u,t,r,""+n+r,a,o-1),s=!0,c+=1}return s&&(_+="\n"+n),_+="]"}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isMap)(e)){for(var f,p="",v=!1,d=1,E=_createForOfIteratorHelperLoose(e);!(f=E()).done;){var y=f.value,g=y[0],O=y[1];if(d>t){p+=",\n"+n+"...";break}v&&(p+=",\n"+n+r),p+=_represent(g,t,r,""+n+r,a,o-1)+" -> "+_represent(O,t,r,""+n+r,a,o-1),v=!0,d+=1}return v||(p="EmptyMap"),p}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isSet)(e)){for(var b,h="{",P=!1,m=1,A=_createForOfIteratorHelperLoose(e);!(b=A()).done;){var j=b.value;if(m>t){h+=",\n"+n+"...";break}P&&(h+=","),h+="\n"+n+r+_represent(j,t,r,""+n+r,a,o-1),P=!0,m+=1}return P?h+="\n"+n+"}":h="EmptySet",h}if((0,_indicators__WEBPACK_IMPORTED_MODULE_2__.isFunction)(e))return"__function__";for(var M,x="{",S=!1,D=1,T=_createForOfIteratorHelperLoose(Object.getOwnPropertyNames(e).sort());!(M=T()).done;){var I=M.value;if(D>t){x+=",\n"+n+"...";break}S&&(x+=","),x+="\n"+n+r+I+": "+_represent(e[I],t,r,""+n+r,a,o-1),S=!0,D+=1}return S&&(x+="\n"+n),x+="}"},sort=function(e){var t=[];if(Array.isArray(e))for(var r=0;r<e.length;r++)t.push(r);else if("object"==typeof e)if(isMap(e))for(var n,a=_createForOfIteratorHelperLoose(e);!(n=a()).done;){var o=n.value;t.push(o[0])}else if(null!==e)for(var i=0,_=Object.keys(e);i<_.length;i++){var s=_[i];t.push(s)}return t.sort()},_unwrapProxy=function(e,t){if(void 0===t&&(t=new Set),isObject(e)){if(t.has(e))return e;try{isFunction(e.__revoke__)&&(isProxy(e)&&(e=e.__target__),e.__revoke__())}catch(t){return e}finally{t.add(e)}if(Array.isArray(e))for(var r,n=0,a=_createForOfIteratorHelperLoose(e);!(r=a()).done;){var o=r.value;e[n]=_unwrapProxy(o,t),n+=1}else if(isMap(e))for(var i,_=_createForOfIteratorHelperLoose(e);!(i=_()).done;){var s=i.value,c=s[0],l=s[1];e.set(c,_unwrapProxy(l,t))}else if(isSet(e)){for(var u,f=[],p=_createForOfIteratorHelperLoose(e);!(u=p()).done;){var v=u.value;e.delete(v),f.push(_unwrapProxy(v,t))}for(var d=0,E=f;d<E.length;d++){var y=E[d];e.add(y)}}else for(var g=0,O=Object.entries(e);g<O.length;g++){var b=O[g],h=b[0],P=b[1];e[h]=_unwrapProxy(P,t)}}return e}},3:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__3__},37:function(e){e.exports=__WEBPACK_EXTERNAL_MODULE__37__}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{TEST_DEFINED_SYMBOL:function(){return TEST_DEFINED_SYMBOL},TEST_THROW_SYMBOL:function(){return TEST_THROW_SYMBOL},TEST_UNDEFINED_SYMBOL:function(){return TEST_UNDEFINED_SYMBOL},expectExpectedType:function(){return expectExpectedType},testEach:function(){return testEach},testEachAgainstSameExpectation:function(){return testEachAgainstSameExpectation},testEachPromise:function(){return testEachPromise},testEachPromiseAgainstSameExpectation:function(){return testEachPromiseAgainstSameExpectation},testEachPromiseRejection:function(){return testEachPromiseRejection},testEachPromiseRejectionAgainstSameExpectation:function(){return testEachPromiseRejectionAgainstSameExpectation},testEachSingleParameterAgainstSameExpectation:function(){return testEachSingleParameterAgainstSameExpectation},testEachSingleParameterAgainstSamePromisedExpectation:function(){return testEachSingleParameterAgainstSamePromisedExpectation},testEachSingleParameterAgainstSameRejectedExpectation:function(){return testEachSingleParameterAgainstSameRejectedExpectation}});var _jest_globals__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(37),_jest_globals__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_jest_globals__WEBPACK_IMPORTED_MODULE_0__),_object__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2),TEST_DEFINED_SYMBOL=Symbol.for("clientnodeTestHelperDefined"),TEST_THROW_SYMBOL=Symbol.for("clientnodeTestHelperThrow"),TEST_UNDEFINED_SYMBOL=Symbol.for("clientnodeTestHelperUndefined"),expectExpectedType=function(e,t,r){void 0===r&&(r=!0);var n=r?(0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(e):e;return t===TEST_DEFINED_SYMBOL?n.toBeDefined():t===TEST_THROW_SYMBOL?n.toThrow():t===TEST_UNDEFINED_SYMBOL?n.not.toBeDefined():n.toStrictEqual(t)},_testEach=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];e([].concat(a))("%p === "+t+"(%p, ...)",function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];expectExpectedType(r.apply(void 0,n),e)})},testEach=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t].concat(n))};testEach.only=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t].concat(n))},testEach.skip=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEach.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t].concat(n))};var _testEachPromise=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];e([].concat(a))("%p === "+t+"(%p, ...)",function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r.apply(void 0,n)).resolves,e,!1)})},testEachPromise=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t].concat(n))};testEachPromise.only=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t].concat(n))},testEachPromise.skip=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromise.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t].concat(n))};var _testEachPromiseRejection=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];e([].concat(a))("%p === "+t+"(%p, ...)",function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r.apply(void 0,n)).rejects,e,!1)})},testEachPromiseRejection=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t].concat(n))};testEachPromiseRejection.only=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t].concat(n))},testEachPromiseRejection.skip=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),a=2;a<r;a++)n[a-2]=arguments[a];_testEachPromiseRejection.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t].concat(n))};var _testEachSingleParameterAgainstSameExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p)",function(e){expectExpectedType(n===TEST_THROW_SYMBOL?function(){return r(e)}:r(e),n)})},testEachSingleParameterAgainstSameExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};testEachSingleParameterAgainstSameExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachSingleParameterAgainstSameExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))};var _testEachSingleParameterAgainstSamePromisedExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p)",function(e){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r(e)).resolves,n,!1)})},testEachSingleParameterAgainstSamePromisedExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};testEachSingleParameterAgainstSamePromisedExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachSingleParameterAgainstSamePromisedExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSamePromisedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))};var _testEachSingleParameterAgainstSameRejectedExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p)",function(e){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r(e)).rejects,n,!1)})},testEachSingleParameterAgainstSameRejectedExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};testEachSingleParameterAgainstSameRejectedExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachSingleParameterAgainstSameRejectedExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachSingleParameterAgainstSameRejectedExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))};var _testEachAgainstSameExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p, ...)",function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];expectExpectedType(n===TEST_THROW_SYMBOL?function(){return r.apply(void 0,t)}:r.apply(void 0,t),n)})},testEachAgainstSameExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};testEachAgainstSameExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachAgainstSameExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))};var _testEachPromiseAgainstSameExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p, ...)",function(){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r.apply(void 0,arguments)).resolves,n,!1)})},testEachPromiseAgainstSameExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};testEachPromiseAgainstSameExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachPromiseAgainstSameExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))};var _testEachPromiseRejectionAgainstSameExpectation=function(e,t,r,n){for(var a=arguments.length,o=new Array(a>4?a-4:0),i=4;i<a;i++)o[i-4]=arguments[i];e([].concat(o))((0,_object__WEBPACK_IMPORTED_MODULE_1__.represent)(n)+" === "+t+"(%p, ...)",function(){return expectExpectedType((0,_jest_globals__WEBPACK_IMPORTED_MODULE_0__.expect)(r.apply(void 0,arguments)).rejects,n,!1)})},testEachPromiseRejectionAgainstSameExpectation=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.each,e,t,r].concat(a))};return testEachPromiseRejectionAgainstSameExpectation.only=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.only.each,e,t,r].concat(a))},testEachPromiseRejectionAgainstSameExpectation.skip=function(e,t,r){for(var n=arguments.length,a=new Array(n>3?n-3:0),o=3;o<n;o++)a[o-3]=arguments[o];_testEachPromiseRejectionAgainstSameExpectation.apply(void 0,[_jest_globals__WEBPACK_IMPORTED_MODULE_0__.test.skip.each,e,t,r].concat(a))},__webpack_exports__.default=testEach,__webpack_exports__}()});
1
+ // #!/usr/bin/env babel-node
2
+ // -*- coding: utf-8 -*-
3
+ /** @module testHelper */
4
+ 'use strict';
5
+
6
+ /* !
7
+ region header
8
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
9
+
10
+ License
11
+ -------
12
+
13
+ This library written by Torben Sickert stands under a creative commons
14
+ naming 3.0 unported license.
15
+ See https://creativecommons.org/licenses/by/3.0/deed.de
16
+ endregion
17
+
18
+ generic test boilerplate:
19
+
20
+ test.each([[EXPECTED, ...PARAMETERS], ...])(
21
+ '%p === FUNCTION(...%p)',
22
+ (expected: ReturnType<FUNCTION>, ...parameters: Parameters<FUNCTION>) =>
23
+ expect(FUNCTION(...parameters)).toStrictEqual(expected)
24
+ )
25
+ */
26
+ // region imports
27
+ import { AnyFunction, FirstParameter, FunctionTestTuple, FunctionTestPromiseTuple, FunctionTestPromiseRejectionTuple, TestMatchers as Matchers, TestSymbol, ThenParameter, UnknownFunction } from "./type.js";
28
+ import { expect, test } from '@jest/globals';
29
+ import { represent } from "./object.js";
30
+ // endregion
31
+ export const TEST_DEFINED_SYMBOL = Symbol.for('clientnodeTestHelperDefined');
32
+ export const TEST_THROW_SYMBOL = Symbol.for('clientnodeTestHelperThrow');
33
+ export const TEST_UNDEFINED_SYMBOL = Symbol.for('clientnodeTestHelperUndefined');
34
+ /**
35
+ * Tests given result against given expectations. Respects special symbol
36
+ * values.
37
+ * @param givenResult - Target to compare expectation against.
38
+ * @param expected - Expected result.
39
+ * @param wrap - Indicates whether to wrap with an expect function call.
40
+ * @returns Nothing or a promise resolving to nothing.
41
+ */
42
+ export const expectExpectedType = (givenResult, expected, wrap = true) => {
43
+ const result = wrap ? expect(givenResult) : givenResult;
44
+ if (expected === TEST_DEFINED_SYMBOL) return result.toBeDefined();
45
+ if (expected === TEST_THROW_SYMBOL) return result.toThrow();
46
+ if (expected === TEST_UNDEFINED_SYMBOL) return result.not.toBeDefined();
47
+ return result.toStrictEqual(expected);
48
+ };
49
+ /**
50
+ * Tests each given test set (expected value follows by various list of
51
+ * function parameters). It respects function signature to raise compile time
52
+ * errors if given test set does not match given function signature.
53
+ * @param tester - Underling testing function to use.
54
+ * @param functionName - Function description to test.
55
+ * @param callback - Function reference to test.
56
+ * @param functionTestTuple - Additional arrays of test sets to test given
57
+ * function again.
58
+ */
59
+ const _testEach = (tester, functionName, callback, ...functionTestTuple) => {
60
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => {
61
+ expectExpectedType(callback(...parameters), expected);
62
+ });
63
+ };
64
+ /**
65
+ * Tests each given test set (expected value follows by various list of
66
+ * function parameters). It respects function signature to raise compile time
67
+ * errors if given test set does not match given function signature.
68
+ * @param functionName - Function description to test.
69
+ * @param callback - Function reference to test.
70
+ * @param functionTestTuple - Additional arrays of test sets to test given
71
+ * function again.
72
+ */
73
+ export const testEach = (functionName, callback, ...functionTestTuple) => {
74
+ _testEach(test.each, functionName, callback, ...functionTestTuple);
75
+ };
76
+ testEach.only = (functionName, callback, ...functionTestTuple) => {
77
+ _testEach(test.only.each, functionName, callback, ...functionTestTuple);
78
+ };
79
+ testEach.skip = (functionName, callback, ...functionTestTuple) => {
80
+ _testEach(test.skip.each, functionName, callback, ...functionTestTuple);
81
+ };
82
+ /**
83
+ * Tests each given test set (expected value follows by various list of
84
+ * function parameters). It respects function signature to raise compile time
85
+ * errors if given test set does not match given function signature.
86
+ * @param tester - Underling testing function to use.
87
+ * @param functionName - Function description to test.
88
+ * @param callback - Function reference to test.
89
+ * @param functionTestTuple - Additional arrays of test sets to test given
90
+ * function again.
91
+ */
92
+ const _testEachPromise = (tester, functionName, callback, ...functionTestTuple) => {
93
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => expectExpectedType(expect(callback(...parameters)).resolves, expected, false));
94
+ };
95
+ /**
96
+ * Tests each given test set (expected value follows by various list of
97
+ * function parameters). It respects function signature to raise compile time
98
+ * errors if given test set does not match given function signature.
99
+ * @param functionName - Function description to test.
100
+ * @param callback - Function reference to test.
101
+ * @param functionTestTuple - Additional arrays of test sets to test given
102
+ * function again.
103
+ */
104
+ export const testEachPromise = (functionName, callback, ...functionTestTuple) => {
105
+ _testEachPromise(test.each, functionName, callback, ...functionTestTuple);
106
+ };
107
+ testEachPromise.only = (functionName, callback, ...functionTestTuple) => {
108
+ _testEachPromise(test.only.each, functionName, callback, ...functionTestTuple);
109
+ };
110
+ testEachPromise.skip = (functionName, callback, ...functionTestTuple) => {
111
+ _testEachPromise(test.skip.each, functionName, callback, ...functionTestTuple);
112
+ };
113
+ /**
114
+ * Tests each given test set (expected value follows by various list of
115
+ * function parameters). It respects function signature to raise compile time
116
+ * errors if given test set does not match given function signature.
117
+ * @param tester - Underling testing function to use.
118
+ * @param functionName - Function description to test.
119
+ * @param callback - Function reference to test.
120
+ * @param functionTestTuple - Additional arrays of test sets to test given
121
+ * function again.
122
+ */
123
+ const _testEachPromiseRejection = (tester, functionName, callback, ...functionTestTuple) => {
124
+ tester([...functionTestTuple])(`%p === ${functionName}(%p, ...)`, (expected, ...parameters) => expectExpectedType(expect(callback(...parameters)).rejects, expected, false));
125
+ };
126
+ /**
127
+ * Tests each given test set (expected value follows by various list of
128
+ * function parameters). It respects function signature to raise compile time
129
+ * errors if given test set does not match given function signature.
130
+ * @param functionName - Function description to test.
131
+ * @param callback - Function reference to test.
132
+ * @param functionTestTuple - Additional arrays of test sets to test given
133
+ * function again.
134
+ */
135
+ export const testEachPromiseRejection = (functionName, callback, ...functionTestTuple) => {
136
+ _testEachPromiseRejection(test.each, functionName, callback, ...functionTestTuple);
137
+ };
138
+ testEachPromiseRejection.only = (functionName, callback, ...functionTestTuple) => {
139
+ _testEachPromiseRejection(test.only.each, functionName, callback, ...functionTestTuple);
140
+ };
141
+ testEachPromiseRejection.skip = (functionName, callback, ...functionTestTuple) => {
142
+ _testEachPromiseRejection(test.skip.each, functionName, callback, ...functionTestTuple);
143
+ };
144
+ /**
145
+ * Tests each given single parameter against same given expected value. It
146
+ * respects function signature to raise compile time errors if given test set
147
+ * does not match given function signature.
148
+ * @param tester - Underling testing function to use.
149
+ * @param functionName - Function description to test.
150
+ * @param callback - Function reference to test.
151
+ * @param expected - Value to check each function call return value against.
152
+ * @param parameters - Additional first parameters to test given function with.
153
+ */
154
+ const _testEachSingleParameterAgainstSameExpectation = (tester, functionName, callback, expected, ...parameters) => {
155
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => {
156
+ expectExpectedType(expected === TEST_THROW_SYMBOL ? () => callback(parameter) : callback(parameter), expected);
157
+ });
158
+ };
159
+ /**
160
+ * Tests each given single parameter against same given expected value. It
161
+ * respects function signature to raise compile time errors if given test set
162
+ * does not match given function signature.
163
+ * @param functionName - Function description to test.
164
+ * @param callback - Function reference to test.
165
+ * @param expected - Value to check each function call return value against.
166
+ * @param parameters - Additional first parameters to test given function with.
167
+ */
168
+ export const testEachSingleParameterAgainstSameExpectation = (functionName, callback, expected, ...parameters) => {
169
+ _testEachSingleParameterAgainstSameExpectation(test.each, functionName, callback, expected, ...parameters);
170
+ };
171
+ testEachSingleParameterAgainstSameExpectation.only = (functionName, callback, expected, ...parameters) => {
172
+ _testEachSingleParameterAgainstSameExpectation(test.only.each, functionName, callback, expected, ...parameters);
173
+ };
174
+ testEachSingleParameterAgainstSameExpectation.skip = (functionName, callback, expected, ...parameters) => {
175
+ _testEachSingleParameterAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...parameters);
176
+ };
177
+ /**
178
+ * Tests each given single parameter against same given expected value. It
179
+ * respects function signature to raise compile time errors if given test set
180
+ * does not match given function signature.
181
+ * @param tester - Underling testing function to use.
182
+ * @param functionName - Function description to test.
183
+ * @param callback - Function reference to test.
184
+ * @param expected - Value to check each function call return value against.
185
+ * @param parameters - Additional first parameters to test given function with.
186
+ */
187
+ const _testEachSingleParameterAgainstSamePromisedExpectation = (tester, functionName, callback, expected, ...parameters) => {
188
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => expectExpectedType(expect(callback(parameter)).resolves, expected, false));
189
+ };
190
+ /**
191
+ * Tests each given single parameter against same given expected value. It
192
+ * respects function signature to raise compile time errors if given test set
193
+ * does not match given function signature.
194
+ * @param functionName - Function description to test.
195
+ * @param callback - Function reference to test.
196
+ * @param expected - Value to check each function call return value against.
197
+ * @param parameters - Additional first parameters to test given function with.
198
+ */
199
+ export const testEachSingleParameterAgainstSamePromisedExpectation = (functionName, callback, expected, ...parameters) => {
200
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.each, functionName, callback, expected, ...parameters);
201
+ };
202
+ testEachSingleParameterAgainstSamePromisedExpectation.only = (functionName, callback, expected, ...parameters) => {
203
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.only.each, functionName, callback, expected, ...parameters);
204
+ };
205
+ testEachSingleParameterAgainstSamePromisedExpectation.skip = (functionName, callback, expected, ...parameters) => {
206
+ _testEachSingleParameterAgainstSamePromisedExpectation(test.skip.each, functionName, callback, expected, ...parameters);
207
+ };
208
+ /**
209
+ * Tests each given single parameter against same given expected value. It
210
+ * respects function signature to raise compile time errors if given test set
211
+ * does not match given function signature.
212
+ * @param tester - Underling testing function to use.
213
+ * @param functionName - Function description to test.
214
+ * @param callback - Function reference to test.
215
+ * @param expected - Value to check each function call return value against.
216
+ * @param parameters - Additional first parameters to test given function with.
217
+ */
218
+ const _testEachSingleParameterAgainstSameRejectedExpectation = (tester, functionName, callback, expected, ...parameters) => {
219
+ tester([...parameters])(`${represent(expected)} === ${functionName}(%p)`, parameter => expectExpectedType(expect(callback(parameter)).rejects, expected, false));
220
+ };
221
+ /**
222
+ * Tests each given single parameter against same given expected value. It
223
+ * respects function signature to raise compile time errors if given test set
224
+ * does not match given function signature.
225
+ * @param functionName - Function description to test.
226
+ * @param callback - Function reference to test.
227
+ * @param expected - Value to check each function call return value against.
228
+ * @param parameters - Additional first parameters to test given function with.
229
+ */
230
+ export const testEachSingleParameterAgainstSameRejectedExpectation = (functionName, callback, expected, ...parameters) => {
231
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.each, functionName, callback, expected, ...parameters);
232
+ };
233
+ testEachSingleParameterAgainstSameRejectedExpectation.only = (functionName, callback, expected, ...parameters) => {
234
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.only.each, functionName, callback, expected, ...parameters);
235
+ };
236
+ testEachSingleParameterAgainstSameRejectedExpectation.skip = (functionName, callback, expected, ...parameters) => {
237
+ _testEachSingleParameterAgainstSameRejectedExpectation(test.skip.each, functionName, callback, expected, ...parameters);
238
+ };
239
+ /**
240
+ * Tests each given test set (various list of function parameters) against same
241
+ * given expected value. It respects function signature to raise compile time
242
+ * errors if given test set does not match given function signature.
243
+ * @param tester - Underling testing function to use.
244
+ * @param functionName - Function description to test.
245
+ * @param callback - Function reference to test.
246
+ * @param expected - Value to check each function call return value against.
247
+ * @param functionParameters - Additional lists of parameters to test given
248
+ * function again.
249
+ */
250
+ const _testEachAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
251
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => {
252
+ expectExpectedType(expected === TEST_THROW_SYMBOL ? () => callback(...parameters) : callback(...parameters), expected);
253
+ });
254
+ };
255
+ /**
256
+ * Tests each given test set (various list of function parameters) against same
257
+ * given expected value. It respects function signature to raise compile time
258
+ * errors if given test set does not match given function signature.
259
+ * @param functionName - Function description to test.
260
+ * @param callback - Function reference to test.
261
+ * @param expected - Value to check each function call return value against.
262
+ * @param functionParameters - Additional lists of parameters to test given
263
+ * function again.
264
+ */
265
+ export const testEachAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
266
+ _testEachAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
267
+ };
268
+ testEachAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
269
+ _testEachAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
270
+ };
271
+ testEachAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
272
+ _testEachAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
273
+ };
274
+ /**
275
+ * Tests each given test set (various list of function parameters) against same
276
+ * given expected value. It respects function signature to raise compile time
277
+ * errors if given test set does not match given function signature.
278
+ * @param tester - Underling testing function to use.
279
+ * @param functionName - Function description to test.
280
+ * @param callback - Function reference to test.
281
+ * @param expected - Value to check each function call return value against.
282
+ * @param functionParameters - Additional lists of parameters to test given
283
+ * function again.
284
+ */
285
+ const _testEachPromiseAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
286
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => expectExpectedType(expect(callback(...parameters)).resolves, expected, false));
287
+ };
288
+ /**
289
+ * Tests each given test set (various list of function parameters) against same
290
+ * given expected value. It respects function signature to raise compile time
291
+ * errors if given test set does not match given function signature.
292
+ * @param functionName - Function description to test.
293
+ * @param callback - Function reference to test.
294
+ * @param expected - Value to check each function call return value against.
295
+ * @param functionParameters - Additional lists of parameters to test given
296
+ * function again.
297
+ */
298
+ export const testEachPromiseAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
299
+ _testEachPromiseAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
300
+ };
301
+ testEachPromiseAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
302
+ _testEachPromiseAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
303
+ };
304
+ testEachPromiseAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
305
+ _testEachPromiseAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
306
+ };
307
+ /**
308
+ * Tests each given test set (various list of function parameters) against same
309
+ * given expected value. It respects function signature to raise compile time
310
+ * errors if given test set does not match given function signature.
311
+ * @param tester - Underling testing function to use.
312
+ * @param functionName - Function description to test.
313
+ * @param callback - Function reference to test.
314
+ * @param expected - Value to check each function call return value against.
315
+ * @param functionParameters - Additional lists of parameters to test given
316
+ * function again.
317
+ */
318
+ const _testEachPromiseRejectionAgainstSameExpectation = (tester, functionName, callback, expected, ...functionParameters) => {
319
+ tester([...functionParameters])(`${represent(expected)} === ${functionName}(%p, ...)`, (...parameters) => expectExpectedType(expect(callback(...parameters)).rejects, expected, false));
320
+ };
321
+ /**
322
+ * Tests each given test set (various list of function parameters) against same
323
+ * given expected value. It respects function signature to raise compile time
324
+ * errors if given test set does not match given function signature.
325
+ * @param functionName - Function description to test.
326
+ * @param callback - Function reference to test.
327
+ * @param expected - Value to check each function call return value against.
328
+ * @param functionParameters - Additional lists of parameters to test given
329
+ * function again.
330
+ */
331
+ export const testEachPromiseRejectionAgainstSameExpectation = (functionName, callback, expected, ...functionParameters) => {
332
+ _testEachPromiseRejectionAgainstSameExpectation(test.each, functionName, callback, expected, ...functionParameters);
333
+ };
334
+ testEachPromiseRejectionAgainstSameExpectation.only = (functionName, callback, expected, ...functionParameters) => {
335
+ _testEachPromiseRejectionAgainstSameExpectation(test.only.each, functionName, callback, expected, ...functionParameters);
336
+ };
337
+ testEachPromiseRejectionAgainstSameExpectation.skip = (functionName, callback, expected, ...functionParameters) => {
338
+ _testEachPromiseRejectionAgainstSameExpectation(test.skip.each, functionName, callback, expected, ...functionParameters);
339
+ };
340
+ export default testEach;
341
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3QtaGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vICMhL3Vzci9iaW4vZW52IGJhYmVsLW5vZGVcbi8vIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLVxuLyoqIEBtb2R1bGUgdGVzdEhlbHBlciAqL1xuJ3VzZSBzdHJpY3QnXG4vKiAhXG4gICAgcmVnaW9uIGhlYWRlclxuICAgIENvcHlyaWdodCBUb3JiZW4gU2lja2VydCAoaW5mb1tcIn5hdH5cIl10b3JiZW4ud2Vic2l0ZSkgMTYuMTIuMjAxMlxuXG4gICAgTGljZW5zZVxuICAgIC0tLS0tLS1cblxuICAgIFRoaXMgbGlicmFyeSB3cml0dGVuIGJ5IFRvcmJlbiBTaWNrZXJ0IHN0YW5kcyB1bmRlciBhIGNyZWF0aXZlIGNvbW1vbnNcbiAgICBuYW1pbmcgMy4wIHVucG9ydGVkIGxpY2Vuc2UuXG4gICAgU2VlIGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvZGVlZC5kZVxuICAgIGVuZHJlZ2lvblxuXG4gICAgZ2VuZXJpYyB0ZXN0IGJvaWxlcnBsYXRlOlxuXG4gICAgdGVzdC5lYWNoKFtbRVhQRUNURUQsIC4uLlBBUkFNRVRFUlNdLCAuLi5dKShcbiAgICAgICAgJyVwID09PSBGVU5DVElPTiguLi4lcCknLFxuICAgICAgICAoZXhwZWN0ZWQ6IFJldHVyblR5cGU8RlVOQ1RJT04+LCAuLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZVTkNUSU9OPikgPT5cbiAgICAgICAgICAgIGV4cGVjdChGVU5DVElPTiguLi5wYXJhbWV0ZXJzKSkudG9TdHJpY3RFcXVhbChleHBlY3RlZClcbiAgICApXG4qL1xuLy8gcmVnaW9uIGltcG9ydHNcbmltcG9ydCB7XG4gICAgQW55RnVuY3Rpb24sXG4gICAgRmlyc3RQYXJhbWV0ZXIsXG4gICAgRnVuY3Rpb25UZXN0VHVwbGUsXG4gICAgRnVuY3Rpb25UZXN0UHJvbWlzZVR1cGxlLFxuICAgIEZ1bmN0aW9uVGVzdFByb21pc2VSZWplY3Rpb25UdXBsZSxcbiAgICBUZXN0TWF0Y2hlcnMgYXMgTWF0Y2hlcnMsXG4gICAgVGVzdFN5bWJvbCxcbiAgICBUaGVuUGFyYW1ldGVyLFxuICAgIFVua25vd25GdW5jdGlvblxufSBmcm9tICcuL3R5cGUnXG5cbmltcG9ydCB7ZXhwZWN0LCB0ZXN0fSBmcm9tICdAamVzdC9nbG9iYWxzJ1xuXG5pbXBvcnQge3JlcHJlc2VudH0gZnJvbSAnLi9vYmplY3QnXG4vLyBlbmRyZWdpb25cbmV4cG9ydCBjb25zdCBURVNUX0RFRklORURfU1lNQk9MID0gU3ltYm9sLmZvcignY2xpZW50bm9kZVRlc3RIZWxwZXJEZWZpbmVkJylcbmV4cG9ydCBjb25zdCBURVNUX1RIUk9XX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ2NsaWVudG5vZGVUZXN0SGVscGVyVGhyb3cnKVxuZXhwb3J0IGNvbnN0IFRFU1RfVU5ERUZJTkVEX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ2NsaWVudG5vZGVUZXN0SGVscGVyVW5kZWZpbmVkJylcbi8qKlxuICogVGVzdHMgZ2l2ZW4gcmVzdWx0IGFnYWluc3QgZ2l2ZW4gZXhwZWN0YXRpb25zLiBSZXNwZWN0cyBzcGVjaWFsIHN5bWJvbFxuICogdmFsdWVzLlxuICogQHBhcmFtIGdpdmVuUmVzdWx0IC0gVGFyZ2V0IHRvIGNvbXBhcmUgZXhwZWN0YXRpb24gYWdhaW5zdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIEV4cGVjdGVkIHJlc3VsdC5cbiAqIEBwYXJhbSB3cmFwIC0gSW5kaWNhdGVzIHdoZXRoZXIgdG8gd3JhcCB3aXRoIGFuIGV4cGVjdCBmdW5jdGlvbiBjYWxsLlxuICogQHJldHVybnMgTm90aGluZyBvciBhIHByb21pc2UgcmVzb2x2aW5nIHRvIG5vdGhpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBleHBlY3RFeHBlY3RlZFR5cGUgPSA8XG4gICAgVHlwZSA9IHVua25vd24sIFJlc3VsdCBleHRlbmRzIFByb21pc2U8dm9pZD4gfCB2b2lkID0gdm9pZFxuPihcbiAgICAgICAgZ2l2ZW5SZXN1bHQ6IE1hdGNoZXJzPFJlc3VsdD4gfCBSZXN1bHQsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVHlwZSxcbiAgICAgICAgd3JhcCA9IHRydWVcbiAgICApOiBSZXN1bHQgPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogTWF0Y2hlcnM8UmVzdWx0PiA9IHdyYXAgP1xuICAgICAgICBleHBlY3QoZ2l2ZW5SZXN1bHQgYXMgUmVzdWx0KSBhcyB1bmtub3duIGFzIE1hdGNoZXJzPFJlc3VsdD4gOlxuICAgICAgICBnaXZlblJlc3VsdCBhcyBNYXRjaGVyczxSZXN1bHQ+XG5cbiAgICBpZiAoZXhwZWN0ZWQgPT09IFRFU1RfREVGSU5FRF9TWU1CT0wpXG4gICAgICAgIHJldHVybiByZXN1bHQudG9CZURlZmluZWQoKVxuXG4gICAgaWYgKGV4cGVjdGVkID09PSBURVNUX1RIUk9XX1NZTUJPTClcbiAgICAgICAgcmV0dXJuIHJlc3VsdC50b1Rocm93KClcblxuICAgIGlmIChleHBlY3RlZCA9PT0gVEVTVF9VTkRFRklORURfU1lNQk9MKVxuICAgICAgICByZXR1cm4gcmVzdWx0Lm5vdC50b0JlRGVmaW5lZCgpXG5cbiAgICByZXR1cm4gcmVzdWx0LnRvU3RyaWN0RXF1YWwoZXhwZWN0ZWQpXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKGV4cGVjdGVkIHZhbHVlIGZvbGxvd3MgYnkgdmFyaW91cyBsaXN0IG9mXG4gKiBmdW5jdGlvbiBwYXJhbWV0ZXJzKS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSB0ZXN0ZXIgLSBVbmRlcmxpbmcgdGVzdGluZyBmdW5jdGlvbiB0byB1c2UuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGZ1bmN0aW9uVGVzdFR1cGxlIC0gQWRkaXRpb25hbCBhcnJheXMgb2YgdGVzdCBzZXRzIHRvIHRlc3QgZ2l2ZW5cbiAqIGZ1bmN0aW9uIGFnYWluLlxuICovXG5jb25zdCBfdGVzdEVhY2ggPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4uZnVuY3Rpb25UZXN0VHVwbGVdKShcbiAgICAgICAgYCVwID09PSAke2Z1bmN0aW9uTmFtZX0oJXAsIC4uLilgLFxuICAgICAgICAoKFxuICAgICAgICAgICAgZXhwZWN0ZWQ6IFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPiB8IFRlc3RTeW1ib2wsXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5cbiAgICAgICAgKSA9PiB7XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PihcbiAgICAgICAgICAgICAgICBjYWxsYmFjayguLi5wYXJhbWV0ZXJzKSBhcyBNYXRjaGVyczx2b2lkPiB8IHZvaWQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKGV4cGVjdGVkIHZhbHVlIGZvbGxvd3MgYnkgdmFyaW91cyBsaXN0IG9mXG4gKiBmdW5jdGlvbiBwYXJhbWV0ZXJzKS4gSXQgcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZVxuICogZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0IGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaCh0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIC4uLmZ1bmN0aW9uVGVzdFR1cGxlKVxufVxudGVzdEVhY2gub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaCh0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgLi4uZnVuY3Rpb25UZXN0VHVwbGUpXG59XG50ZXN0RWFjaC5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFR1cGxlPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoKHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZSlcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAoZXhwZWN0ZWQgdmFsdWUgZm9sbG93cyBieSB2YXJpb3VzIGxpc3Qgb2ZcbiAqIGZ1bmN0aW9uIHBhcmFtZXRlcnMpLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFByb21pc2UgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RQcm9taXNlVHVwbGU8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLmZ1bmN0aW9uVGVzdFR1cGxlXSkoXG4gICAgICAgIGAlcCA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwLCAuLi4pYCxcbiAgICAgICAgKChcbiAgICAgICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAgICAgLi4ucGFyYW1ldGVyczogUGFyYW1ldGVyczxGdW5jdGlvblR5cGU+XG4gICAgICAgICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxcbiAgICAgICAgICAgICAgICBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sIFByb21pc2U8dm9pZD5cbiAgICAgICAgICAgID4oZXhwZWN0KGNhbGxiYWNrKC4uLnBhcmFtZXRlcnMpKS5yZXNvbHZlcywgZXhwZWN0ZWQsIGZhbHNlKVxuICAgICAgICApXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0IChleHBlY3RlZCB2YWx1ZSBmb2xsb3dzIGJ5IHZhcmlvdXMgbGlzdCBvZlxuICogZnVuY3Rpb24gcGFyYW1ldGVycykuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGZ1bmN0aW9uVGVzdFR1cGxlIC0gQWRkaXRpb25hbCBhcnJheXMgb2YgdGVzdCBzZXRzIHRvIHRlc3QgZ2l2ZW5cbiAqIGZ1bmN0aW9uIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgdGVzdEVhY2hQcm9taXNlID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2UodGVzdC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZSlcbn1cbnRlc3RFYWNoUHJvbWlzZS5vbmx5ID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2UoXG4gICAgICAgIHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZVxuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZS5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VUdXBsZTxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2UoXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCAuLi5mdW5jdGlvblRlc3RUdXBsZVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAoZXhwZWN0ZWQgdmFsdWUgZm9sbG93cyBieSB2YXJpb3VzIGxpc3Qgb2ZcbiAqIGZ1bmN0aW9uIHBhcmFtZXRlcnMpLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25UZXN0VHVwbGUgLSBBZGRpdGlvbmFsIGFycmF5cyBvZiB0ZXN0IHNldHMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RQcm9taXNlUmVqZWN0aW9uVHVwbGU8XG4gICAgICAgICAgICBGdW5jdGlvblR5cGVcbiAgICAgICAgPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLmZ1bmN0aW9uVGVzdFR1cGxlXSkoXG4gICAgICAgIGAlcCA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwLCAuLi4pYCxcbiAgICAgICAgKChcbiAgICAgICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgICAgICAuLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5cbiAgICAgICAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgICAgICAgICAgZXhwZWN0RXhwZWN0ZWRUeXBlPEVycm9yLCBQcm9taXNlPHZvaWQ+PihcbiAgICAgICAgICAgICAgICBleHBlY3QoY2FsbGJhY2soLi4ucGFyYW1ldGVycykpLnJlamVjdHMsIGV4cGVjdGVkLCBmYWxzZVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHRlc3Qgc2V0IChleHBlY3RlZCB2YWx1ZSBmb2xsb3dzIGJ5IHZhcmlvdXMgbGlzdCBvZlxuICogZnVuY3Rpb24gcGFyYW1ldGVycykuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGZ1bmN0aW9uVGVzdFR1cGxlIC0gQWRkaXRpb25hbCBhcnJheXMgb2YgdGVzdCBzZXRzIHRvIHRlc3QgZ2l2ZW5cbiAqIGZ1bmN0aW9uIGFnYWluLlxuICovXG5leHBvcnQgY29uc3QgdGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgLi4uZnVuY3Rpb25UZXN0VHVwbGU6IEFycmF5PEZ1bmN0aW9uVGVzdFByb21pc2VSZWplY3Rpb25UdXBsZTxcbiAgICAgICAgICAgIEZ1bmN0aW9uVHlwZVxuICAgICAgICA+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb24oXG4gICAgICAgIHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgLi4uZnVuY3Rpb25UZXN0VHVwbGVcbiAgICApXG59XG50ZXN0RWFjaFByb21pc2VSZWplY3Rpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RQcm9taXNlUmVqZWN0aW9uVHVwbGU8XG4gICAgICAgICAgICBGdW5jdGlvblR5cGVcbiAgICAgICAgPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgLi4uZnVuY3Rpb25UZXN0VHVwbGVcbiAgICApXG59XG50ZXN0RWFjaFByb21pc2VSZWplY3Rpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIC4uLmZ1bmN0aW9uVGVzdFR1cGxlOiBBcnJheTxGdW5jdGlvblRlc3RQcm9taXNlUmVqZWN0aW9uVHVwbGU8XG4gICAgICAgICAgICBGdW5jdGlvblR5cGVcbiAgICAgICAgPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hQcm9taXNlUmVqZWN0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgLi4uZnVuY3Rpb25UZXN0VHVwbGVcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gc2luZ2xlIHBhcmFtZXRlciBhZ2FpbnN0IHNhbWUgZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0XG4gKiByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldFxuICogZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgLSBWYWx1ZSB0byBjaGVjayBlYWNoIGZ1bmN0aW9uIGNhbGwgcmV0dXJuIHZhbHVlIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgZmlyc3QgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuIGZ1bmN0aW9uIHdpdGguXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIHRlc3RlcihbLi4ucGFyYW1ldGVyc10pKFxuICAgICAgICBgJHtyZXByZXNlbnQoZXhwZWN0ZWQpfSA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwKWAsXG4gICAgICAgICgocGFyYW1ldGVyOiBGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+KSA9PiB7XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PihcbiAgICAgICAgICAgICAgICAoZXhwZWN0ZWQgPT09IFRFU1RfVEhST1dfU1lNQk9MID9cbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gY2FsbGJhY2socGFyYW1ldGVyKSBhcyB1bmtub3duIDpcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICkgYXMgTWF0Y2hlcnM8dm9pZD4gfCB2b2lkLFxuICAgICAgICAgICAgICAgIGV4cGVjdGVkXG4gICAgICAgICAgICApXG4gICAgICAgIH0pXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHNpbmdsZSBwYXJhbWV0ZXIgYWdhaW5zdCBzYW1lIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdFxuICogcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZSBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXRcbiAqIGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgLSBWYWx1ZSB0byBjaGVjayBlYWNoIGZ1bmN0aW9uIGNhbGwgcmV0dXJuIHZhbHVlIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIEFkZGl0aW9uYWwgZmlyc3QgcGFyYW1ldGVycyB0byB0ZXN0IGdpdmVuIGZ1bmN0aW9uIHdpdGguXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uLm9ubHkgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Quc2tpcC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4ucGFyYW1ldGVyc1xuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiBzaW5nbGUgcGFyYW1ldGVyIGFnYWluc3Qgc2FtZSBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXRcbiAqIHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWUgZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0XG4gKiBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBmaXJzdCBwYXJhbWV0ZXJzIHRvIHRlc3QgZ2l2ZW4gZnVuY3Rpb24gd2l0aC5cbiAqL1xuY29uc3QgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVQcm9taXNlZEV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICB0ZXN0ZXI6IHR5cGVvZiB0ZXN0LmVhY2gsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4ucGFyYW1ldGVyczogQXJyYXk8Rmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLnBhcmFtZXRlcnNdKShcbiAgICAgICAgYCR7cmVwcmVzZW50KGV4cGVjdGVkKX0gPT09ICR7ZnVuY3Rpb25OYW1lfSglcClgLFxuICAgICAgICAoKHBhcmFtZXRlcjogRmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlPikgPT5cbiAgICAgICAgICAgIGV4cGVjdEV4cGVjdGVkVHlwZTxcbiAgICAgICAgICAgICAgICBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sIFByb21pc2U8dm9pZD5cbiAgICAgICAgICAgID4oZXhwZWN0KGNhbGxiYWNrKHBhcmFtZXRlcikpLnJlc29sdmVzLCBleHBlY3RlZCwgZmFsc2UpXG4gICAgICAgIClcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gc2luZ2xlIHBhcmFtZXRlciBhZ2FpbnN0IHNhbWUgZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0XG4gKiByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldFxuICogZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBmaXJzdCBwYXJhbWV0ZXJzIHRvIHRlc3QgZ2l2ZW4gZnVuY3Rpb24gd2l0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVQcm9taXNlZEV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVQcm9taXNlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVByb21pc2VkRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUHJvbWlzZWRFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5vbmx5LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVByb21pc2VkRXhwZWN0YXRpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBUZXN0U3ltYm9sIHwgVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUHJvbWlzZWRFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5za2lwLmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxuLyoqXG4gKiBUZXN0cyBlYWNoIGdpdmVuIHNpbmdsZSBwYXJhbWV0ZXIgYWdhaW5zdCBzYW1lIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdFxuICogcmVzcGVjdHMgZnVuY3Rpb24gc2lnbmF0dXJlIHRvIHJhaXNlIGNvbXBpbGUgdGltZSBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXRcbiAqIGRvZXMgbm90IG1hdGNoIGdpdmVuIGZ1bmN0aW9uIHNpZ25hdHVyZS5cbiAqIEBwYXJhbSB0ZXN0ZXIgLSBVbmRlcmxpbmcgdGVzdGluZyBmdW5jdGlvbiB0byB1c2UuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGZpcnN0IHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlbiBmdW5jdGlvbiB3aXRoLlxuICovXG5jb25zdCBfdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVJlamVjdGVkRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIHRlc3RlcjogdHlwZW9mIHRlc3QuZWFjaCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgdGVzdGVyKFsuLi5wYXJhbWV0ZXJzXSkoXG4gICAgICAgIGAke3JlcHJlc2VudChleHBlY3RlZCl9ID09PSAke2Z1bmN0aW9uTmFtZX0oJXApYCxcbiAgICAgICAgKChwYXJhbWV0ZXI6IEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4pOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8RXJyb3IsIFByb21pc2U8dm9pZD4+KFxuICAgICAgICAgICAgICAgIGV4cGVjdChjYWxsYmFjayhwYXJhbWV0ZXIpKS5yZWplY3RzLCBleHBlY3RlZCwgZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiBzaW5nbGUgcGFyYW1ldGVyIGFnYWluc3Qgc2FtZSBnaXZlbiBleHBlY3RlZCB2YWx1ZS4gSXRcbiAqIHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWUgZXJyb3JzIGlmIGdpdmVuIHRlc3Qgc2V0XG4gKiBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gZnVuY3Rpb25OYW1lIC0gRnVuY3Rpb24gZGVzY3JpcHRpb24gdG8gdGVzdC5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHJlZmVyZW5jZSB0byB0ZXN0LlxuICogQHBhcmFtIGV4cGVjdGVkIC0gVmFsdWUgdG8gY2hlY2sgZWFjaCBmdW5jdGlvbiBjYWxsIHJldHVybiB2YWx1ZSBhZ2FpbnN0LlxuICogQHBhcmFtIHBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGZpcnN0IHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlbiBmdW5jdGlvbiB3aXRoLlxuICovXG5leHBvcnQgY29uc3QgdGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVJlamVjdGVkRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogRXJyb3IgfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUmVqZWN0ZWRFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4ucGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVSZWplY3RlZEV4cGVjdGF0aW9uLm9ubHkgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogRXJyb3IgfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5wYXJhbWV0ZXJzOiBBcnJheTxGaXJzdFBhcmFtZXRlcjxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFNpbmdsZVBhcmFtZXRlckFnYWluc3RTYW1lUmVqZWN0ZWRFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5vbmx5LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5wYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hTaW5nbGVQYXJhbWV0ZXJBZ2FpbnN0U2FtZVJlamVjdGVkRXhwZWN0YXRpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLnBhcmFtZXRlcnM6IEFycmF5PEZpcnN0UGFyYW1ldGVyPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoU2luZ2xlUGFyYW1ldGVyQWdhaW5zdFNhbWVSZWplY3RlZEV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLnBhcmFtZXRlcnNcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKHZhcmlvdXMgbGlzdCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKSBhZ2FpbnN0IHNhbWVcbiAqIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIHRlc3RlciAtIFVuZGVybGluZyB0ZXN0aW5nIGZ1bmN0aW9uIHRvIHVzZS5cbiAqIEBwYXJhbSBmdW5jdGlvbk5hbWUgLSBGdW5jdGlvbiBkZXNjcmlwdGlvbiB0byB0ZXN0LlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gcmVmZXJlbmNlIHRvIHRlc3QuXG4gKiBAcGFyYW0gZXhwZWN0ZWQgLSBWYWx1ZSB0byBjaGVjayBlYWNoIGZ1bmN0aW9uIGNhbGwgcmV0dXJuIHZhbHVlIGFnYWluc3QuXG4gKiBAcGFyYW0gZnVuY3Rpb25QYXJhbWV0ZXJzIC0gQWRkaXRpb25hbCBsaXN0cyBvZiBwYXJhbWV0ZXJzIHRvIHRlc3QgZ2l2ZW5cbiAqIGZ1bmN0aW9uIGFnYWluLlxuICovXG5jb25zdCBfdGVzdEVhY2hBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICB0ZXN0ZXI6IHR5cGVvZiB0ZXN0LmVhY2gsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgdGVzdGVyKFsuLi5mdW5jdGlvblBhcmFtZXRlcnNdKShcbiAgICAgICAgYCR7cmVwcmVzZW50KGV4cGVjdGVkKX0gPT09ICR7ZnVuY3Rpb25OYW1lfSglcCwgLi4uKWAsXG4gICAgICAgICgoLi4ucGFyYW1ldGVyczogUGFyYW1ldGVyczxGdW5jdGlvblR5cGU+KSA9PiB7XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PihcbiAgICAgICAgICAgICAgICAoZXhwZWN0ZWQgPT09IFRFU1RfVEhST1dfU1lNQk9MID9cbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gY2FsbGJhY2soLi4ucGFyYW1ldGVycykgYXMgdW5rbm93biA6XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKC4uLnBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgKSBhcyBNYXRjaGVyczx2b2lkPiB8IHZvaWQsXG4gICAgICAgICAgICAgICAgZXhwZWN0ZWRcbiAgICAgICAgICAgIClcbiAgICAgICAgfSlcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKHZhcmlvdXMgbGlzdCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKSBhZ2FpbnN0IHNhbWVcbiAqIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaEFnYWluc3RTYW1lRXhwZWN0YXRpb24gPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoQWdhaW5zdFNhbWVFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uLm9ubHkgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+IHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoQWdhaW5zdFNhbWVFeHBlY3RhdGlvbihcbiAgICAgICAgdGVzdC5vbmx5LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5mdW5jdGlvblBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaEFnYWluc3RTYW1lRXhwZWN0YXRpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4gfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICBfdGVzdEVhY2hBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICB0ZXN0ZXI6IHR5cGVvZiB0ZXN0LmVhY2gsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgdGVzdGVyKFsuLi5mdW5jdGlvblBhcmFtZXRlcnNdKShcbiAgICAgICAgYCR7cmVwcmVzZW50KGV4cGVjdGVkKX0gPT09ICR7ZnVuY3Rpb25OYW1lfSglcCwgLi4uKWAsXG4gICAgICAgICgoLi4ucGFyYW1ldGVyczogUGFyYW1ldGVyczxGdW5jdGlvblR5cGU+KSA9PlxuICAgICAgICAgICAgZXhwZWN0RXhwZWN0ZWRUeXBlPFxuICAgICAgICAgICAgICAgIFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PiwgUHJvbWlzZTx2b2lkPlxuICAgICAgICAgICAgPihleHBlY3QoY2FsbGJhY2soLi4ucGFyYW1ldGVycykpLnJlc29sdmVzLCBleHBlY3RlZCwgZmFsc2UpXG4gICAgICAgIClcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKHZhcmlvdXMgbGlzdCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKSBhZ2FpbnN0IHNhbWVcbiAqIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LmVhY2gsIGZ1bmN0aW9uTmFtZSwgY2FsbGJhY2ssIGV4cGVjdGVkLCAuLi5mdW5jdGlvblBhcmFtZXRlcnNcbiAgICApXG59XG50ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uLm9ubHkgPSA8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24gPSBVbmtub3duRnVuY3Rpb25cbj4oXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogVGVzdFN5bWJvbCB8IFRoZW5QYXJhbWV0ZXI8UmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+PixcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZUFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3Qub25seS5lYWNoLCBmdW5jdGlvbk5hbWUsIGNhbGxiYWNrLCBleHBlY3RlZCwgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzXG4gICAgKVxufVxudGVzdEVhY2hQcm9taXNlQWdhaW5zdFNhbWVFeHBlY3RhdGlvbi5za2lwID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IFRlc3RTeW1ib2wgfCBUaGVuUGFyYW1ldGVyPFJldHVyblR5cGU8RnVuY3Rpb25UeXBlPj4sXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VBZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbi8qKlxuICogVGVzdHMgZWFjaCBnaXZlbiB0ZXN0IHNldCAodmFyaW91cyBsaXN0IG9mIGZ1bmN0aW9uIHBhcmFtZXRlcnMpIGFnYWluc3Qgc2FtZVxuICogZ2l2ZW4gZXhwZWN0ZWQgdmFsdWUuIEl0IHJlc3BlY3RzIGZ1bmN0aW9uIHNpZ25hdHVyZSB0byByYWlzZSBjb21waWxlIHRpbWVcbiAqIGVycm9ycyBpZiBnaXZlbiB0ZXN0IHNldCBkb2VzIG5vdCBtYXRjaCBnaXZlbiBmdW5jdGlvbiBzaWduYXR1cmUuXG4gKiBAcGFyYW0gdGVzdGVyIC0gVW5kZXJsaW5nIHRlc3RpbmcgZnVuY3Rpb24gdG8gdXNlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmNvbnN0IF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb25BZ2FpbnN0U2FtZUV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICB0ZXN0ZXI6IHR5cGVvZiB0ZXN0LmVhY2gsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgICAgICBjYWxsYmFjazogRnVuY3Rpb25UeXBlLFxuICAgICAgICBleHBlY3RlZDogRXJyb3IgfCBUZXN0U3ltYm9sLFxuICAgICAgICAuLi5mdW5jdGlvblBhcmFtZXRlcnM6IEFycmF5PFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPj5cbiAgICApID0+IHtcbiAgICB0ZXN0ZXIoWy4uLmZ1bmN0aW9uUGFyYW1ldGVyc10pKFxuICAgICAgICBgJHtyZXByZXNlbnQoZXhwZWN0ZWQpfSA9PT0gJHtmdW5jdGlvbk5hbWV9KCVwLCAuLi4pYCxcbiAgICAgICAgKCguLi5wYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4pOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgICAgICAgICBleHBlY3RFeHBlY3RlZFR5cGU8RXJyb3IsIFByb21pc2U8dm9pZD4+KFxuICAgICAgICAgICAgICAgIGV4cGVjdChjYWxsYmFjayguLi5wYXJhbWV0ZXJzKSkucmVqZWN0cywgZXhwZWN0ZWQsIGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApXG59XG4vKipcbiAqIFRlc3RzIGVhY2ggZ2l2ZW4gdGVzdCBzZXQgKHZhcmlvdXMgbGlzdCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKSBhZ2FpbnN0IHNhbWVcbiAqIGdpdmVuIGV4cGVjdGVkIHZhbHVlLiBJdCByZXNwZWN0cyBmdW5jdGlvbiBzaWduYXR1cmUgdG8gcmFpc2UgY29tcGlsZSB0aW1lXG4gKiBlcnJvcnMgaWYgZ2l2ZW4gdGVzdCBzZXQgZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZnVuY3Rpb24gc2lnbmF0dXJlLlxuICogQHBhcmFtIGZ1bmN0aW9uTmFtZSAtIEZ1bmN0aW9uIGRlc2NyaXB0aW9uIHRvIHRlc3QuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiByZWZlcmVuY2UgdG8gdGVzdC5cbiAqIEBwYXJhbSBleHBlY3RlZCAtIFZhbHVlIHRvIGNoZWNrIGVhY2ggZnVuY3Rpb24gY2FsbCByZXR1cm4gdmFsdWUgYWdhaW5zdC5cbiAqIEBwYXJhbSBmdW5jdGlvblBhcmFtZXRlcnMgLSBBZGRpdGlvbmFsIGxpc3RzIG9mIHBhcmFtZXRlcnMgdG8gdGVzdCBnaXZlblxuICogZnVuY3Rpb24gYWdhaW4uXG4gKi9cbmV4cG9ydCBjb25zdCB0ZXN0RWFjaFByb21pc2VSZWplY3Rpb25BZ2FpbnN0U2FtZUV4cGVjdGF0aW9uID0gPFxuICAgIEZ1bmN0aW9uVHlwZSBleHRlbmRzIEFueUZ1bmN0aW9uID0gVW5rbm93bkZ1bmN0aW9uXG4+KFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY2FsbGJhY2s6IEZ1bmN0aW9uVHlwZSxcbiAgICAgICAgZXhwZWN0ZWQ6IEVycm9yIHwgVGVzdFN5bWJvbCxcbiAgICAgICAgLi4uZnVuY3Rpb25QYXJhbWV0ZXJzOiBBcnJheTxQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT4+XG4gICAgKSA9PiB7XG4gICAgX3Rlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24oXG4gICAgICAgIHRlc3QuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24ub25seSA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb25BZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0Lm9ubHkuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbnRlc3RFYWNoUHJvbWlzZVJlamVjdGlvbkFnYWluc3RTYW1lRXhwZWN0YXRpb24uc2tpcCA9IDxcbiAgICBGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbiA9IFVua25vd25GdW5jdGlvblxuPihcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBGdW5jdGlvblR5cGUsXG4gICAgICAgIGV4cGVjdGVkOiBFcnJvciB8IFRlc3RTeW1ib2wsXG4gICAgICAgIC4uLmZ1bmN0aW9uUGFyYW1ldGVyczogQXJyYXk8UGFyYW1ldGVyczxGdW5jdGlvblR5cGU+PlxuICAgICkgPT4ge1xuICAgIF90ZXN0RWFjaFByb21pc2VSZWplY3Rpb25BZ2FpbnN0U2FtZUV4cGVjdGF0aW9uKFxuICAgICAgICB0ZXN0LnNraXAuZWFjaCwgZnVuY3Rpb25OYW1lLCBjYWxsYmFjaywgZXhwZWN0ZWQsIC4uLmZ1bmN0aW9uUGFyYW1ldGVyc1xuICAgIClcbn1cbmV4cG9ydCBkZWZhdWx0IHRlc3RFYWNoXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7O0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDSSxXQUFXLEVBQ1gsY0FBYyxFQUNkLGlCQUFpQixFQUNqQix3QkFBd0IsRUFDeEIsaUNBQWlDLEVBQ2pDLFlBQVksSUFBSSxRQUFRLEVBQ3hCLFVBQVUsRUFDVixhQUFhLEVBQ2IsZUFBZTtBQUduQixTQUFRLE1BQU0sRUFBRSxJQUFJLFFBQU8sZUFBZTtBQUUxQyxTQUFRLFNBQVM7QUFDakI7QUFDQSxPQUFPLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQztBQUM1RSxPQUFPLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQztBQUN4RSxPQUFPLE1BQU0scUJBQXFCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQztBQUNoRjtBQUNBO0FBQ0E7QUFD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
package/dist/type.js CHANGED
@@ -1 +1,21 @@
1
- "use strict";if("undefined"!=typeof module&&null!==module&&"undefined"!==eval("typeof require")&&null!==eval("require")&&"main"in eval("require")&&"undefined"!==eval("typeof require.main")&&null!==eval("require.main")){var ORIGINAL_MAIN_MODULE=module;module!==eval("require.main")&&"paths"in module&&"paths"in eval("require.main")&&"undefined"!=typeof __dirname&&null!==__dirname&&(module.paths=eval("require.main.paths").concat(module.paths.filter(function(path){return eval("require.main.paths").includes(path)})))}if(null==window)var window="undefined"==typeof global||null===global?{}:global;!function(e,n){if("object"==typeof exports&&"object"==typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var i=n();for(var l in i)("object"==typeof exports?exports:e)[l]=i[l]}}(this,function(){return{r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}}.r(e={}),e;var e});
1
+ // -*- coding: utf-8 -*-
2
+ /** @module type */
3
+ 'use strict';
4
+
5
+ /* !
6
+ region header
7
+ [Project page](https://torben.website/clientnode)
8
+
9
+ Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
10
+
11
+ License
12
+ -------
13
+
14
+ This library written by Torben Sickert stands under a creative commons
15
+ naming 3.0 unported license.
16
+ See https://creativecommons.org/licenses/by/3.0/deed.de
17
+ endregion
18
+ */
19
+ // region imports
20
+ export {};
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL3R5cGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLSotIGNvZGluZzogdXRmLTggLSotXG4vKiogQG1vZHVsZSB0eXBlICovXG4ndXNlIHN0cmljdCdcbi8qICFcbiAgICByZWdpb24gaGVhZGVyXG4gICAgW1Byb2plY3QgcGFnZV0oaHR0cHM6Ly90b3JiZW4ud2Vic2l0ZS9jbGllbnRub2RlKVxuXG4gICAgQ29weXJpZ2h0IFRvcmJlbiBTaWNrZXJ0IChpbmZvW1wifmF0flwiXXRvcmJlbi53ZWJzaXRlKSAxNi4xMi4yMDEyXG5cbiAgICBMaWNlbnNlXG4gICAgLS0tLS0tLVxuXG4gICAgVGhpcyBsaWJyYXJ5IHdyaXR0ZW4gYnkgVG9yYmVuIFNpY2tlcnQgc3RhbmRzIHVuZGVyIGEgY3JlYXRpdmUgY29tbW9uc1xuICAgIG5hbWluZyAzLjAgdW5wb3J0ZWQgbGljZW5zZS5cbiAgICBTZWUgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC9kZWVkLmRlXG4gICAgZW5kcmVnaW9uXG4qL1xuLy8gcmVnaW9uIGltcG9ydHNcbmltcG9ydCB0eXBlIHtNYXRjaGVyc30gZnJvbSAnZXhwZWN0J1xuaW1wb3J0IHR5cGUge0RpcmVudCBhcyBEaXJlY3RvcnlFbnRyeSwgU3RhdHMgYXMgRmlsZVN0YXRzfSBmcm9tICdmcydcblxuaW1wb3J0IHR5cGUge0xldmVsfSBmcm9tICcuL0xvZ2dlcidcblxuaW1wb3J0IHR5cGUge1xuICAgIFRFU1RfREVGSU5FRF9TWU1CT0wsIFRFU1RfVEhST1dfU1lNQk9MLCBURVNUX1VOREVGSU5FRF9TWU1CT0xcbn0gZnJvbSAnLi90ZXN0LWhlbHBlcidcbi8vIGVuZHJlZ2lvblxuLy8gcmVnaW9uIGV4cG9ydHNcbi8vLyByZWdpb24gaGVscGVyXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5leHBvcnQgdHlwZSBBbnlGdW5jdGlvbiA9ICguLi5wYXJhbWV0ZXJzOiBBcnJheTxhbnk+KSA9PiBhbnlcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5leHBvcnQgdHlwZSBVbnBhY2tlZDxUPiA9IFQgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/XG4gICAgVSA6XG4gICAgVCBleHRlbmRzICguLi5wYXJhbWV0ZXJzOiBBcnJheTx1bmtub3duPikgPT4gaW5mZXIgVSA/XG4gICAgICAgIFUgOlxuICAgICAgICBUIGV4dGVuZHMgUHJvbWlzZTxpbmZlciBVPiA/XG4gICAgICAgICAgICBVIDpcbiAgICAgICAgICAgIFRcblxuZXhwb3J0IHR5cGUgRmlyc3RQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24+ID1cbiAgICBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5bMF1cbmV4cG9ydCB0eXBlIFNlY29uZFBhcmFtZXRlcjxGdW5jdGlvblR5cGUgZXh0ZW5kcyBBbnlGdW5jdGlvbj4gPVxuICAgIFBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPlsxXVxuZXhwb3J0IHR5cGUgVGhpcmRQYXJhbWV0ZXI8RnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24+ID1cbiAgICBQYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5bMl1cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmV4cG9ydCB0eXBlIFBhcmFtZXRlcnNFeGNlcHRGaXJzdDxGdW5jdGlvblR5cGU+ID0gRnVuY3Rpb25UeXBlIGV4dGVuZHNcbiAgICAocGFyYW1ldGVyOiBhbnksIC4uLmFkZGl0aW9uYWxQYXJhbWV0ZXJzOiBpbmZlciBBZGRpdGlvbmFsUGFyYW1ldGVycykgPT5cbiAgICAgICAgYW55ID9cbiAgICAgICAgICAgIEFkZGl0aW9uYWxQYXJhbWV0ZXJzIDpcbiAgICAgICAgICAgIFtdXG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZXhwb3J0IHR5cGUgRnVuY3Rpb25UZXN0VHVwbGU8RnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24+ID1cbiAgICBbUmV0dXJuVHlwZTxGdW5jdGlvblR5cGU+LCAuLi5QYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5dXG5leHBvcnQgdHlwZSBGdW5jdGlvblRlc3RQcm9taXNlVHVwbGU8RnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb24+ID1cbiAgICBbVGhlblBhcmFtZXRlcjxSZXR1cm5UeXBlPEZ1bmN0aW9uVHlwZT4+LCAuLi5QYXJhbWV0ZXJzPEZ1bmN0aW9uVHlwZT5dXG5leHBvcnQgdHlwZSBGdW5jdGlvblRlc3RQcm9taXNlUmVqZWN0aW9uVHVwbGU8XG4gICAgRnVuY3Rpb25UeXBlIGV4dGVuZHMgQW55RnVuY3Rpb25cbj4gPSBbRXJyb3IsIC4uLlBhcmFtZXRlcnM8RnVuY3Rpb25UeXBlPl1cblxuZXhwb3J0IHR5cGUgVGVzdFN5bWJvbCA9IChcbiAgICB0eXBlb2YgVEVTVF9ERUZJTkVEX1NZTUJPTCB8XG4gICAgdHlwZW9mIFRFU1RfVEhST1dfU1lNQk9MIHxcbiAgICB0eXBlb2YgVEVTVF9VTkRFRklORURfU1lNQk9MXG4pXG5cbmV4cG9ydCB0eXBlIFRoZW5QYXJhbWV0ZXI8VHlwZT4gPSBUeXBlIGV4dGVuZHMgUHJvbWlzZUxpa2U8aW5mZXIgVT4gPyBVIDogVHlwZVxuZXhwb3J0IHR5cGUgVGhlblBhcmFtZXRlclJlY3Vyc2l2ZTxUeXBlPiA9XG4gICAgVHlwZSBleHRlbmRzIFByb21pc2VMaWtlPGluZmVyIFU+ID8gVGhlblBhcmFtZXRlclJlY3Vyc2l2ZTxVPiA6IFR5cGVcblxuZXhwb3J0IHR5cGUgVmFsdWVPZjxUeXBlPiA9IFR5cGVba2V5b2YgVHlwZV1cblxuZXhwb3J0IHR5cGUgUmVjdXJzaXZlTm9uTnVsbGFibGU8VHlwZT4gPSB7XG4gICAgW1Byb3BlcnR5IGluIGtleW9mIFR5cGVdOiBUeXBlW1Byb3BlcnR5XSBleHRlbmRzIEFycmF5PGluZmVyIE90aGVyVHlwZT4gP1xuICAgICAgICBBcnJheTxSZWN1cnNpdmVOb25OdWxsYWJsZTxPdGhlclR5cGU+PiA6XG4gICAgICAgIFR5cGVbUHJvcGVydHldIGV4dGVuZHMgQW55RnVuY3Rpb24gP1xuICAgICAgICAgICAgTm9uTnVsbGFibGU8VHlwZVtQcm9wZXJ0eV0+IDpcbiAgICAgICAgICAgIFR5cGVbUHJvcGVydHldIGV4dGVuZHMgTWFwcGluZzx1bmtub3duPiA/XG4gICAgICAgICAgICAgICAgUmVjdXJzaXZlTm9uTnVsbGFibGU8VHlwZVtQcm9wZXJ0eV0+IDpcbiAgICAgICAgICAgICAgICBOb25OdWxsYWJsZTxUeXBlW1Byb3BlcnR5XT5cbn1cbmV4cG9ydCB0eXBlIFJlY3Vyc2l2ZVBhcnRpYWw8VHlwZT4gPVxuICAgIFBhcnRpYWw8VHlwZT4gfFxuICAgIHtcbiAgICAgICAgW1Byb3BlcnR5IGluIGtleW9mIFR5cGVdPzogVHlwZVtcbiAgICAgICAgICAgIFByb3BlcnR5XG4gICAgICAgIF0gZXh0ZW5kcyBBcnJheTxpbmZlciBPdGhlclR5cGU+ID9cbiAgICAgICAgICAgIEFycmF5PFJlY3Vyc2l2ZVBhcnRpYWw8T3RoZXJUeXBlPj4gOlxuICAgICAgICAgICAgVHlwZVtQcm9wZXJ0eV0gZXh0ZW5kcyBBbnlGdW5jdGlvbiA/XG4gICAgICAgICAgICAgICAgUGFydGlhbDxUeXBlW1Byb3BlcnR5XT4gOlxuICAgICAgICAgICAgICAgIFR5cGVbUHJvcGVydHldIGV4dGVuZHMgTWFwcGluZzx1bmtub3duPiA/XG4gICAgICAgICAgICAgICAgICAgIFJlY3Vyc2l2ZVBhcnRpYWw8VHlwZVtQcm9wZXJ0eV0+IDpcbiAgICAgICAgICAgICAgICAgICAgUGFydGlhbDxUeXBlW1Byb3BlcnR5XT5cbiAgICB9XG5cbmV4cG9ydCB0eXBlIEZpbGVUcmF2ZXJzZVJlc3VsdCA9XG4gICAgZmFsc2UgfCBudWxsIHwgUHJvbWlzZTxmYWxzZSB8IG51bGwgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkXG5cbmV4cG9ydCB0eXBlIFRlc3RNYXRjaGVyczxUIGV4dGVuZHMgUHJvbWlzZTx2b2lkPiB8IHZvaWQ+ID1cbiAgICBNYXRjaGVyczxUPiAmIHtub3Q6IE1hdGNoZXJzPFQ+fVxuLy8vIGVuZHJlZ2lvblxuLy8vIHJlZ2lvbiBuYXRpdmVcbmV4cG9ydCB0eXBlIEltcG9ydEZ1bmN0aW9uID1cbiAgICAoaWQ6IHN0cmluZykgPT4gUHJvbWlzZTxSZXR1cm5UeXBlPHR5cGVvZiByZXF1aXJlPj5cbmV4cG9ydCB0eXBlIEhUTUxJdGVtID0gQ29tbWVudCB8IEhUTUxFbGVtZW50IHwgVGV4dFxuXG5leHBvcnQgdHlwZSBQcmltaXRpdmUgPSBib29sZWFuIHwgbnVsbCB8IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZFxuZXhwb3J0IHR5cGUgTWFwcGluZzxWID0gc3RyaW5nLCBLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IFJlY29yZDxLLCBWPlxuLy8gTk9URTogTWFwcGluZyBjYW5ub3QgYmUgdXNlZCBoZXJlIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMuXG5leHBvcnQgdHlwZSBQbGFpbk9iamVjdDxWID0gUHJpbWl0aXZlLCBLIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9XG4gICAge1trZXkgaW4gS106IEFycmF5PFBsYWluT2JqZWN0PFYsIEs+IHwgVj4gfCBQbGFpbk9iamVjdDxWLCBLPiB8IFZ9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJveHlIYW5kbGVyPFQgPSB1bmtub3duPiB7XG4gICAgZGVsZXRlUHJvcGVydHk6ICh0YXJnZXQ6IFQsIGtleTogc3RyaW5nIHwgc3ltYm9sKSA9PiBib29sZWFuXG4gICAgZ2V0OiAodGFyZ2V0OiBULCBrZXk6IHN0cmluZyB8IHN5bWJvbCkgPT4gdW5rbm93blxuICAgIGhhczogKHRhcmdldDogVCwga2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IGJvb2xlYW5cbiAgICBzZXQ6ICh0YXJnZXQ6IFQsIGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93bikgPT4gYm9vbGVhblxufVxuZXhwb3J0IHR5cGUgUHJveHlUeXBlPFQgPSB1bmtub3duPiA9IFQgJiB7XG4gICAgX19yZXZva2VfXz86ICgpID0+IHZvaWRcbiAgICBfX3RhcmdldF9fOiBUXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29va2llT3B0aW9ucyB7XG4gICAgZG9tYWluOiBzdHJpbmdcbiAgICBodHRwT25seTogYm9vbGVhblxuICAgIG1pbmltYWw6IGJvb2xlYW5cbiAgICBudW1iZXJPZkRheXNVbnRpbEV4cGlyYXRpb246IG51bWJlclxuICAgIHBhdGg6IHN0cmluZ1xuICAgIHNhbWVTaXRlOiAnTGF4JyB8ICdOb25lJyB8ICdTdHJpY3QnIHwgJydcbiAgICBzZWN1cmU6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBLbm93bldpbmRvd0V2ZW50TWFwIGV4dGVuZHMgV2luZG93RXZlbnRNYXAge1xuICAgIERPTU1vdXNlU2Nyb2xsOiBFdmVudFxuICAgIG1vdXNld2hlZWw6IEV2ZW50XG59XG5leHBvcnQgdHlwZSBLbm93bkV2ZW50TmFtZSA9IGtleW9mIEtub3duV2luZG93RXZlbnRNYXBcbi8vLy8gcmVnaW9uIGZ1bmN0aW9uc1xuZXhwb3J0IHR5cGUgVW5rbm93bkZ1bmN0aW9uID0gKC4uLnBhcmFtZXRlcnM6IEFycmF5PHVua25vd24+KSA9PiB1bmtub3duXG5leHBvcnQgdHlwZSBBcnJheVRyYW5zZm9ybWVyPFQgPSB1bmtub3duLCBSID0gdW5rbm93biwgUCA9IHVua25vd24+ID0gKFxuICAgIGRhdGE6IEFycmF5PFQ+LCAuLi5hZGRpdGlvbmFsUGFyYW1ldGVyOiBBcnJheTxQPlxuKSA9PiBBcnJheTxSPlxuXG5leHBvcnQgdHlwZSBTeW5jaHJvbm91c1Byb2NlZHVyZUZ1bmN0aW9uID0gKC4uLnBhcmFtZXRlcnM6IEFycmF5PHVua25vd24+KSA9PlxuICAgIHZvaWRcbmV4cG9ydCB0eXBlIEFzeW5jaHJvbm91c1Byb2NlZHVyZUZ1bmN0aW9uID0gKC4uLnBhcmFtZXRlcnM6IEFycmF5PHVua25vd24+KSA9PlxuICAgIFByb21pc2U8dm9pZD5cbmV4cG9ydCB0eXBlIFByb2NlZHVyZUZ1bmN0aW9uID1cbiAgICBBc3luY2hyb25vdXNQcm9jZWR1cmVGdW5jdGlvbiB8IFN5bmNocm9ub3VzUHJvY2VkdXJlRnVuY3Rpb25cblxuZXhwb3J0IHR5cGUgR2V0dGVyRnVuY3Rpb24gPVxuICAgIChrZXlPclZhbHVlOiB1bmtub3duLCBrZXk6IHN0cmluZyB8IHN5bWJvbCwgdGFyZ2V0OiB1bmtub3duKSA9PiB1bmtub3duXG5leHBvcnQgdHlwZSBTZXR0ZXJGdW5jdGlvbiA9XG4gICAgKGtleTogc3RyaW5nIHwgc3ltYm9sLCB2YWx1ZTogdW5rbm93biwgdGFyZ2V0OiB1bmtub3duKSA9PiB1bmtub3duXG4vLy8vIGVuZHJlZ2lvblxuLy8vIGVuZHJlZ2lvblxuLy8vIHJlZ2lvbiBoZWxwZXJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tSZWFjaGFiaWxpdHlPcHRpb25zIHtcbiAgICBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuICAgIGV4cGVjdGVkSW50ZXJtZWRpYXRlU3RhdHVzQ29kZXM6IEFycmF5PG51bWJlcj4gfCBudW1iZXJcbiAgICBvcHRpb25zOiBSZXF1ZXN0SW5pdFxuICAgIHBvbGxJbnRlcnZhbGxJblNlY29uZHM6IG51bWJlclxuICAgIHN0YXR1c0NvZGVzOiBBcnJheTxudW1iZXI+IHwgbnVtYmVyXG4gICAgdGltZW91dEluU2Vjb25kczogbnVtYmVyXG4gICAgd2FpdDogYm9vbGVhblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmVPcHRpb25zIHtcbiAgICBjb21wYXJlQmxvYnM6IGJvb2xlYW5cbiAgICBkZWVwOiBudW1iZXJcbiAgICBleGNlcHRpb25QcmVmaXhlczogQXJyYXk8c3RyaW5nPlxuICAgIGlnbm9yZUZ1bmN0aW9uczogYm9vbGVhblxuICAgIHByb3BlcnRpZXM6IEFycmF5PHN0cmluZz4gfCBudWxsXG4gICAgcmV0dXJuUmVhc29uSWZOb3RFcXVhbDogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBFbmNvZGluZyA9XG4gICAgJ2FzY2lpJyB8XG4gICAgJ2Jhc2U2NCcgfFxuICAgICdiYXNlNjR1cmwnIHxcbiAgICAnYmluYXJ5JyB8XG4gICAgJ2hleCcgfFxuICAgICdsYXRpbjEnIHxcbiAgICAndWNzMicgfFxuICAgICd1Y3MtMicgfFxuICAgICd1dGY4JyB8XG4gICAgJ3V0ZjE2bGUnIHxcbiAgICAndXRmLTgnXG5leHBvcnQgaW50ZXJmYWNlIEZpbGUge1xuICAgIGRpcmVjdG9yeVBhdGg6IHN0cmluZ1xuICAgIGRpcmVjdG9yeUVudHJ5OiBEaXJlY3RvcnlFbnRyeSB8IG51bGxcbiAgICBlcnJvcjogRXJyb3IgfCBudWxsXG4gICAgbmFtZTogc3RyaW5nXG4gICAgcGF0aDogc3RyaW5nXG4gICAgc3RhdHM6IEZpbGVTdGF0cyB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcGFyYW1ldGVyczogQXJyYXk8dW5rbm93bj5cbiAgICByZXR1cm5Db2RlOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUXVlcnlQYXJhbWV0ZXJzID1cbiAgICBBcnJheTxBcnJheTxzdHJpbmc+IHwgc3RyaW5nPiAmIE1hcHBpbmc8QXJyYXk8c3RyaW5nPiB8IHN0cmluZz5cblxuZXhwb3J0IGludGVyZmFjZSBUaW1lb3V0UHJvbWlzZSBleHRlbmRzIFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNsZWFyOiAoKSA9PiB2b2lkXG4gICAgdGltZW91dElEOiBOb2RlSlMuVGltZW91dFxufVxuXG4vLyBOT1RFOiBNYXBwaW5nIGNhbm5vdCBiZSB1c2VkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgcmVmZXJlbmNlcy5cbmV4cG9ydCB0eXBlIE9iamVjdE1hc2sgPSBBcnJheTxzdHJpbmc+IHwgYm9vbGVhbiB8IHtba2V5OiBzdHJpbmddOiBPYmplY3RNYXNrfVxuZXhwb3J0IHR5cGUgTm9ybWFsaXplZE9iamVjdE1hc2sgPSBib29sZWFuIHwgTWFwcGluZzxPYmplY3RNYXNrPlxuZXhwb3J0IGludGVyZmFjZSBPYmplY3RNYXNrQ29uZmlndXJhdGlvbiB7XG4gICAgZXhjbHVkZT86IE9iamVjdE1hc2tcbiAgICBpbmNsdWRlPzogT2JqZWN0TWFza1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlT2JqZWN0IHtcbiAgICBfX2V2YWx1YXRlX186IHN0cmluZ1xufVxuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRlT2JqZWN0IHtcbiAgICBfX2V4ZWN1dGVfXzogc3RyaW5nXG59XG5leHBvcnQgdHlwZSBFdmFsdWF0ZWFibGUgPSBFdmFsdWF0ZU9iamVjdCB8IEV4ZWN1dGVPYmplY3RcblxuZXhwb3J0IHR5cGUgRXZhbHVhdGVkT2JqZWN0PFR5cGUgZXh0ZW5kcyBvYmplY3Q+ID0ge1xuICAgIFtQcm9wZXJ0eSBpbiBrZXlvZiBUeXBlXTogKFxuICAgICAgICBUeXBlW1Byb3BlcnR5XSBleHRlbmRzIEV2YWx1YXRlYWJsZSA/XG4gICAgICAgICAgICB1bmtub3duIDpcbiAgICAgICAgICAgIFR5cGVbUHJvcGVydHldIGV4dGVuZHMgb2JqZWN0ID9cbiAgICAgICAgICAgICAgICBFdmFsdWF0ZWRPYmplY3Q8VHlwZVtQcm9wZXJ0eV0+IDpcbiAgICAgICAgICAgICAgICBUeXBlW1Byb3BlcnR5XVxuICAgICAgICApXG59XG5leHBvcnQgdHlwZSBSZWN1cnNpdmVFdmFsdWF0ZWFibGU8VHlwZT4gPVxuICAgIEV2YWx1YXRlYWJsZSB8XG4gICAge1xuICAgICAgICBbUHJvcGVydHkgaW4ga2V5b2YgVHlwZV06IChcbiAgICAgICAgICAgIEV2YWx1YXRlYWJsZSB8IChUeXBlW1Byb3BlcnR5XSBleHRlbmRzIEFycmF5PGluZmVyIE90aGVyVHlwZT4gP1xuICAgICAgICAgICAgICAgIEFycmF5PFJlY3Vyc2l2ZUV2YWx1YXRlYWJsZTxPdGhlclR5cGU+PiA6XG4gICAgICAgICAgICAgICAgVHlwZVtQcm9wZXJ0eV0gZXh0ZW5kcyBNYXBwaW5nPHVua25vd24+ID9cbiAgICAgICAgICAgICAgICAgICAgUmVjdXJzaXZlRXZhbHVhdGVhYmxlPFR5cGVbUHJvcGVydHldPiA6XG4gICAgICAgICAgICAgICAgICAgIEV2YWx1YXRlYWJsZSB8IFR5cGVbUHJvcGVydHldXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVPcHRpb25zIHtcbiAgICBib3VuZGFyeUNvdW50OiBudW1iZXJcbiAgICBkaXNhYmxlZDogYm9vbGVhblxuICAgIGhpZGVOZXh0QnV0dG9uOiBib29sZWFuXG4gICAgaGlkZVByZXZCdXR0b246IGJvb2xlYW5cbiAgICBwYWdlOiBudW1iZXJcbiAgICBwYWdlU2l6ZT86IG51bGwgfCBudW1iZXJcbiAgICBzaG93Rmlyc3RCdXR0b246IGJvb2xlYW5cbiAgICBzaG93TGFzdEJ1dHRvbjogYm9vbGVhblxuICAgIHNpYmxpbmdDb3VudDogbnVtYmVyXG4gICAgdG90YWw6IG51bWJlclxufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlIHtcbiAgICBkaXNhYmxlZDogYm9vbGVhblxuICAgIHBhZ2U/OiBudW1iZXJcbiAgICBzZWxlY3RlZDogYm9vbGVhblxuICAgIHR5cGU6IFBhZ2VUeXBlXG59XG5leHBvcnQgdHlwZSBQYWdlVHlwZSA9XG4gICAgJ2VuZC1lbGxpcHNpcycgfFxuICAgICdmaXJzdCcgfFxuICAgICdsYXN0JyB8XG4gICAgJ25leHQnIHxcbiAgICAncGFnZScgfFxuICAgICdwcmV2aW91cycgfFxuICAgICdzdGFydC1lbGxpcHNpcydcblxuZXhwb3J0IGludGVyZmFjZSBPZmZzZXQge1xuICAgIGxlZnQ6IG51bWJlclxuICAgIHRvcDogbnVtYmVyXG59XG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIGV4dGVuZHMgT2Zmc2V0IHtcbiAgICBib3R0b206IG51bWJlclxuICAgIHJpZ2h0OiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0hhbmRsZXIgPVxuICAgIChyZXR1cm5Db2RlOiB1bmtub3duLCAuLi5wYXJhbWV0ZXJzOiBBcnJheTx1bmtub3duPikgPT4gdm9pZFxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzQ2xvc2VSZWFzb24ge1xuICAgIHBhcmFtZXRlcnM6IEFycmF5PHVua25vd24+XG4gICAgcmVhc29uOiB1bmtub3duXG59XG5leHBvcnQgdHlwZSBQcm9jZXNzQ2xvc2VDYWxsYmFjayA9IChyZWFzb246IFByb2Nlc3NDbG9zZVJlYXNvbikgPT4gdm9pZFxuZXhwb3J0IHR5cGUgUHJvY2Vzc0Vycm9yQ2FsbGJhY2sgPSAocmVhc29uOiBQcm9jZXNzRXJyb3IpID0+IHZvaWRcblxuZXhwb3J0IHR5cGUgUmVsYXRpdmVQb3NpdGlvbiA9ICdhYm92ZScgfCAnYmVsb3cnIHwgJ2luJyB8ICdsZWZ0JyB8ICdyaWdodCdcblxuZXhwb3J0IHR5cGUgVGVtcGxhdGVGdW5jdGlvbjxUeXBlID0gc3RyaW5nPiA9XG4gICAgKC4uLnBhcmFtZXRlcnM6IEFycmF5PHVua25vd24+KSA9PiBUeXBlXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGF0aW9uUmVzdWx0PFxuICAgIFQgPSBzdHJpbmcsIE4gZXh0ZW5kcyBBcnJheTxzdHJpbmc+ID0gQXJyYXk8c3RyaW5nPlxuPiB7XG4gICAgZXJyb3I6IG51bGwgfCBzdHJpbmdcblxuICAgIGdsb2JhbE5hbWVzOiBBcnJheTxzdHJpbmc+XG4gICAgZ2xvYmFsTmFtZXNVbmRlZmluZWRMaXN0OiBBcnJheTx1bmRlZmluZWQ+XG4gICAgb3JpZ2luYWxTY29wZU5hbWVzOiBOXG4gICAgc2NvcGVOYW1lTWFwcGluZzogUmVjb3JkPE5bbnVtYmVyXSwgc3RyaW5nPlxuICAgIHNjb3BlTmFtZXM6IEFycmF5PHN0cmluZz5cblxuICAgIHRlbXBsYXRlRnVuY3Rpb246IFRlbXBsYXRlRnVuY3Rpb248VD5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTmVnYXRpdmVFdmFsdWF0aW9uUmVzdWx0IHtcbiAgICBjb21waWxlRXJyb3I6IG51bGwgfCBzdHJpbmdcbiAgICBlcnJvcjogc3RyaW5nXG4gICAgcmVzdWx0OiB1bmRlZmluZWRcbiAgICBydW50aW1lRXJyb3I6IG51bGwgfCBzdHJpbmdcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUG9zaXRpdmVFdmFsdWF0aW9uUmVzdWx0PFR5cGUgPSBzdHJpbmc+IHtcbiAgICBjb21waWxlRXJyb3I6IG51bGxcbiAgICBlcnJvcjogbnVsbFxuICAgIHJlc3VsdDogVHlwZVxuICAgIHJ1bnRpbWVFcnJvcjogbnVsbFxufVxuZXhwb3J0IHR5cGUgRXZhbHVhdGlvblJlc3VsdDxUeXBlID0gc3RyaW5nPiA9XG4gICAgUG9zaXRpdmVFdmFsdWF0aW9uUmVzdWx0PFR5cGU+IHwgTmVnYXRpdmVFdmFsdWF0aW9uUmVzdWx0XG5cbmV4cG9ydCB0eXBlIExvY2tDYWxsYmFja0Z1bmN0aW9uPFR5cGU+ID1cbiAgICAoZGVzY3JpcHRpb24/OiBzdHJpbmcpID0+IFByb21pc2U8VHlwZT4gfCBUeXBlXG4vLy8gZW5kcmVnaW9uXG5leHBvcnQgaW50ZXJmYWNlIFN0cmluZ01hcmtPcHRpb25zIHtcbiAgICBtYXJrZXI6XG4gICAgICAgICgoZm91bmRXb3JkOiBzdHJpbmcsIG1hcmtlZFRhcmdldDogQXJyYXk8dW5rbm93bj4pID0+IHVua25vd24pIHwgc3RyaW5nXG4gICAgbm9ybWFsaXplcjogKHZhbHVlOiB1bmtub3duKSA9PiBzdHJpbmdcbiAgICBza2lwVGFnRGVsaW1pdGVkUGFydHM6IG51bGwgfCBbc3RyaW5nLCBzdHJpbmddXG59XG5leHBvcnQgaW50ZXJmYWNlIEludGVycnVwdGFibGVTY3JvbGxUb09wdGlvbnMge1xuICAgIHRhcmdldERvbU5vZGU6IEhUTUxFbGVtZW50XG4gICAgY29udGFpbmVyRG9tTm9kZTogSFRNTEVsZW1lbnQgfCBXaW5kb3dcbiAgICBkdXJhdGlvbkluTWlsbGlzZWNvbmRzOiBudW1iZXJcbiAgICBpbnRlcnJ1cHRPbk1hbnVhbFNjcm9sbDogYm9vbGVhblxuICAgIG9mZnNldDoge1xuICAgICAgICB0b3A6IG51bWJlclxuICAgICAgICBsZWZ0OiBudW1iZXJcbiAgICB9XG59XG5leHBvcnQgaW50ZXJmYWNlIEdpdmVuSW50ZXJydXB0YWJsZVNjcm9sbFRvT3B0aW9uc1xuICAgIGV4dGVuZHNcblBhcnRpYWw8U2Nyb2xsVG9PcHRpb25zPiB7XG4gICAgdGFyZ2V0RG9tTm9kZT86IE5vZGUgfCBudWxsXG4gICAgY29udGFpbmVyRG9tTm9kZT86IE5vZGUgfCBudWxsIHwgV2luZG93XG4gICAgb2Zmc2V0PzogUGFydGlhbDxJbnRlcnJ1cHRhYmxlU2Nyb2xsVG9PcHRpb25zWydvZmZzZXQnXT5cbn1cbmV4cG9ydCBpbnRlcmZhY2UgTG9nZ2VyT3B0aW9ucyB7XG4gICAgbGV2ZWw6IExldmVsXG4gICAgbmFtZTogc3RyaW5nXG59XG5leHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlRHluYW1pY0RhdGFPcHRpb25zIHtcbiAgICBzY29wZTogTWFwcGluZzx1bmtub3duPlxuICAgIHNlbGZSZWZlcmVuY2VOYW1lOiBzdHJpbmdcbiAgICBleHByZXNzaW9uSW5kaWNhdG9yS2V5OiBzdHJpbmdcbiAgICBleGVjdXRpb25JbmRpY2F0b3JLZXk6IHN0cmluZ1xufVxuLy8gZW5kcmVnaW9uXG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxZQUFZOztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBIiwiaWdub3JlTGlzdCI6W119