New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

hybrids

Package Overview
Dependencies
Maintainers
2
Versions
149
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

hybrids - npm Package Compare versions

Comparing version 4.0.1 to 4.0.2

9

CHANGELOG.md

@@ -5,2 +5,11 @@ # Changelog

### [4.0.2](https://github.com/hybridsjs/hybrids/compare/v4.0.1...v4.0.2) (2019-06-05)
### Bug Fixes
* **html:** nested custom elements in template break indexing parts ([4c2ee3f](https://github.com/hybridsjs/hybrids/commit/4c2ee3f))
### [4.0.1](https://github.com/hybridsjs/hybrids/compare/v4.0.0...v4.0.1) (2019-06-04)

@@ -7,0 +16,0 @@

2

dist/hybrids.js

@@ -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.hybrids=t():e.hybrids=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var r={};function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(r),n.d(r,"set",function(){return Ne}),n.d(r,"resolve",function(){return Oe});var c=new Map;function i(e){var t=c.get(e);return void 0===t&&(t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),c.set(e,t)),t}function u(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.dispatchEvent(new CustomEvent(t,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){o(e,t,n[t])})}return e}({bubbles:!1},n)))}function a(e,t){var n=window.ShadyCSS;return n&&!n.nativeShadow?e(n):t}function f(e){var t=String(e.tagName).toLowerCase();return"<".concat(t,">")}var l="ActiveXObject"in window;Promise.resolve();function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var d=function(e){return e},p=function(e){if("object"!==s(e))throw TypeError("Assigned value must be an object: ".concat("undefined"==typeof v?"undefined":s(v)));return e&&Object.freeze(e)};function y(e,t){var n=s(e),r=d;switch(n){case"string":r=String;break;case"number":r=Number;break;case"boolean":r=Boolean;break;case"function":e=(r=e)();break;case"object":e&&Object.freeze(e),r=p}return{get:function(t){return arguments.length>1&&void 0!==arguments[1]?arguments[1]:e},set:function(e,t,n){return r(t,n)},connect:"object"!==n&&"undefined"!==n?function(n,r,o){if(n[r]===e){var c=i(r);if(n.hasAttribute(c)){var u=n.getAttribute(c);n[r]=""===u||u}}return t&&t(n,r,o)}:t}}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("function"!=typeof e)throw TypeError("The first argument must be a function: ".concat(h(e)));var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){b(e,t,n[t])})}return e}({shadowRoot:!0},t),r={mode:"open"};return"object"===h(n.shadowRoot)&&Object.assign(r,n.shadowRoot),{get:function(t){var r=e(t);return function(){r(t,n.shadowRoot?t.shadowRoot:t)}},connect:function(e){n.shadowRoot&&!e.shadowRoot&&e.attachShadow(r)},observe:function(e,t){t()}}}var g=new WeakMap;function w(e){var t=g.get(e);return t||(t=new Set,g.set(e,t)),t}var S=new Set,E=function(e){return e()};function N(){try{S.forEach(function(e){try{w(e).forEach(E),S.delete(e)}catch(t){throw S.delete(e),t}})}catch(e){throw S.size&&N(),e}}function x(e){S.size||requestAnimationFrame(N),S.add(e)}var O=new WeakMap;function j(e,t){var n=O.get(e);n||(n=new Map,O.set(e,n));var r=n.get(t);return r||(r={target:e,key:t,value:void 0,contexts:void 0,deps:void 0,state:1,checksum:0,observed:!1},n.set(t,r)),r}function k(e){var t=e.state;return e.deps&&e.deps.forEach(function(e){e.target[e.key],t+=e.state}),t}function T(e){e.observed&&x(e),e.contexts&&e.contexts.forEach(T)}var A=null;function M(e,t,n){var r=j(e,t);return r.observed=!0,function(e,t){var n=w(e);return n.add(t),x(e),function(){return n.delete(t)}}(r,n)}function C(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function P(e,t){return!t||"object"!==D(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _(e){var t="function"==typeof Map?new Map:void 0;return(_=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return R(e,arguments,L(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),W(r,e)})(e)}function R(e,t,n){return(R=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&W(o,n.prototype),o}).apply(null,arguments)}function W(e,t){return(W=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function L(e){return(L=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function D(e){return(D="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var B=function(e,t){return t};function z(e,t){e.hybrids=t,e.callbacks=[],Object.keys(t).forEach(function(n){var r,o=t[n],c=D(o);r="function"===c?"render"===n?m(o):{get:o}:"object"!==c||null===o||Array.isArray(o)?y(o):{get:o.get||B,set:o.set||!o.get&&B||void 0,connect:o.connect,observe:o.observe},Object.defineProperty(e.prototype,n,{get:function(){return function(e,t,n){var r=j(e,t);if(A===r)throw A=null,Error("Circular '".concat(t,"' get invocation in '").concat(f(e),"'"));A&&(A.deps=A.deps||new Set,A.deps.add(r)),A&&(A.observed||A.contexts&&A.contexts.size)&&(r.contexts=r.contexts||new Set,r.contexts.add(A));var o=A;if(A=r,r.checksum&&r.checksum===k(r))return A=o,r.value;r.deps&&r.deps.size&&(r.deps.forEach(function(e){e.contexts&&e.contexts.delete(r)}),r.deps=void 0);try{var c=n(e,r.value);c!==r.value&&(r.state+=1,r.value=c,T(r)),r.checksum=k(r),A=o}catch(e){throw A=null,e}return r.value}(this,n,r.get)},set:r.set&&function(e){!function(e,t,n,r){if(A)throw A=null,Error("Try to set '".concat(t,"' of '").concat(f(e),"' in get call"));var o=j(e,t),c=n(e,r,o.value);c!==o.value&&(o.state+=1,o.value=c,T(o))}(this,n,r.set,e)},enumerable:!0,configurable:!1}),r.connect&&e.callbacks.push(function(e){return r.connect(e,n,function(){!function(e,t,n){if(A)throw A=null,Error("Try to invalidate '".concat(t,"' in '").concat(f(e),"' get call"));var r=j(e,t);r.checksum=0,T(r),n&&(r.value=void 0)}(e,n)})}),r.observe&&e.callbacks.push(function(e){var t;return M(e,n,function(){var o=e[n];o!==t&&(r.observe(e,o,t),t=o)})})})}var F=new WeakMap;function H(e,t){var n=D(t);if("object"!==n&&"function"!==n)throw TypeError("Second argument must be an object or a function: ".concat(n));var r=window.customElements.get(e);if("function"===n)return r!==t?window.customElements.define(e,t):r;if(r){if(r.hybrids===t)return r;throw Error("Element '".concat(e,"' already defined"))}var o=function(t){function n(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),P(this,L(n).apply(this,arguments))}var r,o,c;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&W(e,t)}(n,_(HTMLElement)),r=n,c=[{key:"name",get:function(){return e}}],(o=[{key:"connectedCallback",value:function(){for(var e=this.constructor.callbacks,t=[],n=0;n<e.length;n+=1){var r=e[n](this);r&&t.push(r)}F.set(this,t)}},{key:"disconnectedCallback",value:function(){for(var e=F.get(this),t=0;t<e.length;t+=1)e[t]()}}])&&C(r.prototype,o),c&&C(r,c),n}();return z(o,t),customElements.define(e,o),o}function X(e){return Object.keys(e).reduce(function(t,n){var r=i(n.replace(/((?!([A-Z]{2}|^))[A-Z])/g,"-$1"));return t[n]=H(r,e[n]),t},{})}function $(){return"object"===D(arguments.length<=0?void 0:arguments[0])?X(arguments.length<=0?void 0:arguments[0]):H.apply(void 0,arguments)}function q(e){var t="function"==typeof e?e:function(t){return t===e};return{get:function(e){return function(e,t){for(var n=e.parentElement||e.parentNode.host;n;){var r=n.constructor.hybrids;if(r&&t(r))return n;n=n.parentElement||n.parentNode&&n.parentNode.host}return n||null}(e,t)},connect:function(e,t,n){return!!e[t]&&n}}}function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{deep:!1,nested:!1},n="function"==typeof e?e:function(t){return t===e};return{get:function(e){return function e(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return Array.from(t.children).forEach(function(t){var c=t.constructor.hybrids;c&&n(c)?(o.push(t),r.deep&&r.nested&&e(t,n,r,o)):r.deep&&e(t,n,r,o)}),o}(e,n,t)},connect:function(e,n,r){var o=new MutationObserver(r);return o.observe(e,{childList:!0,subtree:!!t.deep}),function(){o.disconnect()}}}}var I=new WeakMap,G={get:function(e,t){return I.has(e)?I.get(e):(void 0!==t&&I.set(e,t),t)},set:function(e,t){return I.set(e,t),t}};function U(e){for(var t;e&&(t=G.get(e))&&t.endNode;)e=t.endNode;return e}function V(e){var t=G.get(e),n=t.startNode;if(n)for(var r=n,o=U(t.endNode).nextSibling;r;){var c=r.nextSibling;r.parentNode.removeChild(r),r=c!==o&&c}}var J=new WeakMap;function K(e,t){var n=G.get(e),r=n.startNode,o=U(n.endNode);t.parentNode.insertBefore(e,t.nextSibling);for(var c=e,i=r;i;){var u=i.nextSibling;c.parentNode.insertBefore(i,c.nextSibling),c=i,i=u!==o.nextSibling&&u}}function Q(e){return(Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Y(e,t,n){var r=Array.isArray(n)?"array":Q(n),o=G.get(t,{});switch(o.type!==r&&(V(t),"array"===r&&J.delete(t),o=G.set(t,{type:r}),""!==t.textContent&&(t.textContent="")),r){case"function":n(e,t);break;case"array":!function(e,t,n){var r=J.get(t),o=n.map(function(e,t){return{id:Object.prototype.hasOwnProperty.call(e,"id")?e.id:t,value:e,placeholder:null,available:!0}});if(J.set(t,o),r){var c=new Set;o.forEach(function(e){return c.add(e.id)}),r=r.filter(function(e){return!!c.has(e.id)||(V(e.placeholder),e.placeholder.parentNode.removeChild(e.placeholder),!1)})}for(var i=t,u=n.length-1,a=G.get(t),f=0;f<o.length;f+=1){var l=o[f],s=void 0;if(r)for(var d=0;d<r.length;d+=1)if(r[d].available&&r[d].id===l.id){s=r[d];break}var p=void 0;s?(s.available=!1,(p=s.placeholder).previousSibling!==i&&K(p,i),s.value!==l.value&&Y(e,p,l.value)):(p=document.createTextNode(""),i.parentNode.insertBefore(p,i.nextSibling),Y(e,p,l.value)),i=U(G.get(p).endNode||p),0===f&&(a.startNode=p),f===u&&(a.endNode=i),l.placeholder=p}r&&r.forEach(function(e){e.available&&(V(e.placeholder),e.placeholder.parentNode.removeChild(e.placeholder))})}(e,t,n);break;default:t.textContent="number"===r||n?n:""}}function ee(e){return(ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var te=new WeakMap;function ne(e){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var re=new WeakMap;function oe(e,t,n){var r=re.get(t)||new Set,o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;return Array.isArray(e)?e.forEach(function(e){return t.add(e)}):null!==e&&"object"===ne(e)?Object.keys(e).forEach(function(n){return e[n]&&t.add(n)}):t.add(e),t}(n);re.set(t,o),o.forEach(function(e){t.classList.add(e),r.delete(e)}),r.forEach(function(e){t.classList.remove(e)})}function ce(e){return(ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ie=new WeakMap;function ue(e,t,n){if(null===n||"object"!==ce(n))throw TypeError("Style value must be an object in ".concat(f(t),":"),n);var r=ie.get(t)||new Map,o=Object.keys(n).reduce(function(e,o){var c=i(o),u=n[o];return u||0===u?t.style.setProperty(c,u):t.style.removeProperty(c),e.set(c,u),r.delete(c),e},new Map);r.forEach(function(e,n){t.style[n]=""}),ie.set(t,o)}function ae(e,t,n){if("on"===t.substr(0,2))return function(e){return function(t,n,r,o){if(o&&n.removeEventListener(e,te.get(o),void 0!==o.options&&o.options),r){if("function"!=typeof r)throw Error("Event listener must be a function: ".concat(ee(r)));te.set(r,r.bind(null,t)),n.addEventListener(e,te.get(r),void 0!==r.options&&r.options)}}}(t.substr(2));switch(e){case"class":return oe;case"style":return ue;default:return function(r,o,c){if(n||o instanceof SVGElement||!(t in o))if(!1===c||null==c)o.removeAttribute(e);else{var i=!0===c?"":String(c);o.setAttribute(e,i)}else o[t]!==c&&(o[t]=c)}}}function fe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,c=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,c=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw c}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function le(e){return(le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var se=Date.now(),de=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return"{{h-".concat(se,"-").concat(e,"}}")},pe=de("(\\d+)"),ye=new RegExp("^".concat(pe,"$")),ve=new RegExp(pe,"g"),be="--".concat(se,"--"),he=new RegExp(be,"g"),me=new WeakMap;var ge="object"===le(window.ShadyDOM)&&window.ShadyDOM.inUse?function(e){var t;return{get currentNode(){return t},nextNode:function(){return!!(t=void 0===t?e.childNodes[0]:t.childNodes.length?t.childNodes[0]:t.nextSibling?t.nextSibling:t.parentNode.nextSibling)}}}:function(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null,!1)},we=document.createElement("div");function Se(e,t,n){var r=document.createElement("template"),o=[],c=function(e,t){var n=e.reduce(function(t,n,r){return 0===r?n:e.slice(r).join("").match(/^\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)?"".concat(t,"\x3c!--").concat(de(r-1),"--\x3e").concat(n):t+de(r-1)+n},"");return t&&(n+="<style>\n".concat(t.join("\n/*------*/\n"),"\n</style>")),l?n.replace(/style\s*=\s*(["][^"]+["]|['][^']+[']|[^\s"'<>\/]+)/g,function(e){return"".concat(be).concat(e)}):n}(e,n);if(t&&(c="<svg>".concat(c,"</svg>")),l?r.innerHTML=c:(we.innerHTML="<template>".concat(c,"</template>"),r.content.appendChild(we.children[0].content)),t){var i=r.content.firstChild;r.content.removeChild(i),Array.from(i.childNodes).forEach(function(e){return r.content.appendChild(e)})}!function(e){for(var t,n=document.createNodeIterator(e,NodeFilter.SHOW_COMMENT,null,!1);t=n.nextNode();)ye.test(t.textContent)&&(t.parentNode.insertBefore(document.createTextNode(t.textContent),t),t.parentNode.removeChild(t))}(r.content);for(var u=ge(r.content),f=0,s=function(){var n=u.currentNode;if(n.nodeType===Node.TEXT_NODE){var r=n.textContent;if(!r.match(ye)){var c=r.match(ve);if(c){var i=n;c.reduce(function(e,t){var n=fe(e.pop().split(t),2),r=n[0],o=n[1];return r&&e.push(r),e.push(t),o&&e.push(o),e},[r]).forEach(function(e,t){0===t?i.textContent=e:i=i.parentNode.insertBefore(document.createTextNode(e),i.nextSibling)})}}var a=n.textContent.match(ye);a&&(l||(n.textContent=""),o[a[1]]=[f,Y])}else n.nodeType===Node.ELEMENT_NODE&&Array.from(n.attributes).forEach(function(r){var c=r.value.trim(),i=l?r.name.replace(be,""):r.name,u=c.match(ye);if(u){var a=e[u[1]].replace(/\s*=\s*['"]*$/g,"").split(" ").pop();o[u[1]]=[f,ae(i,a,t)],n.removeAttribute(r.name)}else{var s=c.match(ve);if(s){var d="attr__".concat(i);s.forEach(function(e,t){var n=fe(e.match(ye),2)[1];o[n]=[f,function(n,r,o){var u=G.get(r,{});u[d]=(u[d]||c).replace(e,null==o?"":o),1!==s.length&&t+1!==s.length||(r.setAttribute(i,u[d]),u[d]=void 0)}]}),r.value="",l&&i!==r.name&&(n.removeAttribute(r.name),n.setAttribute(i,""))}}});f+=1};u.nextNode();)s();return function(e,t,n){var c=G.get(t,{type:"function"});if(r!==c.template){c.template&&V(t),c.lastArgs=null;var i=document.importNode(function(e,t){return t?a(function(n){var r=me.get(e);r||(r=new Map,me.set(e,r));var o=r.get(t);if(!o){(o=document.createElement("template")).content.appendChild(e.content.cloneNode(!0)),r.set(t,o);var c=o.content.querySelectorAll("style");Array.from(c).forEach(function(e){for(var t=e.childNodes.length+1,n=0;n<t;n+=1)e.parentNode.insertBefore(document.createTextNode(de()),e)}),n.prepareTemplate(o,t.toLowerCase())}return o},e):e}(r,e.tagName).content,!0),u=ge(i),f=o.slice(0),s=0,d=f.shift(),p=[];for(c.template=r,c.markers=p;u.nextNode();){var y=u.currentNode;for(y.nodeType===Node.TEXT_NODE&&(ye.test(y.textContent)?y.textContent="":l&&(y.textContent=y.textContent.replace(he,"")));d&&d[0]===s;)p.push([y,d[1]]),d=f.shift();s+=1}if(c.startNode=i.childNodes[0],c.endNode=i.childNodes[i.childNodes.length-1],t.nodeType===Node.TEXT_NODE)for(var v=t,b=i.childNodes[0];b;)t.parentNode.insertBefore(b,v.nextSibling),v=b,b=i.childNodes[0];else t.appendChild(i)}for(var h=0;h<c.markers.length;h+=1){var m=fe(c.markers[h],2),g=m[0],w=m[1];c.lastArgs&&c.lastArgs[h]===n[h]||w(e,g,n[h],c.lastArgs?c.lastArgs[h]:void 0)}t.nodeType!==Node.TEXT_NODE&&a(function(t){e.shadowRoot&&(c.lastArgs?t.styleSubtree(e):t.styleElement(e))}),c.lastArgs=n}}var Ee=new Map;function Ne(e,t){if(!e)throw Error("Target property name missing: ".concat(e));if(2===arguments.length)return function(n){n[e]=t};var n=Ee.get(e);return n||(n=function(t,n){var r=n.target;t[e]=r.value},Ee.set(e,n)),n}var xe=new WeakMap;function Oe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;return function(r,o){var c;t&&(c=setTimeout(function(){c=void 0,requestAnimationFrame(function(){t(r,o)})},n)),xe.set(o,e),e.then(function(t){c&&clearTimeout(c),xe.get(o)===e&&(t(r,o),xe.set(o,null))})}}var je=de(),ke=de("svg"),Te=new Map,Ae=new WeakMap,Me={define:function(e){return $(e),this},key:function(e){return this.id=e,this},style:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Ae.set(this,t),this}};function Ce(e,t,n){return Object.assign(function r(o){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,i=Ae.get(r),u=e.join(je);i&&(u+=i.join(je)),n&&(u+=ke);var a=Te.get(u);a||(a=Se(e,n,i),Te.set(u,a)),a(o,c,t)},Me)}function Pe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Ce(e,n)}function _e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Ce(e,n,!0)}Object.assign(Pe,r),Object.assign(_e,r),n.d(t,"define",function(){return $}),n.d(t,"property",function(){return y}),n.d(t,"parent",function(){return q}),n.d(t,"children",function(){return Z}),n.d(t,"render",function(){return m}),n.d(t,"dispatch",function(){return u}),n.d(t,"html",function(){return Pe}),n.d(t,"svg",function(){return _e})}])});
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.hybrids=t():e.hybrids=t()}(window,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t);var r={};function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(r),n.d(r,"set",function(){return Ne}),n.d(r,"resolve",function(){return xe});var c=new Map;function i(e){var t=c.get(e);return void 0===t&&(t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),c.set(e,t)),t}function u(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.dispatchEvent(new CustomEvent(t,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){o(e,t,n[t])})}return e}({bubbles:!1},n)))}function a(e,t){var n=window.ShadyCSS;return n&&!n.nativeShadow?e(n):t}function f(e){var t=String(e.tagName).toLowerCase();return"<".concat(t,">")}var l="ActiveXObject"in window;Promise.resolve();function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var d=function(e){return e},p=function(e){if("object"!==s(e))throw TypeError("Assigned value must be an object: ".concat("undefined"==typeof v?"undefined":s(v)));return e&&Object.freeze(e)};function y(e,t){var n=s(e),r=d;switch(n){case"string":r=String;break;case"number":r=Number;break;case"boolean":r=Boolean;break;case"function":e=(r=e)();break;case"object":e&&Object.freeze(e),r=p}return{get:function(t){return arguments.length>1&&void 0!==arguments[1]?arguments[1]:e},set:function(e,t,n){return r(t,n)},connect:"object"!==n&&"undefined"!==n?function(n,r,o){if(n[r]===e){var c=i(r);if(n.hasAttribute(c)){var u=n.getAttribute(c);n[r]=""===u||u}}return t&&t(n,r,o)}:t}}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("function"!=typeof e)throw TypeError("The first argument must be a function: ".concat(h(e)));var n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){b(e,t,n[t])})}return e}({shadowRoot:!0},t),r={mode:"open"};return"object"===h(n.shadowRoot)&&Object.assign(r,n.shadowRoot),{get:function(t){var r=e(t);return function(){r(t,n.shadowRoot?t.shadowRoot:t)}},connect:function(e){n.shadowRoot&&!e.shadowRoot&&e.attachShadow(r)},observe:function(e,t){t()}}}var g=new WeakMap;function w(e){var t=g.get(e);return t||(t=new Set,g.set(e,t)),t}var S=new Set,E=function(e){return e()};function N(){try{S.forEach(function(e){try{w(e).forEach(E),S.delete(e)}catch(t){throw S.delete(e),t}})}catch(e){throw S.size&&N(),e}}function O(e){S.size||requestAnimationFrame(N),S.add(e)}var x=new WeakMap;function j(e,t){var n=x.get(e);n||(n=new Map,x.set(e,n));var r=n.get(t);return r||(r={target:e,key:t,value:void 0,contexts:void 0,deps:void 0,state:1,checksum:0,observed:!1},n.set(t,r)),r}function T(e){var t=e.state;return e.deps&&e.deps.forEach(function(e){e.target[e.key],t+=e.state}),t}function k(e){e.observed&&O(e),e.contexts&&e.contexts.forEach(k)}var A=null;function M(e,t,n){var r=j(e,t);return r.observed=!0,function(e,t){var n=w(e);return n.add(t),O(e),function(){return n.delete(t)}}(r,n)}function C(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function _(e,t){return!t||"object"!==L(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function P(e){var t="function"==typeof Map?new Map:void 0;return(P=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return R(e,arguments,D(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),W(r,e)})(e)}function R(e,t,n){return(R=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&W(o,n.prototype),o}).apply(null,arguments)}function W(e,t){return(W=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function D(e){return(D=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function L(e){return(L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var B=function(e,t){return t};function z(e,t){e.hybrids=t,e.callbacks=[],Object.keys(t).forEach(function(n){var r,o=t[n],c=L(o);r="function"===c?"render"===n?m(o):{get:o}:"object"!==c||null===o||Array.isArray(o)?y(o):{get:o.get||B,set:o.set||!o.get&&B||void 0,connect:o.connect,observe:o.observe},Object.defineProperty(e.prototype,n,{get:function(){return function(e,t,n){var r=j(e,t);if(A===r)throw A=null,Error("Circular '".concat(t,"' get invocation in '").concat(f(e),"'"));A&&(A.deps=A.deps||new Set,A.deps.add(r)),A&&(A.observed||A.contexts&&A.contexts.size)&&(r.contexts=r.contexts||new Set,r.contexts.add(A));var o=A;if(A=r,r.checksum&&r.checksum===T(r))return A=o,r.value;r.deps&&r.deps.size&&(r.deps.forEach(function(e){e.contexts&&e.contexts.delete(r)}),r.deps=void 0);try{var c=n(e,r.value);c!==r.value&&(r.state+=1,r.value=c,k(r)),r.checksum=T(r),A=o}catch(e){throw A=null,e}return r.value}(this,n,r.get)},set:r.set&&function(e){!function(e,t,n,r){if(A)throw A=null,Error("Try to set '".concat(t,"' of '").concat(f(e),"' in get call"));var o=j(e,t),c=n(e,r,o.value);c!==o.value&&(o.state+=1,o.value=c,k(o))}(this,n,r.set,e)},enumerable:!0,configurable:!1}),r.connect&&e.callbacks.push(function(e){return r.connect(e,n,function(){!function(e,t,n){if(A)throw A=null,Error("Try to invalidate '".concat(t,"' in '").concat(f(e),"' get call"));var r=j(e,t);r.checksum=0,k(r),n&&(r.value=void 0)}(e,n)})}),r.observe&&e.callbacks.push(function(e){var t;return M(e,n,function(){var o=e[n];o!==t&&(r.observe(e,o,t),t=o)})})})}var F=new WeakMap;function X(e,t){var n=L(t);if("object"!==n&&"function"!==n)throw TypeError("Second argument must be an object or a function: ".concat(n));var r=window.customElements.get(e);if("function"===n)return r!==t?window.customElements.define(e,t):r;if(r){if(r.hybrids===t)return r;throw Error("Element '".concat(e,"' already defined"))}var o=function(t){function n(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),_(this,D(n).apply(this,arguments))}var r,o,c;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&W(e,t)}(n,P(HTMLElement)),r=n,c=[{key:"name",get:function(){return e}}],(o=[{key:"connectedCallback",value:function(){for(var e=this.constructor.callbacks,t=[],n=0;n<e.length;n+=1){var r=e[n](this);r&&t.push(r)}F.set(this,t)}},{key:"disconnectedCallback",value:function(){for(var e=F.get(this),t=0;t<e.length;t+=1)e[t]()}}])&&C(r.prototype,o),c&&C(r,c),n}();return z(o,t),customElements.define(e,o),o}function H(e){return Object.keys(e).reduce(function(t,n){var r=i(n.replace(/((?!([A-Z]{2}|^))[A-Z])/g,"-$1"));return t[n]=X(r,e[n]),t},{})}function $(){return"object"===L(arguments.length<=0?void 0:arguments[0])?H(arguments.length<=0?void 0:arguments[0]):X.apply(void 0,arguments)}function q(e){var t="function"==typeof e?e:function(t){return t===e};return{get:function(e){return function(e,t){for(var n=e.parentElement||e.parentNode.host;n;){var r=n.constructor.hybrids;if(r&&t(r))return n;n=n.parentElement||n.parentNode&&n.parentNode.host}return n||null}(e,t)},connect:function(e,t,n){return!!e[t]&&n}}}function Z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{deep:!1,nested:!1},n="function"==typeof e?e:function(t){return t===e};return{get:function(e){return function e(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return Array.from(t.children).forEach(function(t){var c=t.constructor.hybrids;c&&n(c)?(o.push(t),r.deep&&r.nested&&e(t,n,r,o)):r.deep&&e(t,n,r,o)}),o}(e,n,t)},connect:function(e,n,r){var o=new MutationObserver(r);return o.observe(e,{childList:!0,subtree:!!t.deep}),function(){o.disconnect()}}}}var I=new WeakMap,G={get:function(e,t){var n=I.get(e);return n||(t&&I.set(e,t),t)},set:function(e,t){return I.set(e,t),t}};function U(e){for(var t;e&&(t=G.get(e))&&t.endNode;)e=t.endNode;return e}function V(e){if(e.nodeType!==Node.TEXT_NODE)for(var t=e.childNodes[0];t;)e.removeChild(t),t=e.childNodes[0];else{var n=G.get(e);if(n.startNode)for(var r=U(n.endNode),o=n.startNode,c=r.nextSibling;o;){var i=o.nextSibling;o.parentNode.removeChild(o),o=i!==c&&i}}}var J=new WeakMap;function K(e,t){var n=G.get(e),r=n.startNode,o=U(n.endNode);t.parentNode.insertBefore(e,t.nextSibling);for(var c=e,i=r;i;){var u=i.nextSibling;c.parentNode.insertBefore(i,c.nextSibling),c=i,i=u!==o.nextSibling&&u}}function Q(e){return(Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Y(e,t,n){var r=Array.isArray(n)?"array":Q(n),o=G.get(t,{});switch(o.type!==r&&(V(t),"array"===r&&J.delete(t),o=G.set(t,{type:r}),""!==t.textContent&&(t.textContent="")),r){case"function":n(e,t);break;case"array":!function(e,t,n){var r=J.get(t),o=n.map(function(e,t){return{id:Object.prototype.hasOwnProperty.call(e,"id")?e.id:t,value:e,placeholder:null,available:!0}});if(J.set(t,o),r){var c=new Set;o.forEach(function(e){return c.add(e.id)}),r=r.filter(function(e){return!!c.has(e.id)||(V(e.placeholder),e.placeholder.parentNode.removeChild(e.placeholder),!1)})}for(var i=t,u=n.length-1,a=G.get(t),f=0;f<o.length;f+=1){var l=o[f],s=void 0;if(r)for(var d=0;d<r.length;d+=1)if(r[d].available&&r[d].id===l.id){s=r[d];break}var p=void 0;s?(s.available=!1,(p=s.placeholder).previousSibling!==i&&K(p,i),s.value!==l.value&&Y(e,p,l.value)):(p=document.createTextNode(""),i.parentNode.insertBefore(p,i.nextSibling),Y(e,p,l.value)),i=U(G.get(p).endNode||p),0===f&&(a.startNode=p),f===u&&(a.endNode=i),l.placeholder=p}r&&r.forEach(function(e){e.available&&(V(e.placeholder),e.placeholder.parentNode.removeChild(e.placeholder))})}(e,t,n);break;default:t.textContent="number"===r||n?n:""}}function ee(e){return(ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var te=new WeakMap;function ne(e){return(ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var re=new WeakMap;function oe(e,t,n){var r=re.get(t)||new Set,o=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;return Array.isArray(e)?e.forEach(function(e){return t.add(e)}):null!==e&&"object"===ne(e)?Object.keys(e).forEach(function(n){return e[n]&&t.add(n)}):t.add(e),t}(n);re.set(t,o),o.forEach(function(e){t.classList.add(e),r.delete(e)}),r.forEach(function(e){t.classList.remove(e)})}function ce(e){return(ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var ie=new WeakMap;function ue(e,t,n){if(null===n||"object"!==ce(n))throw TypeError("Style value must be an object in ".concat(f(t),":"),n);var r=ie.get(t)||new Map,o=Object.keys(n).reduce(function(e,o){var c=i(o),u=n[o];return u||0===u?t.style.setProperty(c,u):t.style.removeProperty(c),e.set(c,u),r.delete(c),e},new Map);r.forEach(function(e,n){t.style[n]=""}),ie.set(t,o)}function ae(e,t,n){if("on"===t.substr(0,2))return function(e){return function(t,n,r,o){if(o&&n.removeEventListener(e,te.get(o),void 0!==o.options&&o.options),r){if("function"!=typeof r)throw Error("Event listener must be a function: ".concat(ee(r)));te.set(r,r.bind(null,t)),n.addEventListener(e,te.get(r),void 0!==r.options&&r.options)}}}(t.substr(2));switch(e){case"class":return oe;case"style":return ue;default:return function(r,o,c){if(n||o instanceof SVGElement||!(t in o))if(!1===c||null==c)o.removeAttribute(e);else{var i=!0===c?"":String(c);o.setAttribute(e,i)}else o[t]!==c&&(o[t]=c)}}}function fe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,o=!1,c=void 0;try{for(var i,u=e[Symbol.iterator]();!(r=(i=u.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,c=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw c}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function le(e){return(le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var se=Date.now(),de=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return"{{h-".concat(se,"-").concat(e,"}}")},pe=de("(\\d+)"),ye=new RegExp("^".concat(pe,"$")),ve=new RegExp(pe,"g"),be="--".concat(se,"--"),he=new RegExp(be,"g"),me=new WeakMap;var ge="object"===le(window.ShadyDOM)&&window.ShadyDOM.inUse?function(e){var t;return{get currentNode(){return t},nextNode:function(){return!!(t=void 0===t?e.childNodes[0]:t.childNodes.length?t.childNodes[0]:t.nextSibling?t.nextSibling:t.parentNode.nextSibling)}}}:function(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null,!1)},we=document.createElement("div");function Se(e,t,n){var r=document.createElement("template"),o=[],c=function(e,t){var n=e.reduce(function(t,n,r){return 0===r?n:e.slice(r).join("").match(/^\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)?"".concat(t,"\x3c!--").concat(de(r-1),"--\x3e").concat(n):t+de(r-1)+n},"");return t&&(n+="<style>\n".concat(t.join("\n/*------*/\n"),"\n</style>")),l?n.replace(/style\s*=\s*(["][^"]+["]|['][^']+[']|[^\s"'<>\/]+)/g,function(e){return"".concat(be).concat(e)}):n}(e,n);if(t&&(c="<svg>".concat(c,"</svg>")),l?r.innerHTML=c:(we.innerHTML="<template>".concat(c,"</template>"),r.content.appendChild(we.children[0].content)),t){var i=r.content.firstChild;r.content.removeChild(i),Array.from(i.childNodes).forEach(function(e){return r.content.appendChild(e)})}!function(e){for(var t,n=document.createNodeIterator(e,NodeFilter.SHOW_COMMENT,null,!1);t=n.nextNode();)ye.test(t.textContent)&&(t.parentNode.insertBefore(document.createTextNode(t.textContent),t),t.parentNode.removeChild(t))}(r.content);for(var u=ge(r.content),f=0,s=function(){var n=u.currentNode;if(n.nodeType===Node.TEXT_NODE){var r=n.textContent;if(!r.match(ye)){var c=r.match(ve);if(c){var i=n;c.reduce(function(e,t){var n=fe(e.pop().split(t),2),r=n[0],o=n[1];return r&&e.push(r),e.push(t),o&&e.push(o),e},[r]).forEach(function(e,t){0===t?i.textContent=e:i=i.parentNode.insertBefore(document.createTextNode(e),i.nextSibling)})}}var a=n.textContent.match(ye);a&&(l||(n.textContent=""),o[a[1]]=[f,Y])}else n.nodeType===Node.ELEMENT_NODE&&Array.from(n.attributes).forEach(function(r){var c=r.value.trim(),i=l?r.name.replace(be,""):r.name,u=c.match(ye);if(u){var a=e[u[1]].replace(/\s*=\s*['"]*$/g,"").split(" ").pop();o[u[1]]=[f,ae(i,a,t)],n.removeAttribute(r.name)}else{var s=c.match(ve);if(s){var d="attr__".concat(i);s.forEach(function(e,t){var n=fe(e.match(ye),2)[1];o[n]=[f,function(n,r,o){var u=G.get(r,{});u[d]=(u[d]||c).replace(e,null==o?"":o),1!==s.length&&t+1!==s.length||(r.setAttribute(i,u[d]),u[d]=void 0)}]}),r.value="",l&&i!==r.name&&(n.removeAttribute(r.name),n.setAttribute(i,""))}}});f+=1};u.nextNode();)s();return function(e,t,n){var c=G.get(t,{type:"function"});if(r!==c.template){(c.template||t.nodeType===Node.ELEMENT_NODE)&&V(t),c.lastArgs=null;var i=document.importNode(function(e,t){return t?a(function(n){var r=me.get(e);r||(r=new Map,me.set(e,r));var o=r.get(t);if(!o){(o=document.createElement("template")).content.appendChild(e.content.cloneNode(!0)),r.set(t,o);var c=o.content.querySelectorAll("style");Array.from(c).forEach(function(e){for(var t=e.childNodes.length+1,n=0;n<t;n+=1)e.parentNode.insertBefore(document.createTextNode(de()),e)}),n.prepareTemplate(o,t.toLowerCase())}return o},e):e}(r,e.tagName).content,!0),u=ge(i),f=o.slice(0),s=0,d=f.shift(),p=[];for(c.template=r,c.markers=p;u.nextNode();){var y=u.currentNode;for(y.nodeType===Node.TEXT_NODE&&(ye.test(y.textContent)?y.textContent="":l&&(y.textContent=y.textContent.replace(he,"")));d&&d[0]===s;)p.push([y,d[1]]),d=f.shift();s+=1}if(t.nodeType===Node.TEXT_NODE){c.startNode=i.childNodes[0],c.endNode=i.childNodes[i.childNodes.length-1];for(var v=t,b=i.childNodes[0];b;)t.parentNode.insertBefore(b,v.nextSibling),v=b,b=i.childNodes[0]}else t.appendChild(i)}for(var h=0;h<c.markers.length;h+=1){var m=fe(c.markers[h],2),g=m[0],w=m[1];c.lastArgs&&c.lastArgs[h]===n[h]||w(e,g,n[h],c.lastArgs?c.lastArgs[h]:void 0)}t.nodeType!==Node.TEXT_NODE&&a(function(t){e.shadowRoot&&(c.lastArgs?t.styleSubtree(e):t.styleElement(e))}),c.lastArgs=n}}var Ee=new Map;function Ne(e,t){if(!e)throw Error("Target property name missing: ".concat(e));if(2===arguments.length)return function(n){n[e]=t};var n=Ee.get(e);return n||(n=function(t,n){var r=n.target;t[e]=r.value},Ee.set(e,n)),n}var Oe=new WeakMap;function xe(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;return function(r,o){var c;t&&(c=setTimeout(function(){c=void 0,requestAnimationFrame(function(){t(r,o)})},n)),Oe.set(o,e),e.then(function(t){c&&clearTimeout(c),Oe.get(o)===e&&(t(r,o),Oe.set(o,null))})}}var je=de(),Te=de("svg"),ke=new Map,Ae=new WeakMap,Me={define:function(e){return $(e),this},key:function(e){return this.id=e,this},style:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return Ae.set(this,t),this}};function Ce(e,t,n){return Object.assign(function r(o){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,i=Ae.get(r),u=e.join(je);i&&(u+=i.join(je)),n&&(u+=Te);var a=ke.get(u);a||(a=Se(e,n,i),ke.set(u,a)),a(o,c,t)},Me)}function _e(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Ce(e,n)}function Pe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Ce(e,n,!0)}Object.assign(_e,r),Object.assign(Pe,r),n.d(t,"define",function(){return $}),n.d(t,"property",function(){return y}),n.d(t,"parent",function(){return q}),n.d(t,"children",function(){return Z}),n.d(t,"render",function(){return m}),n.d(t,"dispatch",function(){return u}),n.d(t,"html",function(){return _e}),n.d(t,"svg",function(){return Pe})}])});
//# sourceMappingURL=hybrids.js.map

@@ -275,3 +275,3 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

if (template !== data.template) {
if (data.template) removeTemplate(target);
if (data.template || target.nodeType === Node.ELEMENT_NODE) removeTemplate(target);
data.lastArgs = null;

@@ -311,6 +311,5 @@ var fragment = document.importNode(applyShadyCSS(template, host.tagName).content, true);

data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
if (target.nodeType === Node.TEXT_NODE) {
data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
var previousChild = target;

@@ -354,2 +353,2 @@ var child = fragment.childNodes[0];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9jb3JlLmpzIl0sIm5hbWVzIjpbInN0cmluZ2lmeUVsZW1lbnQiLCJzaGFkeUNTUyIsIklTX0lFIiwiZGF0YU1hcCIsInJlbW92ZVRlbXBsYXRlIiwicmVzb2x2ZVZhbHVlIiwicmVzb2x2ZVByb3BlcnR5IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZSIsIlRJTUVTVEFNUCIsIkRhdGUiLCJub3ciLCJnZXRQbGFjZWhvbGRlciIsImlkIiwiUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQiLCJQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwiLCJSZWdFeHAiLCJQTEFDRUhPTERFUl9SRUdFWFBfQUxMIiwiQVRUUl9QUkVGSVgiLCJBVFRSX1JFR0VYUCIsInByZXBhcmVkVGVtcGxhdGVzIiwiV2Vha01hcCIsImFwcGx5U2hhZHlDU1MiLCJ0ZW1wbGF0ZSIsInRhZ05hbWUiLCJzaGFkeSIsIm1hcCIsImdldCIsIk1hcCIsInNldCIsImNsb25lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGVudCIsImFwcGVuZENoaWxkIiwiY2xvbmVOb2RlIiwic3R5bGVzIiwicXVlcnlTZWxlY3RvckFsbCIsIkFycmF5IiwiZnJvbSIsImZvckVhY2giLCJzdHlsZSIsImNvdW50IiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImkiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiY3JlYXRlVGV4dE5vZGUiLCJwcmVwYXJlVGVtcGxhdGUiLCJ0b0xvd2VyQ2FzZSIsImNyZWF0ZVNpZ25hdHVyZSIsInBhcnRzIiwic2lnbmF0dXJlIiwicmVkdWNlIiwiYWNjIiwicGFydCIsImluZGV4Iiwic2xpY2UiLCJqb2luIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiTm9kZUZpbHRlciIsIlNIT1dfQ09NTUVOVCIsIm5vZGUiLCJuZXh0Tm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlSW50ZXJuYWxXYWxrZXIiLCJjb250ZXh0IiwiY3VycmVudE5vZGUiLCJ1bmRlZmluZWQiLCJuZXh0U2libGluZyIsImNyZWF0ZUV4dGVybmFsV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsImNyZWF0ZVdhbGtlciIsIndpbmRvdyIsIlNoYWR5RE9NIiwiaW5Vc2UiLCJjb250YWluZXIiLCJjb21waWxlVGVtcGxhdGUiLCJyYXdQYXJ0cyIsImlzU1ZHIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJ0ZXh0IiwicmVzdWx0cyIsInBsYWNlaG9sZGVyIiwiYmVmb3JlIiwibmV4dCIsInB1c2giLCJlcXVhbCIsIkVMRU1FTlRfTk9ERSIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidmFsdWUiLCJ0cmltIiwibmFtZSIsInByb3BlcnR5TmFtZSIsInJlbW92ZUF0dHJpYnV0ZSIsInBhcnRpYWxOYW1lIiwiaG9zdCIsInRhcmdldCIsImF0dHJWYWx1ZSIsImRhdGEiLCJzZXRBdHRyaWJ1dGUiLCJ1cGRhdGVUZW1wbGF0ZUluc3RhbmNlIiwiYXJncyIsInR5cGUiLCJsYXN0QXJncyIsImltcG9ydE5vZGUiLCJyZW5kZXJXYWxrZXIiLCJjbG9uZWRQYXJ0cyIsInJlbmRlckluZGV4IiwiY3VycmVudFBhcnQiLCJzaGlmdCIsIm1hcmtlcnMiLCJpbmRleE9mIiwiY3VzdG9tRWxlbWVudHMiLCJFcnJvciIsInN0YXJ0Tm9kZSIsImVuZE5vZGUiLCJwcmV2aW91c0NoaWxkIiwiY2hpbGQiLCJtYXJrZXIiLCJzaGFkb3dSb290Iiwic3R5bGVTdWJ0cmVlIiwic3R5bGVF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QXlCb0UsSUFBSSxDQUFDcEUsS0FBRCxDQUFuRCxFQUE0RDtBQUMxRHFGLFFBQUFBLE1BQU0sQ0FBQ3ZCLElBQUQsRUFBTy9DLEtBQVAsRUFBYXFELElBQUksQ0FBQ3BFLEtBQUQsQ0FBakIsRUFBMEJpRSxJQUFJLENBQUNLLFFBQUwsR0FBZ0JMLElBQUksQ0FBQ0ssUUFBTCxDQUFjdEUsS0FBZCxDQUFoQixHQUF1Q3VCLFNBQWpFLENBQU47QUFDRDtBQUNGOztBQUVELFFBQUl3QyxNQUFNLENBQUNwQixRQUFQLEtBQW9CQyxJQUFJLENBQUNDLFNBQTdCLEVBQXdDO0FBQ3RDdkcsTUFBQUEsUUFBUSxDQUFDLFVBQUMwQixLQUFELEVBQVc7QUFDbEIsWUFBSThGLElBQUksQ0FBQ3dCLFVBQVQsRUFBcUI7QUFDbkIsY0FBSXJCLElBQUksQ0FBQ0ssUUFBVCxFQUFtQjtBQUNqQnRHLFlBQUFBLEtBQUssQ0FBQ3VILFlBQU4sQ0FBbUJ6QixJQUFuQjtBQUNELFdBRkQsTUFFTztBQUNMOUYsWUFBQUEsS0FBSyxDQUFDd0gsWUFBTixDQUFtQjFCLElBQW5CO0FBQ0Q7QUFDRjtBQUNGLE9BUk8sQ0FBUjtBQVNEOztBQUVERyxJQUFBQSxJQUFJLENBQUNLLFFBQUwsR0FBZ0JGLElBQWhCO0FBQ0QsR0FqRkQ7QUFrRkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnlFbGVtZW50LCBzaGFkeUNTUywgSVNfSUUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBkYXRhTWFwLCByZW1vdmVUZW1wbGF0ZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgcmVzb2x2ZVZhbHVlIGZyb20gJy4vcmVzb2x2ZXJzL3ZhbHVlJztcbmltcG9ydCByZXNvbHZlUHJvcGVydHkgZnJvbSAnLi9yZXNvbHZlcnMvcHJvcGVydHknO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudHJ5IHsgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfSBjYXRjaChlKSB7IHZhciBwcm9jZXNzID0geyBlbnY6IHsgTk9ERV9FTlY6ICdwcm9kdWN0aW9uJyB9IH07IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG5jb25zdCBUSU1FU1RBTVAgPSBEYXRlLm5vdygpO1xuXG5leHBvcnQgY29uc3QgZ2V0UGxhY2Vob2xkZXIgPSAoaWQgPSAwKSA9PiBge3toLSR7VElNRVNUQU1QfS0ke2lkfX19YDtcblxuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQgPSBnZXRQbGFjZWhvbGRlcignKFxcXFxkKyknKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCA9IG5ldyBSZWdFeHAoYF4ke1BMQUNFSE9MREVSX1JFR0VYUF9URVhUfSRgKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9BTEwgPSBuZXcgUmVnRXhwKFBMQUNFSE9MREVSX1JFR0VYUF9URVhULCAnZycpO1xuXG5jb25zdCBBVFRSX1BSRUZJWCA9IGAtLSR7VElNRVNUQU1QfS0tYDtcbmNvbnN0IEFUVFJfUkVHRVhQID0gbmV3IFJlZ0V4cChBVFRSX1BSRUZJWCwgJ2cnKTtcblxuY29uc3QgcHJlcGFyZWRUZW1wbGF0ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgdGFnTmFtZSkge1xuICBpZiAoIXRhZ05hbWUpIHJldHVybiB0ZW1wbGF0ZTtcblxuICByZXR1cm4gc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgbGV0IG1hcCA9IHByZXBhcmVkVGVtcGxhdGVzLmdldCh0ZW1wbGF0ZSk7XG4gICAgaWYgKCFtYXApIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHByZXBhcmVkVGVtcGxhdGVzLnNldCh0ZW1wbGF0ZSwgbWFwKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmUgPSBtYXAuZ2V0KHRhZ05hbWUpO1xuXG4gICAgaWYgKCFjbG9uZSkge1xuICAgICAgY2xvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgICAgY2xvbmUuY29udGVudC5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7XG5cbiAgICAgIG1hcC5zZXQodGFnTmFtZSwgY2xvbmUpO1xuXG4gICAgICBjb25zdCBzdHlsZXMgPSBjbG9uZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJyk7XG5cbiAgICAgIEFycmF5LmZyb20oc3R5bGVzKS5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IHN0eWxlLmNoaWxkTm9kZXMubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgc3R5bGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2V0UGxhY2Vob2xkZXIoKSksIHN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNoYWR5LnByZXBhcmVUZW1wbGF0ZShjbG9uZSwgdGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lO1xuICB9LCB0ZW1wbGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShwYXJ0cywgc3R5bGVzKSB7XG4gIGxldCBzaWduYXR1cmUgPSBwYXJ0cy5yZWR1Y2UoKGFjYywgcGFydCwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBwYXJ0O1xuICAgIH1cblxuICAgIGlmIChwYXJ0cy5zbGljZShpbmRleCkuam9pbignJykubWF0Y2goL15cXHMqPFxcL1xccyoodGFibGV8dHJ8dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3JvdXApPi8pKSB7XG4gICAgICByZXR1cm4gYCR7YWNjfTwhLS0ke2dldFBsYWNlaG9sZGVyKGluZGV4IC0gMSl9LS0+JHtwYXJ0fWA7XG4gICAgfVxuICAgIHJldHVybiBhY2MgKyBnZXRQbGFjZWhvbGRlcihpbmRleCAtIDEpICsgcGFydDtcbiAgfSwgJycpO1xuXG4gIGlmIChzdHlsZXMpIHtcbiAgICBzaWduYXR1cmUgKz0gYDxzdHlsZT5cXG4ke3N0eWxlcy5qb2luKCdcXG4vKi0tLS0tLSovXFxuJyl9XFxuPC9zdHlsZT5gO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChJU19JRSkge1xuICAgIHJldHVybiBzaWduYXR1cmUucmVwbGFjZShcbiAgICAgIC9zdHlsZVxccyo9XFxzKihbXCJdW15cIl0rW1wiXXxbJ11bXiddK1snXXxbXlxcc1wiJzw+L10rKS9nLFxuICAgICAgbWF0Y2ggPT4gYCR7QVRUUl9QUkVGSVh9JHttYXRjaH1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxzKj1cXHMqWydcIl0qJC9nLCAnJykuc3BsaXQoJyAnKS5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvbW1lbnRzKGZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGZyYWdtZW50LCBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwgbnVsbCwgZmFsc2UpO1xuICBsZXQgbm9kZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkge1xuICAgIGlmIChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwudGVzdChub2RlLnRleHRDb250ZW50KSkge1xuICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShub2RlLnRleHRDb250ZW50KSwgbm9kZSk7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIGxldCBub2RlO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0IGN1cnJlbnROb2RlKCkgeyByZXR1cm4gbm9kZTsgfSxcbiAgICBuZXh0Tm9kZSgpIHtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZSA9IGNvbnRleHQuY2hpbGROb2Rlc1swXTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBub2RlID0gbm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZS5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbm9kZTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFeHRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKFxuICAgIGNvbnRleHQsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhULFxuICAgIG51bGwsXG4gICAgZmFsc2UsXG4gICk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBjcmVhdGVXYWxrZXIgPSB0eXBlb2Ygd2luZG93LlNoYWR5RE9NID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuU2hhZHlET00uaW5Vc2UgPyBjcmVhdGVJbnRlcm5hbFdhbGtlciA6IGNyZWF0ZUV4dGVybmFsV2Fsa2VyO1xuXG5jb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlVGVtcGxhdGUocmF3UGFydHMsIGlzU1ZHLCBzdHlsZXMpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuXG4gIGxldCBzaWduYXR1cmUgPSBjcmVhdGVTaWduYXR1cmUocmF3UGFydHMsIHN0eWxlcyk7XG4gIGlmIChpc1NWRykgc2lnbmF0dXJlID0gYDxzdmc+JHtzaWduYXR1cmV9PC9zdmc+YDtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKElTX0lFKSB7XG4gICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gc2lnbmF0dXJlO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPHRlbXBsYXRlPiR7c2lnbmF0dXJlfTwvdGVtcGxhdGU+YDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lci5jaGlsZHJlblswXS5jb250ZW50KTtcbiAgfVxuXG4gIGlmIChpc1NWRykge1xuICAgIGNvbnN0IHN2Z1Jvb3QgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgdGVtcGxhdGUuY29udGVudC5yZW1vdmVDaGlsZChzdmdSb290KTtcbiAgICBBcnJheS5mcm9tKHN2Z1Jvb3QuY2hpbGROb2RlcykuZm9yRWFjaChub2RlID0+IHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobm9kZSkpO1xuICB9XG5cbiAgcmVwbGFjZUNvbW1lbnRzKHRlbXBsYXRlLmNvbnRlbnQpO1xuXG4gIGNvbnN0IGNvbXBpbGVXYWxrZXIgPSBjcmVhdGVXYWxrZXIodGVtcGxhdGUuY29udGVudCk7XG4gIGxldCBjb21waWxlSW5kZXggPSAwO1xuXG4gIHdoaWxlIChjb21waWxlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICBjb25zdCBub2RlID0gY29tcGlsZVdhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAgIGlmICghdGV4dC5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0ZXh0Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9BTEwpO1xuICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgcmVzdWx0c1xuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBwbGFjZWhvbGRlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBbYmVmb3JlLCBuZXh0XSA9IGFjYy5wb3AoKS5zcGxpdChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgIGlmIChiZWZvcmUpIGFjYy5wdXNoKGJlZm9yZSk7XG4gICAgICAgICAgICAgIGFjYy5wdXNoKHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgaWYgKG5leHQpIGFjYy5wdXNoKG5leHQpO1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW3RleHRdKVxuICAgICAgICAgICAgLmZvckVhY2goKHBhcnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLnRleHRDb250ZW50ID0gcGFydDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGVcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydCksIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXF1YWwgPSBub2RlLnRleHRDb250ZW50Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBwYXJ0c1tlcXVhbFsxXV0gPSBbY29tcGlsZUluZGV4LCByZXNvbHZlVmFsdWVdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9uZWx5LWlmXG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgQXJyYXkuZnJvbShub2RlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgY29uc3QgbmFtZSA9IElTX0lFID8gYXR0ci5uYW1lLnJlcGxhY2UoQVRUUl9QUkVGSVgsICcnKSA6IGF0dHIubmFtZTtcbiAgICAgICAgICBjb25zdCBlcXVhbCA9IHZhbHVlLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgaWYgKGVxdWFsKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocmF3UGFydHNbZXF1YWxbMV1dKTtcbiAgICAgICAgICAgIHBhcnRzW2VxdWFsWzFdXSA9IFtjb21waWxlSW5kZXgsIHJlc29sdmVQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKV07XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0FMTCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0aWFsTmFtZSA9IGBhdHRyX18ke25hbWV9YDtcblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHBsYWNlaG9sZGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIGlkXSA9IHBsYWNlaG9sZGVyLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgICAgICAgcGFydHNbaWRdID0gW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7fSk7XG4gICAgICAgICAgICAgICAgICBkYXRhW3BhcnRpYWxOYW1lXSA9IChkYXRhW3BhcnRpYWxOYW1lXSB8fCB2YWx1ZSkucmVwbGFjZShwbGFjZWhvbGRlciwgYXR0clZhbHVlID09IG51bGwgPyAnJyA6IGF0dHJWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICgocmVzdWx0cy5sZW5ndGggPT09IDEpIHx8IChpbmRleCArIDEgPT09IHJlc3VsdHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIGRhdGFbcGFydGlhbE5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJ0aWFsTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGF0dHIudmFsdWUgPSAnJztcblxuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICBpZiAoSVNfSUUgJiYgbmFtZSAhPT0gYXR0ci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVRlbXBsYXRlSW5zdGFuY2UoaG9zdCwgdGFyZ2V0LCBhcmdzKSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCwgeyB0eXBlOiAnZnVuY3Rpb24nIH0pO1xuXG4gICAgaWYgKHRlbXBsYXRlICE9PSBkYXRhLnRlbXBsYXRlKSB7XG4gICAgICBpZiAoZGF0YS50ZW1wbGF0ZSkgcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KTtcbiAgICAgIGRhdGEubGFzdEFyZ3MgPSBudWxsO1xuXG4gICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmltcG9ydE5vZGUoYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgaG9zdC50YWdOYW1lKS5jb250ZW50LCB0cnVlKTtcblxuICAgICAgY29uc3QgcmVuZGVyV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKGZyYWdtZW50KTtcbiAgICAgIGNvbnN0IGNsb25lZFBhcnRzID0gcGFydHMuc2xpY2UoMCk7XG5cbiAgICAgIGxldCByZW5kZXJJbmRleCA9IDA7XG4gICAgICBsZXQgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuXG4gICAgICBjb25zdCBtYXJrZXJzID0gW107XG5cbiAgICAgIGRhdGEudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgIGRhdGEubWFya2VycyA9IG1hcmtlcnM7XG5cbiAgICAgIHdoaWxlIChyZW5kZXJXYWxrZXIubmV4dE5vZGUoKSkge1xuICAgICAgICBjb25zdCBub2RlID0gcmVuZGVyV2Fsa2VyLmN1cnJlbnROb2RlO1xuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgaWYgKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTC50ZXN0KG5vZGUudGV4dENvbnRlbnQpKSB7XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChJU19JRSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShBVFRSX1JFR0VYUCwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgaWYgKG5vZGUudGFnTmFtZS5pbmRleE9mKCctJykgPiAtMSAmJiAhY3VzdG9tRWxlbWVudHMuZ2V0KG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE1pc3NpbmcgJyR7c3RyaW5naWZ5RWxlbWVudChub2RlKX0nIGVsZW1lbnQgZGVmaW5pdGlvbiBpbiAnJHtzdHJpbmdpZnlFbGVtZW50KGhvc3QpfSdgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3VycmVudFBhcnQgJiYgY3VycmVudFBhcnRbMF0gPT09IHJlbmRlckluZGV4KSB7XG4gICAgICAgICAgbWFya2Vycy5wdXNoKFtub2RlLCBjdXJyZW50UGFydFsxXV0pO1xuICAgICAgICAgIGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlckluZGV4ICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGRhdGEuc3RhcnROb2RlID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgIGRhdGEuZW5kTm9kZSA9IGZyYWdtZW50LmNoaWxkTm9kZXNbZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG5cbiAgICAgICAgbGV0IGNoaWxkID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgICAgY2hpbGQgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLm1hcmtlcnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBjb25zdCBbbm9kZSwgbWFya2VyXSA9IGRhdGEubWFya2Vyc1tpbmRleF07XG4gICAgICBpZiAoIWRhdGEubGFzdEFyZ3MgfHwgZGF0YS5sYXN0QXJnc1tpbmRleF0gIT09IGFyZ3NbaW5kZXhdKSB7XG4gICAgICAgIG1hcmtlcihob3N0LCBub2RlLCBhcmdzW2luZGV4XSwgZGF0YS5sYXN0QXJncyA/IGRhdGEubGFzdEFyZ3NbaW5kZXhdIDogdW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgICAgIGlmIChob3N0LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICBpZiAoZGF0YS5sYXN0QXJncykge1xuICAgICAgICAgICAgc2hhZHkuc3R5bGVTdWJ0cmVlKGhvc3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaGFkeS5zdHlsZUVsZW1lbnQoaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkYXRhLmxhc3RBcmdzID0gYXJncztcbiAgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9jb3JlLmpzIl0sIm5hbWVzIjpbInN0cmluZ2lmeUVsZW1lbnQiLCJzaGFkeUNTUyIsIklTX0lFIiwiZGF0YU1hcCIsInJlbW92ZVRlbXBsYXRlIiwicmVzb2x2ZVZhbHVlIiwicmVzb2x2ZVByb3BlcnR5IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZSIsIlRJTUVTVEFNUCIsIkRhdGUiLCJub3ciLCJnZXRQbGFjZWhvbGRlciIsImlkIiwiUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQiLCJQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwiLCJSZWdFeHAiLCJQTEFDRUhPTERFUl9SRUdFWFBfQUxMIiwiQVRUUl9QUkVGSVgiLCJBVFRSX1JFR0VYUCIsInByZXBhcmVkVGVtcGxhdGVzIiwiV2Vha01hcCIsImFwcGx5U2hhZHlDU1MiLCJ0ZW1wbGF0ZSIsInRhZ05hbWUiLCJzaGFkeSIsIm1hcCIsImdldCIsIk1hcCIsInNldCIsImNsb25lIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGVudCIsImFwcGVuZENoaWxkIiwiY2xvbmVOb2RlIiwic3R5bGVzIiwicXVlcnlTZWxlY3RvckFsbCIsIkFycmF5IiwiZnJvbSIsImZvckVhY2giLCJzdHlsZSIsImNvdW50IiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImkiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiY3JlYXRlVGV4dE5vZGUiLCJwcmVwYXJlVGVtcGxhdGUiLCJ0b0xvd2VyQ2FzZSIsImNyZWF0ZVNpZ25hdHVyZSIsInBhcnRzIiwic2lnbmF0dXJlIiwicmVkdWNlIiwiYWNjIiwicGFydCIsImluZGV4Iiwic2xpY2UiLCJqb2luIiwibWF0Y2giLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiTm9kZUZpbHRlciIsIlNIT1dfQ09NTUVOVCIsIm5vZGUiLCJuZXh0Tm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlSW50ZXJuYWxXYWxrZXIiLCJjb250ZXh0IiwiY3VycmVudE5vZGUiLCJ1bmRlZmluZWQiLCJuZXh0U2libGluZyIsImNyZWF0ZUV4dGVybmFsV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsImNyZWF0ZVdhbGtlciIsIndpbmRvdyIsIlNoYWR5RE9NIiwiaW5Vc2UiLCJjb250YWluZXIiLCJjb21waWxlVGVtcGxhdGUiLCJyYXdQYXJ0cyIsImlzU1ZHIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJ0ZXh0IiwicmVzdWx0cyIsInBsYWNlaG9sZGVyIiwiYmVmb3JlIiwibmV4dCIsInB1c2giLCJlcXVhbCIsIkVMRU1FTlRfTk9ERSIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidmFsdWUiLCJ0cmltIiwibmFtZSIsInByb3BlcnR5TmFtZSIsInJlbW92ZUF0dHJpYnV0ZSIsInBhcnRpYWxOYW1lIiwiaG9zdCIsInRhcmdldCIsImF0dHJWYWx1ZSIsImRhdGEiLCJzZXRBdHRyaWJ1dGUiLCJ1cGRhdGVUZW1wbGF0ZUluc3RhbmNlIiwiYXJncyIsInR5cGUiLCJsYXN0QXJncyIsImltcG9ydE5vZGUiLCJyZW5kZXJXYWxrZXIiLCJjbG9uZWRQYXJ0cyIsInJlbmRlckluZGV4IiwiY3VycmVudFBhcnQiLCJzaGlmdCIsIm1hcmtlcnMiLCJpbmRleE9mIiwiY3VzdG9tRWxlbWVudHMiLCJFcnJvciIsInN0YXJ0Tm9kZSIsImVuZE5vZGUiLCJwcmV2aW91c0NoaWxkIiwiY2hpbGQiLCJtYXJrZXIiLCJzaGFkb3dSb290Iiwic3R5bGVTdWJ0cmVlIiwic3R5bGVF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Q0FBQ0ssUUFBTixJQUFrQkwsSUFBSSxDQUFDSyxRQUFMLENBQWN0RSxLQUFkLE1BQXlCb0UsSUFBSSxDQUFDcEUsS0FBRCxDQUFuRCxFQUE0RDtBQUMxRHFGLFFBQUFBLE1BQU0sQ0FBQ3ZCLElBQUQsRUFBTy9DLEtBQVAsRUFBYXFELElBQUksQ0FBQ3BFLEtBQUQsQ0FBakIsRUFBMEJpRSxJQUFJLENBQUNLLFFBQUwsR0FBZ0JMLElBQUksQ0FBQ0ssUUFBTCxDQUFjdEUsS0FBZCxDQUFoQixHQUF1Q3VCLFNBQWpFLENBQU47QUFDRDtBQUNGOztBQUVELFFBQUl3QyxNQUFNLENBQUNwQixRQUFQLEtBQW9CQyxJQUFJLENBQUNDLFNBQTdCLEVBQXdDO0FBQ3RDdkcsTUFBQUEsUUFBUSxDQUFDLFVBQUMwQixLQUFELEVBQVc7QUFDbEIsWUFBSThGLElBQUksQ0FBQ3dCLFVBQVQsRUFBcUI7QUFDbkIsY0FBSXJCLElBQUksQ0FBQ0ssUUFBVCxFQUFtQjtBQUNqQnRHLFlBQUFBLEtBQUssQ0FBQ3VILFlBQU4sQ0FBbUJ6QixJQUFuQjtBQUNELFdBRkQsTUFFTztBQUNMOUYsWUFBQUEsS0FBSyxDQUFDd0gsWUFBTixDQUFtQjFCLElBQW5CO0FBQ0Q7QUFDRjtBQUNGLE9BUk8sQ0FBUjtBQVNEOztBQUVERyxJQUFBQSxJQUFJLENBQUNLLFFBQUwsR0FBZ0JGLElBQWhCO0FBQ0QsR0FqRkQ7QUFrRkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnlFbGVtZW50LCBzaGFkeUNTUywgSVNfSUUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBkYXRhTWFwLCByZW1vdmVUZW1wbGF0ZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgcmVzb2x2ZVZhbHVlIGZyb20gJy4vcmVzb2x2ZXJzL3ZhbHVlJztcbmltcG9ydCByZXNvbHZlUHJvcGVydHkgZnJvbSAnLi9yZXNvbHZlcnMvcHJvcGVydHknO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudHJ5IHsgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfSBjYXRjaChlKSB7IHZhciBwcm9jZXNzID0geyBlbnY6IHsgTk9ERV9FTlY6ICdwcm9kdWN0aW9uJyB9IH07IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG5jb25zdCBUSU1FU1RBTVAgPSBEYXRlLm5vdygpO1xuXG5leHBvcnQgY29uc3QgZ2V0UGxhY2Vob2xkZXIgPSAoaWQgPSAwKSA9PiBge3toLSR7VElNRVNUQU1QfS0ke2lkfX19YDtcblxuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQgPSBnZXRQbGFjZWhvbGRlcignKFxcXFxkKyknKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCA9IG5ldyBSZWdFeHAoYF4ke1BMQUNFSE9MREVSX1JFR0VYUF9URVhUfSRgKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9BTEwgPSBuZXcgUmVnRXhwKFBMQUNFSE9MREVSX1JFR0VYUF9URVhULCAnZycpO1xuXG5jb25zdCBBVFRSX1BSRUZJWCA9IGAtLSR7VElNRVNUQU1QfS0tYDtcbmNvbnN0IEFUVFJfUkVHRVhQID0gbmV3IFJlZ0V4cChBVFRSX1BSRUZJWCwgJ2cnKTtcblxuY29uc3QgcHJlcGFyZWRUZW1wbGF0ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgdGFnTmFtZSkge1xuICBpZiAoIXRhZ05hbWUpIHJldHVybiB0ZW1wbGF0ZTtcblxuICByZXR1cm4gc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgbGV0IG1hcCA9IHByZXBhcmVkVGVtcGxhdGVzLmdldCh0ZW1wbGF0ZSk7XG4gICAgaWYgKCFtYXApIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHByZXBhcmVkVGVtcGxhdGVzLnNldCh0ZW1wbGF0ZSwgbWFwKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmUgPSBtYXAuZ2V0KHRhZ05hbWUpO1xuXG4gICAgaWYgKCFjbG9uZSkge1xuICAgICAgY2xvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgICAgY2xvbmUuY29udGVudC5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7XG5cbiAgICAgIG1hcC5zZXQodGFnTmFtZSwgY2xvbmUpO1xuXG4gICAgICBjb25zdCBzdHlsZXMgPSBjbG9uZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJyk7XG5cbiAgICAgIEFycmF5LmZyb20oc3R5bGVzKS5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IHN0eWxlLmNoaWxkTm9kZXMubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgc3R5bGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2V0UGxhY2Vob2xkZXIoKSksIHN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNoYWR5LnByZXBhcmVUZW1wbGF0ZShjbG9uZSwgdGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lO1xuICB9LCB0ZW1wbGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShwYXJ0cywgc3R5bGVzKSB7XG4gIGxldCBzaWduYXR1cmUgPSBwYXJ0cy5yZWR1Y2UoKGFjYywgcGFydCwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBwYXJ0O1xuICAgIH1cblxuICAgIGlmIChwYXJ0cy5zbGljZShpbmRleCkuam9pbignJykubWF0Y2goL15cXHMqPFxcL1xccyoodGFibGV8dHJ8dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3JvdXApPi8pKSB7XG4gICAgICByZXR1cm4gYCR7YWNjfTwhLS0ke2dldFBsYWNlaG9sZGVyKGluZGV4IC0gMSl9LS0+JHtwYXJ0fWA7XG4gICAgfVxuICAgIHJldHVybiBhY2MgKyBnZXRQbGFjZWhvbGRlcihpbmRleCAtIDEpICsgcGFydDtcbiAgfSwgJycpO1xuXG4gIGlmIChzdHlsZXMpIHtcbiAgICBzaWduYXR1cmUgKz0gYDxzdHlsZT5cXG4ke3N0eWxlcy5qb2luKCdcXG4vKi0tLS0tLSovXFxuJyl9XFxuPC9zdHlsZT5gO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChJU19JRSkge1xuICAgIHJldHVybiBzaWduYXR1cmUucmVwbGFjZShcbiAgICAgIC9zdHlsZVxccyo9XFxzKihbXCJdW15cIl0rW1wiXXxbJ11bXiddK1snXXxbXlxcc1wiJzw+L10rKS9nLFxuICAgICAgbWF0Y2ggPT4gYCR7QVRUUl9QUkVGSVh9JHttYXRjaH1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxzKj1cXHMqWydcIl0qJC9nLCAnJykuc3BsaXQoJyAnKS5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvbW1lbnRzKGZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGZyYWdtZW50LCBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwgbnVsbCwgZmFsc2UpO1xuICBsZXQgbm9kZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkge1xuICAgIGlmIChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwudGVzdChub2RlLnRleHRDb250ZW50KSkge1xuICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShub2RlLnRleHRDb250ZW50KSwgbm9kZSk7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIGxldCBub2RlO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0IGN1cnJlbnROb2RlKCkgeyByZXR1cm4gbm9kZTsgfSxcbiAgICBuZXh0Tm9kZSgpIHtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZSA9IGNvbnRleHQuY2hpbGROb2Rlc1swXTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBub2RlID0gbm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZS5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbm9kZTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFeHRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKFxuICAgIGNvbnRleHQsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhULFxuICAgIG51bGwsXG4gICAgZmFsc2UsXG4gICk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBjcmVhdGVXYWxrZXIgPSB0eXBlb2Ygd2luZG93LlNoYWR5RE9NID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuU2hhZHlET00uaW5Vc2UgPyBjcmVhdGVJbnRlcm5hbFdhbGtlciA6IGNyZWF0ZUV4dGVybmFsV2Fsa2VyO1xuXG5jb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlVGVtcGxhdGUocmF3UGFydHMsIGlzU1ZHLCBzdHlsZXMpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuXG4gIGxldCBzaWduYXR1cmUgPSBjcmVhdGVTaWduYXR1cmUocmF3UGFydHMsIHN0eWxlcyk7XG4gIGlmIChpc1NWRykgc2lnbmF0dXJlID0gYDxzdmc+JHtzaWduYXR1cmV9PC9zdmc+YDtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKElTX0lFKSB7XG4gICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gc2lnbmF0dXJlO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPHRlbXBsYXRlPiR7c2lnbmF0dXJlfTwvdGVtcGxhdGU+YDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lci5jaGlsZHJlblswXS5jb250ZW50KTtcbiAgfVxuXG4gIGlmIChpc1NWRykge1xuICAgIGNvbnN0IHN2Z1Jvb3QgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgdGVtcGxhdGUuY29udGVudC5yZW1vdmVDaGlsZChzdmdSb290KTtcbiAgICBBcnJheS5mcm9tKHN2Z1Jvb3QuY2hpbGROb2RlcykuZm9yRWFjaChub2RlID0+IHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobm9kZSkpO1xuICB9XG5cbiAgcmVwbGFjZUNvbW1lbnRzKHRlbXBsYXRlLmNvbnRlbnQpO1xuXG4gIGNvbnN0IGNvbXBpbGVXYWxrZXIgPSBjcmVhdGVXYWxrZXIodGVtcGxhdGUuY29udGVudCk7XG4gIGxldCBjb21waWxlSW5kZXggPSAwO1xuXG4gIHdoaWxlIChjb21waWxlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICBjb25zdCBub2RlID0gY29tcGlsZVdhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAgIGlmICghdGV4dC5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0ZXh0Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9BTEwpO1xuICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgcmVzdWx0c1xuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBwbGFjZWhvbGRlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBbYmVmb3JlLCBuZXh0XSA9IGFjYy5wb3AoKS5zcGxpdChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgIGlmIChiZWZvcmUpIGFjYy5wdXNoKGJlZm9yZSk7XG4gICAgICAgICAgICAgIGFjYy5wdXNoKHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgaWYgKG5leHQpIGFjYy5wdXNoKG5leHQpO1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW3RleHRdKVxuICAgICAgICAgICAgLmZvckVhY2goKHBhcnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLnRleHRDb250ZW50ID0gcGFydDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGVcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydCksIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXF1YWwgPSBub2RlLnRleHRDb250ZW50Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBwYXJ0c1tlcXVhbFsxXV0gPSBbY29tcGlsZUluZGV4LCByZXNvbHZlVmFsdWVdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9uZWx5LWlmXG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgQXJyYXkuZnJvbShub2RlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgY29uc3QgbmFtZSA9IElTX0lFID8gYXR0ci5uYW1lLnJlcGxhY2UoQVRUUl9QUkVGSVgsICcnKSA6IGF0dHIubmFtZTtcbiAgICAgICAgICBjb25zdCBlcXVhbCA9IHZhbHVlLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgaWYgKGVxdWFsKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocmF3UGFydHNbZXF1YWxbMV1dKTtcbiAgICAgICAgICAgIHBhcnRzW2VxdWFsWzFdXSA9IFtjb21waWxlSW5kZXgsIHJlc29sdmVQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKV07XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0FMTCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0aWFsTmFtZSA9IGBhdHRyX18ke25hbWV9YDtcblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHBsYWNlaG9sZGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIGlkXSA9IHBsYWNlaG9sZGVyLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgICAgICAgcGFydHNbaWRdID0gW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7fSk7XG4gICAgICAgICAgICAgICAgICBkYXRhW3BhcnRpYWxOYW1lXSA9IChkYXRhW3BhcnRpYWxOYW1lXSB8fCB2YWx1ZSkucmVwbGFjZShwbGFjZWhvbGRlciwgYXR0clZhbHVlID09IG51bGwgPyAnJyA6IGF0dHJWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICgocmVzdWx0cy5sZW5ndGggPT09IDEpIHx8IChpbmRleCArIDEgPT09IHJlc3VsdHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIGRhdGFbcGFydGlhbE5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJ0aWFsTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGF0dHIudmFsdWUgPSAnJztcblxuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICBpZiAoSVNfSUUgJiYgbmFtZSAhPT0gYXR0ci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVRlbXBsYXRlSW5zdGFuY2UoaG9zdCwgdGFyZ2V0LCBhcmdzKSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCwgeyB0eXBlOiAnZnVuY3Rpb24nIH0pO1xuXG4gICAgaWYgKHRlbXBsYXRlICE9PSBkYXRhLnRlbXBsYXRlKSB7XG4gICAgICBpZiAoZGF0YS50ZW1wbGF0ZSB8fCB0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpO1xuICAgICAgZGF0YS5sYXN0QXJncyA9IG51bGw7XG5cbiAgICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuaW1wb3J0Tm9kZShhcHBseVNoYWR5Q1NTKHRlbXBsYXRlLCBob3N0LnRhZ05hbWUpLmNvbnRlbnQsIHRydWUpO1xuXG4gICAgICBjb25zdCByZW5kZXJXYWxrZXIgPSBjcmVhdGVXYWxrZXIoZnJhZ21lbnQpO1xuICAgICAgY29uc3QgY2xvbmVkUGFydHMgPSBwYXJ0cy5zbGljZSgwKTtcblxuICAgICAgbGV0IHJlbmRlckluZGV4ID0gMDtcbiAgICAgIGxldCBjdXJyZW50UGFydCA9IGNsb25lZFBhcnRzLnNoaWZ0KCk7XG5cbiAgICAgIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICAgICAgZGF0YS50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgZGF0YS5tYXJrZXJzID0gbWFya2VycztcblxuICAgICAgd2hpbGUgKHJlbmRlcldhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZW5kZXJXYWxrZXIuY3VycmVudE5vZGU7XG5cbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBpZiAoUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMLnRlc3Qobm9kZS50ZXh0Q29udGVudCkpIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgICB9IGVsc2UgaWYgKElTX0lFKSB7XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKEFUVFJfUkVHRVhQLCAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgICBpZiAobm9kZS50YWdOYW1lLmluZGV4T2YoJy0nKSA+IC0xICYmICFjdXN0b21FbGVtZW50cy5nZXQobm9kZS50YWdOYW1lLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgTWlzc2luZyAnJHtzdHJpbmdpZnlFbGVtZW50KG5vZGUpfScgZWxlbWVudCBkZWZpbml0aW9uIGluICcke3N0cmluZ2lmeUVsZW1lbnQoaG9zdCl9J2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChjdXJyZW50UGFydCAmJiBjdXJyZW50UGFydFswXSA9PT0gcmVuZGVySW5kZXgpIHtcbiAgICAgICAgICBtYXJrZXJzLnB1c2goW25vZGUsIGN1cnJlbnRQYXJ0WzFdXSk7XG4gICAgICAgICAgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVuZGVySW5kZXggKz0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgZGF0YS5zdGFydE5vZGUgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICBkYXRhLmVuZE5vZGUgPSBmcmFnbWVudC5jaGlsZE5vZGVzW2ZyYWdtZW50LmNoaWxkTm9kZXMubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG5cbiAgICAgICAgbGV0IGNoaWxkID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgICAgY2hpbGQgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLm1hcmtlcnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBjb25zdCBbbm9kZSwgbWFya2VyXSA9IGRhdGEubWFya2Vyc1tpbmRleF07XG4gICAgICBpZiAoIWRhdGEubGFzdEFyZ3MgfHwgZGF0YS5sYXN0QXJnc1tpbmRleF0gIT09IGFyZ3NbaW5kZXhdKSB7XG4gICAgICAgIG1hcmtlcihob3N0LCBub2RlLCBhcmdzW2luZGV4XSwgZGF0YS5sYXN0QXJncyA/IGRhdGEubGFzdEFyZ3NbaW5kZXhdIDogdW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgICAgIGlmIChob3N0LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICBpZiAoZGF0YS5sYXN0QXJncykge1xuICAgICAgICAgICAgc2hhZHkuc3R5bGVTdWJ0cmVlKGhvc3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaGFkeS5zdHlsZUVsZW1lbnQoaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkYXRhLmxhc3RBcmdzID0gYXJncztcbiAgfTtcbn1cbiJdfQ==
var map = new WeakMap();
export var dataMap = {
get: function get(key, defaultValue) {
if (map.has(key)) {
return map.get(key);
}
var value = map.get(key);
if (value) return value;
if (defaultValue !== undefined) {
if (defaultValue) {
map.set(key, defaultValue);

@@ -29,17 +28,25 @@ }

export function removeTemplate(target) {
var data = dataMap.get(target);
var startNode = data.startNode;
if (target.nodeType !== Node.TEXT_NODE) {
var child = target.childNodes[0];
if (startNode) {
var endNode = getTemplateEnd(data.endNode);
var node = startNode;
var lastNextSibling = endNode.nextSibling;
while (child) {
target.removeChild(child);
child = target.childNodes[0];
}
} else {
var data = dataMap.get(target);
while (node) {
var nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
if (data.startNode) {
var endNode = getTemplateEnd(data.endNode);
var node = data.startNode;
var lastNextSibling = endNode.nextSibling;
while (node) {
var nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
}
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS91dGlscy5qcyJdLCJuYW1lcyI6WyJtYXAiLCJXZWFrTWFwIiwiZGF0YU1hcCIsImdldCIsImtleSIsImRlZmF1bHRWYWx1ZSIsImhhcyIsInVuZGVmaW5lZCIsInNldCIsInZhbHVlIiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsInN0YXJ0Tm9kZSIsImxhc3ROZXh0U2libGluZyIsIm5leHRTaWJsaW5nIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxHQUFHLEdBQUcsSUFBSUMsT0FBSixFQUFaO0FBQ0EsT0FBTyxJQUFNQyxPQUFPLEdBQUc7QUFDckJDLEVBQUFBLEdBRHFCLGVBQ2pCQyxHQURpQixFQUNaQyxZQURZLEVBQ0U7QUFDckIsUUFBSUwsR0FBRyxDQUFDTSxHQUFKLENBQVFGLEdBQVIsQ0FBSixFQUFrQjtBQUNoQixhQUFPSixHQUFHLENBQUNHLEdBQUosQ0FBUUMsR0FBUixDQUFQO0FBQ0Q7O0FBRUQsUUFBSUMsWUFBWSxLQUFLRSxTQUFyQixFQUFnQztBQUM5QlAsTUFBQUEsR0FBRyxDQUFDUSxHQUFKLENBQVFKLEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELFdBQU9BLFlBQVA7QUFDRCxHQVhvQjtBQVlyQkcsRUFBQUEsR0FacUIsZUFZakJKLEdBWmlCLEVBWVpLLEtBWlksRUFZTDtBQUNkVCxJQUFBQSxHQUFHLENBQUNRLEdBQUosQ0FBUUosR0FBUixFQUFhSyxLQUFiO0FBQ0EsV0FBT0EsS0FBUDtBQUNEO0FBZm9CLENBQWhCO0FBa0JQLE9BQU8sU0FBU0MsY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFDbkMsTUFBSUMsSUFBSixDQURtQyxDQUVuQzs7QUFDQSxTQUFPRCxJQUFJLEtBQUtDLElBQUksR0FBR1YsT0FBTyxDQUFDQyxHQUFSLENBQVlRLElBQVosQ0FBWixDQUFKLElBQXNDQyxJQUFJLENBQUNDLE9BQWxELEVBQTJEO0FBQ3pERixJQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsT0FBWjtBQUNEOztBQUVELFNBQU9GLElBQVA7QUFDRDtBQUVELE9BQU8sU0FBU0csY0FBVCxDQUF3QkMsTUFBeEIsRUFBZ0M7QUFDckMsTUFBTUgsSUFBSSxHQUFHVixPQUFPLENBQUNDLEdBQVIsQ0FBWVksTUFBWixDQUFiO0FBQ0EsTUFBTUMsU0FBUyxHQUFHSixJQUFJLENBQUNJLFNBQXZCOztBQUVBLE1BQUlBLFNBQUosRUFBZTtBQUNiLFFBQU1ILE9BQU8sR0FBR0gsY0FBYyxDQUFDRSxJQUFJLENBQUNDLE9BQU4sQ0FBOUI7QUFFQSxRQUFJRixJQUFJLEdBQUdLLFNBQVg7QUFDQSxRQUFNQyxlQUFlLEdBQUdKLE9BQU8sQ0FBQ0ssV0FBaEM7O0FBRUEsV0FBT1AsSUFBUCxFQUFhO0FBQ1gsVUFBTU8sV0FBVyxHQUFHUCxJQUFJLENBQUNPLFdBQXpCO0FBQ0FQLE1BQUFBLElBQUksQ0FBQ1EsVUFBTCxDQUFnQkMsV0FBaEIsQ0FBNEJULElBQTVCO0FBQ0FBLE1BQUFBLElBQUksR0FBR08sV0FBVyxLQUFLRCxlQUFoQixJQUFtQ0MsV0FBMUM7QUFDRDtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IGRhdGFNYXAgPSB7XG4gIGdldChrZXksIGRlZmF1bHRWYWx1ZSkge1xuICAgIGlmIChtYXAuaGFzKGtleSkpIHtcbiAgICAgIHJldHVybiBtYXAuZ2V0KGtleSk7XG4gICAgfVxuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9LFxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBsYXRlRW5kKG5vZGUpIHtcbiAgbGV0IGRhdGE7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAobm9kZSAmJiAoZGF0YSA9IGRhdGFNYXAuZ2V0KG5vZGUpKSAmJiBkYXRhLmVuZE5vZGUpIHtcbiAgICBub2RlID0gZGF0YS5lbmROb2RlO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpIHtcbiAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG4gIGNvbnN0IHN0YXJ0Tm9kZSA9IGRhdGEuc3RhcnROb2RlO1xuXG4gIGlmIChzdGFydE5vZGUpIHtcbiAgICBjb25zdCBlbmROb2RlID0gZ2V0VGVtcGxhdGVFbmQoZGF0YS5lbmROb2RlKTtcblxuICAgIGxldCBub2RlID0gc3RhcnROb2RlO1xuICAgIGNvbnN0IGxhc3ROZXh0U2libGluZyA9IGVuZE5vZGUubmV4dFNpYmxpbmc7XG5cbiAgICB3aGlsZSAobm9kZSkge1xuICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgICAgbm9kZSA9IG5leHRTaWJsaW5nICE9PSBsYXN0TmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmc7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS91dGlscy5qcyJdLCJuYW1lcyI6WyJtYXAiLCJXZWFrTWFwIiwiZGF0YU1hcCIsImdldCIsImtleSIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwic2V0IiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImNoaWxkIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwic3RhcnROb2RlIiwibGFzdE5leHRTaWJsaW5nIiwibmV4dFNpYmxpbmciLCJwYXJlbnROb2RlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxHQUFHLEdBQUcsSUFBSUMsT0FBSixFQUFaO0FBQ0EsT0FBTyxJQUFNQyxPQUFPLEdBQUc7QUFDckJDLEVBQUFBLEdBRHFCLGVBQ2pCQyxHQURpQixFQUNaQyxZQURZLEVBQ0U7QUFDckIsUUFBTUMsS0FBSyxHQUFHTixHQUFHLENBQUNHLEdBQUosQ0FBUUMsR0FBUixDQUFkO0FBQ0EsUUFBSUUsS0FBSixFQUFXLE9BQU9BLEtBQVA7O0FBRVgsUUFBSUQsWUFBSixFQUFrQjtBQUNoQkwsTUFBQUEsR0FBRyxDQUFDTyxHQUFKLENBQVFILEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELFdBQU9BLFlBQVA7QUFDRCxHQVZvQjtBQVdyQkUsRUFBQUEsR0FYcUIsZUFXakJILEdBWGlCLEVBV1pFLEtBWFksRUFXTDtBQUNkTixJQUFBQSxHQUFHLENBQUNPLEdBQUosQ0FBUUgsR0FBUixFQUFhRSxLQUFiO0FBQ0EsV0FBT0EsS0FBUDtBQUNEO0FBZG9CLENBQWhCO0FBaUJQLE9BQU8sU0FBU0UsY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFDbkMsTUFBSUMsSUFBSixDQURtQyxDQUVuQzs7QUFDQSxTQUFPRCxJQUFJLEtBQUtDLElBQUksR0FBR1IsT0FBTyxDQUFDQyxHQUFSLENBQVlNLElBQVosQ0FBWixDQUFKLElBQXNDQyxJQUFJLENBQUNDLE9BQWxELEVBQTJEO0FBQ3pERixJQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsT0FBWjtBQUNEOztBQUVELFNBQU9GLElBQVA7QUFDRDtBQUVELE9BQU8sU0FBU0csY0FBVCxDQUF3QkMsTUFBeEIsRUFBZ0M7QUFDckMsTUFBSUEsTUFBTSxDQUFDQyxRQUFQLEtBQW9CQyxJQUFJLENBQUNDLFNBQTdCLEVBQXdDO0FBQ3RDLFFBQUlDLEtBQUssR0FBR0osTUFBTSxDQUFDSyxVQUFQLENBQWtCLENBQWxCLENBQVo7O0FBQ0EsV0FBT0QsS0FBUCxFQUFjO0FBQ1pKLE1BQUFBLE1BQU0sQ0FBQ00sV0FBUCxDQUFtQkYsS0FBbkI7QUFDQUEsTUFBQUEsS0FBSyxHQUFHSixNQUFNLENBQUNLLFVBQVAsQ0FBa0IsQ0FBbEIsQ0FBUjtBQUNEO0FBQ0YsR0FORCxNQU1PO0FBQ0wsUUFBTVIsSUFBSSxHQUFHUixPQUFPLENBQUNDLEdBQVIsQ0FBWVUsTUFBWixDQUFiOztBQUVBLFFBQUlILElBQUksQ0FBQ1UsU0FBVCxFQUFvQjtBQUNsQixVQUFNVCxPQUFPLEdBQUdILGNBQWMsQ0FBQ0UsSUFBSSxDQUFDQyxPQUFOLENBQTlCO0FBRUEsVUFBSUYsSUFBSSxHQUFHQyxJQUFJLENBQUNVLFNBQWhCO0FBQ0EsVUFBTUMsZUFBZSxHQUFHVixPQUFPLENBQUNXLFdBQWhDOztBQUVBLGFBQU9iLElBQVAsRUFBYTtBQUNYLFlBQU1hLFdBQVcsR0FBR2IsSUFBSSxDQUFDYSxXQUF6QjtBQUNBYixRQUFBQSxJQUFJLENBQUNjLFVBQUwsQ0FBZ0JKLFdBQWhCLENBQTRCVixJQUE1QjtBQUNBQSxRQUFBQSxJQUFJLEdBQUdhLFdBQVcsS0FBS0QsZUFBaEIsSUFBbUNDLFdBQTFDO0FBQ0Q7QUFDRjtBQUNGO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuZXhwb3J0IGNvbnN0IGRhdGFNYXAgPSB7XG4gIGdldChrZXksIGRlZmF1bHRWYWx1ZSkge1xuICAgIGNvbnN0IHZhbHVlID0gbWFwLmdldChrZXkpO1xuICAgIGlmICh2YWx1ZSkgcmV0dXJuIHZhbHVlO1xuXG4gICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgbWFwLnNldChrZXksIGRlZmF1bHRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgfSxcbiAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wbGF0ZUVuZChub2RlKSB7XG4gIGxldCBkYXRhO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgJiYgKGRhdGEgPSBkYXRhTWFwLmdldChub2RlKSkgJiYgZGF0YS5lbmROb2RlKSB7XG4gICAgbm9kZSA9IGRhdGEuZW5kTm9kZTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KSB7XG4gIGlmICh0YXJnZXQubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgbGV0IGNoaWxkID0gdGFyZ2V0LmNoaWxkTm9kZXNbMF07XG4gICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICB0YXJnZXQucmVtb3ZlQ2hpbGQoY2hpbGQpO1xuICAgICAgY2hpbGQgPSB0YXJnZXQuY2hpbGROb2Rlc1swXTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG5cbiAgICBpZiAoZGF0YS5zdGFydE5vZGUpIHtcbiAgICAgIGNvbnN0IGVuZE5vZGUgPSBnZXRUZW1wbGF0ZUVuZChkYXRhLmVuZE5vZGUpO1xuXG4gICAgICBsZXQgbm9kZSA9IGRhdGEuc3RhcnROb2RlO1xuICAgICAgY29uc3QgbGFzdE5leHRTaWJsaW5nID0gZW5kTm9kZS5uZXh0U2libGluZztcblxuICAgICAgd2hpbGUgKG5vZGUpIHtcbiAgICAgICAgY29uc3QgbmV4dFNpYmxpbmcgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICAgIG5vZGUgPSBuZXh0U2libGluZyAhPT0gbGFzdE5leHRTaWJsaW5nICYmIG5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19

@@ -294,3 +294,3 @@ "use strict";

if (template !== data.template) {
if (data.template) (0, _utils2.removeTemplate)(target);
if (data.template || target.nodeType === Node.ELEMENT_NODE) (0, _utils2.removeTemplate)(target);
data.lastArgs = null;

@@ -330,6 +330,5 @@ var fragment = document.importNode(applyShadyCSS(template, host.tagName).content, true);

data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
if (target.nodeType === Node.TEXT_NODE) {
data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
var previousChild = target;

@@ -373,2 +372,2 @@ var child = fragment.childNodes[0];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9jb3JlLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImUiLCJUSU1FU1RBTVAiLCJEYXRlIiwibm93IiwiZ2V0UGxhY2Vob2xkZXIiLCJpZCIsIlBMQUNFSE9MREVSX1JFR0VYUF9URVhUIiwiUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMIiwiUmVnRXhwIiwiUExBQ0VIT0xERVJfUkVHRVhQX0FMTCIsIkFUVFJfUFJFRklYIiwiQVRUUl9SRUdFWFAiLCJwcmVwYXJlZFRlbXBsYXRlcyIsIldlYWtNYXAiLCJhcHBseVNoYWR5Q1NTIiwidGVtcGxhdGUiLCJ0YWdOYW1lIiwic2hhZHkiLCJtYXAiLCJnZXQiLCJNYXAiLCJzZXQiLCJjbG9uZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImNsb25lTm9kZSIsInN0eWxlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJBcnJheSIsImZyb20iLCJmb3JFYWNoIiwic3R5bGUiLCJjb3VudCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJpIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsImNyZWF0ZVRleHROb2RlIiwicHJlcGFyZVRlbXBsYXRlIiwidG9Mb3dlckNhc2UiLCJjcmVhdGVTaWduYXR1cmUiLCJwYXJ0cyIsInNpZ25hdHVyZSIsInJlZHVjZSIsImFjYyIsInBhcnQiLCJpbmRleCIsInNsaWNlIiwiam9pbiIsIm1hdGNoIiwiSVNfSUUiLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiTm9kZUZpbHRlciIsIlNIT1dfQ09NTUVOVCIsIm5vZGUiLCJuZXh0Tm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlSW50ZXJuYWxXYWxrZXIiLCJjb250ZXh0IiwiY3VycmVudE5vZGUiLCJ1bmRlZmluZWQiLCJuZXh0U2libGluZyIsImNyZWF0ZUV4dGVybmFsV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsImNyZWF0ZVdhbGtlciIsIndpbmRvdyIsIlNoYWR5RE9NIiwiaW5Vc2UiLCJjb250YWluZXIiLCJjb21waWxlVGVtcGxhdGUiLCJyYXdQYXJ0cyIsImlzU1ZHIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJ0ZXh0IiwicmVzdWx0cyIsInBsYWNlaG9sZGVyIiwiYmVmb3JlIiwibmV4dCIsInB1c2giLCJlcXVhbCIsInJlc29sdmVWYWx1ZSIsIkVMRU1FTlRfTk9ERSIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidmFsdWUiLCJ0cmltIiwibmFtZSIsInByb3BlcnR5TmFtZSIsInJlbW92ZUF0dHJpYnV0ZSIsInBhcnRpYWxOYW1lIiwiaG9zdCIsInRhcmdldCIsImF0dHJWYWx1ZSIsImRhdGEiLCJkYXRhTWFwIiwic2V0QXR0cmlidXRlIiwidXBkYXRlVGVtcGxhdGVJbnN0YW5jZSIsImFyZ3MiLCJ0eXBlIiwibGFzdEFyZ3MiLCJpbXBvcnROb2RlIiwicmVuZGVyV2Fsa2VyIiwiY2xvbmVkUGFydHMiLCJyZW5kZXJJbmRleCIsImN1cnJlbnRQYXJ0Iiwic2hpZnQiLCJtYXJrZXJzIiwiaW5kZXhPZiIsImN1c3RvbUVsZW1lbnRzIiwiRXJyb3IiLCJzdGFydE5vZGUiLCJlbmROb2RlIiwicHJldmlvdXNDaGlsZCIsImNoaWxkIiwibWFya2VyIiwic2hhZG93Um9vdCIsInN0eWxlU3VidHJlZSIsInN0eWxlRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7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N0IsRUFBd0M7QUFDdEMsMkJBQVMsVUFBQzlFLEtBQUQsRUFBVztBQUNsQixZQUFJZ0csSUFBSSxDQUFDeUIsVUFBVCxFQUFxQjtBQUNuQixjQUFJdEIsSUFBSSxDQUFDTSxRQUFULEVBQW1CO0FBQ2pCekcsWUFBQUEsS0FBSyxDQUFDMEgsWUFBTixDQUFtQjFCLElBQW5CO0FBQ0QsV0FGRCxNQUVPO0FBQ0xoRyxZQUFBQSxLQUFLLENBQUMySCxZQUFOLENBQW1CM0IsSUFBbkI7QUFDRDtBQUNGO0FBQ0YsT0FSRDtBQVNEOztBQUVERyxJQUFBQSxJQUFJLENBQUNNLFFBQUwsR0FBZ0JGLElBQWhCO0FBQ0QsR0FqRkQ7QUFrRkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHJpbmdpZnlFbGVtZW50LCBzaGFkeUNTUywgSVNfSUUgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBkYXRhTWFwLCByZW1vdmVUZW1wbGF0ZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5pbXBvcnQgcmVzb2x2ZVZhbHVlIGZyb20gJy4vcmVzb2x2ZXJzL3ZhbHVlJztcbmltcG9ydCByZXNvbHZlUHJvcGVydHkgZnJvbSAnLi9yZXNvbHZlcnMvcHJvcGVydHknO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xudHJ5IHsgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfSBjYXRjaChlKSB7IHZhciBwcm9jZXNzID0geyBlbnY6IHsgTk9ERV9FTlY6ICdwcm9kdWN0aW9uJyB9IH07IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG5jb25zdCBUSU1FU1RBTVAgPSBEYXRlLm5vdygpO1xuXG5leHBvcnQgY29uc3QgZ2V0UGxhY2Vob2xkZXIgPSAoaWQgPSAwKSA9PiBge3toLSR7VElNRVNUQU1QfS0ke2lkfX19YDtcblxuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQgPSBnZXRQbGFjZWhvbGRlcignKFxcXFxkKyknKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCA9IG5ldyBSZWdFeHAoYF4ke1BMQUNFSE9MREVSX1JFR0VYUF9URVhUfSRgKTtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUF9BTEwgPSBuZXcgUmVnRXhwKFBMQUNFSE9MREVSX1JFR0VYUF9URVhULCAnZycpO1xuXG5jb25zdCBBVFRSX1BSRUZJWCA9IGAtLSR7VElNRVNUQU1QfS0tYDtcbmNvbnN0IEFUVFJfUkVHRVhQID0gbmV3IFJlZ0V4cChBVFRSX1BSRUZJWCwgJ2cnKTtcblxuY29uc3QgcHJlcGFyZWRUZW1wbGF0ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgdGFnTmFtZSkge1xuICBpZiAoIXRhZ05hbWUpIHJldHVybiB0ZW1wbGF0ZTtcblxuICByZXR1cm4gc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgbGV0IG1hcCA9IHByZXBhcmVkVGVtcGxhdGVzLmdldCh0ZW1wbGF0ZSk7XG4gICAgaWYgKCFtYXApIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHByZXBhcmVkVGVtcGxhdGVzLnNldCh0ZW1wbGF0ZSwgbWFwKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmUgPSBtYXAuZ2V0KHRhZ05hbWUpO1xuXG4gICAgaWYgKCFjbG9uZSkge1xuICAgICAgY2xvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgICAgY2xvbmUuY29udGVudC5hcHBlbmRDaGlsZCh0ZW1wbGF0ZS5jb250ZW50LmNsb25lTm9kZSh0cnVlKSk7XG5cbiAgICAgIG1hcC5zZXQodGFnTmFtZSwgY2xvbmUpO1xuXG4gICAgICBjb25zdCBzdHlsZXMgPSBjbG9uZS5jb250ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlJyk7XG5cbiAgICAgIEFycmF5LmZyb20oc3R5bGVzKS5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICBjb25zdCBjb3VudCA9IHN0eWxlLmNoaWxkTm9kZXMubGVuZ3RoICsgMTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSArPSAxKSB7XG4gICAgICAgICAgc3R5bGUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZ2V0UGxhY2Vob2xkZXIoKSksIHN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNoYWR5LnByZXBhcmVUZW1wbGF0ZShjbG9uZSwgdGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lO1xuICB9LCB0ZW1wbGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShwYXJ0cywgc3R5bGVzKSB7XG4gIGxldCBzaWduYXR1cmUgPSBwYXJ0cy5yZWR1Y2UoKGFjYywgcGFydCwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBwYXJ0O1xuICAgIH1cblxuICAgIGlmIChwYXJ0cy5zbGljZShpbmRleCkuam9pbignJykubWF0Y2goL15cXHMqPFxcL1xccyoodGFibGV8dHJ8dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3JvdXApPi8pKSB7XG4gICAgICByZXR1cm4gYCR7YWNjfTwhLS0ke2dldFBsYWNlaG9sZGVyKGluZGV4IC0gMSl9LS0+JHtwYXJ0fWA7XG4gICAgfVxuICAgIHJldHVybiBhY2MgKyBnZXRQbGFjZWhvbGRlcihpbmRleCAtIDEpICsgcGFydDtcbiAgfSwgJycpO1xuXG4gIGlmIChzdHlsZXMpIHtcbiAgICBzaWduYXR1cmUgKz0gYDxzdHlsZT5cXG4ke3N0eWxlcy5qb2luKCdcXG4vKi0tLS0tLSovXFxuJyl9XFxuPC9zdHlsZT5gO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChJU19JRSkge1xuICAgIHJldHVybiBzaWduYXR1cmUucmVwbGFjZShcbiAgICAgIC9zdHlsZVxccyo9XFxzKihbXCJdW15cIl0rW1wiXXxbJ11bXiddK1snXXxbXlxcc1wiJzw+L10rKS9nLFxuICAgICAgbWF0Y2ggPT4gYCR7QVRUUl9QUkVGSVh9JHttYXRjaH1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxzKj1cXHMqWydcIl0qJC9nLCAnJykuc3BsaXQoJyAnKS5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvbW1lbnRzKGZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGZyYWdtZW50LCBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwgbnVsbCwgZmFsc2UpO1xuICBsZXQgbm9kZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkge1xuICAgIGlmIChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwudGVzdChub2RlLnRleHRDb250ZW50KSkge1xuICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShub2RlLnRleHRDb250ZW50KSwgbm9kZSk7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbnRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIGxldCBub2RlO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0IGN1cnJlbnROb2RlKCkgeyByZXR1cm4gbm9kZTsgfSxcbiAgICBuZXh0Tm9kZSgpIHtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbm9kZSA9IGNvbnRleHQuY2hpbGROb2Rlc1swXTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICBub2RlID0gbm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZS5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhbm9kZTtcbiAgICB9LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFeHRlcm5hbFdhbGtlcihjb250ZXh0KSB7XG4gIHJldHVybiBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKFxuICAgIGNvbnRleHQsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2VcbiAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhULFxuICAgIG51bGwsXG4gICAgZmFsc2UsXG4gICk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5jb25zdCBjcmVhdGVXYWxrZXIgPSB0eXBlb2Ygd2luZG93LlNoYWR5RE9NID09PSAnb2JqZWN0JyAmJiB3aW5kb3cuU2hhZHlET00uaW5Vc2UgPyBjcmVhdGVJbnRlcm5hbFdhbGtlciA6IGNyZWF0ZUV4dGVybmFsV2Fsa2VyO1xuXG5jb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlVGVtcGxhdGUocmF3UGFydHMsIGlzU1ZHLCBzdHlsZXMpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuXG4gIGxldCBzaWduYXR1cmUgPSBjcmVhdGVTaWduYXR1cmUocmF3UGFydHMsIHN0eWxlcyk7XG4gIGlmIChpc1NWRykgc2lnbmF0dXJlID0gYDxzdmc+JHtzaWduYXR1cmV9PC9zdmc+YDtcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKElTX0lFKSB7XG4gICAgdGVtcGxhdGUuaW5uZXJIVE1MID0gc2lnbmF0dXJlO1xuICB9IGVsc2Uge1xuICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPHRlbXBsYXRlPiR7c2lnbmF0dXJlfTwvdGVtcGxhdGU+YDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKGNvbnRhaW5lci5jaGlsZHJlblswXS5jb250ZW50KTtcbiAgfVxuXG4gIGlmIChpc1NWRykge1xuICAgIGNvbnN0IHN2Z1Jvb3QgPSB0ZW1wbGF0ZS5jb250ZW50LmZpcnN0Q2hpbGQ7XG4gICAgdGVtcGxhdGUuY29udGVudC5yZW1vdmVDaGlsZChzdmdSb290KTtcbiAgICBBcnJheS5mcm9tKHN2Z1Jvb3QuY2hpbGROb2RlcykuZm9yRWFjaChub2RlID0+IHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQobm9kZSkpO1xuICB9XG5cbiAgcmVwbGFjZUNvbW1lbnRzKHRlbXBsYXRlLmNvbnRlbnQpO1xuXG4gIGNvbnN0IGNvbXBpbGVXYWxrZXIgPSBjcmVhdGVXYWxrZXIodGVtcGxhdGUuY29udGVudCk7XG4gIGxldCBjb21waWxlSW5kZXggPSAwO1xuXG4gIHdoaWxlIChjb21waWxlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICBjb25zdCBub2RlID0gY29tcGlsZVdhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQ7XG5cbiAgICAgIGlmICghdGV4dC5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwpKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSB0ZXh0Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9BTEwpO1xuICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgIGxldCBjdXJyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgcmVzdWx0c1xuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCBwbGFjZWhvbGRlcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBbYmVmb3JlLCBuZXh0XSA9IGFjYy5wb3AoKS5zcGxpdChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgIGlmIChiZWZvcmUpIGFjYy5wdXNoKGJlZm9yZSk7XG4gICAgICAgICAgICAgIGFjYy5wdXNoKHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgaWYgKG5leHQpIGFjYy5wdXNoKG5leHQpO1xuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwgW3RleHRdKVxuICAgICAgICAgICAgLmZvckVhY2goKHBhcnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlLnRleHRDb250ZW50ID0gcGFydDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGVcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydCksIGN1cnJlbnROb2RlLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgZXF1YWwgPSBub2RlLnRleHRDb250ZW50Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBwYXJ0c1tlcXVhbFsxXV0gPSBbY29tcGlsZUluZGV4LCByZXNvbHZlVmFsdWVdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbG9uZWx5LWlmXG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICAgICAgQXJyYXkuZnJvbShub2RlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgY29uc3QgbmFtZSA9IElTX0lFID8gYXR0ci5uYW1lLnJlcGxhY2UoQVRUUl9QUkVGSVgsICcnKSA6IGF0dHIubmFtZTtcbiAgICAgICAgICBjb25zdCBlcXVhbCA9IHZhbHVlLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgaWYgKGVxdWFsKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocmF3UGFydHNbZXF1YWxbMV1dKTtcbiAgICAgICAgICAgIHBhcnRzW2VxdWFsWzFdXSA9IFtjb21waWxlSW5kZXgsIHJlc29sdmVQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKV07XG4gICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHRzID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0FMTCk7XG4gICAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgICBjb25zdCBwYXJ0aWFsTmFtZSA9IGBhdHRyX18ke25hbWV9YDtcblxuICAgICAgICAgICAgICByZXN1bHRzLmZvckVhY2goKHBsYWNlaG9sZGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFssIGlkXSA9IHBsYWNlaG9sZGVyLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCk7XG4gICAgICAgICAgICAgICAgcGFydHNbaWRdID0gW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7fSk7XG4gICAgICAgICAgICAgICAgICBkYXRhW3BhcnRpYWxOYW1lXSA9IChkYXRhW3BhcnRpYWxOYW1lXSB8fCB2YWx1ZSkucmVwbGFjZShwbGFjZWhvbGRlciwgYXR0clZhbHVlID09IG51bGwgPyAnJyA6IGF0dHJWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgIGlmICgocmVzdWx0cy5sZW5ndGggPT09IDEpIHx8IChpbmRleCArIDEgPT09IHJlc3VsdHMubGVuZ3RoKSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIGRhdGFbcGFydGlhbE5hbWVdKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVtwYXJ0aWFsTmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGF0dHIudmFsdWUgPSAnJztcblxuICAgICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgICAgICBpZiAoSVNfSUUgJiYgbmFtZSAhPT0gYXR0ci5uYW1lKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZVRlbXBsYXRlSW5zdGFuY2UoaG9zdCwgdGFyZ2V0LCBhcmdzKSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCwgeyB0eXBlOiAnZnVuY3Rpb24nIH0pO1xuXG4gICAgaWYgKHRlbXBsYXRlICE9PSBkYXRhLnRlbXBsYXRlKSB7XG4gICAgICBpZiAoZGF0YS50ZW1wbGF0ZSkgcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KTtcbiAgICAgIGRhdGEubGFzdEFyZ3MgPSBudWxsO1xuXG4gICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmltcG9ydE5vZGUoYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgaG9zdC50YWdOYW1lKS5jb250ZW50LCB0cnVlKTtcblxuICAgICAgY29uc3QgcmVuZGVyV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKGZyYWdtZW50KTtcbiAgICAgIGNvbnN0IGNsb25lZFBhcnRzID0gcGFydHMuc2xpY2UoMCk7XG5cbiAgICAgIGxldCByZW5kZXJJbmRleCA9IDA7XG4gICAgICBsZXQgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuXG4gICAgICBjb25zdCBtYXJrZXJzID0gW107XG5cbiAgICAgIGRhdGEudGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgIGRhdGEubWFya2VycyA9IG1hcmtlcnM7XG5cbiAgICAgIHdoaWxlIChyZW5kZXJXYWxrZXIubmV4dE5vZGUoKSkge1xuICAgICAgICBjb25zdCBub2RlID0gcmVuZGVyV2Fsa2VyLmN1cnJlbnROb2RlO1xuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgaWYgKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTC50ZXN0KG5vZGUudGV4dENvbnRlbnQpKSB7XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChJU19JRSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShBVFRSX1JFR0VYUCwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgaWYgKG5vZGUudGFnTmFtZS5pbmRleE9mKCctJykgPiAtMSAmJiAhY3VzdG9tRWxlbWVudHMuZ2V0KG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYE1pc3NpbmcgJyR7c3RyaW5naWZ5RWxlbWVudChub2RlKX0nIGVsZW1lbnQgZGVmaW5pdGlvbiBpbiAnJHtzdHJpbmdpZnlFbGVtZW50KGhvc3QpfSdgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3VycmVudFBhcnQgJiYgY3VycmVudFBhcnRbMF0gPT09IHJlbmRlckluZGV4KSB7XG4gICAgICAgICAgbWFya2Vycy5wdXNoKFtub2RlLCBjdXJyZW50UGFydFsxXV0pO1xuICAgICAgICAgIGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlckluZGV4ICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGRhdGEuc3RhcnROb2RlID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgIGRhdGEuZW5kTm9kZSA9IGZyYWdtZW50LmNoaWxkTm9kZXNbZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxXTtcblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG5cbiAgICAgICAgbGV0IGNoaWxkID0gZnJhZ21lbnQuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgICAgY2hpbGQgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLm1hcmtlcnMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICBjb25zdCBbbm9kZSwgbWFya2VyXSA9IGRhdGEubWFya2Vyc1tpbmRleF07XG4gICAgICBpZiAoIWRhdGEubGFzdEFyZ3MgfHwgZGF0YS5sYXN0QXJnc1tpbmRleF0gIT09IGFyZ3NbaW5kZXhdKSB7XG4gICAgICAgIG1hcmtlcihob3N0LCBub2RlLCBhcmdzW2luZGV4XSwgZGF0YS5sYXN0QXJncyA/IGRhdGEubGFzdEFyZ3NbaW5kZXhdIDogdW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgICAgIGlmIChob3N0LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgICBpZiAoZGF0YS5sYXN0QXJncykge1xuICAgICAgICAgICAgc2hhZHkuc3R5bGVTdWJ0cmVlKGhvc3QpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaGFkeS5zdHlsZUVsZW1lbnQoaG9zdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBkYXRhLmxhc3RBcmdzID0gYXJncztcbiAgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS9jb3JlLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImUiLCJUSU1FU1RBTVAiLCJEYXRlIiwibm93IiwiZ2V0UGxhY2Vob2xkZXIiLCJpZCIsIlBMQUNFSE9MREVSX1JFR0VYUF9URVhUIiwiUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMIiwiUmVnRXhwIiwiUExBQ0VIT0xERVJfUkVHRVhQX0FMTCIsIkFUVFJfUFJFRklYIiwiQVRUUl9SRUdFWFAiLCJwcmVwYXJlZFRlbXBsYXRlcyIsIldlYWtNYXAiLCJhcHBseVNoYWR5Q1NTIiwidGVtcGxhdGUiLCJ0YWdOYW1lIiwic2hhZHkiLCJtYXAiLCJnZXQiLCJNYXAiLCJzZXQiLCJjbG9uZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImNsb25lTm9kZSIsInN0eWxlcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJBcnJheSIsImZyb20iLCJmb3JFYWNoIiwic3R5bGUiLCJjb3VudCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiLCJpIiwicGFyZW50Tm9kZSIsImluc2VydEJlZm9yZSIsImNyZWF0ZVRleHROb2RlIiwicHJlcGFyZVRlbXBsYXRlIiwidG9Mb3dlckNhc2UiLCJjcmVhdGVTaWduYXR1cmUiLCJwYXJ0cyIsInNpZ25hdHVyZSIsInJlZHVjZSIsImFjYyIsInBhcnQiLCJpbmRleCIsInNsaWNlIiwiam9pbiIsIm1hdGNoIiwiSVNfSUUiLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiTm9kZUZpbHRlciIsIlNIT1dfQ09NTUVOVCIsIm5vZGUiLCJuZXh0Tm9kZSIsInRlc3QiLCJ0ZXh0Q29udGVudCIsInJlbW92ZUNoaWxkIiwiY3JlYXRlSW50ZXJuYWxXYWxrZXIiLCJjb250ZXh0IiwiY3VycmVudE5vZGUiLCJ1bmRlZmluZWQiLCJuZXh0U2libGluZyIsImNyZWF0ZUV4dGVybmFsV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsImNyZWF0ZVdhbGtlciIsIndpbmRvdyIsIlNoYWR5RE9NIiwiaW5Vc2UiLCJjb250YWluZXIiLCJjb21waWxlVGVtcGxhdGUiLCJyYXdQYXJ0cyIsImlzU1ZHIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJub2RlVHlwZSIsIk5vZGUiLCJURVhUX05PREUiLCJ0ZXh0IiwicmVzdWx0cyIsInBsYWNlaG9sZGVyIiwiYmVmb3JlIiwibmV4dCIsInB1c2giLCJlcXVhbCIsInJlc29sdmVWYWx1ZSIsIkVMRU1FTlRfTk9ERSIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidmFsdWUiLCJ0cmltIiwibmFtZSIsInByb3BlcnR5TmFtZSIsInJlbW92ZUF0dHJpYnV0ZSIsInBhcnRpYWxOYW1lIiwiaG9zdCIsInRhcmdldCIsImF0dHJWYWx1ZSIsImRhdGEiLCJkYXRhTWFwIiwic2V0QXR0cmlidXRlIiwidXBkYXRlVGVtcGxhdGVJbnN0YW5jZSIsImFyZ3MiLCJ0eXBlIiwibGFzdEFyZ3MiLCJpbXBvcnROb2RlIiwicmVuZGVyV2Fsa2VyIiwiY2xvbmVkUGFydHMiLCJyZW5kZXJJbmRleCIsImN1cnJlbnRQYXJ0Iiwic2hpZnQiLCJtYXJrZXJzIiwiaW5kZXhPZiIsImN1c3RvbUVsZW1lbnRzIiwiRXJyb3IiLCJzdGFydE5vZGUiLCJlbmROb2RlIiwicHJldmlvdXNDaGlsZCIsImNoaWxkIiwibWFya2VyIiwic2hhZG93Um9vdCIsInN0eWxlU3VidHJlZSIsInN0eWxlRWxlbWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7Ozs7Ozs7Ozs7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RCxRQUFJeUMsTUFBTSxDQUFDckIsUUFBUCxLQUFvQkMsSUFBSSxDQUFDQyxTQUE3QixFQUF3QztBQUN0QywyQkFBUyxVQUFDOUUsS0FBRCxFQUFXO0FBQ2xCLFlBQUlnRyxJQUFJLENBQUN5QixVQUFULEVBQXFCO0FBQ25CLGNBQUl0QixJQUFJLENBQUNNLFFBQVQsRUFBbUI7QUFDakJ6RyxZQUFBQSxLQUFLLENBQUMwSCxZQUFOLENBQW1CMUIsSUFBbkI7QUFDRCxXQUZELE1BRU87QUFDTGhHLFlBQUFBLEtBQUssQ0FBQzJILFlBQU4sQ0FBbUIzQixJQUFuQjtBQUNEO0FBQ0Y7QUFDRixPQVJEO0FBU0Q7O0FBRURHLElBQUFBLElBQUksQ0FBQ00sUUFBTCxHQUFnQkYsSUFBaEI7QUFDRCxHQWpGRDtBQWtGRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN0cmluZ2lmeUVsZW1lbnQsIHNoYWR5Q1NTLCBJU19JRSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGRhdGFNYXAsIHJlbW92ZVRlbXBsYXRlIH0gZnJvbSAnLi91dGlscyc7XG5cbmltcG9ydCByZXNvbHZlVmFsdWUgZnJvbSAnLi9yZXNvbHZlcnMvdmFsdWUnO1xuaW1wb3J0IHJlc29sdmVQcm9wZXJ0eSBmcm9tICcuL3Jlc29sdmVycy9wcm9wZXJ0eSc7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG50cnkgeyBwcm9jZXNzLmVudi5OT0RFX0VOViB9IGNhdGNoKGUpIHsgdmFyIHByb2Nlc3MgPSB7IGVudjogeyBOT0RFX0VOVjogJ3Byb2R1Y3Rpb24nIH0gfTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbmNvbnN0IFRJTUVTVEFNUCA9IERhdGUubm93KCk7XG5cbmV4cG9ydCBjb25zdCBnZXRQbGFjZWhvbGRlciA9IChpZCA9IDApID0+IGB7e2gtJHtUSU1FU1RBTVB9LSR7aWR9fX1gO1xuXG5jb25zdCBQTEFDRUhPTERFUl9SRUdFWFBfVEVYVCA9IGdldFBsYWNlaG9sZGVyKCcoXFxcXGQrKScpO1xuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMID0gbmV3IFJlZ0V4cChgXiR7UExBQ0VIT0xERVJfUkVHRVhQX1RFWFR9JGApO1xuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQX0FMTCA9IG5ldyBSZWdFeHAoUExBQ0VIT0xERVJfUkVHRVhQX1RFWFQsICdnJyk7XG5cbmNvbnN0IEFUVFJfUFJFRklYID0gYC0tJHtUSU1FU1RBTVB9LS1gO1xuY29uc3QgQVRUUl9SRUdFWFAgPSBuZXcgUmVnRXhwKEFUVFJfUFJFRklYLCAnZycpO1xuXG5jb25zdCBwcmVwYXJlZFRlbXBsYXRlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBhcHBseVNoYWR5Q1NTKHRlbXBsYXRlLCB0YWdOYW1lKSB7XG4gIGlmICghdGFnTmFtZSkgcmV0dXJuIHRlbXBsYXRlO1xuXG4gIHJldHVybiBzaGFkeUNTUygoc2hhZHkpID0+IHtcbiAgICBsZXQgbWFwID0gcHJlcGFyZWRUZW1wbGF0ZXMuZ2V0KHRlbXBsYXRlKTtcbiAgICBpZiAoIW1hcCkge1xuICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgcHJlcGFyZWRUZW1wbGF0ZXMuc2V0KHRlbXBsYXRlLCBtYXApO1xuICAgIH1cblxuICAgIGxldCBjbG9uZSA9IG1hcC5nZXQodGFnTmFtZSk7XG5cbiAgICBpZiAoIWNsb25lKSB7XG4gICAgICBjbG9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gICAgICBjbG9uZS5jb250ZW50LmFwcGVuZENoaWxkKHRlbXBsYXRlLmNvbnRlbnQuY2xvbmVOb2RlKHRydWUpKTtcblxuICAgICAgbWFwLnNldCh0YWdOYW1lLCBjbG9uZSk7XG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IGNsb25lLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKTtcblxuICAgICAgQXJyYXkuZnJvbShzdHlsZXMpLmZvckVhY2goKHN0eWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gc3R5bGUuY2hpbGROb2Rlcy5sZW5ndGggKyAxO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICBzdHlsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnZXRQbGFjZWhvbGRlcigpKSwgc3R5bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2hhZHkucHJlcGFyZVRlbXBsYXRlKGNsb25lLCB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmU7XG4gIH0sIHRlbXBsYXRlKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbmF0dXJlKHBhcnRzLCBzdHlsZXMpIHtcbiAgbGV0IHNpZ25hdHVyZSA9IHBhcnRzLnJlZHVjZSgoYWNjLCBwYXJ0LCBpbmRleCkgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHBhcnQ7XG4gICAgfVxuXG4gICAgaWYgKHBhcnRzLnNsaWNlKGluZGV4KS5qb2luKCcnKS5tYXRjaCgvXlxccyo8XFwvXFxzKih0YWJsZXx0cnx0aGVhZHx0Ym9keXx0Zm9vdHxjb2xncm91cCk+LykpIHtcbiAgICAgIHJldHVybiBgJHthY2N9PCEtLSR7Z2V0UGxhY2Vob2xkZXIoaW5kZXggLSAxKX0tLT4ke3BhcnR9YDtcbiAgICB9XG4gICAgcmV0dXJuIGFjYyArIGdldFBsYWNlaG9sZGVyKGluZGV4IC0gMSkgKyBwYXJ0O1xuICB9LCAnJyk7XG5cbiAgaWYgKHN0eWxlcykge1xuICAgIHNpZ25hdHVyZSArPSBgPHN0eWxlPlxcbiR7c3R5bGVzLmpvaW4oJ1xcbi8qLS0tLS0tKi9cXG4nKX1cXG48L3N0eWxlPmA7XG4gIH1cblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgaWYgKElTX0lFKSB7XG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZXBsYWNlKFxuICAgICAgL3N0eWxlXFxzKj1cXHMqKFtcIl1bXlwiXStbXCJdfFsnXVteJ10rWyddfFteXFxzXCInPD4vXSspL2csXG4gICAgICBtYXRjaCA9PiBgJHtBVFRSX1BSRUZJWH0ke21hdGNofWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHMqPVxccypbJ1wiXSokL2csICcnKS5zcGxpdCgnICcpLnBvcCgpO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ29tbWVudHMoZnJhZ21lbnQpIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZnJhZ21lbnQsIE5vZGVGaWx0ZXIuU0hPV19DT01NRU5ULCBudWxsLCBmYWxzZSk7XG4gIGxldCBub2RlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSB7XG4gICAgaWYgKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTC50ZXN0KG5vZGUudGV4dENvbnRlbnQpKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUudGV4dENvbnRlbnQpLCBub2RlKTtcbiAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUludGVybmFsV2Fsa2VyKGNvbnRleHQpIHtcbiAgbGV0IG5vZGU7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQgY3VycmVudE5vZGUoKSB7IHJldHVybiBub2RlOyB9LFxuICAgIG5leHROb2RlKCkge1xuICAgICAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBub2RlID0gY29udGV4dC5jaGlsZE5vZGVzWzBdO1xuICAgICAgfSBlbHNlIGlmIChub2RlLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIG5vZGUgPSBub2RlLmNoaWxkTm9kZXNbMF07XG4gICAgICB9IGVsc2UgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlLm5leHRTaWJsaW5nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gISFub2RlO1xuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUV4dGVybmFsV2Fsa2VyKGNvbnRleHQpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoXG4gICAgY29udGV4dCxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UIHwgTm9kZUZpbHRlci5TSE9XX1RFWFQsXG4gICAgbnVsbCxcbiAgICBmYWxzZSxcbiAgKTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmNvbnN0IGNyZWF0ZVdhbGtlciA9IHR5cGVvZiB3aW5kb3cuU2hhZHlET00gPT09ICdvYmplY3QnICYmIHdpbmRvdy5TaGFkeURPTS5pblVzZSA/IGNyZWF0ZUludGVybmFsV2Fsa2VyIDogY3JlYXRlRXh0ZXJuYWxXYWxrZXI7XG5cbmNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVUZW1wbGF0ZShyYXdQYXJ0cywgaXNTVkcsIHN0eWxlcykge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgbGV0IHNpZ25hdHVyZSA9IGNyZWF0ZVNpZ25hdHVyZShyYXdQYXJ0cywgc3R5bGVzKTtcbiAgaWYgKGlzU1ZHKSBzaWduYXR1cmUgPSBgPHN2Zz4ke3NpZ25hdHVyZX08L3N2Zz5gO1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoSVNfSUUpIHtcbiAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBzaWduYXR1cmU7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8dGVtcGxhdGU+JHtzaWduYXR1cmV9PC90ZW1wbGF0ZT5gO1xuICAgIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyLmNoaWxkcmVuWzBdLmNvbnRlbnQpO1xuICB9XG5cbiAgaWYgKGlzU1ZHKSB7XG4gICAgY29uc3Qgc3ZnUm9vdCA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LnJlbW92ZUNoaWxkKHN2Z1Jvb3QpO1xuICAgIEFycmF5LmZyb20oc3ZnUm9vdC5jaGlsZE5vZGVzKS5mb3JFYWNoKG5vZGUgPT4gdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChub2RlKSk7XG4gIH1cblxuICByZXBsYWNlQ29tbWVudHModGVtcGxhdGUuY29udGVudCk7XG5cbiAgY29uc3QgY29tcGlsZVdhbGtlciA9IGNyZWF0ZVdhbGtlcih0ZW1wbGF0ZS5jb250ZW50KTtcbiAgbGV0IGNvbXBpbGVJbmRleCA9IDA7XG5cbiAgd2hpbGUgKGNvbXBpbGVXYWxrZXIubmV4dE5vZGUoKSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb21waWxlV2Fsa2VyLmN1cnJlbnROb2RlO1xuXG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gbm9kZS50ZXh0Q29udGVudDtcblxuICAgICAgaWYgKCF0ZXh0Lm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUF9FUVVBTCkpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IHRleHQubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0FMTCk7XG4gICAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgICAgbGV0IGN1cnJlbnROb2RlID0gbm9kZTtcbiAgICAgICAgICByZXN1bHRzXG4gICAgICAgICAgICAucmVkdWNlKChhY2MsIHBsYWNlaG9sZGVyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IFtiZWZvcmUsIG5leHRdID0gYWNjLnBvcCgpLnNwbGl0KHBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgaWYgKGJlZm9yZSkgYWNjLnB1c2goYmVmb3JlKTtcbiAgICAgICAgICAgICAgYWNjLnB1c2gocGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICBpZiAobmV4dCkgYWNjLnB1c2gobmV4dCk7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbdGV4dF0pXG4gICAgICAgICAgICAuZm9yRWFjaCgocGFydCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudE5vZGUudGV4dENvbnRlbnQgPSBwYXJ0O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgICAgLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0KSwgY3VycmVudE5vZGUubmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBlcXVhbCA9IG5vZGUudGV4dENvbnRlbnQubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMKTtcbiAgICAgIGlmIChlcXVhbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAoIUlTX0lFKSBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgIHBhcnRzW2VxdWFsWzFdXSA9IFtjb21waWxlSW5kZXgsIHJlc29sdmVWYWx1ZV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1sb25lbHktaWZcbiAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICBBcnJheS5mcm9tKG5vZGUuYXR0cmlidXRlcykuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICBjb25zdCBuYW1lID0gSVNfSUUgPyBhdHRyLm5hbWUucmVwbGFjZShBVFRSX1BSRUZJWCwgJycpIDogYXR0ci5uYW1lO1xuICAgICAgICAgIGNvbnN0IGVxdWFsID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMKTtcbiAgICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGdldFByb3BlcnR5TmFtZShyYXdQYXJ0c1tlcXVhbFsxXV0pO1xuICAgICAgICAgICAgcGFydHNbZXF1YWxbMV1dID0gW2NvbXBpbGVJbmRleCwgcmVzb2x2ZVByb3BlcnR5KG5hbWUsIHByb3BlcnR5TmFtZSwgaXNTVkcpXTtcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIubmFtZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB2YWx1ZS5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFBfQUxMKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcnRpYWxOYW1lID0gYGF0dHJfXyR7bmFtZX1gO1xuXG4gICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaCgocGxhY2Vob2xkZXIsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgWywgaWRdID0gcGxhY2Vob2xkZXIubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQX0VRVUFMKTtcbiAgICAgICAgICAgICAgICBwYXJ0c1tpZF0gPSBbY29tcGlsZUluZGV4LCAoaG9zdCwgdGFyZ2V0LCBhdHRyVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHt9KTtcbiAgICAgICAgICAgICAgICAgIGRhdGFbcGFydGlhbE5hbWVdID0gKGRhdGFbcGFydGlhbE5hbWVdIHx8IHZhbHVlKS5yZXBsYWNlKHBsYWNlaG9sZGVyLCBhdHRyVmFsdWUgPT0gbnVsbCA/ICcnIDogYXR0clZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKChyZXN1bHRzLmxlbmd0aCA9PT0gMSkgfHwgKGluZGV4ICsgMSA9PT0gcmVzdWx0cy5sZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUobmFtZSwgZGF0YVtwYXJ0aWFsTmFtZV0pO1xuICAgICAgICAgICAgICAgICAgICBkYXRhW3BhcnRpYWxOYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgYXR0ci52YWx1ZSA9ICcnO1xuXG4gICAgICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICAgICAgICAgIGlmIChJU19JRSAmJiBuYW1lICE9PSBhdHRyLm5hbWUpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsICcnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcGlsZUluZGV4ICs9IDE7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlVGVtcGxhdGVJbnN0YW5jZShob3N0LCB0YXJnZXQsIGFyZ3MpIHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7IHR5cGU6ICdmdW5jdGlvbicgfSk7XG5cbiAgICBpZiAodGVtcGxhdGUgIT09IGRhdGEudGVtcGxhdGUpIHtcbiAgICAgIGlmIChkYXRhLnRlbXBsYXRlIHx8IHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHJlbW92ZVRlbXBsYXRlKHRhcmdldCk7XG4gICAgICBkYXRhLmxhc3RBcmdzID0gbnVsbDtcblxuICAgICAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5pbXBvcnROb2RlKGFwcGx5U2hhZHlDU1ModGVtcGxhdGUsIGhvc3QudGFnTmFtZSkuY29udGVudCwgdHJ1ZSk7XG5cbiAgICAgIGNvbnN0IHJlbmRlcldhbGtlciA9IGNyZWF0ZVdhbGtlcihmcmFnbWVudCk7XG4gICAgICBjb25zdCBjbG9uZWRQYXJ0cyA9IHBhcnRzLnNsaWNlKDApO1xuXG4gICAgICBsZXQgcmVuZGVySW5kZXggPSAwO1xuICAgICAgbGV0IGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcblxuICAgICAgY29uc3QgbWFya2VycyA9IFtdO1xuXG4gICAgICBkYXRhLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICBkYXRhLm1hcmtlcnMgPSBtYXJrZXJzO1xuXG4gICAgICB3aGlsZSAocmVuZGVyV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlbmRlcldhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChQTEFDRUhPTERFUl9SRUdFWFBfRVFVQUwudGVzdChub2RlLnRleHRDb250ZW50KSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSUUpIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoQVRUUl9SRUdFWFAsICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAgIGlmIChub2RlLnRhZ05hbWUuaW5kZXhPZignLScpID4gLTEgJiYgIWN1c3RvbUVsZW1lbnRzLmdldChub2RlLnRhZ05hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBNaXNzaW5nICcke3N0cmluZ2lmeUVsZW1lbnQobm9kZSl9JyBlbGVtZW50IGRlZmluaXRpb24gaW4gJyR7c3RyaW5naWZ5RWxlbWVudChob3N0KX0nYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGN1cnJlbnRQYXJ0ICYmIGN1cnJlbnRQYXJ0WzBdID09PSByZW5kZXJJbmRleCkge1xuICAgICAgICAgIG1hcmtlcnMucHVzaChbbm9kZSwgY3VycmVudFBhcnRbMV1dKTtcbiAgICAgICAgICBjdXJyZW50UGFydCA9IGNsb25lZFBhcnRzLnNoaWZ0KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZW5kZXJJbmRleCArPSAxO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0Lm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICBkYXRhLnN0YXJ0Tm9kZSA9IGZyYWdtZW50LmNoaWxkTm9kZXNbMF07XG4gICAgICAgIGRhdGEuZW5kTm9kZSA9IGZyYWdtZW50LmNoaWxkTm9kZXNbZnJhZ21lbnQuY2hpbGROb2Rlcy5sZW5ndGggLSAxXTtcblxuICAgICAgICBsZXQgcHJldmlvdXNDaGlsZCA9IHRhcmdldDtcblxuICAgICAgICBsZXQgY2hpbGQgPSBmcmFnbWVudC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgICAgICB0YXJnZXQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY2hpbGQsIHByZXZpb3VzQ2hpbGQubmV4dFNpYmxpbmcpO1xuICAgICAgICAgIHByZXZpb3VzQ2hpbGQgPSBjaGlsZDtcbiAgICAgICAgICBjaGlsZCA9IGZyYWdtZW50LmNoaWxkTm9kZXNbMF07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRhdGEubWFya2Vycy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgIGNvbnN0IFtub2RlLCBtYXJrZXJdID0gZGF0YS5tYXJrZXJzW2luZGV4XTtcbiAgICAgIGlmICghZGF0YS5sYXN0QXJncyB8fCBkYXRhLmxhc3RBcmdzW2luZGV4XSAhPT0gYXJnc1tpbmRleF0pIHtcbiAgICAgICAgbWFya2VyKGhvc3QsIG5vZGUsIGFyZ3NbaW5kZXhdLCBkYXRhLmxhc3RBcmdzID8gZGF0YS5sYXN0QXJnc1tpbmRleF0gOiB1bmRlZmluZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0YXJnZXQubm9kZVR5cGUgIT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBzaGFkeUNTUygoc2hhZHkpID0+IHtcbiAgICAgICAgaWYgKGhvc3Quc2hhZG93Um9vdCkge1xuICAgICAgICAgIGlmIChkYXRhLmxhc3RBcmdzKSB7XG4gICAgICAgICAgICBzaGFkeS5zdHlsZVN1YnRyZWUoaG9zdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNoYWR5LnN0eWxlRWxlbWVudChob3N0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRhdGEubGFzdEFyZ3MgPSBhcmdzO1xuICB9O1xufVxuIl19

@@ -12,7 +12,6 @@ "use strict";

get: function get(key, defaultValue) {
if (map.has(key)) {
return map.get(key);
}
var value = map.get(key);
if (value) return value;
if (defaultValue !== undefined) {
if (defaultValue) {
map.set(key, defaultValue);

@@ -41,17 +40,25 @@ }

function removeTemplate(target) {
var data = dataMap.get(target);
var startNode = data.startNode;
if (target.nodeType !== Node.TEXT_NODE) {
var child = target.childNodes[0];
if (startNode) {
var endNode = getTemplateEnd(data.endNode);
var node = startNode;
var lastNextSibling = endNode.nextSibling;
while (child) {
target.removeChild(child);
child = target.childNodes[0];
}
} else {
var data = dataMap.get(target);
while (node) {
var nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
if (data.startNode) {
var endNode = getTemplateEnd(data.endNode);
var node = data.startNode;
var lastNextSibling = endNode.nextSibling;
while (node) {
var nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
}
}
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS91dGlscy5qcyJdLCJuYW1lcyI6WyJtYXAiLCJXZWFrTWFwIiwiZGF0YU1hcCIsImdldCIsImtleSIsImRlZmF1bHRWYWx1ZSIsImhhcyIsInVuZGVmaW5lZCIsInNldCIsInZhbHVlIiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsInN0YXJ0Tm9kZSIsImxhc3ROZXh0U2libGluZyIsIm5leHRTaWJsaW5nIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQU1BLEdBQUcsR0FBRyxJQUFJQyxPQUFKLEVBQVo7QUFDTyxJQUFNQyxPQUFPLEdBQUc7QUFDckJDLEVBQUFBLEdBRHFCLGVBQ2pCQyxHQURpQixFQUNaQyxZQURZLEVBQ0U7QUFDckIsUUFBSUwsR0FBRyxDQUFDTSxHQUFKLENBQVFGLEdBQVIsQ0FBSixFQUFrQjtBQUNoQixhQUFPSixHQUFHLENBQUNHLEdBQUosQ0FBUUMsR0FBUixDQUFQO0FBQ0Q7O0FBRUQsUUFBSUMsWUFBWSxLQUFLRSxTQUFyQixFQUFnQztBQUM5QlAsTUFBQUEsR0FBRyxDQUFDUSxHQUFKLENBQVFKLEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELFdBQU9BLFlBQVA7QUFDRCxHQVhvQjtBQVlyQkcsRUFBQUEsR0FacUIsZUFZakJKLEdBWmlCLEVBWVpLLEtBWlksRUFZTDtBQUNkVCxJQUFBQSxHQUFHLENBQUNRLEdBQUosQ0FBUUosR0FBUixFQUFhSyxLQUFiO0FBQ0EsV0FBT0EsS0FBUDtBQUNEO0FBZm9CLENBQWhCOzs7QUFrQkEsU0FBU0MsY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFDbkMsTUFBSUMsSUFBSixDQURtQyxDQUVuQzs7QUFDQSxTQUFPRCxJQUFJLEtBQUtDLElBQUksR0FBR1YsT0FBTyxDQUFDQyxHQUFSLENBQVlRLElBQVosQ0FBWixDQUFKLElBQXNDQyxJQUFJLENBQUNDLE9BQWxELEVBQTJEO0FBQ3pERixJQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsT0FBWjtBQUNEOztBQUVELFNBQU9GLElBQVA7QUFDRDs7QUFFTSxTQUFTRyxjQUFULENBQXdCQyxNQUF4QixFQUFnQztBQUNyQyxNQUFNSCxJQUFJLEdBQUdWLE9BQU8sQ0FBQ0MsR0FBUixDQUFZWSxNQUFaLENBQWI7QUFDQSxNQUFNQyxTQUFTLEdBQUdKLElBQUksQ0FBQ0ksU0FBdkI7O0FBRUEsTUFBSUEsU0FBSixFQUFlO0FBQ2IsUUFBTUgsT0FBTyxHQUFHSCxjQUFjLENBQUNFLElBQUksQ0FBQ0MsT0FBTixDQUE5QjtBQUVBLFFBQUlGLElBQUksR0FBR0ssU0FBWDtBQUNBLFFBQU1DLGVBQWUsR0FBR0osT0FBTyxDQUFDSyxXQUFoQzs7QUFFQSxXQUFPUCxJQUFQLEVBQWE7QUFDWCxVQUFNTyxXQUFXLEdBQUdQLElBQUksQ0FBQ08sV0FBekI7QUFDQVAsTUFBQUEsSUFBSSxDQUFDUSxVQUFMLENBQWdCQyxXQUFoQixDQUE0QlQsSUFBNUI7QUFDQUEsTUFBQUEsSUFBSSxHQUFHTyxXQUFXLEtBQUtELGVBQWhCLElBQW1DQyxXQUExQztBQUNEO0FBQ0Y7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG1hcCA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgY29uc3QgZGF0YU1hcCA9IHtcbiAgZ2V0KGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgaWYgKG1hcC5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIG1hcC5nZXQoa2V5KTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1hcC5zZXQoa2V5LCBkZWZhdWx0VmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gIH0sXG4gIHNldChrZXksIHZhbHVlKSB7XG4gICAgbWFwLnNldChrZXksIHZhbHVlKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcGxhdGVFbmQobm9kZSkge1xuICBsZXQgZGF0YTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChub2RlICYmIChkYXRhID0gZGF0YU1hcC5nZXQobm9kZSkpICYmIGRhdGEuZW5kTm9kZSkge1xuICAgIG5vZGUgPSBkYXRhLmVuZE5vZGU7XG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRlbXBsYXRlKHRhcmdldCkge1xuICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcbiAgY29uc3Qgc3RhcnROb2RlID0gZGF0YS5zdGFydE5vZGU7XG5cbiAgaWYgKHN0YXJ0Tm9kZSkge1xuICAgIGNvbnN0IGVuZE5vZGUgPSBnZXRUZW1wbGF0ZUVuZChkYXRhLmVuZE5vZGUpO1xuXG4gICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgY29uc3QgbGFzdE5leHRTaWJsaW5nID0gZW5kTm9kZS5uZXh0U2libGluZztcblxuICAgIHdoaWxlIChub2RlKSB7XG4gICAgICBjb25zdCBuZXh0U2libGluZyA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgICBub2RlID0gbmV4dFNpYmxpbmcgIT09IGxhc3ROZXh0U2libGluZyAmJiBuZXh0U2libGluZztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZW1wbGF0ZS91dGlscy5qcyJdLCJuYW1lcyI6WyJtYXAiLCJXZWFrTWFwIiwiZGF0YU1hcCIsImdldCIsImtleSIsImRlZmF1bHRWYWx1ZSIsInZhbHVlIiwic2V0IiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsImNoaWxkIiwiY2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwic3RhcnROb2RlIiwibGFzdE5leHRTaWJsaW5nIiwibmV4dFNpYmxpbmciLCJwYXJlbnROb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQU1BLEdBQUcsR0FBRyxJQUFJQyxPQUFKLEVBQVo7QUFDTyxJQUFNQyxPQUFPLEdBQUc7QUFDckJDLEVBQUFBLEdBRHFCLGVBQ2pCQyxHQURpQixFQUNaQyxZQURZLEVBQ0U7QUFDckIsUUFBTUMsS0FBSyxHQUFHTixHQUFHLENBQUNHLEdBQUosQ0FBUUMsR0FBUixDQUFkO0FBQ0EsUUFBSUUsS0FBSixFQUFXLE9BQU9BLEtBQVA7O0FBRVgsUUFBSUQsWUFBSixFQUFrQjtBQUNoQkwsTUFBQUEsR0FBRyxDQUFDTyxHQUFKLENBQVFILEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELFdBQU9BLFlBQVA7QUFDRCxHQVZvQjtBQVdyQkUsRUFBQUEsR0FYcUIsZUFXakJILEdBWGlCLEVBV1pFLEtBWFksRUFXTDtBQUNkTixJQUFBQSxHQUFHLENBQUNPLEdBQUosQ0FBUUgsR0FBUixFQUFhRSxLQUFiO0FBQ0EsV0FBT0EsS0FBUDtBQUNEO0FBZG9CLENBQWhCOzs7QUFpQkEsU0FBU0UsY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFDbkMsTUFBSUMsSUFBSixDQURtQyxDQUVuQzs7QUFDQSxTQUFPRCxJQUFJLEtBQUtDLElBQUksR0FBR1IsT0FBTyxDQUFDQyxHQUFSLENBQVlNLElBQVosQ0FBWixDQUFKLElBQXNDQyxJQUFJLENBQUNDLE9BQWxELEVBQTJEO0FBQ3pERixJQUFBQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsT0FBWjtBQUNEOztBQUVELFNBQU9GLElBQVA7QUFDRDs7QUFFTSxTQUFTRyxjQUFULENBQXdCQyxNQUF4QixFQUFnQztBQUNyQyxNQUFJQSxNQUFNLENBQUNDLFFBQVAsS0FBb0JDLElBQUksQ0FBQ0MsU0FBN0IsRUFBd0M7QUFDdEMsUUFBSUMsS0FBSyxHQUFHSixNQUFNLENBQUNLLFVBQVAsQ0FBa0IsQ0FBbEIsQ0FBWjs7QUFDQSxXQUFPRCxLQUFQLEVBQWM7QUFDWkosTUFBQUEsTUFBTSxDQUFDTSxXQUFQLENBQW1CRixLQUFuQjtBQUNBQSxNQUFBQSxLQUFLLEdBQUdKLE1BQU0sQ0FBQ0ssVUFBUCxDQUFrQixDQUFsQixDQUFSO0FBQ0Q7QUFDRixHQU5ELE1BTU87QUFDTCxRQUFNUixJQUFJLEdBQUdSLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVSxNQUFaLENBQWI7O0FBRUEsUUFBSUgsSUFBSSxDQUFDVSxTQUFULEVBQW9CO0FBQ2xCLFVBQU1ULE9BQU8sR0FBR0gsY0FBYyxDQUFDRSxJQUFJLENBQUNDLE9BQU4sQ0FBOUI7QUFFQSxVQUFJRixJQUFJLEdBQUdDLElBQUksQ0FBQ1UsU0FBaEI7QUFDQSxVQUFNQyxlQUFlLEdBQUdWLE9BQU8sQ0FBQ1csV0FBaEM7O0FBRUEsYUFBT2IsSUFBUCxFQUFhO0FBQ1gsWUFBTWEsV0FBVyxHQUFHYixJQUFJLENBQUNhLFdBQXpCO0FBQ0FiLFFBQUFBLElBQUksQ0FBQ2MsVUFBTCxDQUFnQkosV0FBaEIsQ0FBNEJWLElBQTVCO0FBQ0FBLFFBQUFBLElBQUksR0FBR2EsV0FBVyxLQUFLRCxlQUFoQixJQUFtQ0MsV0FBMUM7QUFDRDtBQUNGO0FBQ0Y7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG1hcCA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgY29uc3QgZGF0YU1hcCA9IHtcbiAgZ2V0KGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgY29uc3QgdmFsdWUgPSBtYXAuZ2V0KGtleSk7XG4gICAgaWYgKHZhbHVlKSByZXR1cm4gdmFsdWU7XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICB9LFxuICBzZXQoa2V5LCB2YWx1ZSkge1xuICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBsYXRlRW5kKG5vZGUpIHtcbiAgbGV0IGRhdGE7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAobm9kZSAmJiAoZGF0YSA9IGRhdGFNYXAuZ2V0KG5vZGUpKSAmJiBkYXRhLmVuZE5vZGUpIHtcbiAgICBub2RlID0gZGF0YS5lbmROb2RlO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpIHtcbiAgaWYgKHRhcmdldC5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICBsZXQgY2hpbGQgPSB0YXJnZXQuY2hpbGROb2Rlc1swXTtcbiAgICB3aGlsZSAoY2hpbGQpIHtcbiAgICAgIHRhcmdldC5yZW1vdmVDaGlsZChjaGlsZCk7XG4gICAgICBjaGlsZCA9IHRhcmdldC5jaGlsZE5vZGVzWzBdO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcblxuICAgIGlmIChkYXRhLnN0YXJ0Tm9kZSkge1xuICAgICAgY29uc3QgZW5kTm9kZSA9IGdldFRlbXBsYXRlRW5kKGRhdGEuZW5kTm9kZSk7XG5cbiAgICAgIGxldCBub2RlID0gZGF0YS5zdGFydE5vZGU7XG4gICAgICBjb25zdCBsYXN0TmV4dFNpYmxpbmcgPSBlbmROb2RlLm5leHRTaWJsaW5nO1xuXG4gICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nICE9PSBsYXN0TmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
{
"name": "hybrids",
"version": "4.0.1",
"version": "4.0.2",
"description": "Web Components from plain objects and pure functions!",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

@@ -246,3 +246,3 @@ import { stringifyElement, shadyCSS, IS_IE } from '../utils';

if (template !== data.template) {
if (data.template) removeTemplate(target);
if (data.template || target.nodeType === Node.ELEMENT_NODE) removeTemplate(target);
data.lastArgs = null;

@@ -287,6 +287,6 @@

data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
if (target.nodeType === Node.TEXT_NODE) {
data.startNode = fragment.childNodes[0];
data.endNode = fragment.childNodes[fragment.childNodes.length - 1];
if (target.nodeType === Node.TEXT_NODE) {
let previousChild = target;

@@ -293,0 +293,0 @@

const map = new WeakMap();
export const dataMap = {
get(key, defaultValue) {
if (map.has(key)) {
return map.get(key);
}
const value = map.get(key);
if (value) return value;
if (defaultValue !== undefined) {
if (defaultValue) {
map.set(key, defaultValue);

@@ -31,17 +30,24 @@ }

export function removeTemplate(target) {
const data = dataMap.get(target);
const startNode = data.startNode;
if (target.nodeType !== Node.TEXT_NODE) {
let child = target.childNodes[0];
while (child) {
target.removeChild(child);
child = target.childNodes[0];
}
} else {
const data = dataMap.get(target);
if (startNode) {
const endNode = getTemplateEnd(data.endNode);
if (data.startNode) {
const endNode = getTemplateEnd(data.endNode);
let node = startNode;
const lastNextSibling = endNode.nextSibling;
let node = data.startNode;
const lastNextSibling = endNode.nextSibling;
while (node) {
const nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
while (node) {
const nextSibling = node.nextSibling;
node.parentNode.removeChild(node);
node = nextSibling !== lastNextSibling && nextSibling;
}
}
}
}

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