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 1.0.1 to 1.0.2

12

CHANGELOG.md

@@ -5,2 +5,14 @@ # Change Log

<a name="1.0.2"></a>
## [1.0.2](https://github.com/hybridsjs/hybrids/compare/v1.0.1...v1.0.2) (2018-05-22)
### Bug Fixes
* **cache:** clear previous value only if flag is set ([856e5c8](https://github.com/hybridsjs/hybrids/commit/856e5c8))
* **css:** use ShadyCSS api to support css custom properties in IE11 ([b2062c8](https://github.com/hybridsjs/hybrids/commit/b2062c8))
* **html:** expressions in table family elements ([87f7a55](https://github.com/hybridsjs/hybrids/commit/87f7a55))
<a name="1.0.1"></a>

@@ -7,0 +19,0 @@ ## [1.0.1](https://github.com/hybridsjs/hybrids/compare/v1.0.0...v1.0.1) (2018-05-18)

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,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},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=1)}([function(e,t,n){"use strict";(function(e){n.d(t,"b",function(){return o}),n.d(t,"e",function(){return i}),n.d(t,"d",function(){return u}),n.d(t,"c",function(){return c}),n.d(t,"a",function(){return a});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function o(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function i(e){return o(e=e[0].toLowerCase()+e.slice(1))}function u(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e.dispatchEvent(new CustomEvent(t,r({bubbles:!1},n)))}function c(){var e=new WeakMap;return{get:function(t,n){return e.has(t)?e.get(t):(void 0!==n&&e.set(t,n),n)},set:function(t,n){return e.set(t,n),n}}}var a="ActiveXObject"in e}).call(this,n(2))},function(e,t,n){"use strict";n.r(t);var r={};n.d(r,"define",function(){return J}),n.d(r,"key",function(){return K});var o=n(0),i="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},u=function(e){return e},c=function(e){if("object"!==(void 0===e?"undefined":i(e)))throw TypeError("[property] Passed value is not an object: "+(void 0===e?"undefined":i(e)));return Object.freeze(e)};function a(e,t){var n=void 0===e?"undefined":i(e),r=u;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":Object.freeze(e),r=c}return{get:function(t){return arguments.length>1&&void 0!==arguments[1]?arguments[1]:e},set:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,o=arguments[2];return r(n,o)},connect:"object"!==n&&"undefined"!==n?function(n,r,i){if(n[r]===e){var u=Object(o.b)(r);if(n.hasAttribute(u)){var c=n.getAttribute(u);n[r]=""===c||c}}return t&&t(n,r,i)}:t}}var f="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},s=new WeakMap,l=1e3/60,d=new Set,p=new WeakMap;function y(e){if("function"!=typeof e)throw TypeError("[render] The first argument must be a function: "+(void 0===e?"undefined":f(e)));return{get:function(t){var n=e(t);return function(){return n(t,t.shadowRoot)}},connect:function(e,t){return e.shadowRoot||e.attachShadow({mode:"open"}),s.set(e,t),function(){return s.delete(e)}}}}document.addEventListener("@invalidate",function(e){var t=e.composedPath()[0];s.has(t)&&(d.size||requestAnimationFrame(function(){return function e(t,n){if(n&&performance.now()-n>l)requestAnimationFrame(function(){return e(t)});else{var r=t.next(),o=r.done,i=r.value,u=performance.now(),c=function(){return e(t,u)};if(o)d.clear();else if(s.has(i)){var a=s.get(i),f=p.get(i),y=void 0;try{(y=i[a])!==f?(p.set(i,y),Promise.resolve().then(function(){try{y(),c()}catch(e){throw c(),e}})):c()}catch(e){throw c(),e}}else c()}}(d.values())}),d.add(t))});var v=new WeakMap;function b(e,t){var n=v.get(e);n||(n=new Map,v.set(e,n));var r=n.get(t);return r||(r={state:0,value:void 0,invalid:void 0,deps:void 0,checksum:void 0},n.set(t,r)),r}function m(e){var t=e.state;return e.deps.reduce(function(e,t){return e+m(t)},t)}var h=null;var g=function(){function e(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)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),w="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};function S(e){Object(o.d)(e,"@invalidate",{bubbles:!0,composed:!0})}var E=function(e,t){return t};function j(e,t){e.hybrids=t,e.connects=[],Object.keys(t).forEach(function(n){var r=t[n],o=void 0===r?"undefined":w(r);"render"===n?r=y(r):"function"===o?r={get:r}:null!==r&&"object"===o&&("object"!==o||r.get||r.set)||(r=a(r)),r.get=r.get||E,Object.defineProperty(e.prototype,n,{get:function(){return function(e,t,n){var r=b(e,t);if(h===r)throw h=null,Error("[cache] Try to get '"+t+"' of '"+e+"' in '"+t+"' get call");if(h&&h.deps.push(r),r.invalid===r.state)r.state+=1,r.value=void 0;else if(void 0!==r.checksum&&r.checksum===m(r))return r.value;var o=h;h=r,r.deps=[];try{r.value=n(e,r.value)}catch(e){throw h=null,e}return h=o,r.checksum=m(r),r.value}(this,n,r.get)},set:r.set&&function(e){var t=this;!function(e,t,n,r,o){if(h)throw h=null,Error("[cache] Try to set '"+t+"' of '"+e+"' in get call");var i=b(e,t),u=n(e,r,i.value);u!==i.value&&(i.state+=1,i.value=u,o())}(this,n,r.set,e,function(){return S(t)})},enumerable:!0,configurable:!1}),r.connect&&e.connects.push(function(e){return r.connect(e,n,function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&function(e,t){if(h)throw h=null,Error("[cache] Try to invalidate '"+t+"' in '"+e+"' during get invocation");var n=b(e,t);n.invalid=n.state}(e,n),S(e)})})})}function N(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return Reflect.construct(HTMLElement,t,this.constructor)}Object.setPrototypeOf(N.prototype,HTMLElement.prototype);var O=new WeakMap;function x(e,t){var n=window.customElements.get(e);if(n){if(n.hybrids===t)return n;throw Error("[define] Element '"+e+"' already defined")}var r=function(t){function n(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,N),g(n,[{key:"connectedCallback",value:function(){var e=this,t=this.constructor.connects.reduce(function(t,n){var r=n(e);return r&&t.add(r),t},new Set);O.set(this,t),S(this)}},{key:"disconnectedCallback",value:function(){O.get(this).forEach(function(e){return e()})}}],[{key:"name",get:function(){return e}}]),n}();return j(r,t),customElements.define(e,r),r}var k=new WeakMap;function T(e){return{get:function(t){return function(e,t){for(var n=e.parentElement||e.parentNode.host;n;){if(n.constructor.hybrids===t)return n;n=n.parentElement||n.parentNode&&n.parentNode.host}return n||null}(t,e)},connect:function(e,t,n){var r=e[t];if(r){var o=k.get(r);return o||(o=new Set,k.set(r,o)),o.add(n),function(){o.delete(n),n()}}return!1}}}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{deep:!1,nested:!1};return{get:function(n){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 i=t.constructor.hybrids;i&&i===n?(o.push(t),r.deep&&r.nested&&e(t,n,r,o)):r.deep&&e(t,n,r,o)}),o}(n,e,t)},connect:function(e,n,r){var o=new MutationObserver(r),i=function(t){var o=t.target;o!==e&&e[n].includes(o)&&r(!1)};return o.observe(e,{childList:!0,subtree:!!t.deep}),e.addEventListener("@invalidate",i),function(){o.disconnect(),e.removeEventListener("@invalidate",i)}}}}document.addEventListener("@invalidate",function(e){var t=k.get(e.composedPath()[0]);t&&t.forEach(function(e){return e()})});var C="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};function M(e,t,n,r){if(null===n||"object"!==(void 0===n?"undefined":C(n)))throw TypeError("Style value must be an object instance");var i=r.styleMap||new Map;r.styleMap=Object.keys(n).reduce(function(e,r){var u=Object(o.b)(r),c=n[r];return c||0===c?t.style.setProperty(u,c):t.style.removeProperty(u),e.set(u,c),i.delete(u),e},new Map),i.forEach(function(e,n){t.style[n]=""})}var _="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};function P(e,t,n,r){var o=r.classSet||new Set,i=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"===(void 0===e?"undefined":_(e))?Object.keys(e).forEach(function(n){return e[n]&&t.add(n)}):t.add(e),t}(n);r.classSet=i,i.forEach(function(e){t.classList.add(e),o.delete(e)}),o.forEach(function(e){t.classList.remove(e)})}var L=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var u,c=e[Symbol.iterator]();!(r=(u=c.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&c.return&&c.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),W="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},D=Object(o.c)();function F(e){for(var t=void 0;e&&(t=D.get(e))&&t.endNode;)e=t.endNode;return e}function R(e){if(e.nodeType!==Node.TEXT_NODE)Array.from(e.childNodes).forEach(function(e){return e.parentNode.removeChild(e)});else{var t=D.get(e),n=t.startNode;if(n)for(var r=n,o=F(t.endNode).nextSibling;r;){var i=r.nextSibling;r.parentNode.removeChild(r),r=i!==o&&i}}}function X(e,t,n){var r=Array.isArray(n)?"array":void 0===n?"undefined":W(n),o=D.get(t,{});switch(o.type!==r&&(R(t),o=D.set(t,{type:r}),""!==t.textContent&&(t.textContent="")),r){case"function":n(e,t);break;case"array":!function(e,t,n){var r=t,o=n.length-1,i=D.get(t),u=i.arrayMap;i.arrayMap=n.reduce(function(t,n,c){var a="function"==typeof n?n.id:c;if(t.has(a))throw Error("[html] '"+a+"' key already set. Use 'html`...`.key(id)' helper to set unique key.");var f=void 0;return u&&u.has(a)?(f=u.get(a),u.delete(a),f.previousSibling!==r&&function(e,t){var n=D.get(e),r=n.startNode,o=F(n.endNode);t.parentNode.insertBefore(e,t.nextSibling);for(var i=e,u=r;u;){var c=u.nextSibling;i.parentNode.insertBefore(u,i.nextSibling),i=u,u=c!==o.nextSibling&&c}}(f,r)):(f=document.createTextNode(""),r.parentNode.insertBefore(f,r.nextSibling)),X(e,f,n),r=F(D.get(f).endNode||f),0===c&&(i.startNode=f),c===o&&(i.endNode=r),t.set(a,f),t},new Map),u&&u.forEach(function(e){R(e),e.parentNode.removeChild(e)})}(e,t,n);break;default:n!==o.value&&(o.value=n,t.textContent="number"===r||n?n:"")}}function z(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null,!1)}var B=new WeakMap;var H="{{h-"+Date.now()+"}}",q=new RegExp(H,"g"),$="--"+Date.now()+"--",I=new RegExp($,"g");function U(e,t,n){var r=document.createElement("template"),i=[];if(r.innerHTML=e,n){var u=r.content.firstChild;r.content.removeChild(u),Array.from(u.childNodes).forEach(function(e){return r.content.appendChild(e)})}for(var c=z(r.content),a=0,f=function(){var e=c.currentNode;e.nodeType===Node.TEXT_NODE?(e.textContent!==H&&e.textContent.replace(H,function(t,n){e.splitText(n>0?n:t.length)}),e.textContent===H&&(o.a||(e.textContent=""),i.push([a,X]))):Array.from(e.attributes).forEach(function(r){var u=r.value.trim(),c=o.a?r.name.replace($,""):r.name;if(u===H){var f=t[i.length].replace(/\s*=\s*['"]*$/g,"").split(" ").pop();i.push([a,function(e,t,n){if("on"===t.substr(0,2)){var r=new WeakMap,o=t.substr(2);return function(e,t,n){r.has(t)||t.addEventListener(o,function(){for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];var u=r.get(t);u&&u.apply(void 0,[e].concat(o))}),r.set(t,n)}}switch(e){case"style":return M;case"class":return P;default:return function(r,o,i){if(!n&&t in o)o[t]!==i&&(o[t]=i);else if(!1===i||void 0===i||null===i)o.removeAttribute(e);else{var u=!0===i?"":String(i);o.getAttribute(e)!==u&&o.setAttribute(e,u)}}}}(c,f,n)]),e.removeAttribute(r.name)}else{var s=u.match(q);if(s){i.push([a,function(e,t,n){t.setAttribute(c,u.replace(H,null==n?"":n))}]);for(var l=1;l<s.length;l+=1)i.push([a,function(e,t,n){var r=t.getAttribute(c);t.setAttribute(c,r.replace(H,null==n?"":n))}]);r.value=u.replace(q,""),o.a&&c!==r.name&&(e.setAttribute(c,r.value),e.removeAttribute(r.name))}}}),a+=1};c.nextNode();)f();return function(e,t,n){var u=D.get(t,{type:"function"});if(r!==u.template){u.template&&R(t);var c=document.importNode(function(e,t){if(t&&"object"===W(window.ShadyCSS)){var n=B.get(e);n||(n=new Map,B.set(e,n));var r=n.get(t);return r||((r=document.createElement("template")).content.appendChild(document.importNode(e.content,!0)),n.set(t,r),window.ShadyCSS.prepareTemplate(r,t.toLowerCase())),r}return e}(r,e.tagName).content,!0),a=z(c),f=i.slice(0),s=0,l=f.shift(),d=[];for(Object.assign(u,{template:r,markers:d});a.nextNode();){var p=a.currentNode;for(o.a&&p.nodeType===Node.TEXT_NODE&&(p.textContent===H?p.textContent="":p.textContent=p.textContent.replace(I,""));l&&l[0]===s;)d.push([p,l[1]]),l=f.shift();s+=1}if(t.nodeType===Node.TEXT_NODE){var y=Array.from(c.childNodes);u.startNode=y[0],u.endNode=y[y.length-1];var v=t;y.forEach(function(e){t.parentNode.insertBefore(e,v.nextSibling),v=e})}else t.appendChild(c)}var b=0;u.markers.forEach(function(t){var r=L(t,2),o=r[0];(0,r[1])(e,o,n[b],u),b+=1})}}var Z="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},G=new Map;function J(e){return G.size||Promise.resolve().then(function(){G.forEach(function(e,t){return x(t,e)}),G.clear()}),Object.keys(e).forEach(function(t){var n=Z(e[t]);if("object"!==n&&"function"!==n)throw TypeError("[html] '"+t+"' key must be an object or a function");var r=Object(o.e)(t);if("function"===n){var i=window.customElements.get(r);if(i){if(i!==e[t])throw Error("[html] Element '"+r+"' already defined")}else window.customElements.define(r,e[t])}else{var u=G.get(r);if(u){if(u!==e[t])throw Error("[html] Duplicated <"+r+"> tag name for the definition in '"+t+"' key")}else G.set(r,e[t])}}),this}function K(e){return this.id=e,this}var Q=Object(o.c)();function V(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;return function(r,o){var i=void 0;t&&(i=setTimeout(function(){i=void 0,requestAnimationFrame(function(){t(r,o)})},n)),Q.set(o,e),e.then(function(t){i&&clearTimeout(i),Q.get(o)===e&&(t(r,o),Q.set(o,null))})}}var Y=new Map;function ee(e,t,n){var i=function(e){var t=e.join(H);return o.a?t.replace(/style\s*=\s*(["][^"]+["]|['][^']+[']|[^\s"'<>/]+)/g,function(e){return""+$+e}):t}(e);n&&(i="<svg>"+i+"</svg>");var u=Y.get(i);u||(u=U(i,e,n),Y.set(i,u));return Object.assign(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return u(e,n,t)},r)}function te(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return ee(e,n)}function ne(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return ee(e,n,!0)}Object.assign(te,{resolve:V}),Object.assign(ne,{resolve:V}),n.d(t,"define",function(){return x}),n.d(t,"property",function(){return a}),n.d(t,"parent",function(){return T}),n.d(t,"children",function(){return A}),n.d(t,"render",function(){return y}),n.d(t,"dispatch",function(){return o.d}),n.d(t,"html",function(){return te}),n.d(t,"svg",function(){return ne})},function(e,t){var n,r="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};n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":r(window))&&(n=window)}e.exports=n}])});
!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,{configurable:!1,enumerable:!0,get:r})},n.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},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=1)}([function(e,t,n){"use strict";(function(e){n.d(t,"b",function(){return o}),n.d(t,"e",function(){return i}),n.d(t,"d",function(){return u}),n.d(t,"c",function(){return c}),n.d(t,"f",function(){return a}),n.d(t,"a",function(){return f});var r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e};function o(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function i(e){return o(e=e[0].toLowerCase()+e.slice(1))}function u(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e.dispatchEvent(new CustomEvent(t,r({bubbles:!1},n)))}function c(){var e=new WeakMap;return{get:function(t,n){return e.has(t)?e.get(t):(void 0!==n&&e.set(t,n),n)},set:function(t,n){return e.set(t,n),n}}}function a(e,t){var n=window.ShadyCSS;return n&&!n.nativeShadow?e(n):t}var f="ActiveXObject"in e}).call(this,n(2))},function(e,t,n){"use strict";n.r(t);var r={};n.d(r,"define",function(){return K}),n.d(r,"key",function(){return Q});var o=n(0),i="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},u=function(e){return e},c=function(e){if("object"!==(void 0===e?"undefined":i(e)))throw TypeError("[property] Passed value is not an object: "+(void 0===e?"undefined":i(e)));return Object.freeze(e)};function a(e,t){var n=void 0===e?"undefined":i(e),r=u;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":Object.freeze(e),r=c}return{get:function(t){return arguments.length>1&&void 0!==arguments[1]?arguments[1]:e},set:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,o=arguments[2];return r(n,o)},connect:"object"!==n&&"undefined"!==n?function(n,r,i){if(n[r]===e){var u=Object(o.b)(r);if(n.hasAttribute(u)){var c=n.getAttribute(u);n[r]=""===c||c}}return t&&t(n,r,i)}:t}}var f="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},l=new WeakMap,s=new WeakMap,d=1e3/60,p=[];function y(e){if("function"!=typeof e)throw TypeError("[render] The first argument must be a function: "+(void 0===e?"undefined":f(e)));return{get:function(t){var n=e(t);return function(){return n(t,t.shadowRoot)}},connect:function(e,t){return e.shadowRoot||e.attachShadow({mode:"open"}),l.set(e,t),function(){return l.delete(e)}}}}document.addEventListener("@invalidate",function(e){var t=e.composedPath()[0];l.has(t)&&(p[0]||requestAnimationFrame(function(){return function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(n&&performance.now()-n>d)requestAnimationFrame(function(){return e(t)});else{var r=p[t],i=performance.now(),u=function(){return e(t+1,i)};if(r)if(l.has(r)){var c=l.get(r),a=s.get(r),f=void 0;try{if((f=r[c])!==a)return s.set(r,f),Promise.resolve().then(function(){try{f(),a||Object(o.f)(function(e){return e.styleElement(r)}),u()}catch(e){throw u(),e}});u()}catch(e){throw u(),e}}else u();else Object(o.f)(function(e){return p.forEach(function(t){return e.styleSubtree(t)})}),p=[]}return null}()}),-1===p.indexOf(t)&&p.push(t))});var v=new WeakMap;function b(e,t){var n=v.get(e);n||(n=new Map,v.set(e,n));var r=n.get(t);return r||(r={state:0,value:void 0,invalid:void 0,deps:void 0,checksum:void 0},n.set(t,r)),r}function h(e){var t=e.state;return e.deps.reduce(function(e,t){return e+h(t)},t)}var m=null;var g=function(){function e(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)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),w="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};function S(e){Object(o.d)(e,"@invalidate",{bubbles:!0,composed:!0})}var E=function(e,t){return t};function N(e,t){e.hybrids=t,e.connects=[],Object.keys(t).forEach(function(n){var r=t[n],o=void 0===r?"undefined":w(r);"render"===n?r=y(r):"function"===o?r={get:r}:null!==r&&"object"===o&&("object"!==o||r.get||r.set)||(r=a(r)),r.get=r.get||E,Object.defineProperty(e.prototype,n,{get:function(){return function(e,t,n){var r=b(e,t);if(m===r)throw m=null,Error("[cache] Try to get '"+t+"' of '"+e+"' in '"+t+"' get call");if(m&&m.deps.push(r),r.invalid===r.state)r.state+=1;else if(void 0!==r.checksum&&r.checksum===h(r))return r.value;var o=m;m=r,r.deps=[];try{r.value=n(e,r.value)}catch(e){throw m=null,e}return m=o,r.checksum=h(r),r.value}(this,n,r.get)},set:r.set&&function(e){var t=this;!function(e,t,n,r,o){if(m)throw m=null,Error("[cache] Try to set '"+t+"' of '"+e+"' in get call");var i=b(e,t),u=n(e,r,i.value);u!==i.value&&(i.state+=1,i.value=u,o())}(this,n,r.set,e,function(){return S(t)})},enumerable:!0,configurable:!1}),r.connect&&e.connects.push(function(e){return r.connect(e,n,function(){(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&function(e,t,n){if(m)throw m=null,Error("[cache] Try to invalidate '"+t+"' in '"+e+"' during get invocation");var r=b(e,t);r.invalid=r.state,n&&(r.value=void 0)}(e,n),S(e)})})})}function j(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return Reflect.construct(HTMLElement,t,this.constructor)}Object.setPrototypeOf(j.prototype,HTMLElement.prototype);var O=new WeakMap;function x(e,t){var n=window.customElements.get(e);if(n){if(n.hybrids===t)return n;throw Error("[define] Element '"+e+"' already defined")}var r=function(t){function n(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(n.__proto__||Object.getPrototypeOf(n)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,j),g(n,[{key:"connectedCallback",value:function(){var e=this,t=this.constructor.connects.reduce(function(t,n){var r=n(e);return r&&t.add(r),t},new Set);O.set(this,t),S(this)}},{key:"disconnectedCallback",value:function(){O.get(this).forEach(function(e){return e()})}}],[{key:"name",get:function(){return e}}]),n}();return N(r,t),customElements.define(e,r),r}var T=new WeakMap;function k(e){return{get:function(t){return function(e,t){for(var n=e.parentElement||e.parentNode.host;n;){if(n.constructor.hybrids===t)return n;n=n.parentElement||n.parentNode&&n.parentNode.host}return n||null}(t,e)},connect:function(e,t,n){var r=e[t];if(r){var o=T.get(r);return o||(o=new Set,T.set(r,o)),o.add(n),function(){o.delete(n),n()}}return!1}}}function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{deep:!1,nested:!1};return{get:function(n){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 i=t.constructor.hybrids;i&&i===n?(o.push(t),r.deep&&r.nested&&e(t,n,r,o)):r.deep&&e(t,n,r,o)}),o}(n,e,t)},connect:function(e,n,r){var o=new MutationObserver(r),i=function(t){var o=t.target;o!==e&&e[n].includes(o)&&r(!1)};return o.observe(e,{childList:!0,subtree:!!t.deep}),e.addEventListener("@invalidate",i),function(){o.disconnect(),e.removeEventListener("@invalidate",i)}}}}document.addEventListener("@invalidate",function(e){var t=T.get(e.composedPath()[0]);t&&t.forEach(function(e){return e()})});var C="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};function M(e,t,n,r){if(null===n||"object"!==(void 0===n?"undefined":C(n)))throw TypeError("Style value must be an object instance");var i=r.styleMap||new Map;r.styleMap=Object.keys(n).reduce(function(e,r){var u=Object(o.b)(r),c=n[r];return c||0===c?t.style.setProperty(u,c):t.style.removeProperty(u),e.set(u,c),i.delete(u),e},new Map),i.forEach(function(e,n){t.style[n]=""})}var _="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};function P(e,t,n,r){var o=r.classSet||new Set,i=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"===(void 0===e?"undefined":_(e))?Object.keys(e).forEach(function(n){return e[n]&&t.add(n)}):t.add(e),t}(n);r.classSet=i,i.forEach(function(e){t.classList.add(e),o.delete(e)}),o.forEach(function(e){t.classList.remove(e)})}var L=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var u,c=e[Symbol.iterator]();!(r=(u=c.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&c.return&&c.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),W="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},B=Object(o.c)();function D(e){for(var t=void 0;e&&(t=B.get(e))&&t.endNode;)e=t.endNode;return e}function F(e){if(e.nodeType!==Node.TEXT_NODE)Array.from(e.childNodes).forEach(function(e){return e.parentNode.removeChild(e)});else{var t=B.get(e),n=t.startNode;if(n)for(var r=n,o=D(t.endNode).nextSibling;r;){var i=r.nextSibling;r.parentNode.removeChild(r),r=i!==o&&i}}}function H(e,t,n){var r=Array.isArray(n)?"array":void 0===n?"undefined":W(n),o=B.get(t,{});switch(o.type!==r&&(F(t),o=B.set(t,{type:r}),""!==t.textContent&&(t.textContent="")),r){case"function":n(e,t);break;case"array":!function(e,t,n){var r=t,o=n.length-1,i=B.get(t),u=i.arrayMap;i.arrayMap=n.reduce(function(t,n,c){var a="function"==typeof n?n.id:c;if(t.has(a))throw Error("[html] '"+a+"' key already set. Use 'html`...`.key(id)' helper to set unique key.");var f=void 0;return u&&u.has(a)?(f=u.get(a),u.delete(a),f.previousSibling!==r&&function(e,t){var n=B.get(e),r=n.startNode,o=D(n.endNode);t.parentNode.insertBefore(e,t.nextSibling);for(var i=e,u=r;u;){var c=u.nextSibling;i.parentNode.insertBefore(u,i.nextSibling),i=u,u=c!==o.nextSibling&&c}}(f,r)):(f=document.createTextNode(""),r.parentNode.insertBefore(f,r.nextSibling)),H(e,f,n),r=D(B.get(f).endNode||f),0===c&&(i.startNode=f),c===o&&(i.endNode=r),t.set(a,f),t},new Map),u&&u.forEach(function(e){F(e),e.parentNode.removeChild(e)})}(e,t,n);break;default:n!==o.value&&(o.value=n,t.textContent="number"===r||n?n:"")}}var R="{{h-"+Date.now()+"}}",X=new RegExp(R,"g"),q="--"+Date.now()+"--",z=new RegExp(q,"g"),$=new WeakMap;function I(e){return document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_TEXT,null,!1)}var U=document.createElement("div");function Z(e,t,n){var r=document.createElement("template"),i=[];if(o.a?r.innerHTML=e:(U.innerHTML="<template>"+e+"</template>",r.content.appendChild(U.children[0].content)),n){var u=r.content.firstChild;r.content.removeChild(u),Array.from(u.childNodes).forEach(function(e){return r.content.appendChild(e)})}!function(e){for(var t=document.createNodeIterator(e,NodeFilter.SHOW_COMMENT,null,!1),n=void 0;n=t.nextNode();)n.textContent===R&&(n.parentNode.insertBefore(document.createTextNode(R),n),n.parentNode.removeChild(n))}(r.content);for(var c=I(r.content),a=0,f=function(){var e=c.currentNode;e.nodeType===Node.TEXT_NODE?(e.textContent!==R&&e.textContent.replace(R,function(t,n){e.splitText(n>0?n:t.length)}),e.textContent===R&&(o.a||(e.textContent=""),i.push([a,H]))):Array.from(e.attributes).forEach(function(r){var u=r.value.trim(),c=o.a?r.name.replace(q,""):r.name;if(u===R){var f=t[i.length].replace(/\s*=\s*['"]*$/g,"").split(" ").pop();i.push([a,function(e,t,n){if("on"===t.substr(0,2)){var r=new WeakMap,o=t.substr(2);return function(e,t,n){r.has(t)||t.addEventListener(o,function(){for(var n=arguments.length,o=Array(n),i=0;i<n;i++)o[i]=arguments[i];var u=r.get(t);u&&u.apply(void 0,[e].concat(o))}),r.set(t,n)}}switch(e){case"style":return M;case"class":return P;default:return function(r,o,i){if(!n&&t in o)o[t]!==i&&(o[t]=i);else if(!1===i||void 0===i||null===i)o.removeAttribute(e);else{var u=!0===i?"":String(i);o.getAttribute(e)!==u&&o.setAttribute(e,u)}}}}(c,f,n)]),e.removeAttribute(r.name)}else{var l=u.match(X);if(l){i.push([a,function(e,t,n){t.setAttribute(c,u.replace(R,null==n?"":n))}]);for(var s=1;s<l.length;s+=1)i.push([a,function(e,t,n){var r=t.getAttribute(c);t.setAttribute(c,r.replace(R,null==n?"":n))}]);r.value=u.replace(X,""),o.a&&c!==r.name&&(e.setAttribute(c,r.value),e.removeAttribute(r.name))}}}),a+=1};c.nextNode();)f();return function(e,t,n){var u=B.get(t,{type:"function"});if(r!==u.template){u.template&&F(t);var c=document.importNode(function(e,t){return t?Object(o.f)(function(n){var r=$.get(e);r||(r=new Map,$.set(e,r));var o=r.get(t);if(!o){(o=document.createElement("template")).content.appendChild(document.importNode(e.content,!0)),r.set(t,o);var i=o.content.querySelectorAll("style");Array.from(i).forEach(function(e){for(var t=e.childNodes.length+1,n=0;n<t;n+=1)e.parentNode.insertBefore(document.createTextNode(R),e)}),n.prepareTemplate(o,t.toLowerCase())}return o},e):e}(r,e.tagName).content,!0),a=I(c),f=i.slice(0),l=0,s=f.shift(),d=[];for(Object.assign(u,{template:r,markers:d});a.nextNode();){var p=a.currentNode;for(p.nodeType===Node.TEXT_NODE&&(p.textContent===R?p.textContent="":o.a&&(p.textContent=p.textContent.replace(z,"")));s&&s[0]===l;)d.push([p,s[1]]),s=f.shift();l+=1}if(t.nodeType===Node.TEXT_NODE){var y=Array.from(c.childNodes);u.startNode=y[0],u.endNode=y[y.length-1];var v=t;y.forEach(function(e){t.parentNode.insertBefore(e,v.nextSibling),v=e})}else t.appendChild(c)}var b=0;u.markers.forEach(function(t){var r=L(t,2),o=r[0];(0,r[1])(e,o,n[b],u),b+=1})}}var G="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},J=new Map;function K(e){return J.size||Promise.resolve().then(function(){J.forEach(function(e,t){return x(t,e)}),J.clear()}),Object.keys(e).forEach(function(t){var n=G(e[t]);if("object"!==n&&"function"!==n)throw TypeError("[html] '"+t+"' key must be an object or a function");var r=Object(o.e)(t);if("function"===n){var i=window.customElements.get(r);if(i){if(i!==e[t])throw Error("[html] Element '"+r+"' already defined")}else window.customElements.define(r,e[t])}else{var u=J.get(r);if(u){if(u!==e[t])throw Error("[html] Duplicated <"+r+"> tag name for the definition in '"+t+"' key")}else J.set(r,e[t])}}),this}function Q(e){return this.id=e,this}var V=Object(o.c)();function Y(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:200;return function(r,o){var i=void 0;t&&(i=setTimeout(function(){i=void 0,requestAnimationFrame(function(){t(r,o)})},n)),V.set(o,e),e.then(function(t){i&&clearTimeout(i),V.get(o)===e&&(t(r,o),V.set(o,null))})}}var ee=new Map;function te(e,t,n){var i=function(e){var t=e.reduce(function(t,n,r){return 0===r?n:e.slice(r).join("").match(/\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)?t+"\x3c!--"+R+"--\x3e"+n:t+R+n},"");return o.a?t.replace(/style\s*=\s*(["][^"]+["]|['][^']+[']|[^\s"'<>/]+)/g,function(e){return""+q+e}):t}(e);n&&(i="<svg>"+i+"</svg>");var u=ee.get(i);u||(u=Z(i,e,n),ee.set(i,u));return Object.assign(function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return u(e,n,t)},r)}function ne(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return te(e,n)}function re(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return te(e,n,!0)}Object.assign(ne,{resolve:Y}),Object.assign(re,{resolve:Y}),n.d(t,"define",function(){return x}),n.d(t,"property",function(){return a}),n.d(t,"parent",function(){return k}),n.d(t,"children",function(){return A}),n.d(t,"render",function(){return y}),n.d(t,"dispatch",function(){return o.d}),n.d(t,"html",function(){return ne}),n.d(t,"svg",function(){return re})},function(e,t){var n,r="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};n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===("undefined"==typeof window?"undefined":r(window))&&(n=window)}e.exports=n}])});
//# sourceMappingURL=hybrids.js.map

@@ -49,3 +49,2 @@ var entries = new WeakMap();

entry.state += 1;
entry.value = undefined;
} else if (entry.checksum !== undefined && entry.checksum === calculateChecksum(entry)) {

@@ -91,3 +90,3 @@ return entry.value;

export function invalidate(target, key) {
export function invalidate(target, key, clearValue) {
if (context) {

@@ -99,4 +98,8 @@ context = null;

var entry = getEntry(target, key);
entry.invalid = entry.state;
if (clearValue) {
entry.value = undefined;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWNoZS5qcyJdLCJuYW1lcyI6WyJlbnRyaWVzIiwiV2Vha01hcCIsImdldEVudHJ5IiwidGFyZ2V0Iiwia2V5IiwidGFyZ2V0TWFwIiwiZ2V0IiwiTWFwIiwic2V0IiwiZW50cnkiLCJzdGF0ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiaW52YWxpZCIsImRlcHMiLCJjaGVja3N1bSIsImNhbGN1bGF0ZUNoZWNrc3VtIiwicmVkdWNlIiwiYWNjIiwiY29udGV4dCIsImdldHRlciIsIkVycm9yIiwicHVzaCIsInBhcmVudENvbnRleHQiLCJlIiwic2V0dGVyIiwiY2FsbGJhY2siLCJuZXdWYWx1ZSIsImludmFsaWRhdGUiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLFVBQVUsSUFBSUMsT0FBSixFQUFoQjtBQUNBLE9BQU8sU0FBU0MsUUFBVCxDQUFrQkMsTUFBbEIsRUFBMEJDLEdBQTFCLEVBQStCO0FBQ3BDLE1BQUlDLFlBQVlMLFFBQVFNLEdBQVIsQ0FBWUgsTUFBWixDQUFoQjtBQUNBLE1BQUksQ0FBQ0UsU0FBTCxFQUFnQjtBQUNkQSxnQkFBWSxJQUFJRSxHQUFKLEVBQVo7QUFDQVAsWUFBUVEsR0FBUixDQUFZTCxNQUFaLEVBQW9CRSxTQUFwQjtBQUNEOztBQUVELE1BQUlJLFFBQVFKLFVBQVVDLEdBQVYsQ0FBY0YsR0FBZCxDQUFaOztBQUVBLE1BQUksQ0FBQ0ssS0FBTCxFQUFZO0FBQ1ZBLFlBQVE7QUFDTkMsYUFBTyxDQUREO0FBRU5DLGFBQU9DLFNBRkQ7QUFHTkMsZUFBU0QsU0FISDtBQUlORSxZQUFNRixTQUpBO0FBS05HLGdCQUFVSDtBQUxKLEtBQVI7QUFPQVAsY0FBVUcsR0FBVixDQUFjSixHQUFkLEVBQW1CSyxLQUFuQjtBQUNEOztBQUVELFNBQU9BLEtBQVA7QUFDRDs7QUFFRCxTQUFTTyxpQkFBVCxPQUE0QztBQUFBLE1BQWZOLEtBQWUsUUFBZkEsS0FBZTtBQUFBLE1BQVJJLElBQVEsUUFBUkEsSUFBUTs7QUFDMUMsU0FBT0EsS0FBS0csTUFBTCxDQUNMLFVBQUNDLEdBQUQsRUFBTVQsS0FBTjtBQUFBLFdBQWdCUyxNQUFNRixrQkFBa0JQLEtBQWxCLENBQXRCO0FBQUEsR0FESyxFQUVMQyxLQUZLLENBQVA7QUFJRDs7QUFFRCxJQUFJUyxVQUFVLElBQWQ7QUFDQSxPQUFPLFNBQVNiLEdBQVQsQ0FBYUgsTUFBYixFQUFxQkMsR0FBckIsRUFBMEJnQixNQUExQixFQUFrQztBQUN2QyxNQUFNWCxRQUFRUCxTQUFTQyxNQUFULEVBQWlCQyxHQUFqQixDQUFkOztBQUVBLE1BQUllLFlBQVlWLEtBQWhCLEVBQXVCO0FBQ3JCVSxjQUFVLElBQVY7QUFDQSxVQUFNRSwrQkFBNkJqQixHQUE3QixjQUF5Q0QsTUFBekMsY0FBd0RDLEdBQXhELGdCQUFOO0FBQ0Q7O0FBRUQsTUFBSWUsT0FBSixFQUFhO0FBQ1hBLFlBQVFMLElBQVIsQ0FBYVEsSUFBYixDQUFrQmIsS0FBbEI7QUFDRDs7QUFFRCxNQUFJQSxNQUFNSSxPQUFOLEtBQWtCSixNQUFNQyxLQUE1QixFQUFtQztBQUNqQ0QsVUFBTUMsS0FBTixJQUFlLENBQWY7QUFDQUQsVUFBTUUsS0FBTixHQUFjQyxTQUFkO0FBQ0QsR0FIRCxNQUdPLElBQUlILE1BQU1NLFFBQU4sS0FBbUJILFNBQW5CLElBQWdDSCxNQUFNTSxRQUFOLEtBQW1CQyxrQkFBa0JQLEtBQWxCLENBQXZELEVBQWlGO0FBQ3RGLFdBQU9BLE1BQU1FLEtBQWI7QUFDRDs7QUFFRCxNQUFNWSxnQkFBZ0JKLE9BQXRCO0FBQ0FBLFlBQVVWLEtBQVY7O0FBRUFBLFFBQU1LLElBQU4sR0FBYSxFQUFiOztBQUVBLE1BQUk7QUFDRkwsVUFBTUUsS0FBTixHQUFjUyxPQUFPakIsTUFBUCxFQUFlTSxNQUFNRSxLQUFyQixDQUFkO0FBQ0QsR0FGRCxDQUVFLE9BQU9hLENBQVAsRUFBVTtBQUNWTCxjQUFVLElBQVY7QUFDQSxVQUFNSyxDQUFOO0FBQ0Q7O0FBRURMLFlBQVVJLGFBQVY7O0FBRUFkLFFBQU1NLFFBQU4sR0FBaUJDLGtCQUFrQlAsS0FBbEIsQ0FBakI7O0FBRUEsU0FBT0EsTUFBTUUsS0FBYjtBQUNEOztBQUVELE9BQU8sU0FBU0gsR0FBVCxDQUFhTCxNQUFiLEVBQXFCQyxHQUFyQixFQUEwQnFCLE1BQTFCLEVBQWtDZCxLQUFsQyxFQUF5Q2UsUUFBekMsRUFBbUQ7QUFDeEQsTUFBSVAsT0FBSixFQUFhO0FBQ1hBLGNBQVUsSUFBVjtBQUNBLFVBQU1FLCtCQUE2QmpCLEdBQTdCLGNBQXlDRCxNQUF6QyxtQkFBTjtBQUNEOztBQUVELE1BQU1NLFFBQVFQLFNBQVNDLE1BQVQsRUFBaUJDLEdBQWpCLENBQWQ7QUFDQSxNQUFNdUIsV0FBV0YsT0FBT3RCLE1BQVAsRUFBZVEsS0FBZixFQUFzQkYsTUFBTUUsS0FBNUIsQ0FBakI7O0FBRUEsTUFBSWdCLGFBQWFsQixNQUFNRSxLQUF2QixFQUE4QjtBQUM1QkYsVUFBTUMsS0FBTixJQUFlLENBQWY7QUFDQUQsVUFBTUUsS0FBTixHQUFjZ0IsUUFBZDs7QUFFQUQ7QUFDRDtBQUNGOztBQUVELE9BQU8sU0FBU0UsVUFBVCxDQUFvQnpCLE1BQXBCLEVBQTRCQyxHQUE1QixFQUFpQztBQUN0QyxNQUFJZSxPQUFKLEVBQWE7QUFDWEEsY0FBVSxJQUFWO0FBQ0EsVUFBTUUsc0NBQW9DakIsR0FBcEMsY0FBZ0RELE1BQWhELDZCQUFOO0FBQ0Q7O0FBRUQsTUFBTU0sUUFBUVAsU0FBU0MsTUFBVCxFQUFpQkMsR0FBakIsQ0FBZDtBQUNBSyxRQUFNSSxPQUFOLEdBQWdCSixNQUFNQyxLQUF0QjtBQUNEIiwiZmlsZSI6ImNhY2hlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW50cmllcyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnkodGFyZ2V0LCBrZXkpIHtcbiAgbGV0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWFwKSB7XG4gICAgdGFyZ2V0TWFwID0gbmV3IE1hcCgpO1xuICAgIGVudHJpZXMuc2V0KHRhcmdldCwgdGFyZ2V0TWFwKTtcbiAgfVxuXG4gIGxldCBlbnRyeSA9IHRhcmdldE1hcC5nZXQoa2V5KTtcblxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW50cnkgPSB7XG4gICAgICBzdGF0ZTogMCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBpbnZhbGlkOiB1bmRlZmluZWQsXG4gICAgICBkZXBzOiB1bmRlZmluZWQsXG4gICAgICBjaGVja3N1bTogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGFyZ2V0TWFwLnNldChrZXksIGVudHJ5KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tzdW0oeyBzdGF0ZSwgZGVwcyB9KSB7XG4gIHJldHVybiBkZXBzLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gYWNjICsgY2FsY3VsYXRlQ2hlY2tzdW0oZW50cnkpLFxuICAgIHN0YXRlLFxuICApO1xufVxuXG5sZXQgY29udGV4dCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCBnZXR0ZXIpIHtcbiAgY29uc3QgZW50cnkgPSBnZXRFbnRyeSh0YXJnZXQsIGtleSk7XG5cbiAgaWYgKGNvbnRleHQgPT09IGVudHJ5KSB7XG4gICAgY29udGV4dCA9IG51bGw7XG4gICAgdGhyb3cgRXJyb3IoYFtjYWNoZV0gVHJ5IHRvIGdldCAnJHtrZXl9JyBvZiAnJHt0YXJnZXR9JyBpbiAnJHtrZXl9JyBnZXQgY2FsbGApO1xuICB9XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmRlcHMucHVzaChlbnRyeSk7XG4gIH1cblxuICBpZiAoZW50cnkuaW52YWxpZCA9PT0gZW50cnkuc3RhdGUpIHtcbiAgICBlbnRyeS5zdGF0ZSArPSAxO1xuICAgIGVudHJ5LnZhbHVlID0gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGVudHJ5LmNoZWNrc3VtICE9PSB1bmRlZmluZWQgJiYgZW50cnkuY2hlY2tzdW0gPT09IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KSkge1xuICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSBjb250ZXh0O1xuICBjb250ZXh0ID0gZW50cnk7XG5cbiAgZW50cnkuZGVwcyA9IFtdO1xuXG4gIHRyeSB7XG4gICAgZW50cnkudmFsdWUgPSBnZXR0ZXIodGFyZ2V0LCBlbnRyeS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgY29udGV4dCA9IHBhcmVudENvbnRleHQ7XG5cbiAgZW50cnkuY2hlY2tzdW0gPSBjYWxjdWxhdGVDaGVja3N1bShlbnRyeSk7XG5cbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCBzZXR0ZXIsIHZhbHVlLCBjYWxsYmFjaykge1xuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBudWxsO1xuICAgIHRocm93IEVycm9yKGBbY2FjaGVdIFRyeSB0byBzZXQgJyR7a2V5fScgb2YgJyR7dGFyZ2V0fScgaW4gZ2V0IGNhbGxgKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBjb25zdCBuZXdWYWx1ZSA9IHNldHRlcih0YXJnZXQsIHZhbHVlLCBlbnRyeS52YWx1ZSk7XG5cbiAgaWYgKG5ld1ZhbHVlICE9PSBlbnRyeS52YWx1ZSkge1xuICAgIGVudHJ5LnN0YXRlICs9IDE7XG4gICAgZW50cnkudmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGUodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBFcnJvcihgW2NhY2hlXSBUcnkgdG8gaW52YWxpZGF0ZSAnJHtrZXl9JyBpbiAnJHt0YXJnZXR9JyBkdXJpbmcgZ2V0IGludm9jYXRpb25gKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBlbnRyeS5pbnZhbGlkID0gZW50cnkuc3RhdGU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWNoZS5qcyJdLCJuYW1lcyI6WyJlbnRyaWVzIiwiV2Vha01hcCIsImdldEVudHJ5IiwidGFyZ2V0Iiwia2V5IiwidGFyZ2V0TWFwIiwiZ2V0IiwiTWFwIiwic2V0IiwiZW50cnkiLCJzdGF0ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiaW52YWxpZCIsImRlcHMiLCJjaGVja3N1bSIsImNhbGN1bGF0ZUNoZWNrc3VtIiwicmVkdWNlIiwiYWNjIiwiY29udGV4dCIsImdldHRlciIsIkVycm9yIiwicHVzaCIsInBhcmVudENvbnRleHQiLCJlIiwic2V0dGVyIiwiY2FsbGJhY2siLCJuZXdWYWx1ZSIsImludmFsaWRhdGUiLCJjbGVhclZhbHVlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFNQSxVQUFVLElBQUlDLE9BQUosRUFBaEI7QUFDQSxPQUFPLFNBQVNDLFFBQVQsQ0FBa0JDLE1BQWxCLEVBQTBCQyxHQUExQixFQUErQjtBQUNwQyxNQUFJQyxZQUFZTCxRQUFRTSxHQUFSLENBQVlILE1BQVosQ0FBaEI7QUFDQSxNQUFJLENBQUNFLFNBQUwsRUFBZ0I7QUFDZEEsZ0JBQVksSUFBSUUsR0FBSixFQUFaO0FBQ0FQLFlBQVFRLEdBQVIsQ0FBWUwsTUFBWixFQUFvQkUsU0FBcEI7QUFDRDs7QUFFRCxNQUFJSSxRQUFRSixVQUFVQyxHQUFWLENBQWNGLEdBQWQsQ0FBWjs7QUFFQSxNQUFJLENBQUNLLEtBQUwsRUFBWTtBQUNWQSxZQUFRO0FBQ05DLGFBQU8sQ0FERDtBQUVOQyxhQUFPQyxTQUZEO0FBR05DLGVBQVNELFNBSEg7QUFJTkUsWUFBTUYsU0FKQTtBQUtORyxnQkFBVUg7QUFMSixLQUFSO0FBT0FQLGNBQVVHLEdBQVYsQ0FBY0osR0FBZCxFQUFtQkssS0FBbkI7QUFDRDs7QUFFRCxTQUFPQSxLQUFQO0FBQ0Q7O0FBRUQsU0FBU08saUJBQVQsT0FBNEM7QUFBQSxNQUFmTixLQUFlLFFBQWZBLEtBQWU7QUFBQSxNQUFSSSxJQUFRLFFBQVJBLElBQVE7O0FBQzFDLFNBQU9BLEtBQUtHLE1BQUwsQ0FDTCxVQUFDQyxHQUFELEVBQU1ULEtBQU47QUFBQSxXQUFnQlMsTUFBTUYsa0JBQWtCUCxLQUFsQixDQUF0QjtBQUFBLEdBREssRUFFTEMsS0FGSyxDQUFQO0FBSUQ7O0FBRUQsSUFBSVMsVUFBVSxJQUFkO0FBQ0EsT0FBTyxTQUFTYixHQUFULENBQWFILE1BQWIsRUFBcUJDLEdBQXJCLEVBQTBCZ0IsTUFBMUIsRUFBa0M7QUFDdkMsTUFBTVgsUUFBUVAsU0FBU0MsTUFBVCxFQUFpQkMsR0FBakIsQ0FBZDs7QUFFQSxNQUFJZSxZQUFZVixLQUFoQixFQUF1QjtBQUNyQlUsY0FBVSxJQUFWO0FBQ0EsVUFBTUUsK0JBQTZCakIsR0FBN0IsY0FBeUNELE1BQXpDLGNBQXdEQyxHQUF4RCxnQkFBTjtBQUNEOztBQUVELE1BQUllLE9BQUosRUFBYTtBQUNYQSxZQUFRTCxJQUFSLENBQWFRLElBQWIsQ0FBa0JiLEtBQWxCO0FBQ0Q7O0FBRUQsTUFBSUEsTUFBTUksT0FBTixLQUFrQkosTUFBTUMsS0FBNUIsRUFBbUM7QUFDakNELFVBQU1DLEtBQU4sSUFBZSxDQUFmO0FBQ0QsR0FGRCxNQUVPLElBQUlELE1BQU1NLFFBQU4sS0FBbUJILFNBQW5CLElBQWdDSCxNQUFNTSxRQUFOLEtBQW1CQyxrQkFBa0JQLEtBQWxCLENBQXZELEVBQWlGO0FBQ3RGLFdBQU9BLE1BQU1FLEtBQWI7QUFDRDs7QUFFRCxNQUFNWSxnQkFBZ0JKLE9BQXRCO0FBQ0FBLFlBQVVWLEtBQVY7O0FBRUFBLFFBQU1LLElBQU4sR0FBYSxFQUFiOztBQUVBLE1BQUk7QUFDRkwsVUFBTUUsS0FBTixHQUFjUyxPQUFPakIsTUFBUCxFQUFlTSxNQUFNRSxLQUFyQixDQUFkO0FBQ0QsR0FGRCxDQUVFLE9BQU9hLENBQVAsRUFBVTtBQUNWTCxjQUFVLElBQVY7QUFDQSxVQUFNSyxDQUFOO0FBQ0Q7O0FBRURMLFlBQVVJLGFBQVY7O0FBRUFkLFFBQU1NLFFBQU4sR0FBaUJDLGtCQUFrQlAsS0FBbEIsQ0FBakI7O0FBRUEsU0FBT0EsTUFBTUUsS0FBYjtBQUNEOztBQUVELE9BQU8sU0FBU0gsR0FBVCxDQUFhTCxNQUFiLEVBQXFCQyxHQUFyQixFQUEwQnFCLE1BQTFCLEVBQWtDZCxLQUFsQyxFQUF5Q2UsUUFBekMsRUFBbUQ7QUFDeEQsTUFBSVAsT0FBSixFQUFhO0FBQ1hBLGNBQVUsSUFBVjtBQUNBLFVBQU1FLCtCQUE2QmpCLEdBQTdCLGNBQXlDRCxNQUF6QyxtQkFBTjtBQUNEOztBQUVELE1BQU1NLFFBQVFQLFNBQVNDLE1BQVQsRUFBaUJDLEdBQWpCLENBQWQ7QUFDQSxNQUFNdUIsV0FBV0YsT0FBT3RCLE1BQVAsRUFBZVEsS0FBZixFQUFzQkYsTUFBTUUsS0FBNUIsQ0FBakI7O0FBRUEsTUFBSWdCLGFBQWFsQixNQUFNRSxLQUF2QixFQUE4QjtBQUM1QkYsVUFBTUMsS0FBTixJQUFlLENBQWY7QUFDQUQsVUFBTUUsS0FBTixHQUFjZ0IsUUFBZDs7QUFFQUQ7QUFDRDtBQUNGOztBQUVELE9BQU8sU0FBU0UsVUFBVCxDQUFvQnpCLE1BQXBCLEVBQTRCQyxHQUE1QixFQUFpQ3lCLFVBQWpDLEVBQTZDO0FBQ2xELE1BQUlWLE9BQUosRUFBYTtBQUNYQSxjQUFVLElBQVY7QUFDQSxVQUFNRSxzQ0FBb0NqQixHQUFwQyxjQUFnREQsTUFBaEQsNkJBQU47QUFDRDs7QUFFRCxNQUFNTSxRQUFRUCxTQUFTQyxNQUFULEVBQWlCQyxHQUFqQixDQUFkOztBQUVBSyxRQUFNSSxPQUFOLEdBQWdCSixNQUFNQyxLQUF0QjtBQUNBLE1BQUltQixVQUFKLEVBQWdCO0FBQ2RwQixVQUFNRSxLQUFOLEdBQWNDLFNBQWQ7QUFDRDtBQUNGIiwiZmlsZSI6ImNhY2hlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW50cmllcyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnkodGFyZ2V0LCBrZXkpIHtcbiAgbGV0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWFwKSB7XG4gICAgdGFyZ2V0TWFwID0gbmV3IE1hcCgpO1xuICAgIGVudHJpZXMuc2V0KHRhcmdldCwgdGFyZ2V0TWFwKTtcbiAgfVxuXG4gIGxldCBlbnRyeSA9IHRhcmdldE1hcC5nZXQoa2V5KTtcblxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW50cnkgPSB7XG4gICAgICBzdGF0ZTogMCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBpbnZhbGlkOiB1bmRlZmluZWQsXG4gICAgICBkZXBzOiB1bmRlZmluZWQsXG4gICAgICBjaGVja3N1bTogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGFyZ2V0TWFwLnNldChrZXksIGVudHJ5KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tzdW0oeyBzdGF0ZSwgZGVwcyB9KSB7XG4gIHJldHVybiBkZXBzLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gYWNjICsgY2FsY3VsYXRlQ2hlY2tzdW0oZW50cnkpLFxuICAgIHN0YXRlLFxuICApO1xufVxuXG5sZXQgY29udGV4dCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCBnZXR0ZXIpIHtcbiAgY29uc3QgZW50cnkgPSBnZXRFbnRyeSh0YXJnZXQsIGtleSk7XG5cbiAgaWYgKGNvbnRleHQgPT09IGVudHJ5KSB7XG4gICAgY29udGV4dCA9IG51bGw7XG4gICAgdGhyb3cgRXJyb3IoYFtjYWNoZV0gVHJ5IHRvIGdldCAnJHtrZXl9JyBvZiAnJHt0YXJnZXR9JyBpbiAnJHtrZXl9JyBnZXQgY2FsbGApO1xuICB9XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmRlcHMucHVzaChlbnRyeSk7XG4gIH1cblxuICBpZiAoZW50cnkuaW52YWxpZCA9PT0gZW50cnkuc3RhdGUpIHtcbiAgICBlbnRyeS5zdGF0ZSArPSAxO1xuICB9IGVsc2UgaWYgKGVudHJ5LmNoZWNrc3VtICE9PSB1bmRlZmluZWQgJiYgZW50cnkuY2hlY2tzdW0gPT09IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KSkge1xuICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSBjb250ZXh0O1xuICBjb250ZXh0ID0gZW50cnk7XG5cbiAgZW50cnkuZGVwcyA9IFtdO1xuXG4gIHRyeSB7XG4gICAgZW50cnkudmFsdWUgPSBnZXR0ZXIodGFyZ2V0LCBlbnRyeS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgY29udGV4dCA9IHBhcmVudENvbnRleHQ7XG5cbiAgZW50cnkuY2hlY2tzdW0gPSBjYWxjdWxhdGVDaGVja3N1bShlbnRyeSk7XG5cbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCBzZXR0ZXIsIHZhbHVlLCBjYWxsYmFjaykge1xuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBudWxsO1xuICAgIHRocm93IEVycm9yKGBbY2FjaGVdIFRyeSB0byBzZXQgJyR7a2V5fScgb2YgJyR7dGFyZ2V0fScgaW4gZ2V0IGNhbGxgKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBjb25zdCBuZXdWYWx1ZSA9IHNldHRlcih0YXJnZXQsIHZhbHVlLCBlbnRyeS52YWx1ZSk7XG5cbiAgaWYgKG5ld1ZhbHVlICE9PSBlbnRyeS52YWx1ZSkge1xuICAgIGVudHJ5LnN0YXRlICs9IDE7XG4gICAgZW50cnkudmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGUodGFyZ2V0LCBrZXksIGNsZWFyVmFsdWUpIHtcbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBFcnJvcihgW2NhY2hlXSBUcnkgdG8gaW52YWxpZGF0ZSAnJHtrZXl9JyBpbiAnJHt0YXJnZXR9JyBkdXJpbmcgZ2V0IGludm9jYXRpb25gKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuXG4gIGVudHJ5LmludmFsaWQgPSBlbnRyeS5zdGF0ZTtcbiAgaWYgKGNsZWFyVmFsdWUpIHtcbiAgICBlbnRyeS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19

@@ -93,3 +93,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

Object.keys(node.constructor.hybrids).forEach(function (key) {
cache.invalidate(node, key);
cache.invalidate(node, key, true);
});

@@ -182,2 +182,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbmUuanMiXSwibmFtZXMiOlsicHJvcGVydHkiLCJyZW5kZXIiLCJjYWNoZSIsImRpc3BhdGNoIiwiZGlzcGF0Y2hJbnZhbGlkYXRlIiwiaG9zdCIsImJ1YmJsZXMiLCJjb21wb3NlZCIsImRlZmF1bHRHZXQiLCJ2YWx1ZSIsImNvbXBpbGUiLCJIeWJyaWQiLCJoeWJyaWRzIiwiY29ubmVjdHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsInR5cGUiLCJnZXQiLCJzZXQiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbm5lY3QiLCJwdXNoIiwiY2xlYXJDYWNoZSIsImludmFsaWRhdGUiLCJ1cGRhdGUiLCJ3YWxrSW5TaGFkb3ciLCJub2RlIiwiZm4iLCJBcnJheSIsImZyb20iLCJjaGlsZHJlbiIsImVsIiwic2hhZG93Um9vdCIsImRvY3VtZW50IiwiYm9keSIsImNvbnN0cnVjdG9yIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJjb25uZWN0ZWRDYWxsYmFjayIsIkhUTUxCcmlkZ2UiLCJhcmdzIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkhUTUxFbGVtZW50Iiwic2V0UHJvdG90eXBlT2YiLCJXZWFrTWFwIiwiZGVmaW5lIiwidGFnTmFtZSIsIkN1c3RvbUVsZW1lbnQiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsIkVycm9yIiwibGlzdCIsInJlZHVjZSIsImFjYyIsInJlc3VsdCIsImFkZCIsIlNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUNBLE9BQU9BLFFBQVAsTUFBcUIsWUFBckI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFVBQW5COztBQUVBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixTQUF2QjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsU0FBekI7O0FBRUEsU0FB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MEI7O0FBd0MvQ3RDLFVBQVFDLE1BQVIsRUFBZ0JDLE9BQWhCO0FBQ0ErQyxpQkFBZUosTUFBZixDQUFzQkMsT0FBdEIsRUFBK0I3QyxNQUEvQjs7QUFFQSxTQUFPQSxNQUFQO0FBQ0QiLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgcHJvcGVydHkgZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgcmVuZGVyIGZyb20gJy4vcmVuZGVyJztcblxuaW1wb3J0ICogYXMgY2FjaGUgZnJvbSAnLi9jYWNoZSc7XG5pbXBvcnQgeyBkaXNwYXRjaCB9IGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBkaXNwYXRjaEludmFsaWRhdGUoaG9zdCkge1xuICBkaXNwYXRjaChob3N0LCAnQGludmFsaWRhdGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0R2V0ID0gKGhvc3QsIHZhbHVlKSA9PiB2YWx1ZTtcblxuZnVuY3Rpb24gY29tcGlsZShIeWJyaWQsIGh5YnJpZHMpIHtcbiAgSHlicmlkLmh5YnJpZHMgPSBoeWJyaWRzO1xuICBIeWJyaWQuY29ubmVjdHMgPSBbXTtcblxuICBPYmplY3Qua2V5cyhoeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBsZXQgY29uZmlnID0gaHlicmlkc1trZXldO1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgY29uZmlnO1xuXG4gICAgaWYgKGtleSA9PT0gJ3JlbmRlcicpIHtcbiAgICAgIGNvbmZpZyA9IHJlbmRlcihjb25maWcpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uZmlnID0geyBnZXQ6IGNvbmZpZyB9O1xuICAgIH0gZWxzZSBpZiAoY29uZmlnID09PSBudWxsIHx8IHR5cGUgIT09ICdvYmplY3QnIHx8ICh0eXBlID09PSAnb2JqZWN0JyAmJiAhY29uZmlnLmdldCAmJiAhY29uZmlnLnNldCkpIHtcbiAgICAgIGNvbmZpZyA9IHByb3BlcnR5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgY29uZmlnLmdldCA9IGNvbmZpZy5nZXQgfHwgZGVmYXVsdEdldDtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIeWJyaWQucHJvdG90eXBlLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KHRoaXMsIGtleSwgY29uZmlnLmdldCk7XG4gICAgICB9LFxuICAgICAgc2V0OiBjb25maWcuc2V0ICYmIGZ1bmN0aW9uIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBjYWNoZS5zZXQodGhpcywga2V5LCBjb25maWcuc2V0LCBuZXdWYWx1ZSwgKCkgPT4gZGlzcGF0Y2hJbnZhbGlkYXRlKHRoaXMpKTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5jb25uZWN0KSB7XG4gICAgICBIeWJyaWQuY29ubmVjdHMucHVzaChob3N0ID0+IGNvbmZpZy5jb25uZWN0KGhvc3QsIGtleSwgKGNsZWFyQ2FjaGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGlmIChjbGVhckNhY2hlKSBjYWNoZS5pbnZhbGlkYXRlKGhvc3QsIGtleSk7XG4gICAgICAgIGRpc3BhdGNoSW52YWxpZGF0ZShob3N0KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0pO1xufVxuXG5sZXQgdXBkYXRlO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3Qgd2Fsa0luU2hhZG93ID0gKG5vZGUsIGZuKSA9PiB7XG4gICAgZm4obm9kZSk7XG5cbiAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pXG4gICAgICAuZm9yRWFjaChlbCA9PiB3YWxrSW5TaGFkb3coZWwsIGZuKSk7XG5cbiAgICBpZiAobm9kZS5zaGFkb3dSb290KSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuc2hhZG93Um9vdC5jaGlsZHJlbilcbiAgICAgICAgLmZvckVhY2goZWwgPT4gd2Fsa0luU2hhZG93KGVsLCBmbikpO1xuICAgIH1cbiAgfTtcblxuICB1cGRhdGUgPSAoSHlicmlkKSA9PiB7XG4gICAgd2Fsa0luU2hhZG93KGRvY3VtZW50LmJvZHksIChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5jb25zdHJ1Y3RvciA9PT0gSHlicmlkKSB7XG4gICAgICAgIG5vZGUuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhub2RlLmNvbnN0cnVjdG9yLmh5YnJpZHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGNhY2hlLmludmFsaWRhdGUobm9kZSwga2V5KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbm9kZS5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgICBkaXNwYXRjaEludmFsaWRhdGUobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIEJVRzogQmFiZWwgdjYgdHJhbnNwaWxlZCBjbGFzcyBicmVha3MgbmF0aXZlIGN1c3RvbSBlbGVtZW50c1xuZXhwb3J0IGZ1bmN0aW9uIEhUTUxCcmlkZ2UoLi4uYXJncykge1xuICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoSFRNTEVsZW1lbnQsIGFyZ3MsIHRoaXMuY29uc3RydWN0b3IpO1xufVxuT2JqZWN0LnNldFByb3RvdHlwZU9mKEhUTUxCcmlkZ2UucHJvdG90eXBlLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpO1xuXG5jb25zdCBjb25uZWN0cyA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmluZSh0YWdOYW1lLCBoeWJyaWRzKSB7XG4gIGNvbnN0IEN1c3RvbUVsZW1lbnQgPSB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpO1xuXG4gIGlmIChDdXN0b21FbGVtZW50KSB7XG4gICAgaWYgKEN1c3RvbUVsZW1lbnQuaHlicmlkcyA9PT0gaHlicmlkcykge1xuICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEN1c3RvbUVsZW1lbnQuaHlicmlkcykge1xuICAgICAgT2JqZWN0LmtleXMoQ3VzdG9tRWxlbWVudC5oeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgZGVsZXRlIEN1c3RvbUVsZW1lbnQucHJvdG90eXBlW2tleV07XG4gICAgICB9KTtcblxuICAgICAgY29tcGlsZShDdXN0b21FbGVtZW50LCBoeWJyaWRzKTtcbiAgICAgIHVwZGF0ZShDdXN0b21FbGVtZW50KTtcblxuICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoYFtkZWZpbmVdIEVsZW1lbnQgJyR7dGFnTmFtZX0nIGFscmVhZHkgZGVmaW5lZGApO1xuICB9XG5cbiAgY2xhc3MgSHlicmlkIGV4dGVuZHMgSFRNTEJyaWRnZSB7XG4gICAgc3RhdGljIGdldCBuYW1lKCkgeyByZXR1cm4gdGFnTmFtZTsgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICBjb25zdCBsaXN0ID0gdGhpcy5jb25zdHJ1Y3Rvci5jb25uZWN0cy5yZWR1Y2UoKGFjYywgZm4pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4odGhpcyk7XG4gICAgICAgIGlmIChyZXN1bHQpIGFjYy5hZGQocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIG5ldyBTZXQoKSk7XG5cbiAgICAgIGNvbm5lY3RzLnNldCh0aGlzLCBsaXN0KTtcbiAgICAgIGRpc3BhdGNoSW52YWxpZGF0ZSh0aGlzKTtcbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSBjb25uZWN0cy5nZXQodGhpcyk7XG4gICAgICBsaXN0LmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgfVxuICB9XG5cbiAgY29tcGlsZShIeWJyaWQsIGh5YnJpZHMpO1xuICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGFnTmFtZSwgSHlicmlkKTtcblxuICByZXR1cm4gSHlicmlkO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbmUuanMiXSwibmFtZXMiOlsicHJvcGVydHkiLCJyZW5kZXIiLCJjYWNoZSIsImRpc3BhdGNoIiwiZGlzcGF0Y2hJbnZhbGlkYXRlIiwiaG9zdCIsImJ1YmJsZXMiLCJjb21wb3NlZCIsImRlZmF1bHRHZXQiLCJ2YWx1ZSIsImNvbXBpbGUiLCJIeWJyaWQiLCJoeWJyaWRzIiwiY29ubmVjdHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsInR5cGUiLCJnZXQiLCJzZXQiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbm5lY3QiLCJwdXNoIiwiY2xlYXJDYWNoZSIsImludmFsaWRhdGUiLCJ1cGRhdGUiLCJ3YWxrSW5TaGFkb3ciLCJub2RlIiwiZm4iLCJBcnJheSIsImZyb20iLCJjaGlsZHJlbiIsImVsIiwic2hhZG93Um9vdCIsImRvY3VtZW50IiwiYm9keSIsImNvbnN0cnVjdG9yIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJjb25uZWN0ZWRDYWxsYmFjayIsIkhUTUxCcmlkZ2UiLCJhcmdzIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkhUTUxFbGVtZW50Iiwic2V0UHJvdG90eXBlT2YiLCJXZWFrTWFwIiwiZGVmaW5lIiwidGFnTmFtZSIsIkN1c3RvbUVsZW1lbnQiLCJ3aW5kb3ciLCJjdXN0b21FbGVtZW50cyIsIkVycm9yIiwibGlzdCIsInJlZHVjZSIsImFjYyIsInJlc3VsdCIsImFkZCIsIlNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU9BLFFBQVAsTUFBcUIsWUFBckI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFVBQW5COztBQUVBLE9BQU8sS0FBS0MsS0FBWixNQUF1QixTQUF2QjtBQUNBLFNBQVNDLFFBQVQsUUFBeUIsU0FBekI7O0FBRUEsU0FB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SUFvQjFCUixVQXBCMEI7O0FBd0MvQ3RDLFVBQVFDLE1BQVIsRUFBZ0JDLE9BQWhCO0FBQ0ErQyxpQkFBZUosTUFBZixDQUFzQkMsT0FBdEIsRUFBK0I3QyxNQUEvQjs7QUFFQSxTQUFPQSxNQUFQO0FBQ0QiLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb3BlcnR5IGZyb20gJy4vcHJvcGVydHknO1xuaW1wb3J0IHJlbmRlciBmcm9tICcuL3JlbmRlcic7XG5cbmltcG9ydCAqIGFzIGNhY2hlIGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IHsgZGlzcGF0Y2ggfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gZGlzcGF0Y2hJbnZhbGlkYXRlKGhvc3QpIHtcbiAgZGlzcGF0Y2goaG9zdCwgJ0BpbnZhbGlkYXRlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KTtcbn1cblxuY29uc3QgZGVmYXVsdEdldCA9IChob3N0LCB2YWx1ZSkgPT4gdmFsdWU7XG5cbmZ1bmN0aW9uIGNvbXBpbGUoSHlicmlkLCBoeWJyaWRzKSB7XG4gIEh5YnJpZC5oeWJyaWRzID0gaHlicmlkcztcbiAgSHlicmlkLmNvbm5lY3RzID0gW107XG5cbiAgT2JqZWN0LmtleXMoaHlicmlkcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgbGV0IGNvbmZpZyA9IGh5YnJpZHNba2V5XTtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIGNvbmZpZztcblxuICAgIGlmIChrZXkgPT09ICdyZW5kZXInKSB7XG4gICAgICBjb25maWcgPSByZW5kZXIoY29uZmlnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbmZpZyA9IHsgZ2V0OiBjb25maWcgfTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZyA9PT0gbnVsbCB8fCB0eXBlICE9PSAnb2JqZWN0JyB8fCAodHlwZSA9PT0gJ29iamVjdCcgJiYgIWNvbmZpZy5nZXQgJiYgIWNvbmZpZy5zZXQpKSB7XG4gICAgICBjb25maWcgPSBwcm9wZXJ0eShjb25maWcpO1xuICAgIH1cblxuICAgIGNvbmZpZy5nZXQgPSBjb25maWcuZ2V0IHx8IGRlZmF1bHRHZXQ7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSHlicmlkLnByb3RvdHlwZSwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldCh0aGlzLCBrZXksIGNvbmZpZy5nZXQpO1xuICAgICAgfSxcbiAgICAgIHNldDogY29uZmlnLnNldCAmJiBmdW5jdGlvbiBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgY2FjaGUuc2V0KHRoaXMsIGtleSwgY29uZmlnLnNldCwgbmV3VmFsdWUsICgpID0+IGRpc3BhdGNoSW52YWxpZGF0ZSh0aGlzKSk7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcbiAgICB9KTtcblxuICAgIGlmIChjb25maWcuY29ubmVjdCkge1xuICAgICAgSHlicmlkLmNvbm5lY3RzLnB1c2goaG9zdCA9PiBjb25maWcuY29ubmVjdChob3N0LCBrZXksIChjbGVhckNhY2hlID0gdHJ1ZSkgPT4ge1xuICAgICAgICBpZiAoY2xlYXJDYWNoZSkgY2FjaGUuaW52YWxpZGF0ZShob3N0LCBrZXkpO1xuICAgICAgICBkaXNwYXRjaEludmFsaWRhdGUoaG9zdCk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9KTtcbn1cblxubGV0IHVwZGF0ZTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHdhbGtJblNoYWRvdyA9IChub2RlLCBmbikgPT4ge1xuICAgIGZuKG5vZGUpO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKVxuICAgICAgLmZvckVhY2goZWwgPT4gd2Fsa0luU2hhZG93KGVsLCBmbikpO1xuXG4gICAgaWYgKG5vZGUuc2hhZG93Um9vdCkge1xuICAgICAgQXJyYXkuZnJvbShub2RlLnNoYWRvd1Jvb3QuY2hpbGRyZW4pXG4gICAgICAgIC5mb3JFYWNoKGVsID0+IHdhbGtJblNoYWRvdyhlbCwgZm4pKTtcbiAgICB9XG4gIH07XG5cbiAgdXBkYXRlID0gKEh5YnJpZCkgPT4ge1xuICAgIHdhbGtJblNoYWRvdyhkb2N1bWVudC5ib2R5LCAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUuY29uc3RydWN0b3IgPT09IEh5YnJpZCkge1xuICAgICAgICBub2RlLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMobm9kZS5jb25zdHJ1Y3Rvci5oeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBjYWNoZS5pbnZhbGlkYXRlKG5vZGUsIGtleSwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5vZGUuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgICAgZGlzcGF0Y2hJbnZhbGlkYXRlKG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG4vLyBCVUc6IEJhYmVsIHY2IHRyYW5zcGlsZWQgY2xhc3MgYnJlYWtzIG5hdGl2ZSBjdXN0b20gZWxlbWVudHNcbmV4cG9ydCBmdW5jdGlvbiBIVE1MQnJpZGdlKC4uLmFyZ3MpIHtcbiAgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KEhUTUxFbGVtZW50LCBhcmdzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbn1cbk9iamVjdC5zZXRQcm90b3R5cGVPZihIVE1MQnJpZGdlLnByb3RvdHlwZSwgSFRNTEVsZW1lbnQucHJvdG90eXBlKTtcblxuY29uc3QgY29ubmVjdHMgPSBuZXcgV2Vha01hcCgpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZpbmUodGFnTmFtZSwgaHlicmlkcykge1xuICBjb25zdCBDdXN0b21FbGVtZW50ID0gd2luZG93LmN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKTtcblxuICBpZiAoQ3VzdG9tRWxlbWVudCkge1xuICAgIGlmIChDdXN0b21FbGVtZW50Lmh5YnJpZHMgPT09IGh5YnJpZHMpIHtcbiAgICAgIHJldHVybiBDdXN0b21FbGVtZW50O1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBDdXN0b21FbGVtZW50Lmh5YnJpZHMpIHtcbiAgICAgIE9iamVjdC5rZXlzKEN1c3RvbUVsZW1lbnQuaHlicmlkcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGRlbGV0ZSBDdXN0b21FbGVtZW50LnByb3RvdHlwZVtrZXldO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbXBpbGUoQ3VzdG9tRWxlbWVudCwgaHlicmlkcyk7XG4gICAgICB1cGRhdGUoQ3VzdG9tRWxlbWVudCk7XG5cbiAgICAgIHJldHVybiBDdXN0b21FbGVtZW50O1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKGBbZGVmaW5lXSBFbGVtZW50ICcke3RhZ05hbWV9JyBhbHJlYWR5IGRlZmluZWRgKTtcbiAgfVxuXG4gIGNsYXNzIEh5YnJpZCBleHRlbmRzIEhUTUxCcmlkZ2Uge1xuICAgIHN0YXRpYyBnZXQgbmFtZSgpIHsgcmV0dXJuIHRhZ05hbWU7IH1cblxuICAgIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY29uc3RydWN0b3IuY29ubmVjdHMucmVkdWNlKChhY2MsIGZuKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHRoaXMpO1xuICAgICAgICBpZiAocmVzdWx0KSBhY2MuYWRkKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBuZXcgU2V0KCkpO1xuXG4gICAgICBjb25uZWN0cy5zZXQodGhpcywgbGlzdCk7XG4gICAgICBkaXNwYXRjaEludmFsaWRhdGUodGhpcyk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICBjb25zdCBsaXN0ID0gY29ubmVjdHMuZ2V0KHRoaXMpO1xuICAgICAgbGlzdC5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBpbGUoSHlicmlkLCBoeWJyaWRzKTtcbiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKHRhZ05hbWUsIEh5YnJpZCk7XG5cbiAgcmV0dXJuIEh5YnJpZDtcbn1cbiJdfQ==

@@ -5,3 +5,3 @@ var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();

import { createMap, IS_IE } from '../utils';
import { createMap, shadyCSS, IS_IE } from '../utils';

@@ -184,16 +184,13 @@ import resolveStyleList from './style';

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
var PLACEHOLDER = '{{h-' + Date.now() + '}}';
var PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
var ATTR_PREFIX = '--' + Date.now() + '--';
var ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
function createWalker(node) {
return document.createTreeWalker(node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
}
var preparedTemplates = new WeakMap();
function applyShadyCSS(template, tagName) {
if (tagName && _typeof(window.ShadyCSS) === 'object') {
if (!tagName) return template;
return shadyCSS(function (shady) {
var map = preparedTemplates.get(template);

@@ -213,19 +210,26 @@ if (!map) {

window.ShadyCSS.prepareTemplate(clone, tagName.toLowerCase());
var styles = clone.content.querySelectorAll('style');
Array.from(styles).forEach(function (style) {
var count = style.childNodes.length + 1;
for (var i = 0; i < count; i += 1) {
style.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), style);
}
});
shady.prepareTemplate(clone, tagName.toLowerCase());
}
return clone;
}
return template;
}, template);
}
var PLACEHOLDER = '{{h-' + Date.now() + '}}';
var PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
var ATTR_PREFIX = '--' + Date.now() + '--';
var ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
export function createSignature(parts) {
var signature = parts.join(PLACEHOLDER);
var signature = parts.reduce(function (acc, part, index) {
if (index === 0) {
return part;
} else if (parts.slice(index).join('').match(/\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)) {
return acc + '<!--' + PLACEHOLDER + '-->' + part;
}
return acc + PLACEHOLDER + part;
}, '');

@@ -241,2 +245,25 @@ if (IS_IE) {

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
function createWalker(node) {
return document.createTreeWalker(node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
}
function replaceComments(fragment) {
var iterator = document.createNodeIterator(fragment, NodeFilter.SHOW_COMMENT, null, false);
var node = void 0;
// eslint-disable-next-line no-cond-assign
while (node = iterator.nextNode()) {
if (node.textContent === PLACEHOLDER) {
node.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), node);
node.parentNode.removeChild(node);
}
}
}
var container = document.createElement('div');
export function compile(signature, rawParts, isSVG) {

@@ -246,3 +273,9 @@ var template = document.createElement('template');

template.innerHTML = signature;
if (IS_IE) {
template.innerHTML = signature;
} else {
container.innerHTML = '<template>' + signature + '</template>';
template.content.appendChild(container.children[0].content);
}
if (isSVG) {

@@ -256,2 +289,4 @@ var svgRoot = template.content.firstChild;

replaceComments(template.content);
var compileWalker = createWalker(template.content);

@@ -336,6 +371,6 @@ var compileIndex = 0;

if (IS_IE && _node.nodeType === Node.TEXT_NODE) {
if (_node.nodeType === Node.TEXT_NODE) {
if (_node.textContent === PLACEHOLDER) {
_node.textContent = '';
} else {
} else if (IS_IE) {
_node.textContent = _node.textContent.replace(ATTR_REGEXP, '');

@@ -381,2 +416,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odG1sL3RlbXBsYXRlLmpzIl0sIm5hbWVzIjpbImNyZWF0ZU1hcCIsIklTX0lFIiwicmVzb2x2ZVN0eWxlTGlzdCIsInJlc29sdmVDbGFzc0xpc3QiLCJkYXRhTWFwIiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImdldCIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsIkFycmF5IiwiZnJvbSIsImNoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzdGFydE5vZGUiLCJsYXN0TmV4dFNpYmxpbmciLCJuZXh0U2libGluZyIsInJlc29sdmVWYWx1ZSIsImhvc3QiLCJ2YWx1ZSIsInR5cGUiLCJpc0FycmF5Iiwic2V0IiwidGV4dENvbnRlbnQiLCJyZXNvbHZlQXJyYXkiLCJtb3ZlUGxhY2Vob2xkZXIiLCJwcmV2aW91c1NpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJwcmV2Tm9kZSIsIm5leHROb2RlIiwibGFzdEluZGV4IiwibGVuZ3RoIiwiYXJyYXlNYXAiLCJyZWR1Y2UiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpZCIsImhhcyIsIkVycm9yIiwicGxhY2Vob2xkZXIiLCJkZWxldGUiLCJkb2N1bWVudCIsImNyZWF0ZVRleHROb2RlIiwiTWFwIiwicmVzb2x2ZVByb3BlcnR5IiwiYXR0ck5hbWUiLCJwcm9wZXJ0eU5hbWUiLCJpc1NWRyIsInN1YnN0ciIsImZuTWFwIiwiV2Vha01hcCIsImV2ZW50TmFtZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJhcmdzIiwiZm4iLCJ1bmRlZmluZWQiLCJyZW1vdmVBdHRyaWJ1dGUiLCJhdHRyVmFsdWUiLCJTdHJpbmciLCJnZXRBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJnZXRQcm9wZXJ0eU5hbWUiLCJzdHJpbmciLCJyZXBsYWNlIiwic3BsaXQiLCJwb3AiLCJjcmVhdGVXYWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsInByZXBhcmVkVGVtcGxhdGVzIiwiYXBwbHlTaGFkeUNTUyIsInRlbXBsYXRlIiwidGFnTmFtZSIsIndpbmRvdyIsIlNoYWR5Q1NTIiwiY2xvbmUiLCJjcmVhdGVFbGVtZW50IiwiY29udGVudCIsImFwcGVuZENoaWxkIiwiaW1wb3J0Tm9kZSIsInByZXBhcmVUZW1wbGF0ZSIsInRvTG93ZXJDYXNlIiwiUExBQ0VIT0xERVIiLCJEYXRlIiwibm93IiwiUExBQ0VIT0xERVJfUkVHRVhQIiwiUmVnRXhwIiwiQVRUUl9QUkVGSVgiLCJBVFRSX1JFR0VYUCIsImNyZWF0ZVNpZ25hdHVyZSIsInBhcnRzIiwic2lnbmF0dXJlIiwiam9pbiIsIm1hdGNoIiwiY29tcGlsZSIsInJhd1BhcnRzIiwiaW5uZXJIVE1MIiwic3ZnUm9vdCIsImZpcnN0Q2hpbGQiLCJjb21waWxlV2Fsa2VyIiwiY29tcGlsZUluZGV4IiwiY3VycmVudE5vZGUiLCJ0ZXh0Iiwib2Zmc2V0Iiwic3BsaXRUZXh0IiwicHVzaCIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidHJpbSIsIm5hbWUiLCJyZXN1bHRzIiwiaSIsInByZXZpb3VzVmFsdWUiLCJmcmFnbWVudCIsInJlbmRlcldhbGtlciIsImNsb25lZFBhcnRzIiwic2xpY2UiLCJyZW5kZXJJbmRleCIsImN1cnJlbnRQYXJ0Iiwic2hpZnQiLCJtYXJrZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwiY2hpbGRMaXN0IiwicHJldmlvdXNDaGlsZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFNBQVQsRUFBb0JDLEtBQXBCLFFBQWlDLFVBQWpDOztBQUVBLE9BQU9DLGdCQUFQLE1BQTZCLFNBQTdCO0FBQ0EsT0FBT0MsZ0JBQVAsTUFBNkIsYUFBN0I7O0FBRUEsSUFBTUMsVUFBVUosV0FBaEI7O0FBRUEsU0FBU0ssY0FBVCxDQUF3QkMsSUFBeEIsRUFBOEI7QUFD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YSxDQUFDOUcsS0FBRCxFQUFPMkgsWUFBWSxDQUFaLENBQVAsQ0FBYjtBQUNBQSx3QkFBY0gsWUFBWUksS0FBWixFQUFkO0FBQ0Q7O0FBRURGLHVCQUFlLENBQWY7QUFDRDs7QUFFRCxVQUFJckgsT0FBT0MsUUFBUCxLQUFvQkMsS0FBS0MsU0FBN0IsRUFBd0M7QUFDdEMsWUFBTXdILFlBQVl2SCxNQUFNQyxJQUFOLENBQVc0RyxTQUFTM0csVUFBcEIsQ0FBbEI7O0FBRUFWLGFBQUtlLFNBQUwsR0FBaUJnSCxVQUFVLENBQVYsQ0FBakI7QUFDQS9ILGFBQUtFLE9BQUwsR0FBZTZILFVBQVVBLFVBQVUvRixNQUFWLEdBQW1CLENBQTdCLENBQWY7O0FBRUEsWUFBSWdHLGdCQUFnQjVILE1BQXBCO0FBQ0EySCxrQkFBVXBILE9BQVYsQ0FBa0IsVUFBQ0MsS0FBRCxFQUFXO0FBQzNCUixpQkFBT1MsVUFBUCxDQUFrQmUsWUFBbEIsQ0FBK0JoQixLQUEvQixFQUFzQ29ILGNBQWMvRyxXQUFwRDtBQUNBK0csMEJBQWdCcEgsS0FBaEI7QUFDRCxTQUhEO0FBSUQsT0FYRCxNQVdPO0FBQ0xSLGVBQU84RSxXQUFQLENBQW1CbUMsUUFBbkI7QUFDRDtBQUNGOztBQUVELFFBQUloRixRQUFRLENBQVo7O0FBRUFyQyxTQUFLNEgsT0FBTCxDQUFhakgsT0FBYixDQUFxQixnQkFBZ0I7QUFBQTtBQUFBLFVBQWRaLElBQWM7QUFBQSxVQUFSeUQsRUFBUTs7QUFDbkNBLFNBQUdyQyxJQUFILEVBQVNwQixJQUFULEVBQWV3RCxLQUFLbEIsS0FBTCxDQUFmLEVBQTRCckMsSUFBNUI7QUFDQXFDLGVBQVMsQ0FBVDtBQUNELEtBSEQ7QUFJRCxHQTNERDtBQTRERCIsImZpbGUiOiJ0ZW1wbGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZU1hcCwgSVNfSUUgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCByZXNvbHZlU3R5bGVMaXN0IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IHJlc29sdmVDbGFzc0xpc3QgZnJvbSAnLi9jbGFzc0xpc3QnO1xuXG5jb25zdCBkYXRhTWFwID0gY3JlYXRlTWFwKCk7XG5cbmZ1bmN0aW9uIGdldFRlbXBsYXRlRW5kKG5vZGUpIHtcbiAgbGV0IGRhdGE7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAobm9kZSAmJiAoZGF0YSA9IGRhdGFNYXAuZ2V0KG5vZGUpKSAmJiBkYXRhLmVuZE5vZGUpIHtcbiAgICBub2RlID0gZGF0YS5lbmROb2RlO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRlbXBsYXRlKHRhcmdldCkge1xuICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIEFycmF5LmZyb20odGFyZ2V0LmNoaWxkTm9kZXMpLmZvckVhY2goY2hpbGQgPT5cbiAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcbiAgICBjb25zdCBzdGFydE5vZGUgPSBkYXRhLnN0YXJ0Tm9kZTtcblxuICAgIGlmIChzdGFydE5vZGUpIHtcbiAgICAgIGNvbnN0IGVuZE5vZGUgPSBnZXRUZW1wbGF0ZUVuZChkYXRhLmVuZE5vZGUpO1xuXG4gICAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICAgIGNvbnN0IGxhc3ROZXh0U2libGluZyA9IGVuZE5vZGUubmV4dFNpYmxpbmc7XG5cbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgICAgICBub2RlID0gbmV4dFNpYmxpbmcgIT09IGxhc3ROZXh0U2libGluZyAmJiBuZXh0U2libGluZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKGhvc3QsIHRhcmdldCwgdmFsdWUpIHtcbiAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZTtcbiAgbGV0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHt9KTtcblxuICBpZiAoZGF0YS50eXBlICE9PSB0eXBlKSB7XG4gICAgcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KTtcbiAgICBkYXRhID0gZGF0YU1hcC5zZXQodGFyZ2V0LCB7IHR5cGUgfSk7XG5cbiAgICBpZiAodGFyZ2V0LnRleHRDb250ZW50ICE9PSAnJykge1xuICAgICAgdGFyZ2V0LnRleHRDb250ZW50ID0gJyc7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgdmFsdWUoaG9zdCwgdGFyZ2V0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVzb2x2ZUFycmF5KGhvc3QsIHRhcmdldCwgdmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YS52YWx1ZSkge1xuICAgICAgICBkYXRhLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRhcmdldC50ZXh0Q29udGVudCA9IHR5cGUgPT09ICdudW1iZXInIHx8IHZhbHVlID8gdmFsdWUgOiAnJztcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlUGxhY2Vob2xkZXIodGFyZ2V0LCBwcmV2aW91c1NpYmxpbmcpIHtcbiAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG4gIGNvbnN0IHN0YXJ0Tm9kZSA9IGRhdGEuc3RhcnROb2RlO1xuICBjb25zdCBlbmROb2RlID0gZ2V0VGVtcGxhdGVFbmQoZGF0YS5lbmROb2RlKTtcblxuICBwcmV2aW91c1NpYmxpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFyZ2V0LCBwcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcpO1xuXG4gIGxldCBwcmV2Tm9kZSA9IHRhcmdldDtcbiAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gIHdoaWxlIChub2RlKSB7XG4gICAgY29uc3QgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgIHByZXZOb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHByZXZOb2RlLm5leHRTaWJsaW5nKTtcbiAgICBwcmV2Tm9kZSA9IG5vZGU7XG4gICAgbm9kZSA9IG5leHROb2RlICE9PSBlbmROb2RlLm5leHRTaWJsaW5nICYmIG5leHROb2RlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBcnJheShob3N0LCB0YXJnZXQsIHZhbHVlKSB7XG4gIGxldCBwcmV2aW91c1NpYmxpbmcgPSB0YXJnZXQ7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHZhbHVlLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCB7IGFycmF5TWFwIH0gPSBkYXRhO1xuXG4gIGRhdGEuYXJyYXlNYXAgPSB2YWx1ZS5yZWR1Y2UoKG1hcCwgaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpZCA9IHR5cGVvZiBpdGVtID09PSAnZnVuY3Rpb24nID8gaXRlbS5pZCA6IGluZGV4O1xuXG4gICAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW2h0bWxdICcke2lkfScga2V5IGFscmVhZHkgc2V0LiBVc2UgJ2h0bWxcXGAuLi5cXGAua2V5KGlkKScgaGVscGVyIHRvIHNldCB1bmlxdWUga2V5LmApO1xuICAgIH1cblxuICAgIGxldCBwbGFjZWhvbGRlcjtcbiAgICBpZiAoYXJyYXlNYXAgJiYgYXJyYXlNYXAuaGFzKGlkKSkge1xuICAgICAgcGxhY2Vob2xkZXIgPSBhcnJheU1hcC5nZXQoaWQpO1xuICAgICAgYXJyYXlNYXAuZGVsZXRlKGlkKTtcblxuICAgICAgaWYgKHBsYWNlaG9sZGVyLnByZXZpb3VzU2libGluZyAhPT0gcHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG1vdmVQbGFjZWhvbGRlcihwbGFjZWhvbGRlciwgcHJldmlvdXNTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGxhY2Vob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgICBwcmV2aW91c1NpYmxpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGxhY2Vob2xkZXIsIHByZXZpb3VzU2libGluZy5uZXh0U2libGluZyk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZVZhbHVlKGhvc3QsIHBsYWNlaG9sZGVyLCBpdGVtKTtcblxuICAgIHByZXZpb3VzU2libGluZyA9IGdldFRlbXBsYXRlRW5kKGRhdGFNYXAuZ2V0KHBsYWNlaG9sZGVyKS5lbmROb2RlIHx8IHBsYWNlaG9sZGVyKTtcblxuICAgIGlmIChpbmRleCA9PT0gMCkgZGF0YS5zdGFydE5vZGUgPSBwbGFjZWhvbGRlcjtcbiAgICBpZiAoaW5kZXggPT09IGxhc3RJbmRleCkgZGF0YS5lbmROb2RlID0gcHJldmlvdXNTaWJsaW5nO1xuXG4gICAgbWFwLnNldChpZCwgcGxhY2Vob2xkZXIpO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSwgbmV3IE1hcCgpKTtcblxuICBpZiAoYXJyYXlNYXApIHtcbiAgICBhcnJheU1hcC5mb3JFYWNoKChwbGFjZWhvbGRlcikgPT4ge1xuICAgICAgcmVtb3ZlVGVtcGxhdGUocGxhY2Vob2xkZXIpO1xuICAgICAgcGxhY2Vob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwbGFjZWhvbGRlcik7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnR5KGF0dHJOYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKSB7XG4gIGlmIChwcm9wZXJ0eU5hbWUuc3Vic3RyKDAsIDIpID09PSAnb24nKSB7XG4gICAgY29uc3QgZm5NYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMik7XG5cbiAgICByZXR1cm4gKGhvc3QsIHRhcmdldCwgdmFsdWUpID0+IHtcbiAgICAgIGlmICghZm5NYXAuaGFzKHRhcmdldCkpIHtcbiAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGNvbnN0IGZuID0gZm5NYXAuZ2V0KHRhcmdldCk7XG4gICAgICAgICAgaWYgKGZuKSBmbihob3N0LCAuLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZuTWFwLnNldCh0YXJnZXQsIHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgc3dpdGNoIChhdHRyTmFtZSkge1xuICAgIGNhc2UgJ3N0eWxlJzogcmV0dXJuIHJlc29sdmVTdHlsZUxpc3Q7XG4gICAgY2FzZSAnY2xhc3MnOiByZXR1cm4gcmVzb2x2ZUNsYXNzTGlzdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIChob3N0LCB0YXJnZXQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghaXNTVkcgJiYgcHJvcGVydHlOYW1lIGluIHRhcmdldCkge1xuICAgICAgICAgIGlmICh0YXJnZXRbcHJvcGVydHlOYW1lXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gdmFsdWUgPT09IHRydWUgPyAnJyA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgaWYgKHRhcmdldC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpICE9PSBhdHRyVmFsdWUpIHtcbiAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHMqPVxccypbJ1wiXSokL2csICcnKS5zcGxpdCgnICcpLnBvcCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVXYWxrZXIobm9kZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihcbiAgICBub2RlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQgfCBOb2RlRmlsdGVyLlNIT1dfVEVYVCxcbiAgICBudWxsLFxuICAgIGZhbHNlLFxuICApO1xufVxuXG5jb25zdCBwcmVwYXJlZFRlbXBsYXRlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbmZ1bmN0aW9uIGFwcGx5U2hhZHlDU1ModGVtcGxhdGUsIHRhZ05hbWUpIHtcbiAgaWYgKHRhZ05hbWUgJiYgdHlwZW9mIHdpbmRvdy5TaGFkeUNTUyA9PT0gJ29iamVjdCcpIHtcbiAgICBsZXQgbWFwID0gcHJlcGFyZWRUZW1wbGF0ZXMuZ2V0KHRlbXBsYXRlKTtcbiAgICBpZiAoIW1hcCkge1xuICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgcHJlcGFyZWRUZW1wbGF0ZXMuc2V0KHRlbXBsYXRlLCBtYXApO1xuICAgIH1cblxuICAgIGxldCBjbG9uZSA9IG1hcC5nZXQodGFnTmFtZSk7XG5cbiAgICBpZiAoIWNsb25lKSB7XG4gICAgICBjbG9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gICAgICBjbG9uZS5jb250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmltcG9ydE5vZGUodGVtcGxhdGUuY29udGVudCwgdHJ1ZSkpO1xuXG4gICAgICBtYXAuc2V0KHRhZ05hbWUsIGNsb25lKTtcblxuICAgICAgd2luZG93LlNoYWR5Q1NTLnByZXBhcmVUZW1wbGF0ZShjbG9uZSwgdGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICByZXR1cm4gdGVtcGxhdGU7XG59XG5cbmNvbnN0IFBMQUNFSE9MREVSID0gYHt7aC0ke0RhdGUubm93KCl9fX1gO1xuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQID0gbmV3IFJlZ0V4cChQTEFDRUhPTERFUiwgJ2cnKTtcblxuY29uc3QgQVRUUl9QUkVGSVggPSBgLS0ke0RhdGUubm93KCl9LS1gO1xuY29uc3QgQVRUUl9SRUdFWFAgPSBuZXcgUmVnRXhwKEFUVFJfUFJFRklYLCAnZycpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2lnbmF0dXJlKHBhcnRzKSB7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IHBhcnRzLmpvaW4oUExBQ0VIT0xERVIpO1xuXG4gIGlmIChJU19JRSkge1xuICAgIHJldHVybiBzaWduYXR1cmUucmVwbGFjZShcbiAgICAgIC9zdHlsZVxccyo9XFxzKihbXCJdW15cIl0rW1wiXXxbJ11bXiddK1snXXxbXlxcc1wiJzw+L10rKS9nLFxuICAgICAgbWF0Y2ggPT4gYCR7QVRUUl9QUkVGSVh9JHttYXRjaH1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShzaWduYXR1cmUsIHJhd1BhcnRzLCBpc1NWRykge1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gIGNvbnN0IHBhcnRzID0gW107XG5cbiAgdGVtcGxhdGUuaW5uZXJIVE1MID0gc2lnbmF0dXJlO1xuICBpZiAoaXNTVkcpIHtcbiAgICBjb25zdCBzdmdSb290ID0gdGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkO1xuICAgIHRlbXBsYXRlLmNvbnRlbnQucmVtb3ZlQ2hpbGQoc3ZnUm9vdCk7XG4gICAgQXJyYXkuZnJvbShzdmdSb290LmNoaWxkTm9kZXMpLmZvckVhY2gobm9kZSA9PiB0ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKG5vZGUpKTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBpbGVXYWxrZXIgPSBjcmVhdGVXYWxrZXIodGVtcGxhdGUuY29udGVudCk7XG4gIGxldCBjb21waWxlSW5kZXggPSAwO1xuXG4gIHdoaWxlIChjb21waWxlV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICBjb25zdCBub2RlID0gY29tcGlsZVdhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgaWYgKG5vZGUudGV4dENvbnRlbnQgIT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgIG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShcbiAgICAgICAgICBQTEFDRUhPTERFUixcbiAgICAgICAgICAodGV4dCwgb2Zmc2V0KSA9PiB7XG4gICAgICAgICAgICBub2RlLnNwbGl0VGV4dChvZmZzZXQgPiAwID8gb2Zmc2V0IDogdGV4dC5sZW5ndGgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlLnRleHRDb250ZW50ID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICBpZiAoIUlTX0lFKSBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgIHBhcnRzLnB1c2goW2NvbXBpbGVJbmRleCwgcmVzb2x2ZVZhbHVlXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIEFycmF5LmZyb20obm9kZS5hdHRyaWJ1dGVzKS5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZS50cmltKCk7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBJU19JRSA/IGF0dHIubmFtZS5yZXBsYWNlKEFUVFJfUFJFRklYLCAnJykgOiBhdHRyLm5hbWU7XG5cbiAgICAgICAgaWYgKHZhbHVlID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IGdldFByb3BlcnR5TmFtZShyYXdQYXJ0c1twYXJ0cy5sZW5ndGhdKTtcbiAgICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIHJlc29sdmVQcm9wZXJ0eShuYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKV0pO1xuICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IHZhbHVlLm1hdGNoKFBMQUNFSE9MREVSX1JFR0VYUCk7XG4gICAgICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgICAgIHBhcnRzLnB1c2goW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUucmVwbGFjZShQTEFDRUhPTERFUiwgYXR0clZhbHVlID09IG51bGwgPyAnJyA6IGF0dHJWYWx1ZSkpO1xuICAgICAgICAgICAgfV0pO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgcGFydHMucHVzaChbY29tcGlsZUluZGV4LCAoaG9zdCwgdGFyZ2V0LCBhdHRyVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIHByZXZpb3VzVmFsdWUucmVwbGFjZShQTEFDRUhPTERFUiwgYXR0clZhbHVlID09IG51bGwgPyAnJyA6IGF0dHJWYWx1ZSkpO1xuICAgICAgICAgICAgICB9XSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZS5yZXBsYWNlKFBMQUNFSE9MREVSX1JFR0VYUCwgJycpO1xuXG4gICAgICAgICAgICBpZiAoSVNfSUUgJiYgbmFtZSAhPT0gYXR0ci5uYW1lKSB7XG4gICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIGF0dHIudmFsdWUpO1xuICAgICAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29tcGlsZUluZGV4ICs9IDE7XG4gIH1cblxuICByZXR1cm4gKGhvc3QsIHRhcmdldCwgYXJncykgPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHsgdHlwZTogJ2Z1bmN0aW9uJyB9KTtcblxuICAgIGlmICh0ZW1wbGF0ZSAhPT0gZGF0YS50ZW1wbGF0ZSkge1xuICAgICAgaWYgKGRhdGEudGVtcGxhdGUpIHJlbW92ZVRlbXBsYXRlKHRhcmdldCk7XG5cbiAgICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuaW1wb3J0Tm9kZShhcHBseVNoYWR5Q1NTKHRlbXBsYXRlLCBob3N0LnRhZ05hbWUpLmNvbnRlbnQsIHRydWUpO1xuXG4gICAgICBjb25zdCByZW5kZXJXYWxrZXIgPSBjcmVhdGVXYWxrZXIoZnJhZ21lbnQpO1xuICAgICAgY29uc3QgY2xvbmVkUGFydHMgPSBwYXJ0cy5zbGljZSgwKTtcblxuICAgICAgbGV0IHJlbmRlckluZGV4ID0gMDtcbiAgICAgIGxldCBjdXJyZW50UGFydCA9IGNsb25lZFBhcnRzLnNoaWZ0KCk7XG5cbiAgICAgIGNvbnN0IG1hcmtlcnMgPSBbXTtcblxuICAgICAgT2JqZWN0LmFzc2lnbihkYXRhLCB7IHRlbXBsYXRlLCBtYXJrZXJzIH0pO1xuXG4gICAgICB3aGlsZSAocmVuZGVyV2Fsa2VyLm5leHROb2RlKCkpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlbmRlcldhbGtlci5jdXJyZW50Tm9kZTtcblxuICAgICAgICBpZiAoSVNfSUUgJiYgbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgICBpZiAobm9kZS50ZXh0Q29udGVudCA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShBVFRSX1JFR0VYUCwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChjdXJyZW50UGFydCAmJiBjdXJyZW50UGFydFswXSA9PT0gcmVuZGVySW5kZXgpIHtcbiAgICAgICAgICBtYXJrZXJzLnB1c2goW25vZGUsIGN1cnJlbnRQYXJ0WzFdXSk7XG4gICAgICAgICAgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVuZGVySW5kZXggKz0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRMaXN0ID0gQXJyYXkuZnJvbShmcmFnbWVudC5jaGlsZE5vZGVzKTtcblxuICAgICAgICBkYXRhLnN0YXJ0Tm9kZSA9IGNoaWxkTGlzdFswXTtcbiAgICAgICAgZGF0YS5lbmROb2RlID0gY2hpbGRMaXN0W2NoaWxkTGlzdC5sZW5ndGggLSAxXTtcblxuICAgICAgICBsZXQgcHJldmlvdXNDaGlsZCA9IHRhcmdldDtcbiAgICAgICAgY2hpbGRMaXN0LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgZGF0YS5tYXJrZXJzLmZvckVhY2goKFtub2RlLCBmbl0pID0+IHtcbiAgICAgIGZuKGhvc3QsIG5vZGUsIGFyZ3NbaW5kZXhdLCBkYXRhKTtcbiAgICAgIGluZGV4ICs9IDE7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odG1sL3RlbXBsYXRlLmpzIl0sIm5hbWVzIjpbImNyZWF0ZU1hcCIsInNoYWR5Q1NTIiwiSVNfSUUiLCJyZXNvbHZlU3R5bGVMaXN0IiwicmVzb2x2ZUNsYXNzTGlzdCIsImRhdGFNYXAiLCJnZXRUZW1wbGF0ZUVuZCIsIm5vZGUiLCJkYXRhIiwiZ2V0IiwiZW5kTm9kZSIsInJlbW92ZVRlbXBsYXRlIiwidGFyZ2V0Iiwibm9kZVR5cGUiLCJOb2RlIiwiVEVYVF9OT0RFIiwiQXJyYXkiLCJmcm9tIiwiY2hpbGROb2RlcyIsImZvckVhY2giLCJjaGlsZCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0YXJ0Tm9kZSIsImxhc3ROZXh0U2libGluZyIsIm5leHRTaWJsaW5nIiwicmVzb2x2ZVZhbHVlIiwiaG9zdCIsInZhbHVlIiwidHlwZSIsImlzQXJyYXkiLCJzZXQiLCJ0ZXh0Q29udGVudCIsInJlc29sdmVBcnJheSIsIm1vdmVQbGFjZWhvbGRlciIsInByZXZpb3VzU2libGluZyIsImluc2VydEJlZm9yZSIsInByZXZOb2RlIiwibmV4dE5vZGUiLCJsYXN0SW5kZXgiLCJsZW5ndGgiLCJhcnJheU1hcCIsInJlZHVjZSIsIm1hcCIsIml0ZW0iLCJpbmRleCIsImlkIiwiaGFzIiwiRXJyb3IiLCJwbGFjZWhvbGRlciIsImRlbGV0ZSIsImRvY3VtZW50IiwiY3JlYXRlVGV4dE5vZGUiLCJNYXAiLCJyZXNvbHZlUHJvcGVydHkiLCJhdHRyTmFtZSIsInByb3BlcnR5TmFtZSIsImlzU1ZHIiwic3Vic3RyIiwiZm5NYXAiLCJXZWFrTWFwIiwiZXZlbnROYW1lIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFyZ3MiLCJmbiIsInVuZGVmaW5lZCIsInJlbW92ZUF0dHJpYnV0ZSIsImF0dHJWYWx1ZSIsIlN0cmluZyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsIlBMQUNFSE9MREVSIiwiRGF0ZSIsIm5vdyIsIlBMQUNFSE9MREVSX1JFR0VYUCIsIlJlZ0V4cCIsIkFUVFJfUFJFRklYIiwiQVRUUl9SRUdFWFAiLCJwcmVwYXJlZFRlbXBsYXRlcyIsImFwcGx5U2hhZHlDU1MiLCJ0ZW1wbGF0ZSIsInRhZ05hbWUiLCJzaGFkeSIsImNsb25lIiwiY3JlYXRlRWxlbWVudCIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImltcG9ydE5vZGUiLCJzdHlsZXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwic3R5bGUiLCJjb3VudCIsImkiLCJwcmVwYXJlVGVtcGxhdGUiLCJ0b0xvd2VyQ2FzZSIsImNyZWF0ZVNpZ25hdHVyZSIsInBhcnRzIiwic2lnbmF0dXJlIiwiYWNjIiwicGFydCIsInNsaWNlIiwiam9pbiIsIm1hdGNoIiwicmVwbGFjZSIsImdldFByb3BlcnR5TmFtZSIsInN0cmluZyIsInNwbGl0IiwicG9wIiwiY3JlYXRlV2Fsa2VyIiwiY3JlYXRlVHJlZVdhbGtlciIsIk5vZGVGaWx0ZXIiLCJTSE9XX0VMRU1FTlQiLCJTSE9XX1RFWFQiLCJyZXBsYWNlQ29tbWVudHMiLCJmcmFnbWVudCIsIml0ZXJhdG9yIiwiY3JlYXRlTm9kZUl0ZXJhdG9yIiwiU0hPV19DT01NRU5UIiwiY29udGFpbmVyIiwiY29tcGlsZSIsInJhd1BhcnRzIiwiaW5uZXJIVE1MIiwiY2hpbGRyZW4iLCJzdmdSb290IiwiZmlyc3RDaGlsZCIsImNvbXBpbGVXYWxrZXIiLCJjb21waWxlSW5kZXgiLCJjdXJyZW50Tm9kZSIsInRleHQiLCJvZmZzZXQiLCJzcGxpdFRleHQiLCJwdXNoIiwiYXR0cmlidXRlcyIsImF0dHIiLCJ0cmltIiwibmFtZSIsInJlc3VsdHMiLCJwcmV2aW91c1ZhbHVlIiwicmVuZGVyV2Fsa2VyIiwiY2xvbmVkUGFydHMiLCJyZW5kZXJJbmRleCIsImN1cnJlbnRQYXJ0Iiwic2hpZnQiLCJtYXJrZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwiY2hpbGRMaXN0IiwicHJldmlvdXNDaGlsZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLFNBQVQsRUFB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LE9BQVYsQ0FBa0IsVUFBQ0MsS0FBRCxFQUFXO0FBQzNCUixpQkFBT1MsVUFBUCxDQUFrQmUsWUFBbEIsQ0FBK0JoQixLQUEvQixFQUFzQytILGNBQWMxSCxXQUFwRDtBQUNBMEgsMEJBQWdCL0gsS0FBaEI7QUFDRCxTQUhEO0FBSUQsT0FYRCxNQVdPO0FBQ0xSLGVBQU8wRSxXQUFQLENBQW1CNEIsUUFBbkI7QUFDRDtBQUNGOztBQUVELFFBQUlyRSxRQUFRLENBQVo7O0FBRUFyQyxTQUFLdUksT0FBTCxDQUFhNUgsT0FBYixDQUFxQixnQkFBZ0I7QUFBQTtBQUFBLFVBQWRaLElBQWM7QUFBQSxVQUFSeUQsRUFBUTs7QUFDbkNBLFNBQUdyQyxJQUFILEVBQVNwQixJQUFULEVBQWV3RCxLQUFLbEIsS0FBTCxDQUFmLEVBQTRCckMsSUFBNUI7QUFDQXFDLGVBQVMsQ0FBVDtBQUNELEtBSEQ7QUFJRCxHQTNERDtBQTRERCIsImZpbGUiOiJ0ZW1wbGF0ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZU1hcCwgc2hhZHlDU1MsIElTX0lFIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgcmVzb2x2ZVN0eWxlTGlzdCBmcm9tICcuL3N0eWxlJztcbmltcG9ydCByZXNvbHZlQ2xhc3NMaXN0IGZyb20gJy4vY2xhc3NMaXN0JztcblxuY29uc3QgZGF0YU1hcCA9IGNyZWF0ZU1hcCgpO1xuXG5mdW5jdGlvbiBnZXRUZW1wbGF0ZUVuZChub2RlKSB7XG4gIGxldCBkYXRhO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgJiYgKGRhdGEgPSBkYXRhTWFwLmdldChub2RlKSkgJiYgZGF0YS5lbmROb2RlKSB7XG4gICAgbm9kZSA9IGRhdGEuZW5kTm9kZTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpIHtcbiAgaWYgKHRhcmdldC5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICBBcnJheS5mcm9tKHRhcmdldC5jaGlsZE5vZGVzKS5mb3JFYWNoKGNoaWxkID0+XG4gICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG4gICAgY29uc3Qgc3RhcnROb2RlID0gZGF0YS5zdGFydE5vZGU7XG5cbiAgICBpZiAoc3RhcnROb2RlKSB7XG4gICAgICBjb25zdCBlbmROb2RlID0gZ2V0VGVtcGxhdGVFbmQoZGF0YS5lbmROb2RlKTtcblxuICAgICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgICBjb25zdCBsYXN0TmV4dFNpYmxpbmcgPSBlbmROb2RlLm5leHRTaWJsaW5nO1xuXG4gICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nICE9PSBsYXN0TmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZShob3N0LCB0YXJnZXQsIHZhbHVlKSB7XG4gIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdhcnJheScgOiB0eXBlb2YgdmFsdWU7XG4gIGxldCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7fSk7XG5cbiAgaWYgKGRhdGEudHlwZSAhPT0gdHlwZSkge1xuICAgIHJlbW92ZVRlbXBsYXRlKHRhcmdldCk7XG4gICAgZGF0YSA9IGRhdGFNYXAuc2V0KHRhcmdldCwgeyB0eXBlIH0pO1xuXG4gICAgaWYgKHRhcmdldC50ZXh0Q29udGVudCAhPT0gJycpIHtcbiAgICAgIHRhcmdldC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHZhbHVlKGhvc3QsIHRhcmdldCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdhcnJheSc6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlc29sdmVBcnJheShob3N0LCB0YXJnZXQsIHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAodmFsdWUgIT09IGRhdGEudmFsdWUpIHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0YXJnZXQudGV4dENvbnRlbnQgPSB0eXBlID09PSAnbnVtYmVyJyB8fCB2YWx1ZSA/IHZhbHVlIDogJyc7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbW92ZVBsYWNlaG9sZGVyKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nKSB7XG4gIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCBzdGFydE5vZGUgPSBkYXRhLnN0YXJ0Tm9kZTtcbiAgY29uc3QgZW5kTm9kZSA9IGdldFRlbXBsYXRlRW5kKGRhdGEuZW5kTm9kZSk7XG5cbiAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nKTtcblxuICBsZXQgcHJldk5vZGUgPSB0YXJnZXQ7XG4gIGxldCBub2RlID0gc3RhcnROb2RlO1xuICB3aGlsZSAobm9kZSkge1xuICAgIGNvbnN0IG5leHROb2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwcmV2Tm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBwcmV2Tm9kZS5uZXh0U2libGluZyk7XG4gICAgcHJldk5vZGUgPSBub2RlO1xuICAgIG5vZGUgPSBuZXh0Tm9kZSAhPT0gZW5kTm9kZS5uZXh0U2libGluZyAmJiBuZXh0Tm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQXJyYXkoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkge1xuICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGFyZ2V0O1xuICBjb25zdCBsYXN0SW5kZXggPSB2YWx1ZS5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcbiAgY29uc3QgeyBhcnJheU1hcCB9ID0gZGF0YTtcblxuICBkYXRhLmFycmF5TWFwID0gdmFsdWUucmVkdWNlKChtYXAsIGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaWQgPSB0eXBlb2YgaXRlbSA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uaWQgOiBpbmRleDtcblxuICAgIGlmIChtYXAuaGFzKGlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtodG1sXSAnJHtpZH0nIGtleSBhbHJlYWR5IHNldC4gVXNlICdodG1sXFxgLi4uXFxgLmtleShpZCknIGhlbHBlciB0byBzZXQgdW5pcXVlIGtleS5gKTtcbiAgICB9XG5cbiAgICBsZXQgcGxhY2Vob2xkZXI7XG4gICAgaWYgKGFycmF5TWFwICYmIGFycmF5TWFwLmhhcyhpZCkpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0gYXJyYXlNYXAuZ2V0KGlkKTtcbiAgICAgIGFycmF5TWFwLmRlbGV0ZShpZCk7XG5cbiAgICAgIGlmIChwbGFjZWhvbGRlci5wcmV2aW91c1NpYmxpbmcgIT09IHByZXZpb3VzU2libGluZykge1xuICAgICAgICBtb3ZlUGxhY2Vob2xkZXIocGxhY2Vob2xkZXIsIHByZXZpb3VzU2libGluZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBsYWNlaG9sZGVyID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgICAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHBsYWNlaG9sZGVyLCBwcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcpO1xuICAgIH1cblxuICAgIHJlc29sdmVWYWx1ZShob3N0LCBwbGFjZWhvbGRlciwgaXRlbSk7XG5cbiAgICBwcmV2aW91c1NpYmxpbmcgPSBnZXRUZW1wbGF0ZUVuZChkYXRhTWFwLmdldChwbGFjZWhvbGRlcikuZW5kTm9kZSB8fCBwbGFjZWhvbGRlcik7XG5cbiAgICBpZiAoaW5kZXggPT09IDApIGRhdGEuc3RhcnROb2RlID0gcGxhY2Vob2xkZXI7XG4gICAgaWYgKGluZGV4ID09PSBsYXN0SW5kZXgpIGRhdGEuZW5kTm9kZSA9IHByZXZpb3VzU2libGluZztcblxuICAgIG1hcC5zZXQoaWQsIHBsYWNlaG9sZGVyKTtcblxuICAgIHJldHVybiBtYXA7XG4gIH0sIG5ldyBNYXAoKSk7XG5cbiAgaWYgKGFycmF5TWFwKSB7XG4gICAgYXJyYXlNYXAuZm9yRWFjaCgocGxhY2Vob2xkZXIpID0+IHtcbiAgICAgIHJlbW92ZVRlbXBsYXRlKHBsYWNlaG9sZGVyKTtcbiAgICAgIHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocGxhY2Vob2xkZXIpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQcm9wZXJ0eShhdHRyTmFtZSwgcHJvcGVydHlOYW1lLCBpc1NWRykge1xuICBpZiAocHJvcGVydHlOYW1lLnN1YnN0cigwLCAyKSA9PT0gJ29uJykge1xuICAgIGNvbnN0IGZuTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICBjb25zdCBldmVudE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDIpO1xuXG4gICAgcmV0dXJuIChob3N0LCB0YXJnZXQsIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIWZuTWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBjb25zdCBmbiA9IGZuTWFwLmdldCh0YXJnZXQpO1xuICAgICAgICAgIGlmIChmbikgZm4oaG9zdCwgLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmbk1hcC5zZXQodGFyZ2V0LCB2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIHN3aXRjaCAoYXR0ck5hbWUpIHtcbiAgICBjYXNlICdzdHlsZSc6IHJldHVybiByZXNvbHZlU3R5bGVMaXN0O1xuICAgIGNhc2UgJ2NsYXNzJzogcmV0dXJuIHJlc29sdmVDbGFzc0xpc3Q7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIWlzU1ZHICYmIHByb3BlcnR5TmFtZSBpbiB0YXJnZXQpIHtcbiAgICAgICAgICBpZiAodGFyZ2V0W3Byb3BlcnR5TmFtZV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IHZhbHVlID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKSAhPT0gYXR0clZhbHVlKSB7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgfVxufVxuXG5jb25zdCBQTEFDRUhPTERFUiA9IGB7e2gtJHtEYXRlLm5vdygpfX19YDtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUCA9IG5ldyBSZWdFeHAoUExBQ0VIT0xERVIsICdnJyk7XG5jb25zdCBBVFRSX1BSRUZJWCA9IGAtLSR7RGF0ZS5ub3coKX0tLWA7XG5jb25zdCBBVFRSX1JFR0VYUCA9IG5ldyBSZWdFeHAoQVRUUl9QUkVGSVgsICdnJyk7XG5cbmNvbnN0IHByZXBhcmVkVGVtcGxhdGVzID0gbmV3IFdlYWtNYXAoKTtcblxuZnVuY3Rpb24gYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgdGFnTmFtZSkge1xuICBpZiAoIXRhZ05hbWUpIHJldHVybiB0ZW1wbGF0ZTtcblxuICByZXR1cm4gc2hhZHlDU1MoKHNoYWR5KSA9PiB7XG4gICAgbGV0IG1hcCA9IHByZXBhcmVkVGVtcGxhdGVzLmdldCh0ZW1wbGF0ZSk7XG4gICAgaWYgKCFtYXApIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHByZXBhcmVkVGVtcGxhdGVzLnNldCh0ZW1wbGF0ZSwgbWFwKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmUgPSBtYXAuZ2V0KHRhZ05hbWUpO1xuXG4gICAgaWYgKCFjbG9uZSkge1xuICAgICAgY2xvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgICAgY2xvbmUuY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5pbXBvcnROb2RlKHRlbXBsYXRlLmNvbnRlbnQsIHRydWUpKTtcblxuICAgICAgbWFwLnNldCh0YWdOYW1lLCBjbG9uZSk7XG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IGNsb25lLmNvbnRlbnQucXVlcnlTZWxlY3RvckFsbCgnc3R5bGUnKTtcblxuICAgICAgQXJyYXkuZnJvbShzdHlsZXMpLmZvckVhY2goKHN0eWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvdW50ID0gc3R5bGUuY2hpbGROb2Rlcy5sZW5ndGggKyAxO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICBzdHlsZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShQTEFDRUhPTERFUiksIHN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNoYWR5LnByZXBhcmVUZW1wbGF0ZShjbG9uZSwgdGFnTmFtZS50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNsb25lO1xuICB9LCB0ZW1wbGF0ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWduYXR1cmUocGFydHMpIHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gcGFydHMucmVkdWNlKChhY2MsIHBhcnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gcGFydDtcbiAgICB9IGVsc2UgaWYgKHBhcnRzLnNsaWNlKGluZGV4KS5qb2luKCcnKS5tYXRjaCgvXFxzKjxcXC9cXHMqKHRhYmxlfHRyfHRoZWFkfHRib2R5fHRmb290fGNvbGdyb3VwKT4vKSkge1xuICAgICAgcmV0dXJuIGAke2FjY308IS0tJHtQTEFDRUhPTERFUn0tLT4ke3BhcnR9YDtcbiAgICB9XG4gICAgcmV0dXJuIGFjYyArIFBMQUNFSE9MREVSICsgcGFydDtcbiAgfSwgJycpO1xuXG4gIGlmIChJU19JRSkge1xuICAgIHJldHVybiBzaWduYXR1cmUucmVwbGFjZShcbiAgICAgIC9zdHlsZVxccyo9XFxzKihbXCJdW15cIl0rW1wiXXxbJ11bXiddK1snXXxbXlxcc1wiJzw+L10rKS9nLFxuICAgICAgbWF0Y2ggPT4gYCR7QVRUUl9QUkVGSVh9JHttYXRjaH1gLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gc2lnbmF0dXJlO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxzKj1cXHMqWydcIl0qJC9nLCAnJykuc3BsaXQoJyAnKS5wb3AoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlV2Fsa2VyKG5vZGUpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoXG4gICAgbm9kZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UIHwgTm9kZUZpbHRlci5TSE9XX1RFWFQsXG4gICAgbnVsbCxcbiAgICBmYWxzZSxcbiAgKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNvbW1lbnRzKGZyYWdtZW50KSB7XG4gIGNvbnN0IGl0ZXJhdG9yID0gZG9jdW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKGZyYWdtZW50LCBOb2RlRmlsdGVyLlNIT1dfQ09NTUVOVCwgbnVsbCwgZmFsc2UpO1xuICBsZXQgbm9kZTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbmQtYXNzaWduXG4gIHdoaWxlIChub2RlID0gaXRlcmF0b3IubmV4dE5vZGUoKSkge1xuICAgIGlmIChub2RlLnRleHRDb250ZW50ID09PSBQTEFDRUhPTERFUikge1xuICAgICAgbm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShQTEFDRUhPTERFUiksIG5vZGUpO1xuICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbmV4cG9ydCBmdW5jdGlvbiBjb21waWxlKHNpZ25hdHVyZSwgcmF3UGFydHMsIGlzU1ZHKSB7XG4gIGNvbnN0IHRlbXBsYXRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGVtcGxhdGUnKTtcbiAgY29uc3QgcGFydHMgPSBbXTtcblxuICBpZiAoSVNfSUUpIHtcbiAgICB0ZW1wbGF0ZS5pbm5lckhUTUwgPSBzaWduYXR1cmU7XG4gIH0gZWxzZSB7XG4gICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8dGVtcGxhdGU+JHtzaWduYXR1cmV9PC90ZW1wbGF0ZT5gO1xuICAgIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQoY29udGFpbmVyLmNoaWxkcmVuWzBdLmNvbnRlbnQpO1xuICB9XG5cbiAgaWYgKGlzU1ZHKSB7XG4gICAgY29uc3Qgc3ZnUm9vdCA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LnJlbW92ZUNoaWxkKHN2Z1Jvb3QpO1xuICAgIEFycmF5LmZyb20oc3ZnUm9vdC5jaGlsZE5vZGVzKS5mb3JFYWNoKG5vZGUgPT4gdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChub2RlKSk7XG4gIH1cblxuICByZXBsYWNlQ29tbWVudHModGVtcGxhdGUuY29udGVudCk7XG5cbiAgY29uc3QgY29tcGlsZVdhbGtlciA9IGNyZWF0ZVdhbGtlcih0ZW1wbGF0ZS5jb250ZW50KTtcbiAgbGV0IGNvbXBpbGVJbmRleCA9IDA7XG5cbiAgd2hpbGUgKGNvbXBpbGVXYWxrZXIubmV4dE5vZGUoKSkge1xuICAgIGNvbnN0IG5vZGUgPSBjb21waWxlV2Fsa2VyLmN1cnJlbnROb2RlO1xuXG4gICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICBpZiAobm9kZS50ZXh0Q29udGVudCAhPT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgbm9kZS50ZXh0Q29udGVudC5yZXBsYWNlKFxuICAgICAgICAgIFBMQUNFSE9MREVSLFxuICAgICAgICAgICh0ZXh0LCBvZmZzZXQpID0+IHtcbiAgICAgICAgICAgIG5vZGUuc3BsaXRUZXh0KG9mZnNldCA+IDAgPyBvZmZzZXQgOiB0ZXh0Lmxlbmd0aCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5vZGUudGV4dENvbnRlbnQgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgIGlmICghSVNfSUUpIG5vZGUudGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgcGFydHMucHVzaChbY29tcGlsZUluZGV4LCByZXNvbHZlVmFsdWVdKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgQXJyYXkuZnJvbShub2RlLmF0dHJpYnV0ZXMpLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IElTX0lFID8gYXR0ci5uYW1lLnJlcGxhY2UoQVRUUl9QUkVGSVgsICcnKSA6IGF0dHIubmFtZTtcblxuICAgICAgICBpZiAodmFsdWUgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgICAgY29uc3QgcHJvcGVydHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lKHJhd1BhcnRzW3BhcnRzLmxlbmd0aF0pO1xuICAgICAgICAgIHBhcnRzLnB1c2goW2NvbXBpbGVJbmRleCwgcmVzb2x2ZVByb3BlcnR5KG5hbWUsIHByb3BlcnR5TmFtZSwgaXNTVkcpXSk7XG4gICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gdmFsdWUubWF0Y2goUExBQ0VIT0xERVJfUkVHRVhQKTtcbiAgICAgICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICAgICAgcGFydHMucHVzaChbY29tcGlsZUluZGV4LCAoaG9zdCwgdGFyZ2V0LCBhdHRyVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZS5yZXBsYWNlKFBMQUNFSE9MREVSLCBhdHRyVmFsdWUgPT0gbnVsbCA/ICcnIDogYXR0clZhbHVlKSk7XG4gICAgICAgICAgICB9XSk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIChob3N0LCB0YXJnZXQsIGF0dHJWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSB0YXJnZXQuZ2V0QXR0cmlidXRlKG5hbWUpO1xuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUobmFtZSwgcHJldmlvdXNWYWx1ZS5yZXBsYWNlKFBMQUNFSE9MREVSLCBhdHRyVmFsdWUgPT0gbnVsbCA/ICcnIDogYXR0clZhbHVlKSk7XG4gICAgICAgICAgICAgIH1dKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlLnJlcGxhY2UoUExBQ0VIT0xERVJfUkVHRVhQLCAnJyk7XG5cbiAgICAgICAgICAgIGlmIChJU19JRSAmJiBuYW1lICE9PSBhdHRyLm5hbWUpIHtcbiAgICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUobmFtZSwgYXR0ci52YWx1ZSk7XG4gICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIubmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb21waWxlSW5kZXggKz0gMTtcbiAgfVxuXG4gIHJldHVybiAoaG9zdCwgdGFyZ2V0LCBhcmdzKSA9PiB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCwgeyB0eXBlOiAnZnVuY3Rpb24nIH0pO1xuXG4gICAgaWYgKHRlbXBsYXRlICE9PSBkYXRhLnRlbXBsYXRlKSB7XG4gICAgICBpZiAoZGF0YS50ZW1wbGF0ZSkgcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KTtcblxuICAgICAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5pbXBvcnROb2RlKGFwcGx5U2hhZHlDU1ModGVtcGxhdGUsIGhvc3QudGFnTmFtZSkuY29udGVudCwgdHJ1ZSk7XG5cbiAgICAgIGNvbnN0IHJlbmRlcldhbGtlciA9IGNyZWF0ZVdhbGtlcihmcmFnbWVudCk7XG4gICAgICBjb25zdCBjbG9uZWRQYXJ0cyA9IHBhcnRzLnNsaWNlKDApO1xuXG4gICAgICBsZXQgcmVuZGVySW5kZXggPSAwO1xuICAgICAgbGV0IGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcblxuICAgICAgY29uc3QgbWFya2VycyA9IFtdO1xuXG4gICAgICBPYmplY3QuYXNzaWduKGRhdGEsIHsgdGVtcGxhdGUsIG1hcmtlcnMgfSk7XG5cbiAgICAgIHdoaWxlIChyZW5kZXJXYWxrZXIubmV4dE5vZGUoKSkge1xuICAgICAgICBjb25zdCBub2RlID0gcmVuZGVyV2Fsa2VyLmN1cnJlbnROb2RlO1xuXG4gICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgICAgICAgIGlmIChub2RlLnRleHRDb250ZW50ID09PSBQTEFDRUhPTERFUikge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoSVNfSUUpIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoQVRUUl9SRUdFWFAsICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3VycmVudFBhcnQgJiYgY3VycmVudFBhcnRbMF0gPT09IHJlbmRlckluZGV4KSB7XG4gICAgICAgICAgbWFya2Vycy5wdXNoKFtub2RlLCBjdXJyZW50UGFydFsxXV0pO1xuICAgICAgICAgIGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlckluZGV4ICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IEFycmF5LmZyb20oZnJhZ21lbnQuY2hpbGROb2Rlcyk7XG5cbiAgICAgICAgZGF0YS5zdGFydE5vZGUgPSBjaGlsZExpc3RbMF07XG4gICAgICAgIGRhdGEuZW5kTm9kZSA9IGNoaWxkTGlzdFtjaGlsZExpc3QubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG4gICAgICAgIGNoaWxkTGlzdC5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIHRhcmdldC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZCwgcHJldmlvdXNDaGlsZC5uZXh0U2libGluZyk7XG4gICAgICAgICAgcHJldmlvdXNDaGlsZCA9IGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGRhdGEubWFya2Vycy5mb3JFYWNoKChbbm9kZSwgZm5dKSA9PiB7XG4gICAgICBmbihob3N0LCBub2RlLCBhcmdzW2luZGV4XSwgZGF0YSk7XG4gICAgICBpbmRleCArPSAxO1xuICAgIH0pO1xuICB9O1xufVxuIl19

@@ -5,40 +5,47 @@ export { render as default };

import { shadyCSS } from './utils';
var map = new WeakMap();
var cache = new WeakMap();
var FPS_THRESHOLD = 1000 / 60; // 60 FPS ~ 16,67ms time window
var queue = [];
var queue = new Set();
var cache = new WeakMap();
export function update() {
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var startTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
function update(iterator, startTime) {
if (startTime && performance.now() - startTime > FPS_THRESHOLD) {
requestAnimationFrame(function () {
return update(iterator);
return update(index);
});
} else {
var _iterator$next = iterator.next(),
done = _iterator$next.done,
target = _iterator$next.value;
var target = queue[index];
var nextTime = performance.now();
var next = function next() {
return update(iterator, nextTime);
return update(index + 1, nextTime);
};
if (done) {
queue.clear();
if (!target) {
shadyCSS(function (shady) {
return queue.forEach(function (t) {
return shady.styleSubtree(t);
});
});
queue = [];
} else if (map.has(target)) {
var key = map.get(target);
var prevFn = cache.get(target);
var nextFn = void 0;
var prevUpdate = cache.get(target);
var nextUpdate = void 0;
try {
nextFn = target[key];
nextUpdate = target[key];
if (nextFn !== prevFn) {
cache.set(target, nextFn);
Promise.resolve().then(function () {
if (nextUpdate !== prevUpdate) {
cache.set(target, nextUpdate);
return Promise.resolve().then(function () {
try {
nextFn();
nextUpdate();
if (!prevUpdate) shadyCSS(function (shady) {
return shady.styleElement(target);
});
next();

@@ -50,5 +57,4 @@ } catch (e) {

});
} else {
next();
}
next();
} catch (e) {

@@ -62,2 +68,3 @@ next();

}
return null;
}

@@ -69,8 +76,10 @@

if (map.has(target)) {
if (!queue.size) {
if (!queue[0]) {
requestAnimationFrame(function () {
return update(queue.values());
return update();
});
}
queue.add(target);
if (queue.indexOf(target) === -1) {
queue.push(target);
}
}

@@ -104,2 +113,2 @@ });

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsibWFwIiwiV2Vha01hcCIsIkZQU19USFJFU0hPTEQiLCJxdWV1ZSIsIlNldCIsImNhY2hlIiwidXBkYXRlIiwiaXRlcmF0b3IiLCJzdGFydFRpbWUiLCJwZXJmb3JtYW5jZSIsIm5vdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm5leHQiLCJkb25lIiwidGFyZ2V0IiwidmFsdWUiLCJuZXh0VGltZSIsImNsZWFyIiwiaGFzIiwia2V5IiwiZ2V0IiwicHJldkZuIiwibmV4dEZuIiwic2V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY29tcG9zZWRQYXRoIiwic2l6ZSIsInZhbHVlcyIsImFkZCIsInJlbmRlciIsIlR5cGVFcnJvciIsImhvc3QiLCJmbiIsInNoYWRvd1Jvb3QiLCJjb25uZWN0IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQU1BLE1BQU0sSUFBSUMsT0FBSixFQUFaOztBQUVBLElBQU1DLGdCQUFnQixPQUFPLEVBQTdCLEMsQ0FBaUM7O0FBRWpDLElBQU1DLFFBQVEsSUFBSUMsR0FBSixFQUFkO0FBQ0EsSUFBTUMsUUFBUSxJQUFJSixPQUFKLEVBQWQ7O0FBRUEsU0FBU0ssTUFBVCxDQUFnQkMsUUFBaEIsRUFBMEJDLFNBQTFCLEVBQXFDO0FBQ25DLE1BQUlBLGFBQWNDLFlBQVlDLEdBQVosS0FBb0JGLFNBQXBCLEdBQWdDTixhQUFsRCxFQUFrRTtBQUNoRVMsMEJBQXNCO0FBQUEsYUFBTUwsT0FBT0MsUUFBUCxDQUFOO0FBQUEsS0FBdEI7QUFDRCxHQUZELE1BRU87QUFBQSx5QkFDMkJBLFNBQVNLLElBQVQsRUFEM0I7QUFBQSxRQUNHQyxJQURILGtCQUNHQSxJQURIO0FBQUEsUUFDZ0JDLE1BRGhCLGtCQUNTQyxLQURUOztBQUVMLFFBQU1DLFdBQVdQLFlBQVlDLEdBQVosRUFBakI7QUFDQSxRQUFNRSxPQUFPLFNBQVBBLElBQU87QUFBQSxhQUFNTixPQUFPQyxRQUFQLEVBQWlCUyxRQUFqQixDQUFOO0FBQUEsS0FBYjs7QUFFQSxRQUFJSCxJQUFKLEVBQVU7QUFDUlYsWUFBTWMsS0FBTjtBQUNELEtBRkQsTUFFTyxJQUFJakIsSUFBSWtCLEdBQUosQ0FBUUosTUFBUixDQUFKLEVBQXFCO0FBQzFCLFVBQU1LLE1BQU1uQixJQUFJb0IsR0FBSixDQUFRTixNQUFSLENBQVo7QUFDQSxVQUFNTyxTQUFTaEIsTUFBTWUsR0FBTixDQUFVTixNQUFWLENBQWY7QUFDQSxVQUFJUSxlQUFKOztBQUVBLFVBQUk7QUFDRkEsaUJBQVNSLE9BQU9LLEdBQVAsQ0FBVDs7QUFFQSxZQUFJRyxXQUFXRCxNQUFmLEVBQXVCO0FBQ3JCaEIsZ0JBQU1rQixHQUFOLENBQVVULE1BQVYsRUFBa0JRLE1BQWxCOztBQUVBRSxrQkFBUUMsT0FBUixHQUFrQkMsSUFBbEIsQ0FBdUIsWUFBTTtBQUMzQixnQkFBSTtBQUNGSjtBQUNBVjtBQUNELGFBSEQsQ0FHRSxPQUFPZSxDQUFQLEVBQVU7QUFDVmY7QUFDQSxvQkFBTWUsQ0FBTjtBQUNEO0FBQ0YsV0FSRDtBQVNELFNBWkQsTUFZTztBQUNMZjtBQUNEO0FBQ0YsT0FsQkQsQ0FrQkUsT0FBT2UsQ0FBUCxFQUFVO0FBQ1ZmO0FBQ0EsY0FBTWUsQ0FBTjtBQUNEO0FBQ0YsS0EzQk0sTUEyQkE7QUFDTGY7QUFDRDtBQUNGO0FBQ0Y7O0FBRURnQixTQUFTQyxnQkFBVCxDQUEwQixhQUExQixFQUF5QyxVQUFDQyxLQUFELEVBQVc7QUFDbEQsTUFBTWhCLFNBQVNnQixNQUFNQyxZQUFOLEdBQXFCLENBQXJCLENBQWY7O0FBRUEsTUFBSS9CLElBQUlrQixHQUFKLENBQVFKLE1BQVIsQ0FBSixFQUFxQjtBQUNuQixRQUFJLENBQUNYLE1BQU02QixJQUFYLEVBQWlCO0FBQ2ZyQiw0QkFBc0I7QUFBQSxlQUFNTCxPQUFPSCxNQUFNOEIsTUFBTixFQUFQLENBQU47QUFBQSxPQUF0QjtBQUNEO0FBQ0Q5QixVQUFNK0IsR0FBTixDQUFVcEIsTUFBVjtBQUNEO0FBQ0YsQ0FURDs7QUFXZSxTQUFTcUIsTUFBVCxDQUFnQmYsSUFBaEIsRUFBcUI7QUFDbEMsTUFBSSxPQUFPQSxJQUFQLEtBQWUsVUFBbkIsRUFBK0I7QUFDN0IsVUFBTWdCLHVFQUFvRWhCLElBQXBFLHlDQUFvRUEsSUFBcEUsR0FBTjtBQUNEOztBQUVELFNBQU87QUFDTEEsU0FBSyxhQUFDaUIsSUFBRCxFQUFVO0FBQ2IsVUFBTUMsS0FBS2xCLEtBQUlpQixJQUFKLENBQVg7QUFDQSxhQUFPO0FBQUEsZUFBTUMsR0FBR0QsSUFBSCxFQUFTQSxLQUFLRSxVQUFkLENBQU47QUFBQSxPQUFQO0FBQ0QsS0FKSTtBQUtMQyxXQUxLLG1CQUtHSCxJQUxILEVBS1NsQixHQUxULEVBS2M7QUFDakIsVUFBSSxDQUFDa0IsS0FBS0UsVUFBVixFQUFzQjtBQUNwQkYsYUFBS0ksWUFBTCxDQUFrQixFQUFFQyxNQUFNLE1BQVIsRUFBbEI7QUFDRDs7QUFFRDFDLFVBQUl1QixHQUFKLENBQVFjLElBQVIsRUFBY2xCLEdBQWQ7O0FBRUEsYUFBTztBQUFBLGVBQU1uQixJQUFJMkMsTUFBSixDQUFXTixJQUFYLENBQU47QUFBQSxPQUFQO0FBQ0Q7QUFiSSxHQUFQO0FBZUQiLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbWFwID0gbmV3IFdlYWtNYXAoKTtcblxuY29uc3QgRlBTX1RIUkVTSE9MRCA9IDEwMDAgLyA2MDsgLy8gNjAgRlBTIH4gMTYsNjdtcyB0aW1lIHdpbmRvd1xuXG5jb25zdCBxdWV1ZSA9IG5ldyBTZXQoKTtcbmNvbnN0IGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcblxuZnVuY3Rpb24gdXBkYXRlKGl0ZXJhdG9yLCBzdGFydFRpbWUpIHtcbiAgaWYgKHN0YXJ0VGltZSAmJiAocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydFRpbWUgPiBGUFNfVEhSRVNIT0xEKSkge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB1cGRhdGUoaXRlcmF0b3IpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlOiB0YXJnZXQgfSA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICBjb25zdCBuZXh0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IG5leHQgPSAoKSA9PiB1cGRhdGUoaXRlcmF0b3IsIG5leHRUaW1lKTtcblxuICAgIGlmIChkb25lKSB7XG4gICAgICBxdWV1ZS5jbGVhcigpO1xuICAgIH0gZWxzZSBpZiAobWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgICBjb25zdCBrZXkgPSBtYXAuZ2V0KHRhcmdldCk7XG4gICAgICBjb25zdCBwcmV2Rm4gPSBjYWNoZS5nZXQodGFyZ2V0KTtcbiAgICAgIGxldCBuZXh0Rm47XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG5leHRGbiA9IHRhcmdldFtrZXldO1xuXG4gICAgICAgIGlmIChuZXh0Rm4gIT09IHByZXZGbikge1xuICAgICAgICAgIGNhY2hlLnNldCh0YXJnZXQsIG5leHRGbik7XG5cbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG5leHRGbigpO1xuICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9XG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0BpbnZhbGlkYXRlJywgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdO1xuXG4gIGlmIChtYXAuaGFzKHRhcmdldCkpIHtcbiAgICBpZiAoIXF1ZXVlLnNpemUpIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB1cGRhdGUocXVldWUudmFsdWVzKCkpKTtcbiAgICB9XG4gICAgcXVldWUuYWRkKHRhcmdldCk7XG4gIH1cbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZW5kZXIoZ2V0KSB7XG4gIGlmICh0eXBlb2YgZ2V0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKGBbcmVuZGVyXSBUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uOiAke3R5cGVvZiBnZXR9YCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGdldDogKGhvc3QpID0+IHtcbiAgICAgIGNvbnN0IGZuID0gZ2V0KGhvc3QpO1xuICAgICAgcmV0dXJuICgpID0+IGZuKGhvc3QsIGhvc3Quc2hhZG93Um9vdCk7XG4gICAgfSxcbiAgICBjb25uZWN0KGhvc3QsIGtleSkge1xuICAgICAgaWYgKCFob3N0LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgaG9zdC5hdHRhY2hTaGFkb3coeyBtb2RlOiAnb3BlbicgfSk7XG4gICAgICB9XG5cbiAgICAgIG1hcC5zZXQoaG9zdCwga2V5KTtcblxuICAgICAgcmV0dXJuICgpID0+IG1hcC5kZWxldGUoaG9zdCk7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsic2hhZHlDU1MiLCJtYXAiLCJXZWFrTWFwIiwiY2FjaGUiLCJGUFNfVEhSRVNIT0xEIiwicXVldWUiLCJ1cGRhdGUiLCJpbmRleCIsInN0YXJ0VGltZSIsInBlcmZvcm1hbmNlIiwibm93IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwidGFyZ2V0IiwibmV4dFRpbWUiLCJuZXh0IiwiZm9yRWFjaCIsInNoYWR5Iiwic3R5bGVTdWJ0cmVlIiwidCIsImhhcyIsImtleSIsImdldCIsInByZXZVcGRhdGUiLCJuZXh0VXBkYXRlIiwic2V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwic3R5bGVFbGVtZW50IiwiZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY29tcG9zZWRQYXRoIiwiaW5kZXhPZiIsInB1c2giLCJyZW5kZXIiLCJUeXBlRXJyb3IiLCJob3N0IiwiZm4iLCJzaGFkb3dSb290IiwiY29ubmVjdCIsImF0dGFjaFNoYWRvdyIsIm1vZGUiLCJkZWxldGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxRQUFULFFBQXlCLFNBQXpCOztBQUVBLElBQU1DLE1BQU0sSUFBSUMsT0FBSixFQUFaO0FBQ0EsSUFBTUMsUUFBUSxJQUFJRCxPQUFKLEVBQWQ7QUFDQSxJQUFNRSxnQkFBZ0IsT0FBTyxFQUE3QixDLENBQWlDO0FBQ2pDLElBQUlDLFFBQVEsRUFBWjs7QUFFQSxPQUFPLFNBQVNDLE1BQVQsR0FBMEM7QUFBQSxNQUExQkMsS0FBMEIsdUVBQWxCLENBQWtCO0FBQUEsTUFBZkMsU0FBZSx1RUFBSCxDQUFHOztBQUMvQyxNQUFJQSxhQUFjQyxZQUFZQyxHQUFaLEtBQW9CRixTQUFwQixHQUFnQ0osYUFBbEQsRUFBa0U7QUFDaEVPLDBCQUFzQjtBQUFBLGFBQU1MLE9BQU9DLEtBQVAsQ0FBTjtBQUFBLEtBQXRCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsUUFBTUssU0FB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ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkeUNTUyB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuY29uc3QgY2FjaGUgPSBuZXcgV2Vha01hcCgpO1xuY29uc3QgRlBTX1RIUkVTSE9MRCA9IDEwMDAgLyA2MDsgLy8gNjAgRlBTIH4gMTYsNjdtcyB0aW1lIHdpbmRvd1xubGV0IHF1ZXVlID0gW107XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGUoaW5kZXggPSAwLCBzdGFydFRpbWUgPSAwKSB7XG4gIGlmIChzdGFydFRpbWUgJiYgKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lID4gRlBTX1RIUkVTSE9MRCkpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdXBkYXRlKGluZGV4KSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gcXVldWVbaW5kZXhdO1xuICAgIGNvbnN0IG5leHRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgbmV4dCA9ICgpID0+IHVwZGF0ZShpbmRleCArIDEsIG5leHRUaW1lKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICBzaGFkeUNTUyhzaGFkeSA9PiBxdWV1ZS5mb3JFYWNoKHQgPT4gc2hhZHkuc3R5bGVTdWJ0cmVlKHQpKSk7XG4gICAgICBxdWV1ZSA9IFtdO1xuICAgIH0gZWxzZSBpZiAobWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgICBjb25zdCBrZXkgPSBtYXAuZ2V0KHRhcmdldCk7XG4gICAgICBjb25zdCBwcmV2VXBkYXRlID0gY2FjaGUuZ2V0KHRhcmdldCk7XG4gICAgICBsZXQgbmV4dFVwZGF0ZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV4dFVwZGF0ZSA9IHRhcmdldFtrZXldO1xuXG4gICAgICAgIGlmIChuZXh0VXBkYXRlICE9PSBwcmV2VXBkYXRlKSB7XG4gICAgICAgICAgY2FjaGUuc2V0KHRhcmdldCwgbmV4dFVwZGF0ZSk7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgbmV4dFVwZGF0ZSgpO1xuICAgICAgICAgICAgICBpZiAoIXByZXZVcGRhdGUpIHNoYWR5Q1NTKHNoYWR5ID0+IHNoYWR5LnN0eWxlRWxlbWVudCh0YXJnZXQpKTtcbiAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBuZXh0KCk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0BpbnZhbGlkYXRlJywgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHRhcmdldCA9IGV2ZW50LmNvbXBvc2VkUGF0aCgpWzBdO1xuXG4gIGlmIChtYXAuaGFzKHRhcmdldCkpIHtcbiAgICBpZiAoIXF1ZXVlWzBdKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCgpID0+IHVwZGF0ZSgpKSk7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5pbmRleE9mKHRhcmdldCkgPT09IC0xKSB7XG4gICAgICBxdWV1ZS5wdXNoKHRhcmdldCk7XG4gICAgfVxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVuZGVyKGdldCkge1xuICBpZiAodHlwZW9mIGdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IFR5cGVFcnJvcihgW3JlbmRlcl0gVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbjogJHt0eXBlb2YgZ2V0fWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IChob3N0KSA9PiB7XG4gICAgICBjb25zdCBmbiA9IGdldChob3N0KTtcbiAgICAgIHJldHVybiAoKSA9PiBmbihob3N0LCBob3N0LnNoYWRvd1Jvb3QpO1xuICAgIH0sXG4gICAgY29ubmVjdChob3N0LCBrZXkpIHtcbiAgICAgIGlmICghaG9zdC5zaGFkb3dSb290KSB7XG4gICAgICAgIGhvc3QuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pO1xuICAgICAgfVxuXG4gICAgICBtYXAuc2V0KGhvc3QsIGtleSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiBtYXAuZGVsZXRlKGhvc3QpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=

@@ -40,3 +40,12 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };

export function shadyCSS(fn, fallback) {
var shady = window.ShadyCSS;
if (shady && !shady.nativeShadow) {
return fn(shady);
}
return fallback;
}
export var IS_IE = 'ActiveXObject' in global;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaCIsInN0ciIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInBhc2NhbFRvRGFzaCIsInNsaWNlIiwiZGlzcGF0Y2giLCJob3N0IiwiZXZlbnRUeXBlIiwib3B0aW9ucyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjcmVhdGVNYXAiLCJtYXAiLCJXZWFrTWFwIiwiZ2V0Iiwia2V5IiwiZGVmYXVsdFZhbHVlIiwiaGFzIiwidW5kZWZpbmVkIiwic2V0IiwidmFsdWUiLCJJU19JRSIsImdsb2JhbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLFNBQVNBLFdBQVQsQ0FBcUJDLEdBQXJCLEVBQTBCO0FBQy9CLFNBQU9BLElBQUlDLE9BQUosQ0FBWSxpQkFBWixFQUErQixPQUEvQixFQUF3Q0MsV0FBeEMsRUFBUDtBQUNEOztBQUVELE9BQU8sU0FBU0MsWUFBVCxDQUFzQkgsR0FBdEIsRUFBMkI7QUFDaENBLFFBQU1BLElBQUksQ0FBSixFQUFPRSxXQUFQLEtBQXVCRixJQUFJSSxLQUFKLENBQVUsQ0FBVixDQUE3QjtBQUNBLFNBQU9MLFlBQVlDLEdBQVosQ0FBUDtBQUNEOztBQUVELE9BQU8sU0FBU0ssUUFBVCxDQUFrQkMsSUFBbEIsRUFBd0JDLFNBQXhCLEVBQWlEO0FBQUEsTUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN0REYsT0FBS0csYUFBTCxDQUFtQixJQUFJQyxXQUFKLENBQWdCSCxTQUFoQixhQUE2QkksU0FBUyxLQUF0QyxJQUFnREgsT0FBaEQsRUFBbkI7QUFDRDs7QUFFRCxPQUFPLFNBQVNJLFNBQVQsR0FBcUI7QUFDMUIsTUFBTUMsTUFBTSxJQUFJQyxPQUFKLEVBQVo7O0FBRUEsU0FBTztBQUNMQyxPQURLLGVBQ0RDLEdBREMsRUFDSUMsWUFESixFQUNrQjtBQUNyQixVQUFJSixJQUFJSyxHQUFKLENBQVFGLEdBQVIsQ0FBSixFQUFrQjtBQUNoQixlQUFPSCxJQUFJRSxHQUFKLENBQVFDLEdBQVIsQ0FBUDtBQUNEOztBQUVELFVBQUlDLGlCQUFpQkUsU0FBckIsRUFBZ0M7QUFDOUJOLFlBQUlPLEdBQUosQ0FBUUosR0FBUixFQUFhQyxZQUFiO0FBQ0Q7O0FBRUQsYUFBT0EsWUFBUDtBQUNELEtBWEk7QUFZTEcsT0FaSyxlQVlESixHQVpDLEVBWUlLLEtBWkosRUFZVztBQUNkUixVQUFJTyxHQUFKLENBQVFKLEdBQVIsRUFBYUssS0FBYjtBQUNBLGFBQU9BLEtBQVA7QUFDRDtBQWZJLEdBQVA7QUFpQkQ7O0FBRUQsT0FBTyxJQUFNQyxRQUFRLG1CQUFtQkMsTUFBakMiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY2FtZWxUb0Rhc2goc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhc2NhbFRvRGFzaChzdHIpIHtcbiAgc3RyID0gc3RyWzBdLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIHJldHVybiBjYW1lbFRvRGFzaChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2goaG9zdCwgZXZlbnRUeXBlLCBvcHRpb25zID0ge30pIHtcbiAgaG9zdC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudFR5cGUsIHsgYnViYmxlczogZmFsc2UsIC4uLm9wdGlvbnMgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFwKCkge1xuICBjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0KGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBpZiAobWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBtYXAuZ2V0KGtleSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBJU19JRSA9ICdBY3RpdmVYT2JqZWN0JyBpbiBnbG9iYWw7XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaCIsInN0ciIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInBhc2NhbFRvRGFzaCIsInNsaWNlIiwiZGlzcGF0Y2giLCJob3N0IiwiZXZlbnRUeXBlIiwib3B0aW9ucyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjcmVhdGVNYXAiLCJtYXAiLCJXZWFrTWFwIiwiZ2V0Iiwia2V5IiwiZGVmYXVsdFZhbHVlIiwiaGFzIiwidW5kZWZpbmVkIiwic2V0IiwidmFsdWUiLCJzaGFkeUNTUyIsImZuIiwiZmFsbGJhY2siLCJzaGFkeSIsIndpbmRvdyIsIlNoYWR5Q1NTIiwibmF0aXZlU2hhZG93IiwiSVNfSUUiLCJnbG9iYWwiXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxTQUFTQSxXQUFULENBQXFCQyxHQUFyQixFQUEwQjtBQUMvQixTQUFPQSxJQUFJQyxPQUFKLENBQVksaUJBQVosRUFBK0IsT0FBL0IsRUFBd0NDLFdBQXhDLEVBQVA7QUFDRDs7QUFFRCxPQUFPLFNBQVNDLFlBQVQsQ0FBc0JILEdBQXRCLEVBQTJCO0FBQ2hDQSxRQUFNQSxJQUFJLENBQUosRUFBT0UsV0FBUCxLQUF1QkYsSUFBSUksS0FBSixDQUFVLENBQVYsQ0FBN0I7QUFDQSxTQUFPTCxZQUFZQyxHQUFaLENBQVA7QUFDRDs7QUFFRCxPQUFPLFNBQVNLLFFBQVQsQ0FBa0JDLElBQWxCLEVBQXdCQyxTQUF4QixFQUFpRDtBQUFBLE1BQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDdERGLE9BQUtHLGFBQUwsQ0FBbUIsSUFBSUMsV0FBSixDQUFnQkgsU0FBaEIsYUFBNkJJLFNBQVMsS0FBdEMsSUFBZ0RILE9BQWhELEVBQW5CO0FBQ0Q7O0FBRUQsT0FBTyxTQUFTSSxTQUFULEdBQXFCO0FBQzFCLE1BQU1DLE1BQU0sSUFBSUMsT0FBSixFQUFaOztBQUVBLFNBQU87QUFDTEMsT0FESyxlQUNEQyxHQURDLEVBQ0lDLFlBREosRUFDa0I7QUFDckIsVUFBSUosSUFBSUssR0FBSixDQUFRRixHQUFSLENBQUosRUFBa0I7QUFDaEIsZUFBT0gsSUFBSUUsR0FBSixDQUFRQyxHQUFSLENBQVA7QUFDRDs7QUFFRCxVQUFJQyxpQkFBaUJFLFNBQXJCLEVBQWdDO0FBQzlCTixZQUFJTyxHQUFKLENBQVFKLEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELGFBQU9BLFlBQVA7QUFDRCxLQVhJO0FBWUxHLE9BWkssZUFZREosR0FaQyxFQVlJSyxLQVpKLEVBWVc7QUFDZFIsVUFBSU8sR0FBSixDQUFRSixHQUFSLEVBQWFLLEtBQWI7QUFDQSxhQUFPQSxLQUFQO0FBQ0Q7QUFmSSxHQUFQO0FBaUJEOztBQUVELE9BQU8sU0FBU0MsUUFBVCxDQUFrQkMsRUFBbEIsRUFBc0JDLFFBQXRCLEVBQWdDO0FBQ3JDLE1BQU1DLFFBQVFDLE9BQU9DLFFBQXJCO0FBQ0EsTUFBSUYsU0FBUyxDQUFDQSxNQUFNRyxZQUFwQixFQUFrQztBQUNoQyxXQUFPTCxHQUFHRSxLQUFILENBQVA7QUFDRDs7QUFFRCxTQUFPRCxRQUFQO0FBQ0Q7O0FBRUQsT0FBTyxJQUFNSyxRQUFRLG1CQUFtQkMsTUFBakMiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY2FtZWxUb0Rhc2goc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJykudG9Mb3dlckNhc2UoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhc2NhbFRvRGFzaChzdHIpIHtcbiAgc3RyID0gc3RyWzBdLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG4gIHJldHVybiBjYW1lbFRvRGFzaChzdHIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2goaG9zdCwgZXZlbnRUeXBlLCBvcHRpb25zID0ge30pIHtcbiAgaG9zdC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChldmVudFR5cGUsIHsgYnViYmxlczogZmFsc2UsIC4uLm9wdGlvbnMgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWFwKCkge1xuICBjb25zdCBtYXAgPSBuZXcgV2Vha01hcCgpO1xuXG4gIHJldHVybiB7XG4gICAgZ2V0KGtleSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICBpZiAobWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIHJldHVybiBtYXAuZ2V0KGtleSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXAuc2V0KGtleSwgZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9LFxuICAgIHNldChrZXksIHZhbHVlKSB7XG4gICAgICBtYXAuc2V0KGtleSwgdmFsdWUpO1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaGFkeUNTUyhmbiwgZmFsbGJhY2spIHtcbiAgY29uc3Qgc2hhZHkgPSB3aW5kb3cuU2hhZHlDU1M7XG4gIGlmIChzaGFkeSAmJiAhc2hhZHkubmF0aXZlU2hhZG93KSB7XG4gICAgcmV0dXJuIGZuKHNoYWR5KTtcbiAgfVxuXG4gIHJldHVybiBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGNvbnN0IElTX0lFID0gJ0FjdGl2ZVhPYmplY3QnIGluIGdsb2JhbDtcbiJdfQ==

@@ -58,3 +58,2 @@ "use strict";

entry.state += 1;
entry.value = undefined;
} else if (entry.checksum !== undefined && entry.checksum === calculateChecksum(entry)) {

@@ -100,3 +99,3 @@ return entry.value;

function invalidate(target, key) {
function invalidate(target, key, clearValue) {
if (context) {

@@ -108,4 +107,8 @@ context = null;

var entry = getEntry(target, key);
entry.invalid = entry.state;
if (clearValue) {
entry.value = undefined;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWNoZS5qcyJdLCJuYW1lcyI6WyJnZXRFbnRyeSIsImdldCIsInNldCIsImludmFsaWRhdGUiLCJlbnRyaWVzIiwiV2Vha01hcCIsInRhcmdldCIsImtleSIsInRhcmdldE1hcCIsIk1hcCIsImVudHJ5Iiwic3RhdGUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImludmFsaWQiLCJkZXBzIiwiY2hlY2tzdW0iLCJjYWxjdWxhdGVDaGVja3N1bSIsInJlZHVjZSIsImFjYyIsImNvbnRleHQiLCJnZXR0ZXIiLCJFcnJvciIsInB1c2giLCJwYXJlbnRDb250ZXh0IiwiZSIsInNldHRlciIsImNhbGxiYWNrIiwibmV3VmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O1FBQ2dCQSxRLEdBQUFBLFE7UUErQkFDLEcsR0FBQUEsRztRQXNDQUMsRyxHQUFBQSxHO1FBaUJBQyxVLEdBQUFBLFU7QUF2RmhCLElBQU1DLFVBQVUsSUFBSUMsT0FBSixFQUFoQjtBQUNPLFNBQVNMLFFBQVQsQ0FBa0JNLE1BQWxCLEVBQTBCQyxHQUExQixFQUErQjtBQUNwQyxNQUFJQyxZQUFZSixRQUFRSCxHQUFSLENBQVlLLE1BQVosQ0FBaEI7QUFDQSxNQUFJLENBQUNFLFNBQUwsRUFBZ0I7QUFDZEEsZ0JBQVksSUFBSUMsR0FBSixFQUFaO0FBQ0FMLFlBQVFGLEdBQVIsQ0FBWUksTUFBWixFQUFvQkUsU0FBcEI7QUFDRDs7QUFFRCxNQUFJRSxRQUFRRixVQUFVUCxHQUFWLENBQWNNLEdBQWQsQ0FBWjs7QUFFQSxNQUFJLENBQUNHLEtBQUwsRUFBWTtBQUNWQSxZQUFRO0FBQ05DLGFBQU8sQ0FERDtBQUVOQyxhQUFPQyxTQUZEO0FBR05DLGVBQVNELFNBSEg7QUFJTkUsWUFBTUYsU0FKQTtBQUtORyxnQkFBVUg7QUFMSixLQUFSO0FBT0FMLGNBQVVOLEdBQVYsQ0FBY0ssR0FBZCxFQUFtQkcsS0FBbkI7QUFDRDs7QUFFRCxTQUFPQSxLQUFQO0FBQ0Q7O0FBRUQsU0FBU08saUJBQVQsT0FBNEM7QUFBQSxNQUFmTixLQUFlLFFBQWZBLEtBQWU7QUFBQSxNQUFSSSxJQUFRLFFBQVJBLElBQVE7O0FBQzFDLFNBQU9BLEtBQUtHLE1BQUwsQ0FDTCxVQUFDQyxHQUFELEVBQU1ULEtBQU47QUFBQSxXQUFnQlMsTUFBTUYsa0JBQWtCUCxLQUFsQixDQUF0QjtBQUFBLEdBREssRUFFTEMsS0FGSyxDQUFQO0FBSUQ7O0FBRUQsSUFBSVMsVUFBVSxJQUFkO0FBQ08sU0FBU25CLEdBQVQsQ0FBYUssTUFBYixFQUFxQkMsR0FBckIsRUFBMEJjLE1BQTFCLEVBQWtDO0FBQ3ZDLE1BQU1YLFFBQVFWLFNBQVNNLE1BQVQsRUFBaUJDLEdBQWpCLENBQWQ7O0FBRUEsTUFBSWEsWUFBWVYsS0FBaEIsRUFBdUI7QUFDckJVLGNBQVUsSUFBVjtBQUNBLFVBQU1FLCtCQUE2QmYsR0FBN0IsY0FBeUNELE1BQXpDLGNBQXdEQyxHQUF4RCxnQkFBTjtBQUNEOztBQUVELE1BQUlhLE9BQUosRUFBYTtBQUNYQSxZQUFRTCxJQUFSLENBQWFRLElBQWIsQ0FBa0JiLEtBQWxCO0FBQ0Q7O0FBRUQsTUFBSUEsTUFBTUksT0FBTixLQUFrQkosTUFBTUMsS0FBNUIsRUFBbUM7QUFDakNELFVBQU1DLEtBQU4sSUFBZSxDQUFmO0FBQ0FELFVBQU1FLEtBQU4sR0FBY0MsU0FBZDtBQUNELEdBSEQsTUFHTyxJQUFJSCxNQUFNTSxRQUFOLEtBQW1CSCxTQUFuQixJQUFnQ0gsTUFBTU0sUUFBTixLQUFtQkMsa0JBQWtCUCxLQUFsQixDQUF2RCxFQUFpRjtBQUN0RixXQUFPQSxNQUFNRSxLQUFiO0FBQ0Q7O0FBRUQsTUFBTVksZ0JBQWdCSixPQUF0QjtBQUNBQSxZQUFVVixLQUFWOztBQUVBQSxRQUFNSyxJQUFOLEdBQWEsRUFBYjs7QUFFQSxNQUFJO0FBQ0ZMLFVBQU1FLEtBQU4sR0FBY1MsT0FBT2YsTUFBUCxFQUFlSSxNQUFNRSxLQUFyQixDQUFkO0FBQ0QsR0FGRCxDQUVFLE9BQU9hLENBQVAsRUFBVTtBQUNWTCxjQUFVLElBQVY7QUFDQSxVQUFNSyxDQUFOO0FBQ0Q7O0FBRURMLFlBQVVJLGFBQVY7O0FBRUFkLFFBQU1NLFFBQU4sR0FBaUJDLGtCQUFrQlAsS0FBbEIsQ0FBakI7O0FBRUEsU0FBT0EsTUFBTUUsS0FBYjtBQUNEOztBQUVNLFNBQVNWLEdBQVQsQ0FBYUksTUFBYixFQUFxQkMsR0FBckIsRUFBMEJtQixNQUExQixFQUFrQ2QsS0FBbEMsRUFBeUNlLFFBQXpDLEVBQW1EO0FBQ3hELE1BQUlQLE9BQUosRUFBYTtBQUNYQSxjQUFVLElBQVY7QUFDQSxVQUFNRSwrQkFBNkJmLEdBQTdCLGNBQXlDRCxNQUF6QyxtQkFBTjtBQUNEOztBQUVELE1BQU1JLFFBQVFWLFNBQVNNLE1BQVQsRUFBaUJDLEdBQWpCLENBQWQ7QUFDQSxNQUFNcUIsV0FBV0YsT0FBT3BCLE1BQVAsRUFBZU0sS0FBZixFQUFzQkYsTUFBTUUsS0FBNUIsQ0FBakI7O0FBRUEsTUFBSWdCLGFBQWFsQixNQUFNRSxLQUF2QixFQUE4QjtBQUM1QkYsVUFBTUMsS0FBTixJQUFlLENBQWY7QUFDQUQsVUFBTUUsS0FBTixHQUFjZ0IsUUFBZDs7QUFFQUQ7QUFDRDtBQUNGOztBQUVNLFNBQVN4QixVQUFULENBQW9CRyxNQUFwQixFQUE0QkMsR0FBNUIsRUFBaUM7QUFDdEMsTUFBSWEsT0FBSixFQUFhO0FBQ1hBLGNBQVUsSUFBVjtBQUNBLFVBQU1FLHNDQUFvQ2YsR0FBcEMsY0FBZ0RELE1BQWhELDZCQUFOO0FBQ0Q7O0FBRUQsTUFBTUksUUFBUVYsU0FBU00sTUFBVCxFQUFpQkMsR0FBakIsQ0FBZDtBQUNBRyxRQUFNSSxPQUFOLEdBQWdCSixNQUFNQyxLQUF0QjtBQUNEIiwiZmlsZSI6ImNhY2hlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW50cmllcyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnkodGFyZ2V0LCBrZXkpIHtcbiAgbGV0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWFwKSB7XG4gICAgdGFyZ2V0TWFwID0gbmV3IE1hcCgpO1xuICAgIGVudHJpZXMuc2V0KHRhcmdldCwgdGFyZ2V0TWFwKTtcbiAgfVxuXG4gIGxldCBlbnRyeSA9IHRhcmdldE1hcC5nZXQoa2V5KTtcblxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW50cnkgPSB7XG4gICAgICBzdGF0ZTogMCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBpbnZhbGlkOiB1bmRlZmluZWQsXG4gICAgICBkZXBzOiB1bmRlZmluZWQsXG4gICAgICBjaGVja3N1bTogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGFyZ2V0TWFwLnNldChrZXksIGVudHJ5KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tzdW0oeyBzdGF0ZSwgZGVwcyB9KSB7XG4gIHJldHVybiBkZXBzLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gYWNjICsgY2FsY3VsYXRlQ2hlY2tzdW0oZW50cnkpLFxuICAgIHN0YXRlLFxuICApO1xufVxuXG5sZXQgY29udGV4dCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCBnZXR0ZXIpIHtcbiAgY29uc3QgZW50cnkgPSBnZXRFbnRyeSh0YXJnZXQsIGtleSk7XG5cbiAgaWYgKGNvbnRleHQgPT09IGVudHJ5KSB7XG4gICAgY29udGV4dCA9IG51bGw7XG4gICAgdGhyb3cgRXJyb3IoYFtjYWNoZV0gVHJ5IHRvIGdldCAnJHtrZXl9JyBvZiAnJHt0YXJnZXR9JyBpbiAnJHtrZXl9JyBnZXQgY2FsbGApO1xuICB9XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmRlcHMucHVzaChlbnRyeSk7XG4gIH1cblxuICBpZiAoZW50cnkuaW52YWxpZCA9PT0gZW50cnkuc3RhdGUpIHtcbiAgICBlbnRyeS5zdGF0ZSArPSAxO1xuICAgIGVudHJ5LnZhbHVlID0gdW5kZWZpbmVkO1xuICB9IGVsc2UgaWYgKGVudHJ5LmNoZWNrc3VtICE9PSB1bmRlZmluZWQgJiYgZW50cnkuY2hlY2tzdW0gPT09IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KSkge1xuICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSBjb250ZXh0O1xuICBjb250ZXh0ID0gZW50cnk7XG5cbiAgZW50cnkuZGVwcyA9IFtdO1xuXG4gIHRyeSB7XG4gICAgZW50cnkudmFsdWUgPSBnZXR0ZXIodGFyZ2V0LCBlbnRyeS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgY29udGV4dCA9IHBhcmVudENvbnRleHQ7XG5cbiAgZW50cnkuY2hlY2tzdW0gPSBjYWxjdWxhdGVDaGVja3N1bShlbnRyeSk7XG5cbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCBzZXR0ZXIsIHZhbHVlLCBjYWxsYmFjaykge1xuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBudWxsO1xuICAgIHRocm93IEVycm9yKGBbY2FjaGVdIFRyeSB0byBzZXQgJyR7a2V5fScgb2YgJyR7dGFyZ2V0fScgaW4gZ2V0IGNhbGxgKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBjb25zdCBuZXdWYWx1ZSA9IHNldHRlcih0YXJnZXQsIHZhbHVlLCBlbnRyeS52YWx1ZSk7XG5cbiAgaWYgKG5ld1ZhbHVlICE9PSBlbnRyeS52YWx1ZSkge1xuICAgIGVudHJ5LnN0YXRlICs9IDE7XG4gICAgZW50cnkudmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGUodGFyZ2V0LCBrZXkpIHtcbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBFcnJvcihgW2NhY2hlXSBUcnkgdG8gaW52YWxpZGF0ZSAnJHtrZXl9JyBpbiAnJHt0YXJnZXR9JyBkdXJpbmcgZ2V0IGludm9jYXRpb25gKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBlbnRyeS5pbnZhbGlkID0gZW50cnkuc3RhdGU7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jYWNoZS5qcyJdLCJuYW1lcyI6WyJnZXRFbnRyeSIsImdldCIsInNldCIsImludmFsaWRhdGUiLCJlbnRyaWVzIiwiV2Vha01hcCIsInRhcmdldCIsImtleSIsInRhcmdldE1hcCIsIk1hcCIsImVudHJ5Iiwic3RhdGUiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImludmFsaWQiLCJkZXBzIiwiY2hlY2tzdW0iLCJjYWxjdWxhdGVDaGVja3N1bSIsInJlZHVjZSIsImFjYyIsImNvbnRleHQiLCJnZXR0ZXIiLCJFcnJvciIsInB1c2giLCJwYXJlbnRDb250ZXh0IiwiZSIsInNldHRlciIsImNhbGxiYWNrIiwibmV3VmFsdWUiLCJjbGVhclZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUNnQkEsUSxHQUFBQSxRO1FBK0JBQyxHLEdBQUFBLEc7UUFxQ0FDLEcsR0FBQUEsRztRQWlCQUMsVSxHQUFBQSxVO0FBdEZoQixJQUFNQyxVQUFVLElBQUlDLE9BQUosRUFBaEI7QUFDTyxTQUFTTCxRQUFULENBQWtCTSxNQUFsQixFQUEwQkMsR0FBMUIsRUFBK0I7QUFDcEMsTUFBSUMsWUFBWUosUUFBUUgsR0FBUixDQUFZSyxNQUFaLENBQWhCO0FBQ0EsTUFBSSxDQUFDRSxTQUFMLEVBQWdCO0FBQ2RBLGdCQUFZLElBQUlDLEdBQUosRUFBWjtBQUNBTCxZQUFRRixHQUFSLENBQVlJLE1BQVosRUFBb0JFLFNBQXBCO0FBQ0Q7O0FBRUQsTUFBSUUsUUFBUUYsVUFBVVAsR0FBVixDQUFjTSxHQUFkLENBQVo7O0FBRUEsTUFBSSxDQUFDRyxLQUFMLEVBQVk7QUFDVkEsWUFBUTtBQUNOQyxhQUFPLENBREQ7QUFFTkMsYUFBT0MsU0FGRDtBQUdOQyxlQUFTRCxTQUhIO0FBSU5FLFlBQU1GLFNBSkE7QUFLTkcsZ0JBQVVIO0FBTEosS0FBUjtBQU9BTCxjQUFVTixHQUFWLENBQWNLLEdBQWQsRUFBbUJHLEtBQW5CO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNEOztBQUVELFNBQVNPLGlCQUFULE9BQTRDO0FBQUEsTUFBZk4sS0FBZSxRQUFmQSxLQUFlO0FBQUEsTUFBUkksSUFBUSxRQUFSQSxJQUFROztBQUMxQyxTQUFPQSxLQUFLRyxNQUFMLENBQ0wsVUFBQ0MsR0FBRCxFQUFNVCxLQUFOO0FBQUEsV0FBZ0JTLE1BQU1GLGtCQUFrQlAsS0FBbEIsQ0FBdEI7QUFBQSxHQURLLEVBRUxDLEtBRkssQ0FBUDtBQUlEOztBQUVELElBQUlTLFVBQVUsSUFBZDtBQUNPLFNBQVNuQixHQUFULENBQWFLLE1BQWIsRUFBcUJDLEdBQXJCLEVBQTBCYyxNQUExQixFQUFrQztBQUN2QyxNQUFNWCxRQUFRVixTQUFTTSxNQUFULEVBQWlCQyxHQUFqQixDQUFkOztBQUVBLE1BQUlhLFlBQVlWLEtBQWhCLEVBQXVCO0FBQ3JCVSxjQUFVLElBQVY7QUFDQSxVQUFNRSwrQkFBNkJmLEdBQTdCLGNBQXlDRCxNQUF6QyxjQUF3REMsR0FBeEQsZ0JBQU47QUFDRDs7QUFFRCxNQUFJYSxPQUFKLEVBQWE7QUFDWEEsWUFBUUwsSUFBUixDQUFhUSxJQUFiLENBQWtCYixLQUFsQjtBQUNEOztBQUVELE1BQUlBLE1BQU1JLE9BQU4sS0FBa0JKLE1BQU1DLEtBQTVCLEVBQW1DO0FBQ2pDRCxVQUFNQyxLQUFOLElBQWUsQ0FBZjtBQUNELEdBRkQsTUFFTyxJQUFJRCxNQUFNTSxRQUFOLEtBQW1CSCxTQUFuQixJQUFnQ0gsTUFBTU0sUUFBTixLQUFtQkMsa0JBQWtCUCxLQUFsQixDQUF2RCxFQUFpRjtBQUN0RixXQUFPQSxNQUFNRSxLQUFiO0FBQ0Q7O0FBRUQsTUFBTVksZ0JBQWdCSixPQUF0QjtBQUNBQSxZQUFVVixLQUFWOztBQUVBQSxRQUFNSyxJQUFOLEdBQWEsRUFBYjs7QUFFQSxNQUFJO0FBQ0ZMLFVBQU1FLEtBQU4sR0FBY1MsT0FBT2YsTUFBUCxFQUFlSSxNQUFNRSxLQUFyQixDQUFkO0FBQ0QsR0FGRCxDQUVFLE9BQU9hLENBQVAsRUFBVTtBQUNWTCxjQUFVLElBQVY7QUFDQSxVQUFNSyxDQUFOO0FBQ0Q7O0FBRURMLFlBQVVJLGFBQVY7O0FBRUFkLFFBQU1NLFFBQU4sR0FBaUJDLGtCQUFrQlAsS0FBbEIsQ0FBakI7O0FBRUEsU0FBT0EsTUFBTUUsS0FBYjtBQUNEOztBQUVNLFNBQVNWLEdBQVQsQ0FBYUksTUFBYixFQUFxQkMsR0FBckIsRUFBMEJtQixNQUExQixFQUFrQ2QsS0FBbEMsRUFBeUNlLFFBQXpDLEVBQW1EO0FBQ3hELE1BQUlQLE9BQUosRUFBYTtBQUNYQSxjQUFVLElBQVY7QUFDQSxVQUFNRSwrQkFBNkJmLEdBQTdCLGNBQXlDRCxNQUF6QyxtQkFBTjtBQUNEOztBQUVELE1BQU1JLFFBQVFWLFNBQVNNLE1BQVQsRUFBaUJDLEdBQWpCLENBQWQ7QUFDQSxNQUFNcUIsV0FBV0YsT0FBT3BCLE1BQVAsRUFBZU0sS0FBZixFQUFzQkYsTUFBTUUsS0FBNUIsQ0FBakI7O0FBRUEsTUFBSWdCLGFBQWFsQixNQUFNRSxLQUF2QixFQUE4QjtBQUM1QkYsVUFBTUMsS0FBTixJQUFlLENBQWY7QUFDQUQsVUFBTUUsS0FBTixHQUFjZ0IsUUFBZDs7QUFFQUQ7QUFDRDtBQUNGOztBQUVNLFNBQVN4QixVQUFULENBQW9CRyxNQUFwQixFQUE0QkMsR0FBNUIsRUFBaUNzQixVQUFqQyxFQUE2QztBQUNsRCxNQUFJVCxPQUFKLEVBQWE7QUFDWEEsY0FBVSxJQUFWO0FBQ0EsVUFBTUUsc0NBQW9DZixHQUFwQyxjQUFnREQsTUFBaEQsNkJBQU47QUFDRDs7QUFFRCxNQUFNSSxRQUFRVixTQUFTTSxNQUFULEVBQWlCQyxHQUFqQixDQUFkOztBQUVBRyxRQUFNSSxPQUFOLEdBQWdCSixNQUFNQyxLQUF0QjtBQUNBLE1BQUlrQixVQUFKLEVBQWdCO0FBQ2RuQixVQUFNRSxLQUFOLEdBQWNDLFNBQWQ7QUFDRDtBQUNGIiwiZmlsZSI6ImNhY2hlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW50cmllcyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50cnkodGFyZ2V0LCBrZXkpIHtcbiAgbGV0IHRhcmdldE1hcCA9IGVudHJpZXMuZ2V0KHRhcmdldCk7XG4gIGlmICghdGFyZ2V0TWFwKSB7XG4gICAgdGFyZ2V0TWFwID0gbmV3IE1hcCgpO1xuICAgIGVudHJpZXMuc2V0KHRhcmdldCwgdGFyZ2V0TWFwKTtcbiAgfVxuXG4gIGxldCBlbnRyeSA9IHRhcmdldE1hcC5nZXQoa2V5KTtcblxuICBpZiAoIWVudHJ5KSB7XG4gICAgZW50cnkgPSB7XG4gICAgICBzdGF0ZTogMCxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gICAgICBpbnZhbGlkOiB1bmRlZmluZWQsXG4gICAgICBkZXBzOiB1bmRlZmluZWQsXG4gICAgICBjaGVja3N1bTogdW5kZWZpbmVkLFxuICAgIH07XG4gICAgdGFyZ2V0TWFwLnNldChrZXksIGVudHJ5KTtcbiAgfVxuXG4gIHJldHVybiBlbnRyeTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlQ2hlY2tzdW0oeyBzdGF0ZSwgZGVwcyB9KSB7XG4gIHJldHVybiBkZXBzLnJlZHVjZShcbiAgICAoYWNjLCBlbnRyeSkgPT4gYWNjICsgY2FsY3VsYXRlQ2hlY2tzdW0oZW50cnkpLFxuICAgIHN0YXRlLFxuICApO1xufVxuXG5sZXQgY29udGV4dCA9IG51bGw7XG5leHBvcnQgZnVuY3Rpb24gZ2V0KHRhcmdldCwga2V5LCBnZXR0ZXIpIHtcbiAgY29uc3QgZW50cnkgPSBnZXRFbnRyeSh0YXJnZXQsIGtleSk7XG5cbiAgaWYgKGNvbnRleHQgPT09IGVudHJ5KSB7XG4gICAgY29udGV4dCA9IG51bGw7XG4gICAgdGhyb3cgRXJyb3IoYFtjYWNoZV0gVHJ5IHRvIGdldCAnJHtrZXl9JyBvZiAnJHt0YXJnZXR9JyBpbiAnJHtrZXl9JyBnZXQgY2FsbGApO1xuICB9XG5cbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmRlcHMucHVzaChlbnRyeSk7XG4gIH1cblxuICBpZiAoZW50cnkuaW52YWxpZCA9PT0gZW50cnkuc3RhdGUpIHtcbiAgICBlbnRyeS5zdGF0ZSArPSAxO1xuICB9IGVsc2UgaWYgKGVudHJ5LmNoZWNrc3VtICE9PSB1bmRlZmluZWQgJiYgZW50cnkuY2hlY2tzdW0gPT09IGNhbGN1bGF0ZUNoZWNrc3VtKGVudHJ5KSkge1xuICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgfVxuXG4gIGNvbnN0IHBhcmVudENvbnRleHQgPSBjb250ZXh0O1xuICBjb250ZXh0ID0gZW50cnk7XG5cbiAgZW50cnkuZGVwcyA9IFtdO1xuXG4gIHRyeSB7XG4gICAgZW50cnkudmFsdWUgPSBnZXR0ZXIodGFyZ2V0LCBlbnRyeS52YWx1ZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBlO1xuICB9XG5cbiAgY29udGV4dCA9IHBhcmVudENvbnRleHQ7XG5cbiAgZW50cnkuY2hlY2tzdW0gPSBjYWxjdWxhdGVDaGVja3N1bShlbnRyeSk7XG5cbiAgcmV0dXJuIGVudHJ5LnZhbHVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0KHRhcmdldCwga2V5LCBzZXR0ZXIsIHZhbHVlLCBjYWxsYmFjaykge1xuICBpZiAoY29udGV4dCkge1xuICAgIGNvbnRleHQgPSBudWxsO1xuICAgIHRocm93IEVycm9yKGBbY2FjaGVdIFRyeSB0byBzZXQgJyR7a2V5fScgb2YgJyR7dGFyZ2V0fScgaW4gZ2V0IGNhbGxgKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuICBjb25zdCBuZXdWYWx1ZSA9IHNldHRlcih0YXJnZXQsIHZhbHVlLCBlbnRyeS52YWx1ZSk7XG5cbiAgaWYgKG5ld1ZhbHVlICE9PSBlbnRyeS52YWx1ZSkge1xuICAgIGVudHJ5LnN0YXRlICs9IDE7XG4gICAgZW50cnkudmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGUodGFyZ2V0LCBrZXksIGNsZWFyVmFsdWUpIHtcbiAgaWYgKGNvbnRleHQpIHtcbiAgICBjb250ZXh0ID0gbnVsbDtcbiAgICB0aHJvdyBFcnJvcihgW2NhY2hlXSBUcnkgdG8gaW52YWxpZGF0ZSAnJHtrZXl9JyBpbiAnJHt0YXJnZXR9JyBkdXJpbmcgZ2V0IGludm9jYXRpb25gKTtcbiAgfVxuXG4gIGNvbnN0IGVudHJ5ID0gZ2V0RW50cnkodGFyZ2V0LCBrZXkpO1xuXG4gIGVudHJ5LmludmFsaWQgPSBlbnRyeS5zdGF0ZTtcbiAgaWYgKGNsZWFyVmFsdWUpIHtcbiAgICBlbnRyeS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19

@@ -114,3 +114,3 @@ 'use strict';

Object.keys(node.constructor.hybrids).forEach(function (key) {
cache.invalidate(node, key);
cache.invalidate(node, key, true);
});

@@ -203,2 +203,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbmUuanMiXSwibmFtZXMiOlsiSFRNTEJyaWRnZSIsImRlZmluZSIsImNhY2hlIiwiZGlzcGF0Y2hJbnZhbGlkYXRlIiwiaG9zdCIsImJ1YmJsZXMiLCJjb21wb3NlZCIsImRlZmF1bHRHZXQiLCJ2YWx1ZSIsImNvbXBpbGUiLCJIeWJyaWQiLCJoeWJyaWRzIiwiY29ubmVjdHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsInR5cGUiLCJnZXQiLCJzZXQiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbm5lY3QiLCJwdXNoIiwiY2xlYXJDYWNoZSIsImludmFsaWRhdGUiLCJ1cGRhdGUiLCJ3YWxrSW5TaGFkb3ciLCJub2RlIiwiZm4iLCJBcnJheSIsImZyb20iLCJjaGlsZHJlbiIsImVsIiwic2hhZG93Um9vdCIsImRvY3VtZW50IiwiYm9keSIsImNvbnN0cnVjdG9yIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJjb25uZWN0ZWRDYWxsYmFjayIsImFyZ3MiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiSFRNTEVsZW1lbnQiLCJzZXRQcm90b3R5cGVPZiIsIldlYWtNYXAiLCJ0YWdOYW1lIiwiQ3VzdG9tRWxlbWVudCIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiRXJyb3IiLCJsaXN0IiwicmVkdWNlIiwiYWNjIiwicmVzdWx0IiwiYWRkIiwiU2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O1FBa0ZnQkEsVSxHQUFBQSxVO2tCQU9RQyxNOztBQXhGeEI7Ozs7QUFDQTs7OztBQUVBOztJQUFZQyxLOztBQUNaOzs7Ozs7Ozs7Ozs7QUFFQSxTQUFTQyxrQkFBVCxDQUE0QkMsSUFBNUIsRUFBa0M7QUFDaEMsdUJBQVNBLElBQVQsRUFBZSxhQUFmLEVBQThCLEVBQUVDLFNBQVMs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Qjs7QUFFQSxTQUFPQSxNQUFQO0FBQ0QiLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgcHJvcGVydHkgZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgcmVuZGVyIGZyb20gJy4vcmVuZGVyJztcblxuaW1wb3J0ICogYXMgY2FjaGUgZnJvbSAnLi9jYWNoZSc7XG5pbXBvcnQgeyBkaXNwYXRjaCB9IGZyb20gJy4vdXRpbHMnO1xuXG5mdW5jdGlvbiBkaXNwYXRjaEludmFsaWRhdGUoaG9zdCkge1xuICBkaXNwYXRjaChob3N0LCAnQGludmFsaWRhdGUnLCB7IGJ1YmJsZXM6IHRydWUsIGNvbXBvc2VkOiB0cnVlIH0pO1xufVxuXG5jb25zdCBkZWZhdWx0R2V0ID0gKGhvc3QsIHZhbHVlKSA9PiB2YWx1ZTtcblxuZnVuY3Rpb24gY29tcGlsZShIeWJyaWQsIGh5YnJpZHMpIHtcbiAgSHlicmlkLmh5YnJpZHMgPSBoeWJyaWRzO1xuICBIeWJyaWQuY29ubmVjdHMgPSBbXTtcblxuICBPYmplY3Qua2V5cyhoeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBsZXQgY29uZmlnID0gaHlicmlkc1trZXldO1xuICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgY29uZmlnO1xuXG4gICAgaWYgKGtleSA9PT0gJ3JlbmRlcicpIHtcbiAgICAgIGNvbmZpZyA9IHJlbmRlcihjb25maWcpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY29uZmlnID0geyBnZXQ6IGNvbmZpZyB9O1xuICAgIH0gZWxzZSBpZiAoY29uZmlnID09PSBudWxsIHx8IHR5cGUgIT09ICdvYmplY3QnIHx8ICh0eXBlID09PSAnb2JqZWN0JyAmJiAhY29uZmlnLmdldCAmJiAhY29uZmlnLnNldCkpIHtcbiAgICAgIGNvbmZpZyA9IHByb3BlcnR5KGNvbmZpZyk7XG4gICAgfVxuXG4gICAgY29uZmlnLmdldCA9IGNvbmZpZy5nZXQgfHwgZGVmYXVsdEdldDtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShIeWJyaWQucHJvdG90eXBlLCBrZXksIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KHRoaXMsIGtleSwgY29uZmlnLmdldCk7XG4gICAgICB9LFxuICAgICAgc2V0OiBjb25maWcuc2V0ICYmIGZ1bmN0aW9uIHNldChuZXdWYWx1ZSkge1xuICAgICAgICBjYWNoZS5zZXQodGhpcywga2V5LCBjb25maWcuc2V0LCBuZXdWYWx1ZSwgKCkgPT4gZGlzcGF0Y2hJbnZhbGlkYXRlKHRoaXMpKTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy5jb25uZWN0KSB7XG4gICAgICBIeWJyaWQuY29ubmVjdHMucHVzaChob3N0ID0+IGNvbmZpZy5jb25uZWN0KGhvc3QsIGtleSwgKGNsZWFyQ2FjaGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGlmIChjbGVhckNhY2hlKSBjYWNoZS5pbnZhbGlkYXRlKGhvc3QsIGtleSk7XG4gICAgICAgIGRpc3BhdGNoSW52YWxpZGF0ZShob3N0KTtcbiAgICAgIH0pKTtcbiAgICB9XG4gIH0pO1xufVxuXG5sZXQgdXBkYXRlO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgY29uc3Qgd2Fsa0luU2hhZG93ID0gKG5vZGUsIGZuKSA9PiB7XG4gICAgZm4obm9kZSk7XG5cbiAgICBBcnJheS5mcm9tKG5vZGUuY2hpbGRyZW4pXG4gICAgICAuZm9yRWFjaChlbCA9PiB3YWxrSW5TaGFkb3coZWwsIGZuKSk7XG5cbiAgICBpZiAobm9kZS5zaGFkb3dSb290KSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuc2hhZG93Um9vdC5jaGlsZHJlbilcbiAgICAgICAgLmZvckVhY2goZWwgPT4gd2Fsa0luU2hhZG93KGVsLCBmbikpO1xuICAgIH1cbiAgfTtcblxuICB1cGRhdGUgPSAoSHlicmlkKSA9PiB7XG4gICAgd2Fsa0luU2hhZG93KGRvY3VtZW50LmJvZHksIChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5jb25zdHJ1Y3RvciA9PT0gSHlicmlkKSB7XG4gICAgICAgIG5vZGUuZGlzY29ubmVjdGVkQ2FsbGJhY2soKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhub2RlLmNvbnN0cnVjdG9yLmh5YnJpZHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGNhY2hlLmludmFsaWRhdGUobm9kZSwga2V5KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbm9kZS5jb25uZWN0ZWRDYWxsYmFjaygpO1xuICAgICAgICBkaXNwYXRjaEludmFsaWRhdGUobm9kZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59XG5cbi8vIEJVRzogQmFiZWwgdjYgdHJhbnNwaWxlZCBjbGFzcyBicmVha3MgbmF0aXZlIGN1c3RvbSBlbGVtZW50c1xuZXhwb3J0IGZ1bmN0aW9uIEhUTUxCcmlkZ2UoLi4uYXJncykge1xuICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QoSFRNTEVsZW1lbnQsIGFyZ3MsIHRoaXMuY29uc3RydWN0b3IpO1xufVxuT2JqZWN0LnNldFByb3RvdHlwZU9mKEhUTUxCcmlkZ2UucHJvdG90eXBlLCBIVE1MRWxlbWVudC5wcm90b3R5cGUpO1xuXG5jb25zdCBjb25uZWN0cyA9IG5ldyBXZWFrTWFwKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZmluZSh0YWdOYW1lLCBoeWJyaWRzKSB7XG4gIGNvbnN0IEN1c3RvbUVsZW1lbnQgPSB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZ2V0KHRhZ05hbWUpO1xuXG4gIGlmIChDdXN0b21FbGVtZW50KSB7XG4gICAgaWYgKEN1c3RvbUVsZW1lbnQuaHlicmlkcyA9PT0gaHlicmlkcykge1xuICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIEN1c3RvbUVsZW1lbnQuaHlicmlkcykge1xuICAgICAgT2JqZWN0LmtleXMoQ3VzdG9tRWxlbWVudC5oeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgZGVsZXRlIEN1c3RvbUVsZW1lbnQucHJvdG90eXBlW2tleV07XG4gICAgICB9KTtcblxuICAgICAgY29tcGlsZShDdXN0b21FbGVtZW50LCBoeWJyaWRzKTtcbiAgICAgIHVwZGF0ZShDdXN0b21FbGVtZW50KTtcblxuICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdGhyb3cgRXJyb3IoYFtkZWZpbmVdIEVsZW1lbnQgJyR7dGFnTmFtZX0nIGFscmVhZHkgZGVmaW5lZGApO1xuICB9XG5cbiAgY2xhc3MgSHlicmlkIGV4dGVuZHMgSFRNTEJyaWRnZSB7XG4gICAgc3RhdGljIGdldCBuYW1lKCkgeyByZXR1cm4gdGFnTmFtZTsgfVxuXG4gICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICBjb25zdCBsaXN0ID0gdGhpcy5jb25zdHJ1Y3Rvci5jb25uZWN0cy5yZWR1Y2UoKGFjYywgZm4pID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm4odGhpcyk7XG4gICAgICAgIGlmIChyZXN1bHQpIGFjYy5hZGQocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIG5ldyBTZXQoKSk7XG5cbiAgICAgIGNvbm5lY3RzLnNldCh0aGlzLCBsaXN0KTtcbiAgICAgIGRpc3BhdGNoSW52YWxpZGF0ZSh0aGlzKTtcbiAgICB9XG5cbiAgICBkaXNjb25uZWN0ZWRDYWxsYmFjaygpIHtcbiAgICAgIGNvbnN0IGxpc3QgPSBjb25uZWN0cy5nZXQodGhpcyk7XG4gICAgICBsaXN0LmZvckVhY2goZm4gPT4gZm4oKSk7XG4gICAgfVxuICB9XG5cbiAgY29tcGlsZShIeWJyaWQsIGh5YnJpZHMpO1xuICBjdXN0b21FbGVtZW50cy5kZWZpbmUodGFnTmFtZSwgSHlicmlkKTtcblxuICByZXR1cm4gSHlicmlkO1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZpbmUuanMiXSwibmFtZXMiOlsiSFRNTEJyaWRnZSIsImRlZmluZSIsImNhY2hlIiwiZGlzcGF0Y2hJbnZhbGlkYXRlIiwiaG9zdCIsImJ1YmJsZXMiLCJjb21wb3NlZCIsImRlZmF1bHRHZXQiLCJ2YWx1ZSIsImNvbXBpbGUiLCJIeWJyaWQiLCJoeWJyaWRzIiwiY29ubmVjdHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsImNvbmZpZyIsInR5cGUiLCJnZXQiLCJzZXQiLCJkZWZpbmVQcm9wZXJ0eSIsInByb3RvdHlwZSIsIm5ld1ZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImNvbm5lY3QiLCJwdXNoIiwiY2xlYXJDYWNoZSIsImludmFsaWRhdGUiLCJ1cGRhdGUiLCJ3YWxrSW5TaGFkb3ciLCJub2RlIiwiZm4iLCJBcnJheSIsImZyb20iLCJjaGlsZHJlbiIsImVsIiwic2hhZG93Um9vdCIsImRvY3VtZW50IiwiYm9keSIsImNvbnN0cnVjdG9yIiwiZGlzY29ubmVjdGVkQ2FsbGJhY2siLCJjb25uZWN0ZWRDYWxsYmFjayIsImFyZ3MiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiSFRNTEVsZW1lbnQiLCJzZXRQcm90b3R5cGVPZiIsIldlYWtNYXAiLCJ0YWdOYW1lIiwiQ3VzdG9tRWxlbWVudCIsIndpbmRvdyIsImN1c3RvbUVsZW1lbnRzIiwiRXJyb3IiLCJsaXN0IiwicmVkdWNlIiwiYWNjIiwicmVzdWx0IiwiYWRkIiwiU2V0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O1FBaUZnQkEsVSxHQUFBQSxVO2tCQU9RQyxNOztBQXhGeEI7Ozs7QUFDQTs7OztBQUVBOztJQUFZQyxLOztBQUNaOzs7Ozs7Ozs7Ozs7QUFFQSxTQUFTQyxrQkFBVCxDQUE0QkMsSUFBNUIsRUFBa0M7QUFDaEMsdUJBQVNBLElBQVQsRUFBZSxhQUFmLEVBQThCLEVBQUVDLFNBQVMsSUFBWCxFQUFpQkMsVUFBVSxJQUEzQixFQUE5QjtBQUNEOztBQUVELElBQU1DLGFBQWEsU0FBYkEsVUFBYSxDQUFDSCxJQUFELEVBQU9JLEtBQVA7QUFBQSxTQUFpQkEsS0FBakI7QUFBQSxDQUFuQjs7QUFFQSxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsT0FBekIsRUFBa0M7QUFDaENELFNBQU9DLE9BQVAsR0FBaUJBLE9BQWpCO0FBQ0FELFNBQU9FLFFBQVAsR0FBa0IsRUFBbEI7O0FBRUFDLFNBQU9DLElBQVAsQ0FBWUgsT0FBWixFQUFxQkksT0FBckIsQ0FBNkIsVUFBQ0MsR0FBRCxFQUFTO0FBQ3BDLFFBQUlDLFNBQVNOLFFBQVFLLEdBQVIsQ0FBYjtBQUNBLFFBQU1FLGNBQWNELE1BQWQseUNBQWNBLE1BQWQsQ0FBTjs7QUFFQSxRQUFJRCxRQUFRLFFBQVosRUFBc0I7QUFDcEJDLGVBQVMsc0JBQU9BLE1BQVAsQ0FBVDtBQUNELEtBRkQsTUFFTyxJQUFJQyxTQUFTLFVBQWIsRUFBeUI7QUFDOUJELGVBQVMsRUFBRUUsS0FBS0YsTUFBUCxFQUFUO0FBQ0QsS0FGTSxNQUVBLElBQUlBLFdBQVcsSUFBWCxJQUFtQkMsU0FBUyxRQUE1QixJQUF5Q0EsU0FBUyxRQUFULElBQXFCLENBQUNELE9BQU9FLEdBQTdCLElBQW9DLENBQUNGLE9BQU9HLEdBQXpGLEVBQStGO0FBQ3BHSCxlQUFTLHdCQUFTQSxNQUFULENBQVQ7QUFDRDs7QUFFREEsV0FBT0UsR0FBUCxHQUFhRixPQUFPRSxHQUFQLElBQWNaLFVBQTNCOztBQUVBTSxXQUFPUSxjQUFQLENBQXNCWCxPQUFPWSxTQUE3QixFQUF3Q04sR0FBeEMsRUFBNkM7QUFDM0NHLFdBQUssU0FBU0EsR0FBVCxHQUFlO0FBQ2xCLGVBQU9qQixNQUFNaUIsR0FBTixDQUFVLElBQVYsRUFBZ0JILEdBQWhCLEVBQXFCQyxPQUFPRSxHQUE1QixDQUFQO0FBQ0QsT0FIMEM7QUFJM0NDLFdBQUtILE9BQU9HLEdBQVAsSUFBYyxTQUFTQSxHQUFULENBQWFHLFFBQWIsRUFBdUI7QUFBQTs7QUFDeENyQixjQUFNa0IsR0FBTixDQUFVLElBQVYsRUFBZ0JKLEdBQWhCLEVBQXFCQyxPQUFPRyxHQUE1QixFQUFpQ0csUUFBakMsRUFBMkM7QUFBQSxpQkFBTXBCLG1CQUFtQixLQUFuQixDQUFOO0FBQUEsU0FBM0M7QUFDRCxPQU4wQztBQU8zQ3FCLGtCQUFZLElBUCtCO0FBUTNDQyxvQkFBY0MsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCO0FBUkksS0FBN0M7O0FBV0EsUUFBSVgsT0FBT1ksT0FBWCxFQUFvQjtBQUNsQm5CLGFBQU9FLFFBQVAsQ0FBZ0JrQixJQUFoQixDQUFxQjtBQUFBLGVBQVFiLE9BQU9ZLE9BQVAsQ0FBZXpCLElBQWYsRUFBcUJZLEdBQXJCLEVBQTBCLFlBQXVCO0FBQUEsY0FBdEJlLFVBQXNCLHVFQUFULElBQVM7O0FBQzVFLGNBQUlBLFVBQUosRUFBZ0I3QixNQUFNOEIsVUFBTixDQUFpQjVCLElBQWpCLEVBQXVCWSxHQUF2QjtBQUNoQmIsNkJBQW1CQyxJQUFuQjtBQUNELFNBSDRCLENBQVI7QUFBQSxPQUFyQjtBQUlEO0FBQ0YsR0EvQkQ7QUFnQ0Q7O0FBRUQsSUFBSTZCLGVBQUo7QUFDQSxJQUFJUCxRQUFRQyxHQUFSLENBQVlDLFFBQVosS0FBeUIsWUFBN0IsRUFBMkM7QUFDekMsTUFBTU0sZUFBZSxTQUFmQSxZQUFlLENBQUNDLElBQUQsRUFBT0MsRUFBUCxFQUFjO0FBQ2pDQSxPQUFHRCxJQUFIOztBQUVBRSxVQUFNQyxJQUFOLENBQVdILEtBQUtJLFFBQWhCLEVBQ0d4QixPQURILENBQ1c7QUFBQSxhQUFNbUIsYUFBYU0sRUFBYixFQUFpQkosRUFBakIsQ0FBTjtBQUFBLEtBRFg7O0FBR0EsUUFBSUQsS0FBS00sVUFBVCxFQUFxQjtBQUNuQkosWUFBTUMsSUFBTixDQUFXSCxLQUFLTSxVQUFMLENBQWdCRixRQUEzQixFQUNHeEIsT0FESCxDQUNXO0FBQUEsZUFBTW1CLGFBQWFNLEVBQWIsRUFBaUJKLEVBQWpCLENBQU47QUFBQSxPQURYO0FBRUQ7QUFDRixHQVZEOztBQVlBSCxXQUFTLGdCQUFDdkIsTUFBRCxFQUFZO0FBQ25Cd0IsaUJBQWFRLFNBQVNDLElBQXRCLEVBQTRCLFVBQUNSLElBQUQsRUFBVTtBQUNwQyxVQUFJQSxLQUFLUyxXQUFMLEtBQXFCbEMsTUFBekIsRUFBaUM7QUFDL0J5QixhQUFLVSxvQkFBTDs7QUFFQWhDLGVBQU9DLElBQVAsQ0FBWXFCLEtBQUtTLFdBQUwsQ0FBaUJqQyxPQUE3QixFQUFzQ0ksT0FBdEMsQ0FBOEMsVUFBQ0MsR0FBRCxFQUFTO0FBQ3JEZCxnQkFBTThCLFVBQU4sQ0FBaUJHLElBQWpCLEVBQXVCbkIsR0FBdkIsRUFBNEIsSUFBNUI7QUFDRCxTQUZEOztBQUlBbUIsYUFBS1csaUJBQUw7QUFDQTNDLDJCQUFtQmdDLElBQW5CO0FBQ0Q7QUFDRixLQVhEO0FBWUQsR0FiRDtBQWNEOztBQUVEO0FBQ08sU0FBU25DLFVBQVQsR0FBNkI7QUFBQSxvQ0FBTitDLElBQU07QUFBTkEsUUFBTTtBQUFBOztBQUNsQyxTQUFPQyxRQUFRQyxTQUFSLENBQWtCQyxXQUFsQixFQUErQkgsSUFBL0IsRUFBcUMsS0FBS0gsV0FBMUMsQ0FBUDtBQUNEO0FBQ0QvQixPQUFPc0MsY0FBUCxDQUFzQm5ELFdBQVdzQixTQUFqQyxFQUE0QzRCLFlBQVk1QixTQUF4RDs7QUFFQSxJQUFNVixXQUFXLElBQUl3QyxPQUFKLEVBQWpCOztBQUVlLFNBQVNuRCxNQUFULENBQWdCb0QsT0FBaEIsRUFBeUIxQyxPQUF6QixFQUFrQztBQUMvQyxNQUFNMkMsZ0JBQWdCQyxPQUFPQyxjQUFQLENBQXNCckMsR0FBdEIsQ0FBMEJrQyxPQUExQixDQUF0Qjs7QUFFQSxNQUFJQyxhQUFKLEVBQW1CO0FBQ2pCLFFBQUlBLGNBQWMzQyxPQUFkLEtBQTBCQSxPQUE5QixFQUF1QztBQUNyQyxhQUFPMkMsYUFBUDtBQUNELEtBRkQsTUFFTyxJQUFJNUIsUUFBUUMsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLElBQXlDMEIsY0FBYzNDLE9BQTNELEVBQW9FO0FBQ3pFRSxhQUFPQyxJQUFQLENBQVl3QyxjQUFjM0MsT0FBMUIsRUFBbUNJLE9BQW5DLENBQTJDLFVBQUNDLEdBQUQsRUFBUztBQUNsRCxlQUFPc0MsY0FBY2hDLFNBQWQsQ0FBd0JOLEdBQXhCLENBQVA7QUFDRCxPQUZEOztBQUlBUCxjQUFRNkMsYUFBUixFQUF1QjNDLE9BQXZCO0FBQ0FzQixhQUFPcUIsYUFBUDs7QUFFQSxhQUFPQSxhQUFQO0FBQ0Q7O0FBRUQsVUFBTUcsOEJBQTJCSixPQUEzQix3QkFBTjtBQUNEOztBQWxCOEMsTUFvQnpDM0MsTUFwQnlDO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7QUFBQSwwQ0F1QnpCO0FBQUE7O0FBQ2xCLFlBQU1nRCxPQUFPLEtBQUtkLFdBQUwsQ0FBaUJoQyxRQUFqQixDQUEwQitDLE1BQTFCLENBQWlDLFVBQUNDLEdBQUQsRUFBTXhCLEVBQU4sRUFBYTtBQUN6RCxjQUFNeUIsU0FBU3pCLEdBQUcsTUFBSCxDQUFmO0FBQ0EsY0FBSXlCLE1BQUosRUFBWUQsSUFBSUUsR0FBSixDQUFRRCxNQUFSO0FBQ1osaUJBQU9ELEdBQVA7QUFDRCxTQUpZLEVBSVYsSUFBSUcsR0FBSixFQUpVLENBQWI7O0FBTUFuRCxpQkFBU1EsR0FBVCxDQUFhLElBQWIsRUFBbUJzQyxJQUFuQjtBQUNBdkQsMkJBQW1CLElBQW5CO0FBQ0Q7QUFoQzRDO0FBQUE7QUFBQSw2Q0FrQ3RCO0FBQ3JCLFlBQU11RCxPQUFPOUMsU0FBU08sR0FBVCxDQUFhLElBQWIsQ0FBYjtBQUNBdUMsYUFBSzNDLE9BQUwsQ0FBYTtBQUFBLGlCQUFNcUIsSUFBTjtBQUFBLFNBQWI7QUFDRDtBQXJDNEM7QUFBQTtBQUFBLDBCQXFCM0I7QUFBRSxlQUFPaUIsT0FBUDtBQUFpQjtBQXJCUTs7QUFBQTtBQUFBLElBb0IxQnJELFVBcEIwQjs7QUF3Qy9DUyxVQUFRQyxNQUFSLEVBQWdCQyxPQUFoQjtBQUNBNkMsaUJBQWV2RCxNQUFmLENBQXNCb0QsT0FBdEIsRUFBK0IzQyxNQUEvQjs7QUFFQSxTQUFPQSxNQUFQO0FBQ0QiLCJmaWxlIjoiZGVmaW5lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHByb3BlcnR5IGZyb20gJy4vcHJvcGVydHknO1xuaW1wb3J0IHJlbmRlciBmcm9tICcuL3JlbmRlcic7XG5cbmltcG9ydCAqIGFzIGNhY2hlIGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IHsgZGlzcGF0Y2ggfSBmcm9tICcuL3V0aWxzJztcblxuZnVuY3Rpb24gZGlzcGF0Y2hJbnZhbGlkYXRlKGhvc3QpIHtcbiAgZGlzcGF0Y2goaG9zdCwgJ0BpbnZhbGlkYXRlJywgeyBidWJibGVzOiB0cnVlLCBjb21wb3NlZDogdHJ1ZSB9KTtcbn1cblxuY29uc3QgZGVmYXVsdEdldCA9IChob3N0LCB2YWx1ZSkgPT4gdmFsdWU7XG5cbmZ1bmN0aW9uIGNvbXBpbGUoSHlicmlkLCBoeWJyaWRzKSB7XG4gIEh5YnJpZC5oeWJyaWRzID0gaHlicmlkcztcbiAgSHlicmlkLmNvbm5lY3RzID0gW107XG5cbiAgT2JqZWN0LmtleXMoaHlicmlkcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgbGV0IGNvbmZpZyA9IGh5YnJpZHNba2V5XTtcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIGNvbmZpZztcblxuICAgIGlmIChrZXkgPT09ICdyZW5kZXInKSB7XG4gICAgICBjb25maWcgPSByZW5kZXIoY29uZmlnKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbmZpZyA9IHsgZ2V0OiBjb25maWcgfTtcbiAgICB9IGVsc2UgaWYgKGNvbmZpZyA9PT0gbnVsbCB8fCB0eXBlICE9PSAnb2JqZWN0JyB8fCAodHlwZSA9PT0gJ29iamVjdCcgJiYgIWNvbmZpZy5nZXQgJiYgIWNvbmZpZy5zZXQpKSB7XG4gICAgICBjb25maWcgPSBwcm9wZXJ0eShjb25maWcpO1xuICAgIH1cblxuICAgIGNvbmZpZy5nZXQgPSBjb25maWcuZ2V0IHx8IGRlZmF1bHRHZXQ7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSHlicmlkLnByb3RvdHlwZSwga2V5LCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmdldCh0aGlzLCBrZXksIGNvbmZpZy5nZXQpO1xuICAgICAgfSxcbiAgICAgIHNldDogY29uZmlnLnNldCAmJiBmdW5jdGlvbiBzZXQobmV3VmFsdWUpIHtcbiAgICAgICAgY2FjaGUuc2V0KHRoaXMsIGtleSwgY29uZmlnLnNldCwgbmV3VmFsdWUsICgpID0+IGRpc3BhdGNoSW52YWxpZGF0ZSh0aGlzKSk7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyxcbiAgICB9KTtcblxuICAgIGlmIChjb25maWcuY29ubmVjdCkge1xuICAgICAgSHlicmlkLmNvbm5lY3RzLnB1c2goaG9zdCA9PiBjb25maWcuY29ubmVjdChob3N0LCBrZXksIChjbGVhckNhY2hlID0gdHJ1ZSkgPT4ge1xuICAgICAgICBpZiAoY2xlYXJDYWNoZSkgY2FjaGUuaW52YWxpZGF0ZShob3N0LCBrZXkpO1xuICAgICAgICBkaXNwYXRjaEludmFsaWRhdGUoaG9zdCk7XG4gICAgICB9KSk7XG4gICAgfVxuICB9KTtcbn1cblxubGV0IHVwZGF0ZTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGNvbnN0IHdhbGtJblNoYWRvdyA9IChub2RlLCBmbikgPT4ge1xuICAgIGZuKG5vZGUpO1xuXG4gICAgQXJyYXkuZnJvbShub2RlLmNoaWxkcmVuKVxuICAgICAgLmZvckVhY2goZWwgPT4gd2Fsa0luU2hhZG93KGVsLCBmbikpO1xuXG4gICAgaWYgKG5vZGUuc2hhZG93Um9vdCkge1xuICAgICAgQXJyYXkuZnJvbShub2RlLnNoYWRvd1Jvb3QuY2hpbGRyZW4pXG4gICAgICAgIC5mb3JFYWNoKGVsID0+IHdhbGtJblNoYWRvdyhlbCwgZm4pKTtcbiAgICB9XG4gIH07XG5cbiAgdXBkYXRlID0gKEh5YnJpZCkgPT4ge1xuICAgIHdhbGtJblNoYWRvdyhkb2N1bWVudC5ib2R5LCAobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUuY29uc3RydWN0b3IgPT09IEh5YnJpZCkge1xuICAgICAgICBub2RlLmRpc2Nvbm5lY3RlZENhbGxiYWNrKCk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMobm9kZS5jb25zdHJ1Y3Rvci5oeWJyaWRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICBjYWNoZS5pbnZhbGlkYXRlKG5vZGUsIGtleSwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG5vZGUuY29ubmVjdGVkQ2FsbGJhY2soKTtcbiAgICAgICAgZGlzcGF0Y2hJbnZhbGlkYXRlKG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG4vLyBCVUc6IEJhYmVsIHY2IHRyYW5zcGlsZWQgY2xhc3MgYnJlYWtzIG5hdGl2ZSBjdXN0b20gZWxlbWVudHNcbmV4cG9ydCBmdW5jdGlvbiBIVE1MQnJpZGdlKC4uLmFyZ3MpIHtcbiAgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KEhUTUxFbGVtZW50LCBhcmdzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbn1cbk9iamVjdC5zZXRQcm90b3R5cGVPZihIVE1MQnJpZGdlLnByb3RvdHlwZSwgSFRNTEVsZW1lbnQucHJvdG90eXBlKTtcblxuY29uc3QgY29ubmVjdHMgPSBuZXcgV2Vha01hcCgpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWZpbmUodGFnTmFtZSwgaHlicmlkcykge1xuICBjb25zdCBDdXN0b21FbGVtZW50ID0gd2luZG93LmN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKTtcblxuICBpZiAoQ3VzdG9tRWxlbWVudCkge1xuICAgIGlmIChDdXN0b21FbGVtZW50Lmh5YnJpZHMgPT09IGh5YnJpZHMpIHtcbiAgICAgIHJldHVybiBDdXN0b21FbGVtZW50O1xuICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBDdXN0b21FbGVtZW50Lmh5YnJpZHMpIHtcbiAgICAgIE9iamVjdC5rZXlzKEN1c3RvbUVsZW1lbnQuaHlicmlkcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGRlbGV0ZSBDdXN0b21FbGVtZW50LnByb3RvdHlwZVtrZXldO1xuICAgICAgfSk7XG5cbiAgICAgIGNvbXBpbGUoQ3VzdG9tRWxlbWVudCwgaHlicmlkcyk7XG4gICAgICB1cGRhdGUoQ3VzdG9tRWxlbWVudCk7XG5cbiAgICAgIHJldHVybiBDdXN0b21FbGVtZW50O1xuICAgIH1cblxuICAgIHRocm93IEVycm9yKGBbZGVmaW5lXSBFbGVtZW50ICcke3RhZ05hbWV9JyBhbHJlYWR5IGRlZmluZWRgKTtcbiAgfVxuXG4gIGNsYXNzIEh5YnJpZCBleHRlbmRzIEhUTUxCcmlkZ2Uge1xuICAgIHN0YXRpYyBnZXQgbmFtZSgpIHsgcmV0dXJuIHRhZ05hbWU7IH1cblxuICAgIGNvbm5lY3RlZENhbGxiYWNrKCkge1xuICAgICAgY29uc3QgbGlzdCA9IHRoaXMuY29uc3RydWN0b3IuY29ubmVjdHMucmVkdWNlKChhY2MsIGZuKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZuKHRoaXMpO1xuICAgICAgICBpZiAocmVzdWx0KSBhY2MuYWRkKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBuZXcgU2V0KCkpO1xuXG4gICAgICBjb25uZWN0cy5zZXQodGhpcywgbGlzdCk7XG4gICAgICBkaXNwYXRjaEludmFsaWRhdGUodGhpcyk7XG4gICAgfVxuXG4gICAgZGlzY29ubmVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICBjb25zdCBsaXN0ID0gY29ubmVjdHMuZ2V0KHRoaXMpO1xuICAgICAgbGlzdC5mb3JFYWNoKGZuID0+IGZuKCkpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBpbGUoSHlicmlkLCBoeWJyaWRzKTtcbiAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKHRhZ05hbWUsIEh5YnJpZCk7XG5cbiAgcmV0dXJuIEh5YnJpZDtcbn1cbiJdfQ==

@@ -199,16 +199,13 @@ 'use strict';

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
var PLACEHOLDER = '{{h-' + Date.now() + '}}';
var PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
var ATTR_PREFIX = '--' + Date.now() + '--';
var ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
function createWalker(node) {
return document.createTreeWalker(node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
}
var preparedTemplates = new WeakMap();
function applyShadyCSS(template, tagName) {
if (tagName && _typeof(window.ShadyCSS) === 'object') {
if (!tagName) return template;
return (0, _utils.shadyCSS)(function (shady) {
var map = preparedTemplates.get(template);

@@ -228,19 +225,26 @@ if (!map) {

window.ShadyCSS.prepareTemplate(clone, tagName.toLowerCase());
var styles = clone.content.querySelectorAll('style');
Array.from(styles).forEach(function (style) {
var count = style.childNodes.length + 1;
for (var i = 0; i < count; i += 1) {
style.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), style);
}
});
shady.prepareTemplate(clone, tagName.toLowerCase());
}
return clone;
}
return template;
}, template);
}
var PLACEHOLDER = '{{h-' + Date.now() + '}}';
var PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
var ATTR_PREFIX = '--' + Date.now() + '--';
var ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
function createSignature(parts) {
var signature = parts.join(PLACEHOLDER);
var signature = parts.reduce(function (acc, part, index) {
if (index === 0) {
return part;
} else if (parts.slice(index).join('').match(/\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)) {
return acc + '<!--' + PLACEHOLDER + '-->' + part;
}
return acc + PLACEHOLDER + part;
}, '');

@@ -256,2 +260,25 @@ if (_utils.IS_IE) {

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
function createWalker(node) {
return document.createTreeWalker(node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT, null, false);
}
function replaceComments(fragment) {
var iterator = document.createNodeIterator(fragment, NodeFilter.SHOW_COMMENT, null, false);
var node = void 0;
// eslint-disable-next-line no-cond-assign
while (node = iterator.nextNode()) {
if (node.textContent === PLACEHOLDER) {
node.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), node);
node.parentNode.removeChild(node);
}
}
}
var container = document.createElement('div');
function compile(signature, rawParts, isSVG) {

@@ -261,3 +288,9 @@ var template = document.createElement('template');

template.innerHTML = signature;
if (_utils.IS_IE) {
template.innerHTML = signature;
} else {
container.innerHTML = '<template>' + signature + '</template>';
template.content.appendChild(container.children[0].content);
}
if (isSVG) {

@@ -271,2 +304,4 @@ var svgRoot = template.content.firstChild;

replaceComments(template.content);
var compileWalker = createWalker(template.content);

@@ -351,6 +386,6 @@ var compileIndex = 0;

if (_utils.IS_IE && _node.nodeType === Node.TEXT_NODE) {
if (_node.nodeType === Node.TEXT_NODE) {
if (_node.textContent === PLACEHOLDER) {
_node.textContent = '';
} else {
} else if (_utils.IS_IE) {
_node.textContent = _node.textContent.replace(ATTR_REGEXP, '');

@@ -396,2 +431,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odG1sL3RlbXBsYXRlLmpzIl0sIm5hbWVzIjpbImNyZWF0ZVNpZ25hdHVyZSIsImNvbXBpbGUiLCJkYXRhTWFwIiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImdldCIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsIkFycmF5IiwiZnJvbSIsImNoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzdGFydE5vZGUiLCJsYXN0TmV4dFNpYmxpbmciLCJuZXh0U2libGluZyIsInJlc29sdmVWYWx1ZSIsImhvc3QiLCJ2YWx1ZSIsInR5cGUiLCJpc0FycmF5Iiwic2V0IiwidGV4dENvbnRlbnQiLCJyZXNvbHZlQXJyYXkiLCJtb3ZlUGxhY2Vob2xkZXIiLCJwcmV2aW91c1NpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJwcmV2Tm9kZSIsIm5leHROb2RlIiwibGFzdEluZGV4IiwibGVuZ3RoIiwiYXJyYXlNYXAiLCJyZWR1Y2UiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpZCIsImhhcyIsIkVycm9yIiwicGxhY2Vob2xkZXIiLCJkZWxldGUiLCJkb2N1bWVudCIsImNyZWF0ZVRleHROb2RlIiwiTWFwIiwicmVzb2x2ZVByb3BlcnR5IiwiYXR0ck5hbWUiLCJwcm9wZXJ0eU5hbWUiLCJpc1NWRyIsInN1YnN0ciIsImZuTWFwIiwiV2Vha01hcCIsImV2ZW50TmFtZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJhcmdzIiwiZm4iLCJyZXNvbHZlU3R5bGVMaXN0IiwicmVzb2x2ZUNsYXNzTGlzdCIsInVuZGVmaW5lZCIsInJlbW92ZUF0dHJpYnV0ZSIsImF0dHJWYWx1ZSIsIlN0cmluZyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsImdldFByb3BlcnR5TmFtZSIsInN0cmluZyIsInJlcGxhY2UiLCJzcGxpdCIsInBvcCIsImNyZWF0ZVdhbGtlciIsImNyZWF0ZVRyZWVXYWxrZXIiLCJOb2RlRmlsdGVyIiwiU0hPV19FTEVNRU5UIiwiU0hPV19URVhUIiwicHJlcGFyZWRUZW1wbGF0ZXMiLCJhcHBseVNoYWR5Q1NTIiwidGVtcGxhdGUiLCJ0YWdOYW1lIiwid2luZG93IiwiU2hhZHlDU1MiLCJjbG9uZSIsImNyZWF0ZUVsZW1lbnQiLCJjb250ZW50IiwiYXBwZW5kQ2hpbGQiLCJpbXBvcnROb2RlIiwicHJlcGFyZVRlbXBsYXRlIiwidG9Mb3dlckNhc2UiLCJQTEFDRUhPTERFUiIsIkRhdGUiLCJub3ciLCJQTEFDRUhPTERFUl9SRUdFWFAiLCJSZWdFeHAiLCJBVFRSX1BSRUZJWCIsIkFUVFJfUkVHRVhQIiwicGFydHMiLCJzaWduYXR1cmUiLCJqb2luIiwiSVNfSUUiLCJtYXRjaCIsInJhd1BhcnRzIiwiaW5uZXJIVE1MIiwic3ZnUm9vdCIsImZpcnN0Q2hpbGQiLCJjb21waWxlV2Fsa2VyIiwiY29tcGlsZUluZGV4IiwiY3VycmVudE5vZGUiLCJ0ZXh0Iiwib2Zmc2V0Iiwic3BsaXRUZXh0IiwicHVzaCIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidHJpbSIsIm5hbWUiLCJyZXN1bHRzIiwiaSIsInByZXZpb3VzVmFsdWUiLCJmcmFnbWVudCIsInJlbmRlcldhbGtlciIsImNsb25lZFBhcnRzIiwic2xpY2UiLCJyZW5kZXJJbmRleCIsImN1cnJlbnRQYXJ0Iiwic2hpZnQiLCJtYXJrZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwiY2hpbGRMaXN0IiwicHJldmlvdXNDaGlsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztRQXlOZ0JBLGUsR0FBQUEsZTtRQWFBQyxPLEdBQUFBLE87O0FBdE9oQjs7QUFFQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQyxVQUFVLHVCQUFoQjs7QUFFQSxTQUFTQyxjQUFULENBQXdCQyxJQUF4QixFQUE4QjtBQUM1QixNQUFJQyxhQUFKO0FBQ0E7QUFDQSxTQUFPRCxTQUFTQyxPQUFPSCxRQUFR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LFlBQVlJLEtBQVosRUFBZDtBQUNEOztBQUVERix1QkFBZSxDQUFmO0FBQ0Q7O0FBRUQsVUFBSXRILE9BQU9DLFFBQVAsS0FBb0JDLEtBQUtDLFNBQTdCLEVBQXdDO0FBQ3RDLFlBQU15SCxZQUFZeEgsTUFBTUMsSUFBTixDQUFXNkcsU0FBUzVHLFVBQXBCLENBQWxCOztBQUVBVixhQUFLZSxTQUFMLEdBQWlCaUgsVUFBVSxDQUFWLENBQWpCO0FBQ0FoSSxhQUFLRSxPQUFMLEdBQWU4SCxVQUFVQSxVQUFVaEcsTUFBVixHQUFtQixDQUE3QixDQUFmOztBQUVBLFlBQUlpRyxnQkFBZ0I3SCxNQUFwQjtBQUNBNEgsa0JBQVVySCxPQUFWLENBQWtCLFVBQUNDLEtBQUQsRUFBVztBQUMzQlIsaUJBQU9TLFVBQVAsQ0FBa0JlLFlBQWxCLENBQStCaEIsS0FBL0IsRUFBc0NxSCxjQUFjaEgsV0FBcEQ7QUFDQWdILDBCQUFnQnJILEtBQWhCO0FBQ0QsU0FIRDtBQUlELE9BWEQsTUFXTztBQUNMUixlQUFPZ0YsV0FBUCxDQUFtQmtDLFFBQW5CO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJakYsUUFBUSxDQUFaOztBQUVBckMsU0FBSzZILE9BQUwsQ0FBYWxILE9BQWIsQ0FBcUIsZ0JBQWdCO0FBQUE7QUFBQSxVQUFkWixJQUFjO0FBQUEsVUFBUnlELEVBQVE7O0FBQ25DQSxTQUFHckMsSUFBSCxFQUFTcEIsSUFBVCxFQUFld0QsS0FBS2xCLEtBQUwsQ0FBZixFQUE0QnJDLElBQTVCO0FBQ0FxQyxlQUFTLENBQVQ7QUFDRCxLQUhEO0FBSUQsR0EzREQ7QUE0REQiLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVNYXAsIElTX0lFIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgcmVzb2x2ZVN0eWxlTGlzdCBmcm9tICcuL3N0eWxlJztcbmltcG9ydCByZXNvbHZlQ2xhc3NMaXN0IGZyb20gJy4vY2xhc3NMaXN0JztcblxuY29uc3QgZGF0YU1hcCA9IGNyZWF0ZU1hcCgpO1xuXG5mdW5jdGlvbiBnZXRUZW1wbGF0ZUVuZChub2RlKSB7XG4gIGxldCBkYXRhO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgJiYgKGRhdGEgPSBkYXRhTWFwLmdldChub2RlKSkgJiYgZGF0YS5lbmROb2RlKSB7XG4gICAgbm9kZSA9IGRhdGEuZW5kTm9kZTtcbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpIHtcbiAgaWYgKHRhcmdldC5ub2RlVHlwZSAhPT0gTm9kZS5URVhUX05PREUpIHtcbiAgICBBcnJheS5mcm9tKHRhcmdldC5jaGlsZE5vZGVzKS5mb3JFYWNoKGNoaWxkID0+XG4gICAgICBjaGlsZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNoaWxkKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG4gICAgY29uc3Qgc3RhcnROb2RlID0gZGF0YS5zdGFydE5vZGU7XG5cbiAgICBpZiAoc3RhcnROb2RlKSB7XG4gICAgICBjb25zdCBlbmROb2RlID0gZ2V0VGVtcGxhdGVFbmQoZGF0YS5lbmROb2RlKTtcblxuICAgICAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gICAgICBjb25zdCBsYXN0TmV4dFNpYmxpbmcgPSBlbmROb2RlLm5leHRTaWJsaW5nO1xuXG4gICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICBjb25zdCBuZXh0U2libGluZyA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICAgICAgbm9kZSA9IG5leHRTaWJsaW5nICE9PSBsYXN0TmV4dFNpYmxpbmcgJiYgbmV4dFNpYmxpbmc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZShob3N0LCB0YXJnZXQsIHZhbHVlKSB7XG4gIGNvbnN0IHR5cGUgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/ICdhcnJheScgOiB0eXBlb2YgdmFsdWU7XG4gIGxldCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7fSk7XG5cbiAgaWYgKGRhdGEudHlwZSAhPT0gdHlwZSkge1xuICAgIHJlbW92ZVRlbXBsYXRlKHRhcmdldCk7XG4gICAgZGF0YSA9IGRhdGFNYXAuc2V0KHRhcmdldCwgeyB0eXBlIH0pO1xuXG4gICAgaWYgKHRhcmdldC50ZXh0Q29udGVudCAhPT0gJycpIHtcbiAgICAgIHRhcmdldC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ2Z1bmN0aW9uJzpcbiAgICAgIHZhbHVlKGhvc3QsIHRhcmdldCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdhcnJheSc6XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlc29sdmVBcnJheShob3N0LCB0YXJnZXQsIHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAodmFsdWUgIT09IGRhdGEudmFsdWUpIHtcbiAgICAgICAgZGF0YS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0YXJnZXQudGV4dENvbnRlbnQgPSB0eXBlID09PSAnbnVtYmVyJyB8fCB2YWx1ZSA/IHZhbHVlIDogJyc7XG4gICAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbW92ZVBsYWNlaG9sZGVyKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nKSB7XG4gIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCBzdGFydE5vZGUgPSBkYXRhLnN0YXJ0Tm9kZTtcbiAgY29uc3QgZW5kTm9kZSA9IGdldFRlbXBsYXRlRW5kKGRhdGEuZW5kTm9kZSk7XG5cbiAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRhcmdldCwgcHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nKTtcblxuICBsZXQgcHJldk5vZGUgPSB0YXJnZXQ7XG4gIGxldCBub2RlID0gc3RhcnROb2RlO1xuICB3aGlsZSAobm9kZSkge1xuICAgIGNvbnN0IG5leHROb2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwcmV2Tm9kZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBwcmV2Tm9kZS5uZXh0U2libGluZyk7XG4gICAgcHJldk5vZGUgPSBub2RlO1xuICAgIG5vZGUgPSBuZXh0Tm9kZSAhPT0gZW5kTm9kZS5uZXh0U2libGluZyAmJiBuZXh0Tm9kZTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXNvbHZlQXJyYXkoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkge1xuICBsZXQgcHJldmlvdXNTaWJsaW5nID0gdGFyZ2V0O1xuICBjb25zdCBsYXN0SW5kZXggPSB2YWx1ZS5sZW5ndGggLSAxO1xuICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcbiAgY29uc3QgeyBhcnJheU1hcCB9ID0gZGF0YTtcblxuICBkYXRhLmFycmF5TWFwID0gdmFsdWUucmVkdWNlKChtYXAsIGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaWQgPSB0eXBlb2YgaXRlbSA9PT0gJ2Z1bmN0aW9uJyA/IGl0ZW0uaWQgOiBpbmRleDtcblxuICAgIGlmIChtYXAuaGFzKGlkKSkge1xuICAgICAgdGhyb3cgRXJyb3IoYFtodG1sXSAnJHtpZH0nIGtleSBhbHJlYWR5IHNldC4gVXNlICdodG1sXFxgLi4uXFxgLmtleShpZCknIGhlbHBlciB0byBzZXQgdW5pcXVlIGtleS5gKTtcbiAgICB9XG5cbiAgICBsZXQgcGxhY2Vob2xkZXI7XG4gICAgaWYgKGFycmF5TWFwICYmIGFycmF5TWFwLmhhcyhpZCkpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0gYXJyYXlNYXAuZ2V0KGlkKTtcbiAgICAgIGFycmF5TWFwLmRlbGV0ZShpZCk7XG5cbiAgICAgIGlmIChwbGFjZWhvbGRlci5wcmV2aW91c1NpYmxpbmcgIT09IHByZXZpb3VzU2libGluZykge1xuICAgICAgICBtb3ZlUGxhY2Vob2xkZXIocGxhY2Vob2xkZXIsIHByZXZpb3VzU2libGluZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBsYWNlaG9sZGVyID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgICAgcHJldmlvdXNTaWJsaW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHBsYWNlaG9sZGVyLCBwcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcpO1xuICAgIH1cblxuICAgIHJlc29sdmVWYWx1ZShob3N0LCBwbGFjZWhvbGRlciwgaXRlbSk7XG5cbiAgICBwcmV2aW91c1NpYmxpbmcgPSBnZXRUZW1wbGF0ZUVuZChkYXRhTWFwLmdldChwbGFjZWhvbGRlcikuZW5kTm9kZSB8fCBwbGFjZWhvbGRlcik7XG5cbiAgICBpZiAoaW5kZXggPT09IDApIGRhdGEuc3RhcnROb2RlID0gcGxhY2Vob2xkZXI7XG4gICAgaWYgKGluZGV4ID09PSBsYXN0SW5kZXgpIGRhdGEuZW5kTm9kZSA9IHByZXZpb3VzU2libGluZztcblxuICAgIG1hcC5zZXQoaWQsIHBsYWNlaG9sZGVyKTtcblxuICAgIHJldHVybiBtYXA7XG4gIH0sIG5ldyBNYXAoKSk7XG5cbiAgaWYgKGFycmF5TWFwKSB7XG4gICAgYXJyYXlNYXAuZm9yRWFjaCgocGxhY2Vob2xkZXIpID0+IHtcbiAgICAgIHJlbW92ZVRlbXBsYXRlKHBsYWNlaG9sZGVyKTtcbiAgICAgIHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocGxhY2Vob2xkZXIpO1xuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVQcm9wZXJ0eShhdHRyTmFtZSwgcHJvcGVydHlOYW1lLCBpc1NWRykge1xuICBpZiAocHJvcGVydHlOYW1lLnN1YnN0cigwLCAyKSA9PT0gJ29uJykge1xuICAgIGNvbnN0IGZuTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICBjb25zdCBldmVudE5hbWUgPSBwcm9wZXJ0eU5hbWUuc3Vic3RyKDIpO1xuXG4gICAgcmV0dXJuIChob3N0LCB0YXJnZXQsIHZhbHVlKSA9PiB7XG4gICAgICBpZiAoIWZuTWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICBjb25zdCBmbiA9IGZuTWFwLmdldCh0YXJnZXQpO1xuICAgICAgICAgIGlmIChmbikgZm4oaG9zdCwgLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmbk1hcC5zZXQodGFyZ2V0LCB2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIHN3aXRjaCAoYXR0ck5hbWUpIHtcbiAgICBjYXNlICdzdHlsZSc6IHJldHVybiByZXNvbHZlU3R5bGVMaXN0O1xuICAgIGNhc2UgJ2NsYXNzJzogcmV0dXJuIHJlc29sdmVDbGFzc0xpc3Q7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAoaG9zdCwgdGFyZ2V0LCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoIWlzU1ZHICYmIHByb3BlcnR5TmFtZSBpbiB0YXJnZXQpIHtcbiAgICAgICAgICBpZiAodGFyZ2V0W3Byb3BlcnR5TmFtZV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0YXJnZXRbcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoYXR0ck5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGF0dHJWYWx1ZSA9IHZhbHVlID09PSB0cnVlID8gJycgOiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgIGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKGF0dHJOYW1lKSAhPT0gYXR0clZhbHVlKSB7XG4gICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCBhdHRyVmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZSgvXFxzKj1cXHMqWydcIl0qJC9nLCAnJykuc3BsaXQoJyAnKS5wb3AoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlV2Fsa2VyKG5vZGUpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoXG4gICAgbm9kZSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5UIHwgTm9kZUZpbHRlci5TSE9XX1RFWFQsXG4gICAgbnVsbCxcbiAgICBmYWxzZSxcbiAgKTtcbn1cblxuY29uc3QgcHJlcGFyZWRUZW1wbGF0ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG5mdW5jdGlvbiBhcHBseVNoYWR5Q1NTKHRlbXBsYXRlLCB0YWdOYW1lKSB7XG4gIGlmICh0YWdOYW1lICYmIHR5cGVvZiB3aW5kb3cuU2hhZHlDU1MgPT09ICdvYmplY3QnKSB7XG4gICAgbGV0IG1hcCA9IHByZXBhcmVkVGVtcGxhdGVzLmdldCh0ZW1wbGF0ZSk7XG4gICAgaWYgKCFtYXApIHtcbiAgICAgIG1hcCA9IG5ldyBNYXAoKTtcbiAgICAgIHByZXBhcmVkVGVtcGxhdGVzLnNldCh0ZW1wbGF0ZSwgbWFwKTtcbiAgICB9XG5cbiAgICBsZXQgY2xvbmUgPSBtYXAuZ2V0KHRhZ05hbWUpO1xuXG4gICAgaWYgKCFjbG9uZSkge1xuICAgICAgY2xvbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICAgICAgY2xvbmUuY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5pbXBvcnROb2RlKHRlbXBsYXRlLmNvbnRlbnQsIHRydWUpKTtcblxuICAgICAgbWFwLnNldCh0YWdOYW1lLCBjbG9uZSk7XG5cbiAgICAgIHdpbmRvdy5TaGFkeUNTUy5wcmVwYXJlVGVtcGxhdGUoY2xvbmUsIHRhZ05hbWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lO1xuICB9XG5cbiAgcmV0dXJuIHRlbXBsYXRlO1xufVxuXG5jb25zdCBQTEFDRUhPTERFUiA9IGB7e2gtJHtEYXRlLm5vdygpfX19YDtcbmNvbnN0IFBMQUNFSE9MREVSX1JFR0VYUCA9IG5ldyBSZWdFeHAoUExBQ0VIT0xERVIsICdnJyk7XG5cbmNvbnN0IEFUVFJfUFJFRklYID0gYC0tJHtEYXRlLm5vdygpfS0tYDtcbmNvbnN0IEFUVFJfUkVHRVhQID0gbmV3IFJlZ0V4cChBVFRSX1BSRUZJWCwgJ2cnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShwYXJ0cykge1xuICBjb25zdCBzaWduYXR1cmUgPSBwYXJ0cy5qb2luKFBMQUNFSE9MREVSKTtcblxuICBpZiAoSVNfSUUpIHtcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlcGxhY2UoXG4gICAgICAvc3R5bGVcXHMqPVxccyooW1wiXVteXCJdK1tcIl18WyddW14nXStbJ118W15cXHNcIic8Pi9dKykvZyxcbiAgICAgIG1hdGNoID0+IGAke0FUVFJfUFJFRklYfSR7bWF0Y2h9YCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUoc2lnbmF0dXJlLCByYXdQYXJ0cywgaXNTVkcpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuXG4gIHRlbXBsYXRlLmlubmVySFRNTCA9IHNpZ25hdHVyZTtcbiAgaWYgKGlzU1ZHKSB7XG4gICAgY29uc3Qgc3ZnUm9vdCA9IHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcbiAgICB0ZW1wbGF0ZS5jb250ZW50LnJlbW92ZUNoaWxkKHN2Z1Jvb3QpO1xuICAgIEFycmF5LmZyb20oc3ZnUm9vdC5jaGlsZE5vZGVzKS5mb3JFYWNoKG5vZGUgPT4gdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChub2RlKSk7XG4gIH1cblxuICBjb25zdCBjb21waWxlV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKHRlbXBsYXRlLmNvbnRlbnQpO1xuICBsZXQgY29tcGlsZUluZGV4ID0gMDtcblxuICB3aGlsZSAoY29tcGlsZVdhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBpbGVXYWxrZXIuY3VycmVudE5vZGU7XG5cbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGlmIChub2RlLnRleHRDb250ZW50ICE9PSBQTEFDRUhPTERFUikge1xuICAgICAgICBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgUExBQ0VIT0xERVIsXG4gICAgICAgICAgKHRleHQsIG9mZnNldCkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zcGxpdFRleHQob2Zmc2V0ID4gMCA/IG9mZnNldCA6IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZS50ZXh0Q29udGVudCA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIHJlc29sdmVWYWx1ZV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuYXR0cmlidXRlcykuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBuYW1lID0gSVNfSUUgPyBhdHRyLm5hbWUucmVwbGFjZShBVFRSX1BSRUZJWCwgJycpIDogYXR0ci5uYW1lO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocmF3UGFydHNbcGFydHMubGVuZ3RoXSk7XG4gICAgICAgICAgcGFydHMucHVzaChbY29tcGlsZUluZGV4LCByZXNvbHZlUHJvcGVydHkobmFtZSwgcHJvcGVydHlOYW1lLCBpc1NWRyldKTtcbiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB2YWx1ZS5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFApO1xuICAgICAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIChob3N0LCB0YXJnZXQsIGF0dHJWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLnJlcGxhY2UoUExBQ0VIT0xERVIsIGF0dHJWYWx1ZSA9PSBudWxsID8gJycgOiBhdHRyVmFsdWUpKTtcbiAgICAgICAgICAgIH1dKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZShuYW1lLCBwcmV2aW91c1ZhbHVlLnJlcGxhY2UoUExBQ0VIT0xERVIsIGF0dHJWYWx1ZSA9PSBudWxsID8gJycgOiBhdHRyVmFsdWUpKTtcbiAgICAgICAgICAgICAgfV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUucmVwbGFjZShQTEFDRUhPTERFUl9SRUdFWFAsICcnKTtcblxuICAgICAgICAgICAgaWYgKElTX0lFICYmIG5hbWUgIT09IGF0dHIubmFtZSkge1xuICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyLnZhbHVlKTtcbiAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIChob3N0LCB0YXJnZXQsIGFyZ3MpID0+IHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7IHR5cGU6ICdmdW5jdGlvbicgfSk7XG5cbiAgICBpZiAodGVtcGxhdGUgIT09IGRhdGEudGVtcGxhdGUpIHtcbiAgICAgIGlmIChkYXRhLnRlbXBsYXRlKSByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpO1xuXG4gICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmltcG9ydE5vZGUoYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgaG9zdC50YWdOYW1lKS5jb250ZW50LCB0cnVlKTtcblxuICAgICAgY29uc3QgcmVuZGVyV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKGZyYWdtZW50KTtcbiAgICAgIGNvbnN0IGNsb25lZFBhcnRzID0gcGFydHMuc2xpY2UoMCk7XG5cbiAgICAgIGxldCByZW5kZXJJbmRleCA9IDA7XG4gICAgICBsZXQgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuXG4gICAgICBjb25zdCBtYXJrZXJzID0gW107XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgeyB0ZW1wbGF0ZSwgbWFya2VycyB9KTtcblxuICAgICAgd2hpbGUgKHJlbmRlcldhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZW5kZXJXYWxrZXIuY3VycmVudE5vZGU7XG5cbiAgICAgICAgaWYgKElTX0lFICYmIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgaWYgKG5vZGUudGV4dENvbnRlbnQgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUudGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoQVRUUl9SRUdFWFAsICcnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3VycmVudFBhcnQgJiYgY3VycmVudFBhcnRbMF0gPT09IHJlbmRlckluZGV4KSB7XG4gICAgICAgICAgbWFya2Vycy5wdXNoKFtub2RlLCBjdXJyZW50UGFydFsxXV0pO1xuICAgICAgICAgIGN1cnJlbnRQYXJ0ID0gY2xvbmVkUGFydHMuc2hpZnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlbmRlckluZGV4ICs9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmICh0YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkTGlzdCA9IEFycmF5LmZyb20oZnJhZ21lbnQuY2hpbGROb2Rlcyk7XG5cbiAgICAgICAgZGF0YS5zdGFydE5vZGUgPSBjaGlsZExpc3RbMF07XG4gICAgICAgIGRhdGEuZW5kTm9kZSA9IGNoaWxkTGlzdFtjaGlsZExpc3QubGVuZ3RoIC0gMV07XG5cbiAgICAgICAgbGV0IHByZXZpb3VzQ2hpbGQgPSB0YXJnZXQ7XG4gICAgICAgIGNoaWxkTGlzdC5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgIHRhcmdldC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZCwgcHJldmlvdXNDaGlsZC5uZXh0U2libGluZyk7XG4gICAgICAgICAgcHJldmlvdXNDaGlsZCA9IGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhcmdldC5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGRhdGEubWFya2Vycy5mb3JFYWNoKChbbm9kZSwgZm5dKSA9PiB7XG4gICAgICBmbihob3N0LCBub2RlLCBhcmdzW2luZGV4XSwgZGF0YSk7XG4gICAgICBpbmRleCArPSAxO1xuICAgIH0pO1xuICB9O1xufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9odG1sL3RlbXBsYXRlLmpzIl0sIm5hbWVzIjpbImNyZWF0ZVNpZ25hdHVyZSIsImNvbXBpbGUiLCJkYXRhTWFwIiwiZ2V0VGVtcGxhdGVFbmQiLCJub2RlIiwiZGF0YSIsImdldCIsImVuZE5vZGUiLCJyZW1vdmVUZW1wbGF0ZSIsInRhcmdldCIsIm5vZGVUeXBlIiwiTm9kZSIsIlRFWFRfTk9ERSIsIkFycmF5IiwiZnJvbSIsImNoaWxkTm9kZXMiLCJmb3JFYWNoIiwiY2hpbGQiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJzdGFydE5vZGUiLCJsYXN0TmV4dFNpYmxpbmciLCJuZXh0U2libGluZyIsInJlc29sdmVWYWx1ZSIsImhvc3QiLCJ2YWx1ZSIsInR5cGUiLCJpc0FycmF5Iiwic2V0IiwidGV4dENvbnRlbnQiLCJyZXNvbHZlQXJyYXkiLCJtb3ZlUGxhY2Vob2xkZXIiLCJwcmV2aW91c1NpYmxpbmciLCJpbnNlcnRCZWZvcmUiLCJwcmV2Tm9kZSIsIm5leHROb2RlIiwibGFzdEluZGV4IiwibGVuZ3RoIiwiYXJyYXlNYXAiLCJyZWR1Y2UiLCJtYXAiLCJpdGVtIiwiaW5kZXgiLCJpZCIsImhhcyIsIkVycm9yIiwicGxhY2Vob2xkZXIiLCJkZWxldGUiLCJkb2N1bWVudCIsImNyZWF0ZVRleHROb2RlIiwiTWFwIiwicmVzb2x2ZVByb3BlcnR5IiwiYXR0ck5hbWUiLCJwcm9wZXJ0eU5hbWUiLCJpc1NWRyIsInN1YnN0ciIsImZuTWFwIiwiV2Vha01hcCIsImV2ZW50TmFtZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJhcmdzIiwiZm4iLCJyZXNvbHZlU3R5bGVMaXN0IiwicmVzb2x2ZUNsYXNzTGlzdCIsInVuZGVmaW5lZCIsInJlbW92ZUF0dHJpYnV0ZSIsImF0dHJWYWx1ZSIsIlN0cmluZyIsImdldEF0dHJpYnV0ZSIsInNldEF0dHJpYnV0ZSIsIlBMQUNFSE9MREVSIiwiRGF0ZSIsIm5vdyIsIlBMQUNFSE9MREVSX1JFR0VYUCIsIlJlZ0V4cCIsIkFUVFJfUFJFRklYIiwiQVRUUl9SRUdFWFAiLCJwcmVwYXJlZFRlbXBsYXRlcyIsImFwcGx5U2hhZHlDU1MiLCJ0ZW1wbGF0ZSIsInRhZ05hbWUiLCJzaGFkeSIsImNsb25lIiwiY3JlYXRlRWxlbWVudCIsImNvbnRlbnQiLCJhcHBlbmRDaGlsZCIsImltcG9ydE5vZGUiLCJzdHlsZXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwic3R5bGUiLCJjb3VudCIsImkiLCJwcmVwYXJlVGVtcGxhdGUiLCJ0b0xvd2VyQ2FzZSIsInBhcnRzIiwic2lnbmF0dXJlIiwiYWNjIiwicGFydCIsInNsaWNlIiwiam9pbiIsIm1hdGNoIiwiSVNfSUUiLCJyZXBsYWNlIiwiZ2V0UHJvcGVydHlOYW1lIiwic3RyaW5nIiwic3BsaXQiLCJwb3AiLCJjcmVhdGVXYWxrZXIiLCJjcmVhdGVUcmVlV2Fsa2VyIiwiTm9kZUZpbHRlciIsIlNIT1dfRUxFTUVOVCIsIlNIT1dfVEVYVCIsInJlcGxhY2VDb21tZW50cyIsImZyYWdtZW50IiwiaXRlcmF0b3IiLCJjcmVhdGVOb2RlSXRlcmF0b3IiLCJTSE9XX0NPTU1FTlQiLCJjb250YWluZXIiLCJyYXdQYXJ0cyIsImlubmVySFRNTCIsImNoaWxkcmVuIiwic3ZnUm9vdCIsImZpcnN0Q2hpbGQiLCJjb21waWxlV2Fsa2VyIiwiY29tcGlsZUluZGV4IiwiY3VycmVudE5vZGUiLCJ0ZXh0Iiwib2Zmc2V0Iiwic3BsaXRUZXh0IiwicHVzaCIsImF0dHJpYnV0ZXMiLCJhdHRyIiwidHJpbSIsIm5hbWUiLCJyZXN1bHRzIiwicHJldmlvdXNWYWx1ZSIsInJlbmRlcldhbGtlciIsImNsb25lZFBhcnRzIiwicmVuZGVySW5kZXgiLCJjdXJyZW50UGFydCIsInNoaWZ0IiwibWFya2VycyIsIk9iamVjdCIsImFzc2lnbiIsImNoaWxkTGlzdCIsInByZXZpb3VzQ2hpbGQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7UUFrTmdCQSxlLEdBQUFBLGU7UUErQ0FDLE8sR0FBQUEsTzs7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Z0ksY0FBYzNILFdBQXBEO0FBQ0EySCwwQkFBZ0JoSSxLQUFoQjtBQUNELFNBSEQ7QUFJRCxPQVhELE1BV087QUFDTFIsZUFBTzRFLFdBQVAsQ0FBbUI0QixRQUFuQjtBQUNEO0FBQ0Y7O0FBRUQsUUFBSXZFLFFBQVEsQ0FBWjs7QUFFQXJDLFNBQUt3SSxPQUFMLENBQWE3SCxPQUFiLENBQXFCLGdCQUFnQjtBQUFBO0FBQUEsVUFBZFosSUFBYztBQUFBLFVBQVJ5RCxFQUFROztBQUNuQ0EsU0FBR3JDLElBQUgsRUFBU3BCLElBQVQsRUFBZXdELEtBQUtsQixLQUFMLENBQWYsRUFBNEJyQyxJQUE1QjtBQUNBcUMsZUFBUyxDQUFUO0FBQ0QsS0FIRDtBQUlELEdBM0REO0FBNEREIiwiZmlsZSI6InRlbXBsYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTWFwLCBzaGFkeUNTUywgSVNfSUUgfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCByZXNvbHZlU3R5bGVMaXN0IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IHJlc29sdmVDbGFzc0xpc3QgZnJvbSAnLi9jbGFzc0xpc3QnO1xuXG5jb25zdCBkYXRhTWFwID0gY3JlYXRlTWFwKCk7XG5cbmZ1bmN0aW9uIGdldFRlbXBsYXRlRW5kKG5vZGUpIHtcbiAgbGV0IGRhdGE7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAobm9kZSAmJiAoZGF0YSA9IGRhdGFNYXAuZ2V0KG5vZGUpKSAmJiBkYXRhLmVuZE5vZGUpIHtcbiAgICBub2RlID0gZGF0YS5lbmROb2RlO1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVRlbXBsYXRlKHRhcmdldCkge1xuICBpZiAodGFyZ2V0Lm5vZGVUeXBlICE9PSBOb2RlLlRFWFRfTk9ERSkge1xuICAgIEFycmF5LmZyb20odGFyZ2V0LmNoaWxkTm9kZXMpLmZvckVhY2goY2hpbGQgPT5cbiAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0KTtcbiAgICBjb25zdCBzdGFydE5vZGUgPSBkYXRhLnN0YXJ0Tm9kZTtcblxuICAgIGlmIChzdGFydE5vZGUpIHtcbiAgICAgIGNvbnN0IGVuZE5vZGUgPSBnZXRUZW1wbGF0ZUVuZChkYXRhLmVuZE5vZGUpO1xuXG4gICAgICBsZXQgbm9kZSA9IHN0YXJ0Tm9kZTtcbiAgICAgIGNvbnN0IGxhc3ROZXh0U2libGluZyA9IGVuZE5vZGUubmV4dFNpYmxpbmc7XG5cbiAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgIGNvbnN0IG5leHRTaWJsaW5nID0gbm9kZS5uZXh0U2libGluZztcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgICAgICBub2RlID0gbmV4dFNpYmxpbmcgIT09IGxhc3ROZXh0U2libGluZyAmJiBuZXh0U2libGluZztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKGhvc3QsIHRhcmdldCwgdmFsdWUpIHtcbiAgY29uc3QgdHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZTtcbiAgbGV0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQsIHt9KTtcblxuICBpZiAoZGF0YS50eXBlICE9PSB0eXBlKSB7XG4gICAgcmVtb3ZlVGVtcGxhdGUodGFyZ2V0KTtcbiAgICBkYXRhID0gZGF0YU1hcC5zZXQodGFyZ2V0LCB7IHR5cGUgfSk7XG5cbiAgICBpZiAodGFyZ2V0LnRleHRDb250ZW50ICE9PSAnJykge1xuICAgICAgdGFyZ2V0LnRleHRDb250ZW50ID0gJyc7XG4gICAgfVxuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAgdmFsdWUoaG9zdCwgdGFyZ2V0KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmVzb2x2ZUFycmF5KGhvc3QsIHRhcmdldCwgdmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICh2YWx1ZSAhPT0gZGF0YS52YWx1ZSkge1xuICAgICAgICBkYXRhLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRhcmdldC50ZXh0Q29udGVudCA9IHR5cGUgPT09ICdudW1iZXInIHx8IHZhbHVlID8gdmFsdWUgOiAnJztcbiAgICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlUGxhY2Vob2xkZXIodGFyZ2V0LCBwcmV2aW91c1NpYmxpbmcpIHtcbiAgY29uc3QgZGF0YSA9IGRhdGFNYXAuZ2V0KHRhcmdldCk7XG4gIGNvbnN0IHN0YXJ0Tm9kZSA9IGRhdGEuc3RhcnROb2RlO1xuICBjb25zdCBlbmROb2RlID0gZ2V0VGVtcGxhdGVFbmQoZGF0YS5lbmROb2RlKTtcblxuICBwcmV2aW91c1NpYmxpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGFyZ2V0LCBwcmV2aW91c1NpYmxpbmcubmV4dFNpYmxpbmcpO1xuXG4gIGxldCBwcmV2Tm9kZSA9IHRhcmdldDtcbiAgbGV0IG5vZGUgPSBzdGFydE5vZGU7XG4gIHdoaWxlIChub2RlKSB7XG4gICAgY29uc3QgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgIHByZXZOb2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vZGUsIHByZXZOb2RlLm5leHRTaWJsaW5nKTtcbiAgICBwcmV2Tm9kZSA9IG5vZGU7XG4gICAgbm9kZSA9IG5leHROb2RlICE9PSBlbmROb2RlLm5leHRTaWJsaW5nICYmIG5leHROb2RlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVBcnJheShob3N0LCB0YXJnZXQsIHZhbHVlKSB7XG4gIGxldCBwcmV2aW91c1NpYmxpbmcgPSB0YXJnZXQ7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHZhbHVlLmxlbmd0aCAtIDE7XG4gIGNvbnN0IGRhdGEgPSBkYXRhTWFwLmdldCh0YXJnZXQpO1xuICBjb25zdCB7IGFycmF5TWFwIH0gPSBkYXRhO1xuXG4gIGRhdGEuYXJyYXlNYXAgPSB2YWx1ZS5yZWR1Y2UoKG1hcCwgaXRlbSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpZCA9IHR5cGVvZiBpdGVtID09PSAnZnVuY3Rpb24nID8gaXRlbS5pZCA6IGluZGV4O1xuXG4gICAgaWYgKG1hcC5oYXMoaWQpKSB7XG4gICAgICB0aHJvdyBFcnJvcihgW2h0bWxdICcke2lkfScga2V5IGFscmVhZHkgc2V0LiBVc2UgJ2h0bWxcXGAuLi5cXGAua2V5KGlkKScgaGVscGVyIHRvIHNldCB1bmlxdWUga2V5LmApO1xuICAgIH1cblxuICAgIGxldCBwbGFjZWhvbGRlcjtcbiAgICBpZiAoYXJyYXlNYXAgJiYgYXJyYXlNYXAuaGFzKGlkKSkge1xuICAgICAgcGxhY2Vob2xkZXIgPSBhcnJheU1hcC5nZXQoaWQpO1xuICAgICAgYXJyYXlNYXAuZGVsZXRlKGlkKTtcblxuICAgICAgaWYgKHBsYWNlaG9sZGVyLnByZXZpb3VzU2libGluZyAhPT0gcHJldmlvdXNTaWJsaW5nKSB7XG4gICAgICAgIG1vdmVQbGFjZWhvbGRlcihwbGFjZWhvbGRlciwgcHJldmlvdXNTaWJsaW5nKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGxhY2Vob2xkZXIgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnJyk7XG4gICAgICBwcmV2aW91c1NpYmxpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocGxhY2Vob2xkZXIsIHByZXZpb3VzU2libGluZy5uZXh0U2libGluZyk7XG4gICAgfVxuXG4gICAgcmVzb2x2ZVZhbHVlKGhvc3QsIHBsYWNlaG9sZGVyLCBpdGVtKTtcblxuICAgIHByZXZpb3VzU2libGluZyA9IGdldFRlbXBsYXRlRW5kKGRhdGFNYXAuZ2V0KHBsYWNlaG9sZGVyKS5lbmROb2RlIHx8IHBsYWNlaG9sZGVyKTtcblxuICAgIGlmIChpbmRleCA9PT0gMCkgZGF0YS5zdGFydE5vZGUgPSBwbGFjZWhvbGRlcjtcbiAgICBpZiAoaW5kZXggPT09IGxhc3RJbmRleCkgZGF0YS5lbmROb2RlID0gcHJldmlvdXNTaWJsaW5nO1xuXG4gICAgbWFwLnNldChpZCwgcGxhY2Vob2xkZXIpO1xuXG4gICAgcmV0dXJuIG1hcDtcbiAgfSwgbmV3IE1hcCgpKTtcblxuICBpZiAoYXJyYXlNYXApIHtcbiAgICBhcnJheU1hcC5mb3JFYWNoKChwbGFjZWhvbGRlcikgPT4ge1xuICAgICAgcmVtb3ZlVGVtcGxhdGUocGxhY2Vob2xkZXIpO1xuICAgICAgcGxhY2Vob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwbGFjZWhvbGRlcik7XG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnR5KGF0dHJOYW1lLCBwcm9wZXJ0eU5hbWUsIGlzU1ZHKSB7XG4gIGlmIChwcm9wZXJ0eU5hbWUuc3Vic3RyKDAsIDIpID09PSAnb24nKSB7XG4gICAgY29uc3QgZm5NYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgIGNvbnN0IGV2ZW50TmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMik7XG5cbiAgICByZXR1cm4gKGhvc3QsIHRhcmdldCwgdmFsdWUpID0+IHtcbiAgICAgIGlmICghZm5NYXAuaGFzKHRhcmdldCkpIHtcbiAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGNvbnN0IGZuID0gZm5NYXAuZ2V0KHRhcmdldCk7XG4gICAgICAgICAgaWYgKGZuKSBmbihob3N0LCAuLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGZuTWFwLnNldCh0YXJnZXQsIHZhbHVlKTtcbiAgICB9O1xuICB9XG5cbiAgc3dpdGNoIChhdHRyTmFtZSkge1xuICAgIGNhc2UgJ3N0eWxlJzogcmV0dXJuIHJlc29sdmVTdHlsZUxpc3Q7XG4gICAgY2FzZSAnY2xhc3MnOiByZXR1cm4gcmVzb2x2ZUNsYXNzTGlzdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIChob3N0LCB0YXJnZXQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICghaXNTVkcgJiYgcHJvcGVydHlOYW1lIGluIHRhcmdldCkge1xuICAgICAgICAgIGlmICh0YXJnZXRbcHJvcGVydHlOYW1lXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRhcmdldFtwcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBmYWxzZSB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZShhdHRyTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgYXR0clZhbHVlID0gdmFsdWUgPT09IHRydWUgPyAnJyA6IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgaWYgKHRhcmdldC5nZXRBdHRyaWJ1dGUoYXR0ck5hbWUpICE9PSBhdHRyVmFsdWUpIHtcbiAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICB9XG59XG5cbmNvbnN0IFBMQUNFSE9MREVSID0gYHt7aC0ke0RhdGUubm93KCl9fX1gO1xuY29uc3QgUExBQ0VIT0xERVJfUkVHRVhQID0gbmV3IFJlZ0V4cChQTEFDRUhPTERFUiwgJ2cnKTtcbmNvbnN0IEFUVFJfUFJFRklYID0gYC0tJHtEYXRlLm5vdygpfS0tYDtcbmNvbnN0IEFUVFJfUkVHRVhQID0gbmV3IFJlZ0V4cChBVFRSX1BSRUZJWCwgJ2cnKTtcblxuY29uc3QgcHJlcGFyZWRUZW1wbGF0ZXMgPSBuZXcgV2Vha01hcCgpO1xuXG5mdW5jdGlvbiBhcHBseVNoYWR5Q1NTKHRlbXBsYXRlLCB0YWdOYW1lKSB7XG4gIGlmICghdGFnTmFtZSkgcmV0dXJuIHRlbXBsYXRlO1xuXG4gIHJldHVybiBzaGFkeUNTUygoc2hhZHkpID0+IHtcbiAgICBsZXQgbWFwID0gcHJlcGFyZWRUZW1wbGF0ZXMuZ2V0KHRlbXBsYXRlKTtcbiAgICBpZiAoIW1hcCkge1xuICAgICAgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgcHJlcGFyZWRUZW1wbGF0ZXMuc2V0KHRlbXBsYXRlLCBtYXApO1xuICAgIH1cblxuICAgIGxldCBjbG9uZSA9IG1hcC5nZXQodGFnTmFtZSk7XG5cbiAgICBpZiAoIWNsb25lKSB7XG4gICAgICBjbG9uZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XG4gICAgICBjbG9uZS5jb250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmltcG9ydE5vZGUodGVtcGxhdGUuY29udGVudCwgdHJ1ZSkpO1xuXG4gICAgICBtYXAuc2V0KHRhZ05hbWUsIGNsb25lKTtcblxuICAgICAgY29uc3Qgc3R5bGVzID0gY2xvbmUuY29udGVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZScpO1xuXG4gICAgICBBcnJheS5mcm9tKHN0eWxlcykuZm9yRWFjaCgoc3R5bGUpID0+IHtcbiAgICAgICAgY29uc3QgY291bnQgPSBzdHlsZS5jaGlsZE5vZGVzLmxlbmd0aCArIDE7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkgKz0gMSkge1xuICAgICAgICAgIHN0eWxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFBMQUNFSE9MREVSKSwgc3R5bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2hhZHkucHJlcGFyZVRlbXBsYXRlKGNsb25lLCB0YWdOYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmU7XG4gIH0sIHRlbXBsYXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShwYXJ0cykge1xuICBjb25zdCBzaWduYXR1cmUgPSBwYXJ0cy5yZWR1Y2UoKGFjYywgcGFydCwgaW5kZXgpID0+IHtcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybiBwYXJ0O1xuICAgIH0gZWxzZSBpZiAocGFydHMuc2xpY2UoaW5kZXgpLmpvaW4oJycpLm1hdGNoKC9cXHMqPFxcL1xccyoodGFibGV8dHJ8dGhlYWR8dGJvZHl8dGZvb3R8Y29sZ3JvdXApPi8pKSB7XG4gICAgICByZXR1cm4gYCR7YWNjfTwhLS0ke1BMQUNFSE9MREVSfS0tPiR7cGFydH1gO1xuICAgIH1cbiAgICByZXR1cm4gYWNjICsgUExBQ0VIT0xERVIgKyBwYXJ0O1xuICB9LCAnJyk7XG5cbiAgaWYgKElTX0lFKSB7XG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZXBsYWNlKFxuICAgICAgL3N0eWxlXFxzKj1cXHMqKFtcIl1bXlwiXStbXCJdfFsnXVteJ10rWyddfFteXFxzXCInPD4vXSspL2csXG4gICAgICBtYXRjaCA9PiBgJHtBVFRSX1BSRUZJWH0ke21hdGNofWAsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5TmFtZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC9cXHMqPVxccypbJ1wiXSokL2csICcnKS5zcGxpdCgnICcpLnBvcCgpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVXYWxrZXIobm9kZSkge1xuICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihcbiAgICBub2RlLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgTm9kZUZpbHRlci5TSE9XX0VMRU1FTlQgfCBOb2RlRmlsdGVyLlNIT1dfVEVYVCxcbiAgICBudWxsLFxuICAgIGZhbHNlLFxuICApO1xufVxuXG5mdW5jdGlvbiByZXBsYWNlQ29tbWVudHMoZnJhZ21lbnQpIHtcbiAgY29uc3QgaXRlcmF0b3IgPSBkb2N1bWVudC5jcmVhdGVOb2RlSXRlcmF0b3IoZnJhZ21lbnQsIE5vZGVGaWx0ZXIuU0hPV19DT01NRU5ULCBudWxsLCBmYWxzZSk7XG4gIGxldCBub2RlO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cbiAgd2hpbGUgKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSB7XG4gICAgaWYgKG5vZGUudGV4dENvbnRlbnQgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICBub2RlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFBMQUNFSE9MREVSKSwgbm9kZSk7XG4gICAgICBub2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGUoc2lnbmF0dXJlLCByYXdQYXJ0cywgaXNTVkcpIHtcbiAgY29uc3QgdGVtcGxhdGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZW1wbGF0ZScpO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuXG4gIGlmIChJU19JRSkge1xuICAgIHRlbXBsYXRlLmlubmVySFRNTCA9IHNpZ25hdHVyZTtcbiAgfSBlbHNlIHtcbiAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDx0ZW1wbGF0ZT4ke3NpZ25hdHVyZX08L3RlbXBsYXRlPmA7XG4gICAgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChjb250YWluZXIuY2hpbGRyZW5bMF0uY29udGVudCk7XG4gIH1cblxuICBpZiAoaXNTVkcpIHtcbiAgICBjb25zdCBzdmdSb290ID0gdGVtcGxhdGUuY29udGVudC5maXJzdENoaWxkO1xuICAgIHRlbXBsYXRlLmNvbnRlbnQucmVtb3ZlQ2hpbGQoc3ZnUm9vdCk7XG4gICAgQXJyYXkuZnJvbShzdmdSb290LmNoaWxkTm9kZXMpLmZvckVhY2gobm9kZSA9PiB0ZW1wbGF0ZS5jb250ZW50LmFwcGVuZENoaWxkKG5vZGUpKTtcbiAgfVxuXG4gIHJlcGxhY2VDb21tZW50cyh0ZW1wbGF0ZS5jb250ZW50KTtcblxuICBjb25zdCBjb21waWxlV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKHRlbXBsYXRlLmNvbnRlbnQpO1xuICBsZXQgY29tcGlsZUluZGV4ID0gMDtcblxuICB3aGlsZSAoY29tcGlsZVdhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgY29uc3Qgbm9kZSA9IGNvbXBpbGVXYWxrZXIuY3VycmVudE5vZGU7XG5cbiAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgIGlmIChub2RlLnRleHRDb250ZW50ICE9PSBQTEFDRUhPTERFUikge1xuICAgICAgICBub2RlLnRleHRDb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgUExBQ0VIT0xERVIsXG4gICAgICAgICAgKHRleHQsIG9mZnNldCkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zcGxpdFRleHQob2Zmc2V0ID4gMCA/IG9mZnNldCA6IHRleHQubGVuZ3RoKTtcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAobm9kZS50ZXh0Q29udGVudCA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgaWYgKCFJU19JRSkgbm9kZS50ZXh0Q29udGVudCA9ICcnO1xuICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIHJlc29sdmVWYWx1ZV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBBcnJheS5mcm9tKG5vZGUuYXR0cmlidXRlcykuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICBjb25zdCBuYW1lID0gSVNfSUUgPyBhdHRyLm5hbWUucmVwbGFjZShBVFRSX1BSRUZJWCwgJycpIDogYXR0ci5uYW1lO1xuXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gUExBQ0VIT0xERVIpIHtcbiAgICAgICAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWUocmF3UGFydHNbcGFydHMubGVuZ3RoXSk7XG4gICAgICAgICAgcGFydHMucHVzaChbY29tcGlsZUluZGV4LCByZXNvbHZlUHJvcGVydHkobmFtZSwgcHJvcGVydHlOYW1lLCBpc1NWRyldKTtcbiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyLm5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSB2YWx1ZS5tYXRjaChQTEFDRUhPTERFUl9SRUdFWFApO1xuICAgICAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFtjb21waWxlSW5kZXgsIChob3N0LCB0YXJnZXQsIGF0dHJWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlLnJlcGxhY2UoUExBQ0VIT0xERVIsIGF0dHJWYWx1ZSA9PSBudWxsID8gJycgOiBhdHRyVmFsdWUpKTtcbiAgICAgICAgICAgIH1dKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgIHBhcnRzLnB1c2goW2NvbXBpbGVJbmRleCwgKGhvc3QsIHRhcmdldCwgYXR0clZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZShuYW1lLCBwcmV2aW91c1ZhbHVlLnJlcGxhY2UoUExBQ0VIT0xERVIsIGF0dHJWYWx1ZSA9PSBudWxsID8gJycgOiBhdHRyVmFsdWUpKTtcbiAgICAgICAgICAgICAgfV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUucmVwbGFjZShQTEFDRUhPTERFUl9SRUdFWFAsICcnKTtcblxuICAgICAgICAgICAgaWYgKElTX0lFICYmIG5hbWUgIT09IGF0dHIubmFtZSkge1xuICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCBhdHRyLnZhbHVlKTtcbiAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUoYXR0ci5uYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbXBpbGVJbmRleCArPSAxO1xuICB9XG5cbiAgcmV0dXJuIChob3N0LCB0YXJnZXQsIGFyZ3MpID0+IHtcbiAgICBjb25zdCBkYXRhID0gZGF0YU1hcC5nZXQodGFyZ2V0LCB7IHR5cGU6ICdmdW5jdGlvbicgfSk7XG5cbiAgICBpZiAodGVtcGxhdGUgIT09IGRhdGEudGVtcGxhdGUpIHtcbiAgICAgIGlmIChkYXRhLnRlbXBsYXRlKSByZW1vdmVUZW1wbGF0ZSh0YXJnZXQpO1xuXG4gICAgICBjb25zdCBmcmFnbWVudCA9IGRvY3VtZW50LmltcG9ydE5vZGUoYXBwbHlTaGFkeUNTUyh0ZW1wbGF0ZSwgaG9zdC50YWdOYW1lKS5jb250ZW50LCB0cnVlKTtcblxuICAgICAgY29uc3QgcmVuZGVyV2Fsa2VyID0gY3JlYXRlV2Fsa2VyKGZyYWdtZW50KTtcbiAgICAgIGNvbnN0IGNsb25lZFBhcnRzID0gcGFydHMuc2xpY2UoMCk7XG5cbiAgICAgIGxldCByZW5kZXJJbmRleCA9IDA7XG4gICAgICBsZXQgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuXG4gICAgICBjb25zdCBtYXJrZXJzID0gW107XG5cbiAgICAgIE9iamVjdC5hc3NpZ24oZGF0YSwgeyB0ZW1wbGF0ZSwgbWFya2VycyB9KTtcblxuICAgICAgd2hpbGUgKHJlbmRlcldhbGtlci5uZXh0Tm9kZSgpKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZW5kZXJXYWxrZXIuY3VycmVudE5vZGU7XG5cbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuVEVYVF9OT0RFKSB7XG4gICAgICAgICAgaWYgKG5vZGUudGV4dENvbnRlbnQgPT09IFBMQUNFSE9MREVSKSB7XG4gICAgICAgICAgICBub2RlLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgfSBlbHNlIGlmIChJU19JRSkge1xuICAgICAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUudGV4dENvbnRlbnQucmVwbGFjZShBVFRSX1JFR0VYUCwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlIChjdXJyZW50UGFydCAmJiBjdXJyZW50UGFydFswXSA9PT0gcmVuZGVySW5kZXgpIHtcbiAgICAgICAgICBtYXJrZXJzLnB1c2goW25vZGUsIGN1cnJlbnRQYXJ0WzFdXSk7XG4gICAgICAgICAgY3VycmVudFBhcnQgPSBjbG9uZWRQYXJ0cy5zaGlmdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVuZGVySW5kZXggKz0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC5ub2RlVHlwZSA9PT0gTm9kZS5URVhUX05PREUpIHtcbiAgICAgICAgY29uc3QgY2hpbGRMaXN0ID0gQXJyYXkuZnJvbShmcmFnbWVudC5jaGlsZE5vZGVzKTtcblxuICAgICAgICBkYXRhLnN0YXJ0Tm9kZSA9IGNoaWxkTGlzdFswXTtcbiAgICAgICAgZGF0YS5lbmROb2RlID0gY2hpbGRMaXN0W2NoaWxkTGlzdC5sZW5ndGggLSAxXTtcblxuICAgICAgICBsZXQgcHJldmlvdXNDaGlsZCA9IHRhcmdldDtcbiAgICAgICAgY2hpbGRMaXN0LmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkLCBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICBwcmV2aW91c0NoaWxkID0gY2hpbGQ7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgZGF0YS5tYXJrZXJzLmZvckVhY2goKFtub2RlLCBmbl0pID0+IHtcbiAgICAgIGZuKGhvc3QsIG5vZGUsIGFyZ3NbaW5kZXhdLCBkYXRhKTtcbiAgICAgIGluZGV4ICs9IDE7XG4gICAgfSk7XG4gIH07XG59XG4iXX0=

@@ -6,43 +6,53 @@ 'use strict';

});
exports.default = undefined;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var map = new WeakMap();
exports.update = update;
var FPS_THRESHOLD = 1000 / 60; // 60 FPS ~ 16,67ms time window
var _utils = require('./utils');
var queue = new Set();
var map = new WeakMap();
var cache = new WeakMap();
var FPS_THRESHOLD = 1000 / 60; // 60 FPS ~ 16,67ms time window
var queue = [];
function update(iterator, startTime) {
function update() {
var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
var startTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
if (startTime && performance.now() - startTime > FPS_THRESHOLD) {
requestAnimationFrame(function () {
return update(iterator);
return update(index);
});
} else {
var _iterator$next = iterator.next(),
done = _iterator$next.done,
target = _iterator$next.value;
var target = queue[index];
var nextTime = performance.now();
var next = function next() {
return update(iterator, nextTime);
return update(index + 1, nextTime);
};
if (done) {
queue.clear();
if (!target) {
(0, _utils.shadyCSS)(function (shady) {
return queue.forEach(function (t) {
return shady.styleSubtree(t);
});
});
queue = [];
} else if (map.has(target)) {
var key = map.get(target);
var prevFn = cache.get(target);
var nextFn = void 0;
var prevUpdate = cache.get(target);
var nextUpdate = void 0;
try {
nextFn = target[key];
nextUpdate = target[key];
if (nextFn !== prevFn) {
cache.set(target, nextFn);
Promise.resolve().then(function () {
if (nextUpdate !== prevUpdate) {
cache.set(target, nextUpdate);
return Promise.resolve().then(function () {
try {
nextFn();
nextUpdate();
if (!prevUpdate) (0, _utils.shadyCSS)(function (shady) {
return shady.styleElement(target);
});
next();

@@ -54,5 +64,4 @@ } catch (e) {

});
} else {
next();
}
next();
} catch (e) {

@@ -66,2 +75,3 @@ next();

}
return null;
}

@@ -73,8 +83,10 @@

if (map.has(target)) {
if (!queue.size) {
if (!queue[0]) {
requestAnimationFrame(function () {
return update(queue.values());
return update();
});
}
queue.add(target);
if (queue.indexOf(target) === -1) {
queue.push(target);
}
}

@@ -109,2 +121,2 @@ });

exports.default = render;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsibWFwIiwiV2Vha01hcCIsIkZQU19USFJFU0hPTEQiLCJxdWV1ZSIsIlNldCIsImNhY2hlIiwidXBkYXRlIiwiaXRlcmF0b3IiLCJzdGFydFRpbWUiLCJwZXJmb3JtYW5jZSIsIm5vdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm5leHQiLCJkb25lIiwidGFyZ2V0IiwidmFsdWUiLCJuZXh0VGltZSIsImNsZWFyIiwiaGFzIiwia2V5IiwiZ2V0IiwicHJldkZuIiwibmV4dEZuIiwic2V0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiZSIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50IiwiY29tcG9zZWRQYXRoIiwic2l6ZSIsInZhbHVlcyIsImFkZCIsInJlbmRlciIsIlR5cGVFcnJvciIsImhvc3QiLCJmbiIsInNoYWRvd1Jvb3QiLCJjb25uZWN0IiwiYXR0YWNoU2hhZG93IiwibW9kZSIsImRlbGV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFNQSxNQUFNLElBQUlDLE9BQUosRUFBWjs7QUFFQSxJQUFNQyxnQkFBZ0IsT0FBTyxFQUE3QixDLENBQWlDOztBQUVqQyxJQUFNQyxRQUFRLElBQUlDLEdBQUosRUFBZDtBQUNBLElBQU1DLFFBQVEsSUFBSUosT0FBSixFQUFkOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JDLFFBQWhCLEVBQTBCQyxTQUExQixFQUFxQztBQUNuQyxNQUFJQSxhQUFjQyxZQUFZQyxHQUFaLEtBQW9CRixTQUFwQixHQUFnQ04sYUFBbEQsRUFBa0U7QUFDaEVTLDBCQUFzQjtBQUFBLGFBQU1MLE9BQU9DLFFBQVAsQ0FBTjtBQUFBLEtBQXRCO0FBQ0QsR0FGRCxNQUVPO0FBQUEseUJBQzJCQSxTQUFTSyxJQUFULEVBRDNCO0FBQUEsUUFDR0MsSUFESCxrQkFDR0EsSUFESDtBQUFBLFFBQ2dCQyxNQURoQixrQkFDU0MsS0FEVDs7QUFFTCxRQUFNQyxXQUFXUCxZQUFZQyxHQUFaLEVBQWpCO0FBQ0EsUUFBTUUsT0FBTyxTQUFQQSxJQUFPO0FBQUEsYUFBTU4sT0FBT0MsUUFBUCxFQUFpQlMsUUFBakIsQ0FBTjtBQUFBLEtBQWI7O0FBRUEsUUFBSUgsSUFBSixFQUFVO0FBQ1JWLFlBQU1jLEtBQU47QUFDRCxLQUZELE1BRU8sSUFBSWpCLElBQUlrQixHQUFKLENBQVFKLE1BQVIsQ0FBSixFQUFxQjtBQUMxQixVQUFNSyxNQUFNbkIsSUFBSW9CLEdBQUosQ0FBUU4sTUFBUixDQUFaO0FBQ0EsVUFBTU8sU0FBU2hCLE1BQU1lLEdBQU4sQ0FBVU4sTUFBVixDQUFmO0FBQ0EsVUFBSVEsZUFBSjs7QUFFQSxVQUFJO0FBQ0ZBLGlCQUFTUixPQUFPSyxHQUFQLENBQVQ7O0FBRUEsWUFBSUcsV0FBV0QsTUFBZixFQUF1QjtBQUNyQmhCLGdCQUFNa0IsR0FBTixDQUFVVCxNQUFWLEVBQWtCUSxNQUFsQjs7QUFFQUUsa0JBQVFDLE9BQVIsR0FBa0JDLElBQWxCLENBQXVCLFlBQU07QUFDM0IsZ0JBQUk7QUFDRko7QUFDQVY7QUFDRCxhQUhELENBR0UsT0FBT2UsQ0FBUCxFQUFVO0FBQ1ZmO0FBQ0Esb0JBQU1lLENBQU47QUFDRDtBQUNGLFdBUkQ7QUFTRCxTQVpELE1BWU87QUFDTGY7QUFDRDtBQUNGLE9BbEJELENBa0JFLE9BQU9lLENBQVAsRUFBVTtBQUNWZjtBQUNBLGNBQU1lLENBQU47QUFDRDtBQUNGLEtBM0JNLE1BMkJBO0FBQ0xmO0FBQ0Q7QUFDRjtBQUNGOztBQUVEZ0IsU0FBU0MsZ0JBQVQsQ0FBMEIsYUFBMUIsRUFBeUMsVUFBQ0MsS0FBRCxFQUFXO0FBQ2xELE1BQU1oQixTQUFTZ0IsTUFBTUMsWUFBTixHQUFxQixDQUFyQixDQUFmOztBQUVBLE1BQUkvQixJQUFJa0IsR0FBSixDQUFRSixNQUFSLENBQUosRUFBcUI7QUFDbkIsUUFBSSxDQUFDWCxNQUFNNkIsSUFBWCxFQUFpQjtBQUNmckIsNEJBQXNCO0FBQUEsZUFBTUwsT0FBT0gsTUFBTThCLE1BQU4sRUFBUCxDQUFOO0FBQUEsT0FBdEI7QUFDRDtBQUNEOUIsVUFBTStCLEdBQU4sQ0FBVXBCLE1BQVY7QUFDRDtBQUNGLENBVEQ7O0FBV2UsU0FBU3FCLE1BQVQsQ0FBZ0JmLElBQWhCLEVBQXFCO0FBQ2xDLE1BQUksT0FBT0EsSUFBUCxLQUFlLFVBQW5CLEVBQStCO0FBQzdCLFVBQU1nQix1RUFBb0VoQixJQUFwRSx5Q0FBb0VBLElBQXBFLEdBQU47QUFDRDs7QUFFRCxTQUFPO0FBQ0xBLFNBQUssYUFBQ2lCLElBQUQsRUFBVTtBQUNiLFVBQU1DLEtBQUtsQixLQUFJaUIsSUFBSixDQUFYO0FBQ0EsYUFBTztBQUFBLGVBQU1DLEdBQUdELElBQUgsRUFBU0EsS0FBS0UsVUFBZCxDQUFOO0FBQUEsT0FBUDtBQUNELEtBSkk7QUFLTEMsV0FMSyxtQkFLR0gsSUFMSCxFQUtTbEIsR0FMVCxFQUtjO0FBQ2pCLFVBQUksQ0FBQ2tCLEtBQUtFLFVBQVYsRUFBc0I7QUFDcEJGLGFBQUtJLFlBQUwsQ0FBa0IsRUFBRUMsTUFBTSxNQUFSLEVBQWxCO0FBQ0Q7O0FBRUQxQyxVQUFJdUIsR0FBSixDQUFRYyxJQUFSLEVBQWNsQixHQUFkOztBQUVBLGFBQU87QUFBQSxlQUFNbkIsSUFBSTJDLE1BQUosQ0FBV04sSUFBWCxDQUFOO0FBQUEsT0FBUDtBQUNEO0FBYkksR0FBUDtBQWVEIiwiZmlsZSI6InJlbmRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IG1hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbmNvbnN0IEZQU19USFJFU0hPTEQgPSAxMDAwIC8gNjA7IC8vIDYwIEZQUyB+IDE2LDY3bXMgdGltZSB3aW5kb3dcblxuY29uc3QgcXVldWUgPSBuZXcgU2V0KCk7XG5jb25zdCBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG5cbmZ1bmN0aW9uIHVwZGF0ZShpdGVyYXRvciwgc3RhcnRUaW1lKSB7XG4gIGlmIChzdGFydFRpbWUgJiYgKHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRUaW1lID4gRlBTX1RIUkVTSE9MRCkpIHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdXBkYXRlKGl0ZXJhdG9yKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBkb25lLCB2YWx1ZTogdGFyZ2V0IH0gPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgY29uc3QgbmV4dFRpbWUgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBuZXh0ID0gKCkgPT4gdXBkYXRlKGl0ZXJhdG9yLCBuZXh0VGltZSk7XG5cbiAgICBpZiAoZG9uZSkge1xuICAgICAgcXVldWUuY2xlYXIoKTtcbiAgICB9IGVsc2UgaWYgKG1hcC5oYXModGFyZ2V0KSkge1xuICAgICAgY29uc3Qga2V5ID0gbWFwLmdldCh0YXJnZXQpO1xuICAgICAgY29uc3QgcHJldkZuID0gY2FjaGUuZ2V0KHRhcmdldCk7XG4gICAgICBsZXQgbmV4dEZuO1xuXG4gICAgICB0cnkge1xuICAgICAgICBuZXh0Rm4gPSB0YXJnZXRba2V5XTtcblxuICAgICAgICBpZiAobmV4dEZuICE9PSBwcmV2Rm4pIHtcbiAgICAgICAgICBjYWNoZS5zZXQodGFyZ2V0LCBuZXh0Rm4pO1xuXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBuZXh0Rm4oKTtcbiAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIG5leHQoKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCgpO1xuICAgIH1cbiAgfVxufVxuXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdAaW52YWxpZGF0ZScsIChldmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldmVudC5jb21wb3NlZFBhdGgoKVswXTtcblxuICBpZiAobWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgaWYgKCFxdWV1ZS5zaXplKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gdXBkYXRlKHF1ZXVlLnZhbHVlcygpKSk7XG4gICAgfVxuICAgIHF1ZXVlLmFkZCh0YXJnZXQpO1xuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVuZGVyKGdldCkge1xuICBpZiAodHlwZW9mIGdldCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IFR5cGVFcnJvcihgW3JlbmRlcl0gVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbjogJHt0eXBlb2YgZ2V0fWApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQ6IChob3N0KSA9PiB7XG4gICAgICBjb25zdCBmbiA9IGdldChob3N0KTtcbiAgICAgIHJldHVybiAoKSA9PiBmbihob3N0LCBob3N0LnNoYWRvd1Jvb3QpO1xuICAgIH0sXG4gICAgY29ubmVjdChob3N0LCBrZXkpIHtcbiAgICAgIGlmICghaG9zdC5zaGFkb3dSb290KSB7XG4gICAgICAgIGhvc3QuYXR0YWNoU2hhZG93KHsgbW9kZTogJ29wZW4nIH0pO1xuICAgICAgfVxuXG4gICAgICBtYXAuc2V0KGhvc3QsIGtleSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiBtYXAuZGVsZXRlKGhvc3QpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZW5kZXIuanMiXSwibmFtZXMiOlsidXBkYXRlIiwibWFwIiwiV2Vha01hcCIsImNhY2hlIiwiRlBTX1RIUkVTSE9MRCIsInF1ZXVlIiwiaW5kZXgiLCJzdGFydFRpbWUiLCJwZXJmb3JtYW5jZSIsIm5vdyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInRhcmdldCIsIm5leHRUaW1lIiwibmV4dCIsImZvckVhY2giLCJzaGFkeSIsInN0eWxlU3VidHJlZSIsInQiLCJoYXMiLCJrZXkiLCJnZXQiLCJwcmV2VXBkYXRlIiwibmV4dFVwZGF0ZSIsInNldCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsInN0eWxlRWxlbWVudCIsImUiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsImNvbXBvc2VkUGF0aCIsImluZGV4T2YiLCJwdXNoIiwicmVuZGVyIiwiVHlwZUVycm9yIiwiaG9zdCIsImZuIiwic2hhZG93Um9vdCIsImNvbm5lY3QiLCJhdHRhY2hTaGFkb3ciLCJtb2RlIiwiZGVsZXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7UUFPZ0JBLE0sR0FBQUEsTTs7QUFQaEI7O0FBRUEsSUFBTUMsTUFBTSxJQUFJQyxPQUFKLEVBQVo7QUFDQSxJQUFNQyxRQUFRLElBQUlELE9BQUosRUFBZDtBQUNBLElBQU1FLGdCQUFnQixPQUFPLEVBQTdCLEMsQ0FBaUM7QUFDakMsSUFBSUMsUUFBUSxFQUFaOztBQUVPLFNBQVNMLE1BQVQsR0FBMEM7QUFBQSxNQUExQk0sS0FBMEIsdUVBQWxCLENBQWtCO0FBQUEsTUFBZkMsU0FBZSx1RUFBSCxDQUFHOztBQUMvQyxNQUFJQSxhQUFjQyxZQUFZQyxHQUFaLEtBQW9CRixTQUFwQixHQUFnQ0gsYUFBbEQsRUFBa0U7QUFDaEVNLDBCQUFzQjtBQUFBLGFBQU1WLE9BQU9NLEtBQVAsQ0FBTjtBQUFBLEtBQXRCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsUUFBTUssU0FBU04sTUFBTUMsS0FBTixD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bnRlbnQiOlsiaW1wb3J0IHsgc2hhZHlDU1MgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgbWFwID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbmNvbnN0IEZQU19USFJFU0hPTEQgPSAxMDAwIC8gNjA7IC8vIDYwIEZQUyB+IDE2LDY3bXMgdGltZSB3aW5kb3dcbmxldCBxdWV1ZSA9IFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlKGluZGV4ID0gMCwgc3RhcnRUaW1lID0gMCkge1xuICBpZiAoc3RhcnRUaW1lICYmIChwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0VGltZSA+IEZQU19USFJFU0hPTEQpKSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHVwZGF0ZShpbmRleCkpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHRhcmdldCA9IHF1ZXVlW2luZGV4XTtcbiAgICBjb25zdCBuZXh0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGNvbnN0IG5leHQgPSAoKSA9PiB1cGRhdGUoaW5kZXggKyAxLCBuZXh0VGltZSk7XG5cbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgc2hhZHlDU1Moc2hhZHkgPT4gcXVldWUuZm9yRWFjaCh0ID0+IHNoYWR5LnN0eWxlU3VidHJlZSh0KSkpO1xuICAgICAgcXVldWUgPSBbXTtcbiAgICB9IGVsc2UgaWYgKG1hcC5oYXModGFyZ2V0KSkge1xuICAgICAgY29uc3Qga2V5ID0gbWFwLmdldCh0YXJnZXQpO1xuICAgICAgY29uc3QgcHJldlVwZGF0ZSA9IGNhY2hlLmdldCh0YXJnZXQpO1xuICAgICAgbGV0IG5leHRVcGRhdGU7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIG5leHRVcGRhdGUgPSB0YXJnZXRba2V5XTtcblxuICAgICAgICBpZiAobmV4dFVwZGF0ZSAhPT0gcHJldlVwZGF0ZSkge1xuICAgICAgICAgIGNhY2hlLnNldCh0YXJnZXQsIG5leHRVcGRhdGUpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIG5leHRVcGRhdGUoKTtcbiAgICAgICAgICAgICAgaWYgKCFwcmV2VXBkYXRlKSBzaGFkeUNTUyhzaGFkeSA9PiBzaGFkeS5zdHlsZUVsZW1lbnQodGFyZ2V0KSk7XG4gICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIG5leHQoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbmV4dCgpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0KCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdAaW52YWxpZGF0ZScsIChldmVudCkgPT4ge1xuICBjb25zdCB0YXJnZXQgPSBldmVudC5jb21wb3NlZFBhdGgoKVswXTtcblxuICBpZiAobWFwLmhhcyh0YXJnZXQpKSB7XG4gICAgaWYgKCFxdWV1ZVswXSkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgoKSA9PiB1cGRhdGUoKSkpO1xuICAgIH1cbiAgICBpZiAocXVldWUuaW5kZXhPZih0YXJnZXQpID09PSAtMSkge1xuICAgICAgcXVldWUucHVzaCh0YXJnZXQpO1xuICAgIH1cbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbmRlcihnZXQpIHtcbiAgaWYgKHR5cGVvZiBnZXQgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoYFtyZW5kZXJdIFRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb246ICR7dHlwZW9mIGdldH1gKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0OiAoaG9zdCkgPT4ge1xuICAgICAgY29uc3QgZm4gPSBnZXQoaG9zdCk7XG4gICAgICByZXR1cm4gKCkgPT4gZm4oaG9zdCwgaG9zdC5zaGFkb3dSb290KTtcbiAgICB9LFxuICAgIGNvbm5lY3QoaG9zdCwga2V5KSB7XG4gICAgICBpZiAoIWhvc3Quc2hhZG93Um9vdCkge1xuICAgICAgICBob3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTtcbiAgICAgIH1cblxuICAgICAgbWFwLnNldChob3N0LCBrZXkpO1xuXG4gICAgICByZXR1cm4gKCkgPT4gbWFwLmRlbGV0ZShob3N0KTtcbiAgICB9LFxuICB9O1xufVxuIl19

@@ -13,2 +13,3 @@ 'use strict';

exports.createMap = createMap;
exports.shadyCSS = shadyCSS;
function camelToDash(str) {

@@ -51,3 +52,12 @@ return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();

function shadyCSS(fn, fallback) {
var shady = window.ShadyCSS;
if (shady && !shady.nativeShadow) {
return fn(shady);
}
return fallback;
}
var IS_IE = exports.IS_IE = 'ActiveXObject' in global;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaCIsInBhc2NhbFRvRGFzaCIsImRpc3BhdGNoIiwiY3JlYXRlTWFwIiwic3RyIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwic2xpY2UiLCJob3N0IiwiZXZlbnRUeXBlIiwib3B0aW9ucyIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJtYXAiLCJXZWFrTWFwIiwiZ2V0Iiwia2V5IiwiZGVmYXVsdFZhbHVlIiwiaGFzIiwidW5kZWZpbmVkIiwic2V0IiwidmFsdWUiLCJJU19JRSIsImdsb2JhbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7UUFBZ0JBLFcsR0FBQUEsVztRQUlBQyxZLEdBQUFBLFk7UUFLQUMsUSxHQUFBQSxRO1FBSUFDLFMsR0FBQUEsUztBQWJULFNBQVNILFdBQVQsQ0FBcUJJLEdBQXJCLEVBQTBCO0FBQy9CLFNBQU9BLElBQUlDLE9BQUosQ0FBWSxpQkFBWixFQUErQixPQUEvQixFQUF3Q0MsV0FBeEMsRUFBUDtBQUNEOztBQUVNLFNBQVNMLFlBQVQsQ0FBc0JHLEdBQXRCLEVBQTJCO0FBQ2hDQSxRQUFNQSxJQUFJLENBQUosRUFBT0UsV0FBUCxLQUF1QkYsSUFBSUcsS0FBSixDQUFVLENBQVYsQ0FBN0I7QUFDQSxTQUFPUCxZQUFZSSxHQUFaLENBQVA7QUFDRDs7QUFFTSxTQUFTRixRQUFULENBQWtCTSxJQUFsQixFQUF3QkMsU0FBeEIsRUFBaUQ7QUFBQSxNQUFkQyxPQUFjLHVFQUFKLEVBQUk7O0FBQ3RERixPQUFLRyxhQUFMLENBQW1CLElBQUlDLFdBQUosQ0FBZ0JILFNBQWhCLGFBQTZCSSxTQUFTLEtBQXRDLElBQWdESCxPQUFoRCxFQUFuQjtBQUNEOztBQUVNLFNBQVNQLFNBQVQsR0FBcUI7QUFDMUIsTUFBTVcsTUFBTSxJQUFJQyxPQUFKLEVBQVo7O0FBRUEsU0FBTztBQUNMQyxPQURLLGVBQ0RDLEdBREMsRUFDSUMsWUFESixFQUNrQjtBQUNyQixVQUFJSixJQUFJSyxHQUFKLENBQVFGLEdBQVIsQ0FBSixFQUFrQjtBQUNoQixlQUFPSCxJQUFJRSxHQUFKLENBQVFDLEdBQVIsQ0FBUDtBQUNEOztBQUVELFVBQUlDLGlCQUFpQkUsU0FBckIsRUFBZ0M7QUFDOUJOLFlBQUlPLEdBQUosQ0FBUUosR0FBUixFQUFhQyxZQUFiO0FBQ0Q7O0FBRUQsYUFBT0EsWUFBUDtBQUNELEtBWEk7QUFZTEcsT0FaSyxlQVlESixHQVpDLEVBWUlLLEtBWkosRUFZVztBQUNkUixVQUFJTyxHQUFKLENBQVFKLEdBQVIsRUFBYUssS0FBYjtBQUNBLGFBQU9BLEtBQVA7QUFDRDtBQWZJLEdBQVA7QUFpQkQ7O0FBRU0sSUFBTUMsd0JBQVEsbUJBQW1CQyxNQUFqQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjYW1lbFRvRGFzaChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsVG9EYXNoKHN0cikge1xuICBzdHIgPSBzdHJbMF0udG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbiAgcmV0dXJuIGNhbWVsVG9EYXNoKHN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaChob3N0LCBldmVudFR5cGUsIG9wdGlvbnMgPSB7fSkge1xuICBob3N0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50VHlwZSwgeyBidWJibGVzOiBmYWxzZSwgLi4ub3B0aW9ucyB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXAoKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQoa2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIGlmIChtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcC5nZXQoa2V5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IElTX0lFID0gJ0FjdGl2ZVhPYmplY3QnIGluIGdsb2JhbDtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJjYW1lbFRvRGFzaCIsInBhc2NhbFRvRGFzaCIsImRpc3BhdGNoIiwiY3JlYXRlTWFwIiwic2hhZHlDU1MiLCJzdHIiLCJyZXBsYWNlIiwidG9Mb3dlckNhc2UiLCJzbGljZSIsImhvc3QiLCJldmVudFR5cGUiLCJvcHRpb25zIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiYnViYmxlcyIsIm1hcCIsIldlYWtNYXAiLCJnZXQiLCJrZXkiLCJkZWZhdWx0VmFsdWUiLCJoYXMiLCJ1bmRlZmluZWQiLCJzZXQiLCJ2YWx1ZSIsImZuIiwiZmFsbGJhY2siLCJzaGFkeSIsIndpbmRvdyIsIlNoYWR5Q1NTIiwibmF0aXZlU2hhZG93IiwiSVNfSUUiLCJnbG9iYWwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O1FBQWdCQSxXLEdBQUFBLFc7UUFJQUMsWSxHQUFBQSxZO1FBS0FDLFEsR0FBQUEsUTtRQUlBQyxTLEdBQUFBLFM7UUFzQkFDLFEsR0FBQUEsUTtBQW5DVCxTQUFTSixXQUFULENBQXFCSyxHQUFyQixFQUEwQjtBQUMvQixTQUFPQSxJQUFJQyxPQUFKLENBQVksaUJBQVosRUFBK0IsT0FBL0IsRUFBd0NDLFdBQXhDLEVBQVA7QUFDRDs7QUFFTSxTQUFTTixZQUFULENBQXNCSSxHQUF0QixFQUEyQjtBQUNoQ0EsUUFBTUEsSUFBSSxDQUFKLEVBQU9FLFdBQVAsS0FBdUJGLElBQUlHLEtBQUosQ0FBVSxDQUFWLENBQTdCO0FBQ0EsU0FBT1IsWUFBWUssR0FBWixDQUFQO0FBQ0Q7O0FBRU0sU0FBU0gsUUFBVCxDQUFrQk8sSUFBbEIsRUFBd0JDLFNBQXhCLEVBQWlEO0FBQUEsTUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN0REYsT0FBS0csYUFBTCxDQUFtQixJQUFJQyxXQUFKLENBQWdCSCxTQUFoQixhQUE2QkksU0FBUyxLQUF0QyxJQUFnREgsT0FBaEQsRUFBbkI7QUFDRDs7QUFFTSxTQUFTUixTQUFULEdBQXFCO0FBQzFCLE1BQU1ZLE1BQU0sSUFBSUMsT0FBSixFQUFaOztBQUVBLFNBQU87QUFDTEMsT0FESyxlQUNEQyxHQURDLEVBQ0lDLFlBREosRUFDa0I7QUFDckIsVUFBSUosSUFBSUssR0FBSixDQUFRRixHQUFSLENBQUosRUFBa0I7QUFDaEIsZUFBT0gsSUFBSUUsR0FBSixDQUFRQyxHQUFSLENBQVA7QUFDRDs7QUFFRCxVQUFJQyxpQkFBaUJFLFNBQXJCLEVBQWdDO0FBQzlCTixZQUFJTyxHQUFKLENBQVFKLEdBQVIsRUFBYUMsWUFBYjtBQUNEOztBQUVELGFBQU9BLFlBQVA7QUFDRCxLQVhJO0FBWUxHLE9BWkssZUFZREosR0FaQyxFQVlJSyxLQVpKLEVBWVc7QUFDZFIsVUFBSU8sR0FBSixDQUFRSixHQUFSLEVBQWFLLEtBQWI7QUFDQSxhQUFPQSxLQUFQO0FBQ0Q7QUFmSSxHQUFQO0FBaUJEOztBQUVNLFNBQVNuQixRQUFULENBQWtCb0IsRUFBbEIsRUFBc0JDLFFBQXRCLEVBQWdDO0FBQ3JDLE1BQU1DLFFBQVFDLE9BQU9DLFFBQXJCO0FBQ0EsTUFBSUYsU0FBUyxDQUFDQSxNQUFNRyxZQUFwQixFQUFrQztBQUNoQyxXQUFPTCxHQUFHRSxLQUFILENBQVA7QUFDRDs7QUFFRCxTQUFPRCxRQUFQO0FBQ0Q7O0FBRU0sSUFBTUssd0JBQVEsbUJBQW1CQyxNQUFqQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjYW1lbFRvRGFzaChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDEtJDInKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFzY2FsVG9EYXNoKHN0cikge1xuICBzdHIgPSBzdHJbMF0udG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKTtcbiAgcmV0dXJuIGNhbWVsVG9EYXNoKHN0cik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaXNwYXRjaChob3N0LCBldmVudFR5cGUsIG9wdGlvbnMgPSB7fSkge1xuICBob3N0LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KGV2ZW50VHlwZSwgeyBidWJibGVzOiBmYWxzZSwgLi4ub3B0aW9ucyB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNYXAoKSB7XG4gIGNvbnN0IG1hcCA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQoa2V5LCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgIGlmIChtYXAuaGFzKGtleSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcC5nZXQoa2V5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG1hcC5zZXQoa2V5LCBkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgIH0sXG4gICAgc2V0KGtleSwgdmFsdWUpIHtcbiAgICAgIG1hcC5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNoYWR5Q1NTKGZuLCBmYWxsYmFjaykge1xuICBjb25zdCBzaGFkeSA9IHdpbmRvdy5TaGFkeUNTUztcbiAgaWYgKHNoYWR5ICYmICFzaGFkeS5uYXRpdmVTaGFkb3cpIHtcbiAgICByZXR1cm4gZm4oc2hhZHkpO1xuICB9XG5cbiAgcmV0dXJuIGZhbGxiYWNrO1xufVxuXG5leHBvcnQgY29uc3QgSVNfSUUgPSAnQWN0aXZlWE9iamVjdCcgaW4gZ2xvYmFsO1xuIl19
{
"name": "hybrids",
"version": "1.0.1",
"version": "1.0.2",
"description": "UI library for creating Web Components",

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

@@ -39,18 +39,23 @@ <h1 align="center">

- [Key Features](#key-features)
- [Contents](#contents)
- [Installation](#installation)
- [Browser Support](#browser-support)
- [Custom Element Definition](#custom-element-definition)
- [`define`](#definetagname-string-descriptors-object-wrapper)
- [`define(tagName: string, descriptors: Object): Wrapper`](#definetagname--string--descriptors--object--wrapper)
- [Hybrid Property Descriptor](#hybrid-property-descriptor)
- [`get`](#get-host-element-lastvalue-any----)
- [`set`](#set-host-element-value-any-lastvalue-any--)
- [`connect`](#connect-host-element-key-string-invalidate-function----)
- [`get: (host: Element, lastValue: any) => { ... }`](#get--host--element--lastvalue--any)
- [`set: (host: Element, value: any, lastValue: any) => {...}`](#set--host--element--value--any--lastvalue--any)
- [`connect: (host: Element, key: string, invalidate: Function) => { ... }`](#connect--host--element--key--string--invalidate--function)
- [Property Translation](#property-translation)
- [Factories](#factories)
- [`property`](#propertydefaultvalue-any-connect-function-object)
- [`parent`](#parenthybrids-object-object)
- [`children`](#childrenhybrids-object-options-object-object)
- [`render`](#renderfn-function-object)
- [`property(defaultValue: any, [connect: Function]): Object`](#propertydefaultvalue--any--connect--function--object)
- [Transform Matching Types](#transform-matching-types)
- [Attribute Fallback](#attribute-fallback)
- [Tree Traversing](#tree-traversing)
- [`parent(hybrids: Object): Object`](#parenthybrids--object--object)
- [`children(hybrids: Object, [options: Object]): Object`](#childrenhybrids--object--options--object--object)
- [`render(fn: Function): Object`](#renderfn--function--object)
- [Templates](#templates)
- [Properties & Attributes](#properties--attributes)
- [Properties & Attributes](#properties-attributes)
- [Class](#class)

@@ -60,3 +65,3 @@ - [Style](#style)

- [Event Listeners](#event-listeners)
- [Contents](#contents-1)
- [Contents](#contents)
- [Conditions](#conditions)

@@ -66,5 +71,8 @@ - [Nested Templates](#nested-templates)

- [Promises](#promises)
- [`html.resolve(promise, placeholder, delay = 200)`](#htmlresolvepromise--placeholder--delay-200)
- [Resolving Dependencies](#resolving-dependencies)
- [`` html`...`.define(map: Object) ``](#htmldefinemap--object)
- [Limitations](#limitations)
- [Utils](#utils)
- [`dispatch`](#dispatchhost-element-eventtype-string-options)
- [`dispatch(host: Element, eventType: string, options)`](#dispatchhost--element--eventtype--string--options)
- [License](#license)

@@ -98,4 +106,6 @@

You should be aware of some limitations of the Web Components shims. Read more at the project [documentation](https://github.com/webcomponents/webcomponentsjs#known-issues).
Web components shims have some limitations. Especially, [`webcomponents/shadycss`](https://github.com/webcomponents/shadycss) approximates CSS scoping and CSS custom properties inheritance. Read more on the [known issues](https://github.com/webcomponents/webcomponentsjs#known-issues) and [custom properties shim limitations](https://www.polymer-project.org/3.0/docs/devguide/custom-css-properties#custom-properties-shim-limitations) pages.
> The library calls shims if they are needed, so direct use is not required.
## Custom Element Definition

@@ -546,2 +556,37 @@

### Limitations
`<template>` element with expressions is not supported:
```javascript
// breaks template
html`
<custom-element>
<template>
<div class="${myClass}"></div>
</template>
<div>${content}</div>
</custom-element>
`;
```
```javascript
// works fine
html`
<custom-element>
<template>
<div class="my-static-class"></div>
</template>
<div>${content}</div>
</custom-element>
`;
```
`<table>`, `<tr>`, `<thead>`, `<tbody>`, `<tfoot>` and `<colgroup>` elements with expressions should not have additional text other than whitespace:
```javascript
// breaks template
html`<tr>${cellOne} ${cellTwo} some text</tr>`;
```
```javascript
// works fine
html`<tr>${cellOne} ${cellTwo}</tr>`;
```
## Utils

@@ -560,4 +605,21 @@

```javascript
import { html, dispatch } from 'hybrids';
function change(host) {
host.value += 1;
// Trigger not bubbling `change` custom event
dispatch(host, 'change');
}
const MyElement = {
value: 0,
render: ({ value }) => html`
<button onclick="${change}">You clicked me ${value} times!</button>
`,
};
```
## License
`hybrids` is released under the [MIT License](LICENSE.md).

@@ -47,3 +47,2 @@ const entries = new WeakMap();

entry.state += 1;
entry.value = undefined;
} else if (entry.checksum !== undefined && entry.checksum === calculateChecksum(entry)) {

@@ -89,3 +88,3 @@ return entry.value;

export function invalidate(target, key) {
export function invalidate(target, key, clearValue) {
if (context) {

@@ -97,3 +96,7 @@ context = null;

const entry = getEntry(target, key);
entry.invalid = entry.state;
if (clearValue) {
entry.value = undefined;
}
}

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

import property from './property';

@@ -72,3 +71,3 @@ import render from './render';

Object.keys(node.constructor.hybrids).forEach((key) => {
cache.invalidate(node, key);
cache.invalidate(node, key, true);
});

@@ -75,0 +74,0 @@

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

import { createMap, IS_IE } from '../utils';
import { createMap, shadyCSS, IS_IE } from '../utils';

@@ -171,20 +171,13 @@ import resolveStyleList from './style';

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
const PLACEHOLDER = `{{h-${Date.now()}}}`;
const PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
const ATTR_PREFIX = `--${Date.now()}--`;
const ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
function createWalker(node) {
return document.createTreeWalker(
node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
null,
false,
);
}
const preparedTemplates = new WeakMap();
function applyShadyCSS(template, tagName) {
if (tagName && typeof window.ShadyCSS === 'object') {
if (!tagName) return template;
return shadyCSS((shady) => {
let map = preparedTemplates.get(template);

@@ -204,19 +197,26 @@ if (!map) {

window.ShadyCSS.prepareTemplate(clone, tagName.toLowerCase());
const styles = clone.content.querySelectorAll('style');
Array.from(styles).forEach((style) => {
const count = style.childNodes.length + 1;
for (let i = 0; i < count; i += 1) {
style.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), style);
}
});
shady.prepareTemplate(clone, tagName.toLowerCase());
}
return clone;
}
return template;
}, template);
}
const PLACEHOLDER = `{{h-${Date.now()}}}`;
const PLACEHOLDER_REGEXP = new RegExp(PLACEHOLDER, 'g');
const ATTR_PREFIX = `--${Date.now()}--`;
const ATTR_REGEXP = new RegExp(ATTR_PREFIX, 'g');
export function createSignature(parts) {
const signature = parts.join(PLACEHOLDER);
const signature = parts.reduce((acc, part, index) => {
if (index === 0) {
return part;
} else if (parts.slice(index).join('').match(/\s*<\/\s*(table|tr|thead|tbody|tfoot|colgroup)>/)) {
return `${acc}<!--${PLACEHOLDER}-->${part}`;
}
return acc + PLACEHOLDER + part;
}, '');

@@ -233,2 +233,29 @@ if (IS_IE) {

function getPropertyName(string) {
return string.replace(/\s*=\s*['"]*$/g, '').split(' ').pop();
}
function createWalker(node) {
return document.createTreeWalker(
node,
// eslint-disable-next-line no-bitwise
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT,
null,
false,
);
}
function replaceComments(fragment) {
const iterator = document.createNodeIterator(fragment, NodeFilter.SHOW_COMMENT, null, false);
let node;
// eslint-disable-next-line no-cond-assign
while (node = iterator.nextNode()) {
if (node.textContent === PLACEHOLDER) {
node.parentNode.insertBefore(document.createTextNode(PLACEHOLDER), node);
node.parentNode.removeChild(node);
}
}
}
const container = document.createElement('div');
export function compile(signature, rawParts, isSVG) {

@@ -238,3 +265,9 @@ const template = document.createElement('template');

template.innerHTML = signature;
if (IS_IE) {
template.innerHTML = signature;
} else {
container.innerHTML = `<template>${signature}</template>`;
template.content.appendChild(container.children[0].content);
}
if (isSVG) {

@@ -246,2 +279,4 @@ const svgRoot = template.content.firstChild;

replaceComments(template.content);
const compileWalker = createWalker(template.content);

@@ -325,6 +360,6 @@ let compileIndex = 0;

if (IS_IE && node.nodeType === Node.TEXT_NODE) {
if (node.nodeType === Node.TEXT_NODE) {
if (node.textContent === PLACEHOLDER) {
node.textContent = '';
} else {
} else if (IS_IE) {
node.textContent = node.textContent.replace(ATTR_REGEXP, '');

@@ -331,0 +366,0 @@ }

@@ -0,32 +1,33 @@

import { shadyCSS } from './utils';
const map = new WeakMap();
const cache = new WeakMap();
const FPS_THRESHOLD = 1000 / 60; // 60 FPS ~ 16,67ms time window
let queue = [];
const queue = new Set();
const cache = new WeakMap();
function update(iterator, startTime) {
export function update(index = 0, startTime = 0) {
if (startTime && (performance.now() - startTime > FPS_THRESHOLD)) {
requestAnimationFrame(() => update(iterator));
requestAnimationFrame(() => update(index));
} else {
const { done, value: target } = iterator.next();
const target = queue[index];
const nextTime = performance.now();
const next = () => update(iterator, nextTime);
const next = () => update(index + 1, nextTime);
if (done) {
queue.clear();
if (!target) {
shadyCSS(shady => queue.forEach(t => shady.styleSubtree(t)));
queue = [];
} else if (map.has(target)) {
const key = map.get(target);
const prevFn = cache.get(target);
let nextFn;
const prevUpdate = cache.get(target);
let nextUpdate;
try {
nextFn = target[key];
nextUpdate = target[key];
if (nextFn !== prevFn) {
cache.set(target, nextFn);
Promise.resolve().then(() => {
if (nextUpdate !== prevUpdate) {
cache.set(target, nextUpdate);
return Promise.resolve().then(() => {
try {
nextFn();
nextUpdate();
if (!prevUpdate) shadyCSS(shady => shady.styleElement(target));
next();

@@ -38,5 +39,4 @@ } catch (e) {

});
} else {
next();
}
next();
} catch (e) {

@@ -50,2 +50,3 @@ next();

}
return null;
}

@@ -57,6 +58,8 @@

if (map.has(target)) {
if (!queue.size) {
requestAnimationFrame(() => update(queue.values()));
if (!queue[0]) {
requestAnimationFrame((() => update()));
}
queue.add(target);
if (queue.indexOf(target) === -1) {
queue.push(target);
}
}

@@ -63,0 +66,0 @@ });

@@ -36,2 +36,11 @@ export function camelToDash(str) {

export function shadyCSS(fn, fallback) {
const shady = window.ShadyCSS;
if (shady && !shady.nativeShadow) {
return fn(shady);
}
return fallback;
}
export const IS_IE = 'ActiveXObject' in global;

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