axe 12.2.6 → 12.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/axe.js +52 -27
- package/dist/axe.min.js +1 -1
- package/lib/index.js +4 -1
- package/package.json +10 -10
- package/src/index.js +5 -0
package/README.md
CHANGED
|
@@ -531,7 +531,7 @@ This package requires Promise support, therefore you will need to polyfill if yo
|
|
|
531
531
|
**The browser-ready bundle is only 18 KB when minified and 6 KB when gzipped**.
|
|
532
532
|
|
|
533
533
|
```html
|
|
534
|
-
<script src="https://
|
|
534
|
+
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=Promise"></script>
|
|
535
535
|
<script src="https://unpkg.com/axe"></script>
|
|
536
536
|
<script type="text/javascript">
|
|
537
537
|
(function () {
|
|
@@ -548,10 +548,10 @@ This package requires Promise support, therefore you will need to polyfill if yo
|
|
|
548
548
|
|
|
549
549
|
#### Required Browser Features
|
|
550
550
|
|
|
551
|
-
We recommend using <https://polyfill
|
|
551
|
+
We recommend using <https://cdnjs.cloudflare.com/polyfill> (specifically with the bundle mentioned in [VanillaJS](#vanillajs) above):
|
|
552
552
|
|
|
553
553
|
```html
|
|
554
|
-
<script src="https://
|
|
554
|
+
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=Promise"></script>
|
|
555
555
|
```
|
|
556
556
|
|
|
557
557
|
* Promise is not supported in op\_mini all
|
package/dist/axe.js
CHANGED
|
@@ -467,7 +467,29 @@ module.exports = function has(val) {
|
|
|
467
467
|
}
|
|
468
468
|
};
|
|
469
469
|
|
|
470
|
-
},{"kind-of":
|
|
470
|
+
},{"kind-of":21}],16:[function(require,module,exports){
|
|
471
|
+
/*!
|
|
472
|
+
* Determine if an object is a Buffer
|
|
473
|
+
*
|
|
474
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
475
|
+
* @license MIT
|
|
476
|
+
*/
|
|
477
|
+
|
|
478
|
+
// The _isBuffer check is for Safari 5-7 support, because it's missing
|
|
479
|
+
// Object.prototype.constructor. Remove this eventually
|
|
480
|
+
module.exports = function (obj) {
|
|
481
|
+
return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
|
|
482
|
+
};
|
|
483
|
+
function isBuffer(obj) {
|
|
484
|
+
return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
// For Node v0.10 support. Remove this eventually.
|
|
488
|
+
function isSlowBuffer(obj) {
|
|
489
|
+
return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
},{}],17:[function(require,module,exports){
|
|
471
493
|
'use strict';
|
|
472
494
|
|
|
473
495
|
module.exports = value => {
|
|
@@ -478,7 +500,7 @@ module.exports = value => {
|
|
|
478
500
|
return prototype === null || prototype === Object.prototype;
|
|
479
501
|
};
|
|
480
502
|
|
|
481
|
-
},{}],
|
|
503
|
+
},{}],18:[function(require,module,exports){
|
|
482
504
|
'use strict';
|
|
483
505
|
|
|
484
506
|
var toStr = Object.prototype.toString;
|
|
@@ -512,7 +534,7 @@ if (hasSymbols) {
|
|
|
512
534
|
};
|
|
513
535
|
}
|
|
514
536
|
|
|
515
|
-
},{"has-symbols":12}],
|
|
537
|
+
},{"has-symbols":12}],19:[function(require,module,exports){
|
|
516
538
|
/**
|
|
517
539
|
* Expose `isError`.
|
|
518
540
|
*/
|
|
@@ -539,7 +561,7 @@ function isError(value) {
|
|
|
539
561
|
}
|
|
540
562
|
}
|
|
541
563
|
|
|
542
|
-
},{}],
|
|
564
|
+
},{}],20:[function(require,module,exports){
|
|
543
565
|
'use strict';
|
|
544
566
|
|
|
545
567
|
/*!
|
|
@@ -553,7 +575,7 @@ function isObject(val) {
|
|
|
553
575
|
}
|
|
554
576
|
module.exports = isObject;
|
|
555
577
|
|
|
556
|
-
},{}],
|
|
578
|
+
},{}],21:[function(require,module,exports){
|
|
557
579
|
var toString = Object.prototype.toString;
|
|
558
580
|
module.exports = function kindOf(val) {
|
|
559
581
|
if (val === void 0) return 'undefined';
|
|
@@ -684,7 +706,7 @@ function isBuffer(val) {
|
|
|
684
706
|
return false;
|
|
685
707
|
}
|
|
686
708
|
|
|
687
|
-
},{}],
|
|
709
|
+
},{}],22:[function(require,module,exports){
|
|
688
710
|
'use strict';
|
|
689
711
|
|
|
690
712
|
const isOptionObject = require('is-plain-obj');
|
|
@@ -842,7 +864,7 @@ module.exports = function () {
|
|
|
842
864
|
return merged._;
|
|
843
865
|
};
|
|
844
866
|
|
|
845
|
-
},{"is-plain-obj":
|
|
867
|
+
},{"is-plain-obj":17}],23:[function(require,module,exports){
|
|
846
868
|
exports.endianness = function () {
|
|
847
869
|
return 'LE';
|
|
848
870
|
};
|
|
@@ -892,7 +914,7 @@ exports.homedir = function () {
|
|
|
892
914
|
return '/';
|
|
893
915
|
};
|
|
894
916
|
|
|
895
|
-
},{}],
|
|
917
|
+
},{}],24:[function(require,module,exports){
|
|
896
918
|
'use strict';
|
|
897
919
|
|
|
898
920
|
const pMapSeries = async (iterable, mapper) => {
|
|
@@ -908,7 +930,7 @@ module.exports = pMapSeries;
|
|
|
908
930
|
// TODO: Remove this for the next major release
|
|
909
931
|
module.exports.default = pMapSeries;
|
|
910
932
|
|
|
911
|
-
},{}],
|
|
933
|
+
},{}],25:[function(require,module,exports){
|
|
912
934
|
"use strict";
|
|
913
935
|
|
|
914
936
|
function _createForOfIteratorHelper(o, allowArrayLike) {
|
|
@@ -1026,7 +1048,7 @@ const parseErr = function parseErr(err) {
|
|
|
1026
1048
|
};
|
|
1027
1049
|
module.exports = parseErr;
|
|
1028
1050
|
|
|
1029
|
-
},{"iserror":
|
|
1051
|
+
},{"iserror":19}],26:[function(require,module,exports){
|
|
1030
1052
|
'use strict';
|
|
1031
1053
|
|
|
1032
1054
|
const get = require('@strikeentco/get');
|
|
@@ -1060,7 +1082,7 @@ module.exports = function (obj, paths) {
|
|
|
1060
1082
|
return pick(obj, paths, length, sep);
|
|
1061
1083
|
};
|
|
1062
1084
|
|
|
1063
|
-
},{"@strikeentco/get":2,"@strikeentco/set":3}],
|
|
1085
|
+
},{"@strikeentco/get":2,"@strikeentco/set":3}],27:[function(require,module,exports){
|
|
1064
1086
|
// shim for using process in browser
|
|
1065
1087
|
var process = module.exports = {};
|
|
1066
1088
|
|
|
@@ -1237,7 +1259,7 @@ process.umask = function () {
|
|
|
1237
1259
|
return 0;
|
|
1238
1260
|
};
|
|
1239
1261
|
|
|
1240
|
-
},{}],
|
|
1262
|
+
},{}],28:[function(require,module,exports){
|
|
1241
1263
|
/*!
|
|
1242
1264
|
* unset-value <https://github.com/jonschlinkert/unset-value>
|
|
1243
1265
|
*
|
|
@@ -1282,11 +1304,11 @@ module.exports = function unset(obj, prop) {
|
|
|
1282
1304
|
return true;
|
|
1283
1305
|
};
|
|
1284
1306
|
|
|
1285
|
-
},{"has-value":14,"isobject":
|
|
1307
|
+
},{"has-value":14,"isobject":20}],29:[function(require,module,exports){
|
|
1286
1308
|
module.exports={
|
|
1287
1309
|
"name": "axe",
|
|
1288
1310
|
"description": "Axe is a logger-agnostic wrapper that normalizes logs regardless of argument style. Great for large development teams, old and new projects, and works with Pino, Bunyan, Winston, console, and more. It is lightweight, performant, highly-configurable, and automatically adds OS, CPU, and Git information to your logs. It supports hooks (useful for masking sensitive data) and dot-notation remapping, omitting, and picking of log metadata properties. Made for Forward Email, Lad, and Cabin.",
|
|
1289
|
-
"version": "12.2.
|
|
1311
|
+
"version": "12.2.8",
|
|
1290
1312
|
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
|
|
1291
1313
|
"browser": {
|
|
1292
1314
|
"parse-app-info": false
|
|
@@ -1317,9 +1339,9 @@ module.exports={
|
|
|
1317
1339
|
"unset-value": "2.0.1"
|
|
1318
1340
|
},
|
|
1319
1341
|
"devDependencies": {
|
|
1320
|
-
"@babel/cli": "^7.24.
|
|
1321
|
-
"@babel/core": "^7.24.
|
|
1322
|
-
"@babel/preset-env": "^7.24.
|
|
1342
|
+
"@babel/cli": "^7.24.7",
|
|
1343
|
+
"@babel/core": "^7.24.7",
|
|
1344
|
+
"@babel/preset-env": "^7.24.7",
|
|
1323
1345
|
"@commitlint/cli": "^19.3.0",
|
|
1324
1346
|
"@commitlint/config-conventional": "^19.2.2",
|
|
1325
1347
|
"ava": "5.3.1",
|
|
@@ -1334,19 +1356,19 @@ module.exports={
|
|
|
1334
1356
|
"express": "^4.19.2",
|
|
1335
1357
|
"fixpack": "^4.0.0",
|
|
1336
1358
|
"husky": "^9.0.11",
|
|
1337
|
-
"jsdom": "15
|
|
1359
|
+
"jsdom": "15",
|
|
1338
1360
|
"koa": "^2.15.3",
|
|
1339
|
-
"lint-staged": "^15.2.
|
|
1361
|
+
"lint-staged": "^15.2.7",
|
|
1340
1362
|
"lodash": "^4.17.21",
|
|
1341
|
-
"nyc": "^
|
|
1342
|
-
"pino": "^9.
|
|
1363
|
+
"nyc": "^17.0.0",
|
|
1364
|
+
"pino": "^9.2.0",
|
|
1343
1365
|
"remark-cli": "11.0.0",
|
|
1344
1366
|
"remark-preset-github": "^4.0.4",
|
|
1345
1367
|
"rimraf": "^5.0.5",
|
|
1346
1368
|
"signale": "^1.4.0",
|
|
1347
|
-
"sinon": "^
|
|
1369
|
+
"sinon": "^18.0.0",
|
|
1348
1370
|
"tinyify": "3.0.0",
|
|
1349
|
-
"tsd": "^0.31.
|
|
1371
|
+
"tsd": "^0.31.1",
|
|
1350
1372
|
"xo": "0.56.0"
|
|
1351
1373
|
},
|
|
1352
1374
|
"engines": {
|
|
@@ -1422,8 +1444,8 @@ module.exports={
|
|
|
1422
1444
|
"unpkg": "dist/axe.min.js"
|
|
1423
1445
|
}
|
|
1424
1446
|
|
|
1425
|
-
},{}],
|
|
1426
|
-
(function (process){(function (){
|
|
1447
|
+
},{}],30:[function(require,module,exports){
|
|
1448
|
+
(function (Buffer,process){(function (){
|
|
1427
1449
|
// eslint-disable-next-line import/no-unassigned-import
|
|
1428
1450
|
require('console-polyfill');
|
|
1429
1451
|
|
|
@@ -1468,6 +1490,9 @@ function isPlainObject(value) {
|
|
|
1468
1490
|
function dotifyToArray(obj) {
|
|
1469
1491
|
const res = [];
|
|
1470
1492
|
function recurse(obj, current) {
|
|
1493
|
+
// if it's a buffer, uint8array, or array
|
|
1494
|
+
// eslint-disable-next-line n/prefer-global/buffer
|
|
1495
|
+
if (Buffer.isBuffer(obj) || obj instanceof Uint8Array || Array.isArray(obj)) return;
|
|
1471
1496
|
for (const key of Reflect.ownKeys(obj)) {
|
|
1472
1497
|
const value = obj[key];
|
|
1473
1498
|
const convertedKey = isSymbol(key) ? Symbol.keyFor(key) || key.description : key;
|
|
@@ -1958,6 +1983,6 @@ class Axe {
|
|
|
1958
1983
|
}
|
|
1959
1984
|
module.exports = Axe;
|
|
1960
1985
|
|
|
1961
|
-
}).call(this)}).call(this,require('_process'))
|
|
1962
|
-
},{"../package.json":
|
|
1986
|
+
}).call(this)}).call(this,{"isBuffer":require("../node_modules/is-buffer/index.js")},require('_process'))
|
|
1987
|
+
},{"../node_modules/is-buffer/index.js":16,"../package.json":29,"@ladjs/format-util":1,"@strikeentco/get":2,"@strikeentco/set":3,"_process":27,"boolean":5,"console-polyfill":8,"format-specifiers":9,"is-symbol":18,"iserror":19,"merge-options":22,"os":23,"p-map-series":24,"parse-app-info":7,"parse-err":25,"pick-deep":26,"unset-value":28}]},{},[30])(30)
|
|
1963
1988
|
});
|
package/dist/axe.min.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Axe=e()}}((function(){!function(e){"use strict";e.console||(e.console={});for(var t,r,n=e.console,o=function(){},i=["memory"],s="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=i.pop();)n[t]||(n[t]={});for(;r=s.pop();)n[r]||(n[r]=o)}("undefined"==typeof window?this:window);var e={hostname:function(){return"undefined"!=typeof location?location.hostname:""}},t=function(e){var t=Array.prototype.slice.call(arguments,1);return t.length&&(e=e.toString().replace(/(%?)(%([jds]))/g,(function(e,r,n,o){var i=t.shift();switch(o){case"s":i=""+i;break;case"d":i=Number(i);break;case"j":i=JSON.stringify(i)}return r?(t.unshift(i),e):i}))),t.length&&(e=e.toString()+" "+t.join(" ")),""+e.toString().replace(/%{2,2}/g,"%")},r=["%s","%d","%i","%f","%j","%o","%O","%%"],n=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(n=e,"[object Object]"!==Object.prototype.toString.call(n)||!t)return e;var n;const o=Array.isArray(t)?t:String(t).split(r),{length:i}=o;return i<2?e[o[0]]:((e,t,r)=>{for(let n=0;n<r;n++){if(null===e)return;const r=e[t[n]];if(void 0===r)return;e=r}return e})(e,o,i)},o=function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},i="undefined"!=typeof Symbol&&Symbol,s={},c=Object.prototype.toString;if("function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}()){var f=Symbol.prototype.toString,a=/^Symbol\(.*\)$/;s=function(e){if("symbol"==typeof e)return!0;if("[object Symbol]"!==c.call(e))return!1;try{return function(e){return"symbol"==typeof e.valueOf()&&a.test(f.call(e))}(e)}catch(t){return!1}}}else s=function(e){return!1};var l=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};const{hasOwnProperty:u}=Object.prototype,{propertyIsEnumerable:p}=Object,g=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),y=this,h={concatArrays:!1,ignoreUndefined:!1},d=e=>{const t=[];for(const r in e)u.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(const n of r)p.call(e,n)&&t.push(n)}return t};function m(e){return Array.isArray(e)?function(e){const t=e.slice(0,0);return d(e).forEach(r=>{g(t,r,m(e[r]))}),t}(e):l(e)?function(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return d(e).forEach(r=>{g(t,r,m(e[r]))}),t}(e):e}const b=(e,t,r,n)=>(r.forEach(r=>{void 0===t[r]&&n.ignoreUndefined||(r in e&&e[r]!==Object.getPrototypeOf(e)?g(e,r,v(e[r],t[r],n)):g(e,r,m(t[r])))}),e);function v(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?((e,t,r)=>{let n=e.slice(0,0),o=0;return[e,t].forEach(t=>{const i=[];for(let r=0;r<t.length;r++)u.call(t,r)&&(i.push(String(r)),g(n,o++,t===e?t[r]:m(t[r])));n=b(n,t,d(t).filter(e=>!i.includes(e)),r)}),n})(e,t,r):l(t)&&l(e)?b(e,t,d(t),r):m(t)}var O={};const A=async(e,t)=>{const r=[];let n=0;for(const o of e)r.push(await t(await o,n++));return r};(O=A).default=A;var w={};function j(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return S(e,void 0);var r=Object.prototype.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)?S(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,s=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return s=e.done,e},e:function(e){c=!0,i=e},f:function(){try{s||null==r.return||r.return()}finally{if(c)throw i}}}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var E=function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!o(t))throw new Error("`err` must be an Error");if(!Array.isArray(r))throw new TypeError("`fields` must be an Array");const n={};var i,s=j(new Set([...Object.getOwnPropertyNames(Object.getPrototypeOf(t)),...Object.getOwnPropertyNames(t)]));try{for(s.s();!(i=s.n()).done;){const e=i.value;"function"!=typeof t[e]&&(n[e]=t[e])}}catch(t){s.e(t)}finally{s.f()}return!n.name&&t.constructor.name&&(n.name=t.constructor.name),Array.isArray(t.errors)&&(n.errors=t.errors.map(t=>o(t)?e(t,r):t)),Array.isArray(r)&&r.length>0?n.filter(e=>r.includes(e)):n};const _=e=>"object"==typeof e||"function"==typeof e,T=(e,t)=>"__proto__"==e||"constructor"==e&&"function"==typeof t.constructor;var P=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".";if(!_(e)||!t||!t.length)return e;const o=Array.isArray(t)?t:String(t).split(n);if(T(o[0],e))return e;const{length:i}=o;return 1===i?(e[o[0]]=r,e):((e,t,r,n)=>{let o=e,i=0;for(;i<r-1;i++){const e=t[i];T(e,o)||(o=_(o[e])?o[e]:o[e]={})}return o[t[i]]=n,e})(e,o,i,r)},k=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)};function x(e,t,r){return"function"==typeof r.join?r.join(e):e[0]+t+e[1]}function I(e,t,r){return"function"!=typeof r.isValid||r.isValid(e,t)}function L(e){return k(e)||Array.isArray(e)||"function"==typeof e}var M=Object.prototype.toString;function F(e){return"function"==typeof e.constructor?e.constructor.name:null}var N=function e(t){switch(function(e){if(void 0===e)return"undefined";if(null===e)return"null";var t=typeof e;if("boolean"===t)return"boolean";if("string"===t)return"string";if("number"===t)return"number";if("symbol"===t)return"symbol";if("function"===t)return"GeneratorFunction"===F(e)?"generatorfunction":"function";if(function(e){return Array.isArray?Array.isArray(e):e instanceof Array}(e))return"array";if(function(e){return!(!e.constructor||"function"!=typeof e.constructor.isBuffer)&&e.constructor.isBuffer(e)}(e))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(e))return"arguments";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";if(function(e){return e instanceof RegExp||"string"==typeof e.flags&&"boolean"==typeof e.ignoreCase&&"boolean"==typeof e.multiline&&"boolean"==typeof e.global}(e))return"regexp";switch(F(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(e){return"function"==typeof e.throw&&"function"==typeof e.return&&"function"==typeof e.next}(e))return"generator";switch(t=M.call(e)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return t.slice(8,-1).toLowerCase().replace(/\s/g,"")}(t)){case"boolean":case"date":case"function":case"null":case"number":return!0;case"undefined":return!1;case"regexp":return"(?:)"!==t.source&&""!==t.source;case"buffer":return""!==t.toString();case"error":return""!==t.message;case"string":case"arguments":return 0!==t.length;case"file":case"map":case"set":return 0!==t.size;case"array":case"object":for(const r of Object.keys(t))if(e(t[r]))return!0;return!1;default:return!0}},D=function(e,t,r){return!(null==(n=e)||"object"!=typeof n&&"function"!=typeof n&&!Array.isArray(n)||"string"!=typeof t&&!Array.isArray(t))&&N(function(e,t,r){if(k(r)||(r={default:r}),!L(e))return void 0!==r.default?r.default:e;"number"==typeof t&&(t=String(t));const n=Array.isArray(t),o="string"==typeof t,i=r.separator||".",s=r.joinChar||("string"==typeof i?i:".");if(!o&&!n)return e;if(o&&t in e)return I(t,e,r)?e[t]:r.default;let c=n?t:function(e,t,r){return"function"==typeof r.split?r.split(e):e.split(t)}(t,i,r),f=c.length,a=0;do{let t=c[a];for("number"==typeof t&&(t=String(t));t&&"\\"===t.slice(-1);)t=x([t.slice(0,-1),c[++a]||""],s,r);if(t in e){if(!I(t,e,r))return r.default;e=e[t]}else{let n=!1,o=a+1;for(;o<f;)if(n=(t=x([t,c[o++]],s,r))in e){if(!I(t,e,r))return r.default;e=e[t],a=o-1;break}if(!n)return r.default}}while(++a<f&&L(e));return a===f?e:r.default}(e,t,r));var n};const C=e=>{if((e=>"__proto__"===e||"constructor"===e||"prototype"===e)(e))throw new Error(`Cannot set unsafe key: "${e}"`)};var B=function(e,t){if(null==(r=e)||"object"!=typeof r||!1!==Array.isArray(r))throw new TypeError("expected an object.");var r,n=Array.isArray(t);if(!n&&e.hasOwnProperty(t))return delete e[t],!0;if(D(e,t)){for(var o=n?t.slice():t.split("."),i=o.pop();o.length&&"\\"===o[o.length-1].slice(-1);)i=o.pop().slice(0,-1)+"."+i;for(;o.length;)t=o.shift(),C(t),e=e[t];return delete e[i]}return!0},X={};Object.defineProperty(X,"__esModule",{value:!0}),X.boolean=void 0,X.boolean=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1"].includes(e.trim().toLowerCase());case"[object Number]":return 1===e.valueOf();case"[object Boolean]":return e.valueOf();default:return!1}};var H={};Object.defineProperty(H,"__esModule",{value:!0}),H.isBooleanable=void 0,H.isBooleanable=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1","false","f","no","n","off","0"].includes(e.trim().toLowerCase());case"[object Number]":return[0,1].includes(e.valueOf());case"[object Boolean]":return!0;default:return!1}};var R={};Object.defineProperty(R,"__esModule",{value:!0}),R.boolean=void 0,Object.defineProperty(R,"boolean",{enumerable:!0,get:function(){return X.boolean}}),Object.defineProperty(R,"isBooleanable",{enumerable:!0,get:function(){return H.isBooleanable}});var U,K,W,z="12.2.6",$=U={};function V(){throw new Error("setTimeout has not been defined")}function G(){throw new Error("clearTimeout has not been defined")}function J(e){if(K===setTimeout)return setTimeout(e,0);if((K===V||!K)&&setTimeout)return K=setTimeout,setTimeout(e,0);try{return K(e,0)}catch(t){try{return K.call(null,e,0)}catch(t){return K.call(this,e,0)}}}!function(){try{K="function"==typeof setTimeout?setTimeout:V}catch(e){K=V}try{W="function"==typeof clearTimeout?clearTimeout:G}catch(e){W=G}}();var q,Q=[],Y=!1,Z=-1;function ee(){Y&&q&&(Y=!1,q.length?Q=q.concat(Q):Z=-1,Q.length&&te())}function te(){if(!Y){var e=J(ee);Y=!0;for(var t=Q.length;t;){for(q=Q,Q=[];++Z<t;)q&&q[Z].run();Z=-1,t=Q.length}q=null,Y=!1,function(e){if(W===clearTimeout)return clearTimeout(e);if((W===G||!W)&&clearTimeout)return W=clearTimeout,clearTimeout(e);try{W(e)}catch(t){try{return W.call(null,e)}catch(t){return W.call(this,e)}}}(e)}}function re(e,t){this.fun=e,this.array=t}function ne(){}$.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Q.push(new re(e,t)),1!==Q.length||Y||J(te)},re.prototype.run=function(){this.fun.apply(null,this.array)},$.title="browser",$.browser=!0,$.env={},$.argv=[],$.version="",$.versions={},$.on=ne,$.addListener=ne,$.once=ne,$.off=ne,$.removeListener=ne,$.removeAllListeners=ne,$.emit=ne,$.prependListener=ne,$.prependOnceListener=ne,$.listeners=function(e){return[]},$.binding=function(e){throw new Error("process.binding is not supported")},$.cwd=function(){return"/"},$.chdir=function(e){throw new Error("process.chdir is not supported")},$.umask=function(){return 0};var oe={};return function(i){(function(){const{boolean:c}=R,f=Symbol.for("axe.silent"),a=new Set(["config","log"]),u=["trace","debug","info","warn","error","fatal"],p={warning:"warn",err:"error"},g="`level` invalid, must be: "+u.join(", "),d=i.env.HOSTNAME||e.hostname();function b(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e||s(e))}function A(e){return null==e||"object"==typeof e&&0===Reflect.ownKeys(e).length||"string"==typeof e&&0===e.trim().length}function j(e){return void 0===e}function S(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function _(e){return"string"==typeof e}function T(e){return"function"==typeof e}function k(e){return T(e)?e:null}oe=class{constructor(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r={};if(i.env.AXE_REMAPPED_META_FIELDS){const e=i.env.AXE_REMAPPED_META_FIELDS.split(",").map(e=>e.split(":"));for(const[t,n]of e)r[t]=n}let n=i.env.AXE_OMIT_META_FIELDS;"string"==typeof n&&(n=n.split(",").map(e=>e.trim())),Array.isArray(n)||(n=[]);let o=i.env.AXE_PICK_META_FIELDS;"string"==typeof o&&(o=o.split(",").map(e=>e.trim())),Array.isArray(o)||(o=[]),this.config=function(){const e=v(m(h),this!==y&&this||{},h);let t={_:{}};for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];for(const i of n)if(void 0!==i){if(!l(i))throw new TypeError("`"+i+"` is not an Option Object");t=v(t,{_:i},e)}return t._}({showStack:!i.env.AXE_SHOW_STACK||c(i.env.AXE_SHOW_STACK),meta:Object.assign({show:!i.env.AXE_SHOW_META||c(i.env.AXE_SHOW_META),remappedFields:r,omittedFields:n,pickedFields:o,cleanupRemapping:!0,hideHTTP:"is_http",hideMeta:"hide_meta"},"object"==typeof t.meta?t.meta:{}),version:z,silent:!1,logger:console,name:d,level:"info",levels:["info","warn","error","fatal"],appInfo:!i.env.AXE_APP_INFO||c(i.env.AXE_APP_INFO),hooks:Object.assign({pre:[],post:[]},"object"==typeof t.hooks?t.hooks:{})},t),this.appInfo=!!this.config.appInfo&&!!T(w)&&w(),this.log=this.log.bind(this);const s=Object.keys(this.config.logger).filter(e=>!a.has(e));for(const i of s)this[i]=this.config.logger[i];for(const i of u){if("fatal"===i?this.config.logger.fatal=k(this.config.logger[i])||k(this.config.logger.error)||k(this.config.logger.info)||k(this.config.logger.log):this.config.logger[i]=k(this.config.logger[i])||k(this.config.logger.info)||k(this.config.logger.log),!T(this.config.logger[i]))throw new Error(`\`${i}\` must be a function on the logger.`);this[i]=function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return e.log(i,...Array.prototype.slice.call(r))}}this.setLevel=this.setLevel.bind(this),this.getNormalizedLevel=this.getNormalizedLevel.bind(this),this.setName=this.setName.bind(this),this.config.name&&this.setName(this.config.name),this.setLevel(this.config.level),this.err=this.error,this.warning=this.warn,this.pre=function(e,t){this.config.hooks.pre.push((function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return e!==r?[...o]:t(...o)}))},this.post=function(e,t){this.config.hooks.post.push((function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return e!==r?[...o]:t(...o)}))}}setLevel(e){if(!_(e)||-1===u.indexOf(e))throw new Error(g);_(this.config.logger.logLevel)?this.config.logger.logLevel=e:this.config.logger.level=e,this.config.levels=u.slice(u.indexOf(e))}getNormalizedLevel(e){return _(e)?_(p[e])?p[e]:-1===u.indexOf(e)?"info":e:"info"}setName(e){if(!_(e))throw new Error("`name` must be a String");_(this.config.logger.scope)?this.config.logger.scope=e:this.config.logger.name=e}log(e,i,a){const l=[],g=[];let y=!1,h=!0;j(e)||l.push(e),j(i)||l.push(i),j(a)||l.push(a);for(var d=arguments.length,m=new Array(d>3?d-3:0),v=3;v<d;v++)m[v-3]=arguments[v];for(const t of Array.prototype.slice.call(m))l.push(t);let w=0;if(_(e)&&_(p[e])?e=p[e]:o(e)?(h=!1,a=i,i=e,e="error"):_(e)&&-1!==u.indexOf(e)||(h=!1,a=i,i=e,e=this.getNormalizedLevel(e),w=-1),-1===this.config.levels.indexOf(e))return;let T,k=!1;if((S(i)||Array.isArray(i))&&_(a)){k=!0;const e=a;a=i,i=_(e)&&l.length>=3+w?t(...l.slice(2+w)):e}if(j(i)&&(i=e),1!==l.slice(1+w).length||_(i)||o(i))if(!k&&l.length>=4+w){i=void 0,a={};const r=[];for(const e of l.slice(h&&0===w?1:0))o(e)?g.push(e):r.push(e);r.length>0&&(i=t(...r),y=!0),g.length>0&&"log"===e&&(e="error")}else if(!k&&l.length===3+w&&_(i)&&r.some(e=>-1!==i.indexOf(e)))i=t(i,a),a={};else if(o(i)){if(o(a)){g.push(a);const r=[];o(i)&&(g.unshift(i),i=void 0);for(const e of l.slice(2+w))a!==e&&(o(e)?g.push(e):r.push(e),r.length>0&&(i=t(...r),y=!0));"log"===e&&(e="error"),a={}}}else o(a)?(g.push(a),a={}):S(a)||j(a)||null===a?_(i)||(i=t(i)):(i=t(i,a),a={});else a={message:i},i=e;j(a)||S(a)?S(a)||(a={}):a={original_meta:a},o(i)&&(g.unshift(i),i=void 0),S(a.err)&&(o(a.err)&&g.push(a.err),a.original_err=o(a.err)?E(a.err):a.err),g.length>0&&(1===g.length?T=g[0]:((T=new Error([...new Set(g.map(e=>e.message).filter(Boolean))].join("; "))).stack=[...new Set(g.map(e=>e.stack).filter(Boolean))].join("\n\n"),T.errors=g),a.err=E(T),_(i)||(i=T.message)),a.level=e,this.appInfo&&(a.app=this.appInfo);const x=-1===w?"log":e;for(const t of this.config.hooks.pre)[T,i,a]=t(x,T,i,a);const I=c(a[f]);if(!A(this.config.meta.remappedFields))for(const t of Reflect.ownKeys(this.config.meta.remappedFields))if(P(a,this.config.meta.remappedFields[t],n(a,t)),B(a,t),this.config.meta.cleanupRemapping){const e=t.lastIndexOf(".");if(-1===e)continue;const r=t.slice(0,e);A(n(a,r))&&B(a,r)}if(!A(this.config.meta.omittedFields)||!A(this.config.meta.pickedFields)){const e=function(e){const t=[];return function e(r,n){for(const o of Reflect.ownKeys(r)){const i=r[o],c=s(o)?Symbol.keyFor(o)||o.description:o,f=n?n+"."+c:c;b(i)&&-1===t.indexOf(c)?(t.push(c),e(i,f)):-1===t.indexOf(f)&&t.push(f)}}(e),t}(a);if(!A(this.config.meta.omittedFields))for(const r of this.config.meta.omittedFields){let t=e.length;for(;t--;)(e[t]===r||!s(e[t])&&0===e[t].indexOf(r+"."))&&e.splice(t,1)}const t=[];if(!A(this.config.meta.pickedFields))for(const r of this.config.meta.pickedFields){if(s(r))a[r]&&t.push([r,a[r]]);else{const t=r.indexOf("."),n=r.slice(0,t+1);if(-1!==t){let t=e.length;for(;t--;)(e[t]===n.slice(0,-1)||0===e[t].indexOf(n))&&e.splice(t,1)}}-1===e.indexOf(r)&&e.push(r)}for(const r of e)s(r)?void 0!==a[r]&&t.push([r,a[r]]):void 0!==a[Symbol.for(r)]&&t.push([Symbol.for(r),a[Symbol.for(r)]]);try{a=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(o=e,"[object Object]"!==Object.prototype.toString.call(o)||!t||!Array.isArray(t)&&"string"!=typeof t)return{};var o;const{length:i}=t;if("string"==typeof t||i<2){const o="string"==typeof t?t:t[0],i=n(e,o,r);return void 0!==i?P({},o,i,r):{}}return((e,t,r,o)=>{const i={};for(let s=0;s<r;s++){const r=t[s],c=n(e,r,o);void 0!==c&&P(i,r,c,o)}return i})(e,t,i,r)}(a,e)}catch(T){this.config.logger.error(T)}if(t.length>0)for(const[r,n]of t)a[r]=n}return this.config.silent||I||(o(T)&&this.config.showStack?!this.config.meta.show||A(a)||this.config.meta.hideMeta&&a[this.config.meta.hideMeta]?this.config.logger[x](...y?[i,T]:[T]):this.config.logger[x](...y?[i,T,a]:[T,a]):!this.config.meta.show||A(a)||this.config.meta.hideMeta&&a[this.config.meta.hideMeta]||this.config.meta.hideHTTP&&a[this.config.meta.hideHTTP]?this.config.logger[x](i):this.config.logger[x](i,a)),0===this.config.hooks.post.length?{method:x,err:T,message:i,meta:a}:O(this.config.hooks.post,e=>e(x,T,i,a)).then().catch(e=>{this.config.logger.error(e)})}}}).call(this)}.call(this,U),oe}));
|
|
1
|
+
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Axe=e()}}((function(){!function(e){"use strict";e.console||(e.console={});for(var t,r,n=e.console,o=function(){},i=["memory"],c="assert,clear,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profiles,profileEnd,show,table,time,timeEnd,timeline,timelineEnd,timeStamp,trace,warn".split(",");t=i.pop();)n[t]||(n[t]={});for(;r=c.pop();)n[r]||(n[r]=o)}("undefined"==typeof window?this:window);var e={hostname:function(){return"undefined"!=typeof location?location.hostname:""}},t=function(e){var t=Array.prototype.slice.call(arguments,1);return t.length&&(e=e.toString().replace(/(%?)(%([jds]))/g,(function(e,r,n,o){var i=t.shift();switch(o){case"s":i=""+i;break;case"d":i=Number(i);break;case"j":i=JSON.stringify(i)}return r?(t.unshift(i),e):i}))),t.length&&(e=e.toString()+" "+t.join(" ")),""+e.toString().replace(/%{2,2}/g,"%")},r=["%s","%d","%i","%f","%j","%o","%O","%%"],n=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(n=e,"[object Object]"!==Object.prototype.toString.call(n)||!t)return e;var n;const o=Array.isArray(t)?t:String(t).split(r),{length:i}=o;return i<2?e[o[0]]:((e,t,r)=>{for(let n=0;n<r;n++){if(null===e)return;const r=e[t[n]];if(void 0===r)return;e=r}return e})(e,o,i)},o=function(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return e instanceof Error}},i="undefined"!=typeof Symbol&&Symbol,c={},s=Object.prototype.toString;if("function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var n=Object.getOwnPropertySymbols(e);if(1!==n.length||n[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var o=Object.getOwnPropertyDescriptor(e,t);if(42!==o.value||!0!==o.enumerable)return!1}return!0}()){var f=Symbol.prototype.toString,a=/^Symbol\(.*\)$/;c=function(e){if("symbol"==typeof e)return!0;if("[object Symbol]"!==s.call(e))return!1;try{return function(e){return"symbol"==typeof e.valueOf()&&a.test(f.call(e))}(e)}catch(t){return!1}}}else c=function(e){return!1};var l=e=>{if("[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.prototype};const{hasOwnProperty:u}=Object.prototype,{propertyIsEnumerable:p}=Object,g=(e,t,r)=>Object.defineProperty(e,t,{value:r,writable:!0,enumerable:!0,configurable:!0}),y=this,h={concatArrays:!1,ignoreUndefined:!1},d=e=>{const t=[];for(const r in e)u.call(e,r)&&t.push(r);if(Object.getOwnPropertySymbols){const r=Object.getOwnPropertySymbols(e);for(const n of r)p.call(e,n)&&t.push(n)}return t};function m(e){return Array.isArray(e)?function(e){const t=e.slice(0,0);return d(e).forEach(r=>{g(t,r,m(e[r]))}),t}(e):l(e)?function(e){const t=null===Object.getPrototypeOf(e)?Object.create(null):{};return d(e).forEach(r=>{g(t,r,m(e[r]))}),t}(e):e}const b=(e,t,r,n)=>(r.forEach(r=>{void 0===t[r]&&n.ignoreUndefined||(r in e&&e[r]!==Object.getPrototypeOf(e)?g(e,r,v(e[r],t[r],n)):g(e,r,m(t[r])))}),e);function v(e,t,r){return r.concatArrays&&Array.isArray(e)&&Array.isArray(t)?((e,t,r)=>{let n=e.slice(0,0),o=0;return[e,t].forEach(t=>{const i=[];for(let r=0;r<t.length;r++)u.call(t,r)&&(i.push(String(r)),g(n,o++,t===e?t[r]:m(t[r])));n=b(n,t,d(t).filter(e=>!i.includes(e)),r)}),n})(e,t,r):l(t)&&l(e)?b(e,t,d(t),r):m(t)}var A={};const O=async(e,t)=>{const r=[];let n=0;for(const o of e)r.push(await t(await o,n++));return r};(A=O).default=O;var w={};function j(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return S(e,void 0);var r=Object.prototype.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)?S(e,void 0):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return c=e.done,e},e:function(e){s=!0,i=e},f:function(){try{c||null==r.return||r.return()}finally{if(s)throw i}}}}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var E=function e(t){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(!o(t))throw new Error("`err` must be an Error");if(!Array.isArray(r))throw new TypeError("`fields` must be an Array");const n={};var i,c=j(new Set([...Object.getOwnPropertyNames(Object.getPrototypeOf(t)),...Object.getOwnPropertyNames(t)]));try{for(c.s();!(i=c.n()).done;){const e=i.value;"function"!=typeof t[e]&&(n[e]=t[e])}}catch(t){c.e(t)}finally{c.f()}return!n.name&&t.constructor.name&&(n.name=t.constructor.name),Array.isArray(t.errors)&&(n.errors=t.errors.map(t=>o(t)?e(t,r):t)),Array.isArray(r)&&r.length>0?n.filter(e=>r.includes(e)):n};const _=e=>"object"==typeof e||"function"==typeof e,T=(e,t)=>"__proto__"==e||"constructor"==e&&"function"==typeof t.constructor;var P=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:".";if(!_(e)||!t||!t.length)return e;const o=Array.isArray(t)?t:String(t).split(n);if(T(o[0],e))return e;const{length:i}=o;return 1===i?(e[o[0]]=r,e):((e,t,r,n)=>{let o=e,i=0;for(;i<r-1;i++){const e=t[i];T(e,o)||(o=_(o[e])?o[e]:o[e]={})}return o[t[i]]=n,e})(e,o,i,r)},k=function(e){return null!=e&&"object"==typeof e&&!1===Array.isArray(e)};function x(e,t,r){return"function"==typeof r.join?r.join(e):e[0]+t+e[1]}function I(e,t,r){return"function"!=typeof r.isValid||r.isValid(e,t)}function L(e){return k(e)||Array.isArray(e)||"function"==typeof e}var F=Object.prototype.toString;function M(e){return"function"==typeof e.constructor?e.constructor.name:null}var N=function e(t){switch(function(e){if(void 0===e)return"undefined";if(null===e)return"null";var t=typeof e;if("boolean"===t)return"boolean";if("string"===t)return"string";if("number"===t)return"number";if("symbol"===t)return"symbol";if("function"===t)return"GeneratorFunction"===M(e)?"generatorfunction":"function";if(function(e){return Array.isArray?Array.isArray(e):e instanceof Array}(e))return"array";if(function(e){return!(!e.constructor||"function"!=typeof e.constructor.isBuffer)&&e.constructor.isBuffer(e)}(e))return"buffer";if(function(e){try{if("number"==typeof e.length&&"function"==typeof e.callee)return!0}catch(t){if(-1!==t.message.indexOf("callee"))return!0}return!1}(e))return"arguments";if(function(e){return e instanceof Date||"function"==typeof e.toDateString&&"function"==typeof e.getDate&&"function"==typeof e.setDate}(e))return"date";if(function(e){return e instanceof Error||"string"==typeof e.message&&e.constructor&&"number"==typeof e.constructor.stackTraceLimit}(e))return"error";if(function(e){return e instanceof RegExp||"string"==typeof e.flags&&"boolean"==typeof e.ignoreCase&&"boolean"==typeof e.multiline&&"boolean"==typeof e.global}(e))return"regexp";switch(M(e)){case"Symbol":return"symbol";case"Promise":return"promise";case"WeakMap":return"weakmap";case"WeakSet":return"weakset";case"Map":return"map";case"Set":return"set";case"Int8Array":return"int8array";case"Uint8Array":return"uint8array";case"Uint8ClampedArray":return"uint8clampedarray";case"Int16Array":return"int16array";case"Uint16Array":return"uint16array";case"Int32Array":return"int32array";case"Uint32Array":return"uint32array";case"Float32Array":return"float32array";case"Float64Array":return"float64array"}if(function(e){return"function"==typeof e.throw&&"function"==typeof e.return&&"function"==typeof e.next}(e))return"generator";switch(t=F.call(e)){case"[object Object]":return"object";case"[object Map Iterator]":return"mapiterator";case"[object Set Iterator]":return"setiterator";case"[object String Iterator]":return"stringiterator";case"[object Array Iterator]":return"arrayiterator"}return t.slice(8,-1).toLowerCase().replace(/\s/g,"")}(t)){case"boolean":case"date":case"function":case"null":case"number":return!0;case"undefined":return!1;case"regexp":return"(?:)"!==t.source&&""!==t.source;case"buffer":return""!==t.toString();case"error":return""!==t.message;case"string":case"arguments":return 0!==t.length;case"file":case"map":case"set":return 0!==t.size;case"array":case"object":for(const r of Object.keys(t))if(e(t[r]))return!0;return!1;default:return!0}},B=function(e,t,r){return!(null==(n=e)||"object"!=typeof n&&"function"!=typeof n&&!Array.isArray(n)||"string"!=typeof t&&!Array.isArray(t))&&N(function(e,t,r){if(k(r)||(r={default:r}),!L(e))return void 0!==r.default?r.default:e;"number"==typeof t&&(t=String(t));const n=Array.isArray(t),o="string"==typeof t,i=r.separator||".",c=r.joinChar||("string"==typeof i?i:".");if(!o&&!n)return e;if(o&&t in e)return I(t,e,r)?e[t]:r.default;let s=n?t:function(e,t,r){return"function"==typeof r.split?r.split(e):e.split(t)}(t,i,r),f=s.length,a=0;do{let t=s[a];for("number"==typeof t&&(t=String(t));t&&"\\"===t.slice(-1);)t=x([t.slice(0,-1),s[++a]||""],c,r);if(t in e){if(!I(t,e,r))return r.default;e=e[t]}else{let n=!1,o=a+1;for(;o<f;)if(n=(t=x([t,s[o++]],c,r))in e){if(!I(t,e,r))return r.default;e=e[t],a=o-1;break}if(!n)return r.default}}while(++a<f&&L(e));return a===f?e:r.default}(e,t,r));var n};const D=e=>{if((e=>"__proto__"===e||"constructor"===e||"prototype"===e)(e))throw new Error(`Cannot set unsafe key: "${e}"`)};var C=function(e,t){if(null==(r=e)||"object"!=typeof r||!1!==Array.isArray(r))throw new TypeError("expected an object.");var r,n=Array.isArray(t);if(!n&&e.hasOwnProperty(t))return delete e[t],!0;if(B(e,t)){for(var o=n?t.slice():t.split("."),i=o.pop();o.length&&"\\"===o[o.length-1].slice(-1);)i=o.pop().slice(0,-1)+"."+i;for(;o.length;)t=o.shift(),D(t),e=e[t];return delete e[i]}return!0},X={};Object.defineProperty(X,"__esModule",{value:!0}),X.boolean=void 0,X.boolean=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1"].includes(e.trim().toLowerCase());case"[object Number]":return 1===e.valueOf();case"[object Boolean]":return e.valueOf();default:return!1}};var H={};Object.defineProperty(H,"__esModule",{value:!0}),H.isBooleanable=void 0,H.isBooleanable=function(e){switch(Object.prototype.toString.call(e)){case"[object String]":return["true","t","yes","y","on","1","false","f","no","n","off","0"].includes(e.trim().toLowerCase());case"[object Number]":return[0,1].includes(e.valueOf());case"[object Boolean]":return!0;default:return!1}};var R={};Object.defineProperty(R,"__esModule",{value:!0}),R.boolean=void 0,Object.defineProperty(R,"boolean",{enumerable:!0,get:function(){return X.boolean}}),Object.defineProperty(R,"isBooleanable",{enumerable:!0,get:function(){return H.isBooleanable}});var U="12.2.8";function K(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var W,z,$,V=W={};function G(){throw new Error("setTimeout has not been defined")}function J(){throw new Error("clearTimeout has not been defined")}function q(e){if(z===setTimeout)return setTimeout(e,0);if((z===G||!z)&&setTimeout)return z=setTimeout,setTimeout(e,0);try{return z(e,0)}catch(t){try{return z.call(null,e,0)}catch(t){return z.call(this,e,0)}}}!function(){try{z="function"==typeof setTimeout?setTimeout:G}catch(e){z=G}try{$="function"==typeof clearTimeout?clearTimeout:J}catch(e){$=J}}();var Q,Y=[],Z=!1,ee=-1;function te(){Z&&Q&&(Z=!1,Q.length?Y=Q.concat(Y):ee=-1,Y.length&&re())}function re(){if(!Z){var e=q(te);Z=!0;for(var t=Y.length;t;){for(Q=Y,Y=[];++ee<t;)Q&&Q[ee].run();ee=-1,t=Y.length}Q=null,Z=!1,function(e){if($===clearTimeout)return clearTimeout(e);if(($===J||!$)&&clearTimeout)return $=clearTimeout,clearTimeout(e);try{$(e)}catch(t){try{return $.call(null,e)}catch(t){return $.call(this,e)}}}(e)}}function ne(e,t){this.fun=e,this.array=t}function oe(){}V.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];Y.push(new ne(e,t)),1!==Y.length||Z||q(re)},ne.prototype.run=function(){this.fun.apply(null,this.array)},V.title="browser",V.browser=!0,V.env={},V.argv=[],V.version="",V.versions={},V.on=oe,V.addListener=oe,V.once=oe,V.off=oe,V.removeListener=oe,V.removeAllListeners=oe,V.emit=oe,V.prependListener=oe,V.prependOnceListener=oe,V.listeners=function(e){return[]},V.binding=function(e){throw new Error("process.binding is not supported")},V.cwd=function(){return"/"},V.chdir=function(e){throw new Error("process.chdir is not supported")},V.umask=function(){return 0};var ie={};return function(i,s){(function(){const{boolean:f}=R,a=Symbol.for("axe.silent"),u=new Set(["config","log"]),p=["trace","debug","info","warn","error","fatal"],g={warning:"warn",err:"error"},d="`level` invalid, must be: "+p.join(", "),b=s.env.HOSTNAME||e.hostname();function O(e){if("object"!=typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e||c(e))}function j(e){return null==e||"object"==typeof e&&0===Reflect.ownKeys(e).length||"string"==typeof e&&0===e.trim().length}function S(e){return void 0===e}function _(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function T(e){return"string"==typeof e}function k(e){return"function"==typeof e}function x(e){return k(e)?e:null}ie=class{constructor(){var e=this;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r={};if(s.env.AXE_REMAPPED_META_FIELDS){const e=s.env.AXE_REMAPPED_META_FIELDS.split(",").map(e=>e.split(":"));for(const[t,n]of e)r[t]=n}let n=s.env.AXE_OMIT_META_FIELDS;"string"==typeof n&&(n=n.split(",").map(e=>e.trim())),Array.isArray(n)||(n=[]);let o=s.env.AXE_PICK_META_FIELDS;"string"==typeof o&&(o=o.split(",").map(e=>e.trim())),Array.isArray(o)||(o=[]),this.config=function(){const e=v(m(h),this!==y&&this||{},h);let t={_:{}};for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];for(const i of n)if(void 0!==i){if(!l(i))throw new TypeError("`"+i+"` is not an Option Object");t=v(t,{_:i},e)}return t._}({showStack:!s.env.AXE_SHOW_STACK||f(s.env.AXE_SHOW_STACK),meta:Object.assign({show:!s.env.AXE_SHOW_META||f(s.env.AXE_SHOW_META),remappedFields:r,omittedFields:n,pickedFields:o,cleanupRemapping:!0,hideHTTP:"is_http",hideMeta:"hide_meta"},"object"==typeof t.meta?t.meta:{}),version:U,silent:!1,logger:console,name:b,level:"info",levels:["info","warn","error","fatal"],appInfo:!s.env.AXE_APP_INFO||f(s.env.AXE_APP_INFO),hooks:Object.assign({pre:[],post:[]},"object"==typeof t.hooks?t.hooks:{})},t),this.appInfo=!!this.config.appInfo&&!!k(w)&&w(),this.log=this.log.bind(this);const i=Object.keys(this.config.logger).filter(e=>!u.has(e));for(const c of i)this[c]=this.config.logger[c];for(const c of p){if("fatal"===c?this.config.logger.fatal=x(this.config.logger[c])||x(this.config.logger.error)||x(this.config.logger.info)||x(this.config.logger.log):this.config.logger[c]=x(this.config.logger[c])||x(this.config.logger.info)||x(this.config.logger.log),!k(this.config.logger[c]))throw new Error(`\`${c}\` must be a function on the logger.`);this[c]=function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return e.log(c,...Array.prototype.slice.call(r))}}this.setLevel=this.setLevel.bind(this),this.getNormalizedLevel=this.getNormalizedLevel.bind(this),this.setName=this.setName.bind(this),this.config.name&&this.setName(this.config.name),this.setLevel(this.config.level),this.err=this.error,this.warning=this.warn,this.pre=function(e,t){this.config.hooks.pre.push((function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return e!==r?[...o]:t(...o)}))},this.post=function(e,t){this.config.hooks.post.push((function(r){for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i<n;i++)o[i-1]=arguments[i];return e!==r?[...o]:t(...o)}))}}setLevel(e){if(!T(e)||-1===p.indexOf(e))throw new Error(d);T(this.config.logger.logLevel)?this.config.logger.logLevel=e:this.config.logger.level=e,this.config.levels=p.slice(p.indexOf(e))}getNormalizedLevel(e){return T(e)?T(g[e])?g[e]:-1===p.indexOf(e)?"info":e:"info"}setName(e){if(!T(e))throw new Error("`name` must be a String");T(this.config.logger.scope)?this.config.logger.scope=e:this.config.logger.name=e}log(e,s,l){const u=[],y=[];let h=!1,d=!0;S(e)||u.push(e),S(s)||u.push(s),S(l)||u.push(l);for(var m=arguments.length,b=new Array(m>3?m-3:0),v=3;v<m;v++)b[v-3]=arguments[v];for(const t of Array.prototype.slice.call(b))u.push(t);let w=0;if(T(e)&&T(g[e])?e=g[e]:o(e)?(d=!1,l=s,s=e,e="error"):T(e)&&-1!==p.indexOf(e)||(d=!1,l=s,s=e,e=this.getNormalizedLevel(e),w=-1),-1===this.config.levels.indexOf(e))return;let k,x=!1;if((_(s)||Array.isArray(s))&&T(l)){x=!0;const e=l;l=s,s=T(e)&&u.length>=3+w?t(...u.slice(2+w)):e}if(S(s)&&(s=e),1!==u.slice(1+w).length||T(s)||o(s))if(!x&&u.length>=4+w){s=void 0,l={};const r=[];for(const e of u.slice(d&&0===w?1:0))o(e)?y.push(e):r.push(e);r.length>0&&(s=t(...r),h=!0),y.length>0&&"log"===e&&(e="error")}else if(!x&&u.length===3+w&&T(s)&&r.some(e=>-1!==s.indexOf(e)))s=t(s,l),l={};else if(o(s)){if(o(l)){y.push(l);const r=[];o(s)&&(y.unshift(s),s=void 0);for(const e of u.slice(2+w))l!==e&&(o(e)?y.push(e):r.push(e),r.length>0&&(s=t(...r),h=!0));"log"===e&&(e="error"),l={}}}else o(l)?(y.push(l),l={}):_(l)||S(l)||null===l?T(s)||(s=t(s)):(s=t(s,l),l={});else l={message:s},s=e;S(l)||_(l)?_(l)||(l={}):l={original_meta:l},o(s)&&(y.unshift(s),s=void 0),_(l.err)&&(o(l.err)&&y.push(l.err),l.original_err=o(l.err)?E(l.err):l.err),y.length>0&&(1===y.length?k=y[0]:((k=new Error([...new Set(y.map(e=>e.message).filter(Boolean))].join("; "))).stack=[...new Set(y.map(e=>e.stack).filter(Boolean))].join("\n\n"),k.errors=y),l.err=E(k),T(s)||(s=k.message)),l.level=e,this.appInfo&&(l.app=this.appInfo);const I=-1===w?"log":e;for(const t of this.config.hooks.pre)[k,s,l]=t(I,k,s,l);const L=f(l[a]);if(!j(this.config.meta.remappedFields))for(const t of Reflect.ownKeys(this.config.meta.remappedFields))if(P(l,this.config.meta.remappedFields[t],n(l,t)),C(l,t),this.config.meta.cleanupRemapping){const e=t.lastIndexOf(".");if(-1===e)continue;const r=t.slice(0,e);j(n(l,r))&&C(l,r)}if(!j(this.config.meta.omittedFields)||!j(this.config.meta.pickedFields)){const e=function(e){const t=[];return function e(r,n){if(!(i.isBuffer(r)||r instanceof Uint8Array||Array.isArray(r)))for(const o of Reflect.ownKeys(r)){const i=r[o],s=c(o)?Symbol.keyFor(o)||o.description:o,f=n?n+"."+s:s;O(i)&&-1===t.indexOf(s)?(t.push(s),e(i,f)):-1===t.indexOf(f)&&t.push(f)}}(e),t}(l);if(!j(this.config.meta.omittedFields))for(const r of this.config.meta.omittedFields){let t=e.length;for(;t--;)(e[t]===r||!c(e[t])&&0===e[t].indexOf(r+"."))&&e.splice(t,1)}const t=[];if(!j(this.config.meta.pickedFields))for(const r of this.config.meta.pickedFields){if(c(r))l[r]&&t.push([r,l[r]]);else{const t=r.indexOf("."),n=r.slice(0,t+1);if(-1!==t){let t=e.length;for(;t--;)(e[t]===n.slice(0,-1)||0===e[t].indexOf(n))&&e.splice(t,1)}}-1===e.indexOf(r)&&e.push(r)}for(const r of e)c(r)?void 0!==l[r]&&t.push([r,l[r]]):void 0!==l[Symbol.for(r)]&&t.push([Symbol.for(r),l[Symbol.for(r)]]);try{l=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:".";if(o=e,"[object Object]"!==Object.prototype.toString.call(o)||!t||!Array.isArray(t)&&"string"!=typeof t)return{};var o;const{length:i}=t;if("string"==typeof t||i<2){const o="string"==typeof t?t:t[0],i=n(e,o,r);return void 0!==i?P({},o,i,r):{}}return((e,t,r,o)=>{const i={};for(let c=0;c<r;c++){const r=t[c],s=n(e,r,o);void 0!==s&&P(i,r,s,o)}return i})(e,t,i,r)}(l,e)}catch(k){this.config.logger.error(k)}if(t.length>0)for(const[r,n]of t)l[r]=n}return this.config.silent||L||(o(k)&&this.config.showStack?!this.config.meta.show||j(l)||this.config.meta.hideMeta&&l[this.config.meta.hideMeta]?this.config.logger[I](...h?[s,k]:[k]):this.config.logger[I](...h?[s,k,l]:[k,l]):!this.config.meta.show||j(l)||this.config.meta.hideMeta&&l[this.config.meta.hideMeta]||this.config.meta.hideHTTP&&l[this.config.meta.hideHTTP]?this.config.logger[I](s):this.config.logger[I](s,l)),0===this.config.hooks.post.length?{method:I,err:k,message:s,meta:l}:A(this.config.hooks.post,e=>e(I,k,s,l)).then().catch(e=>{this.config.logger.error(e)})}}}).call(this)}.call(this,{isBuffer:function(e){return null!=e&&(K(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&K(e.slice(0,0))}(e)||!!e._isBuffer)}},W),ie}));
|
package/lib/index.js
CHANGED
|
@@ -44,6 +44,9 @@ function isPlainObject(value) {
|
|
|
44
44
|
function dotifyToArray(obj) {
|
|
45
45
|
const res = [];
|
|
46
46
|
function recurse(obj, current) {
|
|
47
|
+
// if it's a buffer, uint8array, or array
|
|
48
|
+
// eslint-disable-next-line n/prefer-global/buffer
|
|
49
|
+
if (Buffer.isBuffer(obj) || obj instanceof Uint8Array || Array.isArray(obj)) return;
|
|
47
50
|
for (const key of Reflect.ownKeys(obj)) {
|
|
48
51
|
const value = obj[key];
|
|
49
52
|
const convertedKey = isSymbol(key) ? Symbol.keyFor(key) || key.description : key;
|
|
@@ -533,4 +536,4 @@ class Axe {
|
|
|
533
536
|
}
|
|
534
537
|
}
|
|
535
538
|
module.exports = Axe;
|
|
536
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwib3MiLCJmb3JtYXQiLCJmb3JtYXRTcGVjaWZpZXJzIiwiZ2V0IiwiaXNFcnJvciIsImlzU3ltYm9sIiwibWVyZ2VPcHRpb25zIiwicE1hcFNlcmllcyIsInBhcnNlQXBwSW5mbyIsInBhcnNlRXJyIiwicGlja0RlZXAiLCJzZXQiLCJ1bnNldCIsImJvb2xlYW4iLCJwa2ciLCJzaWxlbnRTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJvbWl0dGVkTG9nZ2VyS2V5cyIsIlNldCIsImxldmVscyIsImFsaWFzZXMiLCJ3YXJuaW5nIiwiZXJyIiwibGV2ZWxFcnJvciIsImpvaW4iLCJuYW1lIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiSE9TVE5BTUUiLCJob3N0bmFtZSIsImlzUGxhaW5PYmplY3QiLCJ2YWx1ZSIsInByb3RvdHlwZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwidG9TdHJpbmdUYWciLCJpdGVyYXRvciIsImRvdGlmeVRvQXJyYXkiLCJvYmoiLCJyZXMiLCJyZWN1cnNlIiwiY3VycmVudCIsImtleSIsIlJlZmxlY3QiLCJvd25LZXlzIiwiY29udmVydGVkS2V5Iiwia2V5Rm9yIiwiZGVzY3JpcHRpb24iLCJuZXdLZXkiLCJpbmRleE9mIiwicHVzaCIsImlzRW1wdHkiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJ0cmltIiwiaXNOdWxsIiwiaXNVbmRlZmluZWQiLCJpc09iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsImlzU3RyaW5nIiwiaXNGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwiQXhlIiwiY29uc3RydWN0b3IiLCJfdGhpcyIsImNvbmZpZyIsImFyZ3VtZW50cyIsInJlbWFwcGVkRmllbGRzIiwiQVhFX1JFTUFQUEVEX01FVEFfRklFTERTIiwiZmllbGRzIiwiYXJyIiwic3BsaXQiLCJtYXAiLCJ2IiwicHJvcCIsIm9taXR0ZWRGaWVsZHMiLCJBWEVfT01JVF9NRVRBX0ZJRUxEUyIsInMiLCJwaWNrZWRGaWVsZHMiLCJBWEVfUElDS19NRVRBX0ZJRUxEUyIsInNob3dTdGFjayIsIkFYRV9TSE9XX1NUQUNLIiwibWV0YSIsImFzc2lnbiIsInNob3ciLCJBWEVfU0hPV19NRVRBIiwiY2xlYW51cFJlbWFwcGluZyIsImhpZGVIVFRQIiwiaGlkZU1ldGEiLCJ2ZXJzaW9uIiwic2lsZW50IiwibG9nZ2VyIiwiY29uc29sZSIsImxldmVsIiwiYXBwSW5mbyIsIkFYRV9BUFBfSU5GTyIsImhvb2tzIiwicHJlIiwicG9zdCIsImxvZyIsImJpbmQiLCJtZXRob2RzIiwia2V5cyIsImZpbHRlciIsImhhcyIsImVsZW1lbnQiLCJmYXRhbCIsImVycm9yIiwiaW5mbyIsIkVycm9yIiwiX2xlbiIsImFyZ3MiLCJfa2V5Iiwic2xpY2UiLCJjYWxsIiwic2V0TGV2ZWwiLCJnZXROb3JtYWxpemVkTGV2ZWwiLCJzZXROYW1lIiwid2FybiIsImZuIiwiX2xldmVsIiwiX2xlbjIiLCJfa2V5MiIsIl9sZW4zIiwiX2tleTMiLCJsb2dMZXZlbCIsInNjb3BlIiwibWVzc2FnZSIsIm9yaWdpbmFsQXJncyIsImVycm9ycyIsImhhc01lc3NhZ2UiLCJoYXNMZXZlbCIsIl9sZW40IiwiX2tleTQiLCJhcmciLCJtb2RpZmllciIsImlzQnVueWFuIiwiX21ldGEiLCJtZXNzYWdlcyIsInNvbWUiLCJ0IiwidW5zaGlmdCIsIm9yaWdpbmFsX21ldGEiLCJvcmlnaW5hbF9lcnIiLCJlIiwiQm9vbGVhbiIsInN0YWNrIiwiYXBwIiwibWV0aG9kIiwiaG9vayIsImhhZFRydWVTaWxlbnRTeW1ib2wiLCJpbmRleCIsImxhc3RJbmRleE9mIiwicGFyZW50S2V5IiwiZG90aWZpZWQiLCJpIiwic3BsaWNlIiwicGlja2VkU3ltYm9scyIsInRoZW4iLCJjYXRjaCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bmFzc2lnbmVkLWltcG9ydFxucmVxdWlyZSgnY29uc29sZS1wb2x5ZmlsbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItbm9kZS1wcm90b2NvbFxuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuY29uc3QgZm9ybWF0ID0gcmVxdWlyZSgnQGxhZGpzL2Zvcm1hdC11dGlsJyk7XG5jb25zdCBmb3JtYXRTcGVjaWZpZXJzID0gcmVxdWlyZSgnZm9ybWF0LXNwZWNpZmllcnMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ0BzdHJpa2VlbnRjby9nZXQnKTtcbmNvbnN0IGlzRXJyb3IgPSByZXF1aXJlKCdpc2Vycm9yJyk7XG5jb25zdCBpc1N5bWJvbCA9IHJlcXVpcmUoJ2lzLXN5bWJvbCcpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgcE1hcFNlcmllcyA9IHJlcXVpcmUoJ3AtbWFwLXNlcmllcycpO1xuY29uc3QgcGFyc2VBcHBJbmZvID0gcmVxdWlyZSgncGFyc2UtYXBwLWluZm8nKTtcbmNvbnN0IHBhcnNlRXJyID0gcmVxdWlyZSgncGFyc2UtZXJyJyk7XG5jb25zdCBwaWNrRGVlcCA9IHJlcXVpcmUoJ3BpY2stZGVlcCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL3NldCcpO1xuY29uc3QgdW5zZXQgPSByZXF1aXJlKCd1bnNldC12YWx1ZScpO1xuY29uc3QgeyBib29sZWFuIH0gPSByZXF1aXJlKCdib29sZWFuJyk7XG5jb25zdCBwa2cgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qgc2lsZW50U3ltYm9sID0gU3ltYm9sLmZvcignYXhlLnNpbGVudCcpO1xuY29uc3Qgb21pdHRlZExvZ2dlcktleXMgPSBuZXcgU2V0KFsnY29uZmlnJywgJ2xvZyddKTtcbmNvbnN0IGxldmVscyA9IFsndHJhY2UnLCAnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2ZhdGFsJ107XG5jb25zdCBhbGlhc2VzID0geyB3YXJuaW5nOiAnd2FybicsIGVycjogJ2Vycm9yJyB9O1xuY29uc3QgbGV2ZWxFcnJvciA9IGBcXGBsZXZlbFxcYCBpbnZhbGlkLCBtdXN0IGJlOiAke2xldmVscy5qb2luKCcsICcpfWA7XG5jb25zdCBuYW1lID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZhbHNlXG4gICAgOiBwcm9jZXNzLmVudi5IT1NUTkFNRSB8fCBvcy5ob3N0bmFtZSgpO1xuXG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9pcy1wbGFpbi1vYmovYmxvYi9tYWluL2luZGV4LmpzPlxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgKHByb3RvdHlwZSA9PT0gbnVsbCB8fFxuICAgICAgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8XG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiZcbiAgICAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkgJiZcbiAgICAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWx1ZSkgJiZcbiAgICAhaXNTeW1ib2wodmFsdWUpXG4gICk7XG59XG5cbi8vIDxodHRwczovL2dpdGh1Yi5jb20vR2VlbmVuVGlqZC9kb3RpZnkvYmxvYi9tYXN0ZXIvZG90aWZ5LmpzPlxuZnVuY3Rpb24gZG90aWZ5VG9BcnJheShvYmopIHtcbiAgY29uc3QgcmVzID0gW107XG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqLCBjdXJyZW50KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKG9iaikpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqW2tleV07XG4gICAgICBjb25zdCBjb252ZXJ0ZWRLZXkgPSBpc1N5bWJvbChrZXkpXG4gICAgICAgID8gU3ltYm9sLmtleUZvcihrZXkpIHx8IGtleS5kZXNjcmlwdGlvblxuICAgICAgICA6IGtleTtcbiAgICAgIGNvbnN0IG5ld0tleSA9IGN1cnJlbnQgPyBjdXJyZW50ICsgJy4nICsgY29udmVydGVkS2V5IDogY29udmVydGVkS2V5OyAvLyBqb2luZWQga2V5IHdpdGggZG90XG4gICAgICAvLyBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkgJiYgIU9iamVjdElELmlzVmFsaWQodmFsdWUpKSB7XG4gICAgICBpZiAoaXNQbGFpbk9iamVjdCh2YWx1ZSkgJiYgcmVzLmluZGV4T2YoY29udmVydGVkS2V5KSA9PT0gLTEpIHtcbiAgICAgICAgcmVzLnB1c2goY29udmVydGVkS2V5KTtcbiAgICAgICAgcmVjdXJzZSh2YWx1ZSwgbmV3S2V5KTsgLy8gaXQncyBhIG5lc3RlZCBvYmplY3QsIHNvIGRvIGl0IGFnYWluXG4gICAgICB9IGVsc2UgaWYgKHJlcy5pbmRleE9mKG5ld0tleSkgPT09IC0xKSB7XG4gICAgICAgIHJlcy5wdXNoKG5ld0tleSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVjdXJzZShvYmopO1xuICByZXR1cm4gcmVzO1xufVxuXG4vLyA8aHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzQzMjMzMTYzPlxuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICB2YWx1ZSA9PT0gbnVsbCB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIFJlZmxlY3Qub3duS2V5cyh2YWx1ZSkubGVuZ3RoID09PSAwKSB8fFxuICAgICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGdldEZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc0Z1bmN0aW9uKHZhbHVlKSA/IHZhbHVlIDogbnVsbDtcbn1cblxuY2xhc3MgQXhlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgY29uc3RydWN0b3IoY29uZmlnID0ge30pIHtcbiAgICBjb25zdCByZW1hcHBlZEZpZWxkcyA9IHt9O1xuICAgIGlmIChwcm9jZXNzLmVudi5BWEVfUkVNQVBQRURfTUVUQV9GSUVMRFMpIHtcbiAgICAgIGNvbnN0IGZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9SRU1BUFBFRF9NRVRBX0ZJRUxEUztcbiAgICAgIGNvbnN0IGFyciA9IGZpZWxkcy5zcGxpdCgnLCcpLm1hcCgodikgPT4gdi5zcGxpdCgnOicpKTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3AsIHZhbHVlXSBvZiBhcnIpIHtcbiAgICAgICAgcmVtYXBwZWRGaWVsZHNbcHJvcF0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBlbnZpZnkgZG9lcyBub3Qgc3VwcG9ydCBjb25kaXRpb25hbHMgd2VsbCBlbm91Z2ggc28gd2UgZGVjbGFyZSB2YXJzIG91dHNpZGVcbiAgICBsZXQgb21pdHRlZEZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9PTUlUX01FVEFfRklFTERTO1xuICAgIGlmICh0eXBlb2Ygb21pdHRlZEZpZWxkcyA9PT0gJ3N0cmluZycpXG4gICAgICBvbWl0dGVkRmllbGRzID0gb21pdHRlZEZpZWxkcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShvbWl0dGVkRmllbGRzKSkgb21pdHRlZEZpZWxkcyA9IFtdO1xuXG4gICAgbGV0IHBpY2tlZEZpZWxkcyA9IHByb2Nlc3MuZW52LkFYRV9QSUNLX01FVEFfRklFTERTO1xuICAgIGlmICh0eXBlb2YgcGlja2VkRmllbGRzID09PSAnc3RyaW5nJylcbiAgICAgIHBpY2tlZEZpZWxkcyA9IHBpY2tlZEZpZWxkcy5zcGxpdCgnLCcpLm1hcCgocykgPT4gcy50cmltKCkpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwaWNrZWRGaWVsZHMpKSBwaWNrZWRGaWVsZHMgPSBbXTtcblxuICAgIHRoaXMuY29uZmlnID0gbWVyZ2VPcHRpb25zKFxuICAgICAge1xuICAgICAgICBzaG93U3RhY2s6IHByb2Nlc3MuZW52LkFYRV9TSE9XX1NUQUNLXG4gICAgICAgICAgPyBib29sZWFuKHByb2Nlc3MuZW52LkFYRV9TSE9XX1NUQUNLKVxuICAgICAgICAgIDogdHJ1ZSxcbiAgICAgICAgbWV0YTogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaG93OiBwcm9jZXNzLmVudi5BWEVfU0hPV19NRVRBXG4gICAgICAgICAgICAgID8gYm9vbGVhbihwcm9jZXNzLmVudi5BWEVfU0hPV19NRVRBKVxuICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICAgICAgICByZW1hcHBlZEZpZWxkcyxcbiAgICAgICAgICAgIG9taXR0ZWRGaWVsZHMsXG4gICAgICAgICAgICBwaWNrZWRGaWVsZHMsXG4gICAgICAgICAgICBjbGVhbnVwUmVtYXBwaW5nOiB0cnVlLFxuICAgICAgICAgICAgaGlkZUhUVFA6ICdpc19odHRwJyxcbiAgICAgICAgICAgIC8vIGltcGxlbWVudGVkIG1haW5seSBmb3IgQGxhZGpzL2dyYWNlZnVsIHRvXG4gICAgICAgICAgICAvLyBzdXBwcmVzcyB1bm5lY2Vzc2FyeSBtZXRhIG91dHB1dCB0byBjb25zb2xlXG4gICAgICAgICAgICBoaWRlTWV0YTogJ2hpZGVfbWV0YSdcbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGVvZiBjb25maWcubWV0YSA9PT0gJ29iamVjdCcgPyBjb25maWcubWV0YSA6IHt9XG4gICAgICAgICksXG4gICAgICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgICAgICBzaWxlbnQ6IGZhbHNlLFxuICAgICAgICBsb2dnZXI6IGNvbnNvbGUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgIGxldmVsczogWydpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnZmF0YWwnXSxcbiAgICAgICAgYXBwSW5mbzogcHJvY2Vzcy5lbnYuQVhFX0FQUF9JTkZPXG4gICAgICAgICAgPyBib29sZWFuKHByb2Nlc3MuZW52LkFYRV9BUFBfSU5GTylcbiAgICAgICAgICA6IHRydWUsXG4gICAgICAgIGhvb2tzOiBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByZTogW10sXG4gICAgICAgICAgICBwb3N0OiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgdHlwZW9mIGNvbmZpZy5ob29rcyA9PT0gJ29iamVjdCcgPyBjb25maWcuaG9va3MgOiB7fVxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIHRoaXMuYXBwSW5mbyA9IHRoaXMuY29uZmlnLmFwcEluZm9cbiAgICAgID8gaXNGdW5jdGlvbihwYXJzZUFwcEluZm8pXG4gICAgICAgID8gcGFyc2VBcHBJbmZvKClcbiAgICAgICAgOiBmYWxzZVxuICAgICAgOiBmYWxzZTtcblxuICAgIHRoaXMubG9nID0gdGhpcy5sb2cuYmluZCh0aGlzKTtcblxuICAgIC8vIEluaGVyaXQgbWV0aG9kcyBmcm9tIHBhcmVudCBsb2dnZXJcbiAgICBjb25zdCBtZXRob2RzID0gT2JqZWN0LmtleXModGhpcy5jb25maWcubG9nZ2VyKS5maWx0ZXIoXG4gICAgICAoa2V5KSA9PiAhb21pdHRlZExvZ2dlcktleXMuaGFzKGtleSlcbiAgICApO1xuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBtZXRob2RzKSB7XG4gICAgICB0aGlzW2VsZW1lbnRdID0gdGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdO1xuICAgIH1cblxuICAgIC8vIEJpbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZWFjaCBsb2cgbGV2ZWxcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgbGV2ZWxzKSB7XG4gICAgICAvLyBFbnN1cmUgZnVuY3Rpb24gZXhpc3RzIGluIGxvZ2dlciBwYXNzZWRcbiAgICAgIGlmIChlbGVtZW50ID09PSAnZmF0YWwnKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5mYXRhbCA9XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcikgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIuaW5mbykgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIubG9nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XSA9XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5pbmZvKSB8fFxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlci5sb2cpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyW2VsZW1lbnRdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYCR7ZWxlbWVudH1cXGAgbXVzdCBiZSBhIGZ1bmN0aW9uIG9uIHRoZSBsb2dnZXIuYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEJpbmQgbG9nIGhhbmRsZXIgd2hpY2ggbm9ybWFsaXplcyBhcmdzIGFuZCBwb3B1bGF0ZXMgbWV0YVxuICAgICAgdGhpc1tlbGVtZW50XSA9ICguLi5hcmdzKSA9PlxuICAgICAgICB0aGlzLmxvZyhlbGVtZW50LCAuLi5BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRMZXZlbCA9IHRoaXMuc2V0TGV2ZWwuYmluZCh0aGlzKTtcbiAgICB0aGlzLmdldE5vcm1hbGl6ZWRMZXZlbCA9IHRoaXMuZ2V0Tm9ybWFsaXplZExldmVsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5zZXROYW1lID0gdGhpcy5zZXROYW1lLmJpbmQodGhpcyk7XG5cbiAgICAvLyBTZXQgdGhlIGxvZ2dlciBuYW1lXG4gICAgaWYgKHRoaXMuY29uZmlnLm5hbWUpIHRoaXMuc2V0TmFtZSh0aGlzLmNvbmZpZy5uYW1lKTtcblxuICAgIC8vIFNldCB0aGUgbG9nZ2VyIGxldmVsXG4gICAgdGhpcy5zZXRMZXZlbCh0aGlzLmNvbmZpZy5sZXZlbCk7XG5cbiAgICAvLyBBbGlhc2VzXG4gICAgdGhpcy5lcnIgPSB0aGlzLmVycm9yO1xuICAgIHRoaXMud2FybmluZyA9IHRoaXMud2FybjtcblxuICAgIC8vIFByZSBhbmQgUG9zdCBIb29rc1xuICAgIHRoaXMucHJlID0gZnVuY3Rpb24gKGxldmVsLCBmbikge1xuICAgICAgdGhpcy5jb25maWcuaG9va3MucHJlLnB1c2goZnVuY3Rpb24gKF9sZXZlbCwgLi4uYXJncykge1xuICAgICAgICBpZiAobGV2ZWwgIT09IF9sZXZlbCkgcmV0dXJuIFsuLi5hcmdzXTtcbiAgICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMucG9zdCA9IGZ1bmN0aW9uIChsZXZlbCwgZm4pIHtcbiAgICAgIHRoaXMuY29uZmlnLmhvb2tzLnBvc3QucHVzaChmdW5jdGlvbiAoX2xldmVsLCAuLi5hcmdzKSB7XG4gICAgICAgIGlmIChsZXZlbCAhPT0gX2xldmVsKSByZXR1cm4gWy4uLmFyZ3NdO1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgc2V0TGV2ZWwobGV2ZWwpIHtcbiAgICBpZiAoIWlzU3RyaW5nKGxldmVsKSB8fCBsZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGxldmVsRXJyb3IpO1xuICAgIC8vIFN1cHBvcnQgc2lnbmFsZSBsb2dnZXIgYW5kIG90aGVyIGxvZ2dlcnMgdGhhdCB1c2UgYGxvZ0xldmVsYFxuICAgIGlmIChpc1N0cmluZyh0aGlzLmNvbmZpZy5sb2dnZXIubG9nTGV2ZWwpKVxuICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmxvZ0xldmVsID0gbGV2ZWw7XG4gICAgZWxzZSB0aGlzLmNvbmZpZy5sb2dnZXIubGV2ZWwgPSBsZXZlbDtcbiAgICAvLyBBZGp1c3RzIGB0aGlzLmNvbmZpZy5sZXZlbHNgIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCBoYXMgYWxsIHByb2NlZWRpbmcgKGluY2x1c2l2ZSlcbiAgICB0aGlzLmNvbmZpZy5sZXZlbHMgPSBsZXZlbHMuc2xpY2UobGV2ZWxzLmluZGV4T2YobGV2ZWwpKTtcbiAgfVxuXG4gIGdldE5vcm1hbGl6ZWRMZXZlbChsZXZlbCkge1xuICAgIGlmICghaXNTdHJpbmcobGV2ZWwpKSByZXR1cm4gJ2luZm8nO1xuICAgIGlmIChpc1N0cmluZyhhbGlhc2VzW2xldmVsXSkpIHJldHVybiBhbGlhc2VzW2xldmVsXTtcbiAgICBpZiAobGV2ZWxzLmluZGV4T2YobGV2ZWwpID09PSAtMSkgcmV0dXJuICdpbmZvJztcbiAgICByZXR1cm4gbGV2ZWw7XG4gIH1cblxuICBzZXROYW1lKG5hbWUpIHtcbiAgICBpZiAoIWlzU3RyaW5nKG5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoJ2BuYW1lYCBtdXN0IGJlIGEgU3RyaW5nJyk7XG4gICAgLy8gU3VwcG9ydCBzaWduYWxlIGxvZ2dlciBhbmQgb3RoZXIgbG9nZ2VycyB0aGF0IHVzZSBgc2NvcGVgXG4gICAgaWYgKGlzU3RyaW5nKHRoaXMuY29uZmlnLmxvZ2dlci5zY29wZSkpIHRoaXMuY29uZmlnLmxvZ2dlci5zY29wZSA9IG5hbWU7XG4gICAgZWxzZSB0aGlzLmNvbmZpZy5sb2dnZXIubmFtZSA9IG5hbWU7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuICBsb2cobGV2ZWwsIG1lc3NhZ2UsIG1ldGEsIC4uLmFyZ3MpIHtcbiAgICBjb25zdCBvcmlnaW5hbEFyZ3MgPSBbXTtcbiAgICBjb25zdCBlcnJvcnMgPSBbXTtcbiAgICBsZXQgaGFzTWVzc2FnZSA9IGZhbHNlO1xuICAgIGxldCBoYXNMZXZlbCA9IHRydWU7XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKGxldmVsKSkgb3JpZ2luYWxBcmdzLnB1c2gobGV2ZWwpO1xuICAgIGlmICghaXNVbmRlZmluZWQobWVzc2FnZSkpIG9yaWdpbmFsQXJncy5wdXNoKG1lc3NhZ2UpO1xuICAgIGlmICghaXNVbmRlZmluZWQobWV0YSkpIG9yaWdpbmFsQXJncy5wdXNoKG1ldGEpO1xuICAgIGZvciAoY29uc3QgYXJnIG9mIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3MpKSB7XG4gICAgICBvcmlnaW5hbEFyZ3MucHVzaChhcmcpO1xuICAgIH1cblxuICAgIGxldCBtb2RpZmllciA9IDA7XG5cbiAgICBpZiAoaXNTdHJpbmcobGV2ZWwpICYmIGlzU3RyaW5nKGFsaWFzZXNbbGV2ZWxdKSkge1xuICAgICAgbGV2ZWwgPSBhbGlhc2VzW2xldmVsXTtcbiAgICB9IGVsc2UgaWYgKGlzRXJyb3IobGV2ZWwpKSB7XG4gICAgICBoYXNMZXZlbCA9IGZhbHNlO1xuICAgICAgbWV0YSA9IG1lc3NhZ2U7XG4gICAgICBtZXNzYWdlID0gbGV2ZWw7XG4gICAgICBsZXZlbCA9ICdlcnJvcic7XG4gICAgfSBlbHNlIGlmICghaXNTdHJpbmcobGV2ZWwpIHx8IGxldmVscy5pbmRleE9mKGxldmVsKSA9PT0gLTEpIHtcbiAgICAgIGhhc0xldmVsID0gZmFsc2U7XG4gICAgICBtZXRhID0gbWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPSBsZXZlbDtcbiAgICAgIGxldmVsID0gdGhpcy5nZXROb3JtYWxpemVkTGV2ZWwobGV2ZWwpO1xuICAgICAgbW9kaWZpZXIgPSAtMTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gZWFybHkgaWYgaXQgaXMgbm90IGEgdmFsaWQgbG9nZ2luZyBsZXZlbFxuICAgIGlmICh0aGlzLmNvbmZpZy5sZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKSByZXR1cm47XG5cbiAgICAvLyBCdW55YW4gc3VwcG9ydCAobWV0YSwgbWVzc2FnZSwgLi4uYXJncylcbiAgICBsZXQgaXNCdW55YW4gPSBmYWxzZTtcbiAgICBpZiAoKGlzT2JqZWN0KG1lc3NhZ2UpIHx8IEFycmF5LmlzQXJyYXkobWVzc2FnZSkpICYmIGlzU3RyaW5nKG1ldGEpKSB7XG4gICAgICBpc0J1bnlhbiA9IHRydWU7XG4gICAgICBjb25zdCBfbWV0YSA9IG1ldGE7XG4gICAgICBtZXRhID0gbWVzc2FnZTtcbiAgICAgIG1lc3NhZ2UgPVxuICAgICAgICBpc1N0cmluZyhfbWV0YSkgJiYgb3JpZ2luYWxBcmdzLmxlbmd0aCA+PSAzICsgbW9kaWZpZXJcbiAgICAgICAgICA/IGZvcm1hdCguLi5vcmlnaW5hbEFyZ3Muc2xpY2UoMiArIG1vZGlmaWVyKSlcbiAgICAgICAgICA6IF9tZXRhO1xuICAgIH1cblxuICAgIC8vIElmIG1lc3NhZ2Ugd2FzIHVuZGVmaW5lZCB0aGVuIHNldCBpdCB0byBsZXZlbFxuICAgIGlmIChpc1VuZGVmaW5lZChtZXNzYWdlKSkgbWVzc2FnZSA9IGxldmVsO1xuXG4gICAgLy8gSWYgb25seSBgbWVzc2FnZWAgd2FzIHBhc3NlZCB0aGVuIGlmIGl0IHdhcyBhbiBPYmplY3RcbiAgICAvLyBwcmVzZXJ2ZSBpdCBhcyBhbiBPYmplY3QgYnkgc2V0dGluZyBpdCBhcyBtZXRhXG4gICAgaWYgKFxuICAgICAgb3JpZ2luYWxBcmdzLnNsaWNlKDEgKyBtb2RpZmllcikubGVuZ3RoID09PSAxICYmXG4gICAgICAhaXNTdHJpbmcobWVzc2FnZSkgJiZcbiAgICAgICFpc0Vycm9yKG1lc3NhZ2UpXG4gICAgKSB7XG4gICAgICBtZXRhID0geyBtZXNzYWdlIH07XG4gICAgICBtZXNzYWdlID0gbGV2ZWw7XG4gICAgfSBlbHNlIGlmICghaXNCdW55YW4gJiYgb3JpZ2luYWxBcmdzLmxlbmd0aCA+PSA0ICsgbW9kaWZpZXIpIHtcbiAgICAgIG1lc3NhZ2UgPSB1bmRlZmluZWQ7XG4gICAgICBtZXRhID0ge307XG4gICAgICBjb25zdCBtZXNzYWdlcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBhcmcgb2Ygb3JpZ2luYWxBcmdzLnNsaWNlKFxuICAgICAgICBoYXNMZXZlbCAmJiBtb2RpZmllciA9PT0gMCA/IDEgOiAwXG4gICAgICApKSB7XG4gICAgICAgIGlmIChpc0Vycm9yKGFyZykpIGVycm9ycy5wdXNoKGFyZyk7XG4gICAgICAgIC8vIHB1c2hlcyBudW1iZXIsIG9iamVjdCwgc3RyaW5nLCBldGMgZm9yIGZvcm1hdHRpbmdcbiAgICAgICAgZWxzZSBtZXNzYWdlcy5wdXNoKGFyZyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoLi4ubWVzc2FnZXMpO1xuICAgICAgICBoYXNNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPiAwICYmIGxldmVsID09PSAnbG9nJykgbGV2ZWwgPSAnZXJyb3InO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAhaXNCdW55YW4gJiZcbiAgICAgIG9yaWdpbmFsQXJncy5sZW5ndGggPT09IDMgKyBtb2RpZmllciAmJlxuICAgICAgaXNTdHJpbmcobWVzc2FnZSkgJiZcbiAgICAgIGZvcm1hdFNwZWNpZmllcnMuc29tZSgodCkgPT4gbWVzc2FnZS5pbmRleE9mKHQpICE9PSAtMSlcbiAgICApIHtcbiAgICAgIC8vIE90aGVyd2lzZSBpZiB0aGVyZSBhcmUgdGhyZWUgYXJncyBhbmQgaWYgdGhlIGBtZXNzYWdlYCBjb250YWluc1xuICAgICAgLy8gYSBwbGFjZWhvbGRlciB0b2tlbiAoZS5nLiAnJXMnIG9yICclZCcgLSBzZWUgYWJvdmUgYGZvcm1hdFNwZWNpZmllcnNgIHZhcmlhYmxlKVxuICAgICAgLy8gdGhlbiB3ZSBjYW4gaW5mZXIgdGhhdCB0aGUgYG1ldGFgIGFyZyBwYXNzZWQgaXMgdXNlZCBmb3IgZm9ybWF0dGluZ1xuICAgICAgbWVzc2FnZSA9IGZvcm1hdChtZXNzYWdlLCBtZXRhKTtcbiAgICAgIG1ldGEgPSB7fTtcbiAgICB9IGVsc2UgaWYgKCFpc0Vycm9yKG1lc3NhZ2UpKSB7XG4gICAgICBpZiAoaXNFcnJvcihtZXRhKSkge1xuICAgICAgICBlcnJvcnMucHVzaChtZXRhKTtcbiAgICAgICAgbWV0YSA9IHt9O1xuICAgICAgfSBlbHNlIGlmICghaXNPYmplY3QobWV0YSkgJiYgIWlzVW5kZWZpbmVkKG1ldGEpICYmICFpc051bGwobWV0YSkpIHtcbiAgICAgICAgLy8gSWYgdGhlIGBtZXRhYCB2YXJpYWJsZSBwYXNzZWQgd2FzIG5vdCBhbiBPYmplY3QgdGhlbiBjb252ZXJ0IGl0XG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSwgbWV0YSk7XG4gICAgICAgIG1ldGEgPSB7fTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzU3RyaW5nKG1lc3NhZ2UpKSB7XG4gICAgICAgIC8vIElmIHRoZSBtZXNzYWdlIGlzIG5vdCBhIHN0cmluZyB0aGVuIHdlIHNob3VsZCBydW4gYHV0aWwuZm9ybWF0YCBvbiBpdFxuICAgICAgICAvLyBhc3N1bWluZyB3ZSdyZSBmb3JtYXR0aW5nIGl0IGxpa2UgaXQgd2FzIGFub3RoZXIgYXJndW1lbnRcbiAgICAgICAgLy8gKGFzIG9wcG9zZWQgdG8gdXNpbmcgc29tZXRoaW5nIGxpa2UgZmFzdC1qc29uLXN0cmluZ2lmeSlcbiAgICAgICAgbWVzc2FnZSA9IGZvcm1hdChtZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzRXJyb3IobWV0YSkpIHtcbiAgICAgIGVycm9ycy5wdXNoKG1ldGEpO1xuICAgICAgLy8gaGFuZGxlIGFkZGl0aW9uYWwgYXJnc1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXTtcbiAgICAgIGlmIChpc0Vycm9yKG1lc3NhZ2UpKSB7XG4gICAgICAgIGVycm9ycy51bnNoaWZ0KG1lc3NhZ2UpO1xuICAgICAgICBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGFyZyBvZiBvcmlnaW5hbEFyZ3Muc2xpY2UoMiArIG1vZGlmaWVyKSkge1xuICAgICAgICAvLyBzaG91bGQgc2tpcCB0aGlzIGJldHRlciB3aXRoIHNsaWNlIGFuZCBtb2RpZmllciBhZGp1c3RtZW50XG4gICAgICAgIGlmIChtZXRhID09PSBhcmcpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoaXNFcnJvcihhcmcpKSBlcnJvcnMucHVzaChhcmcpO1xuICAgICAgICBlbHNlIG1lc3NhZ2VzLnB1c2goYXJnKTtcblxuICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQoLi4ubWVzc2FnZXMpO1xuICAgICAgICAgIGhhc01lc3NhZ2UgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChsZXZlbCA9PT0gJ2xvZycpIGxldmVsID0gJ2Vycm9yJztcblxuICAgICAgbWV0YSA9IHt9O1xuICAgIH1cblxuICAgIGlmICghaXNVbmRlZmluZWQobWV0YSkgJiYgIWlzT2JqZWN0KG1ldGEpKSBtZXRhID0geyBvcmlnaW5hbF9tZXRhOiBtZXRhIH07XG4gICAgZWxzZSBpZiAoIWlzT2JqZWN0KG1ldGEpKSBtZXRhID0ge307XG5cbiAgICBpZiAoaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgZXJyb3JzLnVuc2hpZnQobWVzc2FnZSk7XG4gICAgICBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vXG4gICAgLy8gcmV3cml0ZSBgbWV0YS5lcnJgIHRvIGBtZXRhLm9yaWdpbmFsX2VycmAgZm9yIGNvbnNpc3RlbmN5XG4gICAgLy8gKGluIGNhc2Ugc29tZW9uZSBoYXMgYW4gb2JqZWN0IHdpdGggYC5lcnJgIHByb3BlcnR5IG9uIGl0IHdpdGggYW4gZXJyb3IpXG4gICAgLy9cbiAgICBpZiAoaXNPYmplY3QobWV0YS5lcnIpKSB7XG4gICAgICBpZiAoaXNFcnJvcihtZXRhLmVycikpIGVycm9ycy5wdXNoKG1ldGEuZXJyKTtcbiAgICAgIG1ldGEub3JpZ2luYWxfZXJyID0gaXNFcnJvcihtZXRhLmVycikgPyBwYXJzZUVycihtZXRhLmVycikgOiBtZXRhLmVycjtcbiAgICB9XG5cbiAgICBsZXQgZXJyO1xuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKGVycm9ycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZXJyID0gZXJyb3JzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKFxuICAgICAgICAgIFsuLi5uZXcgU2V0KGVycm9ycy5tYXAoKGUpID0+IGUubWVzc2FnZSkuZmlsdGVyKEJvb2xlYW4pKV0uam9pbignOyAnKVxuICAgICAgICApO1xuICAgICAgICBlcnIuc3RhY2sgPSBbXG4gICAgICAgICAgLi4ubmV3IFNldChlcnJvcnMubWFwKChlKSA9PiBlLnN0YWNrKS5maWx0ZXIoQm9vbGVhbikpXG4gICAgICAgIF0uam9pbignXFxuXFxuJyk7XG4gICAgICAgIGVyci5lcnJvcnMgPSBlcnJvcnM7XG4gICAgICB9XG5cbiAgICAgIG1ldGEuZXJyID0gcGFyc2VFcnIoZXJyKTtcbiAgICAgIGlmICghaXNTdHJpbmcobWVzc2FnZSkpIG1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIE5PVEU6IHRoaXMgd2FzIHJlbW92ZWQgaW4gdjEwLjIuMiBkdWUgdG8gY2lyY3VsYXIgcmVmZXJlbmNlIGlzc3Vlc1xuICAgIC8vICAgICAgICh0aGUgd29ya2Fyb3VuZCB3b3VsZCBpbnZvbHZlIHNhZmVTdHJpbmdpZnkgYW5kIHRoZW4gSlNPTi5wYXJzZSB3aGljaCB3b3VsZCBiZSBwZXJmIGJsb2F0KVxuICAgIC8vICAgICAgICh0aGVyZSBzdGlsbCBtaWdodCBiZSBhbm90aGVyIHdvcmthcm91bmQgb3IgcGVyaGFwcyB3ZSBkb24ndCBhZGQgYWxsIHRoZSBhcmdzIGhlcmUgZXhjZXB0IGFkZGl0aW9uYWwpXG4gICAgLy9cbiAgICAvLyBTZXQgYGFyZ3NgIHByb3Agd2l0aCBvcmlnaW5hbCBhcmd1bWVudHMgcGFzc2VkXG4gICAgLy8gbWV0YS5hcmdzID0gb3JpZ2luYWxBcmdzO1xuXG4gICAgLy8gU2V0IGRlZmF1bHQgbGV2ZWwgb24gbWV0YVxuICAgIG1ldGEubGV2ZWwgPSBsZXZlbDtcblxuICAgIC8vIEFkZCBgYXBwYCBvYmplY3QgdG8gbWV0YWRhdGFcbiAgICBpZiAodGhpcy5hcHBJbmZvKSBtZXRhLmFwcCA9IHRoaXMuYXBwSW5mbztcblxuICAgIC8vXG4gICAgLy8gZGV0ZXJtaW5lIGxvZyBtZXRob2QgdG8gdXNlXG4gICAgLy9cbiAgICAvLyBpZiB3ZSBkaWRuJ3QgcGFzcyBhIGxldmVsIGFzIGEgbWV0aG9kXG4gICAgLy8gKGUuZy4gY29uc29sZS5pbmZvKSwgdGhlbiB3ZSBzaG91bGQgc3RpbGxcbiAgICAvLyB1c2UgdGhlIGxvZ2dlcidzIGBsb2dgIG1ldGhvZCB0byBvdXRwdXRcbiAgICAvL1xuICAgIC8vIGFuZCBmYXRhbCBzaG91bGQgdXNlIGVycm9yIChlLmcuIGluIGJyb3dzZXIpXG4gICAgLy9cbiAgICBjb25zdCBtZXRob2QgPSBtb2RpZmllciA9PT0gLTEgPyAnbG9nJyA6IGxldmVsO1xuXG4gICAgLy8gcHJlLWhvb2tzXG4gICAgZm9yIChjb25zdCBob29rIG9mIHRoaXMuY29uZmlnLmhvb2tzLnByZSkge1xuICAgICAgW2VyciwgbWVzc2FnZSwgbWV0YV0gPSBob29rKG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIE5PVEU6IHVzaW5nIGxvZGFzaCBfLm9taXQgYW5kIF8ucGljayB3b3VsZCBoYXZlIGJlZW4gX3Zlcnkgc2xvd19cbiAgICAvL1xuICAgIC8vIGNvbnN0IG9taXR0ZWRBbmRQaWNrZWRGaWVsZHMgPSB7XG4gICAgLy8gICAuLi5fLm9taXQobWV0YSwgdGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSxcbiAgICAvLyAgIC4uLl8ucGljayhtZXRhLCB0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcylcbiAgICAvLyB9O1xuICAgIC8vXG4gICAgLy8gYWxzbyB3ZSBkb24ndCB3YW50IHRvIG11dGF0ZSBhbnl0aGluZyBpbiBgbWV0YWBcbiAgICAvLyBhbmQgaWRlYWxseSB3ZSBvbmx5IHdhbnQgdG8gcGljayBleGFjdGx5IHdoYXQgd2UgbmVlZFxuICAgIC8vIChhbmQgbm90IGhhdmUgdHdvIG9wZXJhdGlvbnMsIG9uZSBmb3Igb21pdCwgYW5kIG9uZSBmb3IgcGljaylcbiAgICAvL1xuXG4gICAgLy8gc2V0IGEgYm9vbGVhbiBmbGFnIGlmIHdlIGhhZCB0aGUgc2lsZW50IHN5bWJvbCBvciBub3RcbiAgICBjb25zdCBoYWRUcnVlU2lsZW50U3ltYm9sID0gYm9vbGVhbihtZXRhW3NpbGVudFN5bWJvbF0pO1xuXG4gICAgaWYgKCFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBvZiBSZWZsZWN0Lm93bktleXModGhpcy5jb25maWcubWV0YS5yZW1hcHBlZEZpZWxkcykpIHtcbiAgICAgICAgc2V0KG1ldGEsIHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHNba2V5XSwgZ2V0KG1ldGEsIGtleSkpO1xuICAgICAgICB1bnNldChtZXRhLCBrZXkpO1xuICAgICAgICAvLyBjbGVhbnVwIGVtcHR5IG9iamVjdHMgYWZ0ZXIgcmVtYXBwaW5nXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5tZXRhLmNsZWFudXBSZW1hcHBpbmcpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGtleS5sYXN0SW5kZXhPZignLicpO1xuICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHBhcmVudEtleSA9IGtleS5zbGljZSgwLCBpbmRleCk7XG4gICAgICAgICAgaWYgKGlzRW1wdHkoZ2V0KG1ldGEsIHBhcmVudEtleSkpKSB1bnNldChtZXRhLCBwYXJlbnRLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSB8fFxuICAgICAgIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpXG4gICAgKSB7XG4gICAgICBjb25zdCBkb3RpZmllZCA9IGRvdGlmeVRvQXJyYXkobWV0YSk7XG4gICAgICAvLyBkb3RpZmllZCA9IFtcbiAgICAgIC8vICAgJ2Vyci5uYW1lJyxcbiAgICAgIC8vICAgJ2Vyci5tZXNzYWdlJyxcbiAgICAgIC8vICAgJ2Vyci5zdGFjaycsXG4gICAgICAvLyAgICdsZXZlbCcsXG4gICAgICAvLyAgICdhcHAubmFtZScsXG4gICAgICAvLyAgICdhcHAudmVyc2lvbicsXG4gICAgICAvLyAgICdhcHAubm9kZScsXG4gICAgICAvLyAgICdhcHAuaGFzaCcsXG4gICAgICAvLyAgIC8vIC4uLlxuICAgICAgLy8gXVxuXG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHByb3Agb2YgdGhpcy5jb25maWcubWV0YS5vbWl0dGVkRmllbGRzKSB7XG4gICAgICAgICAgLy8gPGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS85ODgyMzQ5PlxuICAgICAgICAgIGxldCBpID0gZG90aWZpZWQubGVuZ3RoO1xuICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZG90aWZpZWRbaV0gPT09IHByb3AgfHxcbiAgICAgICAgICAgICAgKCFpc1N5bWJvbChkb3RpZmllZFtpXSkgJiYgZG90aWZpZWRbaV0uaW5kZXhPZihgJHtwcm9wfS5gKSA9PT0gMClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBwaWNrZWRTeW1ib2xzID0gW107XG5cbiAgICAgIGlmICghaXNFbXB0eSh0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuY29uZmlnLm1ldGEucGlja2VkRmllbGRzKSB7XG4gICAgICAgICAgLy8gcmVzcG9uc2UuaGVhZGVycy5ib29wXG4gICAgICAgICAgLy8gcmVzcG9uc2UuaGVhZGVycy5iZWVwXG4gICAgICAgICAgLy8gcmVzcG9uc2UuYm9keVxuICAgICAgICAgIC8vIHJlc3BvbnNlLnRleHRcbiAgICAgICAgICAvLyByZXNwb25zZVxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBzcGxpdCBieSB0aGUgZmlyc3QgcGVyaW9kIGFuZCBvbWl0IGFueSBrZXlzIGZyb20gZG90aWZpZWQgc3RhcnRpbmcgd2l0aCBpdFxuICAgICAgICAgIGlmIChpc1N5bWJvbChwcm9wKSkge1xuICAgICAgICAgICAgaWYgKG1ldGFbcHJvcF0pIHBpY2tlZFN5bWJvbHMucHVzaChbcHJvcCwgbWV0YVtwcm9wXV0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHByb3AuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gcHJvcC5zbGljZSgwLCBpbmRleCArIDEpO1xuICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICBsZXQgaSA9IGRvdGlmaWVkLmxlbmd0aDtcbiAgICAgICAgICAgICAgd2hpbGUgKGktLSkge1xuICAgICAgICAgICAgICAgIGlmIChkb3RpZmllZFtpXSA9PT0ga2V5LnNsaWNlKDAsIC0xKSkgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvdGlmaWVkW2ldLmluZGV4T2Yoa2V5KSA9PT0gMCkgZG90aWZpZWQuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZmluYWxseSBhZGQgaXQgaWYgaXQgZGlkIG5vdCBhbHJlYWR5IGV4aXN0XG4gICAgICAgICAgaWYgKGRvdGlmaWVkLmluZGV4T2YocHJvcCkgPT09IC0xKSBkb3RpZmllZC5wdXNoKHByb3ApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vXG4gICAgICAvLyBpdGVyYXRlIG92ZXIgYWxsIGRvdGlmaWVkIHZhbHVlcyB0byBjaGVjayBmb3Igc3ltYm9sc1xuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHRoaXMgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGV5IGNvdWxkIGFscmVhZHkgYmUgaW4gYHBpY2tlZFN5bWJvbHNgXG4gICAgICAvLyAgICAgICAoYW5kIGl0IGRvZXNuJ3QgYWxzbyBkbyBiaWdpbnRzIHlldClcbiAgICAgIC8vXG4gICAgICBmb3IgKGNvbnN0IHByb3Agb2YgZG90aWZpZWQpIHtcbiAgICAgICAgaWYgKGlzU3ltYm9sKHByb3ApKSB7XG4gICAgICAgICAgaWYgKG1ldGFbcHJvcF0gIT09IHVuZGVmaW5lZCkgcGlja2VkU3ltYm9scy5wdXNoKFtwcm9wLCBtZXRhW3Byb3BdXSk7XG4gICAgICAgIH0gZWxzZSBpZiAobWV0YVtTeW1ib2wuZm9yKHByb3ApXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcGlja2VkU3ltYm9scy5wdXNoKFtTeW1ib2wuZm9yKHByb3ApLCBtZXRhW1N5bWJvbC5mb3IocHJvcCldXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy9cbiAgICAgIC8vIG5vdyB3ZSBjYWxsIHBpY2stZGVlcCB1c2luZyB0aGUgZmluYWwgYXJyYXlcbiAgICAgIC8vXG4gICAgICAvLyBOT1RFOiB0aGlzIGRvZXMgbm90IHBpY2sgc3ltYm9scywgYmlnaW50cywgbm9yIHN0cmVhbXNcbiAgICAgIC8vICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vc3RyaWtlZW50Y28vcGljay1kZWVwL2lzc3Vlcy8yPlxuICAgICAgLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpa2VlbnRjby9waWNrLWRlZXAvaXNzdWVzLzI+XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogdGhpcyBpcyB3cmFwcGVkIGluIHRyeS9jYXRjaCBpbiBjYXNlIHNpbWlsYXIgZXJyb3JzIG9jY3VyXG4gICAgICAvLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3N0cmlwZS9zdHJpcGUtbm9kZS9pc3N1ZXMvMTc5Nj5cbiAgICAgIC8vXG4gICAgICB0cnkge1xuICAgICAgICBtZXRhID0gcGlja0RlZXAobWV0YSwgZG90aWZpZWQpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgfVxuXG4gICAgICAvL1xuICAgICAgLy8gaWYgdGhlcmUgd2VyZSBhbnkgdG9wLWxldmVsIHN5bWJvbHMgdG8gYmVcbiAgICAgIC8vIHBpY2tlZCB0aGVuIHdlIG5lZWQgdG8gYWRkIHRoZW0gYmFjayBoZXJlIHRvIHRoZSBsaXN0XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogd2UnZCBwcm9iYWJseSB3YW50IHRvIGRvIHRoZSBzYW1lIGZvciBiaWdpbnRzIGFzIHN5bWJvbHNcbiAgICAgIC8vXG4gICAgICBpZiAocGlja2VkU3ltYm9scy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIHBpY2tlZFN5bWJvbHMpIHtcbiAgICAgICAgICBtZXRhW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIG9ubHkgaW52b2tlIGxvZ2dlciBtZXRob2RzIGlmIGl0IHdhcyBub3Qgc2lsZW50XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5zaWxlbnQgJiYgIWhhZFRydWVTaWxlbnRTeW1ib2wpIHtcbiAgICAgIC8vIFNob3cgc3RhY2sgdHJhY2UgaWYgbmVjZXNzYXJ5IChhbG9uZyB3aXRoIGFueSBtZXRhZGF0YSlcbiAgICAgIGlmIChpc0Vycm9yKGVycikgJiYgdGhpcy5jb25maWcuc2hvd1N0YWNrKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcubWV0YS5zaG93IHx8IGlzRW1wdHkobWV0YSkpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXSguLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnJdIDogW2Vycl0pKTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhICYmXG4gICAgICAgICAgbWV0YVt0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhXVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXSguLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnJdIDogW2Vycl0pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShcbiAgICAgICAgICAgIC4uLihoYXNNZXNzYWdlID8gW21lc3NhZ2UsIGVyciwgbWV0YV0gOiBbZXJyLCBtZXRhXSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLmNvbmZpZy5tZXRhLnNob3cgfHwgaXNFbXB0eShtZXRhKSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShtZXNzYWdlKTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICh0aGlzLmNvbmZpZy5tZXRhLmhpZGVNZXRhICYmIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YV0pIHx8XG4gICAgICAgICh0aGlzLmNvbmZpZy5tZXRhLmhpZGVIVFRQICYmIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlSFRUUF0pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbbWV0aG9kXShtZXNzYWdlLCBtZXRhKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBwb3N0LWhvb2tzXG4gICAgaWYgKHRoaXMuY29uZmlnLmhvb2tzLnBvc3QubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHsgbWV0aG9kLCBlcnIsIG1lc3NhZ2UsIG1ldGEgfTtcbiAgICByZXR1cm4gcE1hcFNlcmllcyh0aGlzLmNvbmZpZy5ob29rcy5wb3N0LCAoaG9vaykgPT5cbiAgICAgIGhvb2sobWV0aG9kLCBlcnIsIG1lc3NhZ2UsIG1ldGEpXG4gICAgKVxuICAgICAgLnRoZW4oKVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyLmVycm9yKGVycik7XG4gICAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEF4ZTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBQSxPQUFPLENBQUMsa0JBQWtCLENBQUM7O0FBRTNCO0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ3hCLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0FBQzVDLE1BQU1HLGdCQUFnQixHQUFHSCxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDckQsTUFBTUksR0FBRyxHQUFHSixPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDdkMsTUFBTUssT0FBTyxHQUFHTCxPQUFPLENBQUMsU0FBUyxDQUFDO0FBQ2xDLE1BQU1NLFFBQVEsR0FBR04sT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNyQyxNQUFNTyxZQUFZLEdBQUdQLE9BQU8sQ0FBQyxlQUFlLENBQUM7QUFDN0MsTUFBTVEsVUFBVSxHQUFHUixPQUFPLENBQUMsY0FBYyxDQUFDO0FBQzFDLE1BQU1TLFlBQVksR0FBR1QsT0FBTyxDQUFDLGdCQUFnQixDQUFDO0FBQzlDLE1BQU1VLFFBQVEsR0FBR1YsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNyQyxNQUFNVyxRQUFRLEdBQUdYLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDckMsTUFBTVksR0FBRyxHQUFHWixPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDdkMsTUFBTWEsS0FBSyxHQUFHYixPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDLE1BQU07RUFBRWM7QUFBUSxDQUFDLEdBQUdkLE9BQU8sQ0FBQyxTQUFTLENBQUM7QUFDdEMsTUFBTWUsR0FBRyxHQUFH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
|
|
539
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwib3MiLCJmb3JtYXQiLCJmb3JtYXRTcGVjaWZpZXJzIiwiZ2V0IiwiaXNFcnJvciIsImlzU3ltYm9sIiwibWVyZ2VPcHRpb25zIiwicE1hcFNlcmllcyIsInBhcnNlQXBwSW5mbyIsInBhcnNlRXJyIiwicGlja0RlZXAiLCJzZXQiLCJ1bnNldCIsImJvb2xlYW4iLCJwa2ciLCJzaWxlbnRTeW1ib2wiLCJTeW1ib2wiLCJmb3IiLCJvbWl0dGVkTG9nZ2VyS2V5cyIsIlNldCIsImxldmVscyIsImFsaWFzZXMiLCJ3YXJuaW5nIiwiZXJyIiwibGV2ZWxFcnJvciIsImpvaW4iLCJuYW1lIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiSE9TVE5BTUUiLCJob3N0bmFtZSIsImlzUGxhaW5PYmplY3QiLCJ2YWx1ZSIsInByb3RvdHlwZSIsIk9iamVjdCIsImdldFByb3RvdHlwZU9mIiwidG9TdHJpbmdUYWciLCJpdGVyYXRvciIsImRvdGlmeVRvQXJyYXkiLCJvYmoiLCJyZXMiLCJyZWN1cnNlIiwiY3VycmVudCIsIkJ1ZmZlciIsImlzQnVmZmVyIiwiVWludDhBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsImtleSIsIlJlZmxlY3QiLCJvd25LZXlzIiwiY29udmVydGVkS2V5Iiwia2V5Rm9yIiwiZGVzY3JpcHRpb24iLCJuZXdLZXkiLCJpbmRleE9mIiwicHVzaCIsImlzRW1wdHkiLCJ1bmRlZmluZWQiLCJsZW5ndGgiLCJ0cmltIiwiaXNOdWxsIiwiaXNVbmRlZmluZWQiLCJpc09iamVjdCIsImlzU3RyaW5nIiwiaXNGdW5jdGlvbiIsImdldEZ1bmN0aW9uIiwiQXhlIiwiY29uc3RydWN0b3IiLCJfdGhpcyIsImNvbmZpZyIsImFyZ3VtZW50cyIsInJlbWFwcGVkRmllbGRzIiwiQVhFX1JFTUFQUEVEX01FVEFfRklFTERTIiwiZmllbGRzIiwiYXJyIiwic3BsaXQiLCJtYXAiLCJ2IiwicHJvcCIsIm9taXR0ZWRGaWVsZHMiLCJBWEVfT01JVF9NRVRBX0ZJRUxEUyIsInMiLCJwaWNrZWRGaWVsZHMiLCJBWEVfUElDS19NRVRBX0ZJRUxEUyIsInNob3dTdGFjayIsIkFYRV9TSE9XX1NUQUNLIiwibWV0YSIsImFzc2lnbiIsInNob3ciLCJBWEVfU0hPV19NRVRBIiwiY2xlYW51cFJlbWFwcGluZyIsImhpZGVIVFRQIiwiaGlkZU1ldGEiLCJ2ZXJzaW9uIiwic2lsZW50IiwibG9nZ2VyIiwiY29uc29sZSIsImxldmVsIiwiYXBwSW5mbyIsIkFYRV9BUFBfSU5GTyIsImhvb2tzIiwicHJlIiwicG9zdCIsImxvZyIsImJpbmQiLCJtZXRob2RzIiwia2V5cyIsImZpbHRlciIsImhhcyIsImVsZW1lbnQiLCJmYXRhbCIsImVycm9yIiwiaW5mbyIsIkVycm9yIiwiX2xlbiIsImFyZ3MiLCJfa2V5Iiwic2xpY2UiLCJjYWxsIiwic2V0TGV2ZWwiLCJnZXROb3JtYWxpemVkTGV2ZWwiLCJzZXROYW1lIiwid2FybiIsImZuIiwiX2xldmVsIiwiX2xlbjIiLCJfa2V5MiIsIl9sZW4zIiwiX2tleTMiLCJsb2dMZXZlbCIsInNjb3BlIiwibWVzc2FnZSIsIm9yaWdpbmFsQXJncyIsImVycm9ycyIsImhhc01lc3NhZ2UiLCJoYXNMZXZlbCIsIl9sZW40IiwiX2tleTQiLCJhcmciLCJtb2RpZmllciIsImlzQnVueWFuIiwiX21ldGEiLCJtZXNzYWdlcyIsInNvbWUiLCJ0IiwidW5zaGlmdCIsIm9yaWdpbmFsX21ldGEiLCJvcmlnaW5hbF9lcnIiLCJlIiwiQm9vbGVhbiIsInN0YWNrIiwiYXBwIiwibWV0aG9kIiwiaG9vayIsImhhZFRydWVTaWxlbnRTeW1ib2wiLCJpbmRleCIsImxhc3RJbmRleE9mIiwicGFyZW50S2V5IiwiZG90aWZpZWQiLCJpIiwic3BsaWNlIiwicGlja2VkU3ltYm9scyIsInRoZW4iLCJjYXRjaCIsIm1vZHVsZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi9zcmMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bmFzc2lnbmVkLWltcG9ydFxucmVxdWlyZSgnY29uc29sZS1wb2x5ZmlsbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9wcmVmZXItbm9kZS1wcm90b2NvbFxuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpO1xuY29uc3QgZm9ybWF0ID0gcmVxdWlyZSgnQGxhZGpzL2Zvcm1hdC11dGlsJyk7XG5jb25zdCBmb3JtYXRTcGVjaWZpZXJzID0gcmVxdWlyZSgnZm9ybWF0LXNwZWNpZmllcnMnKTtcbmNvbnN0IGdldCA9IHJlcXVpcmUoJ0BzdHJpa2VlbnRjby9nZXQnKTtcbmNvbnN0IGlzRXJyb3IgPSByZXF1aXJlKCdpc2Vycm9yJyk7XG5jb25zdCBpc1N5bWJvbCA9IHJlcXVpcmUoJ2lzLXN5bWJvbCcpO1xuY29uc3QgbWVyZ2VPcHRpb25zID0gcmVxdWlyZSgnbWVyZ2Utb3B0aW9ucycpO1xuY29uc3QgcE1hcFNlcmllcyA9IHJlcXVpcmUoJ3AtbWFwLXNlcmllcycpO1xuY29uc3QgcGFyc2VBcHBJbmZvID0gcmVxdWlyZSgncGFyc2UtYXBwLWluZm8nKTtcbmNvbnN0IHBhcnNlRXJyID0gcmVxdWlyZSgncGFyc2UtZXJyJyk7XG5jb25zdCBwaWNrRGVlcCA9IHJlcXVpcmUoJ3BpY2stZGVlcCcpO1xuY29uc3Qgc2V0ID0gcmVxdWlyZSgnQHN0cmlrZWVudGNvL3NldCcpO1xuY29uc3QgdW5zZXQgPSByZXF1aXJlKCd1bnNldC12YWx1ZScpO1xuY29uc3QgeyBib29sZWFuIH0gPSByZXF1aXJlKCdib29sZWFuJyk7XG5jb25zdCBwa2cgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKTtcblxuY29uc3Qgc2lsZW50U3ltYm9sID0gU3ltYm9sLmZvcignYXhlLnNpbGVudCcpO1xuY29uc3Qgb21pdHRlZExvZ2dlcktleXMgPSBuZXcgU2V0KFsnY29uZmlnJywgJ2xvZyddKTtcbmNvbnN0IGxldmVscyA9IFsndHJhY2UnLCAnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2ZhdGFsJ107XG5jb25zdCBhbGlhc2VzID0geyB3YXJuaW5nOiAnd2FybicsIGVycjogJ2Vycm9yJyB9O1xuY29uc3QgbGV2ZWxFcnJvciA9IGBcXGBsZXZlbFxcYCBpbnZhbGlkLCBtdXN0IGJlOiAke2xldmVscy5qb2luKCcsICcpfWA7XG5jb25zdCBuYW1lID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCdcbiAgICA/IGZhbHNlXG4gICAgOiBwcm9jZXNzLmVudi5IT1NUTkFNRSB8fCBvcy5ob3N0bmFtZSgpO1xuXG4vLyA8aHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9pcy1wbGFpbi1vYmovYmxvYi9tYWluL2luZGV4LmpzPlxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIHJldHVybiAoXG4gICAgKHByb3RvdHlwZSA9PT0gbnVsbCB8fFxuICAgICAgcHJvdG90eXBlID09PSBPYmplY3QucHJvdG90eXBlIHx8XG4gICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG90eXBlKSA9PT0gbnVsbCkgJiZcbiAgICAhKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkgJiZcbiAgICAhKFN5bWJvbC5pdGVyYXRvciBpbiB2YWx1ZSkgJiZcbiAgICAhaXNTeW1ib2wodmFsdWUpXG4gICk7XG59XG5cbi8vIDxodHRwczovL2dpdGh1Yi5jb20vR2VlbmVuVGlqZC9kb3RpZnkvYmxvYi9tYXN0ZXIvZG90aWZ5LmpzPlxuZnVuY3Rpb24gZG90aWZ5VG9BcnJheShvYmopIHtcbiAgY29uc3QgcmVzID0gW107XG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqLCBjdXJyZW50KSB7XG4gICAgLy8gaWYgaXQncyBhIGJ1ZmZlciwgdWludDhhcnJheSwgb3IgYXJyYXlcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbi9wcmVmZXItZ2xvYmFsL2J1ZmZlclxuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IEFycmF5LmlzQXJyYXkob2JqKSlcbiAgICAgIHJldHVybjtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIFJlZmxlY3Qub3duS2V5cyhvYmopKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IG9ialtrZXldO1xuICAgICAgY29uc3QgY29udmVydGVkS2V5ID0gaXNTeW1ib2woa2V5KVxuICAgICAgICA/IFN5bWJvbC5rZXlGb3Ioa2V5KSB8fCBrZXkuZGVzY3JpcHRpb25cbiAgICAgICAgOiBrZXk7XG4gICAgICBjb25zdCBuZXdLZXkgPSBjdXJyZW50ID8gY3VycmVudCArICcuJyArIGNvbnZlcnRlZEtleSA6IGNvbnZlcnRlZEtleTsgLy8gam9pbmVkIGtleSB3aXRoIGRvdFxuICAgICAgLy8gaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgISh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpICYmICFPYmplY3RJRC5pc1ZhbGlkKHZhbHVlKSkge1xuICAgICAgaWYgKGlzUGxhaW5PYmplY3QodmFsdWUpICYmIHJlcy5pbmRleE9mKGNvbnZlcnRlZEtleSkgPT09IC0xKSB7XG4gICAgICAgIHJlcy5wdXNoKGNvbnZlcnRlZEtleSk7XG4gICAgICAgIHJlY3Vyc2UodmFsdWUsIG5ld0tleSk7IC8vIGl0J3MgYSBuZXN0ZWQgb2JqZWN0LCBzbyBkbyBpdCBhZ2FpblxuICAgICAgfSBlbHNlIGlmIChyZXMuaW5kZXhPZihuZXdLZXkpID09PSAtMSkge1xuICAgICAgICByZXMucHVzaChuZXdLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlY3Vyc2Uob2JqKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy8gPGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS80MzIzMzE2Mz5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBSZWZsZWN0Lm93bktleXModmFsdWUpLmxlbmd0aCA9PT0gMCkgfHxcbiAgICAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc051bGwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBnZXRGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gaXNGdW5jdGlvbih2YWx1ZSkgPyB2YWx1ZSA6IG51bGw7XG59XG5cbmNsYXNzIEF4ZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG4gIGNvbnN0cnVjdG9yKGNvbmZpZyA9IHt9KSB7XG4gICAgY29uc3QgcmVtYXBwZWRGaWVsZHMgPSB7fTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuQVhFX1JFTUFQUEVEX01FVEFfRklFTERTKSB7XG4gICAgICBjb25zdCBmaWVsZHMgPSBwcm9jZXNzLmVudi5BWEVfUkVNQVBQRURfTUVUQV9GSUVMRFM7XG4gICAgICBjb25zdCBhcnIgPSBmaWVsZHMuc3BsaXQoJywnKS5tYXAoKHYpID0+IHYuc3BsaXQoJzonKSk7XG4gICAgICBmb3IgKGNvbnN0IFtwcm9wLCB2YWx1ZV0gb2YgYXJyKSB7XG4gICAgICAgIHJlbWFwcGVkRmllbGRzW3Byb3BdID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZW52aWZ5IGRvZXMgbm90IHN1cHBvcnQgY29uZGl0aW9uYWxzIHdlbGwgZW5vdWdoIHNvIHdlIGRlY2xhcmUgdmFycyBvdXRzaWRlXG4gICAgbGV0IG9taXR0ZWRGaWVsZHMgPSBwcm9jZXNzLmVudi5BWEVfT01JVF9NRVRBX0ZJRUxEUztcbiAgICBpZiAodHlwZW9mIG9taXR0ZWRGaWVsZHMgPT09ICdzdHJpbmcnKVxuICAgICAgb21pdHRlZEZpZWxkcyA9IG9taXR0ZWRGaWVsZHMuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkob21pdHRlZEZpZWxkcykpIG9taXR0ZWRGaWVsZHMgPSBbXTtcblxuICAgIGxldCBwaWNrZWRGaWVsZHMgPSBwcm9jZXNzLmVudi5BWEVfUElDS19NRVRBX0ZJRUxEUztcbiAgICBpZiAodHlwZW9mIHBpY2tlZEZpZWxkcyA9PT0gJ3N0cmluZycpXG4gICAgICBwaWNrZWRGaWVsZHMgPSBwaWNrZWRGaWVsZHMuc3BsaXQoJywnKS5tYXAoKHMpID0+IHMudHJpbSgpKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocGlja2VkRmllbGRzKSkgcGlja2VkRmllbGRzID0gW107XG5cbiAgICB0aGlzLmNvbmZpZyA9IG1lcmdlT3B0aW9ucyhcbiAgICAgIHtcbiAgICAgICAgc2hvd1N0YWNrOiBwcm9jZXNzLmVudi5BWEVfU0hPV19TVEFDS1xuICAgICAgICAgID8gYm9vbGVhbihwcm9jZXNzLmVudi5BWEVfU0hPV19TVEFDSylcbiAgICAgICAgICA6IHRydWUsXG4gICAgICAgIG1ldGE6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2hvdzogcHJvY2Vzcy5lbnYuQVhFX1NIT1dfTUVUQVxuICAgICAgICAgICAgICA/IGJvb2xlYW4ocHJvY2Vzcy5lbnYuQVhFX1NIT1dfTUVUQSlcbiAgICAgICAgICAgICAgOiB0cnVlLFxuICAgICAgICAgICAgcmVtYXBwZWRGaWVsZHMsXG4gICAgICAgICAgICBvbWl0dGVkRmllbGRzLFxuICAgICAgICAgICAgcGlja2VkRmllbGRzLFxuICAgICAgICAgICAgY2xlYW51cFJlbWFwcGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGhpZGVIVFRQOiAnaXNfaHR0cCcsXG4gICAgICAgICAgICAvLyBpbXBsZW1lbnRlZCBtYWlubHkgZm9yIEBsYWRqcy9ncmFjZWZ1bCB0b1xuICAgICAgICAgICAgLy8gc3VwcHJlc3MgdW5uZWNlc3NhcnkgbWV0YSBvdXRwdXQgdG8gY29uc29sZVxuICAgICAgICAgICAgaGlkZU1ldGE6ICdoaWRlX21ldGEnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0eXBlb2YgY29uZmlnLm1ldGEgPT09ICdvYmplY3QnID8gY29uZmlnLm1ldGEgOiB7fVxuICAgICAgICApLFxuICAgICAgICB2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgICAgICAgc2lsZW50OiBmYWxzZSxcbiAgICAgICAgbG9nZ2VyOiBjb25zb2xlLFxuICAgICAgICBuYW1lLFxuICAgICAgICBsZXZlbDogJ2luZm8nLFxuICAgICAgICBsZXZlbHM6IFsnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2ZhdGFsJ10sXG4gICAgICAgIGFwcEluZm86IHByb2Nlc3MuZW52LkFYRV9BUFBfSU5GT1xuICAgICAgICAgID8gYm9vbGVhbihwcm9jZXNzLmVudi5BWEVfQVBQX0lORk8pXG4gICAgICAgICAgOiB0cnVlLFxuICAgICAgICBob29rczogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmU6IFtdLFxuICAgICAgICAgICAgcG9zdDogW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIHR5cGVvZiBjb25maWcuaG9va3MgPT09ICdvYmplY3QnID8gY29uZmlnLmhvb2tzIDoge31cbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICB0aGlzLmFwcEluZm8gPSB0aGlzLmNvbmZpZy5hcHBJbmZvXG4gICAgICA/IGlzRnVuY3Rpb24ocGFyc2VBcHBJbmZvKVxuICAgICAgICA/IHBhcnNlQXBwSW5mbygpXG4gICAgICAgIDogZmFsc2VcbiAgICAgIDogZmFsc2U7XG5cbiAgICB0aGlzLmxvZyA9IHRoaXMubG9nLmJpbmQodGhpcyk7XG5cbiAgICAvLyBJbmhlcml0IG1ldGhvZHMgZnJvbSBwYXJlbnQgbG9nZ2VyXG4gICAgY29uc3QgbWV0aG9kcyA9IE9iamVjdC5rZXlzKHRoaXMuY29uZmlnLmxvZ2dlcikuZmlsdGVyKFxuICAgICAgKGtleSkgPT4gIW9taXR0ZWRMb2dnZXJLZXlzLmhhcyhrZXkpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgbWV0aG9kcykge1xuICAgICAgdGhpc1tlbGVtZW50XSA9IHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XTtcbiAgICB9XG5cbiAgICAvLyBCaW5kIGhlbHBlciBmdW5jdGlvbnMgZm9yIGVhY2ggbG9nIGxldmVsXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGxldmVscykge1xuICAgICAgLy8gRW5zdXJlIGZ1bmN0aW9uIGV4aXN0cyBpbiBsb2dnZXIgcGFzc2VkXG4gICAgICBpZiAoZWxlbWVudCA9PT0gJ2ZhdGFsJykge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXIuZmF0YWwgPVxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XSkgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIuZXJyb3IpIHx8XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyLmluZm8pIHx8XG4gICAgICAgICAgZ2V0RnVuY3Rpb24odGhpcy5jb25maWcubG9nZ2VyLmxvZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXJbZWxlbWVudF0gPVxuICAgICAgICAgIGdldEZ1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XSkgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIuaW5mbykgfHxcbiAgICAgICAgICBnZXRGdW5jdGlvbih0aGlzLmNvbmZpZy5sb2dnZXIubG9nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0Z1bmN0aW9uKHRoaXMuY29uZmlnLmxvZ2dlcltlbGVtZW50XSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcXGAke2VsZW1lbnR9XFxgIG11c3QgYmUgYSBmdW5jdGlvbiBvbiB0aGUgbG9nZ2VyLmApO1xuICAgICAgfVxuXG4gICAgICAvLyBCaW5kIGxvZyBoYW5kbGVyIHdoaWNoIG5vcm1hbGl6ZXMgYXJncyBhbmQgcG9wdWxhdGVzIG1ldGFcbiAgICAgIHRoaXNbZWxlbWVudF0gPSAoLi4uYXJncykgPT5cbiAgICAgICAgdGhpcy5sb2coZWxlbWVudCwgLi4uQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJncykpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0TGV2ZWwgPSB0aGlzLnNldExldmVsLmJpbmQodGhpcyk7XG4gICAgdGhpcy5nZXROb3JtYWxpemVkTGV2ZWwgPSB0aGlzLmdldE5vcm1hbGl6ZWRMZXZlbC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuc2V0TmFtZSA9IHRoaXMuc2V0TmFtZS5iaW5kKHRoaXMpO1xuXG4gICAgLy8gU2V0IHRoZSBsb2dnZXIgbmFtZVxuICAgIGlmICh0aGlzLmNvbmZpZy5uYW1lKSB0aGlzLnNldE5hbWUodGhpcy5jb25maWcubmFtZSk7XG5cbiAgICAvLyBTZXQgdGhlIGxvZ2dlciBsZXZlbFxuICAgIHRoaXMuc2V0TGV2ZWwodGhpcy5jb25maWcubGV2ZWwpO1xuXG4gICAgLy8gQWxpYXNlc1xuICAgIHRoaXMuZXJyID0gdGhpcy5lcnJvcjtcbiAgICB0aGlzLndhcm5pbmcgPSB0aGlzLndhcm47XG5cbiAgICAvLyBQcmUgYW5kIFBvc3QgSG9va3NcbiAgICB0aGlzLnByZSA9IGZ1bmN0aW9uIChsZXZlbCwgZm4pIHtcbiAgICAgIHRoaXMuY29uZmlnLmhvb2tzLnByZS5wdXNoKGZ1bmN0aW9uIChfbGV2ZWwsIC4uLmFyZ3MpIHtcbiAgICAgICAgaWYgKGxldmVsICE9PSBfbGV2ZWwpIHJldHVybiBbLi4uYXJnc107XG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLnBvc3QgPSBmdW5jdGlvbiAobGV2ZWwsIGZuKSB7XG4gICAgICB0aGlzLmNvbmZpZy5ob29rcy5wb3N0LnB1c2goZnVuY3Rpb24gKF9sZXZlbCwgLi4uYXJncykge1xuICAgICAgICBpZiAobGV2ZWwgIT09IF9sZXZlbCkgcmV0dXJuIFsuLi5hcmdzXTtcbiAgICAgICAgcmV0dXJuIGZuKC4uLmFyZ3MpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfVxuXG4gIHNldExldmVsKGxldmVsKSB7XG4gICAgaWYgKCFpc1N0cmluZyhsZXZlbCkgfHwgbGV2ZWxzLmluZGV4T2YobGV2ZWwpID09PSAtMSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihsZXZlbEVycm9yKTtcbiAgICAvLyBTdXBwb3J0IHNpZ25hbGUgbG9nZ2VyIGFuZCBvdGhlciBsb2dnZXJzIHRoYXQgdXNlIGBsb2dMZXZlbGBcbiAgICBpZiAoaXNTdHJpbmcodGhpcy5jb25maWcubG9nZ2VyLmxvZ0xldmVsKSlcbiAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5sb2dMZXZlbCA9IGxldmVsO1xuICAgIGVsc2UgdGhpcy5jb25maWcubG9nZ2VyLmxldmVsID0gbGV2ZWw7XG4gICAgLy8gQWRqdXN0cyBgdGhpcy5jb25maWcubGV2ZWxzYCBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQgaGFzIGFsbCBwcm9jZWVkaW5nIChpbmNsdXNpdmUpXG4gICAgdGhpcy5jb25maWcubGV2ZWxzID0gbGV2ZWxzLnNsaWNlKGxldmVscy5pbmRleE9mKGxldmVsKSk7XG4gIH1cblxuICBnZXROb3JtYWxpemVkTGV2ZWwobGV2ZWwpIHtcbiAgICBpZiAoIWlzU3RyaW5nKGxldmVsKSkgcmV0dXJuICdpbmZvJztcbiAgICBpZiAoaXNTdHJpbmcoYWxpYXNlc1tsZXZlbF0pKSByZXR1cm4gYWxpYXNlc1tsZXZlbF07XG4gICAgaWYgKGxldmVscy5pbmRleE9mKGxldmVsKSA9PT0gLTEpIHJldHVybiAnaW5mbyc7XG4gICAgcmV0dXJuIGxldmVsO1xuICB9XG5cbiAgc2V0TmFtZShuYW1lKSB7XG4gICAgaWYgKCFpc1N0cmluZyhuYW1lKSkgdGhyb3cgbmV3IEVycm9yKCdgbmFtZWAgbXVzdCBiZSBhIFN0cmluZycpO1xuICAgIC8vIFN1cHBvcnQgc2lnbmFsZSBsb2dnZXIgYW5kIG90aGVyIGxvZ2dlcnMgdGhhdCB1c2UgYHNjb3BlYFxuICAgIGlmIChpc1N0cmluZyh0aGlzLmNvbmZpZy5sb2dnZXIuc2NvcGUpKSB0aGlzLmNvbmZpZy5sb2dnZXIuc2NvcGUgPSBuYW1lO1xuICAgIGVsc2UgdGhpcy5jb25maWcubG9nZ2VyLm5hbWUgPSBuYW1lO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbXBsZXhpdHlcbiAgbG9nKGxldmVsLCBtZXNzYWdlLCBtZXRhLCAuLi5hcmdzKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxBcmdzID0gW107XG4gICAgY29uc3QgZXJyb3JzID0gW107XG4gICAgbGV0IGhhc01lc3NhZ2UgPSBmYWxzZTtcbiAgICBsZXQgaGFzTGV2ZWwgPSB0cnVlO1xuXG4gICAgaWYgKCFpc1VuZGVmaW5lZChsZXZlbCkpIG9yaWdpbmFsQXJncy5wdXNoKGxldmVsKTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG1lc3NhZ2UpKSBvcmlnaW5hbEFyZ3MucHVzaChtZXNzYWdlKTtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKG1ldGEpKSBvcmlnaW5hbEFyZ3MucHVzaChtZXRhKTtcbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzKSkge1xuICAgICAgb3JpZ2luYWxBcmdzLnB1c2goYXJnKTtcbiAgICB9XG5cbiAgICBsZXQgbW9kaWZpZXIgPSAwO1xuXG4gICAgaWYgKGlzU3RyaW5nKGxldmVsKSAmJiBpc1N0cmluZyhhbGlhc2VzW2xldmVsXSkpIHtcbiAgICAgIGxldmVsID0gYWxpYXNlc1tsZXZlbF07XG4gICAgfSBlbHNlIGlmIChpc0Vycm9yKGxldmVsKSkge1xuICAgICAgaGFzTGV2ZWwgPSBmYWxzZTtcbiAgICAgIG1ldGEgPSBtZXNzYWdlO1xuICAgICAgbWVzc2FnZSA9IGxldmVsO1xuICAgICAgbGV2ZWwgPSAnZXJyb3InO1xuICAgIH0gZWxzZSBpZiAoIWlzU3RyaW5nKGxldmVsKSB8fCBsZXZlbHMuaW5kZXhPZihsZXZlbCkgPT09IC0xKSB7XG4gICAgICBoYXNMZXZlbCA9IGZhbHNlO1xuICAgICAgbWV0YSA9IG1lc3NhZ2U7XG4gICAgICBtZXNzYWdlID0gbGV2ZWw7XG4gICAgICBsZXZlbCA9IHRoaXMuZ2V0Tm9ybWFsaXplZExldmVsKGxldmVsKTtcbiAgICAgIG1vZGlmaWVyID0gLTE7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGVhcmx5IGlmIGl0IGlzIG5vdCBhIHZhbGlkIGxvZ2dpbmcgbGV2ZWxcbiAgICBpZiAodGhpcy5jb25maWcubGV2ZWxzLmluZGV4T2YobGV2ZWwpID09PSAtMSkgcmV0dXJuO1xuXG4gICAgLy8gQnVueWFuIHN1cHBvcnQgKG1ldGEsIG1lc3NhZ2UsIC4uLmFyZ3MpXG4gICAgbGV0IGlzQnVueWFuID0gZmFsc2U7XG4gICAgaWYgKChpc09iamVjdChtZXNzYWdlKSB8fCBBcnJheS5pc0FycmF5KG1lc3NhZ2UpKSAmJiBpc1N0cmluZyhtZXRhKSkge1xuICAgICAgaXNCdW55YW4gPSB0cnVlO1xuICAgICAgY29uc3QgX21ldGEgPSBtZXRhO1xuICAgICAgbWV0YSA9IG1lc3NhZ2U7XG4gICAgICBtZXNzYWdlID1cbiAgICAgICAgaXNTdHJpbmcoX21ldGEpICYmIG9yaWdpbmFsQXJncy5sZW5ndGggPj0gMyArIG1vZGlmaWVyXG4gICAgICAgICAgPyBmb3JtYXQoLi4ub3JpZ2luYWxBcmdzLnNsaWNlKDIgKyBtb2RpZmllcikpXG4gICAgICAgICAgOiBfbWV0YTtcbiAgICB9XG5cbiAgICAvLyBJZiBtZXNzYWdlIHdhcyB1bmRlZmluZWQgdGhlbiBzZXQgaXQgdG8gbGV2ZWxcbiAgICBpZiAoaXNVbmRlZmluZWQobWVzc2FnZSkpIG1lc3NhZ2UgPSBsZXZlbDtcblxuICAgIC8vIElmIG9ubHkgYG1lc3NhZ2VgIHdhcyBwYXNzZWQgdGhlbiBpZiBpdCB3YXMgYW4gT2JqZWN0XG4gICAgLy8gcHJlc2VydmUgaXQgYXMgYW4gT2JqZWN0IGJ5IHNldHRpbmcgaXQgYXMgbWV0YVxuICAgIGlmIChcbiAgICAgIG9yaWdpbmFsQXJncy5zbGljZSgxICsgbW9kaWZpZXIpLmxlbmd0aCA9PT0gMSAmJlxuICAgICAgIWlzU3RyaW5nKG1lc3NhZ2UpICYmXG4gICAgICAhaXNFcnJvcihtZXNzYWdlKVxuICAgICkge1xuICAgICAgbWV0YSA9IHsgbWVzc2FnZSB9O1xuICAgICAgbWVzc2FnZSA9IGxldmVsO1xuICAgIH0gZWxzZSBpZiAoIWlzQnVueWFuICYmIG9yaWdpbmFsQXJncy5sZW5ndGggPj0gNCArIG1vZGlmaWVyKSB7XG4gICAgICBtZXNzYWdlID0gdW5kZWZpbmVkO1xuICAgICAgbWV0YSA9IHt9O1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgYXJnIG9mIG9yaWdpbmFsQXJncy5zbGljZShcbiAgICAgICAgaGFzTGV2ZWwgJiYgbW9kaWZpZXIgPT09IDAgPyAxIDogMFxuICAgICAgKSkge1xuICAgICAgICBpZiAoaXNFcnJvcihhcmcpKSBlcnJvcnMucHVzaChhcmcpO1xuICAgICAgICAvLyBwdXNoZXMgbnVtYmVyLCBvYmplY3QsIHN0cmluZywgZXRjIGZvciBmb3JtYXR0aW5nXG4gICAgICAgIGVsc2UgbWVzc2FnZXMucHVzaChhcmcpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBtZXNzYWdlID0gZm9ybWF0KC4uLm1lc3NhZ2VzKTtcbiAgICAgICAgaGFzTWVzc2FnZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCAmJiBsZXZlbCA9PT0gJ2xvZycpIGxldmVsID0gJ2Vycm9yJztcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgIWlzQnVueWFuICYmXG4gICAgICBvcmlnaW5hbEFyZ3MubGVuZ3RoID09PSAzICsgbW9kaWZpZXIgJiZcbiAgICAgIGlzU3RyaW5nKG1lc3NhZ2UpICYmXG4gICAgICBmb3JtYXRTcGVjaWZpZXJzLnNvbWUoKHQpID0+IG1lc3NhZ2UuaW5kZXhPZih0KSAhPT0gLTEpXG4gICAgKSB7XG4gICAgICAvLyBPdGhlcndpc2UgaWYgdGhlcmUgYXJlIHRocmVlIGFyZ3MgYW5kIGlmIHRoZSBgbWVzc2FnZWAgY29udGFpbnNcbiAgICAgIC8vIGEgcGxhY2Vob2xkZXIgdG9rZW4gKGUuZy4gJyVzJyBvciAnJWQnIC0gc2VlIGFib3ZlIGBmb3JtYXRTcGVjaWZpZXJzYCB2YXJpYWJsZSlcbiAgICAgIC8vIHRoZW4gd2UgY2FuIGluZmVyIHRoYXQgdGhlIGBtZXRhYCBhcmcgcGFzc2VkIGlzIHVzZWQgZm9yIGZvcm1hdHRpbmdcbiAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSwgbWV0YSk7XG4gICAgICBtZXRhID0ge307XG4gICAgfSBlbHNlIGlmICghaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgaWYgKGlzRXJyb3IobWV0YSkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWV0YSk7XG4gICAgICAgIG1ldGEgPSB7fTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzT2JqZWN0KG1ldGEpICYmICFpc1VuZGVmaW5lZChtZXRhKSAmJiAhaXNOdWxsKG1ldGEpKSB7XG4gICAgICAgIC8vIElmIHRoZSBgbWV0YWAgdmFyaWFibGUgcGFzc2VkIHdhcyBub3QgYW4gT2JqZWN0IHRoZW4gY29udmVydCBpdFxuICAgICAgICBtZXNzYWdlID0gZm9ybWF0KG1lc3NhZ2UsIG1ldGEpO1xuICAgICAgICBtZXRhID0ge307XG4gICAgICB9IGVsc2UgaWYgKCFpc1N0cmluZyhtZXNzYWdlKSkge1xuICAgICAgICAvLyBJZiB0aGUgbWVzc2FnZSBpcyBub3QgYSBzdHJpbmcgdGhlbiB3ZSBzaG91bGQgcnVuIGB1dGlsLmZvcm1hdGAgb24gaXRcbiAgICAgICAgLy8gYXNzdW1pbmcgd2UncmUgZm9ybWF0dGluZyBpdCBsaWtlIGl0IHdhcyBhbm90aGVyIGFyZ3VtZW50XG4gICAgICAgIC8vIChhcyBvcHBvc2VkIHRvIHVzaW5nIHNvbWV0aGluZyBsaWtlIGZhc3QtanNvbi1zdHJpbmdpZnkpXG4gICAgICAgIG1lc3NhZ2UgPSBmb3JtYXQobWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0Vycm9yKG1ldGEpKSB7XG4gICAgICBlcnJvcnMucHVzaChtZXRhKTtcbiAgICAgIC8vIGhhbmRsZSBhZGRpdGlvbmFsIGFyZ3NcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gW107XG4gICAgICBpZiAoaXNFcnJvcihtZXNzYWdlKSkge1xuICAgICAgICBlcnJvcnMudW5zaGlmdChtZXNzYWdlKTtcbiAgICAgICAgbWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBhcmcgb2Ygb3JpZ2luYWxBcmdzLnNsaWNlKDIgKyBtb2RpZmllcikpIHtcbiAgICAgICAgLy8gc2hvdWxkIHNraXAgdGhpcyBiZXR0ZXIgd2l0aCBzbGljZSBhbmQgbW9kaWZpZXIgYWRqdXN0bWVudFxuICAgICAgICBpZiAobWV0YSA9PT0gYXJnKSBjb250aW51ZTtcbiAgICAgICAgaWYgKGlzRXJyb3IoYXJnKSkgZXJyb3JzLnB1c2goYXJnKTtcbiAgICAgICAgZWxzZSBtZXNzYWdlcy5wdXNoKGFyZyk7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBtZXNzYWdlID0gZm9ybWF0KC4uLm1lc3NhZ2VzKTtcbiAgICAgICAgICBoYXNNZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobGV2ZWwgPT09ICdsb2cnKSBsZXZlbCA9ICdlcnJvcic7XG5cbiAgICAgIG1ldGEgPSB7fTtcbiAgICB9XG5cbiAgICBpZiAoIWlzVW5kZWZpbmVkKG1ldGEpICYmICFpc09iamVjdChtZXRhKSkgbWV0YSA9IHsgb3JpZ2luYWxfbWV0YTogbWV0YSB9O1xuICAgIGVsc2UgaWYgKCFpc09iamVjdChtZXRhKSkgbWV0YSA9IHt9O1xuXG4gICAgaWYgKGlzRXJyb3IobWVzc2FnZSkpIHtcbiAgICAgIGVycm9ycy51bnNoaWZ0KG1lc3NhZ2UpO1xuICAgICAgbWVzc2FnZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvL1xuICAgIC8vIHJld3JpdGUgYG1ldGEuZXJyYCB0byBgbWV0YS5vcmlnaW5hbF9lcnJgIGZvciBjb25zaXN0ZW5jeVxuICAgIC8vIChpbiBjYXNlIHNvbWVvbmUgaGFzIGFuIG9iamVjdCB3aXRoIGAuZXJyYCBwcm9wZXJ0eSBvbiBpdCB3aXRoIGFuIGVycm9yKVxuICAgIC8vXG4gICAgaWYgKGlzT2JqZWN0KG1ldGEuZXJyKSkge1xuICAgICAgaWYgKGlzRXJyb3IobWV0YS5lcnIpKSBlcnJvcnMucHVzaChtZXRhLmVycik7XG4gICAgICBtZXRhLm9yaWdpbmFsX2VyciA9IGlzRXJyb3IobWV0YS5lcnIpID8gcGFyc2VFcnIobWV0YS5lcnIpIDogbWV0YS5lcnI7XG4gICAgfVxuXG4gICAgbGV0IGVycjtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGVyciA9IGVycm9yc1swXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICAgICBbLi4ubmV3IFNldChlcnJvcnMubWFwKChlKSA9PiBlLm1lc3NhZ2UpLmZpbHRlcihCb29sZWFuKSldLmpvaW4oJzsgJylcbiAgICAgICAgKTtcbiAgICAgICAgZXJyLnN0YWNrID0gW1xuICAgICAgICAgIC4uLm5ldyBTZXQoZXJyb3JzLm1hcCgoZSkgPT4gZS5zdGFjaykuZmlsdGVyKEJvb2xlYW4pKVxuICAgICAgICBdLmpvaW4oJ1xcblxcbicpO1xuICAgICAgICBlcnIuZXJyb3JzID0gZXJyb3JzO1xuICAgICAgfVxuXG4gICAgICBtZXRhLmVyciA9IHBhcnNlRXJyKGVycik7XG4gICAgICBpZiAoIWlzU3RyaW5nKG1lc3NhZ2UpKSBtZXNzYWdlID0gZXJyLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBOT1RFOiB0aGlzIHdhcyByZW1vdmVkIGluIHYxMC4yLjIgZHVlIHRvIGNpcmN1bGFyIHJlZmVyZW5jZSBpc3N1ZXNcbiAgICAvLyAgICAgICAodGhlIHdvcmthcm91bmQgd291bGQgaW52b2x2ZSBzYWZlU3RyaW5naWZ5IGFuZCB0aGVuIEpTT04ucGFyc2Ugd2hpY2ggd291bGQgYmUgcGVyZiBibG9hdClcbiAgICAvLyAgICAgICAodGhlcmUgc3RpbGwgbWlnaHQgYmUgYW5vdGhlciB3b3JrYXJvdW5kIG9yIHBlcmhhcHMgd2UgZG9uJ3QgYWRkIGFsbCB0aGUgYXJncyBoZXJlIGV4Y2VwdCBhZGRpdGlvbmFsKVxuICAgIC8vXG4gICAgLy8gU2V0IGBhcmdzYCBwcm9wIHdpdGggb3JpZ2luYWwgYXJndW1lbnRzIHBhc3NlZFxuICAgIC8vIG1ldGEuYXJncyA9IG9yaWdpbmFsQXJncztcblxuICAgIC8vIFNldCBkZWZhdWx0IGxldmVsIG9uIG1ldGFcbiAgICBtZXRhLmxldmVsID0gbGV2ZWw7XG5cbiAgICAvLyBBZGQgYGFwcGAgb2JqZWN0IHRvIG1ldGFkYXRhXG4gICAgaWYgKHRoaXMuYXBwSW5mbykgbWV0YS5hcHAgPSB0aGlzLmFwcEluZm87XG5cbiAgICAvL1xuICAgIC8vIGRldGVybWluZSBsb2cgbWV0aG9kIHRvIHVzZVxuICAgIC8vXG4gICAgLy8gaWYgd2UgZGlkbid0IHBhc3MgYSBsZXZlbCBhcyBhIG1ldGhvZFxuICAgIC8vIChlLmcuIGNvbnNvbGUuaW5mbyksIHRoZW4gd2Ugc2hvdWxkIHN0aWxsXG4gICAgLy8gdXNlIHRoZSBsb2dnZXIncyBgbG9nYCBtZXRob2QgdG8gb3V0cHV0XG4gICAgLy9cbiAgICAvLyBhbmQgZmF0YWwgc2hvdWxkIHVzZSBlcnJvciAoZS5nLiBpbiBicm93c2VyKVxuICAgIC8vXG4gICAgY29uc3QgbWV0aG9kID0gbW9kaWZpZXIgPT09IC0xID8gJ2xvZycgOiBsZXZlbDtcblxuICAgIC8vIHByZS1ob29rc1xuICAgIGZvciAoY29uc3QgaG9vayBvZiB0aGlzLmNvbmZpZy5ob29rcy5wcmUpIHtcbiAgICAgIFtlcnIsIG1lc3NhZ2UsIG1ldGFdID0gaG9vayhtZXRob2QsIGVyciwgbWVzc2FnZSwgbWV0YSk7XG4gICAgfVxuXG4gICAgLy9cbiAgICAvLyBOT1RFOiB1c2luZyBsb2Rhc2ggXy5vbWl0IGFuZCBfLnBpY2sgd291bGQgaGF2ZSBiZWVuIF92ZXJ5IHNsb3dfXG4gICAgLy9cbiAgICAvLyBjb25zdCBvbWl0dGVkQW5kUGlja2VkRmllbGRzID0ge1xuICAgIC8vICAgLi4uXy5vbWl0KG1ldGEsIHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcyksXG4gICAgLy8gICAuLi5fLnBpY2sobWV0YSwgdGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpXG4gICAgLy8gfTtcbiAgICAvL1xuICAgIC8vIGFsc28gd2UgZG9uJ3Qgd2FudCB0byBtdXRhdGUgYW55dGhpbmcgaW4gYG1ldGFgXG4gICAgLy8gYW5kIGlkZWFsbHkgd2Ugb25seSB3YW50IHRvIHBpY2sgZXhhY3RseSB3aGF0IHdlIG5lZWRcbiAgICAvLyAoYW5kIG5vdCBoYXZlIHR3byBvcGVyYXRpb25zLCBvbmUgZm9yIG9taXQsIGFuZCBvbmUgZm9yIHBpY2spXG4gICAgLy9cblxuICAgIC8vIHNldCBhIGJvb2xlYW4gZmxhZyBpZiB3ZSBoYWQgdGhlIHNpbGVudCBzeW1ib2wgb3Igbm90XG4gICAgY29uc3QgaGFkVHJ1ZVNpbGVudFN5bWJvbCA9IGJvb2xlYW4obWV0YVtzaWxlbnRTeW1ib2xdKTtcblxuICAgIGlmICghaXNFbXB0eSh0aGlzLmNvbmZpZy5tZXRhLnJlbWFwcGVkRmllbGRzKSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgUmVmbGVjdC5vd25LZXlzKHRoaXMuY29uZmlnLm1ldGEucmVtYXBwZWRGaWVsZHMpKSB7XG4gICAgICAgIHNldChtZXRhLCB0aGlzLmNvbmZpZy5tZXRhLnJlbWFwcGVkRmllbGRzW2tleV0sIGdldChtZXRhLCBrZXkpKTtcbiAgICAgICAgdW5zZXQobWV0YSwga2V5KTtcbiAgICAgICAgLy8gY2xlYW51cCBlbXB0eSBvYmplY3RzIGFmdGVyIHJlbWFwcGluZ1xuICAgICAgICBpZiAodGhpcy5jb25maWcubWV0YS5jbGVhbnVwUmVtYXBwaW5nKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXggPSBrZXkubGFzdEluZGV4T2YoJy4nKTtcbiAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBwYXJlbnRLZXkgPSBrZXkuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgICAgIGlmIChpc0VtcHR5KGdldChtZXRhLCBwYXJlbnRLZXkpKSkgdW5zZXQobWV0YSwgcGFyZW50S2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykgfHxcbiAgICAgICFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEucGlja2VkRmllbGRzKVxuICAgICkge1xuICAgICAgY29uc3QgZG90aWZpZWQgPSBkb3RpZnlUb0FycmF5KG1ldGEpO1xuICAgICAgLy8gZG90aWZpZWQgPSBbXG4gICAgICAvLyAgICdlcnIubmFtZScsXG4gICAgICAvLyAgICdlcnIubWVzc2FnZScsXG4gICAgICAvLyAgICdlcnIuc3RhY2snLFxuICAgICAgLy8gICAnbGV2ZWwnLFxuICAgICAgLy8gICAnYXBwLm5hbWUnLFxuICAgICAgLy8gICAnYXBwLnZlcnNpb24nLFxuICAgICAgLy8gICAnYXBwLm5vZGUnLFxuICAgICAgLy8gICAnYXBwLmhhc2gnLFxuICAgICAgLy8gICAvLyAuLi5cbiAgICAgIC8vIF1cblxuICAgICAgaWYgKCFpc0VtcHR5KHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykpIHtcbiAgICAgICAgZm9yIChjb25zdCBwcm9wIG9mIHRoaXMuY29uZmlnLm1ldGEub21pdHRlZEZpZWxkcykge1xuICAgICAgICAgIC8vIDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTg4MjM0OT5cbiAgICAgICAgICBsZXQgaSA9IGRvdGlmaWVkLmxlbmd0aDtcbiAgICAgICAgICB3aGlsZSAoaS0tKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGRvdGlmaWVkW2ldID09PSBwcm9wIHx8XG4gICAgICAgICAgICAgICghaXNTeW1ib2woZG90aWZpZWRbaV0pICYmIGRvdGlmaWVkW2ldLmluZGV4T2YoYCR7cHJvcH0uYCkgPT09IDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcGlja2VkU3ltYm9scyA9IFtdO1xuXG4gICAgICBpZiAoIWlzRW1wdHkodGhpcy5jb25maWcubWV0YS5waWNrZWRGaWVsZHMpKSB7XG4gICAgICAgIGZvciAoY29uc3QgcHJvcCBvZiB0aGlzLmNvbmZpZy5tZXRhLnBpY2tlZEZpZWxkcykge1xuICAgICAgICAgIC8vIHJlc3BvbnNlLmhlYWRlcnMuYm9vcFxuICAgICAgICAgIC8vIHJlc3BvbnNlLmhlYWRlcnMuYmVlcFxuICAgICAgICAgIC8vIHJlc3BvbnNlLmJvZHlcbiAgICAgICAgICAvLyByZXNwb25zZS50ZXh0XG4gICAgICAgICAgLy8gcmVzcG9uc2VcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gc3BsaXQgYnkgdGhlIGZpcnN0IHBlcmlvZCBhbmQgb21pdCBhbnkga2V5cyBmcm9tIGRvdGlmaWVkIHN0YXJ0aW5nIHdpdGggaXRcbiAgICAgICAgICBpZiAoaXNTeW1ib2wocHJvcCkpIHtcbiAgICAgICAgICAgIGlmIChtZXRhW3Byb3BdKSBwaWNrZWRTeW1ib2xzLnB1c2goW3Byb3AsIG1ldGFbcHJvcF1dKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgaW5kZXggPSBwcm9wLmluZGV4T2YoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHByb3Auc2xpY2UoMCwgaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgbGV0IGkgPSBkb3RpZmllZC5sZW5ndGg7XG4gICAgICAgICAgICAgIHdoaWxlIChpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAoZG90aWZpZWRbaV0gPT09IGtleS5zbGljZSgwLCAtMSkpIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChkb3RpZmllZFtpXS5pbmRleE9mKGtleSkgPT09IDApIGRvdGlmaWVkLnNwbGljZShpLCAxKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIGZpbmFsbHkgYWRkIGl0IGlmIGl0IGRpZCBub3QgYWxyZWFkeSBleGlzdFxuICAgICAgICAgIGlmIChkb3RpZmllZC5pbmRleE9mKHByb3ApID09PSAtMSkgZG90aWZpZWQucHVzaChwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL1xuICAgICAgLy8gaXRlcmF0ZSBvdmVyIGFsbCBkb3RpZmllZCB2YWx1ZXMgdG8gY2hlY2sgZm9yIHN5bWJvbHNcbiAgICAgIC8vXG4gICAgICAvLyBOT1RFOiB0aGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhleSBjb3VsZCBhbHJlYWR5IGJlIGluIGBwaWNrZWRTeW1ib2xzYFxuICAgICAgLy8gICAgICAgKGFuZCBpdCBkb2Vzbid0IGFsc28gZG8gYmlnaW50cyB5ZXQpXG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBwcm9wIG9mIGRvdGlmaWVkKSB7XG4gICAgICAgIGlmIChpc1N5bWJvbChwcm9wKSkge1xuICAgICAgICAgIGlmIChtZXRhW3Byb3BdICE9PSB1bmRlZmluZWQpIHBpY2tlZFN5bWJvbHMucHVzaChbcHJvcCwgbWV0YVtwcm9wXV0pO1xuICAgICAgICB9IGVsc2UgaWYgKG1ldGFbU3ltYm9sLmZvcihwcm9wKV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBpY2tlZFN5bWJvbHMucHVzaChbU3ltYm9sLmZvcihwcm9wKSwgbWV0YVtTeW1ib2wuZm9yKHByb3ApXV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vXG4gICAgICAvLyBub3cgd2UgY2FsbCBwaWNrLWRlZXAgdXNpbmcgdGhlIGZpbmFsIGFycmF5XG4gICAgICAvL1xuICAgICAgLy8gTk9URTogdGhpcyBkb2VzIG5vdCBwaWNrIHN5bWJvbHMsIGJpZ2ludHMsIG5vciBzdHJlYW1zXG4gICAgICAvLyAgICAgICA8aHR0cHM6Ly9naXRodWIuY29tL3N0cmlrZWVudGNvL3BpY2stZGVlcC9pc3N1ZXMvMj5cbiAgICAgIC8vICAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vc3RyaWtlZW50Y28vcGljay1kZWVwL2lzc3Vlcy8yPlxuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHRoaXMgaXMgd3JhcHBlZCBpbiB0cnkvY2F0Y2ggaW4gY2FzZSBzaW1pbGFyIGVycm9ycyBvY2N1clxuICAgICAgLy8gICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9zdHJpcGUvc3RyaXBlLW5vZGUvaXNzdWVzLzE3OTY+XG4gICAgICAvL1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWV0YSA9IHBpY2tEZWVwKG1ldGEsIGRvdGlmaWVkKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmNvbmZpZy5sb2dnZXIuZXJyb3IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgLy9cbiAgICAgIC8vIGlmIHRoZXJlIHdlcmUgYW55IHRvcC1sZXZlbCBzeW1ib2xzIHRvIGJlXG4gICAgICAvLyBwaWNrZWQgdGhlbiB3ZSBuZWVkIHRvIGFkZCB0aGVtIGJhY2sgaGVyZSB0byB0aGUgbGlzdFxuICAgICAgLy9cbiAgICAgIC8vIE5PVEU6IHdlJ2QgcHJvYmFibHkgd2FudCB0byBkbyB0aGUgc2FtZSBmb3IgYmlnaW50cyBhcyBzeW1ib2xzXG4gICAgICAvL1xuICAgICAgaWYgKHBpY2tlZFN5bWJvbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBwaWNrZWRTeW1ib2xzKSB7XG4gICAgICAgICAgbWV0YVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBvbmx5IGludm9rZSBsb2dnZXIgbWV0aG9kcyBpZiBpdCB3YXMgbm90IHNpbGVudFxuICAgIGlmICghdGhpcy5jb25maWcuc2lsZW50ICYmICFoYWRUcnVlU2lsZW50U3ltYm9sKSB7XG4gICAgICAvLyBTaG93IHN0YWNrIHRyYWNlIGlmIG5lY2Vzc2FyeSAoYWxvbmcgd2l0aCBhbnkgbWV0YWRhdGEpXG4gICAgICBpZiAoaXNFcnJvcihlcnIpICYmIHRoaXMuY29uZmlnLnNob3dTdGFjaykge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLm1ldGEuc2hvdyB8fCBpc0VtcHR5KG1ldGEpKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oLi4uKGhhc01lc3NhZ2UgPyBbbWVzc2FnZSwgZXJyXSA6IFtlcnJdKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YSAmJlxuICAgICAgICAgIG1ldGFbdGhpcy5jb25maWcubWV0YS5oaWRlTWV0YV1cbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oLi4uKGhhc01lc3NhZ2UgPyBbbWVzc2FnZSwgZXJyXSA6IFtlcnJdKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0oXG4gICAgICAgICAgICAuLi4oaGFzTWVzc2FnZSA/IFttZXNzYWdlLCBlcnIsIG1ldGFdIDogW2VyciwgbWV0YV0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghdGhpcy5jb25maWcubWV0YS5zaG93IHx8IGlzRW1wdHkobWV0YSkpIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAodGhpcy5jb25maWcubWV0YS5oaWRlTWV0YSAmJiBtZXRhW3RoaXMuY29uZmlnLm1ldGEuaGlkZU1ldGFdKSB8fFxuICAgICAgICAodGhpcy5jb25maWcubWV0YS5oaWRlSFRUUCAmJiBtZXRhW3RoaXMuY29uZmlnLm1ldGEuaGlkZUhUVFBdKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlclttZXRob2RdKG1lc3NhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb25maWcubG9nZ2VyW21ldGhvZF0obWVzc2FnZSwgbWV0YSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcG9zdC1ob29rc1xuICAgIGlmICh0aGlzLmNvbmZpZy5ob29rcy5wb3N0Lmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB7IG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhIH07XG4gICAgcmV0dXJuIHBNYXBTZXJpZXModGhpcy5jb25maWcuaG9va3MucG9zdCwgKGhvb2spID0+XG4gICAgICBob29rKG1ldGhvZCwgZXJyLCBtZXNzYWdlLCBtZXRhKVxuICAgIClcbiAgICAgIC50aGVuKClcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnLmxvZ2dlci5lcnJvcihlcnIpO1xuICAgICAgfSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBeGU7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQUEsT0FBTyxDQUFDLGtCQUFrQixDQUFDOztBQUUzQjtBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQztBQUM1QyxNQUFNRyxnQkFBZ0IsR0FBR0gsT0FBTyxDQUFDLG1CQUFtQixDQUFDO0FBQ3JELE1BQU1JLEdBQUcsR0FBR0osT0FBTyxDQUFDLGtCQUFrQixDQUFDO0FBQ3ZDLE1BQU1LLE9BQU8sR0FBR0wsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNsQyxNQUFNTSxRQUFRLEdBQUdOLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDckMsTUFBTU8sWUFBWSxHQUFHUCxPQUFPLENBQUMsZUFBZSxDQUFDO0FBQzdDLE1BQU1RLFVBQVUsR0FBR1IsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUMxQyxNQUFNUyxZQUFZLEdBQUdULE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztBQUM5QyxNQUFNVSxR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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "axe",
|
|
3
3
|
"description": "Axe is a logger-agnostic wrapper that normalizes logs regardless of argument style. Great for large development teams, old and new projects, and works with Pino, Bunyan, Winston, console, and more. It is lightweight, performant, highly-configurable, and automatically adds OS, CPU, and Git information to your logs. It supports hooks (useful for masking sensitive data) and dot-notation remapping, omitting, and picking of log metadata properties. Made for Forward Email, Lad, and Cabin.",
|
|
4
|
-
"version": "12.2.
|
|
4
|
+
"version": "12.2.8",
|
|
5
5
|
"author": "Nick Baugh <niftylettuce@gmail.com> (http://niftylettuce.com)",
|
|
6
6
|
"browser": {
|
|
7
7
|
"parse-app-info": false
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"unset-value": "2.0.1"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@babel/cli": "^7.24.
|
|
36
|
-
"@babel/core": "^7.24.
|
|
37
|
-
"@babel/preset-env": "^7.24.
|
|
35
|
+
"@babel/cli": "^7.24.7",
|
|
36
|
+
"@babel/core": "^7.24.7",
|
|
37
|
+
"@babel/preset-env": "^7.24.7",
|
|
38
38
|
"@commitlint/cli": "^19.3.0",
|
|
39
39
|
"@commitlint/config-conventional": "^19.2.2",
|
|
40
40
|
"ava": "5.3.1",
|
|
@@ -49,19 +49,19 @@
|
|
|
49
49
|
"express": "^4.19.2",
|
|
50
50
|
"fixpack": "^4.0.0",
|
|
51
51
|
"husky": "^9.0.11",
|
|
52
|
-
"jsdom": "15
|
|
52
|
+
"jsdom": "15",
|
|
53
53
|
"koa": "^2.15.3",
|
|
54
|
-
"lint-staged": "^15.2.
|
|
54
|
+
"lint-staged": "^15.2.7",
|
|
55
55
|
"lodash": "^4.17.21",
|
|
56
|
-
"nyc": "^
|
|
57
|
-
"pino": "^9.
|
|
56
|
+
"nyc": "^17.0.0",
|
|
57
|
+
"pino": "^9.2.0",
|
|
58
58
|
"remark-cli": "11.0.0",
|
|
59
59
|
"remark-preset-github": "^4.0.4",
|
|
60
60
|
"rimraf": "^5.0.5",
|
|
61
61
|
"signale": "^1.4.0",
|
|
62
|
-
"sinon": "^
|
|
62
|
+
"sinon": "^18.0.0",
|
|
63
63
|
"tinyify": "3.0.0",
|
|
64
|
-
"tsd": "^0.31.
|
|
64
|
+
"tsd": "^0.31.1",
|
|
65
65
|
"xo": "0.56.0"
|
|
66
66
|
},
|
|
67
67
|
"engines": {
|
package/src/index.js
CHANGED
|
@@ -49,6 +49,11 @@ function isPlainObject(value) {
|
|
|
49
49
|
function dotifyToArray(obj) {
|
|
50
50
|
const res = [];
|
|
51
51
|
function recurse(obj, current) {
|
|
52
|
+
// if it's a buffer, uint8array, or array
|
|
53
|
+
// eslint-disable-next-line n/prefer-global/buffer
|
|
54
|
+
if (Buffer.isBuffer(obj) || obj instanceof Uint8Array || Array.isArray(obj))
|
|
55
|
+
return;
|
|
56
|
+
|
|
52
57
|
for (const key of Reflect.ownKeys(obj)) {
|
|
53
58
|
const value = obj[key];
|
|
54
59
|
const convertedKey = isSymbol(key)
|