Socket
Socket
Sign inDemoInstall

optimal-select

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

optimal-select - npm Package Compare versions

Comparing version 3.4.1 to 3.4.2

lib/utilities.js

6

CHANGELOG.md

@@ -0,1 +1,7 @@

# [v3.4.2]
> November 7, 2016
- improve browser compatibility
## [v3.4.1]

@@ -2,0 +8,0 @@ > November 5, 2016

81

dist/optimal-select.js

@@ -85,3 +85,3 @@ (function webpackUniversalModuleDefinition(root, factory) {

var _common2 = __webpack_require__(5);
var _common2 = __webpack_require__(6);

@@ -132,8 +132,8 @@ var _common = _interopRequireWildcard(_common2);

var _common = __webpack_require__(5);
var _utilities = __webpack_require__(5);
var _common = __webpack_require__(6);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**

@@ -203,3 +203,3 @@ * Choose action depending on the input (single/multi)

if (!Array.isArray(elements)) {
elements = [].concat(_toConsumableArray(elements));
elements = (0, _utilities.convertNodeList)(elements);
}

@@ -223,3 +223,3 @@

var selector = (0, _optimize2.default)(ancestorSelector + ' ' + descendantSelector, elements, options);
var selectorMatches = [].concat(_toConsumableArray(document.querySelectorAll(selector)));
var selectorMatches = (0, _utilities.convertNodeList)(document.querySelectorAll(selector));

@@ -300,7 +300,4 @@ if (!elements.every(function (element) {

exports.default = adapt;
function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }
/**
* # Universal
* # Adapt
*

@@ -426,16 +423,10 @@ * Check and extend the environment for universal usage

// using right to left execution => https://github.com/fb55/css-select#how-does-it-work
var instructions = getInstructions(selectors);
var discover = instructions.shift();
var _getInstructions = getInstructions(selectors);
var _getInstructions2 = _toArray(_getInstructions);
var discover = _getInstructions2[0];
var ascendings = _getInstructions2.slice(1);
var total = ascendings.length;
var total = instructions.length;
return discover(this).filter(function (node) {
var step = 0;
while (step < total) {
node = ascendings[step](node, _this);
node = instructions[step](node, _this);
if (!node) {

@@ -1112,11 +1103,6 @@ // hierarchy doesn't match

var _utilities = __webpack_require__(5);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
/**

@@ -1130,2 +1116,9 @@ * Apply different optimization techniques

*/
/**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
function optimize(selector, elements) {

@@ -1137,3 +1130,3 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

if (!Array.isArray(elements)) {
elements = !elements.length ? [elements] : [].concat(_toConsumableArray(elements));
elements = !elements.length ? [elements] : (0, _utilities.convertNodeList)(elements);
}

@@ -1334,2 +1327,34 @@

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.convertNodeList = convertNodeList;
/**
* # Utilities
*
* Convenience helpers
*/
/**
* Create an array with the DOM nodes of the list
*
* @param {NodeList} nodes - [description]
* @return {Array.<HTMLElement>} - [description]
*/
function convertNodeList(nodes) {
var length = nodes.length;
var arr = new Array(length);
for (var i = 0; i < length; i++) {
arr[i] = nodes[i];
}
return arr;
}
/***/ },
/* 6 */
/***/ function(module, exports) {
'use strict';

@@ -1336,0 +1361,0 @@

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OptimalSelect=t():e.OptimalSelect=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var u=r[n]={exports:{},id:n,loaded:!1};return e[n].call(u.exports,u,u.exports,t),u.loaded=!0,u.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.common=t.optimize=t.getMultiSelector=t.getSingleSelector=t.select=void 0;var o=r(5);Object.defineProperty(t,"getSingleSelector",{enumerable:!0,get:function(){return o.getSingleSelector}}),Object.defineProperty(t,"getMultiSelector",{enumerable:!0,get:function(){return o.getMultiSelector}});var i=u(o),a=r(3),c=u(a),f=r(2),l=n(f);t.select=i.default,t.optimize=c.default,t.common=l,t.default=i.default},function(e,t){(function(r){"use strict";function n(e){return Array.isArray(e)?e:Array.from(e)}function u(e,t){if(r.document)return!1;var u=t.context;r.document=u||function(){for(var t=e;t.parent;)t=t.parent;return t}();var a=Object.getPrototypeOf(r.document);return Object.getOwnPropertyDescriptor(a,"childTags")||Object.defineProperty(a,"childTags",{enumerable:!0,get:function(){return this.children.filter(function(e){return"tag"===e.type||"script"===e.type||"style"===e.type})}}),Object.getOwnPropertyDescriptor(a,"attributes")||Object.defineProperty(a,"attributes",{enumerable:!0,get:function(){var e=this.attribs,t=Object.keys(e),r=t.reduce(function(t,r,n){return t[n]={name:r,value:e[r]},t},{});return Object.defineProperty(r,"length",{enumerable:!1,configurable:!1,value:t.length}),r}}),a.getAttribute||(a.getAttribute=function(e){return this.attribs[e]||null}),a.getElementsByTagName||(a.getElementsByTagName=function(e){var t=[];return i(this.childTags,function(r){r.name!==e&&"*"!==e||t.push(r)}),t}),a.getElementsByClassName||(a.getElementsByClassName=function(e){var t=e.trim().replace(/\s+/g," ").split(" "),r=[];return i([this],function(e){var n=e.attribs.class;n&&t.every(function(e){return n.indexOf(e)>-1})&&r.push(e)}),r}),a.querySelectorAll||(a.querySelectorAll=function(e){var t=this;e=e.replace(/(>)(\S)/g,"$1 $2").trim();var r=o(e),u=n(r),i=u[0],a=u.slice(1),c=a.length;return i(this).filter(function(e){for(var r=0;r<c;){if(e=a[r](e,t),!e)return!1;r+=1}return!0})}),a.contains||(a.contains=function(e){var t=!1;return i([this],function(r,n){r===e&&(t=!0,n())}),t}),!0}function o(e){return e.split(" ").reverse().map(function(e,t){var r=0===t,n=e.split(":"),u=f(n,2),o=u[0],l=u[1],s=null,d=null;if(function(){switch(!0){case/>/.test(o):d=function(e){return function(t){return t(e.parent)&&e.parent}};break;case/^\./.test(o):var e=o.substr(1).split(".");s=function(t){var r=t.attribs.class;return r&&e.every(function(e){return r.indexOf(e)>-1})},d=function(t,n){return r?t.getElementsByClassName(e.join(" ")):"function"==typeof t?t(s):a(t,n,s)};break;case/^\[/.test(o):var t=o.replace(/\[|\]|"/g,"").split("="),n=f(t,2),u=n[0],l=n[1];s=function(e){var t=Object.keys(e.attribs).indexOf(u)>-1;return!(!t||l&&e.attribs[u]!==l)},d=function(e,t){if(r){var n=function(){var t=[];return i([e],function(e){s(e)&&t.push(e)}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":c(n)))return n.v}return"function"==typeof e?e(s):a(e,t,s)};break;case/^#/.test(o):var p=o.substr(1);s=function(e){return e.attribs.id===p},d=function(e,t){if(r){var n=function(){var t=[];return i([e],function(e,r){s(e)&&(t.push(e),r())}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":c(n)))return n.v}return"function"==typeof e?e(s):a(e,t,s)};break;case/\*/.test(o):s=function(e){return!0},d=function(e,t){if(r){var n=function(){var t=[];return i([e],function(e){return t.push(e)}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":c(n)))return n.v}return"function"==typeof e?e(s):a(e,t,s)};break;default:s=function(e){return e.name===o},d=function(e,t){if(r){var n=function(){var t=[];return i([e],function(e){s(e)&&t.push(e)}),{v:t}}();if("object"===("undefined"==typeof n?"undefined":c(n)))return n.v}return"function"==typeof e?e(s):a(e,t,s)}}}(),!l)return d;var p=l.match(/-(child|type)\((\d+)\)$/),v=p[1],y=parseInt(p[2],10)-1,g=function(e){if(e){var t=e.parent.childTags;"type"===v&&(t=t.filter(s));var r=t.findIndex(function(t){return t===e});if(r===y)return!0}return!1};return function(e){var t=d(e);return r?t.reduce(function(e,t){return g(t)&&e.push(t),e},[]):g(t)&&t}})}function i(e,t){e.forEach(function(e){var r=!0;t(e,function(){return r=!1}),e.childTags&&r&&i(e.childTags,t)})}function a(e,t,r){for(;e.parent;){if(e=e.parent,r(e))return e;if(e===t)break}return null}Object.defineProperty(t,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},f=function(){function e(e,t){var r=[],n=!0,u=!1,o=void 0;try{for(var i,a=e[Symbol.iterator]();!(n=(i=a.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(c){u=!0,o=c}finally{try{!n&&a.return&&a.return()}finally{if(u)throw o}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=u,e.exports=t.default}).call(t,function(){return this}())},function(e,t){"use strict";function r(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.root,n=void 0===r?document:r,u=(t.skip,t.ignore,[]);e.forEach(function(e,t){for(var r=[];e!==n;)e=e.parentNode,r.unshift(e);u[t]=r}),u.sort(function(e,t){return e.length-t.length});for(var o=u.shift(),i=null,a=function(){var e=o[c],t=u.some(function(t){return!t.some(function(t){return t===e})});return t?"break":void(i=e)},c=0,f=o.length;c<f;c++){var l=a();if("break"===l)break}return i}function n(e){var t={classes:[],attributes:{},tag:null};return e.forEach(function(e){var r=t.classes,n=t.attributes,u=t.tag;if(void 0!==r){var o=e.getAttribute("class");o?(o=o.trim().split(" "),r.length?(r=r.filter(function(e){return o.some(function(t){return t===e})}),r.length?t.classes=r:delete t.classes):t.classes=o):delete t.classes}if(void 0!==n&&!function(){var r=e.attributes,u=Object.keys(r).reduce(function(e,t){var n=r[t],u=n.name;return"class"!==u&&(e[u]=n.value),e},{}),o=Object.keys(u),i=Object.keys(n);o.length?i.length?(n=i.reduce(function(e,t){var r=n[t];return r===u[t]&&(e[t]=r),e},{}),Object.keys(n).length?t.attributes=n:delete t.attributes):t.attributes=u:delete t.attributes}(),void 0!==u){var i=e.tagName.toLowerCase();u?i!==u&&delete t.tag:t.tag=i}}),t}Object.defineProperty(t,"__esModule",{value:!0}),t.getCommonAncestor=r,t.getCommonProperties=n},function(e,t,r){(function(n){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}function o(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}function i(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(Array.isArray(t)||(t=t.length?[].concat(o(t)):[t]),!t.length||t.some(function(e){return 1!==e.nodeType}))throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the selected node(s)! (missing "elements")');var u=(0,l.default)(t[0],r),i=e.replace(/> /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(i.length<3)return a("",e,"",t);for(var c=[i.pop()];i.length>1;){var f=i.pop(),s=i.join(" "),d=c.join(" "),p=s+" "+d,v=document.querySelectorAll(p);v.length!==t.length&&c.unshift(a(s,f,d,t))}return c.unshift(i[0]),i=c,i[0]=a("",i[0],i.slice(1).join(" "),t),i[i.length-1]=a(i.slice(0,-1).join(" "),i[i.length-1],"",t),u&&delete n.document,i.join(" ").replace(/>/g,"> ").trim()}function a(e,t,r,n){if(e.length&&(e+=" "),r.length&&(r=" "+r),/\[*\]/.test(t)){var u=t.replace(/=.*$/,"]"),o=""+e+u+r,i=document.querySelectorAll(o);if(c(i,n))t=u;else for(var a=document.querySelectorAll(""+e+u),f=function(){var u=a[l];if(n.some(function(e){return u.contains(e)})){var f=u.tagName.toLowerCase();return o=""+e+f+r,i=document.querySelectorAll(o),c(i,n)&&(t=f),"break"}},l=0,s=a.length;l<s;l++){var o,i,d=f();if("break"===d)break}}if(/>/.test(t)){var p=t.replace(/>/,""),o=""+e+p+r,i=document.querySelectorAll(o);c(i,n)&&(t=p)}if(/:nth-child/.test(t)){var v=t.replace(/nth-child/g,"nth-of-type"),o=""+e+v+r,i=document.querySelectorAll(o);c(i,n)&&(t=v)}if(/\.\S+\.\S+/.test(t)){for(var y=t.trim().split(".").slice(1).map(function(e){return"."+e}).sort(function(e,t){return e.length-t.length});y.length;){var g=t.replace(y.shift(),"").trim(),o=""+e+g+r;if(!o||">"===g)break;var i=document.querySelectorAll(o);c(i,n)&&(t=g)}if(t&&t.match(/\./g).length>2)for(var m=document.querySelectorAll(""+e+t),h=function(){var u=m[l];if(n.some(function(e){return u.contains(e)})){var a=u.tagName.toLowerCase();return o=""+e+a+r,i=document.querySelectorAll(o),c(i,n)&&(t=a),"break"}},l=0,s=m.length;l<s;l++){var o,i,b=h();if("break"===b)break}}return t}function c(e,t){var r=e.length;return r===t.length&&t.every(function(t){for(var n=0;n<r;n++)if(e[n]===t)return!0;return!1})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=i;var f=r(1),l=u(f);e.exports=t.default}).call(t,function(){return this}())},function(e,t){"use strict";function r(e,t){var r=t.root,p=void 0===r?document:r,v=t.skip,y=void 0===v?null:v,g=t.ignore,m=void 0===g?{}:g,h=[],b=e,j=h.length,A=y&&(Array.isArray(y)?y:[y]).map(function(e){return"function"!=typeof e?function(t){return t===e}:e}),S=function(e){return y&&A.some(function(t){return t(e)})},O=!1;for(Object.keys(m).forEach(function(e){"class"===e&&(O=!0);var t=m[e];"function"!=typeof t&&("number"==typeof t&&(t=t.toString()),"string"==typeof t&&(t=new RegExp(t)),m[e]=t.test.bind(t))}),O&&!function(){var e=m.attribute;m.attribute=function(t,r,n){return m.class(r)||e&&e(t,r,n)}}();b!==p;){if(S(b)!==!0){if(d(b,h,m))break;if(n(b,h,m,p))break;if(i(b,h,m,p))break;if(f(b,h,m,p))break;u(b,h,m),h.length===j&&a(b,h,m),h.length===j&&l(b,h,m),h.length===j&&o(b,h,m),h.length===j&&c(b,h,m),h.length===j&&s(b,h,m)}b=b.parentNode,j=h.length}return b===p&&h.unshift("*"),h.join(" ")}function n(e,t,r,n){return p(e,t,r,n)}function u(e,t,r){return p(e,t,r,e.parentNode)}function o(e,t,r){var n=e.getAttribute("class");return!m(r.class,n)&&g(e,t,"."+n.trim().replace(/\s+/g,"."))}function i(e,t,r,n){return v(e,t,r,n)}function a(e,t,r){return v(e,t,r,e.parentNode)}function c(e,t,r){var n=e.attributes;return Object.keys(n).some(function(u){var o=n[u],i=o.name,a=o.value;if(m(r.attribute,i,a,h.attribute))return!1;var c="["+i+'="'+a+'"]';return g(e,t,c)})}function f(e,t,r,n){return y(e,t,r,n)}function l(e,t,r){return y(e,t,r,e.parentNode)}function s(e,t,r){var n=e.tagName.toLowerCase();return!m(r.tag,n)&&g(e,t,n)}function d(e,t,r){var n=e.getAttribute("id");return!m(r.id,n)&&(t.unshift("#"+n),!0)}function p(e,t,r,n){var u=e.getAttribute("class");if(m(r.class,u))return!1;var o=n.getElementsByClassName(u);return 1===o.length&&(t.unshift("."+u.trim().replace(/\s+/g,".")),!0)}function v(e,t,r,n){var u=e.attributes;return Object.keys(u).some(function(e){var o=u[e],i=o.name,a=o.value;if(m(r.attribute,i,a,h.attribute))return!1;var c="["+i+'="'+a+'"]',f=n.querySelectorAll(c);return 1===f.length?(t.unshift(c),!0):void 0})}function y(e,t,r,n){var u=e.tagName.toLowerCase();if(m(r.tag,u))return!1;var o=n.getElementsByTagName(u);return 1===o.length&&(t.unshift(u),!0)}function g(e,t,r){for(var n=e.parentNode,u=n.childTags||n.children,o=0,i=u.length;o<i;o++)if(u[o]===e)return t.unshift("> "+r+":nth-child("+(o+1)+")"),!0;return!1}function m(e,t,r,n){if(!t)return!0;var u=e||n;return!!u&&u(t,r||t,n)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var h={attribute:function(e){return["style","data-reactid","data-react-checksum"].indexOf(e)>-1}};e.exports=t.default},function(e,t,r){(function(e){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function u(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.length?a(e,t):i(e,t)}function i(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(3===t.nodeType&&(t=t.parentNode),1!==t.nodeType)throw new Error('Invalid input - only HTMLElements or representations of them are supported! (not "'+("undefined"==typeof t?"undefined":f(t))+'")');var n=(0,s.default)(t,r),u=(0,p.default)(t,r),o=(0,y.default)(u,t,r);return n&&delete e.document,o}function a(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(t)||(t=[].concat(u(t))),t.some(function(e){return 1!==e.nodeType}))throw new Error("Invalid input - only an Array of HTMLElements or representations of them is supported!");var n=(0,s.default)(t[0],r),o=(0,g.getCommonAncestor)(t,r),a=i(o,r),f=c(t),l=f[0],d=(0,y.default)(a+" "+l,t,r),p=[].concat(u(document.querySelectorAll(d)));return t.every(function(e){return p.some(function(t){return t===e})})?(n&&delete e.document,d):console.warn("\n The selected elements can't be efficiently mapped.\n Its probably best to use multiple single selectors instead!\n ",t)}function c(e){var t=(0,g.getCommonProperties)(e),r=t.classes,n=t.attributes,u=t.tag,o=[];if(u&&o.push(u),r){var i=r.map(function(e){return"."+e}).join("");o.push(i)}if(n){var a=Object.keys(n).reduce(function(e,t){return e.push("["+t+'="'+n[t]+'"]'),e},[]).join("");o.push(a)}return o.length,[o.join("")]}Object.defineProperty(t,"__esModule",{value:!0});var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};t.default=o,t.getSingleSelector=i,t.getMultiSelector=a;var l=r(1),s=n(l),d=r(4),p=n(d),v=r(3),y=n(v),g=r(2)}).call(t,function(){return this}())}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.OptimalSelect=t():e.OptimalSelect=t()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var u=n[r]={exports:{},id:r,loaded:!1};return e[r].call(u.exports,u,u.exports,t),u.loaded=!0,u.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function u(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.common=t.optimize=t.getMultiSelector=t.getSingleSelector=t.select=void 0;var o=n(6);Object.defineProperty(t,"getSingleSelector",{enumerable:!0,get:function(){return o.getSingleSelector}}),Object.defineProperty(t,"getMultiSelector",{enumerable:!0,get:function(){return o.getMultiSelector}});var i=u(o),a=n(3),c=u(a),f=n(2),l=r(f);t.select=i.default,t.optimize=c.default,t.common=l,t.default=i.default},function(e,t){(function(n){"use strict";function r(e,t){if(n.document)return!1;var r=t.context;n.document=r||function(){for(var t=e;t.parent;)t=t.parent;return t}();var i=Object.getPrototypeOf(n.document);return Object.getOwnPropertyDescriptor(i,"childTags")||Object.defineProperty(i,"childTags",{enumerable:!0,get:function(){return this.children.filter(function(e){return"tag"===e.type||"script"===e.type||"style"===e.type})}}),Object.getOwnPropertyDescriptor(i,"attributes")||Object.defineProperty(i,"attributes",{enumerable:!0,get:function(){var e=this.attribs,t=Object.keys(e),n=t.reduce(function(t,n,r){return t[r]={name:n,value:e[n]},t},{});return Object.defineProperty(n,"length",{enumerable:!1,configurable:!1,value:t.length}),n}}),i.getAttribute||(i.getAttribute=function(e){return this.attribs[e]||null}),i.getElementsByTagName||(i.getElementsByTagName=function(e){var t=[];return o(this.childTags,function(n){n.name!==e&&"*"!==e||t.push(n)}),t}),i.getElementsByClassName||(i.getElementsByClassName=function(e){var t=e.trim().replace(/\s+/g," ").split(" "),n=[];return o([this],function(e){var r=e.attribs.class;r&&t.every(function(e){return r.indexOf(e)>-1})&&n.push(e)}),n}),i.querySelectorAll||(i.querySelectorAll=function(e){var t=this;e=e.replace(/(>)(\S)/g,"$1 $2").trim();var n=u(e),r=n.shift(),o=n.length;return r(this).filter(function(e){for(var r=0;r<o;){if(e=n[r](e,t),!e)return!1;r+=1}return!0})}),i.contains||(i.contains=function(e){var t=!1;return o([this],function(n,r){n===e&&(t=!0,r())}),t}),!0}function u(e){return e.split(" ").reverse().map(function(e,t){var n=0===t,r=e.split(":"),u=c(r,2),f=u[0],l=u[1],s=null,d=null;if(function(){switch(!0){case/>/.test(f):d=function(e){return function(t){return t(e.parent)&&e.parent}};break;case/^\./.test(f):var e=f.substr(1).split(".");s=function(t){var n=t.attribs.class;return n&&e.every(function(e){return n.indexOf(e)>-1})},d=function(t,r){return n?t.getElementsByClassName(e.join(" ")):"function"==typeof t?t(s):i(t,r,s)};break;case/^\[/.test(f):var t=f.replace(/\[|\]|"/g,"").split("="),r=c(t,2),u=r[0],l=r[1];s=function(e){var t=Object.keys(e.attribs).indexOf(u)>-1;return!(!t||l&&e.attribs[u]!==l)},d=function(e,t){if(n){var r=function(){var t=[];return o([e],function(e){s(e)&&t.push(e)}),{v:t}}();if("object"===("undefined"==typeof r?"undefined":a(r)))return r.v}return"function"==typeof e?e(s):i(e,t,s)};break;case/^#/.test(f):var v=f.substr(1);s=function(e){return e.attribs.id===v},d=function(e,t){if(n){var r=function(){var t=[];return o([e],function(e,n){s(e)&&(t.push(e),n())}),{v:t}}();if("object"===("undefined"==typeof r?"undefined":a(r)))return r.v}return"function"==typeof e?e(s):i(e,t,s)};break;case/\*/.test(f):s=function(e){return!0},d=function(e,t){if(n){var r=function(){var t=[];return o([e],function(e){return t.push(e)}),{v:t}}();if("object"===("undefined"==typeof r?"undefined":a(r)))return r.v}return"function"==typeof e?e(s):i(e,t,s)};break;default:s=function(e){return e.name===f},d=function(e,t){if(n){var r=function(){var t=[];return o([e],function(e){s(e)&&t.push(e)}),{v:t}}();if("object"===("undefined"==typeof r?"undefined":a(r)))return r.v}return"function"==typeof e?e(s):i(e,t,s)}}}(),!l)return d;var v=l.match(/-(child|type)\((\d+)\)$/),p=v[1],g=parseInt(v[2],10)-1,y=function(e){if(e){var t=e.parent.childTags;"type"===p&&(t=t.filter(s));var n=t.findIndex(function(t){return t===e});if(n===g)return!0}return!1};return function(e){var t=d(e);return n?t.reduce(function(e,t){return y(t)&&e.push(t),e},[]):y(t)&&t}})}function o(e,t){e.forEach(function(e){var n=!0;t(e,function(){return n=!1}),e.childTags&&n&&o(e.childTags,t)})}function i(e,t,n){for(;e.parent;){if(e=e.parent,n(e))return e;if(e===t)break}return null}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},c=function(){function e(e,t){var n=[],r=!0,u=!1,o=void 0;try{for(var i,a=e[Symbol.iterator]();!(r=(i=a.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(c){u=!0,o=c}finally{try{!r&&a.return&&a.return()}finally{if(u)throw o}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();t.default=r,e.exports=t.default}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.root,r=void 0===n?document:n,u=(t.skip,t.ignore,[]);e.forEach(function(e,t){for(var n=[];e!==r;)e=e.parentNode,n.unshift(e);u[t]=n}),u.sort(function(e,t){return e.length-t.length});for(var o=u.shift(),i=null,a=function(){var e=o[c],t=u.some(function(t){return!t.some(function(t){return t===e})});return t?"break":void(i=e)},c=0,f=o.length;c<f;c++){var l=a();if("break"===l)break}return i}function r(e){var t={classes:[],attributes:{},tag:null};return e.forEach(function(e){var n=t.classes,r=t.attributes,u=t.tag;if(void 0!==n){var o=e.getAttribute("class");o?(o=o.trim().split(" "),n.length?(n=n.filter(function(e){return o.some(function(t){return t===e})}),n.length?t.classes=n:delete t.classes):t.classes=o):delete t.classes}if(void 0!==r&&!function(){var n=e.attributes,u=Object.keys(n).reduce(function(e,t){var r=n[t],u=r.name;return"class"!==u&&(e[u]=r.value),e},{}),o=Object.keys(u),i=Object.keys(r);o.length?i.length?(r=i.reduce(function(e,t){var n=r[t];return n===u[t]&&(e[t]=n),e},{}),Object.keys(r).length?t.attributes=r:delete t.attributes):t.attributes=u:delete t.attributes}(),void 0!==u){var i=e.tagName.toLowerCase();u?i!==u&&delete t.tag:t.tag=i}}),t}Object.defineProperty(t,"__esModule",{value:!0}),t.getCommonAncestor=n,t.getCommonProperties=r},function(e,t,n){(function(r){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(Array.isArray(t)||(t=t.length?(0,l.convertNodeList)(t):[t]),!t.length||t.some(function(e){return 1!==e.nodeType}))throw new Error('Invalid input - to compare HTMLElements its necessary to provide a reference of the selected node(s)! (missing "elements")');var u=(0,f.default)(t[0],n),o=e.replace(/> /g,">").split(/\s+(?=(?:(?:[^"]*"){2})*[^"]*$)/);if(o.length<3)return i("",e,"",t);for(var a=[o.pop()];o.length>1;){var c=o.pop(),s=o.join(" "),d=a.join(" "),v=s+" "+d,p=document.querySelectorAll(v);p.length!==t.length&&a.unshift(i(s,c,d,t))}return a.unshift(o[0]),o=a,o[0]=i("",o[0],o.slice(1).join(" "),t),o[o.length-1]=i(o.slice(0,-1).join(" "),o[o.length-1],"",t),u&&delete r.document,o.join(" ").replace(/>/g,"> ").trim()}function i(e,t,n,r){if(e.length&&(e+=" "),n.length&&(n=" "+n),/\[*\]/.test(t)){var u=t.replace(/=.*$/,"]"),o=""+e+u+n,i=document.querySelectorAll(o);if(a(i,r))t=u;else for(var c=document.querySelectorAll(""+e+u),f=function(){var u=c[l];if(r.some(function(e){return u.contains(e)})){var f=u.tagName.toLowerCase();return o=""+e+f+n,i=document.querySelectorAll(o),a(i,r)&&(t=f),"break"}},l=0,s=c.length;l<s;l++){var o,i,d=f();if("break"===d)break}}if(/>/.test(t)){var v=t.replace(/>/,""),o=""+e+v+n,i=document.querySelectorAll(o);a(i,r)&&(t=v)}if(/:nth-child/.test(t)){var p=t.replace(/nth-child/g,"nth-of-type"),o=""+e+p+n,i=document.querySelectorAll(o);a(i,r)&&(t=p)}if(/\.\S+\.\S+/.test(t)){for(var g=t.trim().split(".").slice(1).map(function(e){return"."+e}).sort(function(e,t){return e.length-t.length});g.length;){var y=t.replace(g.shift(),"").trim(),o=""+e+y+n;if(!o||">"===y)break;var i=document.querySelectorAll(o);a(i,r)&&(t=y)}if(t&&t.match(/\./g).length>2)for(var h=document.querySelectorAll(""+e+t),m=function(){var u=h[l];if(r.some(function(e){return u.contains(e)})){var c=u.tagName.toLowerCase();return o=""+e+c+n,i=document.querySelectorAll(o),a(i,r)&&(t=c),"break"}},l=0,s=h.length;l<s;l++){var o,i,b=m();if("break"===b)break}}return t}function a(e,t){var n=e.length;return n===t.length&&t.every(function(t){for(var r=0;r<n;r++)if(e[r]===t)return!0;return!1})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var c=n(1),f=u(c),l=n(4);e.exports=t.default}).call(t,function(){return this}())},function(e,t){"use strict";function n(e){for(var t=e.length,n=new Array(t),r=0;r<t;r++)n[r]=e[r];return n}Object.defineProperty(t,"__esModule",{value:!0}),t.convertNodeList=n},function(e,t){"use strict";function n(e,t){var n=t.root,v=void 0===n?document:n,p=t.skip,g=void 0===p?null:p,y=t.ignore,h=void 0===y?{}:y,m=[],b=e,j=m.length,S=g&&(Array.isArray(g)?g:[g]).map(function(e){return"function"!=typeof e?function(t){return t===e}:e}),O=function(e){return g&&S.some(function(t){return t(e)})},k=!1;for(Object.keys(h).forEach(function(e){"class"===e&&(k=!0);var t=h[e];"function"!=typeof t&&("number"==typeof t&&(t=t.toString()),"string"==typeof t&&(t=new RegExp(t)),h[e]=t.test.bind(t))}),k&&!function(){var e=h.attribute;h.attribute=function(t,n,r){return h.class(n)||e&&e(t,n,r)}}();b!==v;){if(O(b)!==!0){if(d(b,m,h))break;if(r(b,m,h,v))break;if(i(b,m,h,v))break;if(f(b,m,h,v))break;u(b,m,h),m.length===j&&a(b,m,h),m.length===j&&l(b,m,h),m.length===j&&o(b,m,h),m.length===j&&c(b,m,h),m.length===j&&s(b,m,h)}b=b.parentNode,j=m.length}return b===v&&m.unshift("*"),m.join(" ")}function r(e,t,n,r){return v(e,t,n,r)}function u(e,t,n){return v(e,t,n,e.parentNode)}function o(e,t,n){var r=e.getAttribute("class");return!h(n.class,r)&&y(e,t,"."+r.trim().replace(/\s+/g,"."))}function i(e,t,n,r){return p(e,t,n,r)}function a(e,t,n){return p(e,t,n,e.parentNode)}function c(e,t,n){var r=e.attributes;return Object.keys(r).some(function(u){var o=r[u],i=o.name,a=o.value;if(h(n.attribute,i,a,m.attribute))return!1;var c="["+i+'="'+a+'"]';return y(e,t,c)})}function f(e,t,n,r){return g(e,t,n,r)}function l(e,t,n){return g(e,t,n,e.parentNode)}function s(e,t,n){var r=e.tagName.toLowerCase();return!h(n.tag,r)&&y(e,t,r)}function d(e,t,n){var r=e.getAttribute("id");return!h(n.id,r)&&(t.unshift("#"+r),!0)}function v(e,t,n,r){var u=e.getAttribute("class");if(h(n.class,u))return!1;var o=r.getElementsByClassName(u);return 1===o.length&&(t.unshift("."+u.trim().replace(/\s+/g,".")),!0)}function p(e,t,n,r){var u=e.attributes;return Object.keys(u).some(function(e){var o=u[e],i=o.name,a=o.value;if(h(n.attribute,i,a,m.attribute))return!1;var c="["+i+'="'+a+'"]',f=r.querySelectorAll(c);return 1===f.length?(t.unshift(c),!0):void 0})}function g(e,t,n,r){var u=e.tagName.toLowerCase();if(h(n.tag,u))return!1;var o=r.getElementsByTagName(u);return 1===o.length&&(t.unshift(u),!0)}function y(e,t,n){for(var r=e.parentNode,u=r.childTags||r.children,o=0,i=u.length;o<i;o++)if(u[o]===e)return t.unshift("> "+n+":nth-child("+(o+1)+")"),!0;return!1}function h(e,t,n,r){if(!t)return!0;var u=e||r;return!!u&&u(t,n||t,r)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=n;var m={attribute:function(e){return["style","data-reactid","data-react-checksum"].indexOf(e)>-1}};e.exports=t.default},function(e,t,n){(function(e){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.length?i(e,t):o(e,t)}function o(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(3===t.nodeType&&(t=t.parentNode),1!==t.nodeType)throw new Error('Invalid input - only HTMLElements or representations of them are supported! (not "'+("undefined"==typeof t?"undefined":c(t))+'")');var r=(0,l.default)(t,n),u=(0,d.default)(t,n),o=(0,p.default)(u,t,n);return r&&delete e.document,o}function i(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(t)||(t=(0,g.convertNodeList)(t)),t.some(function(e){return 1!==e.nodeType}))throw new Error("Invalid input - only an Array of HTMLElements or representations of them is supported!");var r=(0,l.default)(t[0],n),u=(0,y.getCommonAncestor)(t,n),i=o(u,n),c=a(t),f=c[0],s=(0,p.default)(i+" "+f,t,n),d=(0,g.convertNodeList)(document.querySelectorAll(s));return t.every(function(e){return d.some(function(t){return t===e})})?(r&&delete e.document,s):console.warn("\n The selected elements can't be efficiently mapped.\n Its probably best to use multiple single selectors instead!\n ",t)}function a(e){var t=(0,y.getCommonProperties)(e),n=t.classes,r=t.attributes,u=t.tag,o=[];if(u&&o.push(u),n){var i=n.map(function(e){return"."+e}).join("");o.push(i)}if(r){var a=Object.keys(r).reduce(function(e,t){return e.push("["+t+'="'+r[t]+'"]'),e},[]).join("");o.push(a)}return o.length,[o.join("")]}Object.defineProperty(t,"__esModule",{value:!0});var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e};t.default=u,t.getSingleSelector=o,t.getMultiSelector=i;var f=n(1),l=r(f),s=n(5),d=r(s),v=n(3),p=r(v),g=n(4),y=n(2)}).call(t,function(){return this}())}])});
//# sourceMappingURL=optimal-select.min.js.map

@@ -12,7 +12,4 @@ 'use strict';

exports.default = adapt;
function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }
/**
* # Universal
* # Adapt
*

@@ -138,16 +135,10 @@ * Check and extend the environment for universal usage

// using right to left execution => https://github.com/fb55/css-select#how-does-it-work
var instructions = getInstructions(selectors);
var discover = instructions.shift();
var _getInstructions = getInstructions(selectors);
var _getInstructions2 = _toArray(_getInstructions);
var discover = _getInstructions2[0];
var ascendings = _getInstructions2.slice(1);
var total = ascendings.length;
var total = instructions.length;
return discover(this).filter(function (node) {
var step = 0;
while (step < total) {
node = ascendings[step](node, _this);
node = instructions[step](node, _this);
if (!node) {

@@ -424,2 +415,2 @@ // hierarchy doesn't match

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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akI7QUFBQSxLQUFkO0FBQ0EsUUFBSSxLQUFLLFNBQUwsSUFBa0IsUUFBdEIsRUFBZ0M7QUFDOUIsMEJBQW9CLEtBQUssU0FBekIsRUFBb0MsT0FBcEM7QUFDRDtBQUNGLEdBTkQ7QUFPRDs7Ozs7Ozs7OztBQVVELFNBQVMsV0FBVCxDQUFzQixJQUF0QixFQUE0QixJQUE1QixFQUFrQyxRQUFsQyxFQUE0QztBQUMxQyxTQUFPLEtBQUssTUFBWixFQUFvQjtBQUNsQixXQUFPLEtBQUssTUFBWjtBQUNBLFFBQUksU0FBUyxJQUFULENBQUosRUFBb0I7QUFDbEIsYUFBTyxJQUFQO0FBQ0Q7QUFDRCxRQUFJLFNBQVMsSUFBYixFQUFtQjtBQUNqQjtBQUNEO0FBQ0Y7QUFDRCxTQUFPLElBQVA7QUFDRCIsImZpbGUiOiJhZGFwdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIyBVbml2ZXJzYWxcbiAqXG4gKiBDaGVjayBhbmQgZXh0ZW5kIHRoZSBlbnZpcm9ubWVudCBmb3IgdW5pdmVyc2FsIHVzYWdlXG4gKi9cblxuLyoqXG4gKiBNb2RpZnkgdGhlIGNvbnRleHQgYmFzZWQgb24gdGhlIGVudmlyb25tZW50XG4gKlxuICogQHBhcmFtICB7SFRNTEVMZW1lbnR9IGVsZW1lbnQgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgb3B0aW9ucyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGFwdCAoZWxlbWVudCwgb3B0aW9ucykge1xuXG4gIC8vIGRldGVjdCBlbnZpcm9ubWVudCBzZXR1cFxuICBpZiAoZ2xvYmFsLmRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCB7IGNvbnRleHQgfSA9IG9wdGlvbnNcblxuICBnbG9iYWwuZG9jdW1lbnQgPSBjb250ZXh0IHx8ICgoKSA9PiB7XG4gICAgdmFyIHJvb3QgPSBlbGVtZW50XG4gICAgd2hpbGUgKHJvb3QucGFyZW50KSB7XG4gICAgICByb290ID0gcm9vdC5wYXJlbnRcbiAgICB9XG4gICAgcmV0dXJuIHJvb3RcbiAgfSkoKVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYjU1L2RvbWhhbmRsZXIvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDc1XG4gIGNvbnN0IEVsZW1lbnRQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsLmRvY3VtZW50KVxuXG4gIC8vIGFsdGVybmF0aXZlIGRlc2NyaXB0b3IgdG8gYWNjZXNzIGVsZW1lbnRzIHdpdGggZmlsdGVyaW5nIGludmFsaWQgZWxlbWVudHMgKGUuZy4gdGV4dG5vZGVzKVxuICBpZiAoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudFByb3RvdHlwZSwgJ2NoaWxkVGFncycpKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnRQcm90b3R5cGUsICdjaGlsZFRhZ3MnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0ICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZmlsdGVyKChub2RlKSA9PiB7XG4gICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZiNTUvZG9tZWxlbWVudHR5cGUvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDEyXG4gICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gJ3RhZycgfHwgbm9kZS50eXBlID09PSAnc2NyaXB0JyB8fCBub2RlLnR5cGUgPT09ICdzdHlsZSdcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaWYgKCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEVsZW1lbnRQcm90b3R5cGUsICdhdHRyaWJ1dGVzJykpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9hdHRyaWJ1dGVzXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hbWVkTm9kZU1hcFxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50UHJvdG90eXBlLCAnYXR0cmlidXRlcycsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQgKCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnMgfSA9IHRoaXNcbiAgICAgICAgY29uc3QgYXR0cmlidXRlc05hbWVzID0gT2JqZWN0LmtleXMoYXR0cmlicylcbiAgICAgICAgY29uc3QgTmFtZWROb2RlTWFwID0gYXR0cmlidXRlc05hbWVzLnJlZHVjZSgoYXR0cmlidXRlcywgYXR0cmlidXRlTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBhdHRyaWJ1dGVzW2luZGV4XSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGF0dHJpYnV0ZU5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogYXR0cmlic1thdHRyaWJ1dGVOYW1lXVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYXR0cmlidXRlc1xuICAgICAgICB9LCB7IH0pXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOYW1lZE5vZGVNYXAsICdsZW5ndGgnLCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogYXR0cmlidXRlc05hbWVzLmxlbmd0aFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gTmFtZWROb2RlTWFwXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpIHtcbiAgICAvLyBodHRwczovL2RvY3Mud2VicGxhdGZvcm0ub3JnL3dpa2kvZG9tL0VsZW1lbnQvZ2V0QXR0cmlidXRlXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0QXR0cmlidXRlXG4gICAgRWxlbWVudFByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlic1tuYW1lXSB8fCBudWxsXG4gICAgfVxuICB9XG5cbiAgaWYgKCFFbGVtZW50UHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2RvbS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5VGFnTmFtZVxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L2dldEVsZW1lbnRzQnlUYWdOYW1lXG4gICAgRWxlbWVudFByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uICh0YWdOYW1lKSB7XG4gICAgICBjb25zdCBIVE1MQ29sbGVjdGlvbiA9IFtdXG4gICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKHRoaXMuY2hpbGRUYWdzLCAoZGVzY2VuZGFudCkgPT4ge1xuICAgICAgICBpZiAoZGVzY2VuZGFudC5uYW1lID09PSB0YWdOYW1lIHx8IHRhZ05hbWUgPT09ICcqJykge1xuICAgICAgICAgIEhUTUxDb2xsZWN0aW9uLnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBIVE1MQ29sbGVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2RvbS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxuICAgIEVsZW1lbnRQcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJykuc3BsaXQoJyAnKVxuICAgICAgY29uc3QgSFRNTENvbGxlY3Rpb24gPSBbXVxuICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbdGhpc10sIChkZXNjZW5kYW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRDbGFzc05hbWUgPSBkZXNjZW5kYW50LmF0dHJpYnMuY2xhc3NcbiAgICAgICAgaWYgKGRlc2NlbmRhbnRDbGFzc05hbWUgJiYgbmFtZXMuZXZlcnkoKG5hbWUpID0+IGRlc2NlbmRhbnRDbGFzc05hbWUuaW5kZXhPZihuYW1lKSA+IC0xKSkge1xuICAgICAgICAgIEhUTUxDb2xsZWN0aW9uLnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBIVE1MQ29sbGVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2Nzcy9zZWxlY3RvcnNfYXBpL3F1ZXJ5U2VsZWN0b3JBbGxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9xdWVyeVNlbGVjdG9yQWxsXG4gICAgRWxlbWVudFByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsID0gZnVuY3Rpb24gKHNlbGVjdG9ycykge1xuICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzLnJlcGxhY2UoLyg+KShcXFMpL2csICckMSAkMicpLnRyaW0oKSAvLyBhZGQgc3BhY2UgZm9yICc+JyBzZWxlY3RvclxuXG4gICAgICAvLyB1c2luZyByaWdodCB0byBsZWZ0IGV4ZWN1dGlvbiA9PiBodHRwczovL2dpdGh1Yi5jb20vZmI1NS9jc3Mtc2VsZWN0I2hvdy1kb2VzLWl0LXdvcmtcbiAgICAgIGNvbnN0IFtkaXNjb3ZlciwgLi4uYXNjZW5kaW5nc10gPSBnZXRJbnN0cnVjdGlvbnMoc2VsZWN0b3JzKVxuICAgICAgY29uc3QgdG90YWwgPSBhc2NlbmRpbmdzLmxlbmd0aFxuICAgICAgcmV0dXJuIGRpc2NvdmVyKHRoaXMpLmZpbHRlcigobm9kZSkgPT4ge1xuICAgICAgICB2YXIgc3RlcCA9IDBcbiAgICAgICAgd2hpbGUgKHN0ZXAgPCB0b3RhbCkge1xuICAgICAgICAgIG5vZGUgPSBhc2NlbmRpbmdzW3N0ZXBdKG5vZGUsIHRoaXMpXG4gICAgICAgICAgaWYgKCFub2RlKSB7IC8vIGhpZXJhcmNoeSBkb2Vzbid0IG1hdGNoXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgc3RlcCArPSAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgaWYgKCFFbGVtZW50UHJvdG90eXBlLmNvbnRhaW5zKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05vZGUvY29udGFpbnNcbiAgICBFbGVtZW50UHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIHZhciBpbmNsdXNpdmUgPSBmYWxzZVxuICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbdGhpc10sIChkZXNjZW5kYW50LCBkb25lKSA9PiB7XG4gICAgICAgIGlmIChkZXNjZW5kYW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgICAgaW5jbHVzaXZlID0gdHJ1ZVxuICAgICAgICAgIGRvbmUoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgcmV0dXJuIGluY2x1c2l2ZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogUmV0cmlldmUgdHJhbnNmb3JtYXRpb24gc3RlcHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48c3RyaW5nPn0gICBzZWxlY3RvcnMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtBcnJheS48RnVuY3Rpb24+fSAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGdldEluc3RydWN0aW9ucyAoc2VsZWN0b3JzKSB7XG4gIHJldHVybiBzZWxlY3RvcnMuc3BsaXQoJyAnKS5yZXZlcnNlKCkubWFwKChzZWxlY3Rvciwgc3RlcCkgPT4ge1xuICAgIGNvbnN0IGRpc2NvdmVyID0gc3RlcCA9PT0gMFxuICAgIGNvbnN0IFt0eXBlLCBwc2V1ZG9dID0gc2VsZWN0b3Iuc3BsaXQoJzonKVxuXG4gICAgdmFyIHZhbGlkYXRlID0gbnVsbFxuICAgIHZhciBpbnN0cnVjdGlvbiA9IG51bGxcblxuICAgIHN3aXRjaCAodHJ1ZSkge1xuXG4gICAgICAvLyBjaGlsZDogJz4nXG4gICAgICBjYXNlIC8+Ly50ZXN0KHR5cGUpOlxuICAgICAgICBpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIGNoZWNrUGFyZW50IChub2RlKSB7XG4gICAgICAgICAgcmV0dXJuICh2YWxpZGF0ZSkgPT4gdmFsaWRhdGUobm9kZS5wYXJlbnQpICYmIG5vZGUucGFyZW50XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gY2xhc3M6ICcuJ1xuICAgICAgY2FzZSAvXlxcLi8udGVzdCh0eXBlKTpcbiAgICAgICAgY29uc3QgbmFtZXMgPSB0eXBlLnN1YnN0cigxKS5zcGxpdCgnLicpXG4gICAgICAgIHZhbGlkYXRlID0gKG5vZGUpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlQ2xhc3NOYW1lID0gbm9kZS5hdHRyaWJzLmNsYXNzXG4gICAgICAgICAgcmV0dXJuIG5vZGVDbGFzc05hbWUgJiYgbmFtZXMuZXZlcnkoKG5hbWUpID0+IG5vZGVDbGFzc05hbWUuaW5kZXhPZihuYW1lKSA+IC0xKVxuICAgICAgICB9XG4gICAgICAgIGluc3RydWN0aW9uID0gZnVuY3Rpb24gY2hlY2tDbGFzcyAobm9kZSwgcm9vdCkge1xuICAgICAgICAgIGlmIChkaXNjb3Zlcikge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShuYW1lcy5qb2luKCcgJykpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAodHlwZW9mIG5vZGUgPT09ICdmdW5jdGlvbicpID8gbm9kZSh2YWxpZGF0ZSkgOiBnZXRBbmNlc3Rvcihub2RlLCByb290LCB2YWxpZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICAvLyBhdHRyaWJ1dGU6ICdba2V5PVwidmFsdWVcIl0nXG4gICAgICBjYXNlIC9eXFxbLy50ZXN0KHR5cGUpOlxuICAgICAgICBjb25zdCBbYXR0cmlidXRlS2V5LCBhdHRyaWJ1dGVWYWx1ZV0gPSB0eXBlLnJlcGxhY2UoL1xcW3xcXF18XCIvZywgJycpLnNwbGl0KCc9JylcbiAgICAgICAgdmFsaWRhdGUgPSAobm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGhhc0F0dHJpYnV0ZSA9IE9iamVjdC5rZXlzKG5vZGUuYXR0cmlicykuaW5kZXhPZihhdHRyaWJ1dGVLZXkpID4gLTFcbiAgICAgICAgICBpZiAoaGFzQXR0cmlidXRlKSB7IC8vIHJlZ2FyZCBvcHRpb25hbCBhdHRyaWJ1dGVWYWx1ZVxuICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGVWYWx1ZSB8fCAobm9kZS5hdHRyaWJzW2F0dHJpYnV0ZUtleV0gPT09IGF0dHJpYnV0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIGNoZWNrQXR0cmlidXRlIChub2RlLCByb290KSB7XG4gICAgICAgICAgaWYgKGRpc2NvdmVyKSB7XG4gICAgICAgICAgICBjb25zdCBOb2RlTGlzdCA9IFtdXG4gICAgICAgICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKFtub2RlXSwgKGRlc2NlbmRhbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHZhbGlkYXRlKGRlc2NlbmRhbnQpKSB7XG4gICAgICAgICAgICAgICAgTm9kZUxpc3QucHVzaChkZXNjZW5kYW50KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuIE5vZGVMaXN0XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAodHlwZW9mIG5vZGUgPT09ICdmdW5jdGlvbicpID8gbm9kZSh2YWxpZGF0ZSkgOiBnZXRBbmNlc3Rvcihub2RlLCByb290LCB2YWxpZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICAvLyBpZDogJyMnXG4gICAgICBjYXNlIC9eIy8udGVzdCh0eXBlKTpcbiAgICAgICAgY29uc3QgaWQgPSB0eXBlLnN1YnN0cigxKVxuICAgICAgICB2YWxpZGF0ZSA9IChub2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUuYXR0cmlicy5pZCA9PT0gaWRcbiAgICAgICAgfVxuICAgICAgICBpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIGNoZWNrSWQgKG5vZGUsIHJvb3QpIHtcbiAgICAgICAgICBpZiAoZGlzY292ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IE5vZGVMaXN0ID0gW11cbiAgICAgICAgICAgIHRyYXZlcnNlRGVzY2VuZGFudHMoW25vZGVdLCAoZGVzY2VuZGFudCwgZG9uZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGUoZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgICAgICBOb2RlTGlzdC5wdXNoKGRlc2NlbmRhbnQpXG4gICAgICAgICAgICAgICAgZG9uZSgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gTm9kZUxpc3RcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykgPyBub2RlKHZhbGlkYXRlKSA6IGdldEFuY2VzdG9yKG5vZGUsIHJvb3QsIHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIHVuaXZlcnNhbDogJyonXG4gICAgICBjYXNlIC9cXCovLnRlc3QodHlwZSk6XG4gICAgICAgIHZhbGlkYXRlID0gKG5vZGUpID0+IHRydWVcbiAgICAgICAgaW5zdHJ1Y3Rpb24gPSBmdW5jdGlvbiBjaGVja1VuaXZlcnNhbCAobm9kZSwgcm9vdCkge1xuICAgICAgICAgIGlmIChkaXNjb3Zlcikge1xuICAgICAgICAgICAgY29uc3QgTm9kZUxpc3QgPSBbXVxuICAgICAgICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbbm9kZV0sIChkZXNjZW5kYW50KSA9PiBOb2RlTGlzdC5wdXNoKGRlc2NlbmRhbnQpKVxuICAgICAgICAgICAgcmV0dXJuIE5vZGVMaXN0XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAodHlwZW9mIG5vZGUgPT09ICdmdW5jdGlvbicpID8gbm9kZSh2YWxpZGF0ZSkgOiBnZXRBbmNlc3Rvcihub2RlLCByb290LCB2YWxpZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICAvLyB0YWc6ICcuLi4nXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWxpZGF0ZSA9IChub2RlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG5vZGUubmFtZSA9PT0gdHlwZVxuICAgICAgICB9XG4gICAgICAgIGluc3RydWN0aW9uID0gZnVuY3Rpb24gY2hlY2tUYWcgKG5vZGUsIHJvb3QpIHtcbiAgICAgICAgICBpZiAoZGlzY292ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IE5vZGVMaXN0ID0gW11cbiAgICAgICAgICAgIHRyYXZlcnNlRGVzY2VuZGFudHMoW25vZGVdLCAoZGVzY2VuZGFudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGUoZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgICAgICBOb2RlTGlzdC5wdXNoKGRlc2NlbmRhbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gTm9kZUxpc3RcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykgPyBub2RlKHZhbGlkYXRlKSA6IGdldEFuY2VzdG9yKG5vZGUsIHJvb3QsIHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFwc2V1ZG8pIHtcbiAgICAgIHJldHVybiBpbnN0cnVjdGlvblxuICAgIH1cblxuICAgIGNvbnN0IHJ1bGUgPSBwc2V1ZG8ubWF0Y2goLy0oY2hpbGR8dHlwZSlcXCgoXFxkKylcXCkkLylcbiAgICBjb25zdCBraW5kID0gcnVsZVsxXVxuICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQocnVsZVsyXSwgMTApIC0gMVxuXG4gICAgY29uc3QgdmFsaWRhdGVQc2V1ZG8gPSAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgdmFyIGNvbXBhcmVTZXQgPSBub2RlLnBhcmVudC5jaGlsZFRhZ3NcbiAgICAgICAgaWYgKGtpbmQgPT09ICd0eXBlJykge1xuICAgICAgICAgIGNvbXBhcmVTZXQgPSBjb21wYXJlU2V0LmZpbHRlcih2YWxpZGF0ZSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlSW5kZXggPSBjb21wYXJlU2V0LmZpbmRJbmRleCgoY2hpbGQpID0+IGNoaWxkID09PSBub2RlKVxuICAgICAgICBpZiAobm9kZUluZGV4ID09PSBpbmRleCkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiBlbmhhbmNlSW5zdHJ1Y3Rpb24gKG5vZGUpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gaW5zdHJ1Y3Rpb24obm9kZSlcbiAgICAgIGlmIChkaXNjb3Zlcikge1xuICAgICAgICByZXR1cm4gbWF0Y2gucmVkdWNlKChOb2RlTGlzdCwgbWF0Y2hlZE5vZGUpID0+IHtcbiAgICAgICAgICBpZiAodmFsaWRhdGVQc2V1ZG8obWF0Y2hlZE5vZGUpKSB7XG4gICAgICAgICAgICBOb2RlTGlzdC5wdXNoKG1hdGNoZWROb2RlKVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gTm9kZUxpc3RcbiAgICAgICAgfSwgW10pXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsaWRhdGVQc2V1ZG8obWF0Y2gpICYmIG1hdGNoXG4gICAgfVxuICB9KVxufVxuXG4vKipcbiAqIFdhbGtpbmcgcmVjdXJzaXZlIHRvIGludm9rZSBjYWxsYmFja3NcbiAqXG4gKiBAcGFyYW0ge0FycmF5LjxIVE1MRWxlbWVudD59IG5vZGVzICAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSAgICAgICAgICAgIGhhbmRsZXIgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlRGVzY2VuZGFudHMgKG5vZGVzLCBoYW5kbGVyKSB7XG4gIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICB2YXIgcHJvZ3Jlc3MgPSB0cnVlXG4gICAgaGFuZGxlcihub2RlLCAoKSA9PiBwcm9ncmVzcyA9IGZhbHNlKVxuICAgIGlmIChub2RlLmNoaWxkVGFncyAmJiBwcm9ncmVzcykge1xuICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhub2RlLmNoaWxkVGFncywgaGFuZGxlcilcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogQnViYmxlIHVwIGZyb20gYm90dG9tIHRvIHRvcFxuICpcbiAqIEBwYXJhbSAge0hUTUxFTGVtZW50fSBub2RlICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0hUTUxFTGVtZW50fSByb290ICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSAgICB2YWxpZGF0ZSAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge0hUTUxFTGVtZW50fSAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZnVuY3Rpb24gZ2V0QW5jZXN0b3IgKG5vZGUsIHJvb3QsIHZhbGlkYXRlKSB7XG4gIHdoaWxlIChub2RlLnBhcmVudCkge1xuICAgIG5vZGUgPSBub2RlLnBhcmVudFxuICAgIGlmICh2YWxpZGF0ZShub2RlKSkge1xuICAgICAgcmV0dXJuIG5vZGVcbiAgICB9XG4gICAgaWYgKG5vZGUgPT09IHJvb3QpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsXG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
//# sourceMappingURL=data:application/json;base64,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QUNBLFFBQUksS0FBSyxTQUFMLElBQWtCLFFBQXRCLEVBQWdDO0FBQzlCLDBCQUFvQixLQUFLLFNBQXpCLEVBQW9DLE9BQXBDO0FBQ0Q7QUFDRixHQU5EO0FBT0Q7Ozs7Ozs7Ozs7QUFVRCxTQUFTLFdBQVQsQ0FBc0IsSUFBdEIsRUFBNEIsSUFBNUIsRUFBa0MsUUFBbEMsRUFBNEM7QUFDMUMsU0FBTyxLQUFLLE1BQVosRUFBb0I7QUFDbEIsV0FBTyxLQUFLLE1BQVo7QUFDQSxRQUFJLFNBQVMsSUFBVCxDQUFKLEVBQW9CO0FBQ2xCLGFBQU8sSUFBUDtBQUNEO0FBQ0QsUUFBSSxTQUFTLElBQWIsRUFBbUI7QUFDakI7QUFDRDtBQUNGO0FBQ0QsU0FBTyxJQUFQO0FBQ0QiLCJmaWxlIjoiYWRhcHQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICMgQWRhcHRcbiAqXG4gKiBDaGVjayBhbmQgZXh0ZW5kIHRoZSBlbnZpcm9ubWVudCBmb3IgdW5pdmVyc2FsIHVzYWdlXG4gKi9cblxuLyoqXG4gKiBNb2RpZnkgdGhlIGNvbnRleHQgYmFzZWQgb24gdGhlIGVudmlyb25tZW50XG4gKlxuICogQHBhcmFtICB7SFRNTEVMZW1lbnR9IGVsZW1lbnQgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgb3B0aW9ucyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhZGFwdCAoZWxlbWVudCwgb3B0aW9ucykge1xuXG4gIC8vIGRldGVjdCBlbnZpcm9ubWVudCBzZXR1cFxuICBpZiAoZ2xvYmFsLmRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBjb25zdCB7IGNvbnRleHQgfSA9IG9wdGlvbnNcblxuICBnbG9iYWwuZG9jdW1lbnQgPSBjb250ZXh0IHx8ICgoKSA9PiB7XG4gICAgdmFyIHJvb3QgPSBlbGVtZW50XG4gICAgd2hpbGUgKHJvb3QucGFyZW50KSB7XG4gICAgICByb290ID0gcm9vdC5wYXJlbnRcbiAgICB9XG4gICAgcmV0dXJuIHJvb3RcbiAgfSkoKVxuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYjU1L2RvbWhhbmRsZXIvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDc1XG4gIGNvbnN0IEVsZW1lbnRQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsLmRvY3VtZW50KVxuXG4gIC8vIGFsdGVybmF0aXZlIGRlc2NyaXB0b3IgdG8gYWNjZXNzIGVsZW1lbnRzIHdpdGggZmlsdGVyaW5nIGludmFsaWQgZWxlbWVudHMgKGUuZy4gdGV4dG5vZGVzKVxuICBpZiAoIU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRWxlbWVudFByb3RvdHlwZSwgJ2NoaWxkVGFncycpKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVsZW1lbnRQcm90b3R5cGUsICdjaGlsZFRhZ3MnLCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0ICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZmlsdGVyKChub2RlKSA9PiB7XG4gICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZiNTUvZG9tZWxlbWVudHR5cGUvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDEyXG4gICAgICAgICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gJ3RhZycgfHwgbm9kZS50eXBlID09PSAnc2NyaXB0JyB8fCBub2RlLnR5cGUgPT09ICdzdHlsZSdcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgaWYgKCFPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEVsZW1lbnRQcm90b3R5cGUsICdhdHRyaWJ1dGVzJykpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9hdHRyaWJ1dGVzXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL05hbWVkTm9kZU1hcFxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFbGVtZW50UHJvdG90eXBlLCAnYXR0cmlidXRlcycsIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBnZXQgKCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnMgfSA9IHRoaXNcbiAgICAgICAgY29uc3QgYXR0cmlidXRlc05hbWVzID0gT2JqZWN0LmtleXMoYXR0cmlicylcbiAgICAgICAgY29uc3QgTmFtZWROb2RlTWFwID0gYXR0cmlidXRlc05hbWVzLnJlZHVjZSgoYXR0cmlidXRlcywgYXR0cmlidXRlTmFtZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICBhdHRyaWJ1dGVzW2luZGV4XSA9IHtcbiAgICAgICAgICAgIG5hbWU6IGF0dHJpYnV0ZU5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogYXR0cmlic1thdHRyaWJ1dGVOYW1lXVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYXR0cmlidXRlc1xuICAgICAgICB9LCB7IH0pXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOYW1lZE5vZGVNYXAsICdsZW5ndGgnLCB7XG4gICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogYXR0cmlidXRlc05hbWVzLmxlbmd0aFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gTmFtZWROb2RlTWFwXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5nZXRBdHRyaWJ1dGUpIHtcbiAgICAvLyBodHRwczovL2RvY3Mud2VicGxhdGZvcm0ub3JnL3dpa2kvZG9tL0VsZW1lbnQvZ2V0QXR0cmlidXRlXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0QXR0cmlidXRlXG4gICAgRWxlbWVudFByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXR0cmlic1tuYW1lXSB8fCBudWxsXG4gICAgfVxuICB9XG5cbiAgaWYgKCFFbGVtZW50UHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2RvbS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5VGFnTmFtZVxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FbGVtZW50L2dldEVsZW1lbnRzQnlUYWdOYW1lXG4gICAgRWxlbWVudFByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uICh0YWdOYW1lKSB7XG4gICAgICBjb25zdCBIVE1MQ29sbGVjdGlvbiA9IFtdXG4gICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKHRoaXMuY2hpbGRUYWdzLCAoZGVzY2VuZGFudCkgPT4ge1xuICAgICAgICBpZiAoZGVzY2VuZGFudC5uYW1lID09PSB0YWdOYW1lIHx8IHRhZ05hbWUgPT09ICcqJykge1xuICAgICAgICAgIEhUTUxDb2xsZWN0aW9uLnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBIVE1MQ29sbGVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2RvbS9Eb2N1bWVudC9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxuICAgIEVsZW1lbnRQcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJykuc3BsaXQoJyAnKVxuICAgICAgY29uc3QgSFRNTENvbGxlY3Rpb24gPSBbXVxuICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbdGhpc10sIChkZXNjZW5kYW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlc2NlbmRhbnRDbGFzc05hbWUgPSBkZXNjZW5kYW50LmF0dHJpYnMuY2xhc3NcbiAgICAgICAgaWYgKGRlc2NlbmRhbnRDbGFzc05hbWUgJiYgbmFtZXMuZXZlcnkoKG5hbWUpID0+IGRlc2NlbmRhbnRDbGFzc05hbWUuaW5kZXhPZihuYW1lKSA+IC0xKSkge1xuICAgICAgICAgIEhUTUxDb2xsZWN0aW9uLnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIHJldHVybiBIVE1MQ29sbGVjdGlvblxuICAgIH1cbiAgfVxuXG4gIGlmICghRWxlbWVudFByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsKSB7XG4gICAgLy8gaHR0cHM6Ly9kb2NzLndlYnBsYXRmb3JtLm9yZy93aWtpL2Nzcy9zZWxlY3RvcnNfYXBpL3F1ZXJ5U2VsZWN0b3JBbGxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRWxlbWVudC9xdWVyeVNlbGVjdG9yQWxsXG4gICAgRWxlbWVudFByb3RvdHlwZS5xdWVyeVNlbGVjdG9yQWxsID0gZnVuY3Rpb24gKHNlbGVjdG9ycykge1xuICAgICAgc2VsZWN0b3JzID0gc2VsZWN0b3JzLnJlcGxhY2UoLyg+KShcXFMpL2csICckMSAkMicpLnRyaW0oKSAvLyBhZGQgc3BhY2UgZm9yICc+JyBzZWxlY3RvclxuXG4gICAgICAvLyB1c2luZyByaWdodCB0byBsZWZ0IGV4ZWN1dGlvbiA9PiBodHRwczovL2dpdGh1Yi5jb20vZmI1NS9jc3Mtc2VsZWN0I2hvdy1kb2VzLWl0LXdvcmtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IGdldEluc3RydWN0aW9ucyhzZWxlY3RvcnMpXG4gICAgICBjb25zdCBkaXNjb3ZlciA9IGluc3RydWN0aW9ucy5zaGlmdCgpXG5cbiAgICAgIGNvbnN0IHRvdGFsID0gaW5zdHJ1Y3Rpb25zLmxlbmd0aFxuICAgICAgcmV0dXJuIGRpc2NvdmVyKHRoaXMpLmZpbHRlcigobm9kZSkgPT4ge1xuICAgICAgICB2YXIgc3RlcCA9IDBcbiAgICAgICAgd2hpbGUgKHN0ZXAgPCB0b3RhbCkge1xuICAgICAgICAgIG5vZGUgPSBpbnN0cnVjdGlvbnNbc3RlcF0obm9kZSwgdGhpcylcbiAgICAgICAgICBpZiAoIW5vZGUpIHsgLy8gaGllcmFyY2h5IGRvZXNuJ3QgbWF0Y2hcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdGVwICs9IDFcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBpZiAoIUVsZW1lbnRQcm90b3R5cGUuY29udGFpbnMpIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTm9kZS9jb250YWluc1xuICAgIEVsZW1lbnRQcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgdmFyIGluY2x1c2l2ZSA9IGZhbHNlXG4gICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKFt0aGlzXSwgKGRlc2NlbmRhbnQsIGRvbmUpID0+IHtcbiAgICAgICAgaWYgKGRlc2NlbmRhbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgICBpbmNsdXNpdmUgPSB0cnVlXG4gICAgICAgICAgZG9uZSgpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICByZXR1cm4gaW5jbHVzaXZlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSB0cmFuc2Zvcm1hdGlvbiBzdGVwc1xuICpcbiAqIEBwYXJhbSAge0FycmF5LjxzdHJpbmc+fSAgIHNlbGVjdG9ycyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge0FycmF5LjxGdW5jdGlvbj59ICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZnVuY3Rpb24gZ2V0SW5zdHJ1Y3Rpb25zIChzZWxlY3RvcnMpIHtcbiAgcmV0dXJuIHNlbGVjdG9ycy5zcGxpdCgnICcpLnJldmVyc2UoKS5tYXAoKHNlbGVjdG9yLCBzdGVwKSA9PiB7XG4gICAgY29uc3QgZGlzY292ZXIgPSBzdGVwID09PSAwXG4gICAgY29uc3QgW3R5cGUsIHBzZXVkb10gPSBzZWxlY3Rvci5zcGxpdCgnOicpXG5cbiAgICB2YXIgdmFsaWRhdGUgPSBudWxsXG4gICAgdmFyIGluc3RydWN0aW9uID0gbnVsbFxuXG4gICAgc3dpdGNoICh0cnVlKSB7XG5cbiAgICAgIC8vIGNoaWxkOiAnPidcbiAgICAgIGNhc2UgLz4vLnRlc3QodHlwZSk6XG4gICAgICAgIGluc3RydWN0aW9uID0gZnVuY3Rpb24gY2hlY2tQYXJlbnQgKG5vZGUpIHtcbiAgICAgICAgICByZXR1cm4gKHZhbGlkYXRlKSA9PiB2YWxpZGF0ZShub2RlLnBhcmVudCkgJiYgbm9kZS5wYXJlbnRcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuXG4gICAgICAvLyBjbGFzczogJy4nXG4gICAgICBjYXNlIC9eXFwuLy50ZXN0KHR5cGUpOlxuICAgICAgICBjb25zdCBuYW1lcyA9IHR5cGUuc3Vic3RyKDEpLnNwbGl0KCcuJylcbiAgICAgICAgdmFsaWRhdGUgPSAobm9kZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBub2RlLmF0dHJpYnMuY2xhc3NcbiAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzTmFtZSAmJiBuYW1lcy5ldmVyeSgobmFtZSkgPT4gbm9kZUNsYXNzTmFtZS5pbmRleE9mKG5hbWUpID4gLTEpXG4gICAgICAgIH1cbiAgICAgICAgaW5zdHJ1Y3Rpb24gPSBmdW5jdGlvbiBjaGVja0NsYXNzIChub2RlLCByb290KSB7XG4gICAgICAgICAgaWYgKGRpc2NvdmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG5hbWVzLmpvaW4oJyAnKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykgPyBub2RlKHZhbGlkYXRlKSA6IGdldEFuY2VzdG9yKG5vZGUsIHJvb3QsIHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIGF0dHJpYnV0ZTogJ1trZXk9XCJ2YWx1ZVwiXSdcbiAgICAgIGNhc2UgL15cXFsvLnRlc3QodHlwZSk6XG4gICAgICAgIGNvbnN0IFthdHRyaWJ1dGVLZXksIGF0dHJpYnV0ZVZhbHVlXSA9IHR5cGUucmVwbGFjZSgvXFxbfFxcXXxcIi9nLCAnJykuc3BsaXQoJz0nKVxuICAgICAgICB2YWxpZGF0ZSA9IChub2RlKSA9PiB7XG4gICAgICAgICAgY29uc3QgaGFzQXR0cmlidXRlID0gT2JqZWN0LmtleXMobm9kZS5hdHRyaWJzKS5pbmRleE9mKGF0dHJpYnV0ZUtleSkgPiAtMVxuICAgICAgICAgIGlmIChoYXNBdHRyaWJ1dGUpIHsgLy8gcmVnYXJkIG9wdGlvbmFsIGF0dHJpYnV0ZVZhbHVlXG4gICAgICAgICAgICBpZiAoIWF0dHJpYnV0ZVZhbHVlIHx8IChub2RlLmF0dHJpYnNbYXR0cmlidXRlS2V5XSA9PT0gYXR0cmlidXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICB9XG4gICAgICAgIGluc3RydWN0aW9uID0gZnVuY3Rpb24gY2hlY2tBdHRyaWJ1dGUgKG5vZGUsIHJvb3QpIHtcbiAgICAgICAgICBpZiAoZGlzY292ZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IE5vZGVMaXN0ID0gW11cbiAgICAgICAgICAgIHRyYXZlcnNlRGVzY2VuZGFudHMoW25vZGVdLCAoZGVzY2VuZGFudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAodmFsaWRhdGUoZGVzY2VuZGFudCkpIHtcbiAgICAgICAgICAgICAgICBOb2RlTGlzdC5wdXNoKGRlc2NlbmRhbnQpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gTm9kZUxpc3RcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykgPyBub2RlKHZhbGlkYXRlKSA6IGdldEFuY2VzdG9yKG5vZGUsIHJvb3QsIHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIGlkOiAnIydcbiAgICAgIGNhc2UgL14jLy50ZXN0KHR5cGUpOlxuICAgICAgICBjb25zdCBpZCA9IHR5cGUuc3Vic3RyKDEpXG4gICAgICAgIHZhbGlkYXRlID0gKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5hdHRyaWJzLmlkID09PSBpZFxuICAgICAgICB9XG4gICAgICAgIGluc3RydWN0aW9uID0gZnVuY3Rpb24gY2hlY2tJZCAobm9kZSwgcm9vdCkge1xuICAgICAgICAgIGlmIChkaXNjb3Zlcikge1xuICAgICAgICAgICAgY29uc3QgTm9kZUxpc3QgPSBbXVxuICAgICAgICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbbm9kZV0sIChkZXNjZW5kYW50LCBkb25lKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZShkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgICAgIE5vZGVMaXN0LnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgICAgICAgICBkb25lKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVybiBOb2RlTGlzdFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gKHR5cGVvZiBub2RlID09PSAnZnVuY3Rpb24nKSA/IG5vZGUodmFsaWRhdGUpIDogZ2V0QW5jZXN0b3Iobm9kZSwgcm9vdCwgdmFsaWRhdGUpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gdW5pdmVyc2FsOiAnKidcbiAgICAgIGNhc2UgL1xcKi8udGVzdCh0eXBlKTpcbiAgICAgICAgdmFsaWRhdGUgPSAobm9kZSkgPT4gdHJ1ZVxuICAgICAgICBpbnN0cnVjdGlvbiA9IGZ1bmN0aW9uIGNoZWNrVW5pdmVyc2FsIChub2RlLCByb290KSB7XG4gICAgICAgICAgaWYgKGRpc2NvdmVyKSB7XG4gICAgICAgICAgICBjb25zdCBOb2RlTGlzdCA9IFtdXG4gICAgICAgICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKFtub2RlXSwgKGRlc2NlbmRhbnQpID0+IE5vZGVMaXN0LnB1c2goZGVzY2VuZGFudCkpXG4gICAgICAgICAgICByZXR1cm4gTm9kZUxpc3RcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICh0eXBlb2Ygbm9kZSA9PT0gJ2Z1bmN0aW9uJykgPyBub2RlKHZhbGlkYXRlKSA6IGdldEFuY2VzdG9yKG5vZGUsIHJvb3QsIHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG5cbiAgICAgIC8vIHRhZzogJy4uLidcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHZhbGlkYXRlID0gKG5vZGUpID0+IHtcbiAgICAgICAgICByZXR1cm4gbm9kZS5uYW1lID09PSB0eXBlXG4gICAgICAgIH1cbiAgICAgICAgaW5zdHJ1Y3Rpb24gPSBmdW5jdGlvbiBjaGVja1RhZyAobm9kZSwgcm9vdCkge1xuICAgICAgICAgIGlmIChkaXNjb3Zlcikge1xuICAgICAgICAgICAgY29uc3QgTm9kZUxpc3QgPSBbXVxuICAgICAgICAgICAgdHJhdmVyc2VEZXNjZW5kYW50cyhbbm9kZV0sIChkZXNjZW5kYW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh2YWxpZGF0ZShkZXNjZW5kYW50KSkge1xuICAgICAgICAgICAgICAgIE5vZGVMaXN0LnB1c2goZGVzY2VuZGFudClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVybiBOb2RlTGlzdFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gKHR5cGVvZiBub2RlID09PSAnZnVuY3Rpb24nKSA/IG5vZGUodmFsaWRhdGUpIDogZ2V0QW5jZXN0b3Iobm9kZSwgcm9vdCwgdmFsaWRhdGUpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXBzZXVkbykge1xuICAgICAgcmV0dXJuIGluc3RydWN0aW9uXG4gICAgfVxuXG4gICAgY29uc3QgcnVsZSA9IHBzZXVkby5tYXRjaCgvLShjaGlsZHx0eXBlKVxcKChcXGQrKVxcKSQvKVxuICAgIGNvbnN0IGtpbmQgPSBydWxlWzFdXG4gICAgY29uc3QgaW5kZXggPSBwYXJzZUludChydWxlWzJdLCAxMCkgLSAxXG5cbiAgICBjb25zdCB2YWxpZGF0ZVBzZXVkbyA9IChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICB2YXIgY29tcGFyZVNldCA9IG5vZGUucGFyZW50LmNoaWxkVGFnc1xuICAgICAgICBpZiAoa2luZCA9PT0gJ3R5cGUnKSB7XG4gICAgICAgICAgY29tcGFyZVNldCA9IGNvbXBhcmVTZXQuZmlsdGVyKHZhbGlkYXRlKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVJbmRleCA9IGNvbXBhcmVTZXQuZmluZEluZGV4KChjaGlsZCkgPT4gY2hpbGQgPT09IG5vZGUpXG4gICAgICAgIGlmIChub2RlSW5kZXggPT09IGluZGV4KSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGVuaGFuY2VJbnN0cnVjdGlvbiAobm9kZSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBpbnN0cnVjdGlvbihub2RlKVxuICAgICAgaWYgKGRpc2NvdmVyKSB7XG4gICAgICAgIHJldHVybiBtYXRjaC5yZWR1Y2UoKE5vZGVMaXN0LCBtYXRjaGVkTm9kZSkgPT4ge1xuICAgICAgICAgIGlmICh2YWxpZGF0ZVBzZXVkbyhtYXRjaGVkTm9kZSkpIHtcbiAgICAgICAgICAgIE5vZGVMaXN0LnB1c2gobWF0Y2hlZE5vZGUpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBOb2RlTGlzdFxuICAgICAgICB9LCBbXSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWxpZGF0ZVBzZXVkbyhtYXRjaCkgJiYgbWF0Y2hcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogV2Fsa2luZyByZWN1cnNpdmUgdG8gaW52b2tlIGNhbGxiYWNrc1xuICpcbiAqIEBwYXJhbSB7QXJyYXkuPEhUTUxFbGVtZW50Pn0gbm9kZXMgICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSB7RnVuY3Rpb259ICAgICAgICAgICAgaGFuZGxlciAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VEZXNjZW5kYW50cyAobm9kZXMsIGhhbmRsZXIpIHtcbiAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgIHZhciBwcm9ncmVzcyA9IHRydWVcbiAgICBoYW5kbGVyKG5vZGUsICgpID0+IHByb2dyZXNzID0gZmFsc2UpXG4gICAgaWYgKG5vZGUuY2hpbGRUYWdzICYmIHByb2dyZXNzKSB7XG4gICAgICB0cmF2ZXJzZURlc2NlbmRhbnRzKG5vZGUuY2hpbGRUYWdzLCBoYW5kbGVyKVxuICAgIH1cbiAgfSlcbn1cblxuLyoqXG4gKiBCdWJibGUgdXAgZnJvbSBib3R0b20gdG8gdG9wXG4gKlxuICogQHBhcmFtICB7SFRNTEVMZW1lbnR9IG5vZGUgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7SFRNTEVMZW1lbnR9IHJvb3QgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7RnVuY3Rpb259ICAgIHZhbGlkYXRlIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7SFRNTEVMZW1lbnR9ICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5mdW5jdGlvbiBnZXRBbmNlc3RvciAobm9kZSwgcm9vdCwgdmFsaWRhdGUpIHtcbiAgd2hpbGUgKG5vZGUucGFyZW50KSB7XG4gICAgbm9kZSA9IG5vZGUucGFyZW50XG4gICAgaWYgKHZhbGlkYXRlKG5vZGUpKSB7XG4gICAgICByZXR1cm4gbm9kZVxuICAgIH1cbiAgICBpZiAobm9kZSA9PT0gcm9vdCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

@@ -12,11 +12,6 @@ 'use strict';

var _utilities = require('./utilities');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
/**

@@ -30,2 +25,9 @@ * Apply different optimization techniques

*/
/**
* # Optimize
*
* 1.) Improve efficiency through shorter selectors by removing redundancy
* 2.) Improve robustness through selector transformation
*/
function optimize(selector, elements) {

@@ -37,3 +39,3 @@ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};

if (!Array.isArray(elements)) {
elements = !elements.length ? [elements] : [].concat(_toConsumableArray(elements));
elements = !elements.length ? [elements] : (0, _utilities.convertNodeList)(elements);
}

@@ -228,2 +230,2 @@

module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,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bkIsRUFBNEI7QUFDMUIsZUFBTyxJQUFQO0FBQ0Q7QUFDRjtBQUNELFdBQU8sS0FBUDtBQUNELEdBUG9DLENBQXJDO0FBUUQiLCJmaWxlIjoib3B0aW1pemUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICMgT3B0aW1pemVcbiAqXG4gKiAxLikgSW1wcm92ZSBlZmZpY2llbmN5IHRocm91Z2ggc2hvcnRlciBzZWxlY3RvcnMgYnkgcmVtb3ZpbmcgcmVkdW5kYW5jeVxuICogMi4pIEltcHJvdmUgcm9idXN0bmVzcyB0aHJvdWdoIHNlbGVjdG9yIHRyYW5zZm9ybWF0aW9uXG4gKi9cblxuaW1wb3J0IGFkYXB0IGZyb20gJy4vYWRhcHQnXG5cbi8qKlxuICogQXBwbHkgZGlmZmVyZW50IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudHxBcnJheS48SFRNTEVsZW1lbnQ+fSBlbGVtZW50ICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wdGltaXplIChzZWxlY3RvciwgZWxlbWVudHMsIG9wdGlvbnMgPSB7fSkge1xuXG4gIC8vIGNvbnZlcnQgc2luZ2xlIGVudHJ5IGFuZCBOb2RlTGlzdFxuICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbWVudHMpKSB7XG4gICAgZWxlbWVudHMgPSAhZWxlbWVudHMubGVuZ3RoID8gW2VsZW1lbnRzXSA6IFsuLi5lbGVtZW50c11cbiAgfVxuXG4gIGlmICghZWxlbWVudHMubGVuZ3RoIHx8IGVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubm9kZVR5cGUgIT09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gdG8gY29tcGFyZSBIVE1MRWxlbWVudHMgaXRzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGEgcmVmZXJlbmNlIG9mIHRoZSBzZWxlY3RlZCBub2RlKHMpISAobWlzc2luZyBcImVsZW1lbnRzXCIpYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudHNbMF0sIG9wdGlvbnMpXG5cbiAgLy8gY2h1bmsgcGFydHMgb3V0c2lkZSBvZiBxdW90ZXMgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI1NjYzNzI5KVxuICB2YXIgcGF0aCA9IHNlbGVjdG9yLnJlcGxhY2UoLz4gL2csICc+Jykuc3BsaXQoL1xccysoPz0oPzooPzpbXlwiXSpcIil7Mn0pKlteXCJdKiQpLylcblxuICBpZiAocGF0aC5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIG9wdGltaXplUGFydCgnJywgc2VsZWN0b3IsICcnLCBlbGVtZW50cylcbiAgfVxuXG4gIGNvbnN0IHNob3J0ZW5lZCA9IFtwYXRoLnBvcCgpXVxuICB3aGlsZSAocGF0aC5sZW5ndGggPiAxKSAge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoLnBvcCgpXG4gICAgY29uc3QgcHJlUGFydCA9IHBhdGguam9pbignICcpXG4gICAgY29uc3QgcG9zdFBhcnQgPSBzaG9ydGVuZWQuam9pbignICcpXG5cbiAgICBjb25zdCBwYXR0ZXJuID0gYCR7cHJlUGFydH0gJHtwb3N0UGFydH1gXG4gICAgY29uc3QgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggIT09IGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgc2hvcnRlbmVkLnVuc2hpZnQob3B0aW1pemVQYXJ0KHByZVBhcnQsIGN1cnJlbnQsIHBvc3RQYXJ0LCBlbGVtZW50cykpXG4gICAgfVxuICB9XG4gIHNob3J0ZW5lZC51bnNoaWZ0KHBhdGhbMF0pXG4gIHBhdGggPSBzaG9ydGVuZWRcblxuICAvLyBvcHRpbWl6ZSBzdGFydCArIGVuZFxuICBwYXRoWzBdID0gb3B0aW1pemVQYXJ0KCcnLCBwYXRoWzBdLCBwYXRoLnNsaWNlKDEpLmpvaW4oJyAnKSwgZWxlbWVudHMpXG4gIHBhdGhbcGF0aC5sZW5ndGgtMV0gPSBvcHRpbWl6ZVBhcnQocGF0aC5zbGljZSgwLCAtMSkuam9pbignICcpLCBwYXRoW3BhdGgubGVuZ3RoLTFdLCAnJywgZWxlbWVudHMpXG5cbiAgaWYgKGdsb2JhbE1vZGlmaWVkKSB7XG4gICAgZGVsZXRlIGdsb2JhbC5kb2N1bWVudFxuICB9XG5cbiAgcmV0dXJuIHBhdGguam9pbignICcpLnJlcGxhY2UoLz4vZywgJz4gJykudHJpbSgpXG59XG5cbi8qKlxuICogSW1wcm92ZSBhIGNodW5rIG9mIHRoZSBzZWxlY3RvclxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgIHByZVBhcnQgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgY3VycmVudCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgICBwb3N0UGFydCAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIG9wdGltaXplUGFydCAocHJlUGFydCwgY3VycmVudCwgcG9zdFBhcnQsIGVsZW1lbnRzKSB7XG4gIGlmIChwcmVQYXJ0Lmxlbmd0aCkgcHJlUGFydCA9IGAke3ByZVBhcnR9IGBcbiAgaWYgKHBvc3RQYXJ0Lmxlbmd0aCkgcG9zdFBhcnQgPSBgICR7cG9zdFBhcnR9YFxuXG4gIC8vIHJvYnVzdG5lc3M6IGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlIChnZW5lcmFsaXphdGlvbilcbiAgaWYgKC9cXFsqXFxdLy50ZXN0KGN1cnJlbnQpKSB7XG4gICAgY29uc3Qga2V5ID0gY3VycmVudC5yZXBsYWNlKC89LiokLywgJ10nKVxuICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2tleX0ke3Bvc3RQYXJ0fWBcbiAgICB2YXIgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICBjdXJyZW50ID0ga2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvYnVzdG5lc3M6IHJlcGxhY2Ugc3BlY2lmaWMga2V5LXZhbHVlIHdpdGggYmFzZSB0YWcgKGhldXJpc3RpYylcbiAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAke3ByZVBhcnR9JHtrZXl9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpKSkge1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogZGVzY2VuZGFudCBpbnN0ZWFkIGNoaWxkIChoZXVyaXN0aWMpXG4gIGlmICgvPi8udGVzdChjdXJyZW50KSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnQgPSBjdXJyZW50LnJlcGxhY2UoLz4vLCAnJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtkZXNjZW5kYW50fSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSBkZXNjZW5kYW50XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogJ250aC1vZi10eXBlJyBpbnN0ZWFkICdudGgtY2hpbGQnIChoZXVyaXN0aWMpXG4gIGlmICgvOm50aC1jaGlsZC8udGVzdChjdXJyZW50KSkge1xuICAgIC8vIFRPRE86IGNvbnNpZGVyIGNvbXBsZXRlIGNvdmVyYWdlIG9mICdudGgtb2YtdHlwZScgcmVwbGFjZW1lbnRcbiAgICBjb25zdCB0eXBlID0gY3VycmVudC5yZXBsYWNlKC9udGgtY2hpbGQvZywgJ250aC1vZi10eXBlJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHt0eXBlfSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSB0eXBlXG4gICAgfVxuICB9XG5cbiAgLy8gZWZmaWNpZW5jeTogY29tYmluYXRpb25zIG9mIGNsYXNzbmFtZSAocGFydGlhbCBwZXJtdXRhdGlvbnMpXG4gIGlmICgvXFwuXFxTK1xcLlxcUysvLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBuYW1lcyA9IGN1cnJlbnQudHJpbSgpLnNwbGl0KCcuJykuc2xpY2UoMSkubWFwKChuYW1lKSA9PiBgLiR7bmFtZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoY3VyciwgbmV4dCkgPT4gY3Vyci5sZW5ndGggLSBuZXh0Lmxlbmd0aClcbiAgICB3aGlsZSAobmFtZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IGN1cnJlbnQucmVwbGFjZShuYW1lcy5zaGlmdCgpLCAnJykudHJpbSgpXG4gICAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtwYXJ0aWFsfSR7cG9zdFBhcnR9YFxuICAgICAgaWYgKCFwYXR0ZXJuIHx8IHBhcnRpYWwgPT09ICc+Jykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJ0aWFsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJvYnVzdG5lc3M6IGRlZ3JhZGUgY29tcGxleCBjbGFzc25hbWUgKGhldXJpc3RpYylcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50Lm1hdGNoKC9cXC4vZykubGVuZ3RoID4gMikge1xuICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCR7cHJlUGFydH0ke2N1cnJlbnR9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpICkpIHtcbiAgICAgICAgICAvLyBUT0RPOlxuICAgICAgICAgIC8vIC0gY2hlY2sgdXNpbmcgYXR0cmlidXRlcyArIHJlZ2FyZCBleGNsdWRlc1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBtYXRjaGVzIHdpdGggZXhwZWN0ZWQgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnQ+fSBtYXRjaGVzICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVSZXN1bHRzIChtYXRjaGVzLCBlbGVtZW50cykge1xuICBjb25zdCB7IGxlbmd0aCB9ID0gbWF0Y2hlc1xuICByZXR1cm4gbGVuZ3RoID09PSBlbGVtZW50cy5sZW5ndGggJiYgZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobWF0Y2hlc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,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Q0FBUixNQUFlLE9BQW5CLEVBQTRCO0FBQzFCLGVBQU8sSUFBUDtBQUNEO0FBQ0Y7QUFDRCxXQUFPLEtBQVA7QUFDRCxHQVBvQyxDQUFyQztBQVFEIiwiZmlsZSI6Im9wdGltaXplLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAjIE9wdGltaXplXG4gKlxuICogMS4pIEltcHJvdmUgZWZmaWNpZW5jeSB0aHJvdWdoIHNob3J0ZXIgc2VsZWN0b3JzIGJ5IHJlbW92aW5nIHJlZHVuZGFuY3lcbiAqIDIuKSBJbXByb3ZlIHJvYnVzdG5lc3MgdGhyb3VnaCBzZWxlY3RvciB0cmFuc2Zvcm1hdGlvblxuICovXG5cbmltcG9ydCBhZGFwdCBmcm9tICcuL2FkYXB0J1xuaW1wb3J0IHsgY29udmVydE5vZGVMaXN0IH0gZnJvbSAnLi91dGlsaXRpZXMnXG5cbi8qKlxuICogQXBwbHkgZGlmZmVyZW50IG9wdGltaXphdGlvbiB0ZWNobmlxdWVzXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudHxBcnJheS48SFRNTEVsZW1lbnQ+fSBlbGVtZW50ICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9wdGltaXplIChzZWxlY3RvciwgZWxlbWVudHMsIG9wdGlvbnMgPSB7fSkge1xuXG4gIC8vIGNvbnZlcnQgc2luZ2xlIGVudHJ5IGFuZCBOb2RlTGlzdFxuICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbWVudHMpKSB7XG4gICAgZWxlbWVudHMgPSAhZWxlbWVudHMubGVuZ3RoID8gW2VsZW1lbnRzXSA6IGNvbnZlcnROb2RlTGlzdChlbGVtZW50cylcbiAgfVxuXG4gIGlmICghZWxlbWVudHMubGVuZ3RoIHx8IGVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubm9kZVR5cGUgIT09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gdG8gY29tcGFyZSBIVE1MRWxlbWVudHMgaXRzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGEgcmVmZXJlbmNlIG9mIHRoZSBzZWxlY3RlZCBub2RlKHMpISAobWlzc2luZyBcImVsZW1lbnRzXCIpYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudHNbMF0sIG9wdGlvbnMpXG5cbiAgLy8gY2h1bmsgcGFydHMgb3V0c2lkZSBvZiBxdW90ZXMgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzI1NjYzNzI5KVxuICB2YXIgcGF0aCA9IHNlbGVjdG9yLnJlcGxhY2UoLz4gL2csICc+Jykuc3BsaXQoL1xccysoPz0oPzooPzpbXlwiXSpcIil7Mn0pKlteXCJdKiQpLylcblxuICBpZiAocGF0aC5sZW5ndGggPCAzKSB7XG4gICAgcmV0dXJuIG9wdGltaXplUGFydCgnJywgc2VsZWN0b3IsICcnLCBlbGVtZW50cylcbiAgfVxuXG4gIGNvbnN0IHNob3J0ZW5lZCA9IFtwYXRoLnBvcCgpXVxuICB3aGlsZSAocGF0aC5sZW5ndGggPiAxKSAge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBwYXRoLnBvcCgpXG4gICAgY29uc3QgcHJlUGFydCA9IHBhdGguam9pbignICcpXG4gICAgY29uc3QgcG9zdFBhcnQgPSBzaG9ydGVuZWQuam9pbignICcpXG5cbiAgICBjb25zdCBwYXR0ZXJuID0gYCR7cHJlUGFydH0gJHtwb3N0UGFydH1gXG4gICAgY29uc3QgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAobWF0Y2hlcy5sZW5ndGggIT09IGVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgc2hvcnRlbmVkLnVuc2hpZnQob3B0aW1pemVQYXJ0KHByZVBhcnQsIGN1cnJlbnQsIHBvc3RQYXJ0LCBlbGVtZW50cykpXG4gICAgfVxuICB9XG4gIHNob3J0ZW5lZC51bnNoaWZ0KHBhdGhbMF0pXG4gIHBhdGggPSBzaG9ydGVuZWRcblxuICAvLyBvcHRpbWl6ZSBzdGFydCArIGVuZFxuICBwYXRoWzBdID0gb3B0aW1pemVQYXJ0KCcnLCBwYXRoWzBdLCBwYXRoLnNsaWNlKDEpLmpvaW4oJyAnKSwgZWxlbWVudHMpXG4gIHBhdGhbcGF0aC5sZW5ndGgtMV0gPSBvcHRpbWl6ZVBhcnQocGF0aC5zbGljZSgwLCAtMSkuam9pbignICcpLCBwYXRoW3BhdGgubGVuZ3RoLTFdLCAnJywgZWxlbWVudHMpXG5cbiAgaWYgKGdsb2JhbE1vZGlmaWVkKSB7XG4gICAgZGVsZXRlIGdsb2JhbC5kb2N1bWVudFxuICB9XG5cbiAgcmV0dXJuIHBhdGguam9pbignICcpLnJlcGxhY2UoLz4vZywgJz4gJykudHJpbSgpXG59XG5cbi8qKlxuICogSW1wcm92ZSBhIGNodW5rIG9mIHRoZSBzZWxlY3RvclxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gICAgICAgICAgICAgIHByZVBhcnQgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7c3RyaW5nfSAgICAgICAgICAgICAgY3VycmVudCAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgICAgICAgICAgICBwb3N0UGFydCAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIG9wdGltaXplUGFydCAocHJlUGFydCwgY3VycmVudCwgcG9zdFBhcnQsIGVsZW1lbnRzKSB7XG4gIGlmIChwcmVQYXJ0Lmxlbmd0aCkgcHJlUGFydCA9IGAke3ByZVBhcnR9IGBcbiAgaWYgKHBvc3RQYXJ0Lmxlbmd0aCkgcG9zdFBhcnQgPSBgICR7cG9zdFBhcnR9YFxuXG4gIC8vIHJvYnVzdG5lc3M6IGF0dHJpYnV0ZSB3aXRob3V0IHZhbHVlIChnZW5lcmFsaXphdGlvbilcbiAgaWYgKC9cXFsqXFxdLy50ZXN0KGN1cnJlbnQpKSB7XG4gICAgY29uc3Qga2V5ID0gY3VycmVudC5yZXBsYWNlKC89LiokLywgJ10nKVxuICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2tleX0ke3Bvc3RQYXJ0fWBcbiAgICB2YXIgbWF0Y2hlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocGF0dGVybilcbiAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICBjdXJyZW50ID0ga2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJvYnVzdG5lc3M6IHJlcGxhY2Ugc3BlY2lmaWMga2V5LXZhbHVlIHdpdGggYmFzZSB0YWcgKGhldXJpc3RpYylcbiAgICAgIGNvbnN0IHJlZmVyZW5jZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAke3ByZVBhcnR9JHtrZXl9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpKSkge1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogZGVzY2VuZGFudCBpbnN0ZWFkIGNoaWxkIChoZXVyaXN0aWMpXG4gIGlmICgvPi8udGVzdChjdXJyZW50KSkge1xuICAgIGNvbnN0IGRlc2NlbmRhbnQgPSBjdXJyZW50LnJlcGxhY2UoLz4vLCAnJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtkZXNjZW5kYW50fSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSBkZXNjZW5kYW50XG4gICAgfVxuICB9XG5cbiAgLy8gcm9idXN0bmVzczogJ250aC1vZi10eXBlJyBpbnN0ZWFkICdudGgtY2hpbGQnIChoZXVyaXN0aWMpXG4gIGlmICgvOm50aC1jaGlsZC8udGVzdChjdXJyZW50KSkge1xuICAgIC8vIFRPRE86IGNvbnNpZGVyIGNvbXBsZXRlIGNvdmVyYWdlIG9mICdudGgtb2YtdHlwZScgcmVwbGFjZW1lbnRcbiAgICBjb25zdCB0eXBlID0gY3VycmVudC5yZXBsYWNlKC9udGgtY2hpbGQvZywgJ250aC1vZi10eXBlJylcbiAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHt0eXBlfSR7cG9zdFBhcnR9YFxuICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgIGN1cnJlbnQgPSB0eXBlXG4gICAgfVxuICB9XG5cbiAgLy8gZWZmaWNpZW5jeTogY29tYmluYXRpb25zIG9mIGNsYXNzbmFtZSAocGFydGlhbCBwZXJtdXRhdGlvbnMpXG4gIGlmICgvXFwuXFxTK1xcLlxcUysvLnRlc3QoY3VycmVudCkpIHtcbiAgICBjb25zdCBuYW1lcyA9IGN1cnJlbnQudHJpbSgpLnNwbGl0KCcuJykuc2xpY2UoMSkubWFwKChuYW1lKSA9PiBgLiR7bmFtZX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc29ydCgoY3VyciwgbmV4dCkgPT4gY3Vyci5sZW5ndGggLSBuZXh0Lmxlbmd0aClcbiAgICB3aGlsZSAobmFtZXMubGVuZ3RoKSB7XG4gICAgICB2YXIgcGFydGlhbCA9IGN1cnJlbnQucmVwbGFjZShuYW1lcy5zaGlmdCgpLCAnJykudHJpbSgpXG4gICAgICB2YXIgcGF0dGVybiA9IGAke3ByZVBhcnR9JHtwYXJ0aWFsfSR7cG9zdFBhcnR9YFxuICAgICAgaWYgKCFwYXR0ZXJuIHx8IHBhcnRpYWwgPT09ICc+Jykge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgdmFyIG1hdGNoZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdHRlcm4pXG4gICAgICBpZiAoY29tcGFyZVJlc3VsdHMobWF0Y2hlcywgZWxlbWVudHMpKSB7XG4gICAgICAgIGN1cnJlbnQgPSBwYXJ0aWFsXG4gICAgICB9XG4gICAgfVxuICAgIC8vIHJvYnVzdG5lc3M6IGRlZ3JhZGUgY29tcGxleCBjbGFzc25hbWUgKGhldXJpc3RpYylcbiAgICBpZiAoY3VycmVudCAmJiBjdXJyZW50Lm1hdGNoKC9cXC4vZykubGVuZ3RoID4gMikge1xuICAgICAgY29uc3QgcmVmZXJlbmNlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCR7cHJlUGFydH0ke2N1cnJlbnR9YClcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcmVmZXJlbmNlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcmVmZXJlbmNlID0gcmVmZXJlbmNlc1tpXVxuICAgICAgICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gcmVmZXJlbmNlLmNvbnRhaW5zKGVsZW1lbnQpICkpIHtcbiAgICAgICAgICAvLyBUT0RPOlxuICAgICAgICAgIC8vIC0gY2hlY2sgdXNpbmcgYXR0cmlidXRlcyArIHJlZ2FyZCBleGNsdWRlc1xuICAgICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gcmVmZXJlbmNlLnRhZ05hbWUudG9Mb3dlckNhc2UoKVxuICAgICAgICAgIHZhciBwYXR0ZXJuID0gYCR7cHJlUGFydH0ke2Rlc2NyaXB0aW9ufSR7cG9zdFBhcnR9YFxuICAgICAgICAgIHZhciBtYXRjaGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChwYXR0ZXJuKVxuICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0cyhtYXRjaGVzLCBlbGVtZW50cykpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBkZXNjcmlwdGlvblxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGN1cnJlbnRcbn1cblxuLyoqXG4gKiBFdmFsdWF0ZSBtYXRjaGVzIHdpdGggZXhwZWN0ZWQgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnQ+fSBtYXRjaGVzICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVSZXN1bHRzIChtYXRjaGVzLCBlbGVtZW50cykge1xuICBjb25zdCB7IGxlbmd0aCB9ID0gbWF0Y2hlc1xuICByZXR1cm4gbGVuZ3RoID09PSBlbGVtZW50cy5sZW5ndGggJiYgZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobWF0Y2hlc1tpXSA9PT0gZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

@@ -30,2 +30,4 @@ 'use strict';

var _utilities = require('./utilities');
var _common = require('./common');

@@ -35,4 +37,2 @@

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
/**

@@ -102,3 +102,3 @@ * Choose action depending on the input (single/multi)

if (!Array.isArray(elements)) {
elements = [].concat(_toConsumableArray(elements));
elements = (0, _utilities.convertNodeList)(elements);
}

@@ -122,3 +122,3 @@

var selector = (0, _optimize2.default)(ancestorSelector + ' ' + descendantSelector, elements, options);
var selectorMatches = [].concat(_toConsumableArray(document.querySelectorAll(selector)));
var selectorMatches = (0, _utilities.convertNodeList)(document.querySelectorAll(selector));

@@ -182,2 +182,2 @@ if (!elements.every(function (element) {

}
//# sourceMappingURL=data:application/json;base64,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QkFFUixHQUZROzs7QUFJckMsTUFBTSxlQUFlLEVBQXJCOztBQUVBLE1BQUksR0FBSixFQUFTO0FBQ1AsaUJBQWEsSUFBYixDQUFrQixHQUFsQjtBQUNEOztBQUVELE1BQUksT0FBSixFQUFhO0FBQ1gsUUFBTSxnQkFBZ0IsUUFBUSxHQUFSLENBQVksVUFBQyxJQUFEO0FBQUEsbUJBQWMsSUFBZDtBQUFBLEtBQVosRUFBa0MsSUFBbEMsQ0FBdUMsRUFBdkMsQ0FBdEI7QUFDQSxpQkFBYSxJQUFiLENBQWtCLGFBQWxCO0FBQ0Q7O0FBRUQsTUFBSSxVQUFKLEVBQWdCO0FBQ2QsUUFBTSxvQkFBb0IsT0FBTyxJQUFQLENBQVksVUFBWixFQUF3QixNQUF4QixDQUErQixVQUFDLEtBQUQsRUFBUSxJQUFSLEVBQWlCO0FBQ3hFLFlBQU0sSUFBTixPQUFlLElBQWYsVUFBd0IsV0FBVyxJQUFYLENBQXhCO0FBQ0EsYUFBTyxLQUFQO0FBQ0QsS0FIeUIsRUFHdkIsRUFIdUIsRUFHbkIsSUFIbUIsQ0FHZCxFQUhjLENBQTFCO0FBSUEsaUJBQWEsSUFBYixDQUFrQixpQkFBbEI7QUFDRDs7QUFFRCxNQUFJLGFBQWEsTUFBakIsRUFBeUI7O0FBRXhCOztBQUVELFNBQU8sQ0FDTCxhQUFhLElBQWIsQ0FBa0IsRUFBbEIsQ0FESyxDQUFQO0FBR0QiLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAjIFNlbGVjdFxuICpcbiAqIENvbnN0cnVjdCBhIHVuaXF1ZSBDU1MgcXVlcnlzZWxlY3RvciB0byBhY2Nlc3MgdGhlIHNlbGVjdGVkIERPTSBlbGVtZW50KHMpLlxuICogQXBwbGllcyBkaWZmZXJlbnQgbWF0Y2hpbmcgYW5kIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIGZvciBlZmZpY2llbmN5LlxuICovXG5cbmltcG9ydCBhZGFwdCBmcm9tICcuL2FkYXB0J1xuaW1wb3J0IG1hdGNoIGZyb20gJy4vbWF0Y2gnXG5pbXBvcnQgb3B0aW1pemUgZnJvbSAnLi9vcHRpbWl6ZSdcbmltcG9ydCB7IGdldENvbW1vbkFuY2VzdG9yLCBnZXRDb21tb25Qcm9wZXJ0aWVzIH0gZnJvbSAnLi9jb21tb24nXG5cbi8qKlxuICogQ2hvb3NlIGFjdGlvbiBkZXBlbmRpbmcgb24gdGhlIGlucHV0IChzaW5nbGUvbXVsdGkpXG4gKlxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR8QXJyYXkuPEhUTUxFbGVtZW50Pn0gaW5wdXQgICAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRRdWVyeVNlbGVjdG9yIChpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICghaW5wdXQubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGdldFNpbmdsZVNlbGVjdG9yKGlucHV0LCBvcHRpb25zKVxuICB9XG4gIHJldHVybiBnZXRNdWx0aVNlbGVjdG9yKGlucHV0LCBvcHRpb25zKVxufVxuXG4vKipcbiAqIEdldCBhIHNlbGVjdG9yIGZvciB0aGUgcHJvdmlkZWQgZWxlbWVudFxuICpcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbGVtZW50IC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgIG9wdGlvbnMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNpbmdsZVNlbGVjdG9yIChlbGVtZW50LCBvcHRpb25zID0ge30pIHtcblxuICBpZiAoZWxlbWVudC5ub2RlVHlwZSA9PT0gMykge1xuICAgIGVsZW1lbnQgPSBlbGVtZW50LnBhcmVudE5vZGVcbiAgfVxuICBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnB1dCAtIG9ubHkgSFRNTEVsZW1lbnRzIG9yIHJlcHJlc2VudGF0aW9ucyBvZiB0aGVtIGFyZSBzdXBwb3J0ZWQhIChub3QgXCIke3R5cGVvZiBlbGVtZW50fVwiKWApXG4gIH1cblxuICBjb25zdCBnbG9iYWxNb2RpZmllZCA9IGFkYXB0KGVsZW1lbnQsIG9wdGlvbnMpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBtYXRjaChlbGVtZW50LCBvcHRpb25zKVxuICBjb25zdCBvcHRpbWl6ZWQgPSBvcHRpbWl6ZShzZWxlY3RvciwgZWxlbWVudCwgb3B0aW9ucylcblxuICAvLyBkZWJ1Z1xuICAvLyBjb25zb2xlLmxvZyhgXG4gIC8vICAgc2VsZWN0b3I6ICAke3NlbGVjdG9yfVxuICAvLyAgIG9wdGltaXplZDogJHtvcHRpbWl6ZWR9XG4gIC8vIGApXG5cbiAgaWYgKGdsb2JhbE1vZGlmaWVkKSB7XG4gICAgZGVsZXRlIGdsb2JhbC5kb2N1bWVudFxuICB9XG5cbiAgcmV0dXJuIG9wdGltaXplZFxufVxuXG4vKipcbiAqIEdldCBhIHNlbGVjdG9yIHRvIG1hdGNoIG11bHRpcGxlIGRlc2NlbmRhbnRzIGZyb20gYW4gYW5jZXN0b3JcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnQ+fSBlbGVtZW50cyAtIFtkZXNjcmlwdGlvbl1cbiAqIEBwYXJhbSAge09iamVjdH0gICAgICAgICAgICAgIG9wdGlvbnMgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNdWx0aVNlbGVjdG9yIChlbGVtZW50cywgb3B0aW9ucyA9IHt9KSB7XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGVsZW1lbnRzKSkge1xuICAgIGVsZW1lbnRzID0gWy4uLmVsZW1lbnRzXVxuICB9XG5cbiAgaWYgKGVsZW1lbnRzLnNvbWUoKGVsZW1lbnQpID0+IGVsZW1lbnQubm9kZVR5cGUgIT09IDEpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gb25seSBhbiBBcnJheSBvZiBIVE1MRWxlbWVudHMgb3IgcmVwcmVzZW50YXRpb25zIG9mIHRoZW0gaXMgc3VwcG9ydGVkIWApXG4gIH1cblxuICBjb25zdCBnbG9iYWxNb2RpZmllZCA9IGFkYXB0KGVsZW1lbnRzWzBdLCBvcHRpb25zKVxuXG4gIGNvbnN0IGFuY2VzdG9yID0gZ2V0Q29tbW9uQW5jZXN0b3IoZWxlbWVudHMsIG9wdGlvbnMpXG4gIGNvbnN0IGFuY2VzdG9yU2VsZWN0b3IgPSBnZXRTaW5nbGVTZWxlY3RvcihhbmNlc3Rvciwgb3B0aW9ucylcblxuICAvLyBUT0RPOiBjb25zaWRlciB1c2FnZSBvZiBtdWx0aXBsZSBzZWxlY3RvcnMgKyBwYXJlbnQtY2hpbGQgcmVsYXRpb24gKyBjaGVjayBmb3IgcGFydCByZWR1bmRhbmN5XG4gIGNvbnN0IGNvbW1vblNlbGVjdG9ycyA9IGdldENvbW1vblNlbGVjdG9ycyhlbGVtZW50cylcbiAgY29uc3QgZGVzY2VuZGFudFNlbGVjdG9yID0gY29tbW9uU2VsZWN0b3JzWzBdXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBvcHRpbWl6ZShgJHthbmNlc3RvclNlbGVjdG9yfSAke2Rlc2NlbmRhbnRTZWxlY3Rvcn1gLCBlbGVtZW50cywgb3B0aW9ucylcbiAgY29uc3Qgc2VsZWN0b3JNYXRjaGVzID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpXVxuXG4gIGlmICghZWxlbWVudHMuZXZlcnkoKGVsZW1lbnQpID0+IHNlbGVjdG9yTWF0Y2hlcy5zb21lKChlbnRyeSkgPT4gZW50cnkgPT09IGVsZW1lbnQpICkpIHtcbiAgICAvLyBUT0RPOiBjbHVzdGVyIG1hdGNoZXMgdG8gc3BsaXQgaW50byBzaW1pbGFyIGdyb3VwcyBmb3Igc3ViIHNlbGVjdGlvbnNcbiAgICByZXR1cm4gY29uc29sZS53YXJuKGBcbiAgICAgIFRoZSBzZWxlY3RlZCBlbGVtZW50cyBjYW5cXCd0IGJlIGVmZmljaWVudGx5IG1hcHBlZC5cbiAgICAgIEl0cyBwcm9iYWJseSBiZXN0IHRvIHVzZSBtdWx0aXBsZSBzaW5nbGUgc2VsZWN0b3JzIGluc3RlYWQhXG4gICAgYCwgZWxlbWVudHMpXG4gIH1cblxuICBpZiAoZ2xvYmFsTW9kaWZpZWQpIHtcbiAgICBkZWxldGUgZ2xvYmFsLmRvY3VtZW50XG4gIH1cblxuICByZXR1cm4gc2VsZWN0b3Jcbn1cblxuLyoqXG4gKiBHZXQgc2VsZWN0b3JzIHRvIGRlc2NyaWJlIGEgc2V0IG9mIGVsZW1lbnRzXG4gKlxuICogQHBhcmFtICB7QXJyYXkuPEhUTUxFbGVtZW50cz59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgICAgICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5mdW5jdGlvbiBnZXRDb21tb25TZWxlY3RvcnMgKGVsZW1lbnRzKSB7XG5cbiAgY29uc3QgeyBjbGFzc2VzLCBhdHRyaWJ1dGVzLCB0YWcgfSA9IGdldENvbW1vblByb3BlcnRpZXMoZWxlbWVudHMpXG5cbiAgY29uc3Qgc2VsZWN0b3JQYXRoID0gW11cblxuICBpZiAodGFnKSB7XG4gICAgc2VsZWN0b3JQYXRoLnB1c2godGFnKVxuICB9XG5cbiAgaWYgKGNsYXNzZXMpIHtcbiAgICBjb25zdCBjbGFzc1NlbGVjdG9yID0gY2xhc3Nlcy5tYXAoKG5hbWUpID0+IGAuJHtuYW1lfWApLmpvaW4oJycpXG4gICAgc2VsZWN0b3JQYXRoLnB1c2goY2xhc3NTZWxlY3RvcilcbiAgfVxuXG4gIGlmIChhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgYXR0cmlidXRlU2VsZWN0b3IgPSBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5yZWR1Y2UoKHBhcnRzLCBuYW1lKSA9PiB7XG4gICAgICBwYXJ0cy5wdXNoKGBbJHtuYW1lfT1cIiR7YXR0cmlidXRlc1tuYW1lXX1cIl1gKVxuICAgICAgcmV0dXJuIHBhcnRzXG4gICAgfSwgW10pLmpvaW4oJycpXG4gICAgc2VsZWN0b3JQYXRoLnB1c2goYXR0cmlidXRlU2VsZWN0b3IpXG4gIH1cblxuICBpZiAoc2VsZWN0b3JQYXRoLmxlbmd0aCkge1xuICAgIC8vIFRPRE86IGNoZWNrIGZvciBwYXJlbnQtY2hpbGQgcmVsYXRpb25cbiAgfVxuXG4gIHJldHVybiBbXG4gICAgc2VsZWN0b3JQYXRoLmpvaW4oJycpXG4gIF1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
//# sourceMappingURL=data:application/json;base64,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QixVQUZvQjtBQUFBLE1BRVIsR0FGUSx3QkFFUixHQUZROzs7QUFJckMsTUFBTSxlQUFlLEVBQXJCOztBQUVBLE1BQUksR0FBSixFQUFTO0FBQ1AsaUJBQWEsSUFBYixDQUFrQixHQUFsQjtBQUNEOztBQUVELE1BQUksT0FBSixFQUFhO0FBQ1gsUUFBTSxnQkFBZ0IsUUFBUSxHQUFSLENBQVksVUFBQyxJQUFEO0FBQUEsbUJBQWMsSUFBZDtBQUFBLEtBQVosRUFBa0MsSUFBbEMsQ0FBdUMsRUFBdkMsQ0FBdEI7QUFDQSxpQkFBYSxJQUFiLENBQWtCLGFBQWxCO0FBQ0Q7O0FBRUQsTUFBSSxVQUFKLEVBQWdCO0FBQ2QsUUFBTSxvQkFBb0IsT0FBTyxJQUFQLENBQVksVUFBWixFQUF3QixNQUF4QixDQUErQixVQUFDLEtBQUQsRUFBUSxJQUFSLEVBQWlCO0FBQ3hFLFlBQU0sSUFBTixPQUFlLElBQWYsVUFBd0IsV0FBVyxJQUFYLENBQXhCO0FBQ0EsYUFBTyxLQUFQO0FBQ0QsS0FIeUIsRUFHdkIsRUFIdUIsRUFHbkIsSUFIbUIsQ0FHZCxFQUhjLENBQTFCO0FBSUEsaUJBQWEsSUFBYixDQUFrQixpQkFBbEI7QUFDRDs7QUFFRCxNQUFJLGFBQWEsTUFBakIsRUFBeUI7O0FBRXhCOztBQUVELFNBQU8sQ0FDTCxhQUFhLElBQWIsQ0FBa0IsRUFBbEIsQ0FESyxDQUFQO0FBR0QiLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAjIFNlbGVjdFxuICpcbiAqIENvbnN0cnVjdCBhIHVuaXF1ZSBDU1MgcXVlcnlzZWxlY3RvciB0byBhY2Nlc3MgdGhlIHNlbGVjdGVkIERPTSBlbGVtZW50KHMpLlxuICogQXBwbGllcyBkaWZmZXJlbnQgbWF0Y2hpbmcgYW5kIG9wdGltaXphdGlvbiBzdHJhdGVnaWVzIGZvciBlZmZpY2llbmN5LlxuICovXG5cbmltcG9ydCBhZGFwdCBmcm9tICcuL2FkYXB0J1xuaW1wb3J0IG1hdGNoIGZyb20gJy4vbWF0Y2gnXG5pbXBvcnQgb3B0aW1pemUgZnJvbSAnLi9vcHRpbWl6ZSdcbmltcG9ydCB7IGNvbnZlcnROb2RlTGlzdCB9IGZyb20gJy4vdXRpbGl0aWVzJ1xuaW1wb3J0IHsgZ2V0Q29tbW9uQW5jZXN0b3IsIGdldENvbW1vblByb3BlcnRpZXMgfSBmcm9tICcuL2NvbW1vbidcblxuLyoqXG4gKiBDaG9vc2UgYWN0aW9uIGRlcGVuZGluZyBvbiB0aGUgaW5wdXQgKHNpbmdsZS9tdWx0aSlcbiAqXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudHxBcnJheS48SFRNTEVsZW1lbnQ+fSBpbnB1dCAgIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFF1ZXJ5U2VsZWN0b3IgKGlucHV0LCBvcHRpb25zID0ge30pIHtcbiAgaWYgKCFpbnB1dC5sZW5ndGgpIHtcbiAgICByZXR1cm4gZ2V0U2luZ2xlU2VsZWN0b3IoaW5wdXQsIG9wdGlvbnMpXG4gIH1cbiAgcmV0dXJuIGdldE11bHRpU2VsZWN0b3IoaW5wdXQsIG9wdGlvbnMpXG59XG5cbi8qKlxuICogR2V0IGEgc2VsZWN0b3IgZm9yIHRoZSBwcm92aWRlZCBlbGVtZW50XG4gKlxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsZW1lbnQgLSBbZGVzY3JpcHRpb25dXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgb3B0aW9ucyAtIFtkZXNjcmlwdGlvbl1cbiAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgIC0gW2Rlc2NyaXB0aW9uXVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2luZ2xlU2VsZWN0b3IgKGVsZW1lbnQsIG9wdGlvbnMgPSB7fSkge1xuXG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlID09PSAzKSB7XG4gICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZVxuICB9XG4gIGlmIChlbGVtZW50Lm5vZGVUeXBlICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGlucHV0IC0gb25seSBIVE1MRWxlbWVudHMgb3IgcmVwcmVzZW50YXRpb25zIG9mIHRoZW0gYXJlIHN1cHBvcnRlZCEgKG5vdCBcIiR7dHlwZW9mIGVsZW1lbnR9XCIpYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudCwgb3B0aW9ucylcblxuICBjb25zdCBzZWxlY3RvciA9IG1hdGNoKGVsZW1lbnQsIG9wdGlvbnMpXG4gIGNvbnN0IG9wdGltaXplZCA9IG9wdGltaXplKHNlbGVjdG9yLCBlbGVtZW50LCBvcHRpb25zKVxuXG4gIC8vIGRlYnVnXG4gIC8vIGNvbnNvbGUubG9nKGBcbiAgLy8gICBzZWxlY3RvcjogICR7c2VsZWN0b3J9XG4gIC8vICAgb3B0aW1pemVkOiAke29wdGltaXplZH1cbiAgLy8gYClcblxuICBpZiAoZ2xvYmFsTW9kaWZpZWQpIHtcbiAgICBkZWxldGUgZ2xvYmFsLmRvY3VtZW50XG4gIH1cblxuICByZXR1cm4gb3B0aW1pemVkXG59XG5cbi8qKlxuICogR2V0IGEgc2VsZWN0b3IgdG8gbWF0Y2ggbXVsdGlwbGUgZGVzY2VuZGFudHMgZnJvbSBhbiBhbmNlc3RvclxuICpcbiAqIEBwYXJhbSAge0FycmF5LjxIVE1MRWxlbWVudD59IGVsZW1lbnRzIC0gW2Rlc2NyaXB0aW9uXVxuICogQHBhcmFtICB7T2JqZWN0fSAgICAgICAgICAgICAgb3B0aW9ucyAgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAtIFtkZXNjcmlwdGlvbl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE11bHRpU2VsZWN0b3IgKGVsZW1lbnRzLCBvcHRpb25zID0ge30pIHtcblxuICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbWVudHMpKSB7XG4gICAgZWxlbWVudHMgPSBjb252ZXJ0Tm9kZUxpc3QoZWxlbWVudHMpXG4gIH1cblxuICBpZiAoZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQgLSBvbmx5IGFuIEFycmF5IG9mIEhUTUxFbGVtZW50cyBvciByZXByZXNlbnRhdGlvbnMgb2YgdGhlbSBpcyBzdXBwb3J0ZWQhYClcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbE1vZGlmaWVkID0gYWRhcHQoZWxlbWVudHNbMF0sIG9wdGlvbnMpXG5cbiAgY29uc3QgYW5jZXN0b3IgPSBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50cywgb3B0aW9ucylcbiAgY29uc3QgYW5jZXN0b3JTZWxlY3RvciA9IGdldFNpbmdsZVNlbGVjdG9yKGFuY2VzdG9yLCBvcHRpb25zKVxuXG4gIC8vIFRPRE86IGNvbnNpZGVyIHVzYWdlIG9mIG11bHRpcGxlIHNlbGVjdG9ycyArIHBhcmVudC1jaGlsZCByZWxhdGlvbiArIGNoZWNrIGZvciBwYXJ0IHJlZHVuZGFuY3lcbiAgY29uc3QgY29tbW9uU2VsZWN0b3JzID0gZ2V0Q29tbW9uU2VsZWN0b3JzKGVsZW1lbnRzKVxuICBjb25zdCBkZXNjZW5kYW50U2VsZWN0b3IgPSBjb21tb25TZWxlY3RvcnNbMF1cblxuICBjb25zdCBzZWxlY3RvciA9IG9wdGltaXplKGAke2FuY2VzdG9yU2VsZWN0b3J9ICR7ZGVzY2VuZGFudFNlbGVjdG9yfWAsIGVsZW1lbnRzLCBvcHRpb25zKVxuICBjb25zdCBzZWxlY3Rvck1hdGNoZXMgPSBjb252ZXJ0Tm9kZUxpc3QoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3RvcikpXG5cbiAgaWYgKCFlbGVtZW50cy5ldmVyeSgoZWxlbWVudCkgPT4gc2VsZWN0b3JNYXRjaGVzLnNvbWUoKGVudHJ5KSA9PiBlbnRyeSA9PT0gZWxlbWVudCkgKSkge1xuICAgIC8vIFRPRE86IGNsdXN0ZXIgbWF0Y2hlcyB0byBzcGxpdCBpbnRvIHNpbWlsYXIgZ3JvdXBzIGZvciBzdWIgc2VsZWN0aW9uc1xuICAgIHJldHVybiBjb25zb2xlLndhcm4oYFxuICAgICAgVGhlIHNlbGVjdGVkIGVsZW1lbnRzIGNhblxcJ3QgYmUgZWZmaWNpZW50bHkgbWFwcGVkLlxuICAgICAgSXRzIHByb2JhYmx5IGJlc3QgdG8gdXNlIG11bHRpcGxlIHNpbmdsZSBzZWxlY3RvcnMgaW5zdGVhZCFcbiAgICBgLCBlbGVtZW50cylcbiAgfVxuXG4gIGlmIChnbG9iYWxNb2RpZmllZCkge1xuICAgIGRlbGV0ZSBnbG9iYWwuZG9jdW1lbnRcbiAgfVxuXG4gIHJldHVybiBzZWxlY3RvclxufVxuXG4vKipcbiAqIEdldCBzZWxlY3RvcnMgdG8gZGVzY3JpYmUgYSBzZXQgb2YgZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0gIHtBcnJheS48SFRNTEVsZW1lbnRzPn0gZWxlbWVudHMgLSBbZGVzY3JpcHRpb25dXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgICAgICAgICAgICAgICAgLSBbZGVzY3JpcHRpb25dXG4gKi9cbmZ1bmN0aW9uIGdldENvbW1vblNlbGVjdG9ycyAoZWxlbWVudHMpIHtcblxuICBjb25zdCB7IGNsYXNzZXMsIGF0dHJpYnV0ZXMsIHRhZyB9ID0gZ2V0Q29tbW9uUHJvcGVydGllcyhlbGVtZW50cylcblxuICBjb25zdCBzZWxlY3RvclBhdGggPSBbXVxuXG4gIGlmICh0YWcpIHtcbiAgICBzZWxlY3RvclBhdGgucHVzaCh0YWcpXG4gIH1cblxuICBpZiAoY2xhc3Nlcykge1xuICAgIGNvbnN0IGNsYXNzU2VsZWN0b3IgPSBjbGFzc2VzLm1hcCgobmFtZSkgPT4gYC4ke25hbWV9YCkuam9pbignJylcbiAgICBzZWxlY3RvclBhdGgucHVzaChjbGFzc1NlbGVjdG9yKVxuICB9XG5cbiAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVTZWxlY3RvciA9IE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLnJlZHVjZSgocGFydHMsIG5hbWUpID0+IHtcbiAgICAgIHBhcnRzLnB1c2goYFske25hbWV9PVwiJHthdHRyaWJ1dGVzW25hbWVdfVwiXWApXG4gICAgICByZXR1cm4gcGFydHNcbiAgICB9LCBbXSkuam9pbignJylcbiAgICBzZWxlY3RvclBhdGgucHVzaChhdHRyaWJ1dGVTZWxlY3RvcilcbiAgfVxuXG4gIGlmIChzZWxlY3RvclBhdGgubGVuZ3RoKSB7XG4gICAgLy8gVE9ETzogY2hlY2sgZm9yIHBhcmVudC1jaGlsZCByZWxhdGlvblxuICB9XG5cbiAgcmV0dXJuIFtcbiAgICBzZWxlY3RvclBhdGguam9pbignJylcbiAgXVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
{
"name": "optimal-select",
"description": "Get efficient & robust CSS selectors for HTML elements",
"version": "3.4.1",
"version": "3.4.2",
"author": "Stefan Dühring | Autarc <autarc@gmail.com>",

@@ -6,0 +6,0 @@ "bugs": {

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc