var lsFeetbackButton=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=17)}([function(e,t,n){"use strict";n.d(t,"h",(function(){return G})),n.d(t,"d",(function(){return $})),n.d(t,"e",(function(){return ee})),n.d(t,"g",(function(){return te})),n.d(t,"f",(function(){return ne})),n.d(t,"c",(function(){return re})),n.d(t,"a",(function(){return g}));var r,o,i,a,l,s,c,u={},p=[],f=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function d(e,t){for(var n in t)e[n]=t[n];return e}function h(e){var t=e.parentNode;t&&t.removeChild(e)}function g(e,t,n){var o,i,a,l={};for(a in t)"key"==a?o=t[a]:"ref"==a?i=t[a]:l[a]=t[a];if(arguments.length>2&&(l.children=arguments.length>3?r.call(arguments,2):n),"function"==typeof e&&null!=e.defaultProps)for(a in e.defaultProps)void 0===l[a]&&(l[a]=e.defaultProps[a]);return m(e,l,o,i,null)}function m(e,t,n,r,a){var l={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==a?++i:a};return null==a&&null!=o.vnode&&o.vnode(l),l}function v(e){return e.children}function y(e,t){this.props=e,this.context=t}function b(e,t){if(null==t)return e.__?b(e.__,e.__.__k.indexOf(e)+1):null;for(var n;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e)return n.__e;return"function"==typeof e.type?b(e):null}function A(e){var t,n;if(null!=(e=e.__)&&null!=e.__c){for(e.__e=e.__c.base=null,t=0;t<e.__k.length;t++)if(null!=(n=e.__k[t])&&null!=n.__e){e.__e=e.__c.base=n.__e;break}return A(e)}}function w(e){(!e.__d&&(e.__d=!0)&&a.push(e)&&!E.__r++||s!==o.debounceRendering)&&((s=o.debounceRendering)||l)(E)}function E(){for(var e;E.__r=a.length;)e=a.sort((function(e,t){return e.__v.__b-t.__v.__b})),a=[],e.some((function(e){var t,n,r,o,i,a;e.__d&&(i=(o=(t=e).__v).__e,(a=t.__P)&&(n=[],(r=d({},o)).__v=o.__v+1,I(a,o,r,t.__n,void 0!==a.ownerSVGElement,null!=o.__h?[i]:null,n,null==i?b(o):i,o.__h),B(n,o),o.__e!=i&&A(o)))}))}function C(e,t,n,r,o,i,a,l,s,c){var f,d,h,g,y,A,w,E=r&&r.__k||p,C=E.length;for(n.__k=[],f=0;f<t.length;f++)if(null!=(g=n.__k[f]=null==(g=t[f])||"boolean"==typeof g?null:"string"==typeof g||"number"==typeof g||"bigint"==typeof g?m(null,g,null,null,g):Array.isArray(g)?m(v,{children:g},null,null,null):g.__b>0?m(g.type,g.props,g.key,null,g.__v):g)){if(g.__=n,g.__b=n.__b+1,null===(h=E[f])||h&&g.key==h.key&&g.type===h.type)E[f]=void 0;else for(d=0;d<C;d++){if((h=E[d])&&g.key==h.key&&g.type===h.type){E[d]=void 0;break}h=null}I(e,g,h=h||u,o,i,a,l,s,c),y=g.__e,(d=g.ref)&&h.ref!=d&&(w||(w=[]),h.ref&&w.push(h.ref,null,g),w.push(d,g.__c||y,g)),null!=y?(null==A&&(A=y),"function"==typeof g.type&&g.__k===h.__k?g.__d=s=x(g,s,e):s=S(e,g,h,E,y,s),"function"==typeof n.type&&(n.__d=s)):s&&h.__e==s&&s.parentNode!=e&&(s=b(h))}for(n.__e=A,f=C;f--;)null!=E[f]&&("function"==typeof n.type&&null!=E[f].__e&&E[f].__e==n.__d&&(n.__d=b(r,f+1)),D(E[f],E[f]));if(w)for(f=0;f<w.length;f++)j(w[f],w[++f],w[++f])}function x(e,t,n){for(var r,o=e.__k,i=0;o&&i<o.length;i++)(r=o[i])&&(r.__=e,t="function"==typeof r.type?x(r,t,n):S(n,r,r,o,r.__e,t));return t}function k(e,t){return t=t||[],null==e||"boolean"==typeof e||(Array.isArray(e)?e.some((function(e){k(e,t)})):t.push(e)),t}function S(e,t,n,r,o,i){var a,l,s;if(void 0!==t.__d)a=t.__d,t.__d=void 0;else if(null==n||o!=i||null==o.parentNode)e:if(null==i||i.parentNode!==e)e.appendChild(o),a=null;else{for(l=i,s=0;(l=l.nextSibling)&&s<r.length;s+=2)if(l==o)break e;e.insertBefore(o,i),a=i}return void 0!==a?a:o.nextSibling}function T(e,t,n){"-"===t[0]?e.setProperty(t,n):e[t]=null==n?"":"number"!=typeof n||f.test(t)?n:n+"px"}function O(e,t,n,r,o){var i;e:if("style"===t)if("string"==typeof n)e.style.cssText=n;else{if("string"==typeof r&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||T(e.style,t,"");if(n)for(t in n)r&&n[t]===r[t]||T(e.style,t,n[t])}else if("o"===t[0]&&"n"===t[1])i=t!==(t=t.replace(/Capture$/,"")),t=t.toLowerCase()in e?t.toLowerCase().slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r||e.addEventListener(t,i?_:P,i):e.removeEventListener(t,i?_:P,i);else if("dangerouslySetInnerHTML"!==t){if(o)t=t.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if("href"!==t&&"list"!==t&&"form"!==t&&"tabIndex"!==t&&"download"!==t&&t in e)try{e[t]=null==n?"":n;break e}catch(e){}"function"==typeof n||(null!=n&&(!1!==n||"a"===t[0]&&"r"===t[1])?e.setAttribute(t,n):e.removeAttribute(t))}}function P(e){this.l[e.type+!1](o.event?o.event(e):e)}function _(e){this.l[e.type+!0](o.event?o.event(e):e)}function I(e,t,n,r,i,a,l,s,c){var u,p,f,h,g,m,b,A,w,E,x,k=t.type;if(void 0!==t.constructor)return null;null!=n.__h&&(c=n.__h,s=t.__e=n.__e,t.__h=null,a=[s]),(u=o.__b)&&u(t);try{e:if("function"==typeof k){if(A=t.props,w=(u=k.contextType)&&r[u.__c],E=u?w?w.props.value:u.__:r,n.__c?b=(p=t.__c=n.__c).__=p.__E:("prototype"in k&&k.prototype.render?t.__c=p=new k(A,E):(t.__c=p=new y(A,E),p.constructor=k,p.render=L),w&&w.sub(p),p.props=A,p.state||(p.state={}),p.context=E,p.__n=r,f=p.__d=!0,p.__h=[]),null==p.__s&&(p.__s=p.state),null!=k.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=d({},p.__s)),d(p.__s,k.getDerivedStateFromProps(A,p.__s))),h=p.props,g=p.state,f)null==k.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==k.getDerivedStateFromProps&&A!==h&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(A,E),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(A,p.__s,E)||t.__v===n.__v){p.props=A,p.state=p.__s,t.__v!==n.__v&&(p.__d=!1),p.__v=t,t.__e=n.__e,t.__k=n.__k,t.__k.forEach((function(e){e&&(e.__=t)})),p.__h.length&&l.push(p);break e}null!=p.componentWillUpdate&&p.componentWillUpdate(A,p.__s,E),null!=p.componentDidUpdate&&p.__h.push((function(){p.componentDidUpdate(h,g,m)}))}p.context=E,p.props=A,p.state=p.__s,(u=o.__r)&&u(t),p.__d=!1,p.__v=t,p.__P=e,u=p.render(p.props,p.state,p.context),p.state=p.__s,null!=p.getChildContext&&(r=d(d({},r),p.getChildContext())),f||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(h,g)),x=null!=u&&u.type===v&&null==u.key?u.props.children:u,C(e,Array.isArray(x)?x:[x],t,n,r,i,a,l,s,c),p.base=t.__e,t.__h=null,p.__h.length&&l.push(p),b&&(p.__E=p.__=null),p.__e=!1}else null==a&&t.__v===n.__v?(t.__k=n.__k,t.__e=n.__e):t.__e=R(n.__e,t,n,r,i,a,l,c);(u=o.diffed)&&u(t)}catch(e){t.__v=null,(c||null!=a)&&(t.__e=s,t.__h=!!c,a[a.indexOf(s)]=null),o.__e(e,t,n)}}function B(e,t){o.__c&&o.__c(t,e),e.some((function(t){try{e=t.__h,t.__h=[],e.some((function(e){e.call(t)}))}catch(e){o.__e(e,t.__v)}}))}function R(e,t,n,o,i,a,l,s){var c,p,f,d=n.props,g=t.props,m=t.type,v=0;if("svg"===m&&(i=!0),null!=a)for(;v<a.length;v++)if((c=a[v])&&"setAttribute"in c==!!m&&(m?c.localName===m:3===c.nodeType)){e=c,a[v]=null;break}if(null==e){if(null===m)return document.createTextNode(g);e=i?document.createElementNS("http://www.w3.org/2000/svg",m):document.createElement(m,g.is&&g),a=null,s=!1}if(null===m)d===g||s&&e.data===g||(e.data=g);else{if(a=a&&r.call(e.childNodes),p=(d=n.props||u).dangerouslySetInnerHTML,f=g.dangerouslySetInnerHTML,!s){if(null!=a)for(d={},v=0;v<e.attributes.length;v++)d[e.attributes[v].name]=e.attributes[v].value;(f||p)&&(f&&(p&&f.__html==p.__html||f.__html===e.innerHTML)||(e.innerHTML=f&&f.__html||""))}if(function(e,t,n,r,o){var i;for(i in n)"children"===i||"key"===i||i in t||O(e,i,null,n[i],r);for(i in t)o&&"function"!=typeof t[i]||"children"===i||"key"===i||"value"===i||"checked"===i||n[i]===t[i]||O(e,i,t[i],n[i],r)}(e,g,d,i,s),f)t.__k=[];else if(v=t.props.children,C(e,Array.isArray(v)?v:[v],t,n,o,i&&"foreignObject"!==m,a,l,a?a[0]:n.__k&&b(n,0),s),null!=a)for(v=a.length;v--;)null!=a[v]&&h(a[v]);s||("value"in g&&void 0!==(v=g.value)&&(v!==e.value||"progress"===m&&!v||"option"===m&&v!==d.value)&&O(e,"value",v,d.value,!1),"checked"in g&&void 0!==(v=g.checked)&&v!==e.checked&&O(e,"checked",v,d.checked,!1))}return e}function j(e,t,n){try{"function"==typeof e?e(t):e.current=t}catch(e){o.__e(e,n)}}function D(e,t,n){var r,i;if(o.unmount&&o.unmount(e),(r=e.ref)&&(r.current&&r.current!==e.__e||j(r,null,t)),null!=(r=e.__c)){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(e){o.__e(e,t)}r.base=r.__P=null}if(r=e.__k)for(i=0;i<r.length;i++)r[i]&&D(r[i],t,"function"!=typeof e.type);n||null==e.__e||h(e.__e),e.__e=e.__d=void 0}function L(e,t,n){return this.constructor(e,n)}function M(e,t,n){var i,a,l;o.__&&o.__(e,t),a=(i="function"==typeof n)?null:n&&n.__k||t.__k,l=[],I(t,e=(!i&&n||t).__k=g(v,null,[e]),a||u,u,void 0!==t.ownerSVGElement,!i&&n?[n]:a?null:t.firstChild?r.call(t.childNodes):null,l,!i&&n?n:a?a.__e:t.firstChild,i),B(l,e)}function N(e,t){M(e,t,N)}function H(e,t,n){var o,i,a,l=d({},e.props);for(a in t)"key"==a?o=t[a]:"ref"==a?i=t[a]:l[a]=t[a];return arguments.length>2&&(l.children=arguments.length>3?r.call(arguments,2):n),m(e.type,l,o||e.key,i||e.ref,null)}r=p.slice,o={__e:function(e,t){for(var n,r,o;t=t.__;)if((n=t.__c)&&!n.__)try{if((r=n.constructor)&&null!=r.getDerivedStateFromError&&(n.setState(r.getDerivedStateFromError(e)),o=n.__d),null!=n.componentDidCatch&&(n.componentDidCatch(e),o=n.__d),o)return n.__E=n}catch(t){e=t}throw e}},i=0,y.prototype.setState=function(e,t){var n;n=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),"function"==typeof e&&(e=e(d({},n),this.props)),e&&d(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),w(this))},y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),w(this))},y.prototype.render=v,a=[],l="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,E.__r=0,c=0;var F,Q,Y,z=0,U=[],W=o.__b,J=o.__r,V=o.diffed,q=o.__c,K=o.unmount;function Z(e,t){o.__h&&o.__h(Q,e,z||t),z=0;var n=Q.__H||(Q.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function G(e){return z=1,X(ce,e)}function X(e,t,n){var r=Z(F++,2);return r.t=e,r.__c||(r.__=[n?n(t):ce(void 0,t),function(e){var t=r.t(r.__[0],e);r.__[0]!==t&&(r.__=[t,r.__[1]],r.__c.setState({}))}],r.__c=Q),r.__}function $(e,t){var n=Z(F++,3);!o.__s&&se(n.__H,t)&&(n.__=e,n.__H=t,Q.__H.__h.push(n))}function ee(e,t){var n=Z(F++,4);!o.__s&&se(n.__H,t)&&(n.__=e,n.__H=t,Q.__h.push(n))}function te(e){return z=5,ne((function(){return{current:e}}),[])}function ne(e,t){var n=Z(F++,7);return se(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function re(e){var t=Q.context[e.__c],n=Z(F++,9);return n.c=e,t?(null==n.__&&(n.__=!0,t.sub(Q)),t.props.value):e.__}function oe(){for(var e;e=U.shift();)if(e.__P)try{e.__H.__h.forEach(ae),e.__H.__h.forEach(le),e.__H.__h=[]}catch(t){e.__H.__h=[],o.__e(t,e.__v)}}o.__b=function(e){Q=null,W&&W(e)},o.__r=function(e){J&&J(e),F=0;var t=(Q=e.__c).__H;t&&(t.__h.forEach(ae),t.__h.forEach(le),t.__h=[])},o.diffed=function(e){V&&V(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==U.push(t)&&Y===o.requestAnimationFrame||((Y=o.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),ie&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);ie&&(t=requestAnimationFrame(n))})(oe)),Q=null},o.__c=function(e,t){t.some((function(e){try{e.__h.forEach(ae),e.__h=e.__h.filter((function(e){return!e.__||le(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],o.__e(n,e.__v)}})),q&&q(e,t)},o.unmount=function(e){K&&K(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.forEach((function(e){try{ae(e)}catch(e){t=e}})),t&&o.__e(t,n.__v))};var ie="function"==typeof requestAnimationFrame;function ae(e){var t=Q,n=e.__c;"function"==typeof n&&(e.__c=void 0,n()),Q=t}function le(e){var t=Q;e.__c=e.__(),Q=t}function se(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function ce(e,t){return"function"==typeof t?t(e):t}function ue(e,t){for(var n in t)e[n]=t[n];return e}function pe(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}function fe(e){this.props=e}(fe.prototype=new y).isPureReactComponent=!0,fe.prototype.shouldComponentUpdate=function(e,t){return pe(this.props,e)||pe(this.state,t)};var de=o.__b;o.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),de&&de(e)};var he="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var ge=function(e,t){return null==e?null:k(k(e).map(t))},me={map:ge,forEach:ge,count:function(e){return e?k(e).length:0},only:function(e){var t=k(e);if(1!==t.length)throw"Children.only";return t[0]},toArray:k},ve=o.__e;o.__e=function(e,t,n){if(e.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return null==t.__e&&(t.__e=n.__e,t.__k=n.__k),r.__c(e,t);ve(e,t,n)};var ye=o.unmount;function be(){this.__u=0,this.t=null,this.__b=null}function Ae(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function we(){this.u=null,this.o=null}o.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&!0===e.__h&&(e.type=null),ye&&ye(e)},(be.prototype=new y).__c=function(e,t){var n=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(n);var o=Ae(r.__v),i=!1,a=function(){i||(i=!0,n.__R=null,o?o(l):l())};n.__R=a;var l=function(){if(!--r.__u){if(r.state.__e){var e=r.state.__e;r.__v.__k[0]=function e(t,n,r){return t&&(t.__v=null,t.__k=t.__k&&t.__k.map((function(t){return e(t,n,r)})),t.__c&&t.__c.__P===n&&(t.__e&&r.insertBefore(t.__e,t.__d),t.__c.__e=!0,t.__c.__P=r)),t}(e,e.__c.__P,e.__c.__O)}var t;for(r.setState({__e:r.__b=null});t=r.t.pop();)t.forceUpdate()}},s=!0===t.__h;r.__u++||s||r.setState({__e:r.__b=r.__v.__k[0]}),e.then(a,a)},be.prototype.componentWillUnmount=function(){this.t=[]},be.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=function e(t,n,r){return t&&(t.__c&&t.__c.__H&&(t.__c.__H.__.forEach((function(e){"function"==typeof e.__c&&e.__c()})),t.__c.__H=null),null!=(t=ue({},t)).__c&&(t.__c.__P===r&&(t.__c.__P=n),t.__c=null),t.__k=t.__k&&t.__k.map((function(t){return e(t,n,r)}))),t}(this.__b,n,r.__O=r.__P)}this.__b=null}var o=t.__e&&g(v,null,e.fallback);return o&&(o.__h=null),[g(v,null,t.__e?null:e.children),o]};var Ee=function(e,t,n){if(++n[1]===n[0]&&e.o.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.o.size))for(n=e.u;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.u=n=n[2]}};function Ce(e){return this.getChildContext=function(){return e.context},e.children}function xe(e){var t=this,n=e.i;t.componentWillUnmount=function(){M(null,t.l),t.l=null,t.i=null},t.i&&t.i!==n&&t.componentWillUnmount(),e.__v?(t.l||(t.i=n,t.l={nodeType:1,parentNode:n,childNodes:[],appendChild:function(e){this.childNodes.push(e),t.i.appendChild(e)},insertBefore:function(e,n){this.childNodes.push(e),t.i.appendChild(e)},removeChild:function(e){this.childNodes.splice(this.childNodes.indexOf(e)>>>1,1),t.i.removeChild(e)}}),M(g(Ce,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}(we.prototype=new y).__e=function(e){var t=this,n=Ae(t.__v),r=t.o.get(e);return r[0]++,function(o){var i=function(){t.props.revealOrder?(r.push(o),Ee(t,e,r)):o()};n?n(i):i()}},we.prototype.render=function(e){this.u=null,this.o=new Map;var t=k(e.children);e.revealOrder&&"b"===e.revealOrder[0]&&t.reverse();for(var n=t.length;n--;)this.o.set(t[n],this.u=[1,0,this.u]);return e.children},we.prototype.componentDidUpdate=we.prototype.componentDidMount=function(){var e=this;this.o.forEach((function(t,n){Ee(e,n,t)}))};var ke="undefined"!=typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103,Se=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Te="undefined"!=typeof document,Oe=function(e){return("undefined"!=typeof Symbol&&"symbol"==typeof Symbol()?/fil|che|rad/i:/fil|che|ra/i).test(e)};y.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach((function(e){Object.defineProperty(y.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})}));var Pe=o.event;function _e(){}function Ie(){return this.cancelBubble}function Be(){return this.defaultPrevented}o.event=function(e){return Pe&&(e=Pe(e)),e.persist=_e,e.isPropagationStopped=Ie,e.isDefaultPrevented=Be,e.nativeEvent=e};var Re,je={configurable:!0,get:function(){return this.class}},De=o.vnode;o.vnode=function(e){var t=e.type,n=e.props,r=n;if("string"==typeof t){var o=-1===t.indexOf("-");for(var i in r={},n){var a=n[i];Te&&"children"===i&&"noscript"===t||"value"===i&&"defaultValue"in n&&null==a||("defaultValue"===i&&"value"in n&&null==n.value?i="value":"download"===i&&!0===a?a="":/ondoubleclick/i.test(i)?i="ondblclick":/^onchange(textarea|input)/i.test(i+t)&&!Oe(n.type)?i="oninput":/^onfocus$/i.test(i)?i="onfocusin":/^onblur$/i.test(i)?i="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(i)?i=i.toLowerCase():o&&Se.test(i)?i=i.replace(/[A-Z0-9]/,"-$&").toLowerCase():null===a&&(a=void 0),r[i]=a)}"select"==t&&r.multiple&&Array.isArray(r.value)&&(r.value=k(n.children).forEach((function(e){e.props.selected=-1!=r.value.indexOf(e.props.value)}))),"select"==t&&null!=r.defaultValue&&(r.value=k(n.children).forEach((function(e){e.props.selected=r.multiple?-1!=r.defaultValue.indexOf(e.props.value):r.defaultValue==e.props.value}))),e.props=r,n.class!=n.className&&(je.enumerable="className"in n,null!=n.className&&(r.class=n.className),Object.defineProperty(r,"className",je))}e.$$typeof=ke,De&&De(e)};var Le=o.__r;o.__r=function(e){Le&&Le(e),Re=e.__c};var Me={ReactCurrentDispatcher:{current:{readContext:function(e){return Re.__n[e.__c].props.value}}}};function Ne(e){return!!e&&e.$$typeof===ke}t.b={useState:G,useReducer:X,useEffect:$,useLayoutEffect:ee,useRef:te,useImperativeHandle:function(e,t,n){z=6,ee((function(){"function"==typeof e?e(t()):e&&(e.current=t())}),null==n?n:n.concat(e))},useMemo:ne,useCallback:function(e,t){return z=8,ne((function(){return e}),t)},useContext:re,useDebugValue:function(e,t){o.useDebugValue&&o.useDebugValue(t?t(e):e)},version:"17.0.2",Children:me,render:function(e,t,n){return null==t.__k&&(t.textContent=""),M(e,t),"function"==typeof n&&n(),e?e.__c:null},hydrate:function(e,t,n){return N(e,t),"function"==typeof n&&n(),e?e.__c:null},unmountComponentAtNode:function(e){return!!e.__k&&(M(null,e),!0)},createPortal:function(e,t){return g(xe,{__v:e,i:t})},createElement:g,createContext:function(e,t){var n={__c:t="__cC"+c++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var n,r;return this.getChildContext||(n=[],(r={})[t]=this,this.getChildContext=function(){return r},this.shouldComponentUpdate=function(e){this.props.value!==e.value&&n.some(w)},this.sub=function(e){n.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){n.splice(n.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Provider.__=n.Consumer.contextType=n},createFactory:function(e){return g.bind(null,e)},cloneElement:function(e){return Ne(e)?H.apply(null,arguments):e},createRef:function(){return{current:null}},Fragment:v,isValidElement:Ne,findDOMNode:function(e){return e&&(e.base||1===e.nodeType&&e)||null},Component:y,PureComponent:fe,memo:function(e,t){function n(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:pe(this.props,e)}function r(t){return this.shouldComponentUpdate=n,g(e,t)}return r.displayName="Memo("+(e.displayName||e.name)+")",r.prototype.isReactComponent=!0,r.__f=!0,r},forwardRef:function(e){function t(t,n){var r=ue({},t);return delete r.ref,e(r,(n=t.ref||n)&&("object"!=typeof n||"current"in n)?n:null)}return t.$$typeof=he,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t},flushSync:function(e,t){return e(t)},unstable_batchedUpdates:function(e,t){return e(t)},StrictMode:v,Suspense:be,SuspenseList:we,lazy:function(e){var t,n,r;function o(o){if(t||(t=e()).then((function(e){n=e.default||e}),(function(e){r=e})),r)throw r;if(!n)throw t;return g(n,o)}return o.displayName="Lazy",o.__f=!0,o},__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:Me}},function(e,t,n){"use strict";(function(e){var r=n(3),o=n(0),i=n(7),a=n.n(i),l=n(8),s=n(9),c=n(6),u=n(4),p=n.n(u);function f(){return(f=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}).apply(this,arguments)}var d=function(e,t){for(var n=[e[0]],r=0,o=t.length;r<o;r+=1)n.push(t[r],e[r+1]);return n},h=function(e){return null!==e&&"object"==typeof e&&"[object Object]"===(e.toString?e.toString():Object.prototype.toString.call(e))&&!Object(r.typeOf)(e)},g=Object.freeze([]),m=Object.freeze({});function v(e){return"function"==typeof e}function y(e){return e.displayName||e.name||"Component"}function b(e){return e&&"string"==typeof e.styledComponentId}var A=void 0!==e&&(e.env.REACT_APP_SC_ATTR||e.env.SC_ATTR)||"data-styled",w="undefined"!=typeof window&&"HTMLElement"in window,E=Boolean("boolean"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:void 0!==e&&void 0!==e.env.REACT_APP_SC_DISABLE_SPEEDY&&""!==e.env.REACT_APP_SC_DISABLE_SPEEDY?"false"!==e.env.REACT_APP_SC_DISABLE_SPEEDY&&e.env.REACT_APP_SC_DISABLE_SPEEDY:void 0!==e&&void 0!==e.env.SC_DISABLE_SPEEDY&&""!==e.env.SC_DISABLE_SPEEDY&&("false"!==e.env.SC_DISABLE_SPEEDY&&e.env.SC_DISABLE_SPEEDY));function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];throw new Error("An error occurred. See https://git.io/JUIaE#"+e+" for more information."+(n.length>0?" Args: "+n.join(", "):""))}var x=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n<e;n++)t+=this.groupSizes[n];return t},t.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&C(16,""+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var i=r;i<o;i++)this.groupSizes[i]=0}for(var a=this.indexOfGroup(e+1),l=0,s=t.length;l<s;l++)this.tag.insertRule(a,t[l])&&(this.groupSizes[e]++,a++)},t.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],n=this.indexOfGroup(e),r=n+t;this.groupSizes[e]=0;for(var o=n;o<r;o++)this.tag.deleteRule(n)}},t.getGroup=function(e){var t="";if(e>=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,i=r;i<o;i++)t+=this.tag.getRule(i)+"/*!sc*/\n";return t},e}(),k=new Map,S=new Map,T=1,O=function(e){if(k.has(e))return k.get(e);for(;S.has(T);)T++;var t=T++;return k.set(e,t),S.set(t,e),t},P=function(e){return S.get(e)},_=function(e,t){t>=T&&(T=t+1),k.set(e,t),S.set(t,e)},I="style["+A+'][data-styled-version="5.3.3"]',B=new RegExp("^"+A+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),R=function(e,t,n){for(var r,o=n.split(","),i=0,a=o.length;i<a;i++)(r=o[i])&&e.registerName(t,r)},j=function(e,t){for(var n=(t.textContent||"").split("/*!sc*/\n"),r=[],o=0,i=n.length;o<i;o++){var a=n[o].trim();if(a){var l=a.match(B);if(l){var s=0|parseInt(l[1],10),c=l[2];0!==s&&(_(c,s),R(e,c,l[3]),e.getTag().insertRules(s,r)),r.length=0}else r.push(a)}}},D=function(){return"undefined"!=typeof window&&void 0!==window.__webpack_nonce__?window.__webpack_nonce__:null},L=function(e){var t=document.head,n=e||t,r=document.createElement("style"),o=function(e){for(var t=e.childNodes,n=t.length;n>=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(A))return r}}(n),i=void 0!==o?o.nextSibling:null;r.setAttribute(A,"active"),r.setAttribute("data-styled-version","5.3.3");var a=D();return a&&r.setAttribute("nonce",a),n.insertBefore(r,i),r},M=function(){function e(e){var t=this.element=L(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n<r;n++){var o=t[n];if(o.ownerNode===e)return o}C(17)}(t),this.length=0}var t=e.prototype;return t.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},t.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},t.getRule=function(e){var t=this.sheet.cssRules[e];return void 0!==t&&"string"==typeof t.cssText?t.cssText:""},e}(),N=function(){function e(e){var t=this.element=L(e);this.nodes=t.childNodes,this.length=0}var t=e.prototype;return t.insertRule=function(e,t){if(e<=this.length&&e>=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e<this.length?this.nodes[e].textContent:""},e}(),H=function(){function e(e){this.rules=[],this.length=0}var t=e.prototype;return t.insertRule=function(e,t){return e<=this.length&&(this.rules.splice(e,0,t),this.length++,!0)},t.deleteRule=function(e){this.rules.splice(e,1),this.length--},t.getRule=function(e){return e<this.length?this.rules[e]:""},e}(),F=w,Q={isServer:!w,useCSSOMInjection:!E},Y=function(){function e(e,t,n){void 0===e&&(e=m),void 0===t&&(t={}),this.options=f({},Q,{},e),this.gs=t,this.names=new Map(n),this.server=!!e.isServer,!this.server&&w&&F&&(F=!1,function(e){for(var t=document.querySelectorAll(I),n=0,r=t.length;n<r;n++){var o=t[n];o&&"active"!==o.getAttribute(A)&&(j(e,o),o.parentNode&&o.parentNode.removeChild(o))}}(this))}e.registerId=function(e){return O(e)};var t=e.prototype;return t.reconstructWithOptions=function(t,n){return void 0===n&&(n=!0),new e(f({},this.options,{},t),this.gs,n&&this.names||void 0)},t.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},t.getTag=function(){return this.tag||(this.tag=(n=(t=this.options).isServer,r=t.useCSSOMInjection,o=t.target,e=n?new H(o):r?new M(o):new N(o),new x(e)));var e,t,n,r,o},t.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},t.registerName=function(e,t){if(O(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},t.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(O(e),n)},t.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},t.clearRules=function(e){this.getTag().clearGroup(O(e)),this.clearNames(e)},t.clearTag=function(){this.tag=void 0},t.toString=function(){return function(e){for(var t=e.getTag(),n=t.length,r="",o=0;o<n;o++){var i=P(o);if(void 0!==i){var a=e.names.get(i),l=t.getGroup(o);if(a&&l&&a.size){var s=A+".g"+o+'[id="'+i+'"]',c="";void 0!==a&&a.forEach((function(e){e.length>0&&(c+=e+",")})),r+=""+l+s+'{content:"'+c+'"}/*!sc*/\n'}}}return r}(this)},e}(),z=/(a)(d)/gi,U=function(e){return String.fromCharCode(e+(e>25?39:97))};function W(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=U(t%52)+n;return(U(t%52)+n).replace(z,"$1-$2")}var J=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},V=function(e){return J(5381,e)};function q(e){for(var t=0;t<e.length;t+=1){var n=e[t];if(v(n)&&!b(n))return!1}return!0}var K=V("5.3.3"),Z=function(){function e(e,t,n){this.rules=e,this.staticRulesId="",this.isStatic=(void 0===n||n.isStatic)&&q(e),this.componentId=t,this.baseHash=J(K,t),this.baseStyle=n,Y.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,n){var r=this.componentId,o=[];if(this.baseStyle&&o.push(this.baseStyle.generateAndInjectStyles(e,t,n)),this.isStatic&&!n.hash)if(this.staticRulesId&&t.hasNameForId(r,this.staticRulesId))o.push(this.staticRulesId);else{var i=he(this.rules,e,t,n).join(""),a=W(J(this.baseHash,i)>>>0);if(!t.hasNameForId(r,a)){var l=n(i,"."+a,void 0,r);t.insertRules(r,a,l)}o.push(a),this.staticRulesId=a}else{for(var s=this.rules.length,c=J(this.baseHash,n.hash),u="",p=0;p<s;p++){var f=this.rules[p];if("string"==typeof f)u+=f;else if(f){var d=he(f,e,t,n),h=Array.isArray(d)?d.join(""):d;c=J(c,h+p),u+=h}}if(u){var g=W(c>>>0);if(!t.hasNameForId(r,g)){var m=n(u,"."+g,void 0,r);t.insertRules(r,g,m)}o.push(g)}}return o.join(" ")},e}(),G=/^\s*\/\/.*$/gm,X=[":","[",".","#"];function $(e){var t,n,r,o,i=void 0===e?m:e,a=i.options,s=void 0===a?m:a,c=i.plugins,u=void 0===c?g:c,p=new l.a(s),f=[],d=function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(n,r,o,i,a,l,s,c,u,p){switch(n){case 1:if(0===u&&64===r.charCodeAt(0))return e(r+";"),"";break;case 2:if(0===c)return r+"/*|*/";break;case 3:switch(c){case 102:case 112:return e(o[0]+r),"";default:return r+(0===p?"/*|*/":"")}case-2:r.split("/*|*/}").forEach(t)}}}((function(e){f.push(e)})),h=function(e,r,i){return 0===r&&-1!==X.indexOf(i[n.length])||i.match(o)?e:"."+t};function v(e,i,a,l){void 0===l&&(l="&");var s=e.replace(G,""),c=i&&a?a+" "+i+" { "+s+" }":s;return t=l,n=i,r=new RegExp("\\"+n+"\\b","g"),o=new RegExp("(\\"+n+"\\b){2,}"),p(a||!i?"":i,c)}return p.use([].concat(u,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,h))},d,function(e){if(-2===e){var t=f;return f=[],t}}])),v.hash=u.length?u.reduce((function(e,t){return t.name||C(15),J(e,t.name)}),5381).toString():"",v}var ee=o.b.createContext(),te=(ee.Consumer,o.b.createContext()),ne=(te.Consumer,new Y),re=$();function oe(){return Object(o.c)(ee)||ne}function ie(){return Object(o.c)(te)||re}function ae(e){var t=Object(o.h)(e.stylisPlugins),n=t[0],r=t[1],i=oe(),l=Object(o.f)((function(){var t=i;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),s=Object(o.f)((function(){return $({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return Object(o.d)((function(){a()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),o.b.createElement(ee.Provider,{value:l},o.b.createElement(te.Provider,{value:s},e.children))}var le=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=re);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,"@keyframes"))},this.toString=function(){return C(12,String(n.name))},this.name=e,this.id="sc-keyframes-"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=re),this.name+e.hash},e}(),se=/([A-Z])/,ce=/([A-Z])/g,ue=/^ms-/,pe=function(e){return"-"+e.toLowerCase()};function fe(e){return se.test(e)?e.replace(ce,pe).replace(ue,"-ms-"):e}var de=function(e){return null==e||!1===e||""===e};function he(e,t,n,r){if(Array.isArray(e)){for(var o,i=[],a=0,l=e.length;a<l;a+=1)""!==(o=he(e[a],t,n,r))&&(Array.isArray(o)?i.push.apply(i,o):i.push(o));return i}return de(e)?"":b(e)?"."+e.styledComponentId:v(e)?"function"!=typeof(c=e)||c.prototype&&c.prototype.isReactComponent||!t?e:he(e(t),t,n,r):e instanceof le?n?(e.inject(n,r),e.getName(r)):e:h(e)?function e(t,n){var r,o,i=[];for(var a in t)t.hasOwnProperty(a)&&!de(t[a])&&(Array.isArray(t[a])&&t[a].isCss||v(t[a])?i.push(fe(a)+":",t[a],";"):h(t[a])?i.push.apply(i,e(t[a],a)):i.push(fe(a)+": "+(r=a,(null==(o=t[a])||"boolean"==typeof o||""===o?"":"number"!=typeof o||0===o||r in s.a?String(o).trim():o+"px")+";")));return n?[n+" {"].concat(i,["}"]):i}(e):e.toString();var c}var ge=function(e){return Array.isArray(e)&&(e.isCss=!0),e};function me(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return v(e)||h(e)?ge(he(d(g,[e].concat(n)))):0===n.length&&1===e.length&&"string"==typeof e[0]?e:ge(he(d(e,n)))}new Set;var ve=function(e,t,n){return void 0===n&&(n=m),e.theme!==n.theme&&e.theme||t||n.theme},ye=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,be=/(^-|-$)/g;function Ae(e){return e.replace(ye,"-").replace(be,"")}var we=function(e){return W(V(e)>>>0)};function Ee(e){return"string"==typeof e&&!0}var Ce=function(e){return"function"==typeof e||"object"==typeof e&&null!==e&&!Array.isArray(e)},xe=function(e){return"__proto__"!==e&&"constructor"!==e&&"prototype"!==e};function ke(e,t,n){var r=e[n];Ce(t)&&Ce(r)?Se(r,t):e[n]=t}function Se(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];for(var o=0,i=n;o<i.length;o++){var a=i[o];if(Ce(a))for(var l in a)xe(l)&&ke(e,a[l],l)}return e}var Te=o.b.createContext();Te.Consumer;var Oe={};function Pe(e,t,n){var r=b(e),i=!Ee(e),a=t.attrs,l=void 0===a?g:a,s=t.componentId,u=void 0===s?function(e,t){var n="string"!=typeof e?"sc":Ae(e);Oe[n]=(Oe[n]||0)+1;var r=n+"-"+we("5.3.3"+n+Oe[n]);return t?t+"-"+r:r}(t.displayName,t.parentComponentId):s,d=t.displayName,h=void 0===d?function(e){return Ee(e)?"styled."+e:"Styled("+y(e)+")"}(e):d,A=t.displayName&&t.componentId?Ae(t.displayName)+"-"+t.componentId:t.componentId||u,w=r&&e.attrs?Array.prototype.concat(e.attrs,l).filter(Boolean):l,E=t.shouldForwardProp;r&&e.shouldForwardProp&&(E=t.shouldForwardProp?function(n,r,o){return e.shouldForwardProp(n,r,o)&&t.shouldForwardProp(n,r,o)}:e.shouldForwardProp);var C,x=new Z(n,A,r?e.componentStyle:void 0),k=x.isStatic&&0===l.length,S=function(e,t){return function(e,t,n,r){var i=e.attrs,a=e.componentStyle,l=e.defaultProps,s=e.foldedComponentIds,u=e.shouldForwardProp,p=e.styledComponentId,d=e.target,h=function(e,t,n){void 0===e&&(e=m);var r=f({},t,{theme:e}),o={};return n.forEach((function(e){var t,n,i,a=e;for(t in v(a)&&(a=a(r)),a)r[t]=o[t]="className"===t?(n=o[t],i=a[t],n&&i?n+" "+i:n||i):a[t]})),[r,o]}(ve(t,Object(o.c)(Te),l)||m,t,i),g=h[0],y=h[1],b=function(e,t,n,r){var o=oe(),i=ie();return t?e.generateAndInjectStyles(m,o,i):e.generateAndInjectStyles(n,o,i)}(a,r,g),A=n,w=y.$as||t.$as||y.as||t.as||d,E=Ee(w),C=y!==t?f({},t,{},y):t,x={};for(var k in C)"$"!==k[0]&&"as"!==k&&("forwardedAs"===k?x.as=C[k]:(u?u(k,c.a,w):!E||Object(c.a)(k))&&(x[k]=C[k]));return t.style&&y.style!==t.style&&(x.style=f({},t.style,{},y.style)),x.className=Array.prototype.concat(s,p,b!==p?b:null,t.className,y.className).filter(Boolean).join(" "),x.ref=A,Object(o.a)(w,x)}(C,e,t,k)};return S.displayName=h,(C=o.b.forwardRef(S)).attrs=w,C.componentStyle=x,C.displayName=h,C.shouldForwardProp=E,C.foldedComponentIds=r?Array.prototype.concat(e.foldedComponentIds,e.styledComponentId):g,C.styledComponentId=A,C.target=r?e.target:e,C.withComponent=function(e){var r=t.componentId,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(t,["componentId"]),i=r&&r+"-"+(Ee(e)?e:Ae(y(e)));return Pe(e,f({},o,{attrs:w,componentId:i}),n)},Object.defineProperty(C,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?Se({},e.defaultProps,t):t}}),C.toString=function(){return"."+C.styledComponentId},i&&p()(C,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),C}var _e=function(e){return function e(t,n,o){if(void 0===o&&(o=m),!Object(r.isValidElementType)(n))return C(1,String(n));var i=function(){return t(n,o,me.apply(void 0,arguments))};return i.withConfig=function(r){return e(t,n,f({},o,{},r))},i.attrs=function(r){return e(t,n,f({},o,{attrs:Array.prototype.concat(o.attrs,r).filter(Boolean)}))},i}(Pe,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","textPath","tspan"].forEach((function(e){_e[e]=_e(e)}));!function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=q(e),Y.registerId(this.componentId+1)}var t=e.prototype;t.createStyles=function(e,t,n,r){var o=r(he(this.rules,t,n,r).join(""),""),i=this.componentId+e;n.insertRules(i,i,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&Y.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)}}();!function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return"";var n=D();return"<style "+[n&&'nonce="'+n+'"',A+'="true"','data-styled-version="5.3.3"'].filter(Boolean).join(" ")+">"+t+"</style>"},this.getStyleTags=function(){return e.sealed?C(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return C(2);var n=((t={})[A]="",t["data-styled-version"]="5.3.3",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=D();return r&&(n.nonce=r),[o.b.createElement("style",f({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new Y({isServer:!0}),this.sealed=!1}var t=e.prototype;t.collectStyles=function(e){return this.sealed?C(2):o.b.createElement(ae,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return C(3)}}();t.a=_e}).call(this,n(11))},function(e,t,n){e.exports=n(15)()},function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict";var r=n(3),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?a:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=a;var c=Object.defineProperty,u=Object.getOwnPropertyNames,p=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,d=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=d(n);o&&o!==h&&e(t,o,r)}var a=u(n);p&&(a=a.concat(p(n)));for(var l=s(t),g=s(n),m=0;m<a.length;++m){var v=a[m];if(!(i[v]||r&&r[v]||g&&g[v]||l&&l[v])){var y=f(n,v);try{c(t,v,y)}catch(e){}}}}return t}},function(e,t,n){e.exports=n(13)},function(e,t,n){"use strict";var r=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,o=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return r.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));t.a=o},function(e,t){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<i.length;s++){var c=i[s];if(!l(c))return!1;var u=e[c],p=t[c];if(!1===(o=n?n.call(r,u,p,c):void 0)||void 0===o&&u!==p)return!1}return!0}},function(e,t,n){"use strict";t.a=function(e){function t(e,t,r){var o=t.trim().split(h);t=o;var i=o.length,a=e.length;switch(a){case 0:case 1:var l=0;for(e=0===a?"":e[0]+" ";l<i;++l)t[l]=n(e,t[l],r).trim();break;default:var s=l=0;for(t=[];l<i;++l)for(var c=0;c<a;++c)t[s++]=n(e[c]+" ",o[l],r).trim()}return t}function n(e,t,n){var r=t.charCodeAt(0);switch(33>r&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(g,"$1"+e.trim());case 58:return e.trim()+t.replace(g,"$1"+e.trim());default:if(0<1*n&&0<t.indexOf("\f"))return t.replace(g,(58===e.charCodeAt(0)?"":"$1")+e.trim())}return e+t}function r(e,t,n,i){var a=e+";",l=2*t+3*n+4*i;if(944===l){e=a.indexOf(":",9)+1;var s=a.substring(e,a.length-1).trim();return s=a.substring(0,e).trim()+s+";",1===P||2===P&&o(s,1)?"-webkit-"+s+s:s}if(0===P||2===P&&!o(a,1))return a;switch(l){case 1015:return 97===a.charCodeAt(10)?"-webkit-"+a+a:a;case 951:return 116===a.charCodeAt(3)?"-webkit-"+a+a:a;case 963:return 110===a.charCodeAt(5)?"-webkit-"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return"-webkit-"+a+a;case 978:return"-webkit-"+a+"-moz-"+a+a;case 1019:case 983:return"-webkit-"+a+"-moz-"+a+"-ms-"+a+a;case 883:if(45===a.charCodeAt(8))return"-webkit-"+a+a;if(0<a.indexOf("image-set(",11))return a.replace(k,"$1-webkit-$2")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return"-webkit-box-"+a.replace("-grow","")+"-webkit-"+a+"-ms-"+a.replace("grow","positive")+a;case 115:return"-webkit-"+a+"-ms-"+a.replace("shrink","negative")+a;case 98:return"-webkit-"+a+"-ms-"+a.replace("basis","preferred-size")+a}return"-webkit-"+a+"-ms-"+a+a;case 964:return"-webkit-"+a+"-ms-flex-"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return"-webkit-box-pack"+(s=a.substring(a.indexOf(":",15)).replace("flex-","").replace("space-between","justify"))+"-webkit-"+a+"-ms-flex-pack"+s+a;case 1005:return f.test(a)?a.replace(p,":-webkit-")+a.replace(p,":-moz-")+a:a;case 1e3:switch(t=(s=a.substring(13).trim()).indexOf("-")+1,s.charCodeAt(0)+s.charCodeAt(t)){case 226:s=a.replace(b,"tb");break;case 232:s=a.replace(b,"tb-rl");break;case 220:s=a.replace(b,"lr");break;default:return a}return"-webkit-"+a+"-ms-"+s+a;case 1017:if(-1===a.indexOf("sticky",9))break;case 975:switch(t=(a=e).length-10,l=(s=(33===a.charCodeAt(t)?a.substring(0,t):a).substring(e.indexOf(":",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(111>s.charCodeAt(8))break;case 115:a=a.replace(s,"-webkit-"+s)+";"+a;break;case 207:case 102:a=a.replace(s,"-webkit-"+(102<l?"inline-":"")+"box")+";"+a.replace(s,"-webkit-"+s)+";"+a.replace(s,"-ms-"+s+"box")+";"+a}return a+";";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return s=a.replace("-items",""),"-webkit-"+a+"-webkit-box-"+s+"-ms-flex-"+s+a;case 115:return"-webkit-"+a+"-ms-flex-item-"+a.replace(E,"")+a;default:return"-webkit-"+a+"-ms-flex-line-pack"+a.replace("align-content","").replace(E,"")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===x.test(e))return 115===(s=e.substring(e.indexOf(":")+1)).charCodeAt(0)?r(e.replace("stretch","fill-available"),t,n,i).replace(":fill-available",":stretch"):a.replace(s,"-webkit-"+s)+a.replace(s,"-moz-"+s.replace("fill-",""))+a;break;case 962:if(a="-webkit-"+a+(102===a.charCodeAt(5)?"-ms-"+a:"")+a,211===n+i&&105===a.charCodeAt(13)&&0<a.indexOf("transform",10))return a.substring(0,a.indexOf(";",27)+1).replace(d,"$1-webkit-$2")+a}return a}function o(e,t){var n=e.indexOf(1===t?":":"{"),r=e.substring(0,3!==t?n:10);return n=e.substring(n+1,e.length-1),R(2!==t?r:r.replace(C,"$1"),n,t)}function i(e,t){var n=r(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+";"?n.replace(w," or ($1)").substring(4):"("+t+")"}function a(e,t,n,r,o,i,a,l,c,u){for(var p,f=0,d=t;f<B;++f)switch(p=I[f].call(s,e,d,n,r,o,i,a,l,c,u)){case void 0:case!1:case!0:case null:break;default:d=p}if(d!==t)return d}function l(e){return void 0!==(e=e.prefix)&&(R=null,e?"function"!=typeof e?P=1:(P=2,R=e):P=0),l}function s(e,n){var l=e;if(33>l.charCodeAt(0)&&(l=l.trim()),l=[l],0<B){var s=a(-1,n,l,l,T,S,0,0,0,0);void 0!==s&&"string"==typeof s&&(n=s)}var p=function e(n,l,s,p,f){for(var d,h,g,b,w,E=0,C=0,x=0,k=0,I=0,R=0,D=g=d=0,L=0,M=0,N=0,H=0,F=s.length,Q=F-1,Y="",z="",U="",W="";L<F;){if(h=s.charCodeAt(L),L===Q&&0!==C+k+x+E&&(0!==C&&(h=47===C?10:47),k=x=E=0,F++,Q++),0===C+k+x+E){if(L===Q&&(0<M&&(Y=Y.replace(u,"")),0<Y.trim().length)){switch(h){case 32:case 9:case 59:case 13:case 10:break;default:Y+=s.charAt(L)}h=59}switch(h){case 123:for(d=(Y=Y.trim()).charCodeAt(0),g=1,H=++L;L<F;){switch(h=s.charCodeAt(L)){case 123:g++;break;case 125:g--;break;case 47:switch(h=s.charCodeAt(L+1)){case 42:case 47:e:{for(D=L+1;D<Q;++D)switch(s.charCodeAt(D)){case 47:if(42===h&&42===s.charCodeAt(D-1)&&L+2!==D){L=D+1;break e}break;case 10:if(47===h){L=D+1;break e}}L=D}}break;case 91:h++;case 40:h++;case 34:case 39:for(;L++<Q&&s.charCodeAt(L)!==h;);}if(0===g)break;L++}switch(g=s.substring(H,L),0===d&&(d=(Y=Y.replace(c,"").trim()).charCodeAt(0)),d){case 64:switch(0<M&&(Y=Y.replace(u,"")),h=Y.charCodeAt(1)){case 100:case 109:case 115:case 45:M=l;break;default:M=_}if(H=(g=e(l,M,g,h,f+1)).length,0<B&&(w=a(3,g,M=t(_,Y,N),l,T,S,H,h,f,p),Y=M.join(""),void 0!==w&&0===(H=(g=w.trim()).length)&&(h=0,g="")),0<H)switch(h){case 115:Y=Y.replace(A,i);case 100:case 109:case 45:g=Y+"{"+g+"}";break;case 107:g=(Y=Y.replace(m,"$1 $2"))+"{"+g+"}",g=1===P||2===P&&o("@"+g,3)?"@-webkit-"+g+"@"+g:"@"+g;break;default:g=Y+g,112===p&&(z+=g,g="")}else g="";break;default:g=e(l,t(l,Y,N),g,p,f+1)}U+=g,g=N=M=D=d=0,Y="",h=s.charCodeAt(++L);break;case 125:case 59:if(1<(H=(Y=(0<M?Y.replace(u,""):Y).trim()).length))switch(0===D&&(d=Y.charCodeAt(0),45===d||96<d&&123>d)&&(H=(Y=Y.replace(" ",":")).length),0<B&&void 0!==(w=a(1,Y,l,n,T,S,z.length,p,f,p))&&0===(H=(Y=w.trim()).length)&&(Y="\0\0"),d=Y.charCodeAt(0),h=Y.charCodeAt(1),d){case 0:break;case 64:if(105===h||99===h){W+=Y+s.charAt(L);break}default:58!==Y.charCodeAt(H-1)&&(z+=r(Y,d,h,Y.charCodeAt(2)))}N=M=D=d=0,Y="",h=s.charCodeAt(++L)}}switch(h){case 13:case 10:47===C?C=0:0===1+d&&107!==p&&0<Y.length&&(M=1,Y+="\0"),0<B*j&&a(0,Y,l,n,T,S,z.length,p,f,p),S=1,T++;break;case 59:case 125:if(0===C+k+x+E){S++;break}default:switch(S++,b=s.charAt(L),h){case 9:case 32:if(0===k+E+C)switch(I){case 44:case 58:case 9:case 32:b="";break;default:32!==h&&(b=" ")}break;case 0:b="\\0";break;case 12:b="\\f";break;case 11:b="\\v";break;case 38:0===k+C+E&&(M=N=1,b="\f"+b);break;case 108:if(0===k+C+E+O&&0<D)switch(L-D){case 2:112===I&&58===s.charCodeAt(L-3)&&(O=I);case 8:111===R&&(O=R)}break;case 58:0===k+C+E&&(D=L);break;case 44:0===C+x+k+E&&(M=1,b+="\r");break;case 34:case 39:0===C&&(k=k===h?0:0===k?h:k);break;case 91:0===k+C+x&&E++;break;case 93:0===k+C+x&&E--;break;case 41:0===k+C+E&&x--;break;case 40:if(0===k+C+E){if(0===d)switch(2*I+3*R){case 533:break;default:d=1}x++}break;case 64:0===C+x+k+E+D+g&&(g=1);break;case 42:case 47:if(!(0<k+E+x))switch(C){case 0:switch(2*h+3*s.charCodeAt(L+1)){case 235:C=47;break;case 220:H=L,C=42}break;case 42:47===h&&42===I&&H+2!==L&&(33===s.charCodeAt(H+2)&&(z+=s.substring(H,L+1)),b="",C=0)}}0===C&&(Y+=b)}R=I,I=h,L++}if(0<(H=z.length)){if(M=l,0<B&&(void 0!==(w=a(2,z,M,n,T,S,H,p,f,p))&&0===(z=w).length))return W+z+U;if(z=M.join(",")+"{"+z+"}",0!=P*O){switch(2!==P||o(z,2)||(O=0),O){case 111:z=z.replace(y,":-moz-$1")+z;break;case 112:z=z.replace(v,"::-webkit-input-$1")+z.replace(v,"::-moz-$1")+z.replace(v,":-ms-input-$1")+z}O=0}}return W+z+U}(_,l,n,0,0);return 0<B&&(void 0!==(s=a(-2,p,l,l,T,S,p.length,0,0,0))&&(p=s)),"",O=0,S=T=1,p}var c=/^\0+/g,u=/[\0\r\f]/g,p=/: */g,f=/zoo|gra/,d=/([,: ])(transform)/g,h=/,\r+?/g,g=/([\t\r\n ])*\f?&/g,m=/@(k\w+)\s*(\S*)\s*/,v=/::(place)/g,y=/:(read-only)/g,b=/[svh]\w+-[tblr]{2}/,A=/\(\s*(.*)\s*\)/g,w=/([\s\S]*?);/g,E=/-self|flex-/g,C=/[^]*?(:[rp][el]a[\w-]+)[^]*/,x=/stretch|:\s*\w+\-(?:conte|avail)/,k=/([^-])(image-set\()/,S=1,T=1,O=0,P=1,_=[],I=[],B=0,R=null,j=0;return s.use=function e(t){switch(t){case void 0:case null:B=I.length=0;break;default:if("function"==typeof t)I[B++]=t;else if("object"==typeof t)for(var n=0,r=t.length;n<r;++n)e(t[n]);else j=0|!!t}return e},s.set=l,void 0!==e&&l(e),s}},function(e,t,n){"use strict";t.a={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1}},function(e,t,n){"use strict";(function(e){var r=n(0),o=n(2),i=n.n(o),a=n(18);function l(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(e,t,n){return t&&l(e.prototype,t),n&&l(e,n),e}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(){return(u=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}).apply(this,arguments)}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){c(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function d(e){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function g(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}var m={HIDE:"__react_tooltip_hide_event",REBUILD:"__react_tooltip_rebuild_event",SHOW:"__react_tooltip_show_event"},v=function(e,t){var n;"function"==typeof window.CustomEvent?n=new window.CustomEvent(e,{detail:t}):(n=document.createEvent("Event")).initEvent(e,!1,!0,t),window.dispatchEvent(n)};var y=function(e,t){var n=this.state.show,r=this.props.id,o=this.isCapture(t.currentTarget),i=t.currentTarget.getAttribute("currentItem");o||t.stopPropagation(),n&&"true"===i?e||this.hideTooltip(t):(t.currentTarget.setAttribute("currentItem","true"),b(t.currentTarget,this.getTargetArray(r)),this.showTooltip(t))},b=function(e,t){for(var n=0;n<t.length;n++)e!==t[n]?t[n].setAttribute("currentItem","false"):t[n].setAttribute("currentItem","true")},A={id:"9b69f92e-d3fe-498b-b1b4-c5e63a51b0cf",set:function(e,t,n){this.id in e?e[this.id][t]=n:Object.defineProperty(e,this.id,{configurable:!0,value:c({},t,n)})},get:function(e,t){var n=e[this.id];if(void 0!==n)return n[t]}};var w=function(e,t,n){var r=t.respectEffect,o=void 0!==r&&r,i=t.customEvent,a=void 0!==i&&i,l=this.props.id,s=n.target.getAttribute("data-tip")||null,c=n.target.getAttribute("data-for")||null,u=n.target;if(!this.isCustomEvent(u)||a){var p=null==l&&null==c||c===l;if(null!=s&&(!o||"float"===this.getEffect(u))&&p){var f=function(e){var t={};for(var n in e)"function"==typeof e[n]?t[n]=e[n].bind(e):t[n]=e[n];return t}(n);f.currentTarget=u,e(f)}}},E=function(e,t){var n={};return e.forEach((function(e){var r=e.getAttribute(t);r&&r.split(" ").forEach((function(e){return n[e]=!0}))})),n},C=function(){return document.getElementsByTagName("body")[0]};function x(e,t,n,r,o,i,a){for(var l=k(n),s=l.width,c=l.height,u=k(t),p=u.width,f=u.height,d=S(e,t,i),h=d.mouseX,g=d.mouseY,m=T(i,p,f,s,c),v=O(a),y=v.extraOffsetX,b=v.extraOffsetY,A=window.innerWidth,w=window.innerHeight,E=P(n),C=E.parentTop,x=E.parentLeft,_=function(e){var t=m[e].l;return h+t+y},I=function(e){var t=m[e].t;return g+t+b},B=function(e){return function(e){var t=m[e].r;return h+t+y}(e)>A},R=function(e){return function(e){var t=m[e].b;return g+t+b}(e)>w},j=function(e){return function(e){return _(e)<0}(e)||B(e)||function(e){return I(e)<0}(e)||R(e)},D=function(e){return!j(e)},L=["top","bottom","left","right"],M=[],N=0;N<4;N++){var H=L[N];D(H)&&M.push(H)}var F,Q=!1,Y=o!==r;return D(o)&&Y?(Q=!0,F=o):M.length>0&&j(o)&&j(r)&&(Q=!0,F=M[0]),Q?{isNewState:!0,newState:{place:F}}:{isNewState:!1,position:{left:parseInt(_(r)-x,10),top:parseInt(I(r)-C,10)}}}var k=function(e){var t=e.getBoundingClientRect(),n=t.height,r=t.width;return{height:parseInt(n,10),width:parseInt(r,10)}},S=function(e,t,n){var r=t.getBoundingClientRect(),o=r.top,i=r.left,a=k(t),l=a.width,s=a.height;return"float"===n?{mouseX:e.clientX,mouseY:e.clientY}:{mouseX:i+l/2,mouseY:o+s/2}},T=function(e,t,n,r,o){var i,a,l,s;return"float"===e?(i={l:-r/2,r:r/2,t:-(o+3+2),b:-3},l={l:-r/2,r:r/2,t:15,b:o+3+2+12},s={l:-(r+3+2),r:-3,t:-o/2,b:o/2},a={l:3,r:r+3+2,t:-o/2,b:o/2}):"solid"===e&&(i={l:-r/2,r:r/2,t:-(n/2+o+2),b:-n/2},l={l:-r/2,r:r/2,t:n/2,b:n/2+o+2},s={l:-(r+t/2+2),r:-t/2,t:-o/2,b:o/2},a={l:t/2,r:r+t/2+2,t:-o/2,b:o/2}),{top:i,bottom:l,left:s,right:a}},O=function(e){var t=0,n=0;for(var r in"[object String]"===Object.prototype.toString.apply(e)&&(e=JSON.parse(e.toString().replace(/'/g,'"'))),e)"top"===r?n-=parseInt(e[r],10):"bottom"===r?n+=parseInt(e[r],10):"left"===r?t-=parseInt(e[r],10):"right"===r&&(t+=parseInt(e[r],10));return{extraOffsetX:t,extraOffsetY:n}},P=function(e){for(var t=e;t;){var n=window.getComputedStyle(t);if("none"!==n.getPropertyValue("transform")||"transform"===n.getPropertyValue("will-change"))break;t=t.parentElement}return{parentTop:t&&t.getBoundingClientRect().top||0,parentLeft:t&&t.getBoundingClientRect().left||0}};function _(e,t,n,o){if(t)return t;if(null!=n)return n;if(null===n)return null;var i=/<br\s*\/?>/;return o&&"false"!==o&&i.test(e)?e.split(i).map((function(e,t){return r.b.createElement("span",{key:t,className:"multi-line"},e)})):e}function I(e){var t={};return Object.keys(e).filter((function(e){return/(^aria-\w+$|^role$)/.test(e)})).forEach((function(n){t[n]=e[n]})),t}function B(e){var t=e.length;return e.hasOwnProperty?Array.prototype.slice.call(e):new Array(t).fill().map((function(t){return e[t]}))}var R={dark:{text:"#fff",background:"#222",border:"transparent",arrow:"#222"},success:{text:"#fff",background:"#8DC572",border:"transparent",arrow:"#8DC572"},warning:{text:"#fff",background:"#F0AD4E",border:"transparent",arrow:"#F0AD4E"},error:{text:"#fff",background:"#BE6464",border:"transparent",arrow:"#BE6464"},info:{text:"#fff",background:"#337AB7",border:"transparent",arrow:"#337AB7"},light:{text:"#222",background:"#fff",border:"transparent",arrow:"#fff"}};function j(e,t,n,r){return function(e,t){var n=t.text,r=t.background,o=t.border,i=t.arrow;return"\n  \t.".concat(e," {\n\t    color: ").concat(n,";\n\t    background: ").concat(r,";\n\t    border: 1px solid ").concat(o,";\n  \t}\n\n  \t.").concat(e,".place-top {\n        margin-top: -10px;\n    }\n    .").concat(e,".place-top::before {\n        border-top: 8px solid ").concat(o,";\n    }\n    .").concat(e,".place-top::after {\n        border-left: 8px solid transparent;\n        border-right: 8px solid transparent;\n        bottom: -6px;\n        left: 50%;\n        margin-left: -8px;\n        border-top-color: ").concat(i,";\n        border-top-style: solid;\n        border-top-width: 6px;\n    }\n\n    .").concat(e,".place-bottom {\n        margin-top: 10px;\n    }\n    .").concat(e,".place-bottom::before {\n        border-bottom: 8px solid ").concat(o,";\n    }\n    .").concat(e,".place-bottom::after {\n        border-left: 8px solid transparent;\n        border-right: 8px solid transparent;\n        top: -6px;\n        left: 50%;\n        margin-left: -8px;\n        border-bottom-color: ").concat(i,";\n        border-bottom-style: solid;\n        border-bottom-width: 6px;\n    }\n\n    .").concat(e,".place-left {\n        margin-left: -10px;\n    }\n    .").concat(e,".place-left::before {\n        border-left: 8px solid ").concat(o,";\n    }\n    .").concat(e,".place-left::after {\n        border-top: 5px solid transparent;\n        border-bottom: 5px solid transparent;\n        right: -6px;\n        top: 50%;\n        margin-top: -4px;\n        border-left-color: ").concat(i,";\n        border-left-style: solid;\n        border-left-width: 6px;\n    }\n\n    .").concat(e,".place-right {\n        margin-left: 10px;\n    }\n    .").concat(e,".place-right::before {\n        border-right: 8px solid ").concat(o,";\n    }\n    .").concat(e,".place-right::after {\n        border-top: 5px solid transparent;\n        border-bottom: 5px solid transparent;\n        left: -6px;\n        top: 50%;\n        margin-top: -4px;\n        border-right-color: ").concat(i,";\n        border-right-style: solid;\n        border-right-width: 6px;\n    }\n  ")}(e,function(e,t,n){var r=e.text,o=e.background,i=e.border,a=e.arrow?e.arrow:e.background,l=function(e){return R[e]?f({},R[e]):void 0}(t);r&&(l.text=r);o&&(l.background=o);n&&(l.border=i||("light"===t?"black":"white"));a&&(l.arrow=a);return l}(t,n,r))}var D="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{};function L(e,t){return e(t={exports:{}},t.exports),t.exports}var M=function(e){return e&&e.Math==Math&&e},N=M("object"==typeof globalThis&&globalThis)||M("object"==typeof window&&window)||M("object"==typeof self&&self)||M("object"==typeof D&&D)||function(){return this}()||Function("return this")(),H=function(e){try{return!!e()}catch(e){return!0}},F=!H((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),Q={}.propertyIsEnumerable,Y=Object.getOwnPropertyDescriptor,z={f:Y&&!Q.call({1:2},1)?function(e){var t=Y(this,e);return!!t&&t.enumerable}:Q},U=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},W={}.toString,J=function(e){return W.call(e).slice(8,-1)},V="".split,q=H((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==J(e)?V.call(e,""):Object(e)}:Object,K=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},Z=function(e){return q(K(e))},G=function(e){return"object"==typeof e?null!==e:"function"==typeof e},X=function(e,t){if(!G(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!G(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!G(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!G(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},$=function(e){return Object(K(e))},ee={}.hasOwnProperty,te=function(e,t){return ee.call($(e),t)},ne=N.document,re=G(ne)&&G(ne.createElement),oe=function(e){return re?ne.createElement(e):{}},ie=!F&&!H((function(){return 7!=Object.defineProperty(oe("div"),"a",{get:function(){return 7}}).a})),ae=Object.getOwnPropertyDescriptor,le={f:F?ae:function(e,t){if(e=Z(e),t=X(t,!0),ie)try{return ae(e,t)}catch(e){}if(te(e,t))return U(!z.f.call(e,t),e[t])}},se=function(e){if(!G(e))throw TypeError(String(e)+" is not an object");return e},ce=Object.defineProperty,ue={f:F?ce:function(e,t,n){if(se(e),t=X(t,!0),se(n),ie)try{return ce(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},pe=F?function(e,t,n){return ue.f(e,t,U(1,n))}:function(e,t,n){return e[t]=n,e},fe=function(e,t){try{pe(N,e,t)}catch(n){N[e]=t}return t},de=N["__core-js_shared__"]||fe("__core-js_shared__",{}),he=Function.toString;"function"!=typeof de.inspectSource&&(de.inspectSource=function(e){return he.call(e)});var ge,me,ve,ye=de.inspectSource,be=N.WeakMap,Ae="function"==typeof be&&/native code/.test(ye(be)),we=L((function(e){(e.exports=function(e,t){return de[e]||(de[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})})),Ee=0,Ce=Math.random(),xe=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Ee+Ce).toString(36)},ke=we("keys"),Se=function(e){return ke[e]||(ke[e]=xe(e))},Te={},Oe=N.WeakMap;if(Ae||de.state){var Pe=de.state||(de.state=new Oe),_e=Pe.get,Ie=Pe.has,Be=Pe.set;ge=function(e,t){if(Ie.call(Pe,e))throw new TypeError("Object already initialized");return t.facade=e,Be.call(Pe,e,t),t},me=function(e){return _e.call(Pe,e)||{}},ve=function(e){return Ie.call(Pe,e)}}else{var Re=Se("state");Te[Re]=!0,ge=function(e,t){if(te(e,Re))throw new TypeError("Object already initialized");return t.facade=e,pe(e,Re,t),t},me=function(e){return te(e,Re)?e[Re]:{}},ve=function(e){return te(e,Re)}}var je,De,Le={set:ge,get:me,has:ve,enforce:function(e){return ve(e)?me(e):ge(e,{})},getterFor:function(e){return function(t){var n;if(!G(t)||(n=me(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Me=L((function(e){var t=Le.get,n=Le.enforce,r=String(String).split("String");(e.exports=function(e,t,o,i){var a,l=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof t||te(o,"name")||pe(o,"name",t),(a=n(o)).source||(a.source=r.join("string"==typeof t?t:""))),e!==N?(l?!c&&e[t]&&(s=!0):delete e[t],s?e[t]=o:pe(e,t,o)):s?e[t]=o:fe(t,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||ye(this)}))})),Ne=N,He=function(e){return"function"==typeof e?e:void 0},Fe=function(e,t){return arguments.length<2?He(Ne[e])||He(N[e]):Ne[e]&&Ne[e][t]||N[e]&&N[e][t]},Qe=Math.ceil,Ye=Math.floor,ze=function(e){return isNaN(e=+e)?0:(e>0?Ye:Qe)(e)},Ue=Math.min,We=function(e){return e>0?Ue(ze(e),9007199254740991):0},Je=Math.max,Ve=Math.min,qe=function(e){return function(t,n,r){var o,i=Z(t),a=We(i.length),l=function(e,t){var n=ze(e);return n<0?Je(n+t,0):Ve(n,t)}(r,a);if(e&&n!=n){for(;a>l;)if((o=i[l++])!=o)return!0}else for(;a>l;l++)if((e||l in i)&&i[l]===n)return e||l||0;return!e&&-1}},Ke={includes:qe(!0),indexOf:qe(!1)}.indexOf,Ze=function(e,t){var n,r=Z(e),o=0,i=[];for(n in r)!te(Te,n)&&te(r,n)&&i.push(n);for(;t.length>o;)te(r,n=t[o++])&&(~Ke(i,n)||i.push(n));return i},Ge=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Xe=Ge.concat("length","prototype"),$e={f:Object.getOwnPropertyNames||function(e){return Ze(e,Xe)}},et={f:Object.getOwnPropertySymbols},tt=Fe("Reflect","ownKeys")||function(e){var t=$e.f(se(e)),n=et.f;return n?t.concat(n(e)):t},nt=function(e,t){for(var n=tt(t),r=ue.f,o=le.f,i=0;i<n.length;i++){var a=n[i];te(e,a)||r(e,a,o(t,a))}},rt=/#|\.prototype\./,ot=function(e,t){var n=at[it(e)];return n==st||n!=lt&&("function"==typeof t?H(t):!!t)},it=ot.normalize=function(e){return String(e).replace(rt,".").toLowerCase()},at=ot.data={},lt=ot.NATIVE="N",st=ot.POLYFILL="P",ct=ot,ut=le.f,pt=function(e,t,n){if(function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function")}(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}},ft=Array.isArray||function(e){return"Array"==J(e)},dt=Fe("navigator","userAgent")||"",ht=N.process,gt=ht&&ht.versions,mt=gt&&gt.v8;mt?De=(je=mt.split("."))[0]<4?1:je[0]+je[1]:dt&&(!(je=dt.match(/Edge\/(\d+)/))||je[1]>=74)&&(je=dt.match(/Chrome\/(\d+)/))&&(De=je[1]);var vt,yt=De&&+De,bt=!!Object.getOwnPropertySymbols&&!H((function(){return!String(Symbol())||!Symbol.sham&&yt&&yt<41})),At=bt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,wt=we("wks"),Et=N.Symbol,Ct=At?Et:Et&&Et.withoutSetter||xe,xt=function(e){return te(wt,e)&&(bt||"string"==typeof wt[e])||(bt&&te(Et,e)?wt[e]=Et[e]:wt[e]=Ct("Symbol."+e)),wt[e]},kt=xt("species"),St=function(e,t){var n;return ft(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!ft(n.prototype)?G(n)&&null===(n=n[kt])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)},Tt=[].push,Ot=function(e){var t=1==e,n=2==e,r=3==e,o=4==e,i=6==e,a=7==e,l=5==e||i;return function(s,c,u,p){for(var f,d,h=$(s),g=q(h),m=pt(c,u,3),v=We(g.length),y=0,b=p||St,A=t?b(s,v):n||a?b(s,0):void 0;v>y;y++)if((l||y in g)&&(d=m(f=g[y],y,h),e))if(t)A[y]=d;else if(d)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:Tt.call(A,f)}else switch(e){case 4:return!1;case 7:Tt.call(A,f)}return i?-1:r||o?o:A}},Pt={forEach:Ot(0),map:Ot(1),filter:Ot(2),some:Ot(3),every:Ot(4),find:Ot(5),findIndex:Ot(6),filterOut:Ot(7)},_t=Object.keys||function(e){return Ze(e,Ge)},It=F?Object.defineProperties:function(e,t){se(e);for(var n,r=_t(t),o=r.length,i=0;o>i;)ue.f(e,n=r[i++],t[n]);return e},Bt=Fe("document","documentElement"),Rt=Se("IE_PROTO"),jt=function(){},Dt=function(e){return"<script>"+e+"<\/script>"},Lt=function(){try{vt=document.domain&&new ActiveXObject("htmlfile")}catch(e){}var e,t;Lt=vt?function(e){e.write(Dt("")),e.close();var t=e.parentWindow.Object;return e=null,t}(vt):((t=oe("iframe")).style.display="none",Bt.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(Dt("document.F=Object")),e.close(),e.F);for(var n=Ge.length;n--;)delete Lt.prototype[Ge[n]];return Lt()};Te[Rt]=!0;var Mt=Object.create||function(e,t){var n;return null!==e?(jt.prototype=se(e),n=new jt,jt.prototype=null,n[Rt]=e):n=Lt(),void 0===t?n:It(n,t)},Nt=xt("unscopables"),Ht=Array.prototype;null==Ht[Nt]&&ue.f(Ht,Nt,{configurable:!0,value:Mt(null)});var Ft,Qt,Yt,zt,Ut=Pt.find,Wt=!0;"find"in[]&&Array(1).find((function(){Wt=!1})),function(e,t){var n,r,o,i,a,l=e.target,s=e.global,c=e.stat;if(n=s?N:c?N[l]||fe(l,{}):(N[l]||{}).prototype)for(r in t){if(i=t[r],o=e.noTargetGet?(a=ut(n,r))&&a.value:n[r],!ct(s?r:l+(c?".":"#")+r,e.forced)&&void 0!==o){if(typeof i==typeof o)continue;nt(i,o)}(e.sham||o&&o.sham)&&pe(i,"sham",!0),Me(n,r,i,e)}}({target:"Array",proto:!0,forced:Wt},{find:function(e){return Ut(this,e,arguments.length>1?arguments[1]:void 0)}}),Ft="find",Ht[Nt][Ft]=!0;var Jt,Vt=function(e){e.hide=function(e){v(m.HIDE,{target:e})},e.rebuild=function(){v(m.REBUILD)},e.show=function(e){v(m.SHOW,{target:e})},e.prototype.globalRebuild=function(){this.mount&&(this.unbindListener(),this.bindListener())},e.prototype.globalShow=function(e){if(this.mount){var t=!!(e&&e.detail&&e.detail.target);this.showTooltip({currentTarget:t&&e.detail.target},!0)}},e.prototype.globalHide=function(e){if(this.mount){var t=!!(e&&e.detail&&e.detail.target);this.hideTooltip({currentTarget:t&&e.detail.target},t)}}}(Qt=function(e){e.prototype.bindWindowEvents=function(e){window.removeEventListener(m.HIDE,this.globalHide),window.addEventListener(m.HIDE,this.globalHide,!1),window.removeEventListener(m.REBUILD,this.globalRebuild),window.addEventListener(m.REBUILD,this.globalRebuild,!1),window.removeEventListener(m.SHOW,this.globalShow),window.addEventListener(m.SHOW,this.globalShow,!1),e&&(window.removeEventListener("resize",this.onWindowResize),window.addEventListener("resize",this.onWindowResize,!1))},e.prototype.unbindWindowEvents=function(){window.removeEventListener(m.HIDE,this.globalHide),window.removeEventListener(m.REBUILD,this.globalRebuild),window.removeEventListener(m.SHOW,this.globalShow),window.removeEventListener("resize",this.onWindowResize)},e.prototype.onWindowResize=function(){this.mount&&this.hideTooltip()}}(Qt=function(e){e.prototype.isCustomEvent=function(e){return this.state.event||!!e.getAttribute("data-event")},e.prototype.customBindListener=function(e){var t=this,n=this.state,r=n.event,o=n.eventOff,i=e.getAttribute("data-event")||r,a=e.getAttribute("data-event-off")||o;i.split(" ").forEach((function(n){e.removeEventListener(n,A.get(e,n));var r=y.bind(t,a);A.set(e,n,r),e.addEventListener(n,r,!1)})),a&&a.split(" ").forEach((function(n){e.removeEventListener(n,t.hideTooltip),e.addEventListener(n,t.hideTooltip,!1)}))},e.prototype.customUnbindListener=function(e){var t=this.state,n=t.event,r=t.eventOff,o=n||e.getAttribute("data-event"),i=r||e.getAttribute("data-event-off");e.removeEventListener(o,A.get(e,n)),i&&e.removeEventListener(i,this.hideTooltip)}}(Qt=function(e){e.prototype.isCapture=function(e){return e&&"true"===e.getAttribute("data-iscapture")||this.props.isCapture||!1}}(Qt=function(e){e.prototype.getEffect=function(e){return e.getAttribute("data-effect")||this.props.effect||"float"}}(Qt=function(e){e.prototype.isBodyMode=function(){return!!this.props.bodyMode},e.prototype.bindBodyListener=function(e){var t=this,n=this.state,r=n.event,o=n.eventOff,i=n.possibleCustomEvents,a=n.possibleCustomEventsOff,l=C(),s=E(e,"data-event"),c=E(e,"data-event-off");null!=r&&(s[r]=!0),null!=o&&(c[o]=!0),i.split(" ").forEach((function(e){return s[e]=!0})),a.split(" ").forEach((function(e){return c[e]=!0})),this.unbindBodyListener(l);var u=this.bodyModeListeners={};for(var p in null==r&&(u.mouseover=w.bind(this,this.showTooltip,{}),u.mousemove=w.bind(this,this.updateTooltip,{respectEffect:!0}),u.mouseout=w.bind(this,this.hideTooltip,{})),s)u[p]=w.bind(this,(function(e){var n=e.currentTarget.getAttribute("data-event-off")||o;y.call(t,n,e)}),{customEvent:!0});for(var f in c)u[f]=w.bind(this,this.hideTooltip,{customEvent:!0});for(var d in u)l.addEventListener(d,u[d])},e.prototype.unbindBodyListener=function(e){e=e||C();var t=this.bodyModeListeners;for(var n in t)e.removeEventListener(n,t[n])}}((zt=Yt=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=g(this,d(t).call(this,e))).state={uuid:e.uuid||"t"+Object(a.a)(),place:e.place||"top",desiredPlace:e.place||"top",type:"dark",effect:"float",show:!1,border:!1,customColors:{},offset:{},extraClass:"",html:!1,delayHide:0,delayShow:0,event:e.event||null,eventOff:e.eventOff||null,currentEvent:null,currentTarget:null,ariaProps:I(e),isEmptyTip:!1,disable:!1,possibleCustomEvents:e.possibleCustomEvents||"",possibleCustomEventsOff:e.possibleCustomEventsOff||"",originTooltip:null,isMultiline:!1},n.bind(["showTooltip","updateTooltip","hideTooltip","hideTooltipOnScroll","getTooltipContent","globalRebuild","globalShow","globalHide","onWindowResize","mouseOnToolTip"]),n.mount=!0,n.delayShowLoop=null,n.delayHideLoop=null,n.delayReshow=null,n.intervalUpdateContent=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(t,e),s(t,null,[{key:"propTypes",get:function(){return{uuid:i.a.string,children:i.a.any,place:i.a.string,type:i.a.string,effect:i.a.string,offset:i.a.object,multiline:i.a.bool,border:i.a.bool,textColor:i.a.string,backgroundColor:i.a.string,borderColor:i.a.string,arrowColor:i.a.string,insecure:i.a.bool,class:i.a.string,className:i.a.string,id:i.a.string,html:i.a.bool,delayHide:i.a.number,delayUpdate:i.a.number,delayShow:i.a.number,event:i.a.string,eventOff:i.a.string,isCapture:i.a.bool,globalEventOff:i.a.string,getContent:i.a.any,afterShow:i.a.func,afterHide:i.a.func,overridePosition:i.a.func,disable:i.a.bool,scrollHide:i.a.bool,resizeHide:i.a.bool,wrapper:i.a.string,bodyMode:i.a.bool,possibleCustomEvents:i.a.string,possibleCustomEventsOff:i.a.string,clickable:i.a.bool}}}]),s(t,[{key:"bind",value:function(e){var t=this;e.forEach((function(e){t[e]=t[e].bind(t)}))}},{key:"componentDidMount",value:function(){var e=this.props,t=(e.insecure,e.resizeHide);this.bindListener(),this.bindWindowEvents(t),this.injectStyles()}},{key:"componentWillUnmount",value:function(){this.mount=!1,this.clearTimer(),this.unbindListener(),this.removeScrollListener(this.state.currentTarget),this.unbindWindowEvents()}},{key:"injectStyles",value:function(){var e=this.tooltipRef;if(e){for(var t,n=e.parentNode;n.parentNode;)n=n.parentNode;switch(n.constructor.name){case"Document":case"HTMLDocument":case void 0:t=n.head;break;case"ShadowRoot":default:t=n}if(!t.querySelector("style[data-react-tooltip]")){var r=document.createElement("style");r.textContent='.__react_component_tooltip {\n  border-radius: 3px;\n  display: inline-block;\n  font-size: 13px;\n  left: -999em;\n  opacity: 0;\n  padding: 8px 21px;\n  position: fixed;\n  pointer-events: none;\n  transition: opacity 0.3s ease-out;\n  top: -999em;\n  visibility: hidden;\n  z-index: 999;\n}\n.__react_component_tooltip.allow_hover, .__react_component_tooltip.allow_click {\n  pointer-events: auto;\n}\n.__react_component_tooltip::before, .__react_component_tooltip::after {\n  content: "";\n  width: 0;\n  height: 0;\n  position: absolute;\n}\n.__react_component_tooltip.show {\n  opacity: 0.9;\n  margin-top: 0;\n  margin-left: 0;\n  visibility: visible;\n}\n.__react_component_tooltip.place-top::before {\n  border-left: 10px solid transparent;\n  border-right: 10px solid transparent;\n  bottom: -8px;\n  left: 50%;\n  margin-left: -10px;\n}\n.__react_component_tooltip.place-bottom::before {\n  border-left: 10px solid transparent;\n  border-right: 10px solid transparent;\n  top: -8px;\n  left: 50%;\n  margin-left: -10px;\n}\n.__react_component_tooltip.place-left::before {\n  border-top: 6px solid transparent;\n  border-bottom: 6px solid transparent;\n  right: -8px;\n  top: 50%;\n  margin-top: -5px;\n}\n.__react_component_tooltip.place-right::before {\n  border-top: 6px solid transparent;\n  border-bottom: 6px solid transparent;\n  left: -8px;\n  top: 50%;\n  margin-top: -5px;\n}\n.__react_component_tooltip .multi-line {\n  display: block;\n  padding: 2px 0;\n  text-align: center;\n}',r.setAttribute("data-react-tooltip","true"),t.appendChild(r)}}}},{key:"mouseOnToolTip",value:function(){return!(!this.state.show||!this.tooltipRef)&&(this.tooltipRef.matches||(this.tooltipRef.msMatchesSelector?this.tooltipRef.matches=this.tooltipRef.msMatchesSelector:this.tooltipRef.matches=this.tooltipRef.mozMatchesSelector),this.tooltipRef.matches(":hover"))}},{key:"getTargetArray",value:function(e){var t,n=[];if(e){var r=e.replace(/\\/g,"\\\\").replace(/"/g,'\\"');t='[data-tip][data-for="'.concat(r,'"]')}else t="[data-tip]:not([data-for])";return B(document.getElementsByTagName("*")).filter((function(e){return e.shadowRoot})).forEach((function(e){n=n.concat(B(e.shadowRoot.querySelectorAll(t)))})),n.concat(B(document.querySelectorAll(t)))}},{key:"bindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff,o=t.isCapture,i=this.getTargetArray(n);i.forEach((function(t){null===t.getAttribute("currentItem")&&t.setAttribute("currentItem","false"),e.unbindBasicListener(t),e.isCustomEvent(t)&&e.customUnbindListener(t)})),this.isBodyMode()?this.bindBodyListener(i):i.forEach((function(t){var n=e.isCapture(t),r=e.getEffect(t);e.isCustomEvent(t)?e.customBindListener(t):(t.addEventListener("mouseenter",e.showTooltip,n),t.addEventListener("focus",e.showTooltip,n),"float"===r&&t.addEventListener("mousemove",e.updateTooltip,n),t.addEventListener("mouseleave",e.hideTooltip,n),t.addEventListener("blur",e.hideTooltip,n))})),r&&(window.removeEventListener(r,this.hideTooltip),window.addEventListener(r,this.hideTooltip,o)),this.bindRemovalTracker()}},{key:"unbindListener",value:function(){var e=this,t=this.props,n=t.id,r=t.globalEventOff;this.isBodyMode()?this.unbindBodyListener():this.getTargetArray(n).forEach((function(t){e.unbindBasicListener(t),e.isCustomEvent(t)&&e.customUnbindListener(t)})),r&&window.removeEventListener(r,this.hideTooltip),this.unbindRemovalTracker()}},{key:"unbindBasicListener",value:function(e){var t=this.isCapture(e);e.removeEventListener("mouseenter",this.showTooltip,t),e.removeEventListener("mousemove",this.updateTooltip,t),e.removeEventListener("mouseleave",this.hideTooltip,t)}},{key:"getTooltipContent",value:function(){var e,t=this.props,n=t.getContent,r=t.children;return n&&(e=Array.isArray(n)?n[0]&&n[0](this.state.originTooltip):n(this.state.originTooltip)),_(this.state.originTooltip,r,e,this.state.isMultiline)}},{key:"isEmptyTip",value:function(e){return"string"==typeof e&&""===e||null===e}},{key:"showTooltip",value:function(e,t){if(this.tooltipRef){if(t&&!this.getTargetArray(this.props.id).some((function(t){return t===e.currentTarget})))return;var n=this.props,r=n.multiline,o=n.getContent,i=e.currentTarget.getAttribute("data-tip"),a=e.currentTarget.getAttribute("data-multiline")||r||!1,l=e instanceof window.FocusEvent||t,s=!0;e.currentTarget.getAttribute("data-scroll-hide")?s="true"===e.currentTarget.getAttribute("data-scroll-hide"):null!=this.props.scrollHide&&(s=this.props.scrollHide),e&&e.currentTarget&&e.currentTarget.setAttribute&&e.currentTarget.setAttribute("aria-describedby",this.state.uuid);var c=e.currentTarget.getAttribute("data-place")||this.props.place||"top",u=l?"solid":this.getEffect(e.currentTarget),p=e.currentTarget.getAttribute("data-offset")||this.props.offset||{},f=x(e,e.currentTarget,this.tooltipRef,c,c,u,p);f.position&&this.props.overridePosition&&(f.position=this.props.overridePosition(f.position,e,e.currentTarget,this.tooltipRef,c,c,u,p));var d=f.isNewState?f.newState.place:c;this.clearTimer();var h=e.currentTarget,g=this.state.show?h.getAttribute("data-delay-update")||this.props.delayUpdate:0,m=this,v=function(){m.setState({originTooltip:i,isMultiline:a,desiredPlace:c,place:d,type:h.getAttribute("data-type")||m.props.type||"dark",customColors:{text:h.getAttribute("data-text-color")||m.props.textColor||null,background:h.getAttribute("data-background-color")||m.props.backgroundColor||null,border:h.getAttribute("data-border-color")||m.props.borderColor||null,arrow:h.getAttribute("data-arrow-color")||m.props.arrowColor||null},effect:u,offset:p,html:(h.getAttribute("data-html")?"true"===h.getAttribute("data-html"):m.props.html)||!1,delayShow:h.getAttribute("data-delay-show")||m.props.delayShow||0,delayHide:h.getAttribute("data-delay-hide")||m.props.delayHide||0,delayUpdate:h.getAttribute("data-delay-update")||m.props.delayUpdate||0,border:(h.getAttribute("data-border")?"true"===h.getAttribute("data-border"):m.props.border)||!1,extraClass:h.getAttribute("data-class")||m.props.class||m.props.className||"",disable:(h.getAttribute("data-tip-disable")?"true"===h.getAttribute("data-tip-disable"):m.props.disable)||!1,currentTarget:h},(function(){s&&m.addScrollListener(m.state.currentTarget),m.updateTooltip(e),o&&Array.isArray(o)&&(m.intervalUpdateContent=setInterval((function(){if(m.mount){var e=m.props.getContent,t=_(i,"",e[0](),a),n=m.isEmptyTip(t);m.setState({isEmptyTip:n}),m.updatePosition()}}),o[1]))}))};g?this.delayReshow=setTimeout(v,g):v()}}},{key:"updateTooltip",value:function(e){var t=this,n=this.state,r=n.delayShow,o=n.disable,i=this.props.afterShow,a=this.getTooltipContent(),l=e.currentTarget||e.target;if(!this.mouseOnToolTip()&&!this.isEmptyTip(a)&&!o){var s=this.state.show?0:parseInt(r,10),c=function(){if(Array.isArray(a)&&a.length>0||a){var n=!t.state.show;t.setState({currentEvent:e,currentTarget:l,show:!0},(function(){t.updatePosition(),n&&i&&i(e)}))}};clearTimeout(this.delayShowLoop),s?this.delayShowLoop=setTimeout(c,s):c()}}},{key:"listenForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.addEventListener("mouseleave",this.hideTooltip)}},{key:"removeListenerForTooltipExit",value:function(){this.state.show&&this.tooltipRef&&this.tooltipRef.removeEventListener("mouseleave",this.hideTooltip)}},{key:"hideTooltip",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{isScroll:!1},o=this.state.disable,i=r.isScroll,a=i?0:this.state.delayHide,l=this.props.afterHide,s=this.getTooltipContent();if(this.mount&&!this.isEmptyTip(s)&&!o){if(t){var c=this.getTargetArray(this.props.id),u=c.some((function(t){return t===e.currentTarget}));if(!u||!this.state.show)return}e&&e.currentTarget&&e.currentTarget.removeAttribute&&e.currentTarget.removeAttribute("aria-describedby");var p=function(){var t=n.state.show;n.mouseOnToolTip()?n.listenForTooltipExit():(n.removeListenerForTooltipExit(),n.setState({show:!1},(function(){n.removeScrollListener(n.state.currentTarget),t&&l&&l(e)})))};this.clearTimer(),a?this.delayHideLoop=setTimeout(p,parseInt(a,10)):p()}}},{key:"hideTooltipOnScroll",value:function(e,t){this.hideTooltip(e,t,{isScroll:!0})}},{key:"addScrollListener",value:function(e){var t=this.isCapture(e);window.addEventListener("scroll",this.hideTooltipOnScroll,t)}},{key:"removeScrollListener",value:function(e){var t=this.isCapture(e);window.removeEventListener("scroll",this.hideTooltipOnScroll,t)}},{key:"updatePosition",value:function(){var e=this,t=this.state,n=t.currentEvent,r=t.currentTarget,o=t.place,i=t.desiredPlace,a=t.effect,l=t.offset,s=this.tooltipRef,c=x(n,r,s,o,i,a,l);if(c.position&&this.props.overridePosition&&(c.position=this.props.overridePosition(c.position,n,r,s,o,i,a,l)),c.isNewState)return this.setState(c.newState,(function(){e.updatePosition()}));s.style.left=c.position.left+"px",s.style.top=c.position.top+"px"}},{key:"clearTimer",value:function(){clearTimeout(this.delayShowLoop),clearTimeout(this.delayHideLoop),clearTimeout(this.delayReshow),clearInterval(this.intervalUpdateContent)}},{key:"hasCustomColors",value:function(){var e=this;return Boolean(Object.keys(this.state.customColors).find((function(t){return"border"!==t&&e.state.customColors[t]}))||this.state.border&&this.state.customColors.border)}},{key:"render",value:function(){var e=this,n=this.state,o=n.extraClass,i=n.html,a=n.ariaProps,l=n.disable,s=n.uuid,c=this.getTooltipContent(),p=this.isEmptyTip(c),f=j(this.state.uuid,this.state.customColors,this.state.type,this.state.border),d="__react_component_tooltip"+" ".concat(this.state.uuid)+(!this.state.show||l||p?"":" show")+(this.state.border?" border":"")+" place-".concat(this.state.place)+" type-".concat(this.hasCustomColors()?"custom":this.state.type)+(this.props.delayUpdate?" allow_hover":"")+(this.props.clickable?" allow_click":""),h=this.props.wrapper;t.supportedWrappers.indexOf(h)<0&&(h=t.defaultProps.wrapper);var g=[d,o].filter(Boolean).join(" ");if(i){var m="".concat(c,'\n<style aria-hidden="true">').concat(f,"</style>");return r.b.createElement(h,u({className:"".concat(g),id:this.props.id||s,ref:function(t){return e.tooltipRef=t}},a,{"data-id":"tooltip",dangerouslySetInnerHTML:{__html:m}}))}return r.b.createElement(h,u({className:"".concat(g),id:this.props.id||s},a,{ref:function(t){return e.tooltipRef=t},"data-id":"tooltip"}),r.b.createElement("style",{dangerouslySetInnerHTML:{__html:f},"aria-hidden":"true"}),c)}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=t.ariaProps,r=I(e);return Object.keys(r).some((function(e){return r[e]!==n[e]}))?f({},t,{ariaProps:r}):null}}]),t}(r.b.Component),c(Yt,"defaultProps",{insecure:!0,resizeHide:!0,wrapper:"div",clickable:!1}),c(Yt,"supportedWrappers",["div","span"]),c(Yt,"displayName","ReactTooltip"),(Jt=Qt=zt).prototype.bindRemovalTracker=function(){var e=this,t=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;if(null!=t){var n=new t((function(t){for(var n=0;n<t.length;n++)for(var r=t[n],o=0;o<r.removedNodes.length;o++)if(r.removedNodes[o]===e.state.currentTarget)return void e.hideTooltip()}));n.observe(window.document,{childList:!0,subtree:!0}),this.removalTracker=n}},Qt=void(Jt.prototype.unbindRemovalTracker=function(){this.removalTracker&&(this.removalTracker.disconnect(),this.removalTracker=null)})||Qt))||Qt)||Qt)||Qt)||Qt)||Qt)||Qt;t.a=Vt}).call(this,n(14))},function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,c=[],u=!1,p=-1;function f(){u&&s&&(u=!1,s.length?c=s.concat(c):p=-1,c.length&&d())}function d(){if(!u){var e=l(f);u=!0;for(var t=c.length;t;){for(s=c,c=[];++p<t;)s&&s[p].run();p=-1,t=c.length}s=null,u=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function g(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];c.push(new h(e,t)),1!==c.length||u||l(d)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=g,o.addListener=g,o.once=g,o.off=g,o.removeListener=g,o.removeAllListeners=g,o.emit=g,o.prependListener=g,o.prependOnceListener=g,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,n){"use strict";
/** @license React v16.13.1
 * react-is.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */var r="function"==typeof Symbol&&Symbol.for,o=r?Symbol.for("react.element"):60103,i=r?Symbol.for("react.portal"):60106,a=r?Symbol.for("react.fragment"):60107,l=r?Symbol.for("react.strict_mode"):60108,s=r?Symbol.for("react.profiler"):60114,c=r?Symbol.for("react.provider"):60109,u=r?Symbol.for("react.context"):60110,p=r?Symbol.for("react.async_mode"):60111,f=r?Symbol.for("react.concurrent_mode"):60111,d=r?Symbol.for("react.forward_ref"):60112,h=r?Symbol.for("react.suspense"):60113,g=r?Symbol.for("react.suspense_list"):60120,m=r?Symbol.for("react.memo"):60115,v=r?Symbol.for("react.lazy"):60116,y=r?Symbol.for("react.block"):60121,b=r?Symbol.for("react.fundamental"):60117,A=r?Symbol.for("react.responder"):60118,w=r?Symbol.for("react.scope"):60119;function E(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case p:case f:case a:case s:case l:case h:return e;default:switch(e=e&&e.$$typeof){case u:case d:case v:case m:case c:return e;default:return t}}case i:return t}}}function C(e){return E(e)===f}t.AsyncMode=p,t.ConcurrentMode=f,t.ContextConsumer=u,t.ContextProvider=c,t.Element=o,t.ForwardRef=d,t.Fragment=a,t.Lazy=v,t.Memo=m,t.Portal=i,t.Profiler=s,t.StrictMode=l,t.Suspense=h,t.isAsyncMode=function(e){return C(e)||E(e)===p},t.isConcurrentMode=C,t.isContextConsumer=function(e){return E(e)===u},t.isContextProvider=function(e){return E(e)===c},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return E(e)===d},t.isFragment=function(e){return E(e)===a},t.isLazy=function(e){return E(e)===v},t.isMemo=function(e){return E(e)===m},t.isPortal=function(e){return E(e)===i},t.isProfiler=function(e){return E(e)===s},t.isStrictMode=function(e){return E(e)===l},t.isSuspense=function(e){return E(e)===h},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===f||e===s||e===l||e===h||e===g||"object"==typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===m||e.$$typeof===c||e.$$typeof===u||e.$$typeof===d||e.$$typeof===b||e.$$typeof===A||e.$$typeof===w||e.$$typeof===y)},t.typeOf=E},function(e,t,n){var r=function(e){"use strict";var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",a=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function s(e,t,n,r){var o=t&&t.prototype instanceof p?t:p,i=Object.create(o.prototype),a=new C(r||[]);return i._invoke=function(e,t,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return k()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=A(a,n);if(l){if(l===u)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=c(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===u)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,a),i}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var u={};function p(){}function f(){}function d(){}var h={};h[o]=function(){return this};var g=Object.getPrototypeOf,m=g&&g(g(x([])));m&&m!==t&&n.call(m,o)&&(h=m);var v=d.prototype=p.prototype=Object.create(h);function y(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(o,i){function a(){return new t((function(r,a){!function r(o,i,a,l){var s=c(e[o],e,i);if("throw"!==s.type){var u=s.arg,p=u.value;return p&&"object"==typeof p&&n.call(p,"__await")?t.resolve(p.__await).then((function(e){r("next",e,a,l)}),(function(e){r("throw",e,a,l)})):t.resolve(p).then((function(e){u.value=e,a(u)}),(function(e){return r("throw",e,a,l)}))}l(s.arg)}(o,i,r,a)}))}return r=r?r.then(a,a):a()}}function A(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=c(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function C(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(w,this),this.reset(!0)}function x(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:k}}function k(){return{value:void 0,done:!0}}return f.prototype=v.constructor=d,d.constructor=f,f.displayName=l(d,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,d):(e.__proto__=d,l(e,a,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},y(b.prototype),b.prototype[i]=function(){return this},e.AsyncIterator=b,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new b(s(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},y(v),l(v,a,"Generator"),v[o]=function(){return this},v.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=x,C.prototype={constructor:C,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type="throw",a.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var l=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(l&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,u):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:x(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=r}catch(e){Function("r","regeneratorRuntime = r")(r)}},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";var r=n(16);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i=[],a=!0,l=!1;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(i.push(r.value),!t||i.length!==t);a=!0);}catch(e){l=!0,o=e}finally{try{a||null==n.return||n.return()}finally{if(l)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t);var a=n(0),l=n(1),s=(a.b.createElement,l.a.div.withConfig({displayName:"Button__ButtonContainer",componentId:"y7icby-0"})(["font-family:'SF Pro Display';padding:6px 18px;background:",";color:",";cursor:pointer;font-weight:500;font-size:16px;line-height:26px;letter-spacing:0.02em;"],(function(e){return e.background||"#000000"}),(function(e){return e.color||"#FFFFFF"})));var c=function(e){var t=e.setting,n=e.isMobile,r=e.onClick,o=void 0===r?function(){}:r,i={},l=n?t.mobile_position:t.position,c=n?t.mobile_size:t.size;if(!(n?t.mobile_show:t.show))return null;switch(l){case"left":i={writingMode:"vertical-rl",textOrientation:"mixed",padding:"18px 6px",borderTopLeftRadius:4,borderBottomLeftRadius:4,transform:"rotate(180deg)"};break;case"right":i={writingMode:"vertical-rl",textOrientation:"mixed",padding:"18px 6px",borderTopRightRadius:4,borderBottomRightRadius:4,transform:"rotate(180deg)"};break;default:i={borderTopRightRadius:4,borderTopLeftRadius:4}}switch(c){case"medium":i.fontSize="13px",i.lineHeight="16px",i.padding="left"==l||"right"==l?"11px 7px":"7px 11px";break;case"small":i.fontSize="12px",i.lineHeight="12px",i.padding="left"==l||"right"==l?"10px 6px":"6px 10px"}return a.b.createElement(s,{background:n?t.mobile_background:t.background,color:n?t.mobile_color:t.color,onClick:o,style:i},n?t.mobile_text:t.text)};function u(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}var p=n(5),f=n.n(p);a.b.createElement;var d=function(){return a.b.createElement("svg",{ariaHidden:"true",viewBox:"0 0 20 20"},a.b.createElement("path",{d:"M10 18a8 8 0 110-16 8 8 0 010 16zM9 9a1 1 0 002 0V7a1 1 0 10-2 0v2zm0 4a1 1 0 102 0 1 1 0 00-2 0z"}))},h=(a.b.createElement,l.a.div.withConfig({displayName:"ErrorLine__Containet",componentId:"sc-1vdc7uz-0"})(["color:rgb(215,44,13);font-size:15px;font-family:'SF Pro Display';margin-top:5px;display:flex;align-items:center;svg{fill:rgb(215,44,13);width:20px;height:20px;margin-right:5px;}"]));var g=function(e){var t=e.message,n=void 0===t?"":t;return n?a.b.createElement(h,null,a.b.createElement(d,null),n):null},m=(a.b.createElement,l.a.div.withConfig({displayName:"Category__Container",componentId:"yjpa2z-0"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;"])),v=l.a.div.withConfig({displayName:"Category__Text",componentId:"yjpa2z-1"})(["font-family:'SF Pro Display';font-weight:400;font-size:18px;line-height:28px;letter-spacing:0.4px;color:",";"],(function(e){return e.color||"#000000"})),y=l.a.select.withConfig({displayName:"Category__Select",componentId:"yjpa2z-2"})(["font-family:'SF Pro Display';background:transparent;z-index:1;border:1px solid #bdb8b8;box-sizing:border-box;border-radius:6px;width:100%;padding:16px 17px;font-weight:400;font-size:15px;line-height:20px;color:#000000;-moz-appearance:none;-webkit-appearance:none;appearance:none;background-image:none !important;"]);function b(){return a.b.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"7",fill:"none",viewBox:"0 0 12 7"},a.b.createElement("path",{fill:"#000",fillRule:"evenodd",d:"M6 7a.997.997 0 01-.707-.293l-5-5A.999.999 0 111.707.293L6 4.586 10.293.293a.999.999 0 111.414 1.414l-5 5A.997.997 0 016 7z",clipRule:"evenodd"}))}var A=l.a.div.withConfig({displayName:"Category__ContainerSelect",componentId:"yjpa2z-3"})(["position:relative;display:flex;align-items:center;margin-top:14px;label{position:absolute;right:18px;z-index:0;}"]);var w=function(e){var t=e.category,n=e.isMobile,r=e.isShow,o=e.error,i=e.value,l=void 0===i?"":i,s=e.onChange,c=void 0===s?function(){}:s,u=(n?t.mobile_list:t.list)||[];return n?t.mobile_show:t.show,r?a.b.createElement(m,null,a.b.createElement(v,null,n?t.mobile_title:t.title),a.b.createElement(A,null,a.b.createElement("label",null,a.b.createElement(b,null)),a.b.createElement(y,{id:"feedback_category",value:l,onChange:function(e){return c(e.target.value)}},a.b.createElement("option",{value:"",disabled:!0,selected:!0,hidden:!0},n?t.mobile_hint_title:t.hint_title),u.map((function(e,t){return a.b.createElement("option",{key:"cat-"+t,value:e},e)})))),a.b.createElement(g,{message:o})):null},E=(a.b.createElement,l.a.div.withConfig({displayName:"Done__Container",componentId:"uwbv92-0"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;display:flex;justify-content:flex-end;"])),C=l.a.button.withConfig({displayName:"Done__Button",componentId:"uwbv92-1"})(["font-family:'SF Pro Display';background:#000000;border-radius:6px;padding:16px 40px;font-weight:600;font-size:18px;line-height:28px;letter-spacing:0.4px;color:#ffffff;cursor:pointer;border:none;"]);var x=function(e){var t=e.isMobile,n=e.translation,r=void 0===n?[]:n;return e.onSendFeefback,a.b.createElement(E,null,a.b.createElement(C,{type:"submit"},t?r.mobile_text:r.text))};function k(){return(k=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}).apply(this,arguments)}a.b.createElement;function S(e){return a.b.createElement("svg",k({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"#676664",viewBox:"0 0 24 24"},e),a.b.createElement("g",{clipPath:"url(#clip0_179_2056)"},a.b.createElement("path",{fillRule:"evenodd",d:"M5.121 3.707a1 1 0 10-1.414 1.414l6.717 6.718-6.717 6.717a1 1 0 101.414 1.415l6.718-6.718 6.717 6.718a1 1 0 001.414-1.415l-6.717-6.717L19.97 5.12a1 1 0 10-1.414-1.414l-6.717 6.718L5.12 3.707z",clipRule:"evenodd"})),a.b.createElement("defs",null,a.b.createElement("clipPath",{id:"clip0_179_2056"},a.b.createElement("path",{fill:"#fff",d:"M0 0H24V24H0z"}))))}var T=l.a.div.withConfig({displayName:"Header__Container",componentId:"j6inqw-0"})(["font-family:'SF Pro Display';width:100%;height:78px;background:",";padding:19px 27px;display:flex;justify-content:flex-end;align-items:center;box-sizing:border-box;border-top-left-radius:6px;border-top-right-radius:6px;position:relative;"],(function(e){return e.background||"#EBE6E0"})),O=l.a.div.withConfig({displayName:"Header__LogoContainer",componentId:"j6inqw-1"})(["font-family:'SF Pro Display';display:flex;width:100%;align-items:center;justify-content:",";padding:0 ",";top:0;left:0;height:100%;position:absolute;img{max-width:100%;max-height:40px;}"],(function(e){return e.position||"flex-start"}),(function(e){return"flex-end"==e.position?"91px":"40px"})),P=l.a.div.withConfig({displayName:"Header__ContainerNotLogo",componentId:"j6inqw-2"})(["font-family:'SF Pro Display';position:absolute;right:30px;top:30px;z-index:2;&:hover{svg{fill:#9b9691;}}"]);var _=function(e){var t=e.rating,n=void 0===t?{}:t,r=e.onClose,o=void 0===r?function(){}:r,i=e.isMobile,l=i?n.mobile_logo:n.logo,s="flex-start";switch(i?n.mobile_logo_position:n.logo_position){case"center":s="center";break;case"right":s="flex-end"}return l?a.b.createElement(T,{background:i?n.mobile_header_background:n.header_background},a.b.createElement(O,{position:s},l&&a.b.createElement("img",{src:l})),a.b.createElement(S,{style:{cursor:"pointer",zIndex:2},onClick:o})):a.b.createElement(P,null,a.b.createElement(S,{style:{cursor:"pointer",zIndex:2},onClick:o}))},I=(a.b.createElement,l.a.div.withConfig({displayName:"Link__Container",componentId:"d0pm70-0"})(["font-family:'SF Pro Display';width:100%;margin-top:10px;font-weight:400;font-size:15px;line-height:20px;color:#000000;a{font-family:'SF Pro Display';color:#000000;}p{font-family:'SF Pro Display';margin:0;padding:0;font-weight:400;font-size:15px;line-height:20px;color:#000000;}"]));var B=function(e){var t=e.isMobile,n=e.link,r=void 0===n?{}:n,o=e.isShow;return t?r.mobile_show:r.show,o?a.b.createElement(I,{dangerouslySetInnerHTML:{__html:t?r.mobile_text:r.text}}):null};function R(e){return(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})(e)}function j(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function L(e,t,n){return t&&D(e.prototype,t),n&&D(e,n),e}function M(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function N(){return(N=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}).apply(this,arguments)}function H(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),r.forEach((function(t){M(e,t,n[t])}))}return e}function F(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&Y(e,t)}function Q(e){return(Q=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function z(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function U(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?z(e):t}var W={display:"inline-block",borderRadius:"50%",border:"5px double white",width:30,height:30},J={empty:H({},W,{backgroundColor:"#ccc"}),full:H({},W,{backgroundColor:"black"}),placeholder:H({},W,{backgroundColor:"red"})},V=function(e){return a.b.isValidElement(e)?e:"object"===R(e)&&null!==e?a.b.createElement("span",{style:e}):"[object String]"===Object.prototype.toString.call(e)?a.b.createElement("span",{className:e}):void 0},q=function(e){function t(){return j(this,t),U(this,Q(t).apply(this,arguments))}return F(t,e),L(t,[{key:"render",value:function(){var e,t=this.props,n=t.index,r=t.inactiveIcon,o=t.activeIcon,i=t.percent,l=t.direction,s=t.readonly,c=t.onClick,u=t.onMouseMove,p=V(r),f=i<100?{}:{visibility:"hidden"},d=V(o),h=(M(e={display:"inline-block",position:"absolute",overflow:"hidden",top:0},"rtl"===l?"right":"left",0),M(e,"width","".concat(i,"%")),e),g={cursor:s?"inherit":"pointer",display:"inline-block",position:"relative"};function m(e){u&&u(n,e)}function v(e){c&&(e.preventDefault(),c(n,e))}return a.b.createElement("span",{style:g,onClick:v,onMouseMove:m,onTouchMove:m,onTouchEnd:v},a.b.createElement("span",{style:f},p),a.b.createElement("span",{style:h},d))}}]),t}(a.b.PureComponent),K=function(e){function t(e){var n;return j(this,t),(n=U(this,Q(t).call(this,e))).state={displayValue:n.props.value,interacting:!1},n.onMouseLeave=n.onMouseLeave.bind(z(z(n))),n.symbolMouseMove=n.symbolMouseMove.bind(z(z(n))),n.symbolClick=n.symbolClick.bind(z(z(n))),n}return F(t,e),L(t,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){var t=this.props.value!==e.value;this.setState((function(n){return{displayValue:t?e.value:n.displayValue}}))}},{key:"componentDidUpdate",value:function(e,t){if(e.value===this.props.value)return t.interacting&&!this.state.interacting?this.props.onHover():void(this.state.interacting&&this.props.onHover(this.state.displayValue))}},{key:"symbolClick",value:function(e,t){var n=this.calculateDisplayValue(e,t);this.props.onClick(n,t)}},{key:"symbolMouseMove",value:function(e,t){var n=this.calculateDisplayValue(e,t);this.setState({interacting:!this.props.readonly,displayValue:n})}},{key:"onMouseLeave",value:function(){this.setState({displayValue:this.props.value,interacting:!1})}},{key:"calculateDisplayValue",value:function(e,t){var n=this.calculateHoverPercentage(t),r=Math.ceil(n%1*this.props.fractions)/this.props.fractions,o=Math.pow(10,3),i=e+(Math.floor(n)+Math.floor(r*o)/o);return i>0?i>this.props.totalSymbols?this.props.totalSymbols:i:1/this.props.fractions}},{key:"calculateHoverPercentage",value:function(e){var t=e.nativeEvent.type.indexOf("touch")>-1?e.nativeEvent.type.indexOf("touchend")>-1?e.changedTouches[0].clientX:e.touches[0].clientX:e.clientX,n=e.target.getBoundingClientRect(),r="rtl"===this.props.direction?n.right-t:t-n.left;return r<0?0:r/n.width}},{key:"render",value:function(){var e,t=this.props,n=t.readonly,r=t.quiet,o=t.totalSymbols,i=t.value,l=t.placeholderValue,s=t.direction,c=t.emptySymbol,u=t.fullSymbol,p=t.placeholderSymbol,f=t.className,d=t.id,h=t.style,g=t.tabIndex,m=this.state,v=m.displayValue,y=m.interacting,b=[],A=[].concat(c),w=[].concat(u),E=[].concat(p),C=0!==l&&0===i&&!y;e=C?l:r?i:v;for(var x=Math.floor(e),k=0;k<o;k++){var S=void 0;S=k-x<0?100:k-x==0?100*(e-k):0,b.push(a.b.createElement(q,N({key:k,index:k,readonly:n,inactiveIcon:A[k%A.length],activeIcon:C?E[k%w.length]:w[k%w.length],percent:S,direction:s},!n&&{onClick:this.symbolClick,onMouseMove:this.symbolMouseMove,onTouchMove:this.symbolMouseMove,onTouchEnd:this.symbolClick})))}return a.b.createElement("span",N({id:d,style:H({},h,{display:"inline-block",direction:s}),className:f,tabIndex:g,"aria-label":this.props["aria-label"]},!n&&{onMouseLeave:this.onMouseLeave}),b)}}]),t}(a.b.PureComponent);function Z(){}Z._name="react_rating_noop";var G=function(e){function t(e){var n;return j(this,t),(n=U(this,Q(t).call(this,e))).state={value:e.initialRating},n.handleClick=n.handleClick.bind(z(z(n))),n.handleHover=n.handleHover.bind(z(z(n))),n}return F(t,e),L(t,[{key:"UNSAFE_componentWillReceiveProps",value:function(e){this.setState({value:e.initialRating})}},{key:"handleClick",value:function(e,t){var n=this,r=this.translateDisplayValueToValue(e);this.props.onClick(r),this.state.value!==r&&this.setState({value:r},(function(){return n.props.onChange(n.state.value)}))}},{key:"handleHover",value:function(e){var t=void 0===e?e:this.translateDisplayValueToValue(e);this.props.onHover(t)}},{key:"translateDisplayValueToValue",value:function(e){var t=e*this.props.step+this.props.start;return t===this.props.start?t+1/this.props.fractions:t}},{key:"tranlateValueToDisplayValue",value:function(e){return void 0===e?0:(e-this.props.start)/this.props.step}},{key:"render",value:function(){var e=this.props,t=e.step,n=e.emptySymbol,r=e.fullSymbol,o=e.placeholderSymbol,i=e.readonly,l=e.quiet,s=e.fractions,c=e.direction,u=e.start,p=e.stop,f=e.id,d=e.className,h=e.style,g=e.tabIndex;return a.b.createElement(K,{id:f,style:h,className:d,tabIndex:g,"aria-label":this.props["aria-label"],totalSymbols:function(e,t,n){return Math.floor((t-e)/n)}(u,p,t),value:this.tranlateValueToDisplayValue(this.state.value),placeholderValue:this.tranlateValueToDisplayValue(this.props.placeholderRating),readonly:i,quiet:l,fractions:s,direction:c,emptySymbol:n,fullSymbol:r,placeholderSymbol:o,onClick:this.handleClick,onHover:this.handleHover})}}]),t}(a.b.PureComponent);G.defaultProps={start:0,stop:5,step:1,readonly:!1,quiet:!1,fractions:1,direction:"ltr",onHover:Z,onClick:Z,onChange:Z,emptySymbol:J.empty,fullSymbol:J.full,placeholderSymbol:J.placeholder};var X=G,$=n(10);a.b.createElement;var ee=function(e){return a.b.createElement("svg",k({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24"},e),a.b.createElement("path",{fill:"#FFBF3A",d:"M11.082 1.133c.347-.806 1.49-.806 1.836 0l2.633 6.112a1 1 0 00.826.6l6.626.614c.873.081 1.227 1.168.567 1.747l-5 4.392a1 1 0 00-.315.971l1.463 6.492c.193.856-.731 1.528-1.486 1.08l-5.721-3.398a1 1 0 00-1.022 0l-5.721 3.398c-.755.448-1.68-.224-1.486-1.08l1.463-6.492a1 1 0 00-.316-.97l-5-4.393C-.23 9.627.125 8.54.998 8.46l6.626-.614a1 1 0 00.827-.6l2.632-6.112z"}))};a.b.createElement;var te=function(e){return a.b.createElement("svg",k({xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",viewBox:"0 0 24 24"},e),a.b.createElement("path",{fill:"#D8D3CE",d:"M11.082 1.133c.347-.806 1.49-.806 1.836 0l2.633 6.112a1 1 0 00.826.6l6.626.614c.873.081 1.227 1.168.567 1.747l-5 4.392a1 1 0 00-.315.971l1.463 6.492c.193.856-.731 1.528-1.486 1.08l-5.721-3.398a1 1 0 00-1.022 0l-5.721 3.398c-.755.448-1.68-.224-1.486-1.08l1.463-6.492a1 1 0 00-.316-.97l-5-4.393C-.23 9.627.125 8.54.998 8.46l6.626-.614a1 1 0 00.827-.6l2.632-6.112z"}))};a.b.createElement;var ne=function(e){return a.b.createElement("img",k({},e,{src:"data:image/png;base64,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"}))};a.b.createElement;var re=function(e){return a.b.createElement("img",k({},e,{src:"data:image/png;base64,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"}))};a.b.createElement;var oe=function(e){return a.b.createElement("img",k({},e,{src:"data:image/png;base64,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"}))};a.b.createElement;var ie=function(e){return a.b.createElement("img",k({},e,{src:"data:image/png;base64,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"}))};a.b.createElement;var ae=function(e){return a.b.createElement("img",k({},e,{src:"data:image/png;base64,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"}))},le=(a.b.createElement,l.a.div.withConfig({displayName:"RatingContainer__Container",componentId:"sc-1xvw1xh-0"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;.tooltipLs{&.show{opacity:1 !important;}}"])),se=l.a.div.withConfig({displayName:"RatingContainer__RatingContent",componentId:"sc-1xvw1xh-1"})(["font-family:'SF Pro Display';width:100%;margin-top:14px;height:28px;position:relative;select{width:1px;border:none;opacity:0;position:absolute;top:12px;left:78px;z-index:-1;}span,.block_rating{div{margin-left:2px;margin-right:2px;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;img{width:24px;height:24px;cursor:pointer;}&:hover{img{width:28px;height:28px;}}}}svg{margin-left:4px;margin-right:4px;}.block_rating{display:flex;}"]),ce=l.a.div.withConfig({displayName:"RatingContainer__Text",componentId:"sc-1xvw1xh-2"})(["font-family:'SF Pro Display';font-weight:400;font-size:18px;line-height:28px;letter-spacing:0.4px;color:",";"],(function(e){return e.color||"#000000"}));var ue=function(e){var t=e.rating,n=void 0===t?{}:t,r=e.isMobile,o=e.count,i=void 0===o?0:o,l=e.translation,s=void 0===l?{}:l,c=e.isShow,u=void 0===c||c,p=e.onChangeRating,f=void 0===p?function(){}:p,d=Object(a.h)(void 0),h=(d[0],d[1]),g=r?n.mobile_type:n.type,m=r?s.mobile_rating_text:s.rating_text||["Hate","Dislike","Neutral","Like","Love"];return r?n.mobile_show:n.show,u?a.b.createElement(le,null,a.b.createElement(ce,{color:r?n.mobile_text_color:n.text_color},r?n.mobile_title:n.title),a.b.createElement(se,null,"stars"==g&&a.b.createElement(X,{onHover:function(e){h(e)},initialRating:i,onChange:f,emptySymbol:m.map((function(e,t){return a.b.createElement(te,{"data-tip":e,key:"sg"+t})})),fullSymbol:m.map((function(e,t){return a.b.createElement(ee,{"data-tip":e,key:"sg"+t})}))}),"stars"!=g&&a.b.createElement("div",{className:"block_rating"},[0,1,2,3,4].map((function(e){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){},n=null;switch(e){case 0:n=a.b.createElement("div",{onClick:t},a.b.createElement(ne,{"data-tip":m[e],style:{opacity:i&&1!=i?.7:1}}));break;case 1:n=a.b.createElement("div",{onClick:t},a.b.createElement(re,{"data-tip":m[e],style:{opacity:i&&2!=i?.7:1}}));break;case 2:n=a.b.createElement("div",{onClick:t},a.b.createElement(oe,{"data-tip":m[e],style:{opacity:i&&3!=i?.7:1}}));break;case 3:n=a.b.createElement("div",{onClick:t},a.b.createElement(ie,{"data-tip":m[e],style:{opacity:i&&4!=i?.7:1}}));break;case 4:n=a.b.createElement("div",{onClick:t},a.b.createElement(ae,{"data-tip":m[e],style:{opacity:i&&5!=i?.7:1}}))}return n}(e,(function(){f(e+1)}))}))),a.b.createElement("select",{required:!0,value:i},a.b.createElement("option",{value:1},"1"),a.b.createElement("option",{value:2},"2"),a.b.createElement("option",{value:3},"1"),a.b.createElement("option",{value:4},"1"),a.b.createElement("option",{value:5},"1"))),a.b.createElement($.a,{className:"tooltipLs",place:"top",effect:"solid",backgroundColor:"#676664"})):null},pe=(a.b.createElement,l.a.div.withConfig({displayName:"Review__Container",componentId:"sc-1l3n7ox-0"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;"])),fe=l.a.div.withConfig({displayName:"Review__Text",componentId:"sc-1l3n7ox-1"})(["font-family:'SF Pro Display';font-weight:400;font-size:18px;line-height:28px;letter-spacing:0.4px;color:",";"],(function(e){return e.color||"#000000"})),de=l.a.textarea.withConfig({displayName:"Review__Textarea",componentId:"sc-1l3n7ox-2"})(["font-family:'SF Pro Display';width:100%;background:#ffffff;border:1px solid #bdb8b8;box-sizing:border-box;border-radius:6px;font-weight:400;font-size:15px;line-height:20px;margin-top:14px;padding:16px;color:#000000;resize:none;height:162px;"]);var he=function(e){var t=e.isMobile,n=e.review,r=void 0===n?{}:n,o=e.isShow,i=e.onChange,l=void 0===i?function(){}:i,s=e.value,c=void 0===s?"":s,u=e.error;return t?r.mobile_show:r.show,o?a.b.createElement(pe,null,a.b.createElement(fe,null,t?r.mobile_title:r.title),a.b.createElement(de,{onChange:function(e){return l(e.target.value)},value:c,placeholder:t?r.mobile_hint:r.hint}),a.b.createElement(g,{message:u})):null};a.b.createElement;var ge=function(){return a.b.createElement("img",{width:"45",src:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAACWASURBVHgB7X0JuGVVdeba+8x3ekPVe1XUyFSRWKBJwCFoIkYE5cMShCKKFETSja0IxPh1TFqNT01i7MQOH5oEq2VQgsbUxyeN6VQw3VIRY2cAjTQiYIXBKqh69eZ3h3PPuLPW2vucewteyS2qwPeZ2nyb++65Z9j732tea58CONaOtWPtWDvsJmAZtquuuqoSx/HPpGm69uSTT945MTGR/5jT5Tvf+c7ThRBZpVJ5ePv27SEeU7DMmg3LqG3btq2KYL3Otu23SinfmCTJY3h454+75qyzzpJ4/sX1ev0KBPufrr322q93Op17d+/e/dCuXbtSWCbtaANNHHJY1LR169ahWq32imq1uiUIgotc111Dx7Msg3a7fd9zUDMBnU9OTk4j0Kvw+i2WZW1BToDR0dEHTzvttP89Nzf3t1EUPbBjx45Z+Am2owb0hRde+HL8eNPY2NhnkH07g1xz3nnnbfQ872+QijciUBUEXCDQkOc5IDiAFN0e5D5IyW28D+BiQXE9fp6KXLEZ73E1Av/beNqfDnKvLVu2rPJ9/zIc05/eeuutXThKTcJRajjJ9w0NDX2w1WptgQFl/7p1655GMO5HkKpIjQInB9QJNAIMRcLCc90DKZ44aAHP5evwPtzN9QL7PyN3/BUM1sTIyMg1OJeP42L9KhxFHXZUgL7ggguOR4DejlQ5Mjw8/MErrrjixEGuQ8pPkNUnEIin6Tv+XXakUlBKLQ5wG4UUO09/4KLxdeZaouxp/Pw0io2pAe4Dl19++Sacw3WNRqOCnx9GnbEejlI7YqBRxrrj4+MfQYBrOEBAqn45/v0hpLSB7n3LLbc8hhbGf8PexU7iguUzgocf2RwM1jrmGr6+2+1CGIb0eQN+/7tBbkCKGOX67+L4a0jVgECfhN9/H44SVR8x0Digl6FsPR87/Q0kZ5H1Lj5w4MDbBr0HgvIVVHx3Y2eQCHAELR4UaKTcRbqG5DpaHKREqX8T//4ccc0g90Di+BUc94VmDoBEQ6Ls7e9973vPH5Roflw7ohsQNaPieA/KxPFCNlLHAeNYax9BKhkf5D6kdBDUT6B8f5yAMoqQSHoQ0UGLQkAromK6vtlshrhgH73xxhsPDHI9grka5/EbOPZK3xyo23j8d6empk6GI2xHBDSy2WkoT892HIflKikkUkKolIgaXoYseO2g1IDAPIAAbUdKzA3YXewDUfT09HQHgc4IaLyHwgX7n9dff/3fD3ItynCB470A+2sQ1EKJlnPBfgaedgUSlQVH0I4EaIHg/Bp+biBzimQkdVJCBehIGe/ds2fPGYPcjFj84Ycfvn5hYeFfifURtBj7QGYiPqeF57aM2HgQ+x/AgPY8KsD1ONZfR0A9Gje1Yj70SYoVP6/CZ7wejqA9b6DRBt6EoG5NUq18CBykJFZCxPoEOFoBI0glf4IucmOQe6In18V7XIt9P4GMVDqQ6MBzExxDB6+bxXH8189//vOTMGBDmXw1jvPnCVACl8ZP8zBynueCQFsonn4VqXoUnmd73g7L3r17n8JVfhsO8hdVrl6JA3oZst8KpIpR7FaeK7YAcAKvxnOuwUs+iT1/rvtu2rTp/z3yyCO3IQ2cg/cMBxgKUXSEAM0jGHcjZQ4kMqi94x3veBkSxBUIsEWAEtDU4jhpJ0n8VBJ3v9vudL+Ov30LD09t3rx5AU1FeD7tqJgupBRRcYwi9W5AUE/Dm56ZK3U6/rQRwa4iZU4idVx8xx13/NMg9yO7HNn5OhIBO3fuHMgGRs/0JgTqI3fdddfTMFgTl1566W047kt9z+tYtk2L+lCWJN9EatiVJPsegvufnN5+//0DWS3P+TB4YZpA8KtIXRuQyk7B72ci2O2vfvWrHx30BhQDQW3fHjQwhIszfOedd5InOZBsPv/8838BOWE7jvHbqMzvRcr+Dpqke3FhIzjWjl4755xzqqeffroDx9qxdqwda8faf/j2vK2ORz8Fb7Mc+z2k4pMovf2U78BtYgdk8FPUJtCY3/aHcCa6dadlCvZUQ/jG2gkYyFt9ZnteQD/y+/CGYGXtrqH1qyoCR9E6MN1d2D/3G3YFbt10LfxUmEdqAuQjHny8dtzINUGtGkStdh7OtW6f/FHyvjP/BAZypPrbYXuG901ARfr2B0ZPWFOpjmB6T0hwK4HfbYa/HbW6d+MpT8BPQfuBDa+tj9U/MH7Sib7t1SGNWzD75JMXDbWnvoE/3w6H2Q471lH1YNyrB6/0q0OYEvHwDhjhCurgD1ePl8L6WfgpaZZrX1AfH/WdYAiE7YPj16E6MjzkBvaF8Dzac1L0H22D6ltOhaGXnACT4hLIpOdJu+LZ0kGQBUW7FBK1gwNxwXJg3VN/DCtDsK+TgX2uyPIkasVf8WLYfsIEHLVE59FsxKE1H863HfkajIPNyjz/0iN74EeWY73Uwbg0z5E6zRHzmW4NyRsOv4rhkEC//xch2PLLcPn6tcF/9ivW2JNTyX2PfDr6eCLFHMYzKDxH2TrQHi+BLQHjG37sex8aWrXiPdUVKzyVpTD7o6fPWHh6gZTkQFnoF7OprWA97MqPDa0d/TV/uL4Ccsw07JvZumljextOJxBSExKoDPQcMZfpWDFd++gfwatsz7kMV2Hj5FT8rYeegr/49ZvhkHGWQwL9ltfAOSccX/vkyhPXjNh+DcKF+Q2L+yZH8lb0YXxmqPDhItN6T+UxdoUdVvqN6tnDx63x7AAjijmGGLPUDec777lvIvnKGRMwDcuo/csp8Atjw8GVw2tXjXr1lZQFsKW0N88+8dQ2pCMMf2B4KaeYkgaa5iyVCn/43+Ekp1G9tbF67CWO54raitlzPb+56Yv/JfrQ5TfCklmdJYF+/1YIGnX72qHjRkcqI2O4inUUDVVIo+4ZSWtyMy58rFId1GJ6VjpITtl6DOM1LK9aspwbILtVvLVqMqHM+LIC2gW0noZrNRvnJlDX4EQhGB5BtbP/FWmY5YoSGVkXQ71alWG6HecJHctxLx1aM/6SxuoNQgrMxASB220/tu246egePO1LSz1rSWX4yhqsrFetzQSSwBuBQiMOFUJQr7kycIfxQJJTOp+WPc+YmnnFc5FLxzbop5rlMKAuHRmABathmTVpy1Nt13ElA5nzeKWFaSzfs/IMI+osHmleOQJM2aOcyDx2au4p1aERIe0q3QRsrwKV4apXq1m/dKhnLUnR64bAsRyUUvR8Zp+UByJt17Idy80wbaoB1mY4A00DwiQFUMSf2E3Q8ZSPC0taIoWBErUvZhOgxhhjIgozRwJTKJHTXGheBHBxNqfqsjy1q4GPWJTXCJLfmLqrBXIYuZvLSp75rKVltAep0g0fnOKDEw0Y2m9SWiNSiISoQCsLIlpKW1HRCyAlZAwwTUBlCVMD/YzLVYVl1ooxcW4Q9Q2SKI8Z9Qql4SQh1vPpFAFKZKcsS4zy0TzWv9BiKMY2EYdwAZcE2sGF5FofYhV8KHl/oOWUwEPDwrUSy/VxFaugtXKKpp1NgFuZATpPFVJAaliOh3vUys+OWsM8MksHSsQiy0maLyVm0xyNKLQvXMzuuzRHXbtpOV2wEQfk7XEQueZ2lfJCEVHaAgoz7FltSaBVBKTpUDCx6sUrM7OuJAaUg5QdkWzCUej75hbKNuyiUI5alBSLSxSfy2VZiy2ImHISF0gQCJdR6rlC+S0sdAzACljPMKior5TMMeyhTLI5Z2y0HCdqMiS+RFsS6NERdEykyPgBDGTO9EjaF0WGQMiaqgAShRn9wWyGosNGVCUugLBxkEjRWZazje0sP3rmcTGBoAIkmUuiUFJCWZLcA8lczBgYEUkrAKKFMsUtOJmJsSBieWhPZkmg0cBIpI1ymIoNaQBkeaCpJm0kdFxoBLnDii4rnL28fJgSMhcEtOXjNUj4WYzXWZDby090SFYzFlKHg2MMmGKF1SUMU9TpFU1kxNzU2frIUGI0pW27gqhdUxhCgsSE9/EcdOQOEcBkoH94A3jtOTjT9qzjUpX9oGXBoyNSJqTgpFUxLigiZZFNKaiUINUWRWYkkjJ1HLS+ueYElumC/6OLpIIjqvR5IZok9iS0eYx6jsy6SkVSINClxaVFIU0bRU0sLKI67Z4LiSYhERSvmmDR8f9/D9YnKdRnI5g8+5Mww8+aOAvsbtP+nZHjGl8eWzf6hRUr63c8/rR7ImIVMobMPtoV1TSLj0ExRUpDA53yqpOMImWdp1oZMiWoDPR5tBDLD2hFMkEZ1ue5GEWeqYzohuU1+wMkt9m0Q9zJTiCxItjBoRgILRB9jRXE/zwBZw+PVe4YPa7612uHre3/9wOwkZ5ln77ZfkVjxHvf2InrVni1IUjaCyccv/D4uxDJljZm6CHmYZpY7TjO57UdTQsotOIjswK5kF1xHnSuB60K23T5beBRxlogqwOFM7BlnWvLg8w7trr65ogWVZ7HdAApjwhJFjJc3yeOIV+1vvGbKzaue4XlurC4b/8JYTgVT5yVbbNXj1W2BqOVUbdSRaA8cGrDMLaqujaeb7a0I5IZjWvsDpQlGBCY5wCLLKJbqAWdWVIqFhseuWY5Mg21V3WQEbJsGo8rz43HR2aspYmCjFg072xWkDhHomYiMkmrkS+iHe0Uph0zA1kstFgCvNqK0bXB0Eq+f308gZHJxTedccaKU2zL9U6VjiU0hSaMhuM69Vipth5Epu1oY0uiPPO0W41hUneIFQiBbXuTaO1ZxEOCYwNs/hUV+ECG+bIDWhhvRCnVO0IzJCR9tGIpZuONak7GAJkl55Wi1ZDGU1M69ECgo8uuMFJMxZ01zRkJs7hdcSpDdftnbZF2xgVixwEUS7MP3iDAezS1fO1RM4EmLSUVC36yMSsl0BK1MBn56GwL4eBxDInIBOMATs7OjCWWn4wWyJoSicEiyiV8MBcnrEWaByJtW2yJWHhcpuwrkKVhlR6jMmJVmVBDniM/k3VbIY+RvWJt2tpW2jrJVlnkARhVp41uYBKm25F5R1EtqcEUBJrr2EmaimL1y3gtOyXK5YMSb2nVWXwIq4NgU70xrcxz1ji+qA0J10KOxnkh5ToNBlVa+2lGUgk2QwAKi4S7pA9cAJszS9qRMXFqydarg9xhsxNk4j+Ii8zCuRq6OrmjNOnjomkxQXCguJ0lQx44QuVoGxN4Qw6ByTINsrAnuylekINH91EUN2B7spQX9Mey2jxKjWI3bICyKcrRJR1EQg2OLiP6CyhKc7MRl+1pDOgRhToOLg45h4KJjGNI0s6UFJwhLxRqrrRHncRpQDLVYo/Poq69I8uWEOeiwxgyRTs8EKWdxEqeUKyW2CXRniHonVAYwcLYIQoXXoQO+/Ik47Ubv/yAJqrS4YKEx8ocTUoclE0szzY0ymY9cRIFbNY62rSzdaffJPkX6ORIGWogCVYiNO2jUfTSZqq3jYxFl5BOwuMYMVJN7b8D9DQsDQI8RDJi08+MlprjBVBdOfJS13MrNEamgFxbHUo/0oVl1hAjR8tYUnbagiAvsTI6tMmtVijg3FN4bMIh0KmydBpPc2ypQAG6qIYylASuRFHEjjsF5CwOP1DoBKT231RP5ALU0lQt4s2Ql2L8yYIi7uqg0ZN6aKawEyNLD1D6o9AYF6Najvmg5XGuH0jWh728wqSUL3xUCq+n2DKmUMtrQGNVtsGyUXazW65FCmi1hUCSqsS5Z7HRZxZbJbgETVwywsXTXqbeKynY8sL1Iw9Ix52Nu8nPVY7vg40BfiiC+LxqKEK8am01SqrLLEoGEweAXXqOFuu7FDTLGPccr7UdFyWQWDkIAPdMgH3yKljVaUPdzWH++A4cEBNHX4t+fzNgAkpWiNNNzJGPC7Q83DqJS7I4fOhZF4iWX6kG4yPnOW4AGhSi6lzHpVG409Yd5A6r9DJNFBO1nrQRy5SMbVaGHLBnyrZlrrwMrQu2rUkpslzywBta4zrVznrhrsDBVEqHRS9SwtYHN6W1tERWtD28zpWr4cdUjD35Z3BiLvxtjuddhnb88e6QsJMojv9tMXzogY/Hf478dfvL/xgO2hv+w2ugEa2C1wVV5wI7cE/HrJCH2mNvFqV/D2l3x33/ALsvOUSZWjeE0UZgV9m0K5VhEaOxtelKneeSsYnnVMYqK9aK19nBiPYKVWFDUwgiwyVTFc4zIfA5JxB0mq8dQ2ZruWGUGZlwgmS9dNHPT3IOvWYmDmoz0GS6SSsw37X7qWV4pFfW2JZadCgeNGlp6Tpr1ecSR7wbnrVV4fE/c15tV6o3NVaNvcRvjJDqwMfGkERdN2wu/pzcM3XDTDf6+W9dmf/Wa2+GJl3z7ffDaKthfWZ4pbdlaNWKmj/UQBMSHTYlTonC9hs6UzNXv/oN4Sce39y5eamakloVVjmB75CrzDELjSj0AgVaJ/FvNFeCyRkCtlJp/iyjExOLpkRHjjavlNo9KwJV+paW1MZGzpEncuosHSRxfb8ugmCD7TiKQ6SFc8K2ozRcg1ZF2sKORJa0dOdj1EMdQjVBGQLOq3rHPToDJz1zwns/6/2MW6ltH9244aXVMRSNbk1Hyoz7Toq6Mlrxgqq4MvKdKxgORZke+eFKw76ktnKoRoUupMSIOt1KA+pj68WKE09eXVk58gdypXeV+hw8u7LfgdPcwNNx9CI4RuUTZLKSSZea+WVt/Z3NvFT7FAXYUhcRsdthW5hisWu263EFF2EpjSnuUL6ANBxbk1o288r59UZjxXGr/lNQr0tt3gV9q27OI+olYDMaTNN8drU5xBYHrbjmWgK6MjpsWb5zNYVkS0r+jHuK1ajsGN247lS/vhLRQ6USLUDcbUGEQrrbbkLU7hC1gOtRsF1cRtHGv35X42S0RLd6gWXnGI+Mwg50W028ro0SA3V4iiknvw5Da9YNVcZHP/FEXrmyH2OqTnKr/qV+vdaj5MKUo07zIAJiQmrqznM1ASY2HKyS+ChpgH72hsb4yCVc3cQwctiUw6eU7LIx3Zvq4hcdqSJP2fKGAcnE1vK3iNEawV82EybNTXQvN6wGWnHQGmpvXoenA9qQv2Hl1Z25hY1PfDb/RytwTwka1S2N1WuHqL6Nnp1FbQQrRJGBvYv5tAiPdWNkkAjCZgZh13Jeh3dfSOPVSSpraTfBhQiBFE1Om/WxIzeCg/rG8TOwMd83sv74huPvu2HPTTNnp83w82mSRnYQvLuxZvRXXD8wwY6siHqYeYIRh2ZuhWfYn7vga+iYzdZJdXScCMFli0slZQUAnyogQS2JgT8qDEHBLcnuE6lmCUk2deF+FsET1YvP5lnPvj5oAUTfQpSjYtYeXr1GVEdXno+OwZul61sIsCBqUEkbQUYqRpDjTgdB7kLSQaDbBHACczMQtRbcb6aJ/emzdkXZjq3u9xebsFPsTS8cGQ39oBFTTRynzfKsKOZBTvaRbFAUNdac7PpDoxfhTd6o0iyzPLfuVSqCnDOls9tQlH1phlWc5ywpnU1lQ8XFAhjC1u6yo01BTusppnzOppPZl2SASEZ2kqiQvmgNmesT2eW2oFSChXHOFJz1BlXm04xLAlafMgT+XYC2NTk+gKxm1wLSKjbLOmLTpImDaZPiY5DjDoLd7EBrNoaF2bzTatr3dNvuTUgk9771y80ZDsPuWJy947LKB1TqfDXqqAsrteQNjdHOeGUICabha/DMejskQ90GeMPH40c6xF4gWVIc+IkAlgiTCxPXKON7op+LDfeyt2wIjPWYkYjkQSqz4ETA6JAgc3ZsyoFlKOdUsUp8UaAVX2FDMpvIHsEWWRcGlY47UFZYiqIwsDhXaCVLLGVXNKewjNeyMI+bVGqGMhkpGUEOZ5owP5m052fFtxfb7o1+Ft79ltuiZ73y56K/6OzDjx33bIWdM53qq1vN5LqhkfjskfHM18FvHcPgnCAXJxLVNTRxENio5AQpbbKWynmUg4YyHVdaV/1dZ1yMbNTly6pwfDt4ut4UwPvjMfvoCpjDSBy0lNksr+PIngl/WiYGYERFWRlivEFmkxwKD1CDnfdkuTBih7Qza2h0DC3H+AYhA61Qs2dJhHIZqTkMoT29CPufSOcW5uxPNpuV7ZfsmHvOV/28fgegxmr/n7/aCt8MI//isJ1NjEfNTY21opfhljh56fXmBuZv2dXWBFsaCfQ40djVhY9Q2tmyR2QFyDxfSxNQ4UWSYQA6uJRiXChMrAX0/sQ0oq5FFd/I5MFYDGSGAvpCoiXVZr2H8/HUnGu+s2kTGCoOeqzIrBuxVs+TjhYZqNBa+xdg3xPJ7vmFyoXn39x6EA5zhwY6JmgSdL+EgP9tFLufXZMtvkNsFOWrgxy7BeQdQ+7pBRe+nmdu7GgGOzb6SPaJDqvHzQX4ZVO9Lgx25GsI15iNVB2HciYTMxKxfDyJs0zLtf4HSGM3F65on6tayOF+8VYWbNt6dTmQ3jDeo1kQFkPaLMwRaBYZSM2d2UWY2pv9oL1gG5Cff0PAZ5+K4iun9sEXFvY1u2QexrShPu5ok40BLZxFQ4l23fSKAcrqA1WaaRcxkT7FKcxcmZrtHrULq3j9BM5RJRjxmZYiz/8Nw56xltE9n1+DZ5ex6HJVixyiKTMA6L9G8moyyBT4JwoSvTSYdgra+NHCiaPSiyM0J1owty+cCdvwm+feHB8RyEV7163QRZa9bv5A/nctFEcJmYyUOaW3u5EDorqGWMyYiaAo7k6EwWPum2//HA8qvgdDjI5xXOy+8wuocuTYPBIqOSBRRj+ZYWaXDupkbNqzJQ8C23rGwws7sy9cSr8T9VuGLfvThHQuG/0oMpC6UgQ5oVfzTLVgYVreDZ10FxzF9sbtsDA/L/7H/GQ83cXFTJFzsriL0zNgl9VbhfJzTCCpWsbfy7mq/pBC0QtF6fTECf9kKgAoa57Sy2LUgbEQZmRqk+hIF9OY7L7ERKIieJZtzJ6hzeE/LWuhT0Gac2QRN3hmelAZpdNCybGIIIdMZd1mC2aeTqabofi919969Pe4NBfSexfn4cvNyTaLqDgisFtsUmrK7q9JNOYqA+73FB5P7Znn2H29vwCriOTFbEMTplkidv/cbdCR878Mk7jQTybofZF3pTKjhbNnFEYysJYWDZxDBCjCgT2rRPYeqPpWn+zVVE8wRa+PZCZ5dM0DHZibt2+9b338CLwAjSJ3UcvaPjeZPtmdazJVp/RGGY7LYM870O+oFCGIklpLy6Kg6D4qBvN7P0DswnfZPicvNenERNHfox/lJZcgpN1sd9TuGjnWNavdNtVGfbYlt0KxgYkPFO531htQ4T2xg0MmlI4Z0F49tjJQZITzLZjdlz0WqfhTExMvXNb2CTt+JOzIzy5MhjnZ6kTVCYkQomoCnDjtoLEXfxsCyhODQ+GcGLFyEMbKnBeyws0Qw5T1T5SiWH6gQA26Xflgd7GrCATqOQ/CBFI4Z0arnvbAK7vRwCoxAX8zqEL8EGdQQCZZQJZdZNc6RjcpWmjD7NNRt9mUn9qy/YXd1/Lu7Yhr5nxl9gD8YwedIVpkEltpREoZzfR0sSezOcyb9kDu9yPyPgIqHTlD7UWADedKCjdFgo3DLoTtZC6JnMdoHKwqu6G8P1zMDkSt9irLtrk+xCncZzLwlQ9FXEMnXunGianu0SkwLg3m0HWfF8nU3uE4RhJ1OGAUt9soMtowNwVfWwHJLfAitHP/PNyz80r/g9N7k284QcvRr9bUxT0WW2npwQ4Hhxk08MpkV8r5iFh/k8Y7JLPPKHkVkf7RxBq1OhAuqslOlOwtgU476XcXF6wH67OtVban6xVIazpeggo41FYEL54ujdIpeV2aoEzOjYNRud4doHFWHFghTZ+Q9xfqgFFnZhFmJtP7o67zkTNuTo/K+4oGaW++ufutr1/l/qFfa/+OdKiMW5dCODnVqlBpsad1jxKmRIziITlV92vwTaCfCYp9BVtvLVGpCSW0tVjqdjic0J5qQ6tp3fPmW/LpEujzbofFr18l/3LxQPpat9bWBTUcGKEtE9jtEModMMw9VMLKpVMcR+B6TI6axT0lSAU1CHSKoU5SQLTKJJennkJ12LKvf9NN0aNwM7yorQveDbP7u+f6fvuVVPDCexkopIpjt5yYg0k6smmIR1e46XIJIzoE1Xtboox/EPFRGCFNYla2Ec6zu4i+wYGsnXT9WzFCqkqgqYW5+7WFueRif6p9LiVkeC8HGtm2k2B3GNQixsFVCLSipp6DKy2TpMyK8HYDMm/ShEFmsDtdWNgXqoVZ64vtfY3/JcS0ghe5bdnenP6bd/m/deDp9E7LbQ/TMSozztJEJ5BtrehYrJB4oUI7y7y5N9PczJn9VJkiJZ1rzQhkeoEtzjNBam6hNTU/b3/Ne7zzQPHs0uD9y+8k7Yte6uxFT+ZtFT/xFMf6tZjAYLkGMStKnaBIjFOOTi8K15plfB47IxRTRnGRUgAfLZrWdAj79rj3xZm8ZgvyDvyE2qYL0j1jBxxc/fQcz8PkM9UTZ3ofIVG3rggwcWn6H3Jsbkp7qWiIk64Y/szSuJwnBcXSkGLoyLVzHZj8kTiwGFpvf/OdafkW9oM8iws3pXtyqDyadLMtnpPalBEv4qoZg61db73nQ3JeQMtus7ETKSOjVY00uJQliZshhj1j2LfX/V6zLd/61i9098BPsO3aBepVq7Pv2rnvIgW91rUSQ7HkuWrFx/Kb6zJMpVFRiK5ox1bKHMpZIAKXONZkgTpzXdi/F6bm592rLvhCeNA7/g4CesdDoK4ajh8Nh4LRJBavsq1MkCQTudl1RElIApni9rLYZiWNrqAFSXhBKP2UhDGECxHM7BcwdcB7Ks2trRd8sfNDWAZt527Itq05/t6mDFcgB7/clilKCEUFMlzwwltKuGJWV/ILY86xbqJ3VBsKzjCVlkc03xTaiylMT9rzYcf92L881v7SricO9g2etYHn9buQI5T8fhi52dysB/PTFnSaCg+C0chmSxwRNy8DQLEvicQIibEkEdBu2TA9HcBiK0CWlM0No7XdsIzaeTt3Ryhj72q1/PDAZIDpMotqPdAOVqWJrLdd9PnHeVFoBFzElcQ5dBYzmEO7YmbKg3bbWRRWdO/Ermfvzlqy8NCXMINLnHPhjGNxIYbIJFiZjXanpW1HaVxV+sw0yCmek+E5GYZWpe+BW0XKjvkN552nNtTx4QO/m/VFaf6Qg+lzqWh7cY6udZzbmOhFbk2RqvNe+b02d0VJTFlOc3VxYQQ6ewrilEoJ0EyUeVivBm14dunKoXbOitALnNzFRHhQd6A+Si8+kVxDZzmCRQctgjTv4s9owyeC7AQuam90dgI0mdAsZL8mJpazm2J2HS7HsiJqWLm63l7cH6ZB1YHaiIfzdDGLrqtppaWDSrpkwOIqQtJZVMBpeT64GECzvBy8SEFzNuYqL3pjuDu09KbOJff+kf71A1v5FRe8WoDAVfTrIAIPnRgf0/gu0Mu5SV6TGWRxpSoN0OLN55TxtlHX+JiZ9ipU+WQ1z/rormX1BjESDQhWx3FQLda4wAfIWbM9eruBTdtEkKgsrjKiTiYu/e4gpwY1HyqNAPxGFbk2wGt9POaA61nZ4z+IlpznkhS9dwbEyvVEtGRH4oNdfIgr9CYkkhbkEckiNaW1tGVrzc30LahG14LIU0ghRPlyOb45TAinmqDnm7oBAVi8rkgXdpFTwhwr9W43jgLTpnyOjEqOFiv8zUnJ18iYgylT+A/fC8VSD1sS6IqtHGnEsMUVqELfXKq+QJ7UsWmhrQ9BIHNAhh1zNvRtm96MTuVmMoWP9Scdl0fL0CW0HZk5SL22q183T8SlK7f0/nati0AHlbgUQ4B+CYHgcIdOAGsipPUZraOMXSK0fqhtw31mXxGpor/7wqXsPaE3RTXr3F1Tu1dkjoVOyQkulFPw0eUFMrUc/RVy/DRRmTFzwEkX5tNLBWjDECd1iZrJ/DOJap33UMzBwiQG6FbVQ2zzWxJopbkHemVSoE0dVRhzdEurV/BXZFaEqaIEHSvR+ziovoFd1mUFNI3HEbQ5tjBNn5H7LN7eIF0mKL33u8ibKjb1iriOKV+hRRDKVktiuuRBDK1w9FBv7jflUXq3Vs9JKTIRZc5NJwR0ybB21TkPSXsjl9lurKJ1icNNwMi8xsc4Zno+ogzy99V1gCn7Ev1JbN1JqqTuYVA0up+2LpnW5g23/vsaGS1McYkqErdFDrEcvOYCAcvwpSjYooQ9MJZsKuvtWy+AVn0EdND8SiyVUZKiCOaJyiH2Uy4JgGMrXZ/OFobsrZ7qPUaK3kqL/tUGHd0rw4rA1ogHy7Dt/9fHLFTaFNEBZTiQmjLyWvRzrTDb5ERfFsvkaqUo1ZIInMOgaDIYaEujLIIq5lot9HvKAPoUQzGY4ox+iYfRLxdg6QH8JFuSAUlUW6sh819JTIWS6qNq6E2izCwZpHlXMUVWs8OQ0WjyOCyimWhF74alxQHQ/4corb6+Dd9GWfB+LyGqW7cuP/Gxfz/m6LgMH0rKEEa5Pct4KJi6T3yUSyFE8S/PWbXaYYgO9PQcKQr3E+Cgl2UVkIreLYqHK9UnWwBK6rCl8n/pu8tvQ+fwkPKllntQvo2kELb6G6iSfDSvCmWWQhQECCVGJAIc9zCA7sQi4CxOmVV/xuoeVMaqh1WY2UL0nW/MQuSQSrhq+W3otKu8cVWWZRslgMVLu7TppfrkdEFhhUkHhiC1rsRYQ2Qv/fqkpQ4q7Wcs4g1SMBq1qI/Re8tNCqv8QemMudKspWsD9cqz1+TIzvJ6WaZucaQCm3fxKFWWr0C/HO5roqBqTed5n5MsSstDyiRSS/6TI/8O7Z4FNIC/ohoAAAAASUVORK5CYII="})},me=(a.b.createElement,l.a.div.withConfig({displayName:"Watermark__Container",componentId:"sc-3x4y9-0"})(["font-family:'SF Pro Display';width:100%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-weight:400;font-size:12px;line-height:26px;letter-spacing:0.02em;color:#000000;margin-top:40px;a{font-family:'SF Pro Display';margin-left:3px;color:#000000;text-decoration:none;}"]));var ve=function(e){var t=e.rating;return(e.isMobile?t.mobile_watermark:t.watermark)?a.b.createElement(me,null,"Powered by ",a.b.createElement("a",{href:"https://feedbackbutton.app"},"Fab Feedback Button")):null},ye=(a.b.createElement,l.a.form.withConfig({displayName:"ThankYouContent__Content",componentId:"sc-18zg18q-0"})(["font-family:'SF Pro Display';padding:30px 40px;padding-top:0px;box-sizing:border-box;"])),be=l.a.div.withConfig({displayName:"ThankYouContent__Image",componentId:"sc-18zg18q-1"})(["margin-top:30px;display:flex;align-items:center;justify-content:center;"]),Ae=l.a.div.withConfig({displayName:"ThankYouContent__Text",componentId:"sc-18zg18q-2"})(["font-family:'SF Pro Display';margin-top:30px;font-weight:400;font-size:18px;line-height:28px;text-align:center;letter-spacing:0.4px;color:#000000;"]),we=l.a.div.withConfig({displayName:"ThankYouContent__ContainerButton",componentId:"sc-18zg18q-3"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;display:flex;justify-content:center;"]),Ee=l.a.div.withConfig({displayName:"ThankYouContent__ContainerEmail",componentId:"sc-18zg18q-4"})(["font-family:'SF Pro Display';width:100%;margin-top:30px;display:flex;justify-content:flex-start;flex-direction:column;"]),Ce=l.a.div.withConfig({displayName:"ThankYouContent__TextEmail",componentId:"sc-18zg18q-5"})(["font-family:'SF Pro Display';font-weight:400;font-size:18px;line-height:28px;letter-spacing:0.4px;color:#000000;"]),xe=l.a.button.withConfig({displayName:"ThankYouContent__Button",componentId:"sc-18zg18q-6"})(["font-family:'SF Pro Display';border:none;background:#000000;border-radius:6px;padding:16px 40px;font-weight:600;font-size:18px;line-height:28px;letter-spacing:0.4px;color:#ffffff;cursor:pointer;"]),ke=l.a.input.withConfig({displayName:"ThankYouContent__Email",componentId:"sc-18zg18q-7"})(["font-family:'SF Pro Display';margin-top:14px;background:#ffffff;border:1px solid #bdb8b8;box-sizing:border-box;border-radius:6px;width:100%;padding:17px 16px;font-weight:400;font-size:15px;line-height:20px;color:#000000;"]);var Se=function(e){var t,n=e.widget,r=e.isMobile,o=e.onContinueShopping,i=void 0===o?function(){}:o,l=e.errors,s=void 0===l?{}:l,c=Object(a.h)(""),u=c[0],p=c[1],f=r?n.popup.thank_you.mobile_title:n.popup.thank_you.title,d=r?n.popup.thank_you.mobile_email:n.popup.thank_you.email,h=r?n.popup.thank_you.mobile_email_title:n.popup.thank_you.email_title,m=r?n.popup.thank_you.mobile_email_hint:n.popup.thank_you.email_hint,v=r?n.translation.mobile_continue_shopping:n.translation.continue_shopping;return a.b.createElement(ye,{onSubmit:function(e){e.preventDefault(),i(u)}},a.b.createElement(be,null,a.b.createElement(ge,null)),a.b.createElement(Ae,null,f),d&&a.b.createElement(Ee,null,a.b.createElement(Ce,null,h),a.b.createElement(ke,{placeholder:m,name:"email",value:u,onChange:function(e){return p(e.target.value)}}),a.b.createElement(g,{message:s.email})),a.b.createElement(we,null,a.b.createElement(xe,{type:"submit"},v||"Continue Shopping")),a.b.createElement(ve,{rating:(null==n||null===(t=n.popup)||void 0===t?void 0:t.rating)||{},isMobile:r}))},Te=(a.b.createElement,l.a.div.withConfig({displayName:"ModalContent__Container",componentId:"a6d3jf-0"})(["width:100%;position:relative;max-width:600px;background:#ffffff;box-shadow:0px 1px 4px rgba(0,0,0,0.05);border-radius:6px;margin-top:auto;margin-bottom:auto;*{box-sizing:border-box;}"])),Oe=l.a.form.withConfig({displayName:"ModalContent__Content",componentId:"a6d3jf-1"})(["padding:30px 40px;padding-top:0px;box-sizing:border-box;"]);var Pe=function(e){var t,n,r,o,i,l,s=e.style,c=void 0===s?{}:s,u=e.widget,p=void 0===u?{}:u,f=e.errors,d=void 0===f?{}:f,h=e.values,g=void 0===h?{}:h,m=e.isMobile,v=e.isShowRating,y=e.isShowCategory,b=e.isShowReview,A=e.isShowDone,E=e.isShowLink,C=e.isThankYou,k=e.onClose,S=void 0===k?function(){}:k,T=e.onContinueShopping,O=void 0===T?function(){}:T,P=e.onSendFeefback,I=void 0===P?function(){}:P,R=e.onChange,j=void 0===R?function(){return function(){}}:R;return a.b.createElement(Te,{onClick:function(e){return e.stopPropagation()},style:c},a.b.createElement(_,{rating:(null==p||null===(t=p.popup)||void 0===t?void 0:t.rating)||{},isMobile:m,onClose:S}),C&&a.b.createElement(Se,{widget:p,errors:d,isMobile:m,onContinueShopping:O}),!C&&a.b.createElement(Oe,{onSubmit:function(e){e.preventDefault(),I()}},a.b.createElement(ue,{rating:(null==p||null===(n=p.popup)||void 0===n?void 0:n.rating)||{},translation:(null==p?void 0:p.translation)||{},isMobile:m,onChangeRating:j("count"),count:g.count||0,isShow:v,error:null==d?void 0:d.count}),a.b.createElement(w,{category:(null==p||null===(r=p.popup)||void 0===r?void 0:r.category)||{},isMobile:m,value:g.category,onChange:j("category"),isShow:y,error:null==d?void 0:d.category}),a.b.createElement(he,{review:(null==p||null===(o=p.popup)||void 0===o?void 0:o.review)||{},isMobile:m,value:g.text,onChange:j("text"),isShow:b,error:null==d?void 0:d.text}),a.b.createElement(B,{link:(null==p||null===(i=p.popup)||void 0===i?void 0:i.link)||{},isMobile:m,isShow:E}),A&&a.b.createElement(x,{translation:(null==p?void 0:p.translation)||{},isMobile:m,onSendFeefback:I}),a.b.createElement(ve,{rating:(null==p||null===(l=p.popup)||void 0===l?void 0:l.rating)||{},isMobile:m})))};a.b.createElement;function _e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?_e(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):_e(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Be=function(e){var t=e.setting,n=e.isMobile,r=e.onClose,o=e.fetchFeedback,l=e.fetchFeedbackEmail,s=Object(a.h)({count:0,category:"",text:""}),c=s[0],p=s[1],d=n?t.popup.rating.mobile_show:t.popup.rating.show,h=n?t.popup.category.mobile_show:t.popup.category.show,g=n?t.popup.review.mobile_show:t.popup.review.show,m=n?t.popup.link.mobile_show:t.popup.link.show,v=n?t.popup.thank_you.mobile_show:t.popup.thank_you.show,y=Object(a.h)(d),b=y[0],A=y[1],w=Object(a.h)(!d&&h),E=w[0],C=w[1],x=Object(a.h)(!d&&!h&&g),k=x[0],S=x[1],T=Object(a.h)(""),O=T[0],P=T[1],_=Object(a.h)(!1),I=_[0],B=_[1],R=Object(a.h)({}),j=R[0],D=R[1],L=function(){var e=!1;return d&&h&&g&&b&&E&&k&&(e=!0),!d&&h&&g&&!b&&E&&k&&(e=!0),d||h||!g||b||E||!k||(e=!0),d||h||g||b||E||k||(e=!0),!d||h||g||b&&!E&&!k&&c.count&&(e=!0),d||!h||g||b||!E||k||(e=!0),d&&h&&!g&&b&&E&&!k&&(e=!0),d&&!h&&g&&b&&!E&&k&&(e=!0),e},M=function(){r(),setTimeout((function(){p({count:0,category:"",text:""}),D({}),A(d),C(!d&&h),S(!d&&!h&&g)}),500),I&&setTimeout((function(){B(!1)}),500)},N=function(){var e,t=(e=f.a.mark((function e(){var t,n;return f.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t={},g&&!c.text&&(t.text="This field is required"),d&&!c.count&&(t.count="This field is required"),h&&!c.category&&(t.category="This field is required"),!Object.keys(t).length){e.next=7;break}return D(t),e.abrupt("return");case 7:return e.next=9,o(c);case 9:(n=e.sent)&&n.id&&P(n.id),v?B(!0):M();case 12:case"end":return e.stop()}}),e)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){u(i,r,o,a,l,"next",e)}function l(e){u(i,r,o,a,l,"throw",e)}a(void 0)}))});return function(){return t.apply(this,arguments)}}();return a.b.createElement(Pe,{widget:t,isThankYou:I,isMobile:n,isShowRating:b,isShowCategory:E,isShowLink:L()&&m,isShowDone:L(),isShowReview:k,onClose:M,values:c,errors:j,onChange:function(e){return function(t){"count"==e&&(h?C(!0):g&&S(!0)),"category"==e&&g&&S(!0);var n=Ie({},j);delete n[e],D(n),p(Ie(Ie({},c),{},i({},e,t)))}},onSendFeefback:N,onContinueShopping:function(e){if(e){if(!function(e){return String(e).toLowerCase().match(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)}(e))return void D({email:"Invalid email format"});l(O,e)}M()}})};a.b.createElement;function Re(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function je(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Re(Object(n),!0).forEach((function(t){i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Re(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var De="https://api.feedbackbutton.app",Le="fab-feedback-button",Me=window.innerWidth<=520;!function(){function e(e){return fetch("".concat(De,"/api/feedback"),{method:"POST",body:JSON.stringify(je(je({},e),{},{shopify_domain:"www.aromatherapyassociates.com"})),headers:{"Content-Type":"application/json"}}).then((function(e){return e.json()}))}function t(e,t){return fetch("".concat(De,"/api/feedback/").concat(e),{method:"PUT",body:JSON.stringify({email:t}),headers:{"Content-Type":"application/json"}}).then((function(e){return e.json()}))}function n(){var e=document.getElementById(Le+"_overlay");e&&(e.style.display="flex",document.body.style.overflow="hidden",setTimeout((function(){e.style.opacity=1}),100))}function r(){var e=document.getElementById(Le+"_overlay");e&&(e.style.opacity=0,document.body.style.overflow="auto",setTimeout((function(){e.style.display="none"}),500))}Promise.all([fetch("".concat(De,"/api/widget/setting?shop=").concat("www.aromatherapyassociates.com"),{method:"GET"}).then((function(e){return e.json()})),fetch("https://feedbackbutton.app/fonts/SF-Pro-Display-Regular.otf").then((function(e){return e.arrayBuffer()})).then((function(e){var t=new FontFace("SF Pro Display",e);document.fonts.add(t)})).catch((function(){}))]).then((function(i){var l=o(i,1)[0];if(!l||!l.active)return null;var s=function(e){var t=document.createElement("div");t.setAttribute("id",Le),t.className="";var n=function(e,t){var n={position:"fixed",zIndex:2147483640,"box-sizing":"border-box",display:"grid"};switch(t?e.mobile_position:e.position){case"left":n.left=0,n.top="50%",n.transform="translateY(-50%)";break;case"bottom_left":n.left="10%",n.bottom=0;break;case"bottom_right":n.right="10%",n.bottom=0;break;case"right":n.right=0,n.top="50%",n.transform="translateY(-50%)"}return n}(e,Me);return Object.keys(n).forEach((function(e){t.style[e]=n[e]})),t}(l.button);document.body.appendChild(s),a.b.render(a.b.createElement(c,{setting:l.button,isMobile:Me,onClick:n}),s);var u=function(e){var t=document.createElement("div");t.setAttribute("id",Le+"_overlay");var n={display:"none","align-items":"flex-start","justify-content":"center",position:"fixed",width:"100%",zIndex:2147483640,background:"rgba(70, 70, 70, 0.6)",height:"100vh",top:0,left:0,padding:"23px 20px","box-sizing":"border-box",opacity:0,transition:"opacity 0.5s ease",overflow:"hiden","overflow-y":"auto"};return Object.keys(n).forEach((function(e){t.style[e]=n[e]})),t.onclick=function(e){this.style.display="none"},t}();document.body.appendChild(u),a.b.render(a.b.createElement(Be,{setting:l,isMobile:Me,onClose:r,fetchFeedback:e,fetchFeedbackEmail:t}),u)})).catch((function(e){console.log("🚀 ~ file: index.js ~ line 184 ~ ]).then ~ err",e)}))}()},function(e,t,n){"use strict";var r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto),o=new Uint8Array(16);function i(){if(!r)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(o)}for(var a=[],l=0;l<256;++l)a[l]=(l+256).toString(16).substr(1);var s=function(e,t){var n=t||0,r=a;return[r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],"-",r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]],r[e[n++]]].join("")};t.a=function(e,t,n){var r=t&&n||0;"string"==typeof e&&(t="binary"===e?new Array(16):null,e=null);var o=(e=e||{}).random||(e.rng||i)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t)for(var a=0;a<16;++a)t[r+a]=o[a];return t||s(o)}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvcHJlYWN0L2Rpc3QvcHJlYWN0Lm1vZHVsZS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3ByZWFjdC9ob29rcy9kaXN0L2hvb2tzLm1vZHVsZS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvZGlzdC9jb21wYXQubW9kdWxlLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvc3R5bGVkLWNvbXBvbmVudHMvZGlzdC9zdHlsZWQtY29tcG9uZW50cy5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9yZWFjdC1pcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvcmVnZW5lcmF0b3IvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9tZW1vaXplL2Rpc3QvbWVtb2l6ZS5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL2lzLXByb3AtdmFsaWQvZGlzdC9pcy1wcm9wLXZhbGlkLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvc2hhbGxvd2VxdWFsL2luZGV4LmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc3R5bGlzL2Rpc3Qvc3R5bGlzLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdW5pdGxlc3MvZGlzdC91bml0bGVzcy5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRvb2x0aXAvZGlzdC9pbmRleC5lcy5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlUmVzdC5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9CdXR0b24uanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0ljb25zL0Vycm9yLmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0Vycm9yTGluZS5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9DYXRlZ29yeS5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9Eb25lLmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9IZWFkZXIuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9Nb2RhbENvbnRlbnQvTGluay5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9yZWFjdC1yYXRpbmcvbGliL3JlYWN0LXJhdGluZy5lc20uanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9JY29ucy9TdGFyWWVsbG93LmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0ljb25zL1N0YXJHcmF5LmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0ljb25zL0hhdGUuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9Nb2RhbENvbnRlbnQvSWNvbnMvRGlzbGlrZS5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9JY29ucy9OZXV0cmFsLmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0ljb25zL0xpa2UuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9Nb2RhbENvbnRlbnQvSWNvbnMvTG92ZS5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9SYXRpbmdDb250YWluZXIuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9Nb2RhbENvbnRlbnQvUmV2aWV3LmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L0ljb25zL1RoYW5rWW91LmpzeCIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvTW9kYWxDb250ZW50L1dhdGVybWFyay5qc3giLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudC9UaGFua1lvdUNvbnRlbnQuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi9jb21wb25lbnRzL1dpZGdldENvbXBvbmVudC9Nb2RhbENvbnRlbnQuanN4Iiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi93aWRnZXQvV2lkZ2V0Q29udGFpbmVyLmpzIiwid2VicGFjazovL2xzRmVldGJhY2tCdXR0b24vLi93aWRnZXQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL2xpYi9nZXRTdHlsZUJ1dHRvbi5qcyIsIndlYnBhY2s6Ly9sc0ZlZXRiYWNrQnV0dG9uLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXRvb2x0aXAvbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9ybmcuanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9yZWFjdC10b29sdGlwL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvYnl0ZXNUb1V1aWQuanMiLCJ3ZWJwYWNrOi8vbHNGZWV0YmFja0J1dHRvbi8uL25vZGVfbW9kdWxlcy9yZWFjdC10b29sdGlwL25vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJmIiwiYSIsInUiLCJoIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwidiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwieSIsInR5cGUiLCJwcm9wcyIsInJlZiIsIl9fayIsIl9fIiwiX19iIiwiX19lIiwiX19kIiwiX19jIiwiX19oIiwiY29uc3RydWN0b3IiLCJfX3YiLCJ2bm9kZSIsIl8iLCJ0aGlzIiwiY29udGV4dCIsImsiLCJpbmRleE9mIiwiYiIsImJhc2UiLCJwdXNoIiwiZyIsIl9fciIsImRlYm91bmNlUmVuZGVyaW5nIiwic29ydCIsInNvbWUiLCJfX1AiLCJqIiwiX19uIiwib3duZXJTVkdFbGVtZW50IiwieiIsInciLCJBIiwiQXJyYXkiLCJpc0FycmF5IiwieCIsIlAiLCJOIiwiTSIsImUiLCJhcHBlbmRDaGlsZCIsIm5leHRTaWJsaW5nIiwiaW5zZXJ0QmVmb3JlIiwiJCIsInNldFByb3BlcnR5IiwidGVzdCIsIkgiLCJzdHlsZSIsImNzc1RleHQiLCJyZXBsYWNlIiwidG9Mb3dlckNhc2UiLCJzbGljZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJUIiwiSSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZXRBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJldmVudCIsImNvbnRleHRUeXBlIiwiX19FIiwicmVuZGVyIiwiTyIsInN1YiIsInN0YXRlIiwiX19zIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwic2hvdWxkQ29tcG9uZW50VXBkYXRlIiwiZm9yRWFjaCIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJnZXRDaGlsZENvbnRleHQiLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsIkwiLCJkaWZmZWQiLCJsb2NhbE5hbWUiLCJub2RlVHlwZSIsImRvY3VtZW50IiwiY3JlYXRlVGV4dE5vZGUiLCJjcmVhdGVFbGVtZW50TlMiLCJjcmVhdGVFbGVtZW50IiwiaXMiLCJkYXRhIiwiY2hpbGROb2RlcyIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiYXR0cmlidXRlcyIsIl9faHRtbCIsImlubmVySFRNTCIsIkMiLCJjaGVja2VkIiwiY3VycmVudCIsInVubW91bnQiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIlMiLCJmaXJzdENoaWxkIiwicSIsIkIiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJzZXRTdGF0ZSIsImNvbXBvbmVudERpZENhdGNoIiwiZm9yY2VVcGRhdGUiLCJQcm9taXNlIiwidGhlbiIsInJlc29sdmUiLCJzZXRUaW1lb3V0IiwiX19IIiwiRiIsInNoaWZ0IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xlYXJUaW1lb3V0IiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJmaWx0ZXIiLCJFIiwiaXNQdXJlUmVhY3RDb21wb25lbnQiLCJfX2YiLCJSIiwiZm9yIiwibWFwIiwiY291bnQiLCJvbmx5IiwidG9BcnJheSIsIl9fdSIsIlUiLCJfX1IiLCJfX08iLCJwb3AiLCJmYWxsYmFjayIsImRlbGV0ZSIsInJldmVhbE9yZGVyIiwic2l6ZSIsInNwbGljZSIsIk1hcCIsInJldmVyc2UiLCJzZXQiLCJWIiwiaXNSZWFjdENvbXBvbmVudCIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiWiIsIlkiLCJjYW5jZWxCdWJibGUiLCJkZWZhdWx0UHJldmVudGVkIiwicGVyc2lzdCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiaXNEZWZhdWx0UHJldmVudGVkIiwibmF0aXZlRXZlbnQiLCJHIiwiSiIsImNsYXNzIiwiSyIsIm11bHRpcGxlIiwic2VsZWN0ZWQiLCJkZWZhdWx0VmFsdWUiLCJjbGFzc05hbWUiLCIkJHR5cGVvZiIsIlEiLCJYIiwiUmVhY3RDdXJyZW50RGlzcGF0Y2hlciIsInJlYWRDb250ZXh0IiwiZW4iLCJ1c2VTdGF0ZSIsInVzZVJlZHVjZXIiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwiY29uY2F0IiwidXNlTWVtbyIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZURlYnVnVmFsdWUiLCJ2ZXJzaW9uIiwiQ2hpbGRyZW4iLCJ0ZXh0Q29udGVudCIsImh5ZHJhdGUiLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwiY3JlYXRlUG9ydGFsIiwiY3JlYXRlQ29udGV4dCIsIkNvbnN1bWVyIiwiUHJvdmlkZXIiLCJjcmVhdGVGYWN0b3J5IiwiY2xvbmVFbGVtZW50IiwiYXBwbHkiLCJjcmVhdGVSZWYiLCJGcmFnbWVudCIsImlzVmFsaWRFbGVtZW50IiwiZmluZERPTU5vZGUiLCJDb21wb25lbnQiLCJQdXJlQ29tcG9uZW50IiwibWVtbyIsImRpc3BsYXlOYW1lIiwiZm9yd2FyZFJlZiIsImZsdXNoU3luYyIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwiU3RyaWN0TW9kZSIsIlN1c3BlbnNlIiwiU3VzcGVuc2VMaXN0IiwibGF6eSIsImRlZmF1bHQiLCJfX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCIsImFzc2lnbiIsInRvU3RyaW5nIiwiZnJlZXplIiwic3R5bGVkQ29tcG9uZW50SWQiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX1NDX0FUVFIiLCJTQ19BVFRSIiwid2luZG93IiwiQm9vbGVhbiIsIlNDX0RJU0FCTEVfU1BFRURZIiwiUkVBQ1RfQVBQX1NDX0RJU0FCTEVfU1BFRURZIiwiRXJyb3IiLCJqb2luIiwiZ3JvdXBTaXplcyIsIlVpbnQzMkFycmF5IiwidGFnIiwiaW5kZXhPZkdyb3VwIiwiaW5zZXJ0UnVsZXMiLCJpbnNlcnRSdWxlIiwiY2xlYXJHcm91cCIsImRlbGV0ZVJ1bGUiLCJnZXRHcm91cCIsImdldFJ1bGUiLCJoYXMiLCJSZWdFeHAiLCJzcGxpdCIsInJlZ2lzdGVyTmFtZSIsInRyaW0iLCJtYXRjaCIsInBhcnNlSW50IiwiZ2V0VGFnIiwiX193ZWJwYWNrX25vbmNlX18iLCJoZWFkIiwiaGFzQXR0cmlidXRlIiwiZWxlbWVudCIsInNoZWV0Iiwic3R5bGVTaGVldHMiLCJvd25lck5vZGUiLCJjc3NSdWxlcyIsIlciLCJub2RlcyIsInJ1bGVzIiwiaXNTZXJ2ZXIiLCJ1c2VDU1NPTUluamVjdGlvbiIsIm9wdGlvbnMiLCJncyIsIm5hbWVzIiwic2VydmVyIiwicXVlcnlTZWxlY3RvckFsbCIsImdldEF0dHJpYnV0ZSIsInJlZ2lzdGVySWQiLCJyZWNvbnN0cnVjdFdpdGhPcHRpb25zIiwiYWxsb2NhdGVHU0luc3RhbmNlIiwidGFyZ2V0IiwiaGFzTmFtZUZvcklkIiwiYWRkIiwiU2V0IiwiY2xlYXJOYW1lcyIsImNsZWFyIiwiY2xlYXJSdWxlcyIsImNsZWFyVGFnIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiZWUiLCJNYXRoIiwiYWJzIiwidGUiLCJjaGFyQ29kZUF0IiwibmUiLCJyZSIsIm9lIiwic2UiLCJzdGF0aWNSdWxlc0lkIiwiaXNTdGF0aWMiLCJjb21wb25lbnRJZCIsImJhc2VIYXNoIiwiYmFzZVN0eWxlIiwiZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMiLCJoYXNoIiwiTmUiLCJpZSIsImFlIiwiY2UiLCJwbHVnaW5zIiwidXNlIiwibGFzdEluZGV4T2YiLCJyZWR1Y2UiLCJ1ZSIsImRlIiwiaGUiLCJwZSIsImZlIiwibWUiLCJ5ZSIsInN0eWxpc1BsdWdpbnMiLCJkaXNhYmxlQ1NTT01JbmplY3Rpb24iLCJwcmVmaXgiLCJkaXNhYmxlVmVuZG9yUHJlZml4ZXMiLCJ2ZSIsImluamVjdCIsImlkIiwiZ2V0TmFtZSIsImdlIiwiU2UiLCJ3ZSIsIkVlIiwiYmUiLCJfZSIsImlzQ3NzIiwiQWUiLCJDZSIsIlJlIiwidGhlbWUiLCJEZSIsImplIiwiVGUiLCJ4ZSIsImtlIiwiVmUiLCJCZSIsInplIiwiTWUiLCJHZSIsIlllIiwicWUiLCJhdHRycyIsInBhcmVudENvbXBvbmVudElkIiwic2hvdWxkRm9yd2FyZFByb3AiLCJjb21wb25lbnRTdHlsZSIsImZvbGRlZENvbXBvbmVudElkcyIsIiRhcyIsImFzIiwid2l0aENvbXBvbmVudCIsImtleXMiLCJfZm9sZGVkRGVmYXVsdFByb3BzIiwiSGUiLCJ3aXRoQ29uZmlnIiwiY3JlYXRlU3R5bGVzIiwicmVtb3ZlU3R5bGVzIiwicmVuZGVyU3R5bGVzIiwiX2VtaXRTaGVldENTUyIsImluc3RhbmNlIiwiZ2V0U3R5bGVUYWdzIiwic2VhbGVkIiwiZ2V0U3R5bGVFbGVtZW50Iiwibm9uY2UiLCJzZWFsIiwiY29sbGVjdFN0eWxlcyIsImludGVybGVhdmVXaXRoTm9kZVN0cmVhbSIsInJlYWN0SXMiLCJSRUFDVF9TVEFUSUNTIiwiY2hpbGRDb250ZXh0VHlwZXMiLCJjb250ZXh0VHlwZXMiLCJnZXREZWZhdWx0UHJvcHMiLCJtaXhpbnMiLCJwcm9wVHlwZXMiLCJLTk9XTl9TVEFUSUNTIiwiY2FsbGVyIiwiY2FsbGVlIiwiYXJpdHkiLCJNRU1PX1NUQVRJQ1MiLCJjb21wYXJlIiwiVFlQRV9TVEFUSUNTIiwiZ2V0U3RhdGljcyIsImNvbXBvbmVudCIsImlzTWVtbyIsIkZvcndhcmRSZWYiLCJNZW1vIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldFByb3RvdHlwZU9mIiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJpbmhlcml0ZWRDb21wb25lbnQiLCJ0YXJnZXRTdGF0aWNzIiwic291cmNlU3RhdGljcyIsImRlc2NyaXB0b3IiLCJyZWFjdFByb3BzUmVnZXgiLCJpbmRleCIsImZuIiwiY2FjaGUiLCJhcmciLCJ1bmRlZmluZWQiLCJwcm9wIiwib2JqQSIsIm9iakIiLCJjb21wYXJlQ29udGV4dCIsInJldCIsImtleXNBIiwia2V5c0IiLCJiSGFzT3duUHJvcGVydHkiLCJpZHgiLCJ2YWx1ZUEiLCJ2YWx1ZUIiLCJpYSIsInN1YnN0cmluZyIsImphIiwia2EiLCJhYSIsImJhIiwibGEiLCJtYSIsIm5hIiwiZWEiLCJvYSIsIkQiLCJjaGFyQXQiLCJjYSIsImRhIiwiZmEiLCJoYSIsImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImNvbHVtbnMiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJtc0dyaWRSb3ciLCJtc0dyaWRSb3dTcGFuIiwibXNHcmlkQ29sdW1uIiwibXNHcmlkQ29sdW1uU3BhbiIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Iiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsInRhYlNpemUiLCJ3aWRvd3MiLCJ6SW5kZXgiLCJ6b29tIiwiV2Via2l0TGluZUNsYW1wIiwiZmlsbE9wYWNpdHkiLCJmbG9vZE9wYWNpdHkiLCJzdG9wT3BhY2l0eSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2VNaXRlcmxpbWl0Iiwic3Ryb2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwiX2RlZmluZVByb3BlcnRpZXMiLCJfY3JlYXRlQ2xhc3MiLCJDb25zdHJ1Y3RvciIsInByb3RvUHJvcHMiLCJzdGF0aWNQcm9wcyIsIl9kZWZpbmVQcm9wZXJ0eSIsIm9iaiIsIl9leHRlbmRzIiwic291cmNlIiwib3duS2V5cyIsImVudW1lcmFibGVPbmx5Iiwic3ltYm9scyIsInN5bSIsIl9vYmplY3RTcHJlYWQyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9zZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwic2VsZiIsIlJlZmVyZW5jZUVycm9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIkNPTlNUQU5UIiwiSElERSIsIlJFQlVJTEQiLCJTSE9XIiwiZGlzcGF0Y2hHbG9iYWxFdmVudCIsImV2ZW50TmFtZSIsIm9wdHMiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImNyZWF0ZUV2ZW50IiwiaW5pdEV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsImNoZWNrU3RhdHVzIiwiZGF0YUV2ZW50T2ZmIiwic2hvdyIsImlzQ2FwdHVyZSIsImN1cnJlbnRUYXJnZXQiLCJjdXJyZW50SXRlbSIsInN0b3BQcm9wYWdhdGlvbiIsImhpZGVUb29sdGlwIiwic2V0VW50YXJnZXRJdGVtcyIsImdldFRhcmdldEFycmF5Iiwic2hvd1Rvb2x0aXAiLCJ0YXJnZXRBcnJheSIsImN1c3RvbUxpc3RlbmVycyIsImxpc3RlbmVyIiwiYm9keUxpc3RlbmVyIiwiY2FsbGJhY2siLCJfb3B0aW9ucyRyZXNwZWN0RWZmZWMiLCJyZXNwZWN0RWZmZWN0IiwiX29wdGlvbnMkY3VzdG9tRXZlbnQiLCJjdXN0b21FdmVudCIsInRpcCIsImZvcklkIiwiaXNDdXN0b21FdmVudCIsImlzVGFyZ2V0QmVsb25nc1RvVG9vbHRpcCIsImdldEVmZmVjdCIsInByb3h5IiwibWFrZVByb3h5IiwiZmluZEN1c3RvbUV2ZW50cyIsImRhdGFBdHRyaWJ1dGUiLCJldmVudHMiLCJnZXRCb2R5IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJnZXRQb3NpdGlvbiIsIm5vZGUiLCJwbGFjZSIsImRlc2lyZWRQbGFjZSIsImVmZmVjdCIsIm9mZnNldCIsIl9nZXREaW1lbnNpb25zIiwiZ2V0RGltZW5zaW9ucyIsInRpcFdpZHRoIiwid2lkdGgiLCJ0aXBIZWlnaHQiLCJoZWlnaHQiLCJfZ2V0RGltZW5zaW9uczIiLCJ0YXJnZXRXaWR0aCIsInRhcmdldEhlaWdodCIsIl9nZXRDdXJyZW50T2Zmc2V0IiwiZ2V0Q3VycmVudE9mZnNldCIsIm1vdXNlWCIsIm1vdXNlWSIsImRlZmF1bHRPZmZzZXQiLCJnZXREZWZhdWx0UG9zaXRpb24iLCJfY2FsY3VsYXRlT2Zmc2V0IiwiY2FsY3VsYXRlT2Zmc2V0IiwiZXh0cmFPZmZzZXRYIiwiZXh0cmFPZmZzZXRZIiwid2luZG93V2lkdGgiLCJpbm5lcldpZHRoIiwid2luZG93SGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJfZ2V0UGFyZW50IiwiZ2V0UGFyZW50IiwicGFyZW50VG9wIiwicGFyZW50TGVmdCIsImdldFRpcE9mZnNldExlZnQiLCJvZmZzZXRYIiwiZ2V0VGlwT2Zmc2V0VG9wIiwib2Zmc2V0WSIsIm91dHNpZGVSaWdodCIsImdldFRpcE9mZnNldFJpZ2h0Iiwib3V0c2lkZUJvdHRvbSIsImdldFRpcE9mZnNldEJvdHRvbSIsIm91dHNpZGUiLCJvdXRzaWRlTGVmdCIsIm91dHNpZGVUb3AiLCJpbnNpZGUiLCJwbGFjZXNMaXN0IiwiaW5zaWRlTGlzdCIsIm5ld1BsYWNlIiwiaXNOZXdTdGF0ZSIsInNob3VsZFVwZGF0ZVBsYWNlIiwibmV3U3RhdGUiLCJwb3NpdGlvbiIsImxlZnQiLCJ0b3AiLCJfbm9kZSRnZXRCb3VuZGluZ0NsaWUiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJ0YXJnZXRUb3AiLCJ0YXJnZXRMZWZ0IiwiX2dldERpbWVuc2lvbnMzIiwiY2xpZW50WCIsImNsaWVudFkiLCJyaWdodCIsImJvdHRvbSIsImRpc1RvTW91c2UiLCJKU09OIiwicGFyc2UiLCJjdXJyZW50UGFyZW50IiwiY29tcHV0ZWRTdHlsZSIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicGFyZW50RWxlbWVudCIsImdldFRpcENvbnRlbnQiLCJnZXRDb250ZW50IiwibXVsdGlsaW5lIiwicmVnZXhwIiwicGFyc2VBcmlhIiwiYXJpYU9iaiIsIm5vZGVMaXN0VG9BcnJheSIsIm5vZGVMaXN0IiwiZmlsbCIsImRlZmF1bHRDb2xvcnMiLCJkYXJrIiwidGV4dCIsImJhY2tncm91bmQiLCJib3JkZXIiLCJhcnJvdyIsInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiZXJyb3IiLCJpbmZvIiwibGlnaHQiLCJnZW5lcmF0ZVRvb2x0aXBTdHlsZSIsInV1aWQiLCJjdXN0b21Db2xvcnMiLCJoYXNCb3JkZXIiLCJjb2xvcnMiLCJ0ZXh0Q29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImFycm93Q29sb3IiLCJnZW5lcmF0ZVN0eWxlIiwiZ2V0RGVmYXVsdFBvcHVwQ29sb3JzIiwiZ2V0UG9wdXBDb2xvcnMiLCJjb21tb25qc0dsb2JhbCIsImdsb2JhbFRoaXMiLCJnbG9iYWwiLCJjcmVhdGVDb21tb25qc01vZHVsZSIsImNoZWNrIiwiaXQiLCJnbG9iYWxfMSIsIkZ1bmN0aW9uIiwiZmFpbHMiLCJleGVjIiwiZGVzY3JpcHRvcnMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIm9iamVjdFByb3BlcnR5SXNFbnVtZXJhYmxlIiwiMSIsImNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciIsImJpdG1hcCIsImNsYXNzb2ZSYXciLCJpbmRleGVkT2JqZWN0IiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsIlR5cGVFcnJvciIsInRvSW5kZXhlZE9iamVjdCIsImlzT2JqZWN0IiwidG9QcmltaXRpdmUiLCJpbnB1dCIsIlBSRUZFUlJFRF9TVFJJTkciLCJ2YWwiLCJ2YWx1ZU9mIiwidG9PYmplY3QiLCJhcmd1bWVudCIsImRvY3VtZW50JDEiLCJFWElTVFMiLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJpZThEb21EZWZpbmUiLCIkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiYW5PYmplY3QiLCIkZGVmaW5lUHJvcGVydHkiLCJvYmplY3REZWZpbmVQcm9wZXJ0eSIsIkF0dHJpYnV0ZXMiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJzZXRHbG9iYWwiLCJzaGFyZWRTdG9yZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwiaGFzJDEiLCJXZWFrTWFwIiwibmF0aXZlV2Vha01hcCIsInNoYXJlZCIsImNvcHlyaWdodCIsInBvc3RmaXgiLCJyYW5kb20iLCJ1aWQiLCJzaGFyZWRLZXkiLCJoaWRkZW5LZXlzIiwiV2Vha01hcCQxIiwic3RvcmUkMSIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiZmFjYWRlIiwiU1RBVEUiLCJpbnRlcm5hbFN0YXRlIiwiZW5mb3JjZSIsImdldHRlckZvciIsIlRZUEUiLCJyZWRlZmluZSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsIlRFTVBMQVRFIiwidW5zYWZlIiwic2ltcGxlIiwibm9UYXJnZXRHZXQiLCJwYXRoIiwiYUZ1bmN0aW9uIiwidmFyaWFibGUiLCJnZXRCdWlsdEluIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiY2VpbCIsImZsb29yIiwidG9JbnRlZ2VyIiwiaXNOYU4iLCJtaW4iLCJ0b0xlbmd0aCIsIm1heCIsIm1pbiQxIiwiY3JlYXRlTWV0aG9kIiwiSVNfSU5DTFVERVMiLCIkdGhpcyIsImVsIiwiZnJvbUluZGV4IiwiaW50ZWdlciIsInRvQWJzb2x1dGVJbmRleCIsImluY2x1ZGVzIiwib2JqZWN0S2V5c0ludGVybmFsIiwicmVzdWx0IiwiZW51bUJ1Z0tleXMiLCJoaWRkZW5LZXlzJDEiLCJvYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzIiwib2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwib3duS2V5cyQxIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsInJlcGxhY2VtZW50IiwiaXNGb3JjZWQiLCJmZWF0dXJlIiwiZGV0ZWN0aW9uIiwibm9ybWFsaXplIiwiUE9MWUZJTEwiLCJOQVRJVkUiLCJzdHJpbmciLCJpc0ZvcmNlZF8xIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJDEiLCJmdW5jdGlvbkJpbmRDb250ZXh0IiwidGhhdCIsImFGdW5jdGlvbiQxIiwiZW5naW5lVXNlckFnZW50IiwidmVyc2lvbnMiLCJ2OCIsImFjdGl2ZVhEb2N1bWVudCIsImVuZ2luZVY4VmVyc2lvbiIsIm5hdGl2ZVN5bWJvbCIsInNoYW0iLCJ1c2VTeW1ib2xBc1VpZCIsIml0ZXJhdG9yIiwiV2VsbEtub3duU3ltYm9sc1N0b3JlIiwiU3ltYm9sJDEiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwid2VsbEtub3duU3ltYm9sIiwiU1BFQ0lFUyIsImFycmF5U3BlY2llc0NyZWF0ZSIsIm9yaWdpbmFsQXJyYXkiLCJjcmVhdGVNZXRob2QkMSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJJU19GSUxURVJfT1VUIiwiTk9fSE9MRVMiLCJjYWxsYmFja2ZuIiwic3BlY2lmaWNDcmVhdGUiLCJib3VuZEZ1bmN0aW9uIiwiYXJyYXlJdGVyYXRpb24iLCJldmVyeSIsImZpbmQiLCJmaW5kSW5kZXgiLCJmaWx0ZXJPdXQiLCJvYmplY3RLZXlzIiwib2JqZWN0RGVmaW5lUHJvcGVydGllcyIsIlByb3BlcnRpZXMiLCJodG1sIiwiSUVfUFJPVE8iLCJFbXB0eUNvbnN0cnVjdG9yIiwic2NyaXB0VGFnIiwiY29udGVudCIsIkxUIiwiTnVsbFByb3RvT2JqZWN0IiwiZG9tYWluIiwiQWN0aXZlWE9iamVjdCIsImlmcmFtZURvY3VtZW50IiwiaWZyYW1lIiwid3JpdGUiLCJjbG9zZSIsInRlbXAiLCJwYXJlbnRXaW5kb3ciLCJOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYIiwiZGlzcGxheSIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwib2JqZWN0Q3JlYXRlIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfdGVtcCIsIiRmaW5kIiwiU0tJUFNfSE9MRVMiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsImZvcmNlZCIsIl9leHBvcnQiLCJwcm90byIsIlJlYWN0VG9vbHRpcCIsImhpZGUiLCJyZWJ1aWxkIiwiZ2xvYmFsUmVidWlsZCIsIm1vdW50IiwidW5iaW5kTGlzdGVuZXIiLCJiaW5kTGlzdGVuZXIiLCJnbG9iYWxTaG93IiwiaGFzVGFyZ2V0IiwiZ2xvYmFsSGlkZSIsInN0YXRpY01ldGhvZHMiLCJiaW5kV2luZG93RXZlbnRzIiwicmVzaXplSGlkZSIsIm9uV2luZG93UmVzaXplIiwidW5iaW5kV2luZG93RXZlbnRzIiwid2luZG93TGlzdGVuZXIiLCJlbGUiLCJjdXN0b21CaW5kTGlzdGVuZXIiLCJfdGhpcyIsIl90aGlzJHN0YXRlIiwiZXZlbnRPZmYiLCJkYXRhRXZlbnQiLCJjdXN0b21MaXN0ZW5lciIsImN1c3RvbVVuYmluZExpc3RlbmVyIiwiX3RoaXMkc3RhdGUyIiwiaXNCb2R5TW9kZSIsImJvZHlNb2RlIiwiYmluZEJvZHlMaXN0ZW5lciIsInBvc3NpYmxlQ3VzdG9tRXZlbnRzIiwicG9zc2libGVDdXN0b21FdmVudHNPZmYiLCJib2R5IiwiY3VzdG9tRXZlbnRzIiwiY3VzdG9tRXZlbnRzT2ZmIiwidW5iaW5kQm9keUxpc3RlbmVyIiwibGlzdGVuZXJzIiwiYm9keU1vZGVMaXN0ZW5lcnMiLCJfZXZlbnQiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJ1cGRhdGVUb29sdGlwIiwibW91c2VvdXQiLCJ0YXJnZXRFdmVudE9mZiIsIl9ldmVudDIiLCJfZXZlbnQzIiwiX1JlYWN0JENvbXBvbmVudCIsIl9jbGFzc0NhbGxDaGVjayIsImV4dHJhQ2xhc3MiLCJkZWxheUhpZGUiLCJkZWxheVNob3ciLCJjdXJyZW50RXZlbnQiLCJhcmlhUHJvcHMiLCJpc0VtcHR5VGlwIiwiZGlzYWJsZSIsIm9yaWdpblRvb2x0aXAiLCJpc011bHRpbGluZSIsImRlbGF5U2hvd0xvb3AiLCJkZWxheUhpZGVMb29wIiwiZGVsYXlSZXNob3ciLCJpbnRlcnZhbFVwZGF0ZUNvbnRlbnQiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfaW5oZXJpdHMiLCJhbnkiLCJib29sIiwiaW5zZWN1cmUiLCJudW1iZXIiLCJkZWxheVVwZGF0ZSIsImdsb2JhbEV2ZW50T2ZmIiwiYWZ0ZXJTaG93IiwiZnVuYyIsImFmdGVySGlkZSIsIm92ZXJyaWRlUG9zaXRpb24iLCJzY3JvbGxIaWRlIiwid3JhcHBlciIsImNsaWNrYWJsZSIsIm1ldGhvZEFycmF5IiwiX3RoaXMyIiwiX3RoaXMkcHJvcHMiLCJpbmplY3RTdHlsZXMiLCJjbGVhclRpbWVyIiwicmVtb3ZlU2Nyb2xsTGlzdGVuZXIiLCJ0b29sdGlwUmVmIiwiZG9tUm9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJtYXRjaGVzIiwibXNNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJzZWxlY3RvciIsImVzY2FwZWQiLCJzaGFkb3dSb290IiwiX3RoaXMzIiwiX3RoaXMkcHJvcHMyIiwidW5iaW5kQmFzaWNMaXN0ZW5lciIsImlzQ2FwdHVyZU1vZGUiLCJiaW5kUmVtb3ZhbFRyYWNrZXIiLCJfdGhpczQiLCJfdGhpcyRwcm9wczMiLCJ1bmJpbmRSZW1vdmFsVHJhY2tlciIsIl90aGlzJHByb3BzNCIsInBsYWNlaG9sZGVyIiwiaXNHbG9iYWxDYWxsIiwiX3RoaXMkcHJvcHM1Iiwic3dpdGNoVG9Tb2xpZCIsIkZvY3VzRXZlbnQiLCJyZXNob3dEZWxheSIsInVwZGF0ZVN0YXRlIiwiYWRkU2Nyb2xsTGlzdGVuZXIiLCJzZXRJbnRlcnZhbCIsIl9nZXRDb250ZW50IiwidXBkYXRlUG9zaXRpb24iLCJfdGhpczUiLCJnZXRUb29sdGlwQ29udGVudCIsImV2ZW50VGFyZ2V0IiwibW91c2VPblRvb2xUaXAiLCJkZWxheVRpbWUiLCJpc0ludmlzaWJsZSIsIl90aGlzNiIsImlzU2Nyb2xsIiwiaXNNeUVsZW1lbnQiLCJyZXNldFN0YXRlIiwiaXNWaXNpYmxlIiwibGlzdGVuRm9yVG9vbHRpcEV4aXQiLCJyZW1vdmVMaXN0ZW5lckZvclRvb2x0aXBFeGl0IiwiaGlkZVRvb2x0aXBPblNjcm9sbCIsIl90aGlzNyIsImNsZWFySW50ZXJ2YWwiLCJfdGhpczgiLCJjb2xvciIsIl90aGlzOSIsIl90aGlzJHN0YXRlMyIsInRvb2x0aXBDbGFzcyIsImhhc0N1c3RvbUNvbG9ycyIsIldyYXBwZXIiLCJzdXBwb3J0ZWRXcmFwcGVycyIsIndyYXBwZXJDbGFzc05hbWUiLCJodG1sQ29udGVudCIsIl9yZWYiLCJfcmVmMiIsIm5leHRQcm9wcyIsInByZXZTdGF0ZSIsIm5ld0FyaWFQcm9wcyIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRhdGlvbk9ic2VydmVyIiwiTW96TXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmVyIiwibXV0YXRpb25zIiwibTEiLCJtdXRhdGlvbiIsIm0yIiwicmVtb3ZlZE5vZGVzIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJyZW1vdmFsVHJhY2tlciIsImRpc2Nvbm5lY3QiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpblF1ZXVlIiwidGltZW91dCIsImxlbiIsInJ1biIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJhcnJheSIsIm5vb3AiLCJuZXh0VGljayIsImFyZ3MiLCJ0aXRsZSIsImJyb3dzZXIiLCJhcmd2Iiwib24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImVtaXQiLCJwcmVwZW5kTGlzdGVuZXIiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwiZGlyIiwidW1hc2siLCJBc3luY01vZGUiLCJDb25jdXJyZW50TW9kZSIsIkNvbnRleHRDb25zdW1lciIsIkNvbnRleHRQcm92aWRlciIsIkVsZW1lbnQiLCJMYXp5IiwiUG9ydGFsIiwiUHJvZmlsZXIiLCJpc0FzeW5jTW9kZSIsImlzQ29uY3VycmVudE1vZGUiLCJpc0NvbnRleHRDb25zdW1lciIsImlzQ29udGV4dFByb3ZpZGVyIiwiaXNFbGVtZW50IiwiaXNGb3J3YXJkUmVmIiwiaXNGcmFnbWVudCIsImlzTGF6eSIsImlzUG9ydGFsIiwiaXNQcm9maWxlciIsImlzU3RyaWN0TW9kZSIsImlzU3VzcGVuc2UiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ0eXBlT2YiLCJydW50aW1lIiwiT3AiLCJoYXNPd24iLCIkU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnU3ltYm9sIiwiZGVmaW5lIiwiZXJyIiwid3JhcCIsImlubmVyRm4iLCJvdXRlckZuIiwidHJ5TG9jc0xpc3QiLCJwcm90b0dlbmVyYXRvciIsIkdlbmVyYXRvciIsImdlbmVyYXRvciIsIkNvbnRleHQiLCJfaW52b2tlIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwiQ29udGludWVTZW50aW5lbCIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVjb3JkIiwidHJ5Q2F0Y2giLCJkb25lIiwibWFrZUludm9rZU1ldGhvZCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJJdGVyYXRvclByb3RvdHlwZSIsImdldFByb3RvIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJ2YWx1ZXMiLCJHcCIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwicmVqZWN0IiwiaW52b2tlIiwiX19hd2FpdCIsInVud3JhcHBlZCIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsImxvY3MiLCJlbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInJlc2V0VHJ5RW50cnkiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpdGVyYWJsZSIsIml0ZXJhdG9yTWV0aG9kIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsImdlbkZ1biIsImN0b3IiLCJtYXJrIiwiYXdyYXAiLCJhc3luYyIsIml0ZXIiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsInN0b3AiLCJyb290UmVjb3JkIiwicnZhbCIsImV4Y2VwdGlvbiIsImhhbmRsZSIsImxvYyIsImNhdWdodCIsImhhc0NhdGNoIiwiaGFzRmluYWxseSIsImZpbmFsbHlFbnRyeSIsImNvbXBsZXRlIiwiZmluaXNoIiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsInJlZ2VuZXJhdG9yUnVudGltZSIsImFjY2lkZW50YWxTdHJpY3RNb2RlIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJlbXB0eUZ1bmN0aW9uIiwiZW1wdHlGdW5jdGlvbldpdGhSZXNldCIsInJlc2V0V2FybmluZ0NhY2hlIiwic2hpbSIsInByb3BOYW1lIiwiY29tcG9uZW50TmFtZSIsImxvY2F0aW9uIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImJpZ2ludCIsInN5bWJvbCIsImFycmF5T2YiLCJlbGVtZW50VHlwZSIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwic2hhcGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJhcnIiLCJhcnIyIiwiX3NsaWNlZFRvQXJyYXkiLCJfaSIsIl9zIiwiX2FyciIsIl9uIiwiX2QiLCJtaW5MZW4iLCJmcm9tIiwiQnV0dG9uQ29udGFpbmVyIiwic3R5bGVkIiwiZGl2IiwiQnV0dG9uIiwic2V0dGluZyIsImlzTW9iaWxlIiwib25DbGljayIsIm1vYmlsZV9wb3NpdGlvbiIsIm1vYmlsZV9zaXplIiwibW9iaWxlX3Nob3ciLCJ3cml0aW5nTW9kZSIsInRleHRPcmllbnRhdGlvbiIsInBhZGRpbmciLCJib3JkZXJUb3BMZWZ0UmFkaXVzIiwiYm9yZGVyQm90dG9tTGVmdFJhZGl1cyIsInRyYW5zZm9ybSIsImJvcmRlclRvcFJpZ2h0UmFkaXVzIiwiYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMiLCJmb250U2l6ZSIsIm1vYmlsZV9iYWNrZ3JvdW5kIiwibW9iaWxlX2NvbG9yIiwibW9iaWxlX3RleHQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJfbmV4dCIsIl90aHJvdyIsImFyaWFIaWRkZW4iLCJ2aWV3Qm94IiwiQ29udGFpbmV0IiwiRXJyb3JMaW5lIiwibWVzc2FnZSIsIkNvbnRhaW5lciIsIlRleHQiLCJTZWxlY3QiLCJzZWxlY3QiLCJJY29uIiwieG1sbnMiLCJmaWxsUnVsZSIsImNsaXBSdWxlIiwiQ29udGFpbmVyU2VsZWN0IiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsImlzU2hvdyIsIm9uQ2hhbmdlIiwibGlzdCIsIm1vYmlsZV9saXN0IiwibW9iaWxlX3RpdGxlIiwiZGlzYWJsZWQiLCJoaWRkZW4iLCJtb2JpbGVfaGludF90aXRsZSIsImhpbnRfdGl0bGUiLCJidXR0b24iLCJEb25lIiwidHJhbnNsYXRpb24iLCJvblNlbmRGZWVmYmFjayIsImNsaXBQYXRoIiwiTG9nb0NvbnRhaW5lciIsIkNvbnRhaW5lck5vdExvZ28iLCJIZWFkZXIiLCJyYXRpbmciLCJvbkNsb3NlIiwibG9nbyIsIm1vYmlsZV9sb2dvIiwibW9iaWxlX2xvZ29fcG9zaXRpb24iLCJsb2dvX3Bvc2l0aW9uIiwibW9iaWxlX2hlYWRlcl9iYWNrZ3JvdW5kIiwiaGVhZGVyX2JhY2tncm91bmQiLCJjdXJzb3IiLCJMaW5rIiwibGluayIsIl90eXBlb2YiLCJfb2JqZWN0U3ByZWFkIiwiYm9yZGVyUmFkaXVzIiwiU3R5bGUiLCJlbXB0eSIsImZ1bGwiLCJpY29uIiwiX1JlYWN0JFB1cmVDb21wb25lbnQiLCJSYXRpbmdTeW1ib2wiLCJfaWNvbkNvbnRhaW5lclN0eWxlIiwiaW5hY3RpdmVJY29uIiwiYWN0aXZlSWNvbiIsInBlcmNlbnQiLCJkaXJlY3Rpb24iLCJyZWFkb25seSIsIm9uTW91c2VNb3ZlIiwiYmFja2dyb3VuZE5vZGUiLCJiZ0ljb25Db250YWluZXJTdHlsZSIsInZpc2liaWxpdHkiLCJpY29uTm9kZSIsImljb25Db250YWluZXJTdHlsZSIsIm92ZXJmbG93IiwiaGFuZGxlTW91c2VNb3ZlIiwiaGFuZGxlTW91c2VDbGljayIsInByZXZlbnREZWZhdWx0Iiwib25Ub3VjaE1vdmUiLCJvblRvdWNoRW5kIiwiUmF0aW5nIiwiZGlzcGxheVZhbHVlIiwiaW50ZXJhY3RpbmciLCJvbk1vdXNlTGVhdmUiLCJzeW1ib2xNb3VzZU1vdmUiLCJzeW1ib2xDbGljayIsInZhbHVlQ2hhbmdlZCIsInByZXZQcm9wcyIsIm9uSG92ZXIiLCJzeW1ib2xJbmRleCIsImNhbGN1bGF0ZURpc3BsYXlWYWx1ZSIsInBlcmNlbnRhZ2UiLCJjYWxjdWxhdGVIb3ZlclBlcmNlbnRhZ2UiLCJmcmFjdGlvbiIsImZyYWN0aW9ucyIsInByZWNpc2lvbiIsInBvdyIsInRvdGFsU3ltYm9scyIsImNoYW5nZWRUb3VjaGVzIiwidG91Y2hlcyIsInRhcmdldFJlY3QiLCJkZWx0YSIsInJlbmRlcmVkVmFsdWUiLCJxdWlldCIsInBsYWNlaG9sZGVyVmFsdWUiLCJlbXB0eVN5bWJvbCIsImZ1bGxTeW1ib2wiLCJwbGFjZWhvbGRlclN5bWJvbCIsInRhYkluZGV4Iiwic3ltYm9sTm9kZXMiLCJzaG91bGREaXNwbGF5UGxhY2Vob2xkZXIiLCJmdWxsU3ltYm9scyIsIl9uYW1lIiwiUmF0aW5nQVBJTGF5ZXIiLCJpbml0aWFsUmF0aW5nIiwiaGFuZGxlQ2xpY2siLCJoYW5kbGVIb3ZlciIsIm5ld1ZhbHVlIiwidHJhbnNsYXRlRGlzcGxheVZhbHVlVG9WYWx1ZSIsInRyYW5zbGF0ZWRWYWx1ZSIsInN0ZXAiLCJzdGFydCIsImNhbGN1bGF0ZVRvdGFsU3ltYm9scyIsInRyYW5sYXRlVmFsdWVUb0Rpc3BsYXlWYWx1ZSIsInBsYWNlaG9sZGVyUmF0aW5nIiwiU3RhclllbGxvdyIsIlN0YXJHcmF5IiwiSGF0ZSIsIkRpc2xpa2UiLCJOZXV0cmFsIiwiTGlrZSIsIkxvdmUiLCJSYXRpbmdDb250ZW50IiwiUmF0aW5nQ29udGFpbmVyIiwib25DaGFuZ2VSYXRpbmciLCJzZXRob3ZlckVtb2ppIiwibW9iaWxlX3R5cGUiLCJtb2JpbGVfcmF0aW5nX3RleHQiLCJyYXRpbmdfdGV4dCIsIm1vYmlsZV90ZXh0X2NvbG9yIiwidGV4dF9jb2xvciIsImRhdGEtdGlwIiwiZ2V0RW1vamkiLCJyZXF1aXJlZCIsIlRleHRhcmVhIiwidGV4dGFyZWEiLCJSZXZpZXciLCJyZXZpZXciLCJtb2JpbGVfaGludCIsImhpbnQiLCJUaGFua1lvdSIsIldhdGVybWFyayIsIm1vYmlsZV93YXRlcm1hcmsiLCJ3YXRlcm1hcmsiLCJocmVmIiwiQ29udGVudCIsImZvcm0iLCJJbWFnZSIsIkNvbnRhaW5lckJ1dHRvbiIsIkNvbnRhaW5lckVtYWlsIiwiVGV4dEVtYWlsIiwiRW1haWwiLCJUaGFua1lvdUNvbnRlbnQiLCJ3aWRnZXQiLCJvbkNvbnRpbnVlU2hvcHBpbmciLCJlcnJvcnMiLCJzZXRFbWFpbCIsInBvcHVwIiwidGhhbmtfeW91IiwiZW1haWwiLCJtb2JpbGVfZW1haWwiLCJlbWFpbF90aXRsZSIsIm1vYmlsZV9lbWFpbF90aXRsZSIsImVtYWlsX2hpbnQiLCJtb2JpbGVfZW1haWxfaGludCIsImNvbnRpbnVlX3Nob3BwaW5nIiwibW9iaWxlX2NvbnRpbnVlX3Nob3BwaW5nIiwib25TdWJtaXQiLCJNb2RhbENvbnRlbnQiLCJpc1Nob3dSYXRpbmciLCJpc1Nob3dDYXRlZ29yeSIsImlzU2hvd1JldmlldyIsImlzU2hvd0RvbmUiLCJpc1Nob3dMaW5rIiwiaXNUaGFua1lvdSIsIldpZGdldENvbnRhaW5lciIsImZldGNoRmVlZGJhY2siLCJmZXRjaEZlZWRiYWNrRW1haWwiLCJzZXRWYWx1ZXMiLCJ3aWRnZXRTaG93UmF0aW5nIiwid2lkZ2V0U2hvd0NhdGVnb3J5Iiwid2lkZ2V0U2hvd1JldmlldyIsIndpZGdldFNob3dMaW5rIiwid2lkZ2V0VGhhbmtZb3UiLCJzZXRJc1Nob3dSYXRpbmciLCJzZXRJc1Nob3dDYXRlZ29yeSIsInNldElzU2hvd1JldmlldyIsImZlZWRiYWNrSWQiLCJzZXRGZWVkYmFja0lkIiwic2V0SXNUaGFua1lvdSIsInNldEVycm9ycyIsImdldFNob3dEb25lIiwiaGFuZGxlQ2xvc2UiLCJ0bXBFcnJvcnMiLCJ2YWxpZGF0ZUVtYWlsIiwidXJsIiwiZWxlbWVudElkIiwiZmV0Y2giLCJzdHJpbmdpZnkiLCJzaG9waWZ5X2RvbWFpbiIsImhlYWRlcnMiLCJyZXNwIiwianNvbiIsIm9uU2hvdyIsIm92ZXJsYXkiLCJnZXRFbGVtZW50QnlJZCIsImFsbCIsImFycmF5QnVmZmVyIiwiZm9udCIsImZvbnRGYWNlIiwiRm9udEZhY2UiLCJmb250cyIsImFjdGl2ZSIsInNldHRpbmdzIiwiZ2V0U3R5bGVCdXR0b24iLCJhdHRyIiwiZ2VuUGFyZW50RWxlbWVudFdpZGdldCIsIlJlYWN0RE9NIiwidHJhbnNpdGlvbiIsIm9uY2xpY2siLCJnZW5PdmVybGF5RWxlbWVudFdpZGdldCIsImNvbnNvbGUiLCJsb2ciLCJnZXRSYW5kb21WYWx1ZXMiLCJjcnlwdG8iLCJtc0NyeXB0byIsInJuZHM4IiwiVWludDhBcnJheSIsInJuZyIsImJ5dGVUb0hleCIsInN1YnN0ciIsImJ1ZiIsImJ0aCIsInJuZHMiLCJpaSJdLCJtYXBwaW5ncyI6ImlDQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFP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QUFLODdDLEVBQUlELEVBQUk3N0MsTUFBTzg3QyxFQUFJRCxFQUFJNzdDLE1BQU8sSUFBSzg3QyxFQUFJRCxFQUFJNzdDLE1BQU84N0MsRUFBSUQsRUFBSTc3QyxNQUFPODdDLEVBQUlELEVBQUk3N0MsTUFBTzg3QyxFQUFJRCxFQUFJNzdDLE1BQU84N0MsRUFBSUQsRUFBSTc3QyxNQUFPODdDLEVBQUlELEVBQUk3N0MsT0FBT29RLEtBQUssS0NZcFEsSUF2QmYsU0FBWWdDLEVBQVN5cEMsRUFBS3gzQixHQUN4QixJQUFJcmtCLEVBQUk2N0MsR0FBT3gzQixHQUFVLEVBRUgsaUJBQVhqUyxJQUNUeXBDLEVBQWtCLFdBQVp6cEMsRUFBdUIsSUFBSXZOLE1BQU0sSUFBTSxLQUM3Q3VOLEVBQVUsTUFJWixJQUFJMnBDLEdBREozcEMsRUFBVUEsR0FBVyxJQUNGdWIsU0FBV3ZiLEVBQVFzcEMsS0FBT0EsS0FLN0MsR0FIQUssRUFBSyxHQUFlLEdBQVZBLEVBQUssR0FBWSxHQUMzQkEsRUFBSyxHQUFlLEdBQVZBLEVBQUssR0FBWSxJQUV2QkYsRUFDRixJQUFLLElBQUlHLEVBQUssRUFBR0EsRUFBSyxLQUFNQSxFQUMxQkgsRUFBSTc3QyxFQUFJZzhDLEdBQU1ELEVBQUtDLEdBSXZCLE9BQU9ILEdBQU8sRUFBWUUiLCJmaWxlIjoid2lkZ2V0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDE3KTtcbiIsInZhciBuLGwsdSxpLHQsbyxyLGYsZT17fSxjPVtdLHM9L2FjaXR8ZXgoPzpzfGd8bnxwfCQpfHJwaHxncmlkfG93c3xtbmN8bnR3fGluZVtjaF18em9vfF5vcmR8aXRlcmEvaTtmdW5jdGlvbiBhKG4sbCl7Zm9yKHZhciB1IGluIGwpblt1XT1sW3VdO3JldHVybiBufWZ1bmN0aW9uIGgobil7dmFyIGw9bi5wYXJlbnROb2RlO2wmJmwucmVtb3ZlQ2hpbGQobil9ZnVuY3Rpb24gdihsLHUsaSl7dmFyIHQsbyxyLGY9e307Zm9yKHIgaW4gdSlcImtleVwiPT1yP3Q9dVtyXTpcInJlZlwiPT1yP289dVtyXTpmW3JdPXVbcl07aWYoYXJndW1lbnRzLmxlbmd0aD4yJiYoZi5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/bi5jYWxsKGFyZ3VtZW50cywyKTppKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBsJiZudWxsIT1sLmRlZmF1bHRQcm9wcylmb3IociBpbiBsLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1mW3JdJiYoZltyXT1sLmRlZmF1bHRQcm9wc1tyXSk7cmV0dXJuIHkobCxmLHQsbyxudWxsKX1mdW5jdGlvbiB5KG4saSx0LG8scil7dmFyIGY9e3R5cGU6bixwcm9wczppLGtleTp0LHJlZjpvLF9fazpudWxsLF9fOm51bGwsX19iOjAsX19lOm51bGwsX19kOnZvaWQgMCxfX2M6bnVsbCxfX2g6bnVsbCxjb25zdHJ1Y3Rvcjp2b2lkIDAsX192Om51bGw9PXI/Kyt1OnJ9O3JldHVybiBudWxsPT1yJiZudWxsIT1sLnZub2RlJiZsLnZub2RlKGYpLGZ9ZnVuY3Rpb24gcCgpe3JldHVybntjdXJyZW50Om51bGx9fWZ1bmN0aW9uIGQobil7cmV0dXJuIG4uY2hpbGRyZW59ZnVuY3Rpb24gXyhuLGwpe3RoaXMucHJvcHM9bix0aGlzLmNvbnRleHQ9bH1mdW5jdGlvbiBrKG4sbCl7aWYobnVsbD09bClyZXR1cm4gbi5fXz9rKG4uX18sbi5fXy5fX2suaW5kZXhPZihuKSsxKTpudWxsO2Zvcih2YXIgdTtsPG4uX19rLmxlbmd0aDtsKyspaWYobnVsbCE9KHU9bi5fX2tbbF0pJiZudWxsIT11Ll9fZSlyZXR1cm4gdS5fX2U7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50eXBlP2sobik6bnVsbH1mdW5jdGlvbiBiKG4pe3ZhciBsLHU7aWYobnVsbCE9KG49bi5fXykmJm51bGwhPW4uX19jKXtmb3Iobi5fX2U9bi5fX2MuYmFzZT1udWxsLGw9MDtsPG4uX19rLmxlbmd0aDtsKyspaWYobnVsbCE9KHU9bi5fX2tbbF0pJiZudWxsIT11Ll9fZSl7bi5fX2U9bi5fX2MuYmFzZT11Ll9fZTticmVha31yZXR1cm4gYihuKX19ZnVuY3Rpb24gbShuKXsoIW4uX19kJiYobi5fX2Q9ITApJiZ0LnB1c2gobikmJiFnLl9fcisrfHxyIT09bC5kZWJvdW5jZVJlbmRlcmluZykmJigocj1sLmRlYm91bmNlUmVuZGVyaW5nKXx8bykoZyl9ZnVuY3Rpb24gZygpe2Zvcih2YXIgbjtnLl9fcj10Lmxlbmd0aDspbj10LnNvcnQoZnVuY3Rpb24obixsKXtyZXR1cm4gbi5fX3YuX19iLWwuX192Ll9fYn0pLHQ9W10sbi5zb21lKGZ1bmN0aW9uKG4pe3ZhciBsLHUsaSx0LG8scjtuLl9fZCYmKG89KHQ9KGw9bikuX192KS5fX2UsKHI9bC5fX1ApJiYodT1bXSwoaT1hKHt9LHQpKS5fX3Y9dC5fX3YrMSxqKHIsdCxpLGwuX19uLHZvaWQgMCE9PXIub3duZXJTVkdFbGVtZW50LG51bGwhPXQuX19oP1tvXTpudWxsLHUsbnVsbD09bz9rKHQpOm8sdC5fX2gpLHoodSx0KSx0Ll9fZSE9byYmYih0KSkpfSl9ZnVuY3Rpb24gdyhuLGwsdSxpLHQsbyxyLGYscyxhKXt2YXIgaCx2LHAsXyxiLG0sZyx3PWkmJmkuX19rfHxjLEE9dy5sZW5ndGg7Zm9yKHUuX19rPVtdLGg9MDtoPGwubGVuZ3RoO2grKylpZihudWxsIT0oXz11Ll9fa1toXT1udWxsPT0oXz1sW2hdKXx8XCJib29sZWFuXCI9PXR5cGVvZiBfP251bGw6XCJzdHJpbmdcIj09dHlwZW9mIF98fFwibnVtYmVyXCI9PXR5cGVvZiBffHxcImJpZ2ludFwiPT10eXBlb2YgXz95KG51bGwsXyxudWxsLG51bGwsXyk6QXJyYXkuaXNBcnJheShfKT95KGQse2NoaWxkcmVuOl99LG51bGwsbnVsbCxudWxsKTpfLl9fYj4wP3koXy50eXBlLF8ucHJvcHMsXy5rZXksbnVsbCxfLl9fdik6Xykpe2lmKF8uX189dSxfLl9fYj11Ll9fYisxLG51bGw9PT0ocD13W2hdKXx8cCYmXy5rZXk9PXAua2V5JiZfLnR5cGU9PT1wLnR5cGUpd1toXT12b2lkIDA7ZWxzZSBmb3Iodj0wO3Y8QTt2Kyspe2lmKChwPXdbdl0pJiZfLmtleT09cC5rZXkmJl8udHlwZT09PXAudHlwZSl7d1t2XT12b2lkIDA7YnJlYWt9cD1udWxsfWoobixfLHA9cHx8ZSx0LG8scixmLHMsYSksYj1fLl9fZSwodj1fLnJlZikmJnAucmVmIT12JiYoZ3x8KGc9W10pLHAucmVmJiZnLnB1c2gocC5yZWYsbnVsbCxfKSxnLnB1c2godixfLl9fY3x8YixfKSksbnVsbCE9Yj8obnVsbD09bSYmKG09YiksXCJmdW5jdGlvblwiPT10eXBlb2YgXy50eXBlJiZfLl9faz09PXAuX19rP18uX19kPXM9eChfLHMsbik6cz1QKG4sXyxwLHcsYixzKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB1LnR5cGUmJih1Ll9fZD1zKSk6cyYmcC5fX2U9PXMmJnMucGFyZW50Tm9kZSE9biYmKHM9ayhwKSl9Zm9yKHUuX19lPW0saD1BO2gtLTspbnVsbCE9d1toXSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHUudHlwZSYmbnVsbCE9d1toXS5fX2UmJndbaF0uX19lPT11Ll9fZCYmKHUuX19kPWsoaSxoKzEpKSxOKHdbaF0sd1toXSkpO2lmKGcpZm9yKGg9MDtoPGcubGVuZ3RoO2grKylNKGdbaF0sZ1srK2hdLGdbKytoXSl9ZnVuY3Rpb24geChuLGwsdSl7Zm9yKHZhciBpLHQ9bi5fX2ssbz0wO3QmJm88dC5sZW5ndGg7bysrKShpPXRbb10pJiYoaS5fXz1uLGw9XCJmdW5jdGlvblwiPT10eXBlb2YgaS50eXBlP3goaSxsLHUpOlAodSxpLGksdCxpLl9fZSxsKSk7cmV0dXJuIGx9ZnVuY3Rpb24gQShuLGwpe3JldHVybiBsPWx8fFtdLG51bGw9PW58fFwiYm9vbGVhblwiPT10eXBlb2Ygbnx8KEFycmF5LmlzQXJyYXkobik/bi5zb21lKGZ1bmN0aW9uKG4pe0EobixsKX0pOmwucHVzaChuKSksbH1mdW5jdGlvbiBQKG4sbCx1LGksdCxvKXt2YXIgcixmLGU7aWYodm9pZCAwIT09bC5fX2Qpcj1sLl9fZCxsLl9fZD12b2lkIDA7ZWxzZSBpZihudWxsPT11fHx0IT1vfHxudWxsPT10LnBhcmVudE5vZGUpbjppZihudWxsPT1vfHxvLnBhcmVudE5vZGUhPT1uKW4uYXBwZW5kQ2hpbGQodCkscj1udWxsO2Vsc2V7Zm9yKGY9byxlPTA7KGY9Zi5uZXh0U2libGluZykmJmU8aS5sZW5ndGg7ZSs9MilpZihmPT10KWJyZWFrIG47bi5pbnNlcnRCZWZvcmUodCxvKSxyPW99cmV0dXJuIHZvaWQgMCE9PXI/cjp0Lm5leHRTaWJsaW5nfWZ1bmN0aW9uIEMobixsLHUsaSx0KXt2YXIgbztmb3IobyBpbiB1KVwiY2hpbGRyZW5cIj09PW98fFwia2V5XCI9PT1vfHxvIGluIGx8fEgobixvLG51bGwsdVtvXSxpKTtmb3IobyBpbiBsKXQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGxbb118fFwiY2hpbGRyZW5cIj09PW98fFwia2V5XCI9PT1vfHxcInZhbHVlXCI9PT1vfHxcImNoZWNrZWRcIj09PW98fHVbb109PT1sW29dfHxIKG4sbyxsW29dLHVbb10saSl9ZnVuY3Rpb24gJChuLGwsdSl7XCItXCI9PT1sWzBdP24uc2V0UHJvcGVydHkobCx1KTpuW2xdPW51bGw9PXU/XCJcIjpcIm51bWJlclwiIT10eXBlb2YgdXx8cy50ZXN0KGwpP3U6dStcInB4XCJ9ZnVuY3Rpb24gSChuLGwsdSxpLHQpe3ZhciBvO246aWYoXCJzdHlsZVwiPT09bClpZihcInN0cmluZ1wiPT10eXBlb2YgdSluLnN0eWxlLmNzc1RleHQ9dTtlbHNle2lmKFwic3RyaW5nXCI9PXR5cGVvZiBpJiYobi5zdHlsZS5jc3NUZXh0PWk9XCJcIiksaSlmb3IobCBpbiBpKXUmJmwgaW4gdXx8JChuLnN0eWxlLGwsXCJcIik7aWYodSlmb3IobCBpbiB1KWkmJnVbbF09PT1pW2xdfHwkKG4uc3R5bGUsbCx1W2xdKX1lbHNlIGlmKFwib1wiPT09bFswXSYmXCJuXCI9PT1sWzFdKW89bCE9PShsPWwucmVwbGFjZSgvQ2FwdHVyZSQvLFwiXCIpKSxsPWwudG9Mb3dlckNhc2UoKWluIG4/bC50b0xvd2VyQ2FzZSgpLnNsaWNlKDIpOmwuc2xpY2UoMiksbi5sfHwobi5sPXt9KSxuLmxbbCtvXT11LHU/aXx8bi5hZGRFdmVudExpc3RlbmVyKGwsbz9UOkksbyk6bi5yZW1vdmVFdmVudExpc3RlbmVyKGwsbz9UOkksbyk7ZWxzZSBpZihcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCIhPT1sKXtpZih0KWw9bC5yZXBsYWNlKC94bGlua1tIOmhdLyxcImhcIikucmVwbGFjZSgvc05hbWUkLyxcInNcIik7ZWxzZSBpZihcImhyZWZcIiE9PWwmJlwibGlzdFwiIT09bCYmXCJmb3JtXCIhPT1sJiZcInRhYkluZGV4XCIhPT1sJiZcImRvd25sb2FkXCIhPT1sJiZsIGluIG4pdHJ5e25bbF09bnVsbD09dT9cIlwiOnU7YnJlYWsgbn1jYXRjaChuKXt9XCJmdW5jdGlvblwiPT10eXBlb2YgdXx8KG51bGwhPXUmJighMSE9PXV8fFwiYVwiPT09bFswXSYmXCJyXCI9PT1sWzFdKT9uLnNldEF0dHJpYnV0ZShsLHUpOm4ucmVtb3ZlQXR0cmlidXRlKGwpKX19ZnVuY3Rpb24gSShuKXt0aGlzLmxbbi50eXBlKyExXShsLmV2ZW50P2wuZXZlbnQobik6bil9ZnVuY3Rpb24gVChuKXt0aGlzLmxbbi50eXBlKyEwXShsLmV2ZW50P2wuZXZlbnQobik6bil9ZnVuY3Rpb24gaihuLHUsaSx0LG8scixmLGUsYyl7dmFyIHMsaCx2LHkscCxrLGIsbSxnLHgsQSxQPXUudHlwZTtpZih2b2lkIDAhPT11LmNvbnN0cnVjdG9yKXJldHVybiBudWxsO251bGwhPWkuX19oJiYoYz1pLl9faCxlPXUuX19lPWkuX19lLHUuX19oPW51bGwscj1bZV0pLChzPWwuX19iKSYmcyh1KTt0cnl7bjppZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQKXtpZihtPXUucHJvcHMsZz0ocz1QLmNvbnRleHRUeXBlKSYmdFtzLl9fY10seD1zP2c/Zy5wcm9wcy52YWx1ZTpzLl9fOnQsaS5fX2M/Yj0oaD11Ll9fYz1pLl9fYykuX189aC5fX0U6KFwicHJvdG90eXBlXCJpbiBQJiZQLnByb3RvdHlwZS5yZW5kZXI/dS5fX2M9aD1uZXcgUChtLHgpOih1Ll9fYz1oPW5ldyBfKG0seCksaC5jb25zdHJ1Y3Rvcj1QLGgucmVuZGVyPU8pLGcmJmcuc3ViKGgpLGgucHJvcHM9bSxoLnN0YXRlfHwoaC5zdGF0ZT17fSksaC5jb250ZXh0PXgsaC5fX249dCx2PWguX19kPSEwLGguX19oPVtdKSxudWxsPT1oLl9fcyYmKGguX19zPWguc3RhdGUpLG51bGwhPVAuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiYoaC5fX3M9PWguc3RhdGUmJihoLl9fcz1hKHt9LGguX19zKSksYShoLl9fcyxQLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhtLGguX19zKSkpLHk9aC5wcm9wcyxwPWguc3RhdGUsdiludWxsPT1QLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyYmbnVsbCE9aC5jb21wb25lbnRXaWxsTW91bnQmJmguY29tcG9uZW50V2lsbE1vdW50KCksbnVsbCE9aC5jb21wb25lbnREaWRNb3VudCYmaC5fX2gucHVzaChoLmNvbXBvbmVudERpZE1vdW50KTtlbHNle2lmKG51bGw9PVAuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzJiZtIT09eSYmbnVsbCE9aC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZoLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobSx4KSwhaC5fX2UmJm51bGwhPWguc2hvdWxkQ29tcG9uZW50VXBkYXRlJiYhMT09PWguc2hvdWxkQ29tcG9uZW50VXBkYXRlKG0saC5fX3MseCl8fHUuX192PT09aS5fX3Ype2gucHJvcHM9bSxoLnN0YXRlPWguX19zLHUuX192IT09aS5fX3YmJihoLl9fZD0hMSksaC5fX3Y9dSx1Ll9fZT1pLl9fZSx1Ll9faz1pLl9fayx1Ll9fay5mb3JFYWNoKGZ1bmN0aW9uKG4pe24mJihuLl9fPXUpfSksaC5fX2gubGVuZ3RoJiZmLnB1c2goaCk7YnJlYWsgbn1udWxsIT1oLmNvbXBvbmVudFdpbGxVcGRhdGUmJmguY29tcG9uZW50V2lsbFVwZGF0ZShtLGguX19zLHgpLG51bGwhPWguY29tcG9uZW50RGlkVXBkYXRlJiZoLl9faC5wdXNoKGZ1bmN0aW9uKCl7aC5jb21wb25lbnREaWRVcGRhdGUoeSxwLGspfSl9aC5jb250ZXh0PXgsaC5wcm9wcz1tLGguc3RhdGU9aC5fX3MsKHM9bC5fX3IpJiZzKHUpLGguX19kPSExLGguX192PXUsaC5fX1A9bixzPWgucmVuZGVyKGgucHJvcHMsaC5zdGF0ZSxoLmNvbnRleHQpLGguc3RhdGU9aC5fX3MsbnVsbCE9aC5nZXRDaGlsZENvbnRleHQmJih0PWEoYSh7fSx0KSxoLmdldENoaWxkQ29udGV4dCgpKSksdnx8bnVsbD09aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8KGs9aC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSh5LHApKSxBPW51bGwhPXMmJnMudHlwZT09PWQmJm51bGw9PXMua2V5P3MucHJvcHMuY2hpbGRyZW46cyx3KG4sQXJyYXkuaXNBcnJheShBKT9BOltBXSx1LGksdCxvLHIsZixlLGMpLGguYmFzZT11Ll9fZSx1Ll9faD1udWxsLGguX19oLmxlbmd0aCYmZi5wdXNoKGgpLGImJihoLl9fRT1oLl9fPW51bGwpLGguX19lPSExfWVsc2UgbnVsbD09ciYmdS5fX3Y9PT1pLl9fdj8odS5fX2s9aS5fX2ssdS5fX2U9aS5fX2UpOnUuX19lPUwoaS5fX2UsdSxpLHQsbyxyLGYsYyk7KHM9bC5kaWZmZWQpJiZzKHUpfWNhdGNoKG4pe3UuX192PW51bGwsKGN8fG51bGwhPXIpJiYodS5fX2U9ZSx1Ll9faD0hIWMscltyLmluZGV4T2YoZSldPW51bGwpLGwuX19lKG4sdSxpKX19ZnVuY3Rpb24geihuLHUpe2wuX19jJiZsLl9fYyh1LG4pLG4uc29tZShmdW5jdGlvbih1KXt0cnl7bj11Ll9faCx1Ll9faD1bXSxuLnNvbWUoZnVuY3Rpb24obil7bi5jYWxsKHUpfSl9Y2F0Y2gobil7bC5fX2Uobix1Ll9fdil9fSl9ZnVuY3Rpb24gTChsLHUsaSx0LG8scixmLGMpe3ZhciBzLGEsdix5PWkucHJvcHMscD11LnByb3BzLGQ9dS50eXBlLF89MDtpZihcInN2Z1wiPT09ZCYmKG89ITApLG51bGwhPXIpZm9yKDtfPHIubGVuZ3RoO18rKylpZigocz1yW19dKSYmXCJzZXRBdHRyaWJ1dGVcImluIHM9PSEhZCYmKGQ/cy5sb2NhbE5hbWU9PT1kOjM9PT1zLm5vZGVUeXBlKSl7bD1zLHJbX109bnVsbDticmVha31pZihudWxsPT1sKXtpZihudWxsPT09ZClyZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocCk7bD1vP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsZCk6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChkLHAuaXMmJnApLHI9bnVsbCxjPSExfWlmKG51bGw9PT1kKXk9PT1wfHxjJiZsLmRhdGE9PT1wfHwobC5kYXRhPXApO2Vsc2V7aWYocj1yJiZuLmNhbGwobC5jaGlsZE5vZGVzKSxhPSh5PWkucHJvcHN8fGUpLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLHY9cC5kYW5nZXJvdXNseVNldElubmVySFRNTCwhYyl7aWYobnVsbCE9cilmb3IoeT17fSxfPTA7XzxsLmF0dHJpYnV0ZXMubGVuZ3RoO18rKyl5W2wuYXR0cmlidXRlc1tfXS5uYW1lXT1sLmF0dHJpYnV0ZXNbX10udmFsdWU7KHZ8fGEpJiYodiYmKGEmJnYuX19odG1sPT1hLl9faHRtbHx8di5fX2h0bWw9PT1sLmlubmVySFRNTCl8fChsLmlubmVySFRNTD12JiZ2Ll9faHRtbHx8XCJcIikpfWlmKEMobCxwLHksbyxjKSx2KXUuX19rPVtdO2Vsc2UgaWYoXz11LnByb3BzLmNoaWxkcmVuLHcobCxBcnJheS5pc0FycmF5KF8pP186W19dLHUsaSx0LG8mJlwiZm9yZWlnbk9iamVjdFwiIT09ZCxyLGYscj9yWzBdOmkuX19rJiZrKGksMCksYyksbnVsbCE9cilmb3IoXz1yLmxlbmd0aDtfLS07KW51bGwhPXJbX10mJmgocltfXSk7Y3x8KFwidmFsdWVcImluIHAmJnZvaWQgMCE9PShfPXAudmFsdWUpJiYoXyE9PWwudmFsdWV8fFwicHJvZ3Jlc3NcIj09PWQmJiFffHxcIm9wdGlvblwiPT09ZCYmXyE9PXkudmFsdWUpJiZIKGwsXCJ2YWx1ZVwiLF8seS52YWx1ZSwhMSksXCJjaGVja2VkXCJpbiBwJiZ2b2lkIDAhPT0oXz1wLmNoZWNrZWQpJiZfIT09bC5jaGVja2VkJiZIKGwsXCJjaGVja2VkXCIsXyx5LmNoZWNrZWQsITEpKX1yZXR1cm4gbH1mdW5jdGlvbiBNKG4sdSxpKXt0cnl7XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKHUpOm4uY3VycmVudD11fWNhdGNoKG4pe2wuX19lKG4saSl9fWZ1bmN0aW9uIE4obix1LGkpe3ZhciB0LG87aWYobC51bm1vdW50JiZsLnVubW91bnQobiksKHQ9bi5yZWYpJiYodC5jdXJyZW50JiZ0LmN1cnJlbnQhPT1uLl9fZXx8TSh0LG51bGwsdSkpLG51bGwhPSh0PW4uX19jKSl7aWYodC5jb21wb25lbnRXaWxsVW5tb3VudCl0cnl7dC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKG4pe2wuX19lKG4sdSl9dC5iYXNlPXQuX19QPW51bGx9aWYodD1uLl9faylmb3Iobz0wO288dC5sZW5ndGg7bysrKXRbb10mJk4odFtvXSx1LFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4udHlwZSk7aXx8bnVsbD09bi5fX2V8fGgobi5fX2UpLG4uX19lPW4uX19kPXZvaWQgMH1mdW5jdGlvbiBPKG4sbCx1KXtyZXR1cm4gdGhpcy5jb25zdHJ1Y3RvcihuLHUpfWZ1bmN0aW9uIFModSxpLHQpe3ZhciBvLHIsZjtsLl9fJiZsLl9fKHUsaSkscj0obz1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0KT9udWxsOnQmJnQuX19rfHxpLl9fayxmPVtdLGooaSx1PSghbyYmdHx8aSkuX19rPXYoZCxudWxsLFt1XSkscnx8ZSxlLHZvaWQgMCE9PWkub3duZXJTVkdFbGVtZW50LCFvJiZ0P1t0XTpyP251bGw6aS5maXJzdENoaWxkP24uY2FsbChpLmNoaWxkTm9kZXMpOm51bGwsZiwhbyYmdD90OnI/ci5fX2U6aS5maXJzdENoaWxkLG8pLHooZix1KX1mdW5jdGlvbiBxKG4sbCl7UyhuLGwscSl9ZnVuY3Rpb24gQihsLHUsaSl7dmFyIHQsbyxyLGY9YSh7fSxsLnByb3BzKTtmb3IociBpbiB1KVwia2V5XCI9PXI/dD11W3JdOlwicmVmXCI9PXI/bz11W3JdOmZbcl09dVtyXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4yJiYoZi5jaGlsZHJlbj1hcmd1bWVudHMubGVuZ3RoPjM/bi5jYWxsKGFyZ3VtZW50cywyKTppKSx5KGwudHlwZSxmLHR8fGwua2V5LG98fGwucmVmLG51bGwpfWZ1bmN0aW9uIEQobixsKXt2YXIgdT17X19jOmw9XCJfX2NDXCIrZisrLF9fOm4sQ29uc3VtZXI6ZnVuY3Rpb24obixsKXtyZXR1cm4gbi5jaGlsZHJlbihsKX0sUHJvdmlkZXI6ZnVuY3Rpb24obil7dmFyIHUsaTtyZXR1cm4gdGhpcy5nZXRDaGlsZENvbnRleHR8fCh1PVtdLChpPXt9KVtsXT10aGlzLHRoaXMuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIGl9LHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKG4pe3RoaXMucHJvcHMudmFsdWUhPT1uLnZhbHVlJiZ1LnNvbWUobSl9LHRoaXMuc3ViPWZ1bmN0aW9uKG4pe3UucHVzaChuKTt2YXIgbD1uLmNvbXBvbmVudFdpbGxVbm1vdW50O24uY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXt1LnNwbGljZSh1LmluZGV4T2YobiksMSksbCYmbC5jYWxsKG4pfX0pLG4uY2hpbGRyZW59fTtyZXR1cm4gdS5Qcm92aWRlci5fXz11LkNvbnN1bWVyLmNvbnRleHRUeXBlPXV9bj1jLnNsaWNlLGw9e19fZTpmdW5jdGlvbihuLGwpe2Zvcih2YXIgdSxpLHQ7bD1sLl9fOylpZigodT1sLl9fYykmJiF1Ll9fKXRyeXtpZigoaT11LmNvbnN0cnVjdG9yKSYmbnVsbCE9aS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3ImJih1LnNldFN0YXRlKGkuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKG4pKSx0PXUuX19kKSxudWxsIT11LmNvbXBvbmVudERpZENhdGNoJiYodS5jb21wb25lbnREaWRDYXRjaChuKSx0PXUuX19kKSx0KXJldHVybiB1Ll9fRT11fWNhdGNoKGwpe249bH10aHJvdyBufX0sdT0wLGk9ZnVuY3Rpb24obil7cmV0dXJuIG51bGwhPW4mJnZvaWQgMD09PW4uY29uc3RydWN0b3J9LF8ucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKG4sbCl7dmFyIHU7dT1udWxsIT10aGlzLl9fcyYmdGhpcy5fX3MhPT10aGlzLnN0YXRlP3RoaXMuX19zOnRoaXMuX19zPWEoe30sdGhpcy5zdGF0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmKG49bihhKHt9LHUpLHRoaXMucHJvcHMpKSxuJiZhKHUsbiksbnVsbCE9biYmdGhpcy5fX3YmJihsJiZ0aGlzLl9faC5wdXNoKGwpLG0odGhpcykpfSxfLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihuKXt0aGlzLl9fdiYmKHRoaXMuX19lPSEwLG4mJnRoaXMuX19oLnB1c2gobiksbSh0aGlzKSl9LF8ucHJvdG90eXBlLnJlbmRlcj1kLHQ9W10sbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlP1Byb21pc2UucHJvdG90eXBlLnRoZW4uYmluZChQcm9taXNlLnJlc29sdmUoKSk6c2V0VGltZW91dCxnLl9fcj0wLGY9MDtleHBvcnR7UyBhcyByZW5kZXIscSBhcyBoeWRyYXRlLHYgYXMgY3JlYXRlRWxlbWVudCx2IGFzIGgsZCBhcyBGcmFnbWVudCxwIGFzIGNyZWF0ZVJlZixpIGFzIGlzVmFsaWRFbGVtZW50LF8gYXMgQ29tcG9uZW50LEIgYXMgY2xvbmVFbGVtZW50LEQgYXMgY3JlYXRlQ29udGV4dCxBIGFzIHRvQ2hpbGRBcnJheSxsIGFzIG9wdGlvbnN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJlYWN0Lm1vZHVsZS5qcy5tYXBcbiIsImltcG9ydHtvcHRpb25zIGFzIG59ZnJvbVwicHJlYWN0XCI7dmFyIHQsdSxyLG89MCxpPVtdLGM9bi5fX2IsZj1uLl9fcixlPW4uZGlmZmVkLGE9bi5fX2Msdj1uLnVubW91bnQ7ZnVuY3Rpb24gbSh0LHIpe24uX19oJiZuLl9faCh1LHQsb3x8ciksbz0wO3ZhciBpPXUuX19IfHwodS5fX0g9e19fOltdLF9faDpbXX0pO3JldHVybiB0Pj1pLl9fLmxlbmd0aCYmaS5fXy5wdXNoKHt9KSxpLl9fW3RdfWZ1bmN0aW9uIGwobil7cmV0dXJuIG89MSxwKHcsbil9ZnVuY3Rpb24gcChuLHIsbyl7dmFyIGk9bSh0KyssMik7cmV0dXJuIGkudD1uLGkuX19jfHwoaS5fXz1bbz9vKHIpOncodm9pZCAwLHIpLGZ1bmN0aW9uKG4pe3ZhciB0PWkudChpLl9fWzBdLG4pO2kuX19bMF0hPT10JiYoaS5fXz1bdCxpLl9fWzFdXSxpLl9fYy5zZXRTdGF0ZSh7fSkpfV0saS5fX2M9dSksaS5fX31mdW5jdGlvbiB5KHIsbyl7dmFyIGk9bSh0KyssMyk7IW4uX19zJiZrKGkuX19ILG8pJiYoaS5fXz1yLGkuX19IPW8sdS5fX0guX19oLnB1c2goaSkpfWZ1bmN0aW9uIGgocixvKXt2YXIgaT1tKHQrKyw0KTshbi5fX3MmJmsoaS5fX0gsbykmJihpLl9fPXIsaS5fX0g9byx1Ll9faC5wdXNoKGkpKX1mdW5jdGlvbiBzKG4pe3JldHVybiBvPTUsZChmdW5jdGlvbigpe3JldHVybntjdXJyZW50Om59fSxbXSl9ZnVuY3Rpb24gXyhuLHQsdSl7bz02LGgoZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24odCgpKTpuJiYobi5jdXJyZW50PXQoKSl9LG51bGw9PXU/dTp1LmNvbmNhdChuKSl9ZnVuY3Rpb24gZChuLHUpe3ZhciByPW0odCsrLDcpO3JldHVybiBrKHIuX19ILHUpJiYoci5fXz1uKCksci5fX0g9dSxyLl9faD1uKSxyLl9ffWZ1bmN0aW9uIEEobix0KXtyZXR1cm4gbz04LGQoZnVuY3Rpb24oKXtyZXR1cm4gbn0sdCl9ZnVuY3Rpb24gRihuKXt2YXIgcj11LmNvbnRleHRbbi5fX2NdLG89bSh0KyssOSk7cmV0dXJuIG8uYz1uLHI/KG51bGw9PW8uX18mJihvLl9fPSEwLHIuc3ViKHUpKSxyLnByb3BzLnZhbHVlKTpuLl9ffWZ1bmN0aW9uIFQodCx1KXtuLnVzZURlYnVnVmFsdWUmJm4udXNlRGVidWdWYWx1ZSh1P3UodCk6dCl9ZnVuY3Rpb24gcShuKXt2YXIgcj1tKHQrKywxMCksbz1sKCk7cmV0dXJuIHIuX189bix1LmNvbXBvbmVudERpZENhdGNofHwodS5jb21wb25lbnREaWRDYXRjaD1mdW5jdGlvbihuKXtyLl9fJiZyLl9fKG4pLG9bMV0obil9KSxbb1swXSxmdW5jdGlvbigpe29bMV0odm9pZCAwKX1dfWZ1bmN0aW9uIHgoKXtmb3IodmFyIHQ7dD1pLnNoaWZ0KCk7KWlmKHQuX19QKXRyeXt0Ll9fSC5fX2guZm9yRWFjaChnKSx0Ll9fSC5fX2guZm9yRWFjaChqKSx0Ll9fSC5fX2g9W119Y2F0Y2godSl7dC5fX0guX19oPVtdLG4uX19lKHUsdC5fX3YpfX1uLl9fYj1mdW5jdGlvbihuKXt1PW51bGwsYyYmYyhuKX0sbi5fX3I9ZnVuY3Rpb24obil7ZiYmZihuKSx0PTA7dmFyIHI9KHU9bi5fX2MpLl9fSDtyJiYoci5fX2guZm9yRWFjaChnKSxyLl9faC5mb3JFYWNoKGopLHIuX19oPVtdKX0sbi5kaWZmZWQ9ZnVuY3Rpb24odCl7ZSYmZSh0KTt2YXIgbz10Ll9fYztvJiZvLl9fSCYmby5fX0guX19oLmxlbmd0aCYmKDEhPT1pLnB1c2gobykmJnI9PT1uLnJlcXVlc3RBbmltYXRpb25GcmFtZXx8KChyPW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKXx8ZnVuY3Rpb24obil7dmFyIHQsdT1mdW5jdGlvbigpe2NsZWFyVGltZW91dChyKSxiJiZjYW5jZWxBbmltYXRpb25GcmFtZSh0KSxzZXRUaW1lb3V0KG4pfSxyPXNldFRpbWVvdXQodSwxMDApO2ImJih0PXJlcXVlc3RBbmltYXRpb25GcmFtZSh1KSl9KSh4KSksdT1udWxsfSxuLl9fYz1mdW5jdGlvbih0LHUpe3Uuc29tZShmdW5jdGlvbih0KXt0cnl7dC5fX2guZm9yRWFjaChnKSx0Ll9faD10Ll9faC5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIW4uX198fGoobil9KX1jYXRjaChyKXt1LnNvbWUoZnVuY3Rpb24obil7bi5fX2gmJihuLl9faD1bXSl9KSx1PVtdLG4uX19lKHIsdC5fX3YpfX0pLGEmJmEodCx1KX0sbi51bm1vdW50PWZ1bmN0aW9uKHQpe3YmJnYodCk7dmFyIHUscj10Ll9fYztyJiZyLl9fSCYmKHIuX19ILl9fLmZvckVhY2goZnVuY3Rpb24obil7dHJ5e2cobil9Y2F0Y2gobil7dT1ufX0pLHUmJm4uX19lKHUsci5fX3YpKX07dmFyIGI9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lO2Z1bmN0aW9uIGcobil7dmFyIHQ9dSxyPW4uX19jO1wiZnVuY3Rpb25cIj09dHlwZW9mIHImJihuLl9fYz12b2lkIDAscigpKSx1PXR9ZnVuY3Rpb24gaihuKXt2YXIgdD11O24uX19jPW4uX18oKSx1PXR9ZnVuY3Rpb24gayhuLHQpe3JldHVybiFufHxuLmxlbmd0aCE9PXQubGVuZ3RofHx0LnNvbWUoZnVuY3Rpb24odCx1KXtyZXR1cm4gdCE9PW5bdV19KX1mdW5jdGlvbiB3KG4sdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG4pOnR9ZXhwb3J0e2wgYXMgdXNlU3RhdGUscCBhcyB1c2VSZWR1Y2VyLHkgYXMgdXNlRWZmZWN0LGggYXMgdXNlTGF5b3V0RWZmZWN0LHMgYXMgdXNlUmVmLF8gYXMgdXNlSW1wZXJhdGl2ZUhhbmRsZSxkIGFzIHVzZU1lbW8sQSBhcyB1c2VDYWxsYmFjayxGIGFzIHVzZUNvbnRleHQsVCBhcyB1c2VEZWJ1Z1ZhbHVlLHEgYXMgdXNlRXJyb3JCb3VuZGFyeX07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ob29rcy5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnR7dXNlU3RhdGUgYXMgbix1c2VSZWR1Y2VyIGFzIHQsdXNlRWZmZWN0IGFzIGUsdXNlTGF5b3V0RWZmZWN0IGFzIHIsdXNlUmVmIGFzIHUsdXNlSW1wZXJhdGl2ZUhhbmRsZSBhcyBvLHVzZU1lbW8gYXMgaSx1c2VDYWxsYmFjayBhcyBsLHVzZUNvbnRleHQgYXMgYyx1c2VEZWJ1Z1ZhbHVlIGFzIGZ9ZnJvbVwicHJlYWN0L2hvb2tzXCI7ZXhwb3J0KmZyb21cInByZWFjdC9ob29rc1wiO2ltcG9ydHtDb21wb25lbnQgYXMgYSxjcmVhdGVFbGVtZW50IGFzIHMsb3B0aW9ucyBhcyBoLHRvQ2hpbGRBcnJheSBhcyBkLEZyYWdtZW50IGFzIHYscmVuZGVyIGFzIHAsaHlkcmF0ZSBhcyBtLGNsb25lRWxlbWVudCBhcyB5LGNyZWF0ZVJlZiBhcyBiLGNyZWF0ZUNvbnRleHQgYXMgX31mcm9tXCJwcmVhY3RcIjtleHBvcnR7Y3JlYXRlRWxlbWVudCxjcmVhdGVDb250ZXh0LGNyZWF0ZVJlZixGcmFnbWVudCxDb21wb25lbnR9ZnJvbVwicHJlYWN0XCI7ZnVuY3Rpb24gQyhuLHQpe2Zvcih2YXIgZSBpbiB0KW5bZV09dFtlXTtyZXR1cm4gbn1mdW5jdGlvbiBTKG4sdCl7Zm9yKHZhciBlIGluIG4paWYoXCJfX3NvdXJjZVwiIT09ZSYmIShlIGluIHQpKXJldHVybiEwO2Zvcih2YXIgciBpbiB0KWlmKFwiX19zb3VyY2VcIiE9PXImJm5bcl0hPT10W3JdKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIEUobil7dGhpcy5wcm9wcz1ufWZ1bmN0aW9uIGcobix0KXtmdW5jdGlvbiBlKG4pe3ZhciBlPXRoaXMucHJvcHMucmVmLHI9ZT09bi5yZWY7cmV0dXJuIXImJmUmJihlLmNhbGw/ZShudWxsKTplLmN1cnJlbnQ9bnVsbCksdD8hdCh0aGlzLnByb3BzLG4pfHwhcjpTKHRoaXMucHJvcHMsbil9ZnVuY3Rpb24gcih0KXtyZXR1cm4gdGhpcy5zaG91bGRDb21wb25lbnRVcGRhdGU9ZSxzKG4sdCl9cmV0dXJuIHIuZGlzcGxheU5hbWU9XCJNZW1vKFwiKyhuLmRpc3BsYXlOYW1lfHxuLm5hbWUpK1wiKVwiLHIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9ITAsci5fX2Y9ITAscn0oRS5wcm90b3R5cGU9bmV3IGEpLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLEUucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbihuLHQpe3JldHVybiBTKHRoaXMucHJvcHMsbil8fFModGhpcy5zdGF0ZSx0KX07dmFyIHc9aC5fX2I7aC5fX2I9ZnVuY3Rpb24obil7bi50eXBlJiZuLnR5cGUuX19mJiZuLnJlZiYmKG4ucHJvcHMucmVmPW4ucmVmLG4ucmVmPW51bGwpLHcmJncobil9O3ZhciBSPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKXx8MzkxMTtmdW5jdGlvbiB4KG4pe2Z1bmN0aW9uIHQodCxlKXt2YXIgcj1DKHt9LHQpO3JldHVybiBkZWxldGUgci5yZWYsbihyLChlPXQucmVmfHxlKSYmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxcImN1cnJlbnRcImluIGUpP2U6bnVsbCl9cmV0dXJuIHQuJCR0eXBlb2Y9Uix0LnJlbmRlcj10LHQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9dC5fX2Y9ITAsdC5kaXNwbGF5TmFtZT1cIkZvcndhcmRSZWYoXCIrKG4uZGlzcGxheU5hbWV8fG4ubmFtZSkrXCIpXCIsdH12YXIgTj1mdW5jdGlvbihuLHQpe3JldHVybiBudWxsPT1uP251bGw6ZChkKG4pLm1hcCh0KSl9LGs9e21hcDpOLGZvckVhY2g6Tixjb3VudDpmdW5jdGlvbihuKXtyZXR1cm4gbj9kKG4pLmxlbmd0aDowfSxvbmx5OmZ1bmN0aW9uKG4pe3ZhciB0PWQobik7aWYoMSE9PXQubGVuZ3RoKXRocm93XCJDaGlsZHJlbi5vbmx5XCI7cmV0dXJuIHRbMF19LHRvQXJyYXk6ZH0sQT1oLl9fZTtoLl9fZT1mdW5jdGlvbihuLHQsZSl7aWYobi50aGVuKWZvcih2YXIgcix1PXQ7dT11Ll9fOylpZigocj11Ll9fYykmJnIuX19jKXJldHVybiBudWxsPT10Ll9fZSYmKHQuX19lPWUuX19lLHQuX19rPWUuX19rKSxyLl9fYyhuLHQpO0Eobix0LGUpfTt2YXIgTz1oLnVubW91bnQ7ZnVuY3Rpb24gTCgpe3RoaXMuX191PTAsdGhpcy50PW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBVKG4pe3ZhciB0PW4uX18uX19jO3JldHVybiB0JiZ0Ll9fZSYmdC5fX2Uobil9ZnVuY3Rpb24gRihuKXt2YXIgdCxlLHI7ZnVuY3Rpb24gdSh1KXtpZih0fHwodD1uKCkpLnRoZW4oZnVuY3Rpb24obil7ZT1uLmRlZmF1bHR8fG59LGZ1bmN0aW9uKG4pe3I9bn0pLHIpdGhyb3cgcjtpZighZSl0aHJvdyB0O3JldHVybiBzKGUsdSl9cmV0dXJuIHUuZGlzcGxheU5hbWU9XCJMYXp5XCIsdS5fX2Y9ITAsdX1mdW5jdGlvbiBNKCl7dGhpcy51PW51bGwsdGhpcy5vPW51bGx9aC51bm1vdW50PWZ1bmN0aW9uKG4pe3ZhciB0PW4uX19jO3QmJnQuX19SJiZ0Ll9fUigpLHQmJiEwPT09bi5fX2gmJihuLnR5cGU9bnVsbCksTyYmTyhuKX0sKEwucHJvdG90eXBlPW5ldyBhKS5fX2M9ZnVuY3Rpb24obix0KXt2YXIgZT10Ll9fYyxyPXRoaXM7bnVsbD09ci50JiYoci50PVtdKSxyLnQucHVzaChlKTt2YXIgdT1VKHIuX192KSxvPSExLGk9ZnVuY3Rpb24oKXtvfHwobz0hMCxlLl9fUj1udWxsLHU/dShsKTpsKCkpfTtlLl9fUj1pO3ZhciBsPWZ1bmN0aW9uKCl7aWYoIS0tci5fX3Upe2lmKHIuc3RhdGUuX19lKXt2YXIgbj1yLnN0YXRlLl9fZTtyLl9fdi5fX2tbMF09ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuIHQmJih0Ll9fdj1udWxsLHQuX19rPXQuX19rJiZ0Ll9fay5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIG4odCxlLHIpfSksdC5fX2MmJnQuX19jLl9fUD09PWUmJih0Ll9fZSYmci5pbnNlcnRCZWZvcmUodC5fX2UsdC5fX2QpLHQuX19jLl9fZT0hMCx0Ll9fYy5fX1A9cikpLHR9KG4sbi5fX2MuX19QLG4uX19jLl9fTyl9dmFyIHQ7Zm9yKHIuc2V0U3RhdGUoe19fZTpyLl9fYj1udWxsfSk7dD1yLnQucG9wKCk7KXQuZm9yY2VVcGRhdGUoKX19LGM9ITA9PT10Ll9faDtyLl9fdSsrfHxjfHxyLnNldFN0YXRlKHtfX2U6ci5fX2I9ci5fX3YuX19rWzBdfSksbi50aGVuKGksaSl9LEwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy50PVtdfSxMLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24obix0KXtpZih0aGlzLl9fYil7aWYodGhpcy5fX3YuX19rKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHI9dGhpcy5fX3YuX19rWzBdLl9fYzt0aGlzLl9fdi5fX2tbMF09ZnVuY3Rpb24gbih0LGUscil7cmV0dXJuIHQmJih0Ll9fYyYmdC5fX2MuX19IJiYodC5fX2MuX19ILl9fLmZvckVhY2goZnVuY3Rpb24obil7XCJmdW5jdGlvblwiPT10eXBlb2Ygbi5fX2MmJm4uX19jKCl9KSx0Ll9fYy5fX0g9bnVsbCksbnVsbCE9KHQ9Qyh7fSx0KSkuX19jJiYodC5fX2MuX19QPT09ciYmKHQuX19jLl9fUD1lKSx0Ll9fYz1udWxsKSx0Ll9faz10Ll9fayYmdC5fX2subWFwKGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSxyKX0pKSx0fSh0aGlzLl9fYixlLHIuX19PPXIuX19QKX10aGlzLl9fYj1udWxsfXZhciB1PXQuX19lJiZzKHYsbnVsbCxuLmZhbGxiYWNrKTtyZXR1cm4gdSYmKHUuX19oPW51bGwpLFtzKHYsbnVsbCx0Ll9fZT9udWxsOm4uY2hpbGRyZW4pLHVdfTt2YXIgVD1mdW5jdGlvbihuLHQsZSl7aWYoKytlWzFdPT09ZVswXSYmbi5vLmRlbGV0ZSh0KSxuLnByb3BzLnJldmVhbE9yZGVyJiYoXCJ0XCIhPT1uLnByb3BzLnJldmVhbE9yZGVyWzBdfHwhbi5vLnNpemUpKWZvcihlPW4udTtlOyl7Zm9yKDtlLmxlbmd0aD4zOyllLnBvcCgpKCk7aWYoZVsxXTxlWzBdKWJyZWFrO24udT1lPWVbMl19fTtmdW5jdGlvbiBEKG4pe3JldHVybiB0aGlzLmdldENoaWxkQ29udGV4dD1mdW5jdGlvbigpe3JldHVybiBuLmNvbnRleHR9LG4uY2hpbGRyZW59ZnVuY3Rpb24gSShuKXt2YXIgdD10aGlzLGU9bi5pO3QuY29tcG9uZW50V2lsbFVubW91bnQ9ZnVuY3Rpb24oKXtwKG51bGwsdC5sKSx0Lmw9bnVsbCx0Lmk9bnVsbH0sdC5pJiZ0LmkhPT1lJiZ0LmNvbXBvbmVudFdpbGxVbm1vdW50KCksbi5fX3Y/KHQubHx8KHQuaT1lLHQubD17bm9kZVR5cGU6MSxwYXJlbnROb2RlOmUsY2hpbGROb2RlczpbXSxhcHBlbmRDaGlsZDpmdW5jdGlvbihuKXt0aGlzLmNoaWxkTm9kZXMucHVzaChuKSx0LmkuYXBwZW5kQ2hpbGQobil9LGluc2VydEJlZm9yZTpmdW5jdGlvbihuLGUpe3RoaXMuY2hpbGROb2Rlcy5wdXNoKG4pLHQuaS5hcHBlbmRDaGlsZChuKX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24obil7dGhpcy5jaGlsZE5vZGVzLnNwbGljZSh0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuKT4+PjEsMSksdC5pLnJlbW92ZUNoaWxkKG4pfX0pLHAocyhELHtjb250ZXh0OnQuY29udGV4dH0sbi5fX3YpLHQubCkpOnQubCYmdC5jb21wb25lbnRXaWxsVW5tb3VudCgpfWZ1bmN0aW9uIFcobix0KXtyZXR1cm4gcyhJLHtfX3Y6bixpOnR9KX0oTS5wcm90b3R5cGU9bmV3IGEpLl9fZT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLGU9VSh0Ll9fdikscj10Lm8uZ2V0KG4pO3JldHVybiByWzBdKyssZnVuY3Rpb24odSl7dmFyIG89ZnVuY3Rpb24oKXt0LnByb3BzLnJldmVhbE9yZGVyPyhyLnB1c2godSksVCh0LG4scikpOnUoKX07ZT9lKG8pOm8oKX19LE0ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihuKXt0aGlzLnU9bnVsbCx0aGlzLm89bmV3IE1hcDt2YXIgdD1kKG4uY2hpbGRyZW4pO24ucmV2ZWFsT3JkZXImJlwiYlwiPT09bi5yZXZlYWxPcmRlclswXSYmdC5yZXZlcnNlKCk7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLTspdGhpcy5vLnNldCh0W2VdLHRoaXMudT1bMSwwLHRoaXMudV0pO3JldHVybiBuLmNoaWxkcmVufSxNLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9TS5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuby5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7VChuLGUsdCl9KX07dmFyIGo9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIil8fDYwMTAzLFA9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxtYXJrZXIoPyFIfFd8VSl8b3ZlcmxpbmV8cGFpbnR8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dW5kZXJsaW5lfHVuaWNvZGV8dW5pdHN8dnx2ZWN0b3J8dmVydHx3b3JkfHdyaXRpbmd8eCg/IUMpKVtBLVpdLyxWPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCx6PWZ1bmN0aW9uKG4pe3JldHVybihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZcInN5bWJvbFwiPT10eXBlb2YgU3ltYm9sKCk/L2ZpbHxjaGV8cmFkL2k6L2ZpbHxjaGV8cmEvaSkudGVzdChuKX07ZnVuY3Rpb24gQihuLHQsZSl7cmV0dXJuIG51bGw9PXQuX19rJiYodC50ZXh0Q29udGVudD1cIlwiKSxwKG4sdCksXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZSgpLG4/bi5fX2M6bnVsbH1mdW5jdGlvbiAkKG4sdCxlKXtyZXR1cm4gbShuLHQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUoKSxuP24uX19jOm51bGx9YS5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxbXCJjb21wb25lbnRXaWxsTW91bnRcIixcImNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHNcIixcImNvbXBvbmVudFdpbGxVcGRhdGVcIl0uZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoYS5wcm90b3R5cGUsbix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW1wiVU5TQUZFX1wiK25dfSxzZXQ6ZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsbix7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOnR9KX19KX0pO3ZhciBIPWguZXZlbnQ7ZnVuY3Rpb24gWigpe31mdW5jdGlvbiBZKCl7cmV0dXJuIHRoaXMuY2FuY2VsQnViYmxlfWZ1bmN0aW9uIHEoKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfWguZXZlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIEgmJihuPUgobikpLG4ucGVyc2lzdD1aLG4uaXNQcm9wYWdhdGlvblN0b3BwZWQ9WSxuLmlzRGVmYXVsdFByZXZlbnRlZD1xLG4ubmF0aXZlRXZlbnQ9bn07dmFyIEcsSj17Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNsYXNzfX0sSz1oLnZub2RlO2gudm5vZGU9ZnVuY3Rpb24obil7dmFyIHQ9bi50eXBlLGU9bi5wcm9wcyxyPWU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe3ZhciB1PS0xPT09dC5pbmRleE9mKFwiLVwiKTtmb3IodmFyIG8gaW4gcj17fSxlKXt2YXIgaT1lW29dO1YmJlwiY2hpbGRyZW5cIj09PW8mJlwibm9zY3JpcHRcIj09PXR8fFwidmFsdWVcIj09PW8mJlwiZGVmYXVsdFZhbHVlXCJpbiBlJiZudWxsPT1pfHwoXCJkZWZhdWx0VmFsdWVcIj09PW8mJlwidmFsdWVcImluIGUmJm51bGw9PWUudmFsdWU/bz1cInZhbHVlXCI6XCJkb3dubG9hZFwiPT09byYmITA9PT1pP2k9XCJcIjovb25kb3VibGVjbGljay9pLnRlc3Qobyk/bz1cIm9uZGJsY2xpY2tcIjovXm9uY2hhbmdlKHRleHRhcmVhfGlucHV0KS9pLnRlc3Qobyt0KSYmIXooZS50eXBlKT9vPVwib25pbnB1dFwiOi9eb25mb2N1cyQvaS50ZXN0KG8pP289XCJvbmZvY3VzaW5cIjovXm9uYmx1ciQvaS50ZXN0KG8pP289XCJvbmZvY3Vzb3V0XCI6L15vbihBbml8VHJhfFRvdXxCZWZvcmVJbnB8Q29tcG8pLy50ZXN0KG8pP289by50b0xvd2VyQ2FzZSgpOnUmJlAudGVzdChvKT9vPW8ucmVwbGFjZSgvW0EtWjAtOV0vLFwiLSQmXCIpLnRvTG93ZXJDYXNlKCk6bnVsbD09PWkmJihpPXZvaWQgMCkscltvXT1pKX1cInNlbGVjdFwiPT10JiZyLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHIudmFsdWUpJiYoci52YWx1ZT1kKGUuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24obil7bi5wcm9wcy5zZWxlY3RlZD0tMSE9ci52YWx1ZS5pbmRleE9mKG4ucHJvcHMudmFsdWUpfSkpLFwic2VsZWN0XCI9PXQmJm51bGwhPXIuZGVmYXVsdFZhbHVlJiYoci52YWx1ZT1kKGUuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24obil7bi5wcm9wcy5zZWxlY3RlZD1yLm11bHRpcGxlPy0xIT1yLmRlZmF1bHRWYWx1ZS5pbmRleE9mKG4ucHJvcHMudmFsdWUpOnIuZGVmYXVsdFZhbHVlPT1uLnByb3BzLnZhbHVlfSkpLG4ucHJvcHM9cixlLmNsYXNzIT1lLmNsYXNzTmFtZSYmKEouZW51bWVyYWJsZT1cImNsYXNzTmFtZVwiaW4gZSxudWxsIT1lLmNsYXNzTmFtZSYmKHIuY2xhc3M9ZS5jbGFzc05hbWUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiY2xhc3NOYW1lXCIsSikpfW4uJCR0eXBlb2Y9aixLJiZLKG4pfTt2YXIgUT1oLl9fcjtoLl9fcj1mdW5jdGlvbihuKXtRJiZRKG4pLEc9bi5fX2N9O3ZhciBYPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOntjdXJyZW50OntyZWFkQ29udGV4dDpmdW5jdGlvbihuKXtyZXR1cm4gRy5fX25bbi5fX2NdLnByb3BzLnZhbHVlfX19fSxubj1cIjE3LjAuMlwiO2Z1bmN0aW9uIHRuKG4pe3JldHVybiBzLmJpbmQobnVsbCxuKX1mdW5jdGlvbiBlbihuKXtyZXR1cm4hIW4mJm4uJCR0eXBlb2Y9PT1qfWZ1bmN0aW9uIHJuKG4pe3JldHVybiBlbihuKT95LmFwcGx5KG51bGwsYXJndW1lbnRzKTpufWZ1bmN0aW9uIHVuKG4pe3JldHVybiEhbi5fX2smJihwKG51bGwsbiksITApfWZ1bmN0aW9uIG9uKG4pe3JldHVybiBuJiYobi5iYXNlfHwxPT09bi5ub2RlVHlwZSYmbil8fG51bGx9dmFyIGxuPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9LGNuPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9LGZuPXY7ZXhwb3J0IGRlZmF1bHR7dXNlU3RhdGU6bix1c2VSZWR1Y2VyOnQsdXNlRWZmZWN0OmUsdXNlTGF5b3V0RWZmZWN0OnIsdXNlUmVmOnUsdXNlSW1wZXJhdGl2ZUhhbmRsZTpvLHVzZU1lbW86aSx1c2VDYWxsYmFjazpsLHVzZUNvbnRleHQ6Yyx1c2VEZWJ1Z1ZhbHVlOmYsdmVyc2lvbjpcIjE3LjAuMlwiLENoaWxkcmVuOmsscmVuZGVyOkIsaHlkcmF0ZTokLHVubW91bnRDb21wb25lbnRBdE5vZGU6dW4sY3JlYXRlUG9ydGFsOlcsY3JlYXRlRWxlbWVudDpzLGNyZWF0ZUNvbnRleHQ6XyxjcmVhdGVGYWN0b3J5OnRuLGNsb25lRWxlbWVudDpybixjcmVhdGVSZWY6YixGcmFnbWVudDp2LGlzVmFsaWRFbGVtZW50OmVuLGZpbmRET01Ob2RlOm9uLENvbXBvbmVudDphLFB1cmVDb21wb25lbnQ6RSxtZW1vOmcsZm9yd2FyZFJlZjp4LGZsdXNoU3luYzpjbix1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczpsbixTdHJpY3RNb2RlOnYsU3VzcGVuc2U6TCxTdXNwZW5zZUxpc3Q6TSxsYXp5OkYsX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ6WH07ZXhwb3J0e25uIGFzIHZlcnNpb24sayBhcyBDaGlsZHJlbixCIGFzIHJlbmRlciwkIGFzIGh5ZHJhdGUsdW4gYXMgdW5tb3VudENvbXBvbmVudEF0Tm9kZSxXIGFzIGNyZWF0ZVBvcnRhbCx0biBhcyBjcmVhdGVGYWN0b3J5LHJuIGFzIGNsb25lRWxlbWVudCxlbiBhcyBpc1ZhbGlkRWxlbWVudCxvbiBhcyBmaW5kRE9NTm9kZSxFIGFzIFB1cmVDb21wb25lbnQsZyBhcyBtZW1vLHggYXMgZm9yd2FyZFJlZixjbiBhcyBmbHVzaFN5bmMsbG4gYXMgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMsZm4gYXMgU3RyaWN0TW9kZSxMIGFzIFN1c3BlbnNlLE0gYXMgU3VzcGVuc2VMaXN0LEYgYXMgbGF6eSxYIGFzIF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbXBhdC5tb2R1bGUuanMubWFwXG4iLCJpbXBvcnR7dHlwZU9mIGFzIGUsaXNFbGVtZW50IGFzIHQsaXNWYWxpZEVsZW1lbnRUeXBlIGFzIG59ZnJvbVwicmVhY3QtaXNcIjtpbXBvcnQgcix7dXNlU3RhdGUgYXMgbyx1c2VDb250ZXh0IGFzIHMsdXNlTWVtbyBhcyBpLHVzZUVmZmVjdCBhcyBhLHVzZVJlZiBhcyBjLGNyZWF0ZUVsZW1lbnQgYXMgdSx1c2VEZWJ1Z1ZhbHVlIGFzIGwsdXNlTGF5b3V0RWZmZWN0IGFzIGR9ZnJvbVwicmVhY3RcIjtpbXBvcnQgaCBmcm9tXCJzaGFsbG93ZXF1YWxcIjtpbXBvcnQgcCBmcm9tXCJAZW1vdGlvbi9zdHlsaXNcIjtpbXBvcnQgZiBmcm9tXCJAZW1vdGlvbi91bml0bGVzc1wiO2ltcG9ydCBtIGZyb21cIkBlbW90aW9uL2lzLXByb3AtdmFsaWRcIjtpbXBvcnQgeSBmcm9tXCJob2lzdC1ub24tcmVhY3Qtc3RhdGljc1wiO2Z1bmN0aW9uIHYoKXtyZXR1cm4odj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfXZhciBnPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtlWzBdXSxyPTAsbz10Lmxlbmd0aDtyPG87cis9MSluLnB1c2godFtyXSxlW3IrMV0pO3JldHVybiBufSxTPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJlwiW29iamVjdCBPYmplY3RdXCI9PT0odC50b1N0cmluZz90LnRvU3RyaW5nKCk6T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKSYmIWUodCl9LHc9T2JqZWN0LmZyZWV6ZShbXSksRT1PYmplY3QuZnJlZXplKHt9KTtmdW5jdGlvbiBiKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV9ZnVuY3Rpb24gXyhlKXtyZXR1cm5cInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInN0cmluZ1wiPT10eXBlb2YgZSYmZXx8ZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxcIkNvbXBvbmVudFwifWZ1bmN0aW9uIE4oZSl7cmV0dXJuIGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLnN0eWxlZENvbXBvbmVudElkfXZhciBBPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBwcm9jZXNzJiYocHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1NDX0FUVFJ8fHByb2Nlc3MuZW52LlNDX0FUVFIpfHxcImRhdGEtc3R5bGVkXCIsQz1cIjUuMy4zXCIsST1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZcIkhUTUxFbGVtZW50XCJpbiB3aW5kb3csUD1Cb29sZWFuKFwiYm9vbGVhblwiPT10eXBlb2YgU0NfRElTQUJMRV9TUEVFRFk/U0NfRElTQUJMRV9TUEVFRFk6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByb2Nlc3MmJnZvaWQgMCE9PXByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWSYmXCJcIiE9PXByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWT9cImZhbHNlXCIhPT1wcm9jZXNzLmVudi5SRUFDVF9BUFBfU0NfRElTQUJMRV9TUEVFRFkmJnByb2Nlc3MuZW52LlJFQUNUX0FQUF9TQ19ESVNBQkxFX1NQRUVEWTpcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJvY2VzcyYmdm9pZCAwIT09cHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFkmJlwiXCIhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWT9cImZhbHNlXCIhPT1wcm9jZXNzLmVudi5TQ19ESVNBQkxFX1NQRUVEWSYmcHJvY2Vzcy5lbnYuU0NfRElTQUJMRV9TUEVFRFk6XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViksTz17fSxSPVwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/ezE6XCJDYW5ub3QgY3JlYXRlIHN0eWxlZC1jb21wb25lbnQgZm9yIGNvbXBvbmVudDogJXMuXFxuXFxuXCIsMjpcIkNhbid0IGNvbGxlY3Qgc3R5bGVzIG9uY2UgeW91J3ZlIGNvbnN1bWVkIGEgYFNlcnZlclN0eWxlU2hlZXRgJ3Mgc3R5bGVzISBgU2VydmVyU3R5bGVTaGVldGAgaXMgYSBvbmUgb2ZmIGluc3RhbmNlIGZvciBlYWNoIHNlcnZlci1zaWRlIHJlbmRlciBjeWNsZS5cXG5cXG4tIEFyZSB5b3UgdHJ5aW5nIHRvIHJldXNlIGl0IGFjcm9zcyByZW5kZXJzP1xcbi0gQXJlIHlvdSBhY2NpZGVudGFsbHkgY2FsbGluZyBjb2xsZWN0U3R5bGVzIHR3aWNlP1xcblxcblwiLDM6XCJTdHJlYW1pbmcgU1NSIGlzIG9ubHkgc3VwcG9ydGVkIGluIGEgTm9kZS5qcyBlbnZpcm9ubWVudDsgUGxlYXNlIGRvIG5vdCB0cnkgdG8gY2FsbCB0aGlzIG1ldGhvZCBpbiB0aGUgYnJvd3Nlci5cXG5cXG5cIiw0OlwiVGhlIGBTdHlsZVNoZWV0TWFuYWdlcmAgZXhwZWN0cyBhIHZhbGlkIHRhcmdldCBvciBzaGVldCBwcm9wIVxcblxcbi0gRG9lcyB0aGlzIGVycm9yIG9jY3VyIG9uIHRoZSBjbGllbnQgYW5kIGlzIHlvdXIgdGFyZ2V0IGZhbHN5P1xcbi0gRG9lcyB0aGlzIGVycm9yIG9jY3VyIG9uIHRoZSBzZXJ2ZXIgYW5kIGlzIHRoZSBzaGVldCBmYWxzeT9cXG5cXG5cIiw1OlwiVGhlIGNsb25lIG1ldGhvZCBjYW5ub3QgYmUgdXNlZCBvbiB0aGUgY2xpZW50IVxcblxcbi0gQXJlIHlvdSBydW5uaW5nIGluIGEgY2xpZW50LWxpa2UgZW52aXJvbm1lbnQgb24gdGhlIHNlcnZlcj9cXG4tIEFyZSB5b3UgdHJ5aW5nIHRvIHJ1biBTU1Igb24gdGhlIGNsaWVudD9cXG5cXG5cIiw2OlwiVHJ5aW5nIHRvIGluc2VydCBhIG5ldyBzdHlsZSB0YWcsIGJ1dCB0aGUgZ2l2ZW4gTm9kZSBpcyB1bm1vdW50ZWQhXFxuXFxuLSBBcmUgeW91IHVzaW5nIGEgY3VzdG9tIHRhcmdldCB0aGF0IGlzbid0IG1vdW50ZWQ/XFxuLSBEb2VzIHlvdXIgZG9jdW1lbnQgbm90IGhhdmUgYSB2YWxpZCBoZWFkIGVsZW1lbnQ/XFxuLSBIYXZlIHlvdSBhY2NpZGVudGFsbHkgcmVtb3ZlZCBhIHN0eWxlIHRhZyBtYW51YWxseT9cXG5cXG5cIiw3OidUaGVtZVByb3ZpZGVyOiBQbGVhc2UgcmV0dXJuIGFuIG9iamVjdCBmcm9tIHlvdXIgXCJ0aGVtZVwiIHByb3AgZnVuY3Rpb24sIGUuZy5cXG5cXG5gYGBqc1xcbnRoZW1lPXsoKSA9PiAoe30pfVxcbmBgYFxcblxcbicsODonVGhlbWVQcm92aWRlcjogUGxlYXNlIG1ha2UgeW91ciBcInRoZW1lXCIgcHJvcCBhbiBvYmplY3QuXFxuXFxuJyw5OlwiTWlzc2luZyBkb2N1bWVudCBgPGhlYWQ+YFxcblxcblwiLDEwOlwiQ2Fubm90IGZpbmQgYSBTdHlsZVNoZWV0IGluc3RhbmNlLiBVc3VhbGx5IHRoaXMgaGFwcGVucyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgY29waWVzIG9mIHN0eWxlZC1jb21wb25lbnRzIGxvYWRlZCBhdCBvbmNlLiBDaGVjayBvdXQgdGhpcyBpc3N1ZSBmb3IgaG93IHRvIHRyb3VibGVzaG9vdCBhbmQgZml4IHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhpcyBzaXR1YXRpb24gY2FuIGhhcHBlbjogaHR0cHM6Ly9naXRodWIuY29tL3N0eWxlZC1jb21wb25lbnRzL3N0eWxlZC1jb21wb25lbnRzL2lzc3Vlcy8xOTQxI2lzc3VlY29tbWVudC00MTc4NjIwMjFcXG5cXG5cIiwxMTpcIl9UaGlzIGVycm9yIHdhcyByZXBsYWNlZCB3aXRoIGEgZGV2LXRpbWUgd2FybmluZywgaXQgd2lsbCBiZSBkZWxldGVkIGZvciB2NCBmaW5hbC5fIFtjcmVhdGVHbG9iYWxTdHlsZV0gcmVjZWl2ZWQgY2hpbGRyZW4gd2hpY2ggd2lsbCBub3QgYmUgcmVuZGVyZWQuIFBsZWFzZSB1c2UgdGhlIGNvbXBvbmVudCB3aXRob3V0IHBhc3NpbmcgY2hpbGRyZW4gZWxlbWVudHMuXFxuXFxuXCIsMTI6XCJJdCBzZWVtcyB5b3UgYXJlIGludGVycG9sYXRpbmcgYSBrZXlmcmFtZSBkZWNsYXJhdGlvbiAoJXMpIGludG8gYW4gdW50YWdnZWQgc3RyaW5nLiBUaGlzIHdhcyBzdXBwb3J0ZWQgaW4gc3R5bGVkLWNvbXBvbmVudHMgdjMsIGJ1dCBpcyBub3QgbG9uZ2VyIHN1cHBvcnRlZCBpbiB2NCBhcyBrZXlmcmFtZXMgYXJlIG5vdyBpbmplY3RlZCBvbi1kZW1hbmQuIFBsZWFzZSB3cmFwIHlvdXIgc3RyaW5nIGluIHRoZSBjc3NcXFxcYFxcXFxgIGhlbHBlciB3aGljaCBlbnN1cmVzIHRoZSBzdHlsZXMgYXJlIGluamVjdGVkIGNvcnJlY3RseS4gU2VlIGh0dHBzOi8vd3d3LnN0eWxlZC1jb21wb25lbnRzLmNvbS9kb2NzL2FwaSNjc3NcXG5cXG5cIiwxMzpcIiVzIGlzIG5vdCBhIHN0eWxlZCBjb21wb25lbnQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0byB2aWEgY29tcG9uZW50IHNlbGVjdG9yLiBTZWUgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYWR2YW5jZWQjcmVmZXJyaW5nLXRvLW90aGVyLWNvbXBvbmVudHMgZm9yIG1vcmUgZGV0YWlscy5cXG5cXG5cIiwxNDonVGhlbWVQcm92aWRlcjogXCJ0aGVtZVwiIHByb3AgaXMgcmVxdWlyZWQuXFxuXFxuJywxNTpcIkEgc3R5bGlzIHBsdWdpbiBoYXMgYmVlbiBzdXBwbGllZCB0aGF0IGlzIG5vdCBuYW1lZC4gV2UgbmVlZCBhIG5hbWUgZm9yIGVhY2ggcGx1Z2luIHRvIGJlIGFibGUgdG8gcHJldmVudCBzdHlsaW5nIGNvbGxpc2lvbnMgYmV0d2VlbiBkaWZmZXJlbnQgc3R5bGlzIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBhcHAuIEJlZm9yZSB5b3UgcGFzcyB5b3VyIHBsdWdpbiB0byBgPFN0eWxlU2hlZXRNYW5hZ2VyIHN0eWxpc1BsdWdpbnM9e1tdfT5gLCBwbGVhc2UgbWFrZSBzdXJlIGVhY2ggcGx1Z2luIGlzIHVuaXF1ZWx5LW5hbWVkLCBlLmcuXFxuXFxuYGBganNcXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoaW1wb3J0ZWRQbHVnaW4sICduYW1lJywgeyB2YWx1ZTogJ3NvbWUtdW5pcXVlLW5hbWUnIH0pO1xcbmBgYFxcblxcblwiLDE2OlwiUmVhY2hlZCB0aGUgbGltaXQgb2YgaG93IG1hbnkgc3R5bGVkIGNvbXBvbmVudHMgbWF5IGJlIGNyZWF0ZWQgYXQgZ3JvdXAgJXMuXFxuWW91IG1heSBvbmx5IGNyZWF0ZSB1cCB0byAxLDA3Myw3NDEsODI0IGNvbXBvbmVudHMuIElmIHlvdSdyZSBjcmVhdGluZyBjb21wb25lbnRzIGR5bmFtaWNhbGx5LFxcbmFzIGZvciBpbnN0YW5jZSBpbiB5b3VyIHJlbmRlciBtZXRob2QgdGhlbiB5b3UgbWF5IGJlIHJ1bm5pbmcgaW50byB0aGlzIGxpbWl0YXRpb24uXFxuXFxuXCIsMTc6XCJDU1NTdHlsZVNoZWV0IGNvdWxkIG5vdCBiZSBmb3VuZCBvbiBIVE1MU3R5bGVFbGVtZW50LlxcbkhhcyBzdHlsZWQtY29tcG9uZW50cycgc3R5bGUgdGFnIGJlZW4gdW5tb3VudGVkIG9yIGFsdGVyZWQgYnkgYW5vdGhlciBzY3JpcHQ/XFxuXCJ9Ont9O2Z1bmN0aW9uIEQoKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MD92b2lkIDA6YXJndW1lbnRzWzBdLHQ9W10sbj0xLHI9YXJndW1lbnRzLmxlbmd0aDtuPHI7bis9MSl0LnB1c2gobjwwfHxhcmd1bWVudHMubGVuZ3RoPD1uP3ZvaWQgMDphcmd1bWVudHNbbl0pO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe2U9ZS5yZXBsYWNlKC8lW2Etel0vLHQpfSkpLGV9ZnVuY3Rpb24gaihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07dGhyb3dcInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WP25ldyBFcnJvcihcIkFuIGVycm9yIG9jY3VycmVkLiBTZWUgaHR0cHM6Ly9naXQuaW8vSlVJYUUjXCIrZStcIiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIisobi5sZW5ndGg+MD9cIiBBcmdzOiBcIituLmpvaW4oXCIsIFwiKTpcIlwiKSk6bmV3IEVycm9yKEQuYXBwbHkodm9pZCAwLFtSW2VdXS5jb25jYXQobikpLnRyaW0oKSl9dmFyIFQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMuZ3JvdXBTaXplcz1uZXcgVWludDMyQXJyYXkoNTEyKSx0aGlzLmxlbmd0aD01MTIsdGhpcy50YWc9ZX12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5pbmRleE9mR3JvdXA9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj0wO248ZTtuKyspdCs9dGhpcy5ncm91cFNpemVzW25dO3JldHVybiB0fSx0Lmluc2VydFJ1bGVzPWZ1bmN0aW9uKGUsdCl7aWYoZT49dGhpcy5ncm91cFNpemVzLmxlbmd0aCl7Zm9yKHZhciBuPXRoaXMuZ3JvdXBTaXplcyxyPW4ubGVuZ3RoLG89cjtlPj1vOykobzw8PTEpPDAmJmooMTYsXCJcIitlKTt0aGlzLmdyb3VwU2l6ZXM9bmV3IFVpbnQzMkFycmF5KG8pLHRoaXMuZ3JvdXBTaXplcy5zZXQobiksdGhpcy5sZW5ndGg9bztmb3IodmFyIHM9cjtzPG87cysrKXRoaXMuZ3JvdXBTaXplc1tzXT0wfWZvcih2YXIgaT10aGlzLmluZGV4T2ZHcm91cChlKzEpLGE9MCxjPXQubGVuZ3RoO2E8YzthKyspdGhpcy50YWcuaW5zZXJ0UnVsZShpLHRbYV0pJiYodGhpcy5ncm91cFNpemVzW2VdKyssaSsrKX0sdC5jbGVhckdyb3VwPWZ1bmN0aW9uKGUpe2lmKGU8dGhpcy5sZW5ndGgpe3ZhciB0PXRoaXMuZ3JvdXBTaXplc1tlXSxuPXRoaXMuaW5kZXhPZkdyb3VwKGUpLHI9bit0O3RoaXMuZ3JvdXBTaXplc1tlXT0wO2Zvcih2YXIgbz1uO288cjtvKyspdGhpcy50YWcuZGVsZXRlUnVsZShuKX19LHQuZ2V0R3JvdXA9ZnVuY3Rpb24oZSl7dmFyIHQ9XCJcIjtpZihlPj10aGlzLmxlbmd0aHx8MD09PXRoaXMuZ3JvdXBTaXplc1tlXSlyZXR1cm4gdDtmb3IodmFyIG49dGhpcy5ncm91cFNpemVzW2VdLHI9dGhpcy5pbmRleE9mR3JvdXAoZSksbz1yK24scz1yO3M8bztzKyspdCs9dGhpcy50YWcuZ2V0UnVsZShzKStcIi8qIXNjKi9cXG5cIjtyZXR1cm4gdH0sZX0oKSx4PW5ldyBNYXAsaz1uZXcgTWFwLFY9MSxCPWZ1bmN0aW9uKGUpe2lmKHguaGFzKGUpKXJldHVybiB4LmdldChlKTtmb3IoO2suaGFzKFYpOylWKys7dmFyIHQ9VisrO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJigoMHx0KTwwfHx0PjE8PDMwKSYmaigxNixcIlwiK3QpLHguc2V0KGUsdCksay5zZXQodCxlKSx0fSx6PWZ1bmN0aW9uKGUpe3JldHVybiBrLmdldChlKX0sTT1mdW5jdGlvbihlLHQpe3Q+PVYmJihWPXQrMSkseC5zZXQoZSx0KSxrLnNldCh0LGUpfSxHPVwic3R5bGVbXCIrQSsnXVtkYXRhLXN0eWxlZC12ZXJzaW9uPVwiNS4zLjNcIl0nLEw9bmV3IFJlZ0V4cChcIl5cIitBKydcXFxcLmcoXFxcXGQrKVxcXFxbaWQ9XCIoW1xcXFx3XFxcXGQtXSspXCJcXFxcXS4qP1wiKFteXCJdKiknKSxGPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHIsbz1uLnNwbGl0KFwiLFwiKSxzPTAsaT1vLmxlbmd0aDtzPGk7cysrKShyPW9bc10pJiZlLnJlZ2lzdGVyTmFtZSh0LHIpfSxZPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPSh0LnRleHRDb250ZW50fHxcIlwiKS5zcGxpdChcIi8qIXNjKi9cXG5cIikscj1bXSxvPTAscz1uLmxlbmd0aDtvPHM7bysrKXt2YXIgaT1uW29dLnRyaW0oKTtpZihpKXt2YXIgYT1pLm1hdGNoKEwpO2lmKGEpe3ZhciBjPTB8cGFyc2VJbnQoYVsxXSwxMCksdT1hWzJdOzAhPT1jJiYoTSh1LGMpLEYoZSx1LGFbM10pLGUuZ2V0VGFnKCkuaW5zZXJ0UnVsZXMoYyxyKSksci5sZW5ndGg9MH1lbHNlIHIucHVzaChpKX19fSxxPWZ1bmN0aW9uKCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93Ll9fd2VicGFja19ub25jZV9fP3dpbmRvdy5fX3dlYnBhY2tfbm9uY2VfXzpudWxsfSxIPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmhlYWQsbj1lfHx0LHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpLG89ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUuY2hpbGROb2RlcyxuPXQubGVuZ3RoO24+PTA7bi0tKXt2YXIgcj10W25dO2lmKHImJjE9PT1yLm5vZGVUeXBlJiZyLmhhc0F0dHJpYnV0ZShBKSlyZXR1cm4gcn19KG4pLHM9dm9pZCAwIT09bz9vLm5leHRTaWJsaW5nOm51bGw7ci5zZXRBdHRyaWJ1dGUoQSxcImFjdGl2ZVwiKSxyLnNldEF0dHJpYnV0ZShcImRhdGEtc3R5bGVkLXZlcnNpb25cIixcIjUuMy4zXCIpO3ZhciBpPXEoKTtyZXR1cm4gaSYmci5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLGkpLG4uaW5zZXJ0QmVmb3JlKHIscykscn0sJD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9dGhpcy5lbGVtZW50PUgoZSk7dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKSksdGhpcy5zaGVldD1mdW5jdGlvbihlKXtpZihlLnNoZWV0KXJldHVybiBlLnNoZWV0O2Zvcih2YXIgdD1kb2N1bWVudC5zdHlsZVNoZWV0cyxuPTAscj10Lmxlbmd0aDtuPHI7bisrKXt2YXIgbz10W25dO2lmKG8ub3duZXJOb2RlPT09ZSlyZXR1cm4gb31qKDE3KX0odCksdGhpcy5sZW5ndGg9MH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7dHJ5e3JldHVybiB0aGlzLnNoZWV0Lmluc2VydFJ1bGUodCxlKSx0aGlzLmxlbmd0aCsrLCEwfWNhdGNoKGUpe3JldHVybiExfX0sdC5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMuc2hlZXQuZGVsZXRlUnVsZShlKSx0aGlzLmxlbmd0aC0tfSx0LmdldFJ1bGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zaGVldC5jc3NSdWxlc1tlXTtyZXR1cm4gdm9pZCAwIT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIHQuY3NzVGV4dD90LmNzc1RleHQ6XCJcIn0sZX0oKSxXPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgdD10aGlzLmVsZW1lbnQ9SChlKTt0aGlzLm5vZGVzPXQuY2hpbGROb2Rlcyx0aGlzLmxlbmd0aD0wfXZhciB0PWUucHJvdG90eXBlO3JldHVybiB0Lmluc2VydFJ1bGU9ZnVuY3Rpb24oZSx0KXtpZihlPD10aGlzLmxlbmd0aCYmZT49MCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodCkscj10aGlzLm5vZGVzW2VdO3JldHVybiB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKG4scnx8bnVsbCksdGhpcy5sZW5ndGgrKywhMH1yZXR1cm4hMX0sdC5kZWxldGVSdWxlPWZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLm5vZGVzW2VdKSx0aGlzLmxlbmd0aC0tfSx0LmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ub2Rlc1tlXS50ZXh0Q29udGVudDpcIlwifSxlfSgpLFU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3RoaXMucnVsZXM9W10sdGhpcy5sZW5ndGg9MH12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5pbnNlcnRSdWxlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU8PXRoaXMubGVuZ3RoJiYodGhpcy5ydWxlcy5zcGxpY2UoZSwwLHQpLHRoaXMubGVuZ3RoKyssITApfSx0LmRlbGV0ZVJ1bGU9ZnVuY3Rpb24oZSl7dGhpcy5ydWxlcy5zcGxpY2UoZSwxKSx0aGlzLmxlbmd0aC0tfSx0LmdldFJ1bGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGU8dGhpcy5sZW5ndGg/dGhpcy5ydWxlc1tlXTpcIlwifSxlfSgpLEo9SSxYPXtpc1NlcnZlcjohSSx1c2VDU1NPTUluamVjdGlvbjohUH0sWj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LG4pe3ZvaWQgMD09PWUmJihlPUUpLHZvaWQgMD09PXQmJih0PXt9KSx0aGlzLm9wdGlvbnM9dih7fSxYLHt9LGUpLHRoaXMuZ3M9dCx0aGlzLm5hbWVzPW5ldyBNYXAobiksdGhpcy5zZXJ2ZXI9ISFlLmlzU2VydmVyLCF0aGlzLnNlcnZlciYmSSYmSiYmKEo9ITEsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoRyksbj0wLHI9dC5sZW5ndGg7bjxyO24rKyl7dmFyIG89dFtuXTtvJiZcImFjdGl2ZVwiIT09by5nZXRBdHRyaWJ1dGUoQSkmJihZKGUsbyksby5wYXJlbnROb2RlJiZvLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobykpfX0odGhpcykpfWUucmVnaXN0ZXJJZD1mdW5jdGlvbihlKXtyZXR1cm4gQihlKX07dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucz1mdW5jdGlvbih0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj0hMCksbmV3IGUodih7fSx0aGlzLm9wdGlvbnMse30sdCksdGhpcy5ncyxuJiZ0aGlzLm5hbWVzfHx2b2lkIDApfSx0LmFsbG9jYXRlR1NJbnN0YW5jZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5nc1tlXT0odGhpcy5nc1tlXXx8MCkrMX0sdC5nZXRUYWc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50YWd8fCh0aGlzLnRhZz0obj0odD10aGlzLm9wdGlvbnMpLmlzU2VydmVyLHI9dC51c2VDU1NPTUluamVjdGlvbixvPXQudGFyZ2V0LGU9bj9uZXcgVShvKTpyP25ldyAkKG8pOm5ldyBXKG8pLG5ldyBUKGUpKSk7dmFyIGUsdCxuLHIsb30sdC5oYXNOYW1lRm9ySWQ9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmhhcyh0KX0sdC5yZWdpc3Rlck5hbWU9ZnVuY3Rpb24oZSx0KXtpZihCKGUpLHRoaXMubmFtZXMuaGFzKGUpKXRoaXMubmFtZXMuZ2V0KGUpLmFkZCh0KTtlbHNle3ZhciBuPW5ldyBTZXQ7bi5hZGQodCksdGhpcy5uYW1lcy5zZXQoZSxuKX19LHQuaW5zZXJ0UnVsZXM9ZnVuY3Rpb24oZSx0LG4pe3RoaXMucmVnaXN0ZXJOYW1lKGUsdCksdGhpcy5nZXRUYWcoKS5pbnNlcnRSdWxlcyhCKGUpLG4pfSx0LmNsZWFyTmFtZXM9ZnVuY3Rpb24oZSl7dGhpcy5uYW1lcy5oYXMoZSkmJnRoaXMubmFtZXMuZ2V0KGUpLmNsZWFyKCl9LHQuY2xlYXJSdWxlcz1mdW5jdGlvbihlKXt0aGlzLmdldFRhZygpLmNsZWFyR3JvdXAoQihlKSksdGhpcy5jbGVhck5hbWVzKGUpfSx0LmNsZWFyVGFnPWZ1bmN0aW9uKCl7dGhpcy50YWc9dm9pZCAwfSx0LnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmdldFRhZygpLG49dC5sZW5ndGgscj1cIlwiLG89MDtvPG47bysrKXt2YXIgcz16KG8pO2lmKHZvaWQgMCE9PXMpe3ZhciBpPWUubmFtZXMuZ2V0KHMpLGE9dC5nZXRHcm91cChvKTtpZihpJiZhJiZpLnNpemUpe3ZhciBjPUErXCIuZ1wiK28rJ1tpZD1cIicrcysnXCJdJyx1PVwiXCI7dm9pZCAwIT09aSYmaS5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmxlbmd0aD4wJiYodSs9ZStcIixcIil9KSkscis9XCJcIithK2MrJ3tjb250ZW50OlwiJyt1KydcIn0vKiFzYyovXFxuJ319fXJldHVybiByfSh0aGlzKX0sZX0oKSxLPS8oYSkoZCkvZ2ksUT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShlKyhlPjI1PzM5Ojk3KSl9O2Z1bmN0aW9uIGVlKGUpe3ZhciB0LG49XCJcIjtmb3IodD1NYXRoLmFicyhlKTt0PjUyO3Q9dC81MnwwKW49USh0JTUyKStuO3JldHVybihRKHQlNTIpK24pLnJlcGxhY2UoSyxcIiQxLSQyXCIpfXZhciB0ZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10Lmxlbmd0aDtuOyllPTMzKmVedC5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIGV9LG5lPWZ1bmN0aW9uKGUpe3JldHVybiB0ZSg1MzgxLGUpfTtmdW5jdGlvbiByZShlKXtmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrPTEpe3ZhciBuPWVbdF07aWYoYihuKSYmIU4obikpcmV0dXJuITF9cmV0dXJuITB9dmFyIG9lPW5lKFwiNS4zLjNcIiksc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuKXt0aGlzLnJ1bGVzPWUsdGhpcy5zdGF0aWNSdWxlc0lkPVwiXCIsdGhpcy5pc1N0YXRpYz1cInByb2R1Y3Rpb25cIj09PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYodm9pZCAwPT09bnx8bi5pc1N0YXRpYykmJnJlKGUpLHRoaXMuY29tcG9uZW50SWQ9dCx0aGlzLmJhc2VIYXNoPXRlKG9lLHQpLHRoaXMuYmFzZVN0eWxlPW4sWi5yZWdpc3RlcklkKHQpfXJldHVybiBlLnByb3RvdHlwZS5nZW5lcmF0ZUFuZEluamVjdFN0eWxlcz1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5jb21wb25lbnRJZCxvPVtdO2lmKHRoaXMuYmFzZVN0eWxlJiZvLnB1c2godGhpcy5iYXNlU3R5bGUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoZSx0LG4pKSx0aGlzLmlzU3RhdGljJiYhbi5oYXNoKWlmKHRoaXMuc3RhdGljUnVsZXNJZCYmdC5oYXNOYW1lRm9ySWQocix0aGlzLnN0YXRpY1J1bGVzSWQpKW8ucHVzaCh0aGlzLnN0YXRpY1J1bGVzSWQpO2Vsc2V7dmFyIHM9TmUodGhpcy5ydWxlcyxlLHQsbikuam9pbihcIlwiKSxpPWVlKHRlKHRoaXMuYmFzZUhhc2gscyk+Pj4wKTtpZighdC5oYXNOYW1lRm9ySWQocixpKSl7dmFyIGE9bihzLFwiLlwiK2ksdm9pZCAwLHIpO3QuaW5zZXJ0UnVsZXMocixpLGEpfW8ucHVzaChpKSx0aGlzLnN0YXRpY1J1bGVzSWQ9aX1lbHNle2Zvcih2YXIgYz10aGlzLnJ1bGVzLmxlbmd0aCx1PXRlKHRoaXMuYmFzZUhhc2gsbi5oYXNoKSxsPVwiXCIsZD0wO2Q8YztkKyspe3ZhciBoPXRoaXMucnVsZXNbZF07aWYoXCJzdHJpbmdcIj09dHlwZW9mIGgpbCs9aCxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiYodT10ZSh1LGgrZCkpO2Vsc2UgaWYoaCl7dmFyIHA9TmUoaCxlLHQsbiksZj1BcnJheS5pc0FycmF5KHApP3Auam9pbihcIlwiKTpwO3U9dGUodSxmK2QpLGwrPWZ9fWlmKGwpe3ZhciBtPWVlKHU+Pj4wKTtpZighdC5oYXNOYW1lRm9ySWQocixtKSl7dmFyIHk9bihsLFwiLlwiK20sdm9pZCAwLHIpO3QuaW5zZXJ0UnVsZXMocixtLHkpfW8ucHVzaChtKX19cmV0dXJuIG8uam9pbihcIiBcIil9LGV9KCksaWU9L15cXHMqXFwvXFwvLiokL2dtLGFlPVtcIjpcIixcIltcIixcIi5cIixcIiNcIl07ZnVuY3Rpb24gY2UoZSl7dmFyIHQsbixyLG8scz12b2lkIDA9PT1lP0U6ZSxpPXMub3B0aW9ucyxhPXZvaWQgMD09PWk/RTppLGM9cy5wbHVnaW5zLHU9dm9pZCAwPT09Yz93OmMsbD1uZXcgcChhKSxkPVtdLGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0KXtpZih0KXRyeXtlKHQrXCJ9XCIpfWNhdGNoKGUpe319cmV0dXJuIGZ1bmN0aW9uKG4scixvLHMsaSxhLGMsdSxsLGQpe3N3aXRjaChuKXtjYXNlIDE6aWYoMD09PWwmJjY0PT09ci5jaGFyQ29kZUF0KDApKXJldHVybiBlKHIrXCI7XCIpLFwiXCI7YnJlYWs7Y2FzZSAyOmlmKDA9PT11KXJldHVybiByK1wiLyp8Ki9cIjticmVhaztjYXNlIDM6c3dpdGNoKHUpe2Nhc2UgMTAyOmNhc2UgMTEyOnJldHVybiBlKG9bMF0rciksXCJcIjtkZWZhdWx0OnJldHVybiByKygwPT09ZD9cIi8qfCovXCI6XCJcIil9Y2FzZS0yOnIuc3BsaXQoXCIvKnwqL31cIikuZm9yRWFjaCh0KX19fSgoZnVuY3Rpb24oZSl7ZC5wdXNoKGUpfSkpLGY9ZnVuY3Rpb24oZSxyLHMpe3JldHVybiAwPT09ciYmLTEhPT1hZS5pbmRleE9mKHNbbi5sZW5ndGhdKXx8cy5tYXRjaChvKT9lOlwiLlwiK3R9O2Z1bmN0aW9uIG0oZSxzLGksYSl7dm9pZCAwPT09YSYmKGE9XCImXCIpO3ZhciBjPWUucmVwbGFjZShpZSxcIlwiKSx1PXMmJmk/aStcIiBcIitzK1wiIHsgXCIrYytcIiB9XCI6YztyZXR1cm4gdD1hLG49cyxyPW5ldyBSZWdFeHAoXCJcXFxcXCIrbitcIlxcXFxiXCIsXCJnXCIpLG89bmV3IFJlZ0V4cChcIihcXFxcXCIrbitcIlxcXFxiKXsyLH1cIiksbChpfHwhcz9cIlwiOnMsdSl9cmV0dXJuIGwudXNlKFtdLmNvbmNhdCh1LFtmdW5jdGlvbihlLHQsbyl7Mj09PWUmJm8ubGVuZ3RoJiZvWzBdLmxhc3RJbmRleE9mKG4pPjAmJihvWzBdPW9bMF0ucmVwbGFjZShyLGYpKX0saCxmdW5jdGlvbihlKXtpZigtMj09PWUpe3ZhciB0PWQ7cmV0dXJuIGQ9W10sdH19XSkpLG0uaGFzaD11Lmxlbmd0aD91LnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5uYW1lfHxqKDE1KSx0ZShlLHQubmFtZSl9KSw1MzgxKS50b1N0cmluZygpOlwiXCIsbX12YXIgdWU9ci5jcmVhdGVDb250ZXh0KCksbGU9dWUuQ29uc3VtZXIsZGU9ci5jcmVhdGVDb250ZXh0KCksaGU9KGRlLkNvbnN1bWVyLG5ldyBaKSxwZT1jZSgpO2Z1bmN0aW9uIGZlKCl7cmV0dXJuIHModWUpfHxoZX1mdW5jdGlvbiBtZSgpe3JldHVybiBzKGRlKXx8cGV9ZnVuY3Rpb24geWUoZSl7dmFyIHQ9byhlLnN0eWxpc1BsdWdpbnMpLG49dFswXSxzPXRbMV0sYz1mZSgpLHU9aSgoZnVuY3Rpb24oKXt2YXIgdD1jO3JldHVybiBlLnNoZWV0P3Q9ZS5zaGVldDplLnRhcmdldCYmKHQ9dC5yZWNvbnN0cnVjdFdpdGhPcHRpb25zKHt0YXJnZXQ6ZS50YXJnZXR9LCExKSksZS5kaXNhYmxlQ1NTT01JbmplY3Rpb24mJih0PXQucmVjb25zdHJ1Y3RXaXRoT3B0aW9ucyh7dXNlQ1NTT01JbmplY3Rpb246ITF9KSksdH0pLFtlLmRpc2FibGVDU1NPTUluamVjdGlvbixlLnNoZWV0LGUudGFyZ2V0XSksbD1pKChmdW5jdGlvbigpe3JldHVybiBjZSh7b3B0aW9uczp7cHJlZml4OiFlLmRpc2FibGVWZW5kb3JQcmVmaXhlc30scGx1Z2luczpufSl9KSxbZS5kaXNhYmxlVmVuZG9yUHJlZml4ZXMsbl0pO3JldHVybiBhKChmdW5jdGlvbigpe2gobixlLnN0eWxpc1BsdWdpbnMpfHxzKGUuc3R5bGlzUGx1Z2lucyl9KSxbZS5zdHlsaXNQbHVnaW5zXSksci5jcmVhdGVFbGVtZW50KHVlLlByb3ZpZGVyLHt2YWx1ZTp1fSxyLmNyZWF0ZUVsZW1lbnQoZGUuUHJvdmlkZXIse3ZhbHVlOmx9LFwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlY/ci5DaGlsZHJlbi5vbmx5KGUuY2hpbGRyZW4pOmUuY2hpbGRyZW4pKX12YXIgdmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7dmFyIG49dGhpczt0aGlzLmluamVjdD1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXBlKTt2YXIgcj1uLm5hbWUrdC5oYXNoO2UuaGFzTmFtZUZvcklkKG4uaWQscil8fGUuaW5zZXJ0UnVsZXMobi5pZCxyLHQobi5ydWxlcyxyLFwiQGtleWZyYW1lc1wiKSl9LHRoaXMudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gaigxMixTdHJpbmcobi5uYW1lKSl9LHRoaXMubmFtZT1lLHRoaXMuaWQ9XCJzYy1rZXlmcmFtZXMtXCIrZSx0aGlzLnJ1bGVzPXR9cmV0dXJuIGUucHJvdG90eXBlLmdldE5hbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPXBlKSx0aGlzLm5hbWUrZS5oYXNofSxlfSgpLGdlPS8oW0EtWl0pLyxTZT0vKFtBLVpdKS9nLHdlPS9ebXMtLyxFZT1mdW5jdGlvbihlKXtyZXR1cm5cIi1cIitlLnRvTG93ZXJDYXNlKCl9O2Z1bmN0aW9uIGJlKGUpe3JldHVybiBnZS50ZXN0KGUpP2UucmVwbGFjZShTZSxFZSkucmVwbGFjZSh3ZSxcIi1tcy1cIik6ZX12YXIgX2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWV8fCExPT09ZXx8XCJcIj09PWV9O2Z1bmN0aW9uIE5lKGUsbixyLG8pe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcyxpPVtdLGE9MCxjPWUubGVuZ3RoO2E8YzthKz0xKVwiXCIhPT0ocz1OZShlW2FdLG4scixvKSkmJihBcnJheS5pc0FycmF5KHMpP2kucHVzaC5hcHBseShpLHMpOmkucHVzaChzKSk7cmV0dXJuIGl9aWYoX2UoZSkpcmV0dXJuXCJcIjtpZihOKGUpKXJldHVyblwiLlwiK2Uuc3R5bGVkQ29tcG9uZW50SWQ7aWYoYihlKSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YobD1lKXx8bC5wcm90b3R5cGUmJmwucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnR8fCFuKXJldHVybiBlO3ZhciB1PWUobik7cmV0dXJuXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmdCh1KSYmY29uc29sZS53YXJuKF8oZSkrXCIgaXMgbm90IGEgc3R5bGVkIGNvbXBvbmVudCBhbmQgY2Fubm90IGJlIHJlZmVycmVkIHRvIHZpYSBjb21wb25lbnQgc2VsZWN0b3IuIFNlZSBodHRwczovL3d3dy5zdHlsZWQtY29tcG9uZW50cy5jb20vZG9jcy9hZHZhbmNlZCNyZWZlcnJpbmctdG8tb3RoZXItY29tcG9uZW50cyBmb3IgbW9yZSBkZXRhaWxzLlwiKSxOZSh1LG4scixvKX12YXIgbDtyZXR1cm4gZSBpbnN0YW5jZW9mIHZlP3I/KGUuaW5qZWN0KHIsbyksZS5nZXROYW1lKG8pKTplOlMoZSk/ZnVuY3Rpb24gZSh0LG4pe3ZhciByLG8scz1bXTtmb3IodmFyIGkgaW4gdCl0Lmhhc093blByb3BlcnR5KGkpJiYhX2UodFtpXSkmJihBcnJheS5pc0FycmF5KHRbaV0pJiZ0W2ldLmlzQ3NzfHxiKHRbaV0pP3MucHVzaChiZShpKStcIjpcIix0W2ldLFwiO1wiKTpTKHRbaV0pP3MucHVzaC5hcHBseShzLGUodFtpXSxpKSk6cy5wdXNoKGJlKGkpK1wiOiBcIisocj1pLG51bGw9PShvPXRbaV0pfHxcImJvb2xlYW5cIj09dHlwZW9mIG98fFwiXCI9PT1vP1wiXCI6XCJudW1iZXJcIiE9dHlwZW9mIG98fDA9PT1vfHxyIGluIGY/U3RyaW5nKG8pLnRyaW0oKTpvK1wicHhcIikrXCI7XCIpKTtyZXR1cm4gbj9bbitcIiB7XCJdLmNvbmNhdChzLFtcIn1cIl0pOnN9KGUpOmUudG9TdHJpbmcoKX12YXIgQWU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSkmJihlLmlzQ3NzPSEwKSxlfTtmdW5jdGlvbiBDZShlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLHI9MTtyPHQ7cisrKW5bci0xXT1hcmd1bWVudHNbcl07cmV0dXJuIGIoZSl8fFMoZSk/QWUoTmUoZyh3LFtlXS5jb25jYXQobikpKSk6MD09PW4ubGVuZ3RoJiYxPT09ZS5sZW5ndGgmJlwic3RyaW5nXCI9PXR5cGVvZiBlWzBdP2U6QWUoTmUoZyhlLG4pKSl9dmFyIEllPS9pbnZhbGlkIGhvb2sgY2FsbC9pLFBlPW5ldyBTZXQsT2U9ZnVuY3Rpb24oZSx0KXtpZihcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WKXt2YXIgbj1cIlRoZSBjb21wb25lbnQgXCIrZSsodD8nIHdpdGggdGhlIGlkIG9mIFwiJyt0KydcIic6XCJcIikrXCIgaGFzIGJlZW4gY3JlYXRlZCBkeW5hbWljYWxseS5cXG5Zb3UgbWF5IHNlZSB0aGlzIHdhcm5pbmcgYmVjYXVzZSB5b3UndmUgY2FsbGVkIHN0eWxlZCBpbnNpZGUgYW5vdGhlciBjb21wb25lbnQuXFxuVG8gcmVzb2x2ZSB0aGlzIG9ubHkgY3JlYXRlIG5ldyBTdHlsZWRDb21wb25lbnRzIG91dHNpZGUgb2YgYW55IHJlbmRlciBtZXRob2QgYW5kIGZ1bmN0aW9uIGNvbXBvbmVudC5cIixyPWNvbnNvbGUuZXJyb3I7dHJ5e3ZhciBvPSEwO2NvbnNvbGUuZXJyb3I9ZnVuY3Rpb24oZSl7aWYoSWUudGVzdChlKSlvPSExLFBlLmRlbGV0ZShuKTtlbHNle2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHM9bmV3IEFycmF5KHQ+MT90LTE6MCksaT0xO2k8dDtpKyspc1tpLTFdPWFyZ3VtZW50c1tpXTtyLmFwcGx5KHZvaWQgMCxbZV0uY29uY2F0KHMpKX19LGMoKSxvJiYhUGUuaGFzKG4pJiYoY29uc29sZS53YXJuKG4pLFBlLmFkZChuKSl9Y2F0Y2goZSl7SWUudGVzdChlLm1lc3NhZ2UpJiZQZS5kZWxldGUobil9ZmluYWxseXtjb25zb2xlLmVycm9yPXJ9fX0sUmU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB2b2lkIDA9PT1uJiYobj1FKSxlLnRoZW1lIT09bi50aGVtZSYmZS50aGVtZXx8dHx8bi50aGVtZX0sRGU9L1shXCIjJCUmJygpKissLi86Ozw9Pj9AW1xcXFxcXF1eYHt8fX4tXSsvZyxqZT0vKF4tfC0kKS9nO2Z1bmN0aW9uIFRlKGUpe3JldHVybiBlLnJlcGxhY2UoRGUsXCItXCIpLnJlcGxhY2UoamUsXCJcIil9dmFyIHhlPWZ1bmN0aW9uKGUpe3JldHVybiBlZShuZShlKT4+PjApfTtmdW5jdGlvbiBrZShlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZSYmKFwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fGUuY2hhckF0KDApPT09ZS5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSl9dmFyIFZlPWZ1bmN0aW9uKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGV8fFwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmIUFycmF5LmlzQXJyYXkoZSl9LEJlPWZ1bmN0aW9uKGUpe3JldHVyblwiX19wcm90b19fXCIhPT1lJiZcImNvbnN0cnVjdG9yXCIhPT1lJiZcInByb3RvdHlwZVwiIT09ZX07ZnVuY3Rpb24gemUoZSx0LG4pe3ZhciByPWVbbl07VmUodCkmJlZlKHIpP01lKHIsdCk6ZVtuXT10fWZ1bmN0aW9uIE1lKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTtmb3IodmFyIG89MCxzPW47bzxzLmxlbmd0aDtvKyspe3ZhciBpPXNbb107aWYoVmUoaSkpZm9yKHZhciBhIGluIGkpQmUoYSkmJnplKGUsaVthXSxhKX1yZXR1cm4gZX12YXIgR2U9ci5jcmVhdGVDb250ZXh0KCksTGU9R2UuQ29uc3VtZXI7ZnVuY3Rpb24gRmUoZSl7dmFyIHQ9cyhHZSksbj1pKChmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe2lmKCFlKXJldHVybiBqKDE0KTtpZihiKGUpKXt2YXIgbj1lKHQpO3JldHVyblwicHJvZHVjdGlvblwiPT09cHJvY2Vzcy5lbnYuTk9ERV9FTlZ8fG51bGwhPT1uJiYhQXJyYXkuaXNBcnJheShuKSYmXCJvYmplY3RcIj09dHlwZW9mIG4/bjpqKDcpfXJldHVybiBBcnJheS5pc0FycmF5KGUpfHxcIm9iamVjdFwiIT10eXBlb2YgZT9qKDgpOnQ/dih7fSx0LHt9LGUpOmV9KGUudGhlbWUsdCl9KSxbZS50aGVtZSx0XSk7cmV0dXJuIGUuY2hpbGRyZW4/ci5jcmVhdGVFbGVtZW50KEdlLlByb3ZpZGVyLHt2YWx1ZTpufSxlLmNoaWxkcmVuKTpudWxsfXZhciBZZT17fTtmdW5jdGlvbiBxZShlLHQsbil7dmFyIG89TihlKSxpPSFrZShlKSxhPXQuYXR0cnMsYz12b2lkIDA9PT1hP3c6YSxkPXQuY29tcG9uZW50SWQsaD12b2lkIDA9PT1kP2Z1bmN0aW9uKGUsdCl7dmFyIG49XCJzdHJpbmdcIiE9dHlwZW9mIGU/XCJzY1wiOlRlKGUpO1llW25dPShZZVtuXXx8MCkrMTt2YXIgcj1uK1wiLVwiK3hlKFwiNS4zLjNcIituK1llW25dKTtyZXR1cm4gdD90K1wiLVwiK3I6cn0odC5kaXNwbGF5TmFtZSx0LnBhcmVudENvbXBvbmVudElkKTpkLHA9dC5kaXNwbGF5TmFtZSxmPXZvaWQgMD09PXA/ZnVuY3Rpb24oZSl7cmV0dXJuIGtlKGUpP1wic3R5bGVkLlwiK2U6XCJTdHlsZWQoXCIrXyhlKStcIilcIn0oZSk6cCxnPXQuZGlzcGxheU5hbWUmJnQuY29tcG9uZW50SWQ/VGUodC5kaXNwbGF5TmFtZSkrXCItXCIrdC5jb21wb25lbnRJZDp0LmNvbXBvbmVudElkfHxoLFM9byYmZS5hdHRycz9BcnJheS5wcm90b3R5cGUuY29uY2F0KGUuYXR0cnMsYykuZmlsdGVyKEJvb2xlYW4pOmMsQT10LnNob3VsZEZvcndhcmRQcm9wO28mJmUuc2hvdWxkRm9yd2FyZFByb3AmJihBPXQuc2hvdWxkRm9yd2FyZFByb3A/ZnVuY3Rpb24obixyLG8pe3JldHVybiBlLnNob3VsZEZvcndhcmRQcm9wKG4scixvKSYmdC5zaG91bGRGb3J3YXJkUHJvcChuLHIsbyl9OmUuc2hvdWxkRm9yd2FyZFByb3ApO3ZhciBDLEk9bmV3IHNlKG4sZyxvP2UuY29tcG9uZW50U3R5bGU6dm9pZCAwKSxQPUkuaXNTdGF0aWMmJjA9PT1jLmxlbmd0aCxPPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPWUuYXR0cnMsaT1lLmNvbXBvbmVudFN0eWxlLGE9ZS5kZWZhdWx0UHJvcHMsYz1lLmZvbGRlZENvbXBvbmVudElkcyxkPWUuc2hvdWxkRm9yd2FyZFByb3AsaD1lLnN0eWxlZENvbXBvbmVudElkLHA9ZS50YXJnZXQ7XCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmbChoKTt2YXIgZj1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09ZSYmKGU9RSk7dmFyIHI9dih7fSx0LHt0aGVtZTplfSksbz17fTtyZXR1cm4gbi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdCxuLHMsaT1lO2Zvcih0IGluIGIoaSkmJihpPWkocikpLGkpclt0XT1vW3RdPVwiY2xhc3NOYW1lXCI9PT10PyhuPW9bdF0scz1pW3RdLG4mJnM/bitcIiBcIitzOm58fHMpOmlbdF19KSksW3Isb119KFJlKHQscyhHZSksYSl8fEUsdCxvKSx5PWZbMF0sZz1mWzFdLFM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89ZmUoKSxzPW1lKCksaT10P2UuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMoRSxvLHMpOmUuZ2VuZXJhdGVBbmRJbmplY3RTdHlsZXMobixvLHMpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJmwoaSksXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmIXQmJnImJnIoaSksaX0oaSxyLHksXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOVj9lLndhcm5Ub29NYW55Q2xhc3Nlczp2b2lkIDApLHc9bixfPWcuJGFzfHx0LiRhc3x8Zy5hc3x8dC5hc3x8cCxOPWtlKF8pLEE9ZyE9PXQ/dih7fSx0LHt9LGcpOnQsQz17fTtmb3IodmFyIEkgaW4gQSlcIiRcIiE9PUlbMF0mJlwiYXNcIiE9PUkmJihcImZvcndhcmRlZEFzXCI9PT1JP0MuYXM9QVtJXTooZD9kKEksbSxfKTohTnx8bShJKSkmJihDW0ldPUFbSV0pKTtyZXR1cm4gdC5zdHlsZSYmZy5zdHlsZSE9PXQuc3R5bGUmJihDLnN0eWxlPXYoe30sdC5zdHlsZSx7fSxnLnN0eWxlKSksQy5jbGFzc05hbWU9QXJyYXkucHJvdG90eXBlLmNvbmNhdChjLGgsUyE9PWg/UzpudWxsLHQuY2xhc3NOYW1lLGcuY2xhc3NOYW1lKS5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIiksQy5yZWY9dyx1KF8sQyl9KEMsZSx0LFApfTtyZXR1cm4gTy5kaXNwbGF5TmFtZT1mLChDPXIuZm9yd2FyZFJlZihPKSkuYXR0cnM9UyxDLmNvbXBvbmVudFN0eWxlPUksQy5kaXNwbGF5TmFtZT1mLEMuc2hvdWxkRm9yd2FyZFByb3A9QSxDLmZvbGRlZENvbXBvbmVudElkcz1vP0FycmF5LnByb3RvdHlwZS5jb25jYXQoZS5mb2xkZWRDb21wb25lbnRJZHMsZS5zdHlsZWRDb21wb25lbnRJZCk6dyxDLnN0eWxlZENvbXBvbmVudElkPWcsQy50YXJnZXQ9bz9lLnRhcmdldDplLEMud2l0aENvbXBvbmVudD1mdW5jdGlvbihlKXt2YXIgcj10LmNvbXBvbmVudElkLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxzPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxzLmxlbmd0aDtyKyspbj1zW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KHQsW1wiY29tcG9uZW50SWRcIl0pLHM9ciYmcitcIi1cIisoa2UoZSk/ZTpUZShfKGUpKSk7cmV0dXJuIHFlKGUsdih7fSxvLHthdHRyczpTLGNvbXBvbmVudElkOnN9KSxuKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KEMsXCJkZWZhdWx0UHJvcHNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZvbGRlZERlZmF1bHRQcm9wc30sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX2ZvbGRlZERlZmF1bHRQcm9wcz1vP01lKHt9LGUuZGVmYXVsdFByb3BzLHQpOnR9fSksXCJwcm9kdWN0aW9uXCIhPT1wcm9jZXNzLmVudi5OT0RFX0VOViYmKE9lKGYsZyksQy53YXJuVG9vTWFueUNsYXNzZXM9ZnVuY3Rpb24oZSx0KXt2YXIgbj17fSxyPSExO3JldHVybiBmdW5jdGlvbihvKXtpZighciYmKG5bb109ITAsT2JqZWN0LmtleXMobikubGVuZ3RoPj0yMDApKXt2YXIgcz10Pycgd2l0aCB0aGUgaWQgb2YgXCInK3QrJ1wiJzpcIlwiO2NvbnNvbGUud2FybihcIk92ZXIgMjAwIGNsYXNzZXMgd2VyZSBnZW5lcmF0ZWQgZm9yIGNvbXBvbmVudCBcIitlK3MrXCIuXFxuQ29uc2lkZXIgdXNpbmcgdGhlIGF0dHJzIG1ldGhvZCwgdG9nZXRoZXIgd2l0aCBhIHN0eWxlIG9iamVjdCBmb3IgZnJlcXVlbnRseSBjaGFuZ2VkIHN0eWxlcy5cXG5FeGFtcGxlOlxcbiAgY29uc3QgQ29tcG9uZW50ID0gc3R5bGVkLmRpdi5hdHRycyhwcm9wcyA9PiAoe1xcbiAgICBzdHlsZToge1xcbiAgICAgIGJhY2tncm91bmQ6IHByb3BzLmJhY2tncm91bmQsXFxuICAgIH0sXFxuICB9KSlgd2lkdGg6IDEwMCU7YFxcblxcbiAgPENvbXBvbmVudCAvPlwiKSxyPSEwLG49e319fX0oZixnKSksQy50b1N0cmluZz1mdW5jdGlvbigpe3JldHVyblwiLlwiK0Muc3R5bGVkQ29tcG9uZW50SWR9LGkmJnkoQyxlLHthdHRyczohMCxjb21wb25lbnRTdHlsZTohMCxkaXNwbGF5TmFtZTohMCxmb2xkZWRDb21wb25lbnRJZHM6ITAsc2hvdWxkRm9yd2FyZFByb3A6ITAsc3R5bGVkQ29tcG9uZW50SWQ6ITAsdGFyZ2V0OiEwLHdpdGhDb21wb25lbnQ6ITB9KSxDfXZhciBIZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbyl7aWYodm9pZCAwPT09byYmKG89RSksIW4ocikpcmV0dXJuIGooMSxTdHJpbmcocikpO3ZhciBzPWZ1bmN0aW9uKCl7cmV0dXJuIHQocixvLENlLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX07cmV0dXJuIHMud2l0aENvbmZpZz1mdW5jdGlvbihuKXtyZXR1cm4gZSh0LHIsdih7fSxvLHt9LG4pKX0scy5hdHRycz1mdW5jdGlvbihuKXtyZXR1cm4gZSh0LHIsdih7fSxvLHthdHRyczpBcnJheS5wcm90b3R5cGUuY29uY2F0KG8uYXR0cnMsbikuZmlsdGVyKEJvb2xlYW4pfSkpfSxzfShxZSxlKX07W1wiYVwiLFwiYWJiclwiLFwiYWRkcmVzc1wiLFwiYXJlYVwiLFwiYXJ0aWNsZVwiLFwiYXNpZGVcIixcImF1ZGlvXCIsXCJiXCIsXCJiYXNlXCIsXCJiZGlcIixcImJkb1wiLFwiYmlnXCIsXCJibG9ja3F1b3RlXCIsXCJib2R5XCIsXCJiclwiLFwiYnV0dG9uXCIsXCJjYW52YXNcIixcImNhcHRpb25cIixcImNpdGVcIixcImNvZGVcIixcImNvbFwiLFwiY29sZ3JvdXBcIixcImRhdGFcIixcImRhdGFsaXN0XCIsXCJkZFwiLFwiZGVsXCIsXCJkZXRhaWxzXCIsXCJkZm5cIixcImRpYWxvZ1wiLFwiZGl2XCIsXCJkbFwiLFwiZHRcIixcImVtXCIsXCJlbWJlZFwiLFwiZmllbGRzZXRcIixcImZpZ2NhcHRpb25cIixcImZpZ3VyZVwiLFwiZm9vdGVyXCIsXCJmb3JtXCIsXCJoMVwiLFwiaDJcIixcImgzXCIsXCJoNFwiLFwiaDVcIixcImg2XCIsXCJoZWFkXCIsXCJoZWFkZXJcIixcImhncm91cFwiLFwiaHJcIixcImh0bWxcIixcImlcIixcImlmcmFtZVwiLFwiaW1nXCIsXCJpbnB1dFwiLFwiaW5zXCIsXCJrYmRcIixcImtleWdlblwiLFwibGFiZWxcIixcImxlZ2VuZFwiLFwibGlcIixcImxpbmtcIixcIm1haW5cIixcIm1hcFwiLFwibWFya1wiLFwibWFycXVlZVwiLFwibWVudVwiLFwibWVudWl0ZW1cIixcIm1ldGFcIixcIm1ldGVyXCIsXCJuYXZcIixcIm5vc2NyaXB0XCIsXCJvYmplY3RcIixcIm9sXCIsXCJvcHRncm91cFwiLFwib3B0aW9uXCIsXCJvdXRwdXRcIixcInBcIixcInBhcmFtXCIsXCJwaWN0dXJlXCIsXCJwcmVcIixcInByb2dyZXNzXCIsXCJxXCIsXCJycFwiLFwicnRcIixcInJ1YnlcIixcInNcIixcInNhbXBcIixcInNjcmlwdFwiLFwic2VjdGlvblwiLFwic2VsZWN0XCIsXCJzbWFsbFwiLFwic291cmNlXCIsXCJzcGFuXCIsXCJzdHJvbmdcIixcInN0eWxlXCIsXCJzdWJcIixcInN1bW1hcnlcIixcInN1cFwiLFwidGFibGVcIixcInRib2R5XCIsXCJ0ZFwiLFwidGV4dGFyZWFcIixcInRmb290XCIsXCJ0aFwiLFwidGhlYWRcIixcInRpbWVcIixcInRpdGxlXCIsXCJ0clwiLFwidHJhY2tcIixcInVcIixcInVsXCIsXCJ2YXJcIixcInZpZGVvXCIsXCJ3YnJcIixcImNpcmNsZVwiLFwiY2xpcFBhdGhcIixcImRlZnNcIixcImVsbGlwc2VcIixcImZvcmVpZ25PYmplY3RcIixcImdcIixcImltYWdlXCIsXCJsaW5lXCIsXCJsaW5lYXJHcmFkaWVudFwiLFwibWFya2VyXCIsXCJtYXNrXCIsXCJwYXRoXCIsXCJwYXR0ZXJuXCIsXCJwb2x5Z29uXCIsXCJwb2x5bGluZVwiLFwicmFkaWFsR3JhZGllbnRcIixcInJlY3RcIixcInN0b3BcIixcInN2Z1wiLFwidGV4dFwiLFwidGV4dFBhdGhcIixcInRzcGFuXCJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe0hlW2VdPUhlKGUpfSkpO3ZhciAkZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXt0aGlzLnJ1bGVzPWUsdGhpcy5jb21wb25lbnRJZD10LHRoaXMuaXNTdGF0aWM9cmUoZSksWi5yZWdpc3RlcklkKHRoaXMuY29tcG9uZW50SWQrMSl9dmFyIHQ9ZS5wcm90b3R5cGU7cmV0dXJuIHQuY3JlYXRlU3R5bGVzPWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXIoTmUodGhpcy5ydWxlcyx0LG4scikuam9pbihcIlwiKSxcIlwiKSxzPXRoaXMuY29tcG9uZW50SWQrZTtuLmluc2VydFJ1bGVzKHMscyxvKX0sdC5yZW1vdmVTdHlsZXM9ZnVuY3Rpb24oZSx0KXt0LmNsZWFyUnVsZXModGhpcy5jb21wb25lbnRJZCtlKX0sdC5yZW5kZXJTdHlsZXM9ZnVuY3Rpb24oZSx0LG4scil7ZT4yJiZaLnJlZ2lzdGVySWQodGhpcy5jb21wb25lbnRJZCtlKSx0aGlzLnJlbW92ZVN0eWxlcyhlLG4pLHRoaXMuY3JlYXRlU3R5bGVzKGUsdCxuLHIpfSxlfSgpO2Z1bmN0aW9uIFdlKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCksbz0xO288dDtvKyspbltvLTFdPWFyZ3VtZW50c1tvXTt2YXIgaT1DZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSksYT1cInNjLWdsb2JhbC1cIit4ZShKU09OLnN0cmluZ2lmeShpKSksdT1uZXcgJGUoaSxhKTtmdW5jdGlvbiBsKGUpe3ZhciB0PWZlKCksbj1tZSgpLG89cyhHZSksbD1jKHQuYWxsb2NhdGVHU0luc3RhbmNlKGEpKS5jdXJyZW50O3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJnIuQ2hpbGRyZW4uY291bnQoZS5jaGlsZHJlbikmJmNvbnNvbGUud2FybihcIlRoZSBnbG9iYWwgc3R5bGUgY29tcG9uZW50IFwiK2ErXCIgd2FzIGdpdmVuIGNoaWxkIEpTWC4gY3JlYXRlR2xvYmFsU3R5bGUgZG9lcyBub3QgcmVuZGVyIGNoaWxkcmVuLlwiKSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZpLnNvbWUoKGZ1bmN0aW9uKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlJiYtMSE9PWUuaW5kZXhPZihcIkBpbXBvcnRcIil9KSkmJmNvbnNvbGUud2FybihcIlBsZWFzZSBkbyBub3QgdXNlIEBpbXBvcnQgQ1NTIHN5bnRheCBpbiBjcmVhdGVHbG9iYWxTdHlsZSBhdCB0aGlzIHRpbWUsIGFzIHRoZSBDU1NPTSBBUElzIHdlIHVzZSBpbiBwcm9kdWN0aW9uIGRvIG5vdCBoYW5kbGUgaXQgd2VsbC4gSW5zdGVhZCwgd2UgcmVjb21tZW5kIHVzaW5nIGEgbGlicmFyeSBzdWNoIGFzIHJlYWN0LWhlbG1ldCB0byBpbmplY3QgYSB0eXBpY2FsIDxsaW5rPiBtZXRhIHRhZyB0byB0aGUgc3R5bGVzaGVldCwgb3Igc2ltcGx5IGVtYmVkZGluZyBpdCBtYW51YWxseSBpbiB5b3VyIGluZGV4Lmh0bWwgPGhlYWQ+IHNlY3Rpb24gZm9yIGEgc2ltcGxlciBhcHAuXCIpLHQuc2VydmVyJiZoKGwsZSx0LG8sbiksZCgoZnVuY3Rpb24oKXtpZighdC5zZXJ2ZXIpcmV0dXJuIGgobCxlLHQsbyxuKSxmdW5jdGlvbigpe3JldHVybiB1LnJlbW92ZVN0eWxlcyhsLHQpfX0pLFtsLGUsdCxvLG5dKSxudWxsfWZ1bmN0aW9uIGgoZSx0LG4scixvKXtpZih1LmlzU3RhdGljKXUucmVuZGVyU3R5bGVzKGUsTyxuLG8pO2Vsc2V7dmFyIHM9dih7fSx0LHt0aGVtZTpSZSh0LHIsbC5kZWZhdWx0UHJvcHMpfSk7dS5yZW5kZXJTdHlsZXMoZSxzLG4sbyl9fXJldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJk9lKGEpLHIubWVtbyhsKX1mdW5jdGlvbiBVZShlKXtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiYGtleWZyYW1lc2AgY2Fubm90IGJlIHVzZWQgb24gUmVhY3ROYXRpdmUsIG9ubHkgb24gdGhlIHdlYi4gVG8gZG8gYW5pbWF0aW9uIGluIFJlYWN0TmF0aXZlIHBsZWFzZSB1c2UgQW5pbWF0ZWQuXCIpO2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1DZS5hcHBseSh2b2lkIDAsW2VdLmNvbmNhdChuKSkuam9pbihcIlwiKSxzPXhlKG8pO3JldHVybiBuZXcgdmUocyxvKX12YXIgSmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dmFyIGU9dGhpczt0aGlzLl9lbWl0U2hlZXRDU1M9ZnVuY3Rpb24oKXt2YXIgdD1lLmluc3RhbmNlLnRvU3RyaW5nKCk7aWYoIXQpcmV0dXJuXCJcIjt2YXIgbj1xKCk7cmV0dXJuXCI8c3R5bGUgXCIrW24mJidub25jZT1cIicrbisnXCInLEErJz1cInRydWVcIicsJ2RhdGEtc3R5bGVkLXZlcnNpb249XCI1LjMuM1wiJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpK1wiPlwiK3QrXCI8L3N0eWxlPlwifSx0aGlzLmdldFN0eWxlVGFncz1mdW5jdGlvbigpe3JldHVybiBlLnNlYWxlZD9qKDIpOmUuX2VtaXRTaGVldENTUygpfSx0aGlzLmdldFN0eWxlRWxlbWVudD1mdW5jdGlvbigpe3ZhciB0O2lmKGUuc2VhbGVkKXJldHVybiBqKDIpO3ZhciBuPSgodD17fSlbQV09XCJcIix0W1wiZGF0YS1zdHlsZWQtdmVyc2lvblwiXT1cIjUuMy4zXCIsdC5kYW5nZXJvdXNseVNldElubmVySFRNTD17X19odG1sOmUuaW5zdGFuY2UudG9TdHJpbmcoKX0sdCksbz1xKCk7cmV0dXJuIG8mJihuLm5vbmNlPW8pLFtyLmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLHYoe30sbix7a2V5Olwic2MtMC0wXCJ9KSldfSx0aGlzLnNlYWw9ZnVuY3Rpb24oKXtlLnNlYWxlZD0hMH0sdGhpcy5pbnN0YW5jZT1uZXcgWih7aXNTZXJ2ZXI6ITB9KSx0aGlzLnNlYWxlZD0hMX12YXIgdD1lLnByb3RvdHlwZTtyZXR1cm4gdC5jb2xsZWN0U3R5bGVzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNlYWxlZD9qKDIpOnIuY3JlYXRlRWxlbWVudCh5ZSx7c2hlZXQ6dGhpcy5pbnN0YW5jZX0sZSl9LHQuaW50ZXJsZWF2ZVdpdGhOb2RlU3RyZWFtPWZ1bmN0aW9uKGUpe3JldHVybiBqKDMpfSxlfSgpLFhlPWZ1bmN0aW9uKGUpe3ZhciB0PXIuZm9yd2FyZFJlZigoZnVuY3Rpb24odCxuKXt2YXIgbz1zKEdlKSxpPWUuZGVmYXVsdFByb3BzLGE9UmUodCxvLGkpO3JldHVyblwicHJvZHVjdGlvblwiIT09cHJvY2Vzcy5lbnYuTk9ERV9FTlYmJnZvaWQgMD09PWEmJmNvbnNvbGUud2FybignW3dpdGhUaGVtZV0gWW91IGFyZSBub3QgdXNpbmcgYSBUaGVtZVByb3ZpZGVyIG5vciBwYXNzaW5nIGEgdGhlbWUgcHJvcCBvciBhIHRoZW1lIGluIGRlZmF1bHRQcm9wcyBpbiBjb21wb25lbnQgY2xhc3MgXCInK18oZSkrJ1wiJyksci5jcmVhdGVFbGVtZW50KGUsdih7fSx0LHt0aGVtZTphLHJlZjpufSkpfSkpO3JldHVybiB5KHQsZSksdC5kaXNwbGF5TmFtZT1cIldpdGhUaGVtZShcIitfKGUpK1wiKVwiLHR9LFplPWZ1bmN0aW9uKCl7cmV0dXJuIHMoR2UpfSxLZT17U3R5bGVTaGVldDpaLG1hc3RlclNoZWV0OmhlfTtcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yJiZcIlJlYWN0TmF0aXZlXCI9PT1uYXZpZ2F0b3IucHJvZHVjdCYmY29uc29sZS53YXJuKFwiSXQgbG9va3MgbGlrZSB5b3UndmUgaW1wb3J0ZWQgJ3N0eWxlZC1jb21wb25lbnRzJyBvbiBSZWFjdCBOYXRpdmUuXFxuUGVyaGFwcyB5b3UncmUgbG9va2luZyB0byBpbXBvcnQgJ3N0eWxlZC1jb21wb25lbnRzL25hdGl2ZSc/XFxuUmVhZCBtb3JlIGFib3V0IHRoaXMgYXQgaHR0cHM6Ly93d3cuc3R5bGVkLWNvbXBvbmVudHMuY29tL2RvY3MvYmFzaWNzI3JlYWN0LW5hdGl2ZVwiKSxcInByb2R1Y3Rpb25cIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInRlc3RcIiE9PXByb2Nlc3MuZW52Lk5PREVfRU5WJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYod2luZG93W1wiX19zdHlsZWQtY29tcG9uZW50cy1pbml0X19cIl09d2luZG93W1wiX19zdHlsZWQtY29tcG9uZW50cy1pbml0X19cIl18fDAsMT09PXdpbmRvd1tcIl9fc3R5bGVkLWNvbXBvbmVudHMtaW5pdF9fXCJdJiZjb25zb2xlLndhcm4oXCJJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiAnc3R5bGVkLWNvbXBvbmVudHMnIGluaXRpYWxpemVkIGluIHRoaXMgYXBwbGljYXRpb24uIFRoaXMgbWF5IGNhdXNlIGR5bmFtaWMgc3R5bGVzIHRvIG5vdCByZW5kZXIgcHJvcGVybHksIGVycm9ycyBkdXJpbmcgdGhlIHJlaHlkcmF0aW9uIHByb2Nlc3MsIGEgbWlzc2luZyB0aGVtZSBwcm9wLCBhbmQgbWFrZXMgeW91ciBhcHBsaWNhdGlvbiBiaWdnZXIgd2l0aG91dCBnb29kIHJlYXNvbi5cXG5cXG5TZWUgaHR0cHM6Ly9zLWMuc2gvMkJBWHplZCBmb3IgbW9yZSBpbmZvLlwiKSx3aW5kb3dbXCJfX3N0eWxlZC1jb21wb25lbnRzLWluaXRfX1wiXSs9MSk7ZXhwb3J0IGRlZmF1bHQgSGU7ZXhwb3J0e0plIGFzIFNlcnZlclN0eWxlU2hlZXQsbGUgYXMgU3R5bGVTaGVldENvbnN1bWVyLHVlIGFzIFN0eWxlU2hlZXRDb250ZXh0LHllIGFzIFN0eWxlU2hlZXRNYW5hZ2VyLExlIGFzIFRoZW1lQ29uc3VtZXIsR2UgYXMgVGhlbWVDb250ZXh0LEZlIGFzIFRoZW1lUHJvdmlkZXIsS2UgYXMgX19QUklWQVRFX18sV2UgYXMgY3JlYXRlR2xvYmFsU3R5bGUsQ2UgYXMgY3NzLE4gYXMgaXNTdHlsZWRDb21wb25lbnQsVWUgYXMga2V5ZnJhbWVzLFplIGFzIHVzZVRoZW1lLEMgYXMgdmVyc2lvbixYZSBhcyB3aXRoVGhlbWV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3R5bGVkLWNvbXBvbmVudHMuYnJvd3Nlci5lc20uanMubWFwXG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdElzID0gcmVxdWlyZSgncmVhY3QtaXMnKTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVzaW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0b3J5V2l0aFR5cGVDaGVja2VycycpKFJlYWN0SXMuaXNFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNzKTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtaXMuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVnZW5lcmF0b3ItcnVudGltZVwiKTtcbiIsImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0ge307XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgaWYgKGNhY2hlW2FyZ10gPT09IHVuZGVmaW5lZCkgY2FjaGVbYXJnXSA9IGZuKGFyZyk7XG4gICAgcmV0dXJuIGNhY2hlW2FyZ107XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW9pemU7XG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIHJlYWN0UHJvcHNSZWdleCA9IC9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFjY2VwdHxhY2NlcHRDaGFyc2V0fGFjY2Vzc0tleXxhY3Rpb258YWxsb3d8YWxsb3dVc2VyTWVkaWF8YWxsb3dQYXltZW50UmVxdWVzdHxhbGxvd0Z1bGxTY3JlZW58YWxsb3dUcmFuc3BhcmVuY3l8YWx0fGFzeW5jfGF1dG9Db21wbGV0ZXxhdXRvUGxheXxjYXB0dXJlfGNlbGxQYWRkaW5nfGNlbGxTcGFjaW5nfGNoYWxsZW5nZXxjaGFyU2V0fGNoZWNrZWR8Y2l0ZXxjbGFzc0lEfGNsYXNzTmFtZXxjb2xzfGNvbFNwYW58Y29udGVudHxjb250ZW50RWRpdGFibGV8Y29udGV4dE1lbnV8Y29udHJvbHN8Y29udHJvbHNMaXN0fGNvb3Jkc3xjcm9zc09yaWdpbnxkYXRhfGRhdGVUaW1lfGRlY29kaW5nfGRlZmF1bHR8ZGVmZXJ8ZGlyfGRpc2FibGVkfGRpc2FibGVQaWN0dXJlSW5QaWN0dXJlfGRvd25sb2FkfGRyYWdnYWJsZXxlbmNUeXBlfGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHlwZXx1c2VNYXB8dmFsdWV8d2lkdGh8d21vZGV8d3JhcHxhYm91dHxkYXRhdHlwZXxpbmxpc3R8cHJlZml4fHByb3BlcnR5fHJlc291cmNlfHR5cGVvZnx2b2NhYnxhdXRvQ2FwaXRhbGl6ZXxhdXRvQ29ycmVjdHxhdXRvU2F2ZXxjb2xvcnxpbmVydHxpdGVtUHJvcHxpdGVtU2NvcGV8aXRlbVR5cGV8aXRlbUlEfGl0ZW1SZWZ8b258cmVzdWx0c3xzZWN1cml0eXx1bnNlbGVjdGFibGV8YWNjZW50SGVpZ2h0fGFjY3VtdWxhdGV8YWRkaXRpdmV8YWxpZ25tZW50QmFzZWxpbmV8YWxsb3dSZW9yZGVyfGFscGhhYmV0aWN8YW1wbGl0dWRlfGFyYWJpY0Zvcm18YXNjZW50fGF0dHJpYnV0ZU5hbWV8YXR0cmlidXRlVHlwZXxhdXRvUmV2ZXJzZXxhemltdXRofGJhc2VGcmVxdWVuY3l8YmFzZWxpbmVTaGlmdHxiYXNlUHJvZmlsZXxiYm94fGJlZ2lufGJpYXN8Ynl8Y2FsY01vZGV8Y2FwSGVpZ2h0fGNsaXB8Y2xpcFBhdGhVbml0c3xjbGlwUGF0aHxjbGlwUnVsZXxjb2xvckludGVycG9sYXRpb258Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyc3xjb2xvclByb2ZpbGV8Y29sb3JSZW5kZXJpbmd8Y29udGVudFNjcmlwdFR5cGV8Y29udGVudFN0eWxlVHlwZXxjdXJzb3J8Y3h8Y3l8ZHxkZWNlbGVyYXRlfGRlc2NlbnR8ZGlmZnVzZUNvbnN0YW50fGRpcmVjdGlvbnxkaXNwbGF5fGRpdmlzb3J8ZG9taW5hbnRCYXNlbGluZXxkdXJ8ZHh8ZHl8ZWRnZU1vZGV8ZWxldmF0aW9ufGVuYWJsZUJhY2tncm91bmR8ZW5kfGV4cG9uZW50fGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWR8ZmlsbHxmaWxsT3BhY2l0eXxmaWxsUnVsZXxmaWx0ZXJ8ZmlsdGVyUmVzfGZpbHRlclVuaXRzfGZsb29kQ29sb3J8Zmxvb2RPcGFjaXR5fGZvY3VzYWJsZXxmb250RmFtaWx5fGZvbnRTaXplfGZvbnRTaXplQWRqdXN0fGZvbnRTdHJldGNofGZvbnRTdHlsZXxmb250VmFyaWFudHxmb250V2VpZ2h0fGZvcm1hdHxmcm9tfGZyfGZ4fGZ5fGcxfGcyfGdseXBoTmFtZXxnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbHxnbHlwaE9yaWVudGF0aW9uVmVydGljYWx8Z2x5cGhSZWZ8Z3JhZGllbnRUcmFuc2Zvcm18Z3JhZGllbnRVbml0c3xoYW5naW5nfGhvcml6QWR2WHxob3Jpek9yaWdpblh8aWRlb2dyYXBoaWN8aW1hZ2VSZW5kZXJpbmd8aW58aW4yfGludGVyY2VwdHxrfGsxfGsyfGszfGs0fGtlcm5lbE1hdHJpeHxrZXJuZWxVbml0TGVuZ3RofGtlcm5pbmd8a2V5UG9pbnRzfGtleVNwbGluZXN8a2V5VGltZXN8bGVuZ3RoQWRqdXN0fGxldHRlclNwYWNpbmd8bGlnaHRpbmdDb2xvcnxsaW1pdGluZ0NvbmVBbmdsZXxsb2NhbHxtYXJrZXJFbmR8bWFya2VyTWlkfG1hcmtlclN0YXJ0fG1hcmtlckhlaWdodHxtYXJrZXJVbml0c3xtYXJrZXJXaWR0aHxtYXNrfG1hc2tDb250ZW50VW5pdHN8bWFza1VuaXRzfG1hdGhlbWF0aWNhbHxtb2RlfG51bU9jdGF2ZXN8b2Zmc2V0fG9wYWNpdHl8b3BlcmF0b3J8b3JkZXJ8b3JpZW50fG9yaWVudGF0aW9ufG9yaWdpbnxvdmVyZmxvd3xvdmVybGluZVBvc2l0aW9ufG92ZXJsaW5lVGhpY2tuZXNzfHBhbm9zZTF8cGFpbnRPcmRlcnxwYXRoTGVuZ3RofHBhdHRlcm5Db250ZW50VW5pdHN8cGF0dGVyblRyYW5zZm9ybXxwYXR0ZXJuVW5pdHN8cG9pbnRlckV2ZW50c3xwb2ludHN8cG9pbnRzQXRYfHBvaW50c0F0WXxwb2ludHNBdFp8cHJlc2VydmVBbHBoYXxwcmVzZXJ2ZUFzcGVjdFJhdGlvfHByaW1pdGl2ZVVuaXRzfHJ8cmFkaXVzfHJlZlh8cmVmWXxyZW5kZXJpbmdJbnRlbnR8cmVwZWF0Q291bnR8cmVwZWF0RHVyfHJlcXVpcmVkRXh0ZW5zaW9uc3xyZXF1aXJlZEZlYXR1cmVzfHJlc3RhcnR8cmVzdWx0fHJvdGF0ZXxyeHxyeXxzY2FsZXxzZWVkfHNoYXBlUmVuZGVyaW5nfHNsb3BlfHNwYWNpbmd8c3BlY3VsYXJDb25zdGFudHxzcGVjdWxhckV4cG9uZW50fHNwZWVkfHNwcmVhZE1ldGhvZHxzdGFydE9mZnNldHxzdGREZXZpYXRpb258c3RlbWh8c3RlbXZ8c3RpdGNoVGlsZXN8c3RvcENvbG9yfHN0b3BPcGFjaXR5fHN0cmlrZXRocm91Z2hQb3NpdGlvbnxzdHJpa2V0aHJvdWdoVGhpY2tuZXNzfHN0cmluZ3xzdHJva2V8c3Ryb2tlRGFzaGFycmF5fHN0cm9rZURhc2hvZmZzZXR8c3Ryb2tlTGluZWNhcHxzdHJva2VMaW5lam9pbnxzdHJva2VNaXRlcmxpbWl0fHN0cm9rZU9wYWNpdHl8c3Ryb2tlV2lkdGh8c3VyZmFjZVNjYWxlfHN5c3RlbUxhbmd1YWdlfHRhYmxlVmFsdWVzfHRhcmdldFh8dGFyZ2V0WXx0ZXh0QW5jaG9yfHRleHREZWNvcmF0aW9ufHRleHRSZW5kZXJpbmd8dGV4dExlbmd0aHx0b3x0cmFuc2Zvcm18dTF8dTJ8dW5kZXJsaW5lUG9zaXRpb258dW5kZXJsaW5lVGhpY2tuZXNzfHVuaWNvZGV8dW5pY29kZUJpZGl8dW5pY29kZVJhbmdlfHVuaXRzUGVyRW18dkFscGhhYmV0aWN8dkhhbmdpbmd8dklkZW9ncmFwaGljfHZNYXRoZW1hdGljYWx8dmFsdWVzfHZlY3RvckVmZmVjdHx2ZXJzaW9ufHZlcnRBZHZZfHZlcnRPcmlnaW5YfHZlcnRPcmlnaW5ZfHZpZXdCb3h8dmlld1RhcmdldHx2aXNpYmlsaXR5fHdpZHRoc3x3b3JkU3BhY2luZ3x3cml0aW5nTW9kZXx4fHhIZWlnaHR8eDF8eDJ8eENoYW5uZWxTZWxlY3Rvcnx4bGlua0FjdHVhdGV8eGxpbmtBcmNyb2xlfHhsaW5rSHJlZnx4bGlua1JvbGV8eGxpbmtTaG93fHhsaW5rVGl0bGV8eGxpbmtUeXBlfHhtbEJhc2V8eG1sbnN8eG1sbnNYbGlua3x4bWxMYW5nfHhtbFNwYWNlfHl8eTF8eTJ8eUNoYW5uZWxTZWxlY3Rvcnx6fHpvb21BbmRQYW58Zm9yfGNsYXNzfGF1dG9mb2N1cyl8KChbRGRdW0FhXVtUdF1bQWFdfFtBYV1bUnJdW0lpXVtBYV18eCktLiopKSQvOyAvLyBodHRwczovL2VzYmVuY2guY29tL2JlbmNoLzViZmVlNjhhNGNkN2U2MDA5ZWY2MWQyM1xuXG52YXIgaW5kZXggPSBtZW1vaXplKGZ1bmN0aW9uIChwcm9wKSB7XG4gIHJldHVybiByZWFjdFByb3BzUmVnZXgudGVzdChwcm9wKSB8fCBwcm9wLmNoYXJDb2RlQXQoMCkgPT09IDExMVxuICAvKiBvICovXG4gICYmIHByb3AuY2hhckNvZGVBdCgxKSA9PT0gMTEwXG4gIC8qIG4gKi9cbiAgJiYgcHJvcC5jaGFyQ29kZUF0KDIpIDwgOTE7XG59XG4vKiBaKzEgKi9cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGluZGV4O1xuIiwiLy9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQiwgY29tcGFyZSwgY29tcGFyZUNvbnRleHQpIHtcbiAgdmFyIHJldCA9IGNvbXBhcmUgPyBjb21wYXJlLmNhbGwoY29tcGFyZUNvbnRleHQsIG9iakEsIG9iakIpIDogdm9pZCAwO1xuXG4gIGlmIChyZXQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiAhIXJldDtcbiAgfVxuXG4gIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09IFwib2JqZWN0XCIgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09IFwib2JqZWN0XCIgfHwgIW9iakIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBrZXlzQS5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNBW2lkeF07XG5cbiAgICBpZiAoIWJIYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlQSA9IG9iakFba2V5XTtcbiAgICB2YXIgdmFsdWVCID0gb2JqQltrZXldO1xuXG4gICAgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgdmFsdWVBLCB2YWx1ZUIsIGtleSkgOiB2b2lkIDA7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCAocmV0ID09PSB2b2lkIDAgJiYgdmFsdWVBICE9PSB2YWx1ZUIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiZnVuY3Rpb24gc3R5bGlzX21pbiAoVykge1xuICBmdW5jdGlvbiBNKGQsIGMsIGUsIGgsIGEpIHtcbiAgICBmb3IgKHZhciBtID0gMCwgYiA9IDAsIHYgPSAwLCBuID0gMCwgcSwgZywgeCA9IDAsIEsgPSAwLCBrLCB1ID0gayA9IHEgPSAwLCBsID0gMCwgciA9IDAsIEkgPSAwLCB0ID0gMCwgQiA9IGUubGVuZ3RoLCBKID0gQiAtIDEsIHksIGYgPSAnJywgcCA9ICcnLCBGID0gJycsIEcgPSAnJywgQzsgbCA8IEI7KSB7XG4gICAgICBnID0gZS5jaGFyQ29kZUF0KGwpO1xuICAgICAgbCA9PT0gSiAmJiAwICE9PSBiICsgbiArIHYgKyBtICYmICgwICE9PSBiICYmIChnID0gNDcgPT09IGIgPyAxMCA6IDQ3KSwgbiA9IHYgPSBtID0gMCwgQisrLCBKKyspO1xuXG4gICAgICBpZiAoMCA9PT0gYiArIG4gKyB2ICsgbSkge1xuICAgICAgICBpZiAobCA9PT0gSiAmJiAoMCA8IHIgJiYgKGYgPSBmLnJlcGxhY2UoTiwgJycpKSwgMCA8IGYudHJpbSgpLmxlbmd0aCkpIHtcbiAgICAgICAgICBzd2l0Y2ggKGcpIHtcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICBjYXNlIDU5OlxuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBmICs9IGUuY2hhckF0KGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGcgPSA1OTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZykge1xuICAgICAgICAgIGNhc2UgMTIzOlxuICAgICAgICAgICAgZiA9IGYudHJpbSgpO1xuICAgICAgICAgICAgcSA9IGYuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIGsgPSAxO1xuXG4gICAgICAgICAgICBmb3IgKHQgPSArK2w7IGwgPCBCOykge1xuICAgICAgICAgICAgICBzd2l0Y2ggKGcgPSBlLmNoYXJDb2RlQXQobCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDEyMzpcbiAgICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAxMjU6XG4gICAgICAgICAgICAgICAgICBrLS07XG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGcgPSBlLmNoYXJDb2RlQXQobCArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDc6XG4gICAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1ID0gbCArIDE7IHUgPCBKOyArK3UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlLmNoYXJDb2RlQXQodSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQyID09PSBnICYmIDQyID09PSBlLmNoYXJDb2RlQXQodSAtIDEpICYmIGwgKyAyICE9PSB1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKDQ3ID09PSBnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB1O1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgOTE6XG4gICAgICAgICAgICAgICAgICBnKys7XG5cbiAgICAgICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgICAgZysrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAzNDpcbiAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgZm9yICg7IGwrKyA8IEogJiYgZS5jaGFyQ29kZUF0KGwpICE9PSBnOykge1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoMCA9PT0gaykgYnJlYWs7XG4gICAgICAgICAgICAgIGwrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgayA9IGUuc3Vic3RyaW5nKHQsIGwpO1xuICAgICAgICAgICAgMCA9PT0gcSAmJiAocSA9IChmID0gZi5yZXBsYWNlKGNhLCAnJykudHJpbSgpKS5jaGFyQ29kZUF0KDApKTtcblxuICAgICAgICAgICAgc3dpdGNoIChxKSB7XG4gICAgICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICAgICAgMCA8IHIgJiYgKGYgPSBmLnJlcGxhY2UoTiwgJycpKTtcbiAgICAgICAgICAgICAgICBnID0gZi5jaGFyQ29kZUF0KDEpO1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoIChnKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIDEwMDpcbiAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICBjYXNlIDQ1OlxuICAgICAgICAgICAgICAgICAgICByID0gYztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHIgPSBPO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGsgPSBNKGMsIHIsIGssIGcsIGEgKyAxKTtcbiAgICAgICAgICAgICAgICB0ID0gay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgMCA8IEEgJiYgKHIgPSBYKE8sIGYsIEkpLCBDID0gSCgzLCBrLCByLCBjLCBELCB6LCB0LCBnLCBhLCBoKSwgZiA9IHIuam9pbignJyksIHZvaWQgMCAhPT0gQyAmJiAwID09PSAodCA9IChrID0gQy50cmltKCkpLmxlbmd0aCkgJiYgKGcgPSAwLCBrID0gJycpKTtcbiAgICAgICAgICAgICAgICBpZiAoMCA8IHQpIHN3aXRjaCAoZykge1xuICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgIGYgPSBmLnJlcGxhY2UoZGEsIGVhKTtcblxuICAgICAgICAgICAgICAgICAgY2FzZSAxMDA6XG4gICAgICAgICAgICAgICAgICBjYXNlIDEwOTpcbiAgICAgICAgICAgICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgICAgICAgICAgIGsgPSBmICsgJ3snICsgayArICd9JztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICBmID0gZi5yZXBsYWNlKGZhLCAnJDEgJDInKTtcbiAgICAgICAgICAgICAgICAgICAgayA9IGYgKyAneycgKyBrICsgJ30nO1xuICAgICAgICAgICAgICAgICAgICBrID0gMSA9PT0gdyB8fCAyID09PSB3ICYmIEwoJ0AnICsgaywgMykgPyAnQC13ZWJraXQtJyArIGsgKyAnQCcgKyBrIDogJ0AnICsgaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGsgPSBmICsgaywgMTEyID09PSBoICYmIChrID0gKHAgKz0gaywgJycpKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgayA9ICcnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgayA9IE0oYywgWChjLCBmLCBJKSwgaywgaCwgYSArIDEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBGICs9IGs7XG4gICAgICAgICAgICBrID0gSSA9IHIgPSB1ID0gcSA9IDA7XG4gICAgICAgICAgICBmID0gJyc7XG4gICAgICAgICAgICBnID0gZS5jaGFyQ29kZUF0KCsrbCk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMTI1OlxuICAgICAgICAgIGNhc2UgNTk6XG4gICAgICAgICAgICBmID0gKDAgPCByID8gZi5yZXBsYWNlKE4sICcnKSA6IGYpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmICgxIDwgKHQgPSBmLmxlbmd0aCkpIHN3aXRjaCAoMCA9PT0gdSAmJiAocSA9IGYuY2hhckNvZGVBdCgwKSwgNDUgPT09IHEgfHwgOTYgPCBxICYmIDEyMyA+IHEpICYmICh0ID0gKGYgPSBmLnJlcGxhY2UoJyAnLCAnOicpKS5sZW5ndGgpLCAwIDwgQSAmJiB2b2lkIDAgIT09IChDID0gSCgxLCBmLCBjLCBkLCBELCB6LCBwLmxlbmd0aCwgaCwgYSwgaCkpICYmIDAgPT09ICh0ID0gKGYgPSBDLnRyaW0oKSkubGVuZ3RoKSAmJiAoZiA9ICdcXHgwMFxceDAwJyksIHEgPSBmLmNoYXJDb2RlQXQoMCksIGcgPSBmLmNoYXJDb2RlQXQoMSksIHEpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjQ6XG4gICAgICAgICAgICAgICAgaWYgKDEwNSA9PT0gZyB8fCA5OSA9PT0gZykge1xuICAgICAgICAgICAgICAgICAgRyArPSBmICsgZS5jaGFyQXQobCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICA1OCAhPT0gZi5jaGFyQ29kZUF0KHQgLSAxKSAmJiAocCArPSBQKGYsIHEsIGcsIGYuY2hhckNvZGVBdCgyKSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgSSA9IHIgPSB1ID0gcSA9IDA7XG4gICAgICAgICAgICBmID0gJyc7XG4gICAgICAgICAgICBnID0gZS5jaGFyQ29kZUF0KCsrbCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChnKSB7XG4gICAgICAgIGNhc2UgMTM6XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgNDcgPT09IGIgPyBiID0gMCA6IDAgPT09IDEgKyBxICYmIDEwNyAhPT0gaCAmJiAwIDwgZi5sZW5ndGggJiYgKHIgPSAxLCBmICs9ICdcXHgwMCcpO1xuICAgICAgICAgIDAgPCBBICogWSAmJiBIKDAsIGYsIGMsIGQsIEQsIHosIHAubGVuZ3RoLCBoLCBhLCBoKTtcbiAgICAgICAgICB6ID0gMTtcbiAgICAgICAgICBEKys7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSA1OTpcbiAgICAgICAgY2FzZSAxMjU6XG4gICAgICAgICAgaWYgKDAgPT09IGIgKyBuICsgdiArIG0pIHtcbiAgICAgICAgICAgIHorKztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHorKztcbiAgICAgICAgICB5ID0gZS5jaGFyQXQobCk7XG5cbiAgICAgICAgICBzd2l0Y2ggKGcpIHtcbiAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgIGNhc2UgMzI6XG4gICAgICAgICAgICAgIGlmICgwID09PSBuICsgbSArIGIpIHN3aXRjaCAoeCkge1xuICAgICAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgICAgY2FzZSA1ODpcbiAgICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgY2FzZSAzMjpcbiAgICAgICAgICAgICAgICAgIHkgPSAnJztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIDMyICE9PSBnICYmICh5ID0gJyAnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICB5ID0gJ1xcXFwwJztcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIHkgPSAnXFxcXGYnO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgeSA9ICdcXFxcdic7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDM4OlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgKHIgPSBJID0gMSwgeSA9ICdcXGYnICsgeSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDEwODpcbiAgICAgICAgICAgICAgaWYgKDAgPT09IG4gKyBiICsgbSArIEUgJiYgMCA8IHUpIHN3aXRjaCAobCAtIHUpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAxMTIgPT09IHggJiYgNTggPT09IGUuY2hhckNvZGVBdChsIC0gMykgJiYgKEUgPSB4KTtcblxuICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgIDExMSA9PT0gSyAmJiAoRSA9IEspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDU4OlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgKHUgPSBsKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICAgIDAgPT09IGIgKyB2ICsgbiArIG0gJiYgKHIgPSAxLCB5ICs9ICdcXHInKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgMzQ6XG4gICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAwID09PSBiICYmIChuID0gbiA9PT0gZyA/IDAgOiAwID09PSBuID8gZyA6IG4pO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA5MTpcbiAgICAgICAgICAgICAgMCA9PT0gbiArIGIgKyB2ICYmIG0rKztcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgOTM6XG4gICAgICAgICAgICAgIDAgPT09IG4gKyBiICsgdiAmJiBtLS07XG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDQxOlxuICAgICAgICAgICAgICAwID09PSBuICsgYiArIG0gJiYgdi0tO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSA0MDpcbiAgICAgICAgICAgICAgaWYgKDAgPT09IG4gKyBiICsgbSkge1xuICAgICAgICAgICAgICAgIGlmICgwID09PSBxKSBzd2l0Y2ggKDIgKiB4ICsgMyAqIEspIHtcbiAgICAgICAgICAgICAgICAgIGNhc2UgNTMzOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcSA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHYrKztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlIDY0OlxuICAgICAgICAgICAgICAwID09PSBiICsgdiArIG4gKyBtICsgdSArIGsgJiYgKGsgPSAxKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICBjYXNlIDQ3OlxuICAgICAgICAgICAgICBpZiAoISgwIDwgbiArIG0gKyB2KSkgc3dpdGNoIChiKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgc3dpdGNoICgyICogZyArIDMgKiBlLmNoYXJDb2RlQXQobCArIDEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjM1OlxuICAgICAgICAgICAgICAgICAgICAgIGIgPSA0NztcbiAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBjYXNlIDIyMDpcbiAgICAgICAgICAgICAgICAgICAgICB0ID0gbCwgYiA9IDQyO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgNDI6XG4gICAgICAgICAgICAgICAgICA0NyA9PT0gZyAmJiA0MiA9PT0geCAmJiB0ICsgMiAhPT0gbCAmJiAoMzMgPT09IGUuY2hhckNvZGVBdCh0ICsgMikgJiYgKHAgKz0gZS5zdWJzdHJpbmcodCwgbCArIDEpKSwgeSA9ICcnLCBiID0gMCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAwID09PSBiICYmIChmICs9IHkpO1xuICAgICAgfVxuXG4gICAgICBLID0geDtcbiAgICAgIHggPSBnO1xuICAgICAgbCsrO1xuICAgIH1cblxuICAgIHQgPSBwLmxlbmd0aDtcblxuICAgIGlmICgwIDwgdCkge1xuICAgICAgciA9IGM7XG4gICAgICBpZiAoMCA8IEEgJiYgKEMgPSBIKDIsIHAsIHIsIGQsIEQsIHosIHQsIGgsIGEsIGgpLCB2b2lkIDAgIT09IEMgJiYgMCA9PT0gKHAgPSBDKS5sZW5ndGgpKSByZXR1cm4gRyArIHAgKyBGO1xuICAgICAgcCA9IHIuam9pbignLCcpICsgJ3snICsgcCArICd9JztcblxuICAgICAgaWYgKDAgIT09IHcgKiBFKSB7XG4gICAgICAgIDIgIT09IHcgfHwgTChwLCAyKSB8fCAoRSA9IDApO1xuXG4gICAgICAgIHN3aXRjaCAoRSkge1xuICAgICAgICAgIGNhc2UgMTExOlxuICAgICAgICAgICAgcCA9IHAucmVwbGFjZShoYSwgJzotbW96LSQxJykgKyBwO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDExMjpcbiAgICAgICAgICAgIHAgPSBwLnJlcGxhY2UoUSwgJzo6LXdlYmtpdC1pbnB1dC0kMScpICsgcC5yZXBsYWNlKFEsICc6Oi1tb3otJDEnKSArIHAucmVwbGFjZShRLCAnOi1tcy1pbnB1dC0kMScpICsgcDtcbiAgICAgICAgfVxuXG4gICAgICAgIEUgPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBHICsgcCArIEY7XG4gIH1cblxuICBmdW5jdGlvbiBYKGQsIGMsIGUpIHtcbiAgICB2YXIgaCA9IGMudHJpbSgpLnNwbGl0KGlhKTtcbiAgICBjID0gaDtcbiAgICB2YXIgYSA9IGgubGVuZ3RoLFxuICAgICAgICBtID0gZC5sZW5ndGg7XG5cbiAgICBzd2l0Y2ggKG0pIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgdmFyIGIgPSAwO1xuXG4gICAgICAgIGZvciAoZCA9IDAgPT09IG0gPyAnJyA6IGRbMF0gKyAnICc7IGIgPCBhOyArK2IpIHtcbiAgICAgICAgICBjW2JdID0gWihkLCBjW2JdLCBlKS50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFyIHYgPSBiID0gMDtcblxuICAgICAgICBmb3IgKGMgPSBbXTsgYiA8IGE7ICsrYikge1xuICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbTsgKytuKSB7XG4gICAgICAgICAgICBjW3YrK10gPSBaKGRbbl0gKyAnICcsIGhbYl0sIGUpLnRyaW0oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9XG5cbiAgZnVuY3Rpb24gWihkLCBjLCBlKSB7XG4gICAgdmFyIGggPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgMzMgPiBoICYmIChoID0gKGMgPSBjLnRyaW0oKSkuY2hhckNvZGVBdCgwKSk7XG5cbiAgICBzd2l0Y2ggKGgpIHtcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIHJldHVybiBjLnJlcGxhY2UoRiwgJyQxJyArIGQudHJpbSgpKTtcblxuICAgICAgY2FzZSA1ODpcbiAgICAgICAgcmV0dXJuIGQudHJpbSgpICsgYy5yZXBsYWNlKEYsICckMScgKyBkLnRyaW0oKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICgwIDwgMSAqIGUgJiYgMCA8IGMuaW5kZXhPZignXFxmJykpIHJldHVybiBjLnJlcGxhY2UoRiwgKDU4ID09PSBkLmNoYXJDb2RlQXQoMCkgPyAnJyA6ICckMScpICsgZC50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkICsgYztcbiAgfVxuXG4gIGZ1bmN0aW9uIFAoZCwgYywgZSwgaCkge1xuICAgIHZhciBhID0gZCArICc7JyxcbiAgICAgICAgbSA9IDIgKiBjICsgMyAqIGUgKyA0ICogaDtcblxuICAgIGlmICg5NDQgPT09IG0pIHtcbiAgICAgIGQgPSBhLmluZGV4T2YoJzonLCA5KSArIDE7XG4gICAgICB2YXIgYiA9IGEuc3Vic3RyaW5nKGQsIGEubGVuZ3RoIC0gMSkudHJpbSgpO1xuICAgICAgYiA9IGEuc3Vic3RyaW5nKDAsIGQpLnRyaW0oKSArIGIgKyAnOyc7XG4gICAgICByZXR1cm4gMSA9PT0gdyB8fCAyID09PSB3ICYmIEwoYiwgMSkgPyAnLXdlYmtpdC0nICsgYiArIGIgOiBiO1xuICAgIH1cblxuICAgIGlmICgwID09PSB3IHx8IDIgPT09IHcgJiYgIUwoYSwgMSkpIHJldHVybiBhO1xuXG4gICAgc3dpdGNoIChtKSB7XG4gICAgICBjYXNlIDEwMTU6XG4gICAgICAgIHJldHVybiA5NyA9PT0gYS5jaGFyQ29kZUF0KDEwKSA/ICctd2Via2l0LScgKyBhICsgYSA6IGE7XG5cbiAgICAgIGNhc2UgOTUxOlxuICAgICAgICByZXR1cm4gMTE2ID09PSBhLmNoYXJDb2RlQXQoMykgPyAnLXdlYmtpdC0nICsgYSArIGEgOiBhO1xuXG4gICAgICBjYXNlIDk2MzpcbiAgICAgICAgcmV0dXJuIDExMCA9PT0gYS5jaGFyQ29kZUF0KDUpID8gJy13ZWJraXQtJyArIGEgKyBhIDogYTtcblxuICAgICAgY2FzZSAxMDA5OlxuICAgICAgICBpZiAoMTAwICE9PSBhLmNoYXJDb2RlQXQoNCkpIGJyZWFrO1xuXG4gICAgICBjYXNlIDk2OTpcbiAgICAgIGNhc2UgOTQyOlxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyBhO1xuXG4gICAgICBjYXNlIDk3ODpcbiAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tb3otJyArIGEgKyBhO1xuXG4gICAgICBjYXNlIDEwMTk6XG4gICAgICBjYXNlIDk4MzpcbiAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tb3otJyArIGEgKyAnLW1zLScgKyBhICsgYTtcblxuICAgICAgY2FzZSA4ODM6XG4gICAgICAgIGlmICg0NSA9PT0gYS5jaGFyQ29kZUF0KDgpKSByZXR1cm4gJy13ZWJraXQtJyArIGEgKyBhO1xuICAgICAgICBpZiAoMCA8IGEuaW5kZXhPZignaW1hZ2Utc2V0KCcsIDExKSkgcmV0dXJuIGEucmVwbGFjZShqYSwgJyQxLXdlYmtpdC0kMicpICsgYTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTMyOlxuICAgICAgICBpZiAoNDUgPT09IGEuY2hhckNvZGVBdCg0KSkgc3dpdGNoIChhLmNoYXJDb2RlQXQoNSkpIHtcbiAgICAgICAgICBjYXNlIDEwMzpcbiAgICAgICAgICAgIHJldHVybiAnLXdlYmtpdC1ib3gtJyArIGEucmVwbGFjZSgnLWdyb3cnLCAnJykgKyAnLXdlYmtpdC0nICsgYSArICctbXMtJyArIGEucmVwbGFjZSgnZ3JvdycsICdwb3NpdGl2ZScpICsgYTtcblxuICAgICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tcy0nICsgYS5yZXBsYWNlKCdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIGE7XG5cbiAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgcmV0dXJuICctd2Via2l0LScgKyBhICsgJy1tcy0nICsgYS5yZXBsYWNlKCdiYXNpcycsICdwcmVmZXJyZWQtc2l6ZScpICsgYTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLScgKyBhICsgYTtcblxuICAgICAgY2FzZSA5NjQ6XG4gICAgICAgIHJldHVybiAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC0nICsgYSArIGE7XG5cbiAgICAgIGNhc2UgMTAyMzpcbiAgICAgICAgaWYgKDk5ICE9PSBhLmNoYXJDb2RlQXQoOCkpIGJyZWFrO1xuICAgICAgICBiID0gYS5zdWJzdHJpbmcoYS5pbmRleE9mKCc6JywgMTUpKS5yZXBsYWNlKCdmbGV4LScsICcnKS5yZXBsYWNlKCdzcGFjZS1iZXR3ZWVuJywgJ2p1c3RpZnknKTtcbiAgICAgICAgcmV0dXJuICctd2Via2l0LWJveC1wYWNrJyArIGIgKyAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC1wYWNrJyArIGIgKyBhO1xuXG4gICAgICBjYXNlIDEwMDU6XG4gICAgICAgIHJldHVybiBrYS50ZXN0KGEpID8gYS5yZXBsYWNlKGFhLCAnOi13ZWJraXQtJykgKyBhLnJlcGxhY2UoYWEsICc6LW1vei0nKSArIGEgOiBhO1xuXG4gICAgICBjYXNlIDFlMzpcbiAgICAgICAgYiA9IGEuc3Vic3RyaW5nKDEzKS50cmltKCk7XG4gICAgICAgIGMgPSBiLmluZGV4T2YoJy0nKSArIDE7XG5cbiAgICAgICAgc3dpdGNoIChiLmNoYXJDb2RlQXQoMCkgKyBiLmNoYXJDb2RlQXQoYykpIHtcbiAgICAgICAgICBjYXNlIDIyNjpcbiAgICAgICAgICAgIGIgPSBhLnJlcGxhY2UoRywgJ3RiJyk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMjMyOlxuICAgICAgICAgICAgYiA9IGEucmVwbGFjZShHLCAndGItcmwnKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAyMjA6XG4gICAgICAgICAgICBiID0gYS5yZXBsYWNlKEcsICdscicpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLScgKyBiICsgYTtcblxuICAgICAgY2FzZSAxMDE3OlxuICAgICAgICBpZiAoLTEgPT09IGEuaW5kZXhPZignc3RpY2t5JywgOSkpIGJyZWFrO1xuXG4gICAgICBjYXNlIDk3NTpcbiAgICAgICAgYyA9IChhID0gZCkubGVuZ3RoIC0gMTA7XG4gICAgICAgIGIgPSAoMzMgPT09IGEuY2hhckNvZGVBdChjKSA/IGEuc3Vic3RyaW5nKDAsIGMpIDogYSkuc3Vic3RyaW5nKGQuaW5kZXhPZignOicsIDcpICsgMSkudHJpbSgpO1xuXG4gICAgICAgIHN3aXRjaCAobSA9IGIuY2hhckNvZGVBdCgwKSArIChiLmNoYXJDb2RlQXQoNykgfCAwKSkge1xuICAgICAgICAgIGNhc2UgMjAzOlxuICAgICAgICAgICAgaWYgKDExMSA+IGIuY2hhckNvZGVBdCg4KSkgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDExNTpcbiAgICAgICAgICAgIGEgPSBhLnJlcGxhY2UoYiwgJy13ZWJraXQtJyArIGIpICsgJzsnICsgYTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAyMDc6XG4gICAgICAgICAgY2FzZSAxMDI6XG4gICAgICAgICAgICBhID0gYS5yZXBsYWNlKGIsICctd2Via2l0LScgKyAoMTAyIDwgbSA/ICdpbmxpbmUtJyA6ICcnKSArICdib3gnKSArICc7JyArIGEucmVwbGFjZShiLCAnLXdlYmtpdC0nICsgYikgKyAnOycgKyBhLnJlcGxhY2UoYiwgJy1tcy0nICsgYiArICdib3gnKSArICc7JyArIGE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYSArICc7JztcblxuICAgICAgY2FzZSA5Mzg6XG4gICAgICAgIGlmICg0NSA9PT0gYS5jaGFyQ29kZUF0KDUpKSBzd2l0Y2ggKGEuY2hhckNvZGVBdCg2KSkge1xuICAgICAgICAgIGNhc2UgMTA1OlxuICAgICAgICAgICAgcmV0dXJuIGIgPSBhLnJlcGxhY2UoJy1pdGVtcycsICcnKSwgJy13ZWJraXQtJyArIGEgKyAnLXdlYmtpdC1ib3gtJyArIGIgKyAnLW1zLWZsZXgtJyArIGIgKyBhO1xuXG4gICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICByZXR1cm4gJy13ZWJraXQtJyArIGEgKyAnLW1zLWZsZXgtaXRlbS0nICsgYS5yZXBsYWNlKGJhLCAnJykgKyBhO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnLXdlYmtpdC0nICsgYSArICctbXMtZmxleC1saW5lLXBhY2snICsgYS5yZXBsYWNlKCdhbGlnbi1jb250ZW50JywgJycpLnJlcGxhY2UoYmEsICcnKSArIGE7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTczOlxuICAgICAgY2FzZSA5ODk6XG4gICAgICAgIGlmICg0NSAhPT0gYS5jaGFyQ29kZUF0KDMpIHx8IDEyMiA9PT0gYS5jaGFyQ29kZUF0KDQpKSBicmVhaztcblxuICAgICAgY2FzZSA5MzE6XG4gICAgICBjYXNlIDk1MzpcbiAgICAgICAgaWYgKCEwID09PSBsYS50ZXN0KGQpKSByZXR1cm4gMTE1ID09PSAoYiA9IGQuc3Vic3RyaW5nKGQuaW5kZXhPZignOicpICsgMSkpLmNoYXJDb2RlQXQoMCkgPyBQKGQucmVwbGFjZSgnc3RyZXRjaCcsICdmaWxsLWF2YWlsYWJsZScpLCBjLCBlLCBoKS5yZXBsYWNlKCc6ZmlsbC1hdmFpbGFibGUnLCAnOnN0cmV0Y2gnKSA6IGEucmVwbGFjZShiLCAnLXdlYmtpdC0nICsgYikgKyBhLnJlcGxhY2UoYiwgJy1tb3otJyArIGIucmVwbGFjZSgnZmlsbC0nLCAnJykpICsgYTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgOTYyOlxuICAgICAgICBpZiAoYSA9ICctd2Via2l0LScgKyBhICsgKDEwMiA9PT0gYS5jaGFyQ29kZUF0KDUpID8gJy1tcy0nICsgYSA6ICcnKSArIGEsIDIxMSA9PT0gZSArIGggJiYgMTA1ID09PSBhLmNoYXJDb2RlQXQoMTMpICYmIDAgPCBhLmluZGV4T2YoJ3RyYW5zZm9ybScsIDEwKSkgcmV0dXJuIGEuc3Vic3RyaW5nKDAsIGEuaW5kZXhPZignOycsIDI3KSArIDEpLnJlcGxhY2UobWEsICckMS13ZWJraXQtJDInKSArIGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIGE7XG4gIH1cblxuICBmdW5jdGlvbiBMKGQsIGMpIHtcbiAgICB2YXIgZSA9IGQuaW5kZXhPZigxID09PSBjID8gJzonIDogJ3snKSxcbiAgICAgICAgaCA9IGQuc3Vic3RyaW5nKDAsIDMgIT09IGMgPyBlIDogMTApO1xuICAgIGUgPSBkLnN1YnN0cmluZyhlICsgMSwgZC5sZW5ndGggLSAxKTtcbiAgICByZXR1cm4gUigyICE9PSBjID8gaCA6IGgucmVwbGFjZShuYSwgJyQxJyksIGUsIGMpO1xuICB9XG5cbiAgZnVuY3Rpb24gZWEoZCwgYykge1xuICAgIHZhciBlID0gUChjLCBjLmNoYXJDb2RlQXQoMCksIGMuY2hhckNvZGVBdCgxKSwgYy5jaGFyQ29kZUF0KDIpKTtcbiAgICByZXR1cm4gZSAhPT0gYyArICc7JyA/IGUucmVwbGFjZShvYSwgJyBvciAoJDEpJykuc3Vic3RyaW5nKDQpIDogJygnICsgYyArICcpJztcbiAgfVxuXG4gIGZ1bmN0aW9uIEgoZCwgYywgZSwgaCwgYSwgbSwgYiwgdiwgbiwgcSkge1xuICAgIGZvciAodmFyIGcgPSAwLCB4ID0gYywgdzsgZyA8IEE7ICsrZykge1xuICAgICAgc3dpdGNoICh3ID0gU1tnXS5jYWxsKEIsIGQsIHgsIGUsIGgsIGEsIG0sIGIsIHYsIG4sIHEpKSB7XG4gICAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgICBjYXNlICExOlxuICAgICAgICBjYXNlICEwOlxuICAgICAgICBjYXNlIG51bGw6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB4ID0gdztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoeCAhPT0gYykgcmV0dXJuIHg7XG4gIH1cblxuICBmdW5jdGlvbiBUKGQpIHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIGNhc2Ugdm9pZCAwOlxuICAgICAgY2FzZSBudWxsOlxuICAgICAgICBBID0gUy5sZW5ndGggPSAwO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiBkKSBTW0ErK10gPSBkO2Vsc2UgaWYgKCdvYmplY3QnID09PSB0eXBlb2YgZCkgZm9yICh2YXIgYyA9IDAsIGUgPSBkLmxlbmd0aDsgYyA8IGU7ICsrYykge1xuICAgICAgICAgIFQoZFtjXSk7XG4gICAgICAgIH0gZWxzZSBZID0gISFkIHwgMDtcbiAgICB9XG5cbiAgICByZXR1cm4gVDtcbiAgfVxuXG4gIGZ1bmN0aW9uIFUoZCkge1xuICAgIGQgPSBkLnByZWZpeDtcbiAgICB2b2lkIDAgIT09IGQgJiYgKFIgPSBudWxsLCBkID8gJ2Z1bmN0aW9uJyAhPT0gdHlwZW9mIGQgPyB3ID0gMSA6ICh3ID0gMiwgUiA9IGQpIDogdyA9IDApO1xuICAgIHJldHVybiBVO1xuICB9XG5cbiAgZnVuY3Rpb24gQihkLCBjKSB7XG4gICAgdmFyIGUgPSBkO1xuICAgIDMzID4gZS5jaGFyQ29kZUF0KDApICYmIChlID0gZS50cmltKCkpO1xuICAgIFYgPSBlO1xuICAgIGUgPSBbVl07XG5cbiAgICBpZiAoMCA8IEEpIHtcbiAgICAgIHZhciBoID0gSCgtMSwgYywgZSwgZSwgRCwgeiwgMCwgMCwgMCwgMCk7XG4gICAgICB2b2lkIDAgIT09IGggJiYgJ3N0cmluZycgPT09IHR5cGVvZiBoICYmIChjID0gaCk7XG4gICAgfVxuXG4gICAgdmFyIGEgPSBNKE8sIGUsIGMsIDAsIDApO1xuICAgIDAgPCBBICYmIChoID0gSCgtMiwgYSwgZSwgZSwgRCwgeiwgYS5sZW5ndGgsIDAsIDAsIDApLCB2b2lkIDAgIT09IGggJiYgKGEgPSBoKSk7XG4gICAgViA9ICcnO1xuICAgIEUgPSAwO1xuICAgIHogPSBEID0gMTtcbiAgICByZXR1cm4gYTtcbiAgfVxuXG4gIHZhciBjYSA9IC9eXFwwKy9nLFxuICAgICAgTiA9IC9bXFwwXFxyXFxmXS9nLFxuICAgICAgYWEgPSAvOiAqL2csXG4gICAgICBrYSA9IC96b298Z3JhLyxcbiAgICAgIG1hID0gLyhbLDogXSkodHJhbnNmb3JtKS9nLFxuICAgICAgaWEgPSAvLFxccis/L2csXG4gICAgICBGID0gLyhbXFx0XFxyXFxuIF0pKlxcZj8mL2csXG4gICAgICBmYSA9IC9AKGtcXHcrKVxccyooXFxTKilcXHMqLyxcbiAgICAgIFEgPSAvOjoocGxhY2UpL2csXG4gICAgICBoYSA9IC86KHJlYWQtb25seSkvZyxcbiAgICAgIEcgPSAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sXG4gICAgICBkYSA9IC9cXChcXHMqKC4qKVxccypcXCkvZyxcbiAgICAgIG9hID0gLyhbXFxzXFxTXSo/KTsvZyxcbiAgICAgIGJhID0gLy1zZWxmfGZsZXgtL2csXG4gICAgICBuYSA9IC9bXl0qPyg6W3JwXVtlbF1hW1xcdy1dKylbXl0qLyxcbiAgICAgIGxhID0gL3N0cmV0Y2h8OlxccypcXHcrXFwtKD86Y29udGV8YXZhaWwpLyxcbiAgICAgIGphID0gLyhbXi1dKShpbWFnZS1zZXRcXCgpLyxcbiAgICAgIHogPSAxLFxuICAgICAgRCA9IDEsXG4gICAgICBFID0gMCxcbiAgICAgIHcgPSAxLFxuICAgICAgTyA9IFtdLFxuICAgICAgUyA9IFtdLFxuICAgICAgQSA9IDAsXG4gICAgICBSID0gbnVsbCxcbiAgICAgIFkgPSAwLFxuICAgICAgViA9ICcnO1xuICBCLnVzZSA9IFQ7XG4gIEIuc2V0ID0gVTtcbiAgdm9pZCAwICE9PSBXICYmIFUoVyk7XG4gIHJldHVybiBCO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHlsaXNfbWluO1xuIiwidmFyIHVuaXRsZXNzS2V5cyA9IHtcbiAgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHRhYlNpemU6IDEsXG4gIHdpZG93czogMSxcbiAgekluZGV4OiAxLFxuICB6b29tOiAxLFxuICBXZWJraXRMaW5lQ2xhbXA6IDEsXG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIGZsb29kT3BhY2l0eTogMSxcbiAgc3RvcE9wYWNpdHk6IDEsXG4gIHN0cm9rZURhc2hhcnJheTogMSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDogMSxcbiAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVuaXRsZXNzS2V5cztcbiIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rvcikge1xuICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG4gIH1cbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTtcbiAgICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7XG4gICAgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlO1xuICAgIGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHtcbiAgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7XG4gIGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTtcbiAgcmV0dXJuIENvbnN0cnVjdG9yO1xufVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpO1xuICAgIGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlO1xuICAgIH0pO1xuICAgIGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkMih0YXJnZXQpIHtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTtcblxuICAgIGlmIChpICUgMikge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gIH1cblxuICBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHN1YkNsYXNzLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9XG4gIH0pO1xuICBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTtcbn1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkge1xuICBpZiAoY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHtcbiAgICByZXR1cm4gY2FsbDtcbiAgfVxuXG4gIHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpO1xufVxuXG52YXIgQ09OU1RBTlQgPSB7XG4gIEdMT0JBTDoge1xuICAgIEhJREU6ICdfX3JlYWN0X3Rvb2x0aXBfaGlkZV9ldmVudCcsXG4gICAgUkVCVUlMRDogJ19fcmVhY3RfdG9vbHRpcF9yZWJ1aWxkX2V2ZW50JyxcbiAgICBTSE9XOiAnX19yZWFjdF90b29sdGlwX3Nob3dfZXZlbnQnXG4gIH1cbn07XG5cbi8qKlxuICogU3RhdGljIG1ldGhvZHMgZm9yIHJlYWN0LXRvb2x0aXBcbiAqL1xuXG52YXIgZGlzcGF0Y2hHbG9iYWxFdmVudCA9IGZ1bmN0aW9uIGRpc3BhdGNoR2xvYmFsRXZlbnQoZXZlbnROYW1lLCBvcHRzKSB7XG4gIC8vIENvbXBhdGlibGUgd2l0aCBJRVxuICAvLyBAc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjY1OTYxMjMvaW50ZXJuZXQtZXhwbG9yZXItOS0xMC0xMS1ldmVudC1jb25zdHJ1Y3Rvci1kb2VzbnQtd29ya1xuICAvLyBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DdXN0b21FdmVudC9DdXN0b21FdmVudFxuICB2YXIgZXZlbnQ7XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cuQ3VzdG9tRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBldmVudCA9IG5ldyB3aW5kb3cuQ3VzdG9tRXZlbnQoZXZlbnROYW1lLCB7XG4gICAgICBkZXRhaWw6IG9wdHNcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LmluaXRFdmVudChldmVudE5hbWUsIGZhbHNlLCB0cnVlLCBvcHRzKTtcbiAgfVxuXG4gIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn07XG5cbmZ1bmN0aW9uIHN0YXRpY01ldGhvZHMgKHRhcmdldCkge1xuICAvKipcbiAgICogSGlkZSBhbGwgdG9vbHRpcFxuICAgKiBAdHJpZ2dlciBSZWFjdFRvb2x0aXAuaGlkZSgpXG4gICAqL1xuICB0YXJnZXQuaGlkZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBkaXNwYXRjaEdsb2JhbEV2ZW50KENPTlNUQU5ULkdMT0JBTC5ISURFLCB7XG4gICAgICB0YXJnZXQ6IHRhcmdldFxuICAgIH0pO1xuICB9O1xuICAvKipcbiAgICogUmVidWlsZCBhbGwgdG9vbHRpcFxuICAgKiBAdHJpZ2dlciBSZWFjdFRvb2x0aXAucmVidWlsZCgpXG4gICAqL1xuXG5cbiAgdGFyZ2V0LnJlYnVpbGQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZGlzcGF0Y2hHbG9iYWxFdmVudChDT05TVEFOVC5HTE9CQUwuUkVCVUlMRCk7XG4gIH07XG4gIC8qKlxuICAgKiBTaG93IHNwZWNpZmljIHRvb2x0aXBcbiAgICogQHRyaWdnZXIgUmVhY3RUb29sdGlwLnNob3coKVxuICAgKi9cblxuXG4gIHRhcmdldC5zaG93ID0gZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGRpc3BhdGNoR2xvYmFsRXZlbnQoQ09OU1RBTlQuR0xPQkFMLlNIT1csIHtcbiAgICAgIHRhcmdldDogdGFyZ2V0XG4gICAgfSk7XG4gIH07XG5cbiAgdGFyZ2V0LnByb3RvdHlwZS5nbG9iYWxSZWJ1aWxkID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm1vdW50KSB7XG4gICAgICB0aGlzLnVuYmluZExpc3RlbmVyKCk7XG4gICAgICB0aGlzLmJpbmRMaXN0ZW5lcigpO1xuICAgIH1cbiAgfTtcblxuICB0YXJnZXQucHJvdG90eXBlLmdsb2JhbFNob3cgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5tb3VudCkge1xuICAgICAgdmFyIGhhc1RhcmdldCA9IGV2ZW50ICYmIGV2ZW50LmRldGFpbCAmJiBldmVudC5kZXRhaWwudGFyZ2V0ICYmIHRydWUgfHwgZmFsc2U7IC8vIENyZWF0ZSBhIGZha2UgZXZlbnQsIHNwZWNpZmljIHNob3cgd2lsbCBsaW1pdCB0aGUgdHlwZSB0byBgc29saWRgXG4gICAgICAvLyBvbmx5IGBmbG9hdGAgdHlwZSBjYXJlcyBlLmNsaWVudFggZS5jbGllbnRZXG5cbiAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoe1xuICAgICAgICBjdXJyZW50VGFyZ2V0OiBoYXNUYXJnZXQgJiYgZXZlbnQuZGV0YWlsLnRhcmdldFxuICAgICAgfSwgdHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIHRhcmdldC5wcm90b3R5cGUuZ2xvYmFsSGlkZSA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIGlmICh0aGlzLm1vdW50KSB7XG4gICAgICB2YXIgaGFzVGFyZ2V0ID0gZXZlbnQgJiYgZXZlbnQuZGV0YWlsICYmIGV2ZW50LmRldGFpbC50YXJnZXQgJiYgdHJ1ZSB8fCBmYWxzZTtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoe1xuICAgICAgICBjdXJyZW50VGFyZ2V0OiBoYXNUYXJnZXQgJiYgZXZlbnQuZGV0YWlsLnRhcmdldFxuICAgICAgfSwgaGFzVGFyZ2V0KTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogRXZlbnRzIHRoYXQgc2hvdWxkIGJlIGJvdW5kIHRvIHRoZSB3aW5kb3dcbiAqL1xuZnVuY3Rpb24gd2luZG93TGlzdGVuZXIgKHRhcmdldCkge1xuICB0YXJnZXQucHJvdG90eXBlLmJpbmRXaW5kb3dFdmVudHMgPSBmdW5jdGlvbiAocmVzaXplSGlkZSkge1xuICAgIC8vIFJlYWN0VG9vbHRpcC5oaWRlXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLkhJREUsIHRoaXMuZ2xvYmFsSGlkZSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLkhJREUsIHRoaXMuZ2xvYmFsSGlkZSwgZmFsc2UpOyAvLyBSZWFjdFRvb2x0aXAucmVidWlsZFxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLlJFQlVJTEQsIHRoaXMuZ2xvYmFsUmVidWlsZCk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLlJFQlVJTEQsIHRoaXMuZ2xvYmFsUmVidWlsZCwgZmFsc2UpOyAvLyBSZWFjdFRvb2x0aXAuc2hvd1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLlNIT1csIHRoaXMuZ2xvYmFsU2hvdyk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoQ09OU1RBTlQuR0xPQkFMLlNIT1csIHRoaXMuZ2xvYmFsU2hvdywgZmFsc2UpOyAvLyBSZXNpemVcblxuICAgIGlmIChyZXNpemVIaWRlKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSwgZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICB0YXJnZXQucHJvdG90eXBlLnVuYmluZFdpbmRvd0V2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihDT05TVEFOVC5HTE9CQUwuSElERSwgdGhpcy5nbG9iYWxIaWRlKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihDT05TVEFOVC5HTE9CQUwuUkVCVUlMRCwgdGhpcy5nbG9iYWxSZWJ1aWxkKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihDT05TVEFOVC5HTE9CQUwuU0hPVywgdGhpcy5nbG9iYWxTaG93KTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbldpbmRvd1Jlc2l6ZSk7XG4gIH07XG4gIC8qKlxuICAgKiBpbnZva2VkIGJ5IHJlc2l6ZSBldmVudCBvZiB3aW5kb3dcbiAgICovXG5cblxuICB0YXJnZXQucHJvdG90eXBlLm9uV2luZG93UmVzaXplID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghdGhpcy5tb3VudCkgcmV0dXJuO1xuICAgIHRoaXMuaGlkZVRvb2x0aXAoKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBDdXN0b20gZXZlbnRzIHRvIGNvbnRyb2wgc2hvd2luZyBhbmQgaGlkaW5nIG9mIHRvb2x0aXBcbiAqXG4gKiBAYXR0cmlidXRlc1xuICogLSBgZXZlbnRgIHtTdHJpbmd9XG4gKiAtIGBldmVudE9mZmAge1N0cmluZ31cbiAqL1xudmFyIGNoZWNrU3RhdHVzID0gZnVuY3Rpb24gY2hlY2tTdGF0dXMoZGF0YUV2ZW50T2ZmLCBlKSB7XG4gIHZhciBzaG93ID0gdGhpcy5zdGF0ZS5zaG93O1xuICB2YXIgaWQgPSB0aGlzLnByb3BzLmlkO1xuICB2YXIgaXNDYXB0dXJlID0gdGhpcy5pc0NhcHR1cmUoZS5jdXJyZW50VGFyZ2V0KTtcbiAgdmFyIGN1cnJlbnRJdGVtID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnY3VycmVudEl0ZW0nKTtcbiAgaWYgKCFpc0NhcHR1cmUpIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgaWYgKHNob3cgJiYgY3VycmVudEl0ZW0gPT09ICd0cnVlJykge1xuICAgIGlmICghZGF0YUV2ZW50T2ZmKSB0aGlzLmhpZGVUb29sdGlwKGUpO1xuICB9IGVsc2Uge1xuICAgIGUuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRJdGVtJywgJ3RydWUnKTtcbiAgICBzZXRVbnRhcmdldEl0ZW1zKGUuY3VycmVudFRhcmdldCwgdGhpcy5nZXRUYXJnZXRBcnJheShpZCkpO1xuICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSk7XG4gIH1cbn07XG5cbnZhciBzZXRVbnRhcmdldEl0ZW1zID0gZnVuY3Rpb24gc2V0VW50YXJnZXRJdGVtcyhjdXJyZW50VGFyZ2V0LCB0YXJnZXRBcnJheSkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGN1cnJlbnRUYXJnZXQgIT09IHRhcmdldEFycmF5W2ldKSB7XG4gICAgICB0YXJnZXRBcnJheVtpXS5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRJdGVtJywgJ2ZhbHNlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhcmdldEFycmF5W2ldLnNldEF0dHJpYnV0ZSgnY3VycmVudEl0ZW0nLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxufTtcblxudmFyIGN1c3RvbUxpc3RlbmVycyA9IHtcbiAgaWQ6ICc5YjY5ZjkyZS1kM2ZlLTQ5OGItYjFiNC1jNWU2M2E1MWIwY2YnLFxuICBzZXQ6IGZ1bmN0aW9uIHNldCh0YXJnZXQsIGV2ZW50LCBsaXN0ZW5lcikge1xuICAgIGlmICh0aGlzLmlkIGluIHRhcmdldCkge1xuICAgICAgdmFyIG1hcCA9IHRhcmdldFt0aGlzLmlkXTtcbiAgICAgIG1hcFtldmVudF0gPSBsaXN0ZW5lcjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gdGhpcyBpcyB3b3JrYXJvdW5kIGZvciBXZWFrTWFwLCB3aGljaCBpcyBub3Qgc3VwcG9ydGVkIGluIG9sZGVyIGJyb3dzZXJzLCBzdWNoIGFzIElFXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCB0aGlzLmlkLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IF9kZWZpbmVQcm9wZXJ0eSh7fSwgZXZlbnQsIGxpc3RlbmVyKVxuICAgICAgfSk7XG4gICAgfVxuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldCh0YXJnZXQsIGV2ZW50KSB7XG4gICAgdmFyIG1hcCA9IHRhcmdldFt0aGlzLmlkXTtcblxuICAgIGlmIChtYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIG1hcFtldmVudF07XG4gICAgfVxuICB9XG59O1xuZnVuY3Rpb24gY3VzdG9tRXZlbnQgKHRhcmdldCkge1xuICB0YXJnZXQucHJvdG90eXBlLmlzQ3VzdG9tRXZlbnQgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIGV2ZW50ID0gdGhpcy5zdGF0ZS5ldmVudDtcbiAgICByZXR1cm4gZXZlbnQgfHwgISFlbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWV2ZW50Jyk7XG4gIH07XG4gIC8qIEJpbmQgbGlzdGVuZXIgZm9yIGN1c3RvbSBldmVudCAqL1xuXG5cbiAgdGFyZ2V0LnByb3RvdHlwZS5jdXN0b21CaW5kTGlzdGVuZXIgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHZhciBfdGhpcyRzdGF0ZSA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGV2ZW50ID0gX3RoaXMkc3RhdGUuZXZlbnQsXG4gICAgICAgIGV2ZW50T2ZmID0gX3RoaXMkc3RhdGUuZXZlbnRPZmY7XG4gICAgdmFyIGRhdGFFdmVudCA9IGVsZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtZXZlbnQnKSB8fCBldmVudDtcbiAgICB2YXIgZGF0YUV2ZW50T2ZmID0gZWxlLmdldEF0dHJpYnV0ZSgnZGF0YS1ldmVudC1vZmYnKSB8fCBldmVudE9mZjtcbiAgICBkYXRhRXZlbnQuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgZWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGN1c3RvbUxpc3RlbmVycy5nZXQoZWxlLCBldmVudCkpO1xuICAgICAgdmFyIGN1c3RvbUxpc3RlbmVyID0gY2hlY2tTdGF0dXMuYmluZChfdGhpcywgZGF0YUV2ZW50T2ZmKTtcbiAgICAgIGN1c3RvbUxpc3RlbmVycy5zZXQoZWxlLCBldmVudCwgY3VzdG9tTGlzdGVuZXIpO1xuICAgICAgZWxlLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGN1c3RvbUxpc3RlbmVyLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpZiAoZGF0YUV2ZW50T2ZmKSB7XG4gICAgICBkYXRhRXZlbnRPZmYuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBlbGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgX3RoaXMuaGlkZVRvb2x0aXApO1xuICAgICAgICBlbGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgX3RoaXMuaGlkZVRvb2x0aXAsIGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgLyogVW5iaW5kIGxpc3RlbmVyIGZvciBjdXN0b20gZXZlbnQgKi9cblxuXG4gIHRhcmdldC5wcm90b3R5cGUuY3VzdG9tVW5iaW5kTGlzdGVuZXIgPSBmdW5jdGlvbiAoZWxlKSB7XG4gICAgdmFyIF90aGlzJHN0YXRlMiA9IHRoaXMuc3RhdGUsXG4gICAgICAgIGV2ZW50ID0gX3RoaXMkc3RhdGUyLmV2ZW50LFxuICAgICAgICBldmVudE9mZiA9IF90aGlzJHN0YXRlMi5ldmVudE9mZjtcbiAgICB2YXIgZGF0YUV2ZW50ID0gZXZlbnQgfHwgZWxlLmdldEF0dHJpYnV0ZSgnZGF0YS1ldmVudCcpO1xuICAgIHZhciBkYXRhRXZlbnRPZmYgPSBldmVudE9mZiB8fCBlbGUuZ2V0QXR0cmlidXRlKCdkYXRhLWV2ZW50LW9mZicpO1xuICAgIGVsZS5yZW1vdmVFdmVudExpc3RlbmVyKGRhdGFFdmVudCwgY3VzdG9tTGlzdGVuZXJzLmdldChlbGUsIGV2ZW50KSk7XG4gICAgaWYgKGRhdGFFdmVudE9mZikgZWxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZGF0YUV2ZW50T2ZmLCB0aGlzLmhpZGVUb29sdGlwKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBVdGlsIG1ldGhvZCB0byBqdWRnZSBpZiBpdCBzaG91bGQgZm9sbG93IGNhcHR1cmUgbW9kZWxcbiAqL1xuZnVuY3Rpb24gaXNDYXB0dXJlICh0YXJnZXQpIHtcbiAgdGFyZ2V0LnByb3RvdHlwZS5pc0NhcHR1cmUgPSBmdW5jdGlvbiAoY3VycmVudFRhcmdldCkge1xuICAgIHJldHVybiBjdXJyZW50VGFyZ2V0ICYmIGN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWlzY2FwdHVyZScpID09PSAndHJ1ZScgfHwgdGhpcy5wcm9wcy5pc0NhcHR1cmUgfHwgZmFsc2U7XG4gIH07XG59XG5cbi8qKlxuICogVXRpbCBtZXRob2QgdG8gZ2V0IGVmZmVjdFxuICovXG5mdW5jdGlvbiBnZXRFZmZlY3QgKHRhcmdldCkge1xuICB0YXJnZXQucHJvdG90eXBlLmdldEVmZmVjdCA9IGZ1bmN0aW9uIChjdXJyZW50VGFyZ2V0KSB7XG4gICAgdmFyIGRhdGFFZmZlY3QgPSBjdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1lZmZlY3QnKTtcbiAgICByZXR1cm4gZGF0YUVmZmVjdCB8fCB0aGlzLnByb3BzLmVmZmVjdCB8fCAnZmxvYXQnO1xuICB9O1xufVxuXG4vKipcbiAqIFV0aWwgbWV0aG9kIHRvIGdldCBlZmZlY3RcbiAqL1xuXG52YXIgbWFrZVByb3h5ID0gZnVuY3Rpb24gbWFrZVByb3h5KGUpIHtcbiAgdmFyIHByb3h5ID0ge307XG5cbiAgZm9yICh2YXIga2V5IGluIGUpIHtcbiAgICBpZiAodHlwZW9mIGVba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJveHlba2V5XSA9IGVba2V5XS5iaW5kKGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm94eVtrZXldID0gZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm94eTtcbn07XG5cbnZhciBib2R5TGlzdGVuZXIgPSBmdW5jdGlvbiBib2R5TGlzdGVuZXIoY2FsbGJhY2ssIG9wdGlvbnMsIGUpIHtcbiAgdmFyIF9vcHRpb25zJHJlc3BlY3RFZmZlYyA9IG9wdGlvbnMucmVzcGVjdEVmZmVjdCxcbiAgICAgIHJlc3BlY3RFZmZlY3QgPSBfb3B0aW9ucyRyZXNwZWN0RWZmZWMgPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkcmVzcGVjdEVmZmVjLFxuICAgICAgX29wdGlvbnMkY3VzdG9tRXZlbnQgPSBvcHRpb25zLmN1c3RvbUV2ZW50LFxuICAgICAgY3VzdG9tRXZlbnQgPSBfb3B0aW9ucyRjdXN0b21FdmVudCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRjdXN0b21FdmVudDtcbiAgdmFyIGlkID0gdGhpcy5wcm9wcy5pZDtcbiAgdmFyIHRpcCA9IGUudGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS10aXAnKSB8fCBudWxsO1xuICB2YXIgZm9ySWQgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZm9yJykgfHwgbnVsbDtcbiAgdmFyIHRhcmdldCA9IGUudGFyZ2V0O1xuXG4gIGlmICh0aGlzLmlzQ3VzdG9tRXZlbnQodGFyZ2V0KSAmJiAhY3VzdG9tRXZlbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgaXNUYXJnZXRCZWxvbmdzVG9Ub29sdGlwID0gaWQgPT0gbnVsbCAmJiBmb3JJZCA9PSBudWxsIHx8IGZvcklkID09PSBpZDtcblxuICBpZiAodGlwICE9IG51bGwgJiYgKCFyZXNwZWN0RWZmZWN0IHx8IHRoaXMuZ2V0RWZmZWN0KHRhcmdldCkgPT09ICdmbG9hdCcpICYmIGlzVGFyZ2V0QmVsb25nc1RvVG9vbHRpcCkge1xuICAgIHZhciBwcm94eSA9IG1ha2VQcm94eShlKTtcbiAgICBwcm94eS5jdXJyZW50VGFyZ2V0ID0gdGFyZ2V0O1xuICAgIGNhbGxiYWNrKHByb3h5KTtcbiAgfVxufTtcblxudmFyIGZpbmRDdXN0b21FdmVudHMgPSBmdW5jdGlvbiBmaW5kQ3VzdG9tRXZlbnRzKHRhcmdldEFycmF5LCBkYXRhQXR0cmlidXRlKSB7XG4gIHZhciBldmVudHMgPSB7fTtcbiAgdGFyZ2V0QXJyYXkuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdmFyIGV2ZW50ID0gdGFyZ2V0LmdldEF0dHJpYnV0ZShkYXRhQXR0cmlidXRlKTtcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJldHVybiBldmVudHNbZXZlbnRdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBldmVudHM7XG59O1xuXG52YXIgZ2V0Qm9keSA9IGZ1bmN0aW9uIGdldEJvZHkoKSB7XG4gIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScpWzBdO1xufTtcblxuZnVuY3Rpb24gYm9keU1vZGUgKHRhcmdldCkge1xuICB0YXJnZXQucHJvdG90eXBlLmlzQm9keU1vZGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5wcm9wcy5ib2R5TW9kZTtcbiAgfTtcblxuICB0YXJnZXQucHJvdG90eXBlLmJpbmRCb2R5TGlzdGVuZXIgPSBmdW5jdGlvbiAodGFyZ2V0QXJyYXkpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdmFyIF90aGlzJHN0YXRlID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgZXZlbnQgPSBfdGhpcyRzdGF0ZS5ldmVudCxcbiAgICAgICAgZXZlbnRPZmYgPSBfdGhpcyRzdGF0ZS5ldmVudE9mZixcbiAgICAgICAgcG9zc2libGVDdXN0b21FdmVudHMgPSBfdGhpcyRzdGF0ZS5wb3NzaWJsZUN1c3RvbUV2ZW50cyxcbiAgICAgICAgcG9zc2libGVDdXN0b21FdmVudHNPZmYgPSBfdGhpcyRzdGF0ZS5wb3NzaWJsZUN1c3RvbUV2ZW50c09mZjtcbiAgICB2YXIgYm9keSA9IGdldEJvZHkoKTtcbiAgICB2YXIgY3VzdG9tRXZlbnRzID0gZmluZEN1c3RvbUV2ZW50cyh0YXJnZXRBcnJheSwgJ2RhdGEtZXZlbnQnKTtcbiAgICB2YXIgY3VzdG9tRXZlbnRzT2ZmID0gZmluZEN1c3RvbUV2ZW50cyh0YXJnZXRBcnJheSwgJ2RhdGEtZXZlbnQtb2ZmJyk7XG4gICAgaWYgKGV2ZW50ICE9IG51bGwpIGN1c3RvbUV2ZW50c1tldmVudF0gPSB0cnVlO1xuICAgIGlmIChldmVudE9mZiAhPSBudWxsKSBjdXN0b21FdmVudHNPZmZbZXZlbnRPZmZdID0gdHJ1ZTtcbiAgICBwb3NzaWJsZUN1c3RvbUV2ZW50cy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gY3VzdG9tRXZlbnRzW2V2ZW50XSA9IHRydWU7XG4gICAgfSk7XG4gICAgcG9zc2libGVDdXN0b21FdmVudHNPZmYuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgcmV0dXJuIGN1c3RvbUV2ZW50c09mZltldmVudF0gPSB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMudW5iaW5kQm9keUxpc3RlbmVyKGJvZHkpO1xuICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLmJvZHlNb2RlTGlzdGVuZXJzID0ge307XG5cbiAgICBpZiAoZXZlbnQgPT0gbnVsbCkge1xuICAgICAgbGlzdGVuZXJzLm1vdXNlb3ZlciA9IGJvZHlMaXN0ZW5lci5iaW5kKHRoaXMsIHRoaXMuc2hvd1Rvb2x0aXAsIHt9KTtcbiAgICAgIGxpc3RlbmVycy5tb3VzZW1vdmUgPSBib2R5TGlzdGVuZXIuYmluZCh0aGlzLCB0aGlzLnVwZGF0ZVRvb2x0aXAsIHtcbiAgICAgICAgcmVzcGVjdEVmZmVjdDogdHJ1ZVxuICAgICAgfSk7XG4gICAgICBsaXN0ZW5lcnMubW91c2VvdXQgPSBib2R5TGlzdGVuZXIuYmluZCh0aGlzLCB0aGlzLmhpZGVUb29sdGlwLCB7fSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2V2ZW50IGluIGN1c3RvbUV2ZW50cykge1xuICAgICAgbGlzdGVuZXJzW19ldmVudF0gPSBib2R5TGlzdGVuZXIuYmluZCh0aGlzLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgdGFyZ2V0RXZlbnRPZmYgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWV2ZW50LW9mZicpIHx8IGV2ZW50T2ZmO1xuICAgICAgICBjaGVja1N0YXR1cy5jYWxsKF90aGlzLCB0YXJnZXRFdmVudE9mZiwgZSk7XG4gICAgICB9LCB7XG4gICAgICAgIGN1c3RvbUV2ZW50OiB0cnVlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBfZXZlbnQyIGluIGN1c3RvbUV2ZW50c09mZikge1xuICAgICAgbGlzdGVuZXJzW19ldmVudDJdID0gYm9keUxpc3RlbmVyLmJpbmQodGhpcywgdGhpcy5oaWRlVG9vbHRpcCwge1xuICAgICAgICBjdXN0b21FdmVudDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2V2ZW50MyBpbiBsaXN0ZW5lcnMpIHtcbiAgICAgIGJvZHkuYWRkRXZlbnRMaXN0ZW5lcihfZXZlbnQzLCBsaXN0ZW5lcnNbX2V2ZW50M10pO1xuICAgIH1cbiAgfTtcblxuICB0YXJnZXQucHJvdG90eXBlLnVuYmluZEJvZHlMaXN0ZW5lciA9IGZ1bmN0aW9uIChib2R5KSB7XG4gICAgYm9keSA9IGJvZHkgfHwgZ2V0Qm9keSgpO1xuICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLmJvZHlNb2RlTGlzdGVuZXJzO1xuXG4gICAgZm9yICh2YXIgZXZlbnQgaW4gbGlzdGVuZXJzKSB7XG4gICAgICBib2R5LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGxpc3RlbmVyc1tldmVudF0pO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBUcmFja2luZyB0YXJnZXQgcmVtb3ZpbmcgZnJvbSBET00uXG4gKiBJdCdzIG5lY2Vzc2FyeSB0byBoaWRlIHRvb2x0aXAgd2hlbiBpdCdzIHRhcmdldCBkaXNhcHBlYXJzLlxuICogT3RoZXJ3aXNlLCB0aGUgdG9vbHRpcCB3b3VsZCBiZSBzaG93biBmb3JldmVyIHVudGlsIGFub3RoZXIgdGFyZ2V0XG4gKiBpcyB0cmlnZ2VyZWQuXG4gKlxuICogSWYgTXV0YXRpb25PYnNlcnZlciBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIGZlYXR1cmUganVzdCBkb2Vzbid0IHdvcmsuXG4gKi9cbi8vIGh0dHBzOi8vaGFja3MubW96aWxsYS5vcmcvMjAxMi8wNS9kb20tbXV0YXRpb25vYnNlcnZlci1yZWFjdGluZy10by1kb20tY2hhbmdlcy13aXRob3V0LWtpbGxpbmctYnJvd3Nlci1wZXJmb3JtYW5jZS9cbnZhciBnZXRNdXRhdGlvbk9ic2VydmVyQ2xhc3MgPSBmdW5jdGlvbiBnZXRNdXRhdGlvbk9ic2VydmVyQ2xhc3MoKSB7XG4gIHJldHVybiB3aW5kb3cuTXV0YXRpb25PYnNlcnZlciB8fCB3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlciB8fCB3aW5kb3cuTW96TXV0YXRpb25PYnNlcnZlcjtcbn07XG5cbmZ1bmN0aW9uIHRyYWNrUmVtb3ZhbCAodGFyZ2V0KSB7XG4gIHRhcmdldC5wcm90b3R5cGUuYmluZFJlbW92YWxUcmFja2VyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgTXV0YXRpb25PYnNlcnZlciA9IGdldE11dGF0aW9uT2JzZXJ2ZXJDbGFzcygpO1xuICAgIGlmIChNdXRhdGlvbk9ic2VydmVyID09IG51bGwpIHJldHVybjtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgICBmb3IgKHZhciBtMSA9IDA7IG0xIDwgbXV0YXRpb25zLmxlbmd0aDsgbTErKykge1xuICAgICAgICB2YXIgbXV0YXRpb24gPSBtdXRhdGlvbnNbbTFdO1xuXG4gICAgICAgIGZvciAodmFyIG0yID0gMDsgbTIgPCBtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoOyBtMisrKSB7XG4gICAgICAgICAgdmFyIGVsZW1lbnQgPSBtdXRhdGlvbi5yZW1vdmVkTm9kZXNbbTJdO1xuXG4gICAgICAgICAgaWYgKGVsZW1lbnQgPT09IF90aGlzLnN0YXRlLmN1cnJlbnRUYXJnZXQpIHtcbiAgICAgICAgICAgIF90aGlzLmhpZGVUb29sdGlwKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHdpbmRvdy5kb2N1bWVudCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMucmVtb3ZhbFRyYWNrZXIgPSBvYnNlcnZlcjtcbiAgfTtcblxuICB0YXJnZXQucHJvdG90eXBlLnVuYmluZFJlbW92YWxUcmFja2VyID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnJlbW92YWxUcmFja2VyKSB7XG4gICAgICB0aGlzLnJlbW92YWxUcmFja2VyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMucmVtb3ZhbFRyYWNrZXIgPSBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIHRvb2x0aXBcbiAqXG4gKiBAcGFyYW1zXG4gKiAtIGBlYCB7RXZlbnR9IHRoZSBldmVudCBvZiBjdXJyZW50IG1vdXNlXG4gKiAtIGB0YXJnZXRgIHtFbGVtZW50fSB0aGUgY3VycmVudFRhcmdldCBvZiB0aGUgZXZlbnRcbiAqIC0gYG5vZGVgIHtET019IHRoZSByZWFjdC10b29sdGlwIG9iamVjdFxuICogLSBgcGxhY2VgIHtTdHJpbmd9IHRvcCAvIHJpZ2h0IC8gYm90dG9tIC8gbGVmdFxuICogLSBgZWZmZWN0YCB7U3RyaW5nfSBmbG9hdCAvIHNvbGlkXG4gKiAtIGBvZmZzZXRgIHtPYmplY3R9IHRoZSBvZmZzZXQgdG8gZGVmYXVsdCBwb3NpdGlvblxuICpcbiAqIEByZXR1cm4ge09iamVjdH1cbiAqIC0gYGlzTmV3U3RhdGVgIHtCb29sfSByZXF1aXJlZFxuICogLSBgbmV3U3RhdGVgIHtPYmplY3R9XG4gKiAtIGBwb3NpdGlvbmAge09iamVjdH0ge2xlZnQ6IHtOdW1iZXJ9LCB0b3A6IHtOdW1iZXJ9fVxuICovXG5mdW5jdGlvbiBnZXRQb3NpdGlvbiAoZSwgdGFyZ2V0LCBub2RlLCBwbGFjZSwgZGVzaXJlZFBsYWNlLCBlZmZlY3QsIG9mZnNldCkge1xuICB2YXIgX2dldERpbWVuc2lvbnMgPSBnZXREaW1lbnNpb25zKG5vZGUpLFxuICAgICAgdGlwV2lkdGggPSBfZ2V0RGltZW5zaW9ucy53aWR0aCxcbiAgICAgIHRpcEhlaWdodCA9IF9nZXREaW1lbnNpb25zLmhlaWdodDtcblxuICB2YXIgX2dldERpbWVuc2lvbnMyID0gZ2V0RGltZW5zaW9ucyh0YXJnZXQpLFxuICAgICAgdGFyZ2V0V2lkdGggPSBfZ2V0RGltZW5zaW9uczIud2lkdGgsXG4gICAgICB0YXJnZXRIZWlnaHQgPSBfZ2V0RGltZW5zaW9uczIuaGVpZ2h0O1xuXG4gIHZhciBfZ2V0Q3VycmVudE9mZnNldCA9IGdldEN1cnJlbnRPZmZzZXQoZSwgdGFyZ2V0LCBlZmZlY3QpLFxuICAgICAgbW91c2VYID0gX2dldEN1cnJlbnRPZmZzZXQubW91c2VYLFxuICAgICAgbW91c2VZID0gX2dldEN1cnJlbnRPZmZzZXQubW91c2VZO1xuXG4gIHZhciBkZWZhdWx0T2Zmc2V0ID0gZ2V0RGVmYXVsdFBvc2l0aW9uKGVmZmVjdCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgdGlwV2lkdGgsIHRpcEhlaWdodCk7XG5cbiAgdmFyIF9jYWxjdWxhdGVPZmZzZXQgPSBjYWxjdWxhdGVPZmZzZXQob2Zmc2V0KSxcbiAgICAgIGV4dHJhT2Zmc2V0WCA9IF9jYWxjdWxhdGVPZmZzZXQuZXh0cmFPZmZzZXRYLFxuICAgICAgZXh0cmFPZmZzZXRZID0gX2NhbGN1bGF0ZU9mZnNldC5leHRyYU9mZnNldFk7XG5cbiAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIHZhciB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG5cbiAgdmFyIF9nZXRQYXJlbnQgPSBnZXRQYXJlbnQobm9kZSksXG4gICAgICBwYXJlbnRUb3AgPSBfZ2V0UGFyZW50LnBhcmVudFRvcCxcbiAgICAgIHBhcmVudExlZnQgPSBfZ2V0UGFyZW50LnBhcmVudExlZnQ7IC8vIEdldCB0aGUgZWRnZSBvZmZzZXQgb2YgdGhlIHRvb2x0aXBcblxuXG4gIHZhciBnZXRUaXBPZmZzZXRMZWZ0ID0gZnVuY3Rpb24gZ2V0VGlwT2Zmc2V0TGVmdChwbGFjZSkge1xuICAgIHZhciBvZmZzZXRYID0gZGVmYXVsdE9mZnNldFtwbGFjZV0ubDtcbiAgICByZXR1cm4gbW91c2VYICsgb2Zmc2V0WCArIGV4dHJhT2Zmc2V0WDtcbiAgfTtcblxuICB2YXIgZ2V0VGlwT2Zmc2V0UmlnaHQgPSBmdW5jdGlvbiBnZXRUaXBPZmZzZXRSaWdodChwbGFjZSkge1xuICAgIHZhciBvZmZzZXRYID0gZGVmYXVsdE9mZnNldFtwbGFjZV0ucjtcbiAgICByZXR1cm4gbW91c2VYICsgb2Zmc2V0WCArIGV4dHJhT2Zmc2V0WDtcbiAgfTtcblxuICB2YXIgZ2V0VGlwT2Zmc2V0VG9wID0gZnVuY3Rpb24gZ2V0VGlwT2Zmc2V0VG9wKHBsYWNlKSB7XG4gICAgdmFyIG9mZnNldFkgPSBkZWZhdWx0T2Zmc2V0W3BsYWNlXS50O1xuICAgIHJldHVybiBtb3VzZVkgKyBvZmZzZXRZICsgZXh0cmFPZmZzZXRZO1xuICB9O1xuXG4gIHZhciBnZXRUaXBPZmZzZXRCb3R0b20gPSBmdW5jdGlvbiBnZXRUaXBPZmZzZXRCb3R0b20ocGxhY2UpIHtcbiAgICB2YXIgb2Zmc2V0WSA9IGRlZmF1bHRPZmZzZXRbcGxhY2VdLmI7XG4gICAgcmV0dXJuIG1vdXNlWSArIG9mZnNldFkgKyBleHRyYU9mZnNldFk7XG4gIH07IC8vXG4gIC8vIEZ1bmN0aW9ucyB0byB0ZXN0IHdoZXRoZXIgdGhlIHRvb2x0aXAncyBzaWRlcyBhcmUgaW5zaWRlXG4gIC8vIHRoZSBjbGllbnQgd2luZG93IGZvciBhIGdpdmVuIG9yaWVudGF0aW9uIHBcbiAgLy9cbiAgLy8gIF9fX19fX19fX19fX19cbiAgLy8gfCAgICAgICAgICAgICB8IDwtLSBSaWdodCBzaWRlXG4gIC8vIHwgcCA9ICdsZWZ0JyAgfFxcXG4gIC8vIHwgICAgICAgICAgICAgfC8gIHxcXFxuICAvLyB8X19fX19fX19fX19fX3wgICB8X1xcICA8LS0gTW91c2VcbiAgLy8gICAgICAvIFxcICAgICAgICAgICB8XG4gIC8vICAgICAgIHxcbiAgLy8gICAgICAgfFxuICAvLyAgQm90dG9tIHNpZGVcbiAgLy9cblxuXG4gIHZhciBvdXRzaWRlTGVmdCA9IGZ1bmN0aW9uIG91dHNpZGVMZWZ0KHApIHtcbiAgICByZXR1cm4gZ2V0VGlwT2Zmc2V0TGVmdChwKSA8IDA7XG4gIH07XG5cbiAgdmFyIG91dHNpZGVSaWdodCA9IGZ1bmN0aW9uIG91dHNpZGVSaWdodChwKSB7XG4gICAgcmV0dXJuIGdldFRpcE9mZnNldFJpZ2h0KHApID4gd2luZG93V2lkdGg7XG4gIH07XG5cbiAgdmFyIG91dHNpZGVUb3AgPSBmdW5jdGlvbiBvdXRzaWRlVG9wKHApIHtcbiAgICByZXR1cm4gZ2V0VGlwT2Zmc2V0VG9wKHApIDwgMDtcbiAgfTtcblxuICB2YXIgb3V0c2lkZUJvdHRvbSA9IGZ1bmN0aW9uIG91dHNpZGVCb3R0b20ocCkge1xuICAgIHJldHVybiBnZXRUaXBPZmZzZXRCb3R0b20ocCkgPiB3aW5kb3dIZWlnaHQ7XG4gIH07IC8vIENoZWNrIHdoZXRoZXIgdGhlIHRvb2x0aXAgd2l0aCBvcmllbnRhdGlvbiBwIGlzIGNvbXBsZXRlbHkgaW5zaWRlIHRoZSBjbGllbnQgd2luZG93XG5cblxuICB2YXIgb3V0c2lkZSA9IGZ1bmN0aW9uIG91dHNpZGUocCkge1xuICAgIHJldHVybiBvdXRzaWRlTGVmdChwKSB8fCBvdXRzaWRlUmlnaHQocCkgfHwgb3V0c2lkZVRvcChwKSB8fCBvdXRzaWRlQm90dG9tKHApO1xuICB9O1xuXG4gIHZhciBpbnNpZGUgPSBmdW5jdGlvbiBpbnNpZGUocCkge1xuICAgIHJldHVybiAhb3V0c2lkZShwKTtcbiAgfTtcblxuICB2YXIgcGxhY2VzTGlzdCA9IFsndG9wJywgJ2JvdHRvbScsICdsZWZ0JywgJ3JpZ2h0J107XG4gIHZhciBpbnNpZGVMaXN0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgcCA9IHBsYWNlc0xpc3RbaV07XG5cbiAgICBpZiAoaW5zaWRlKHApKSB7XG4gICAgICBpbnNpZGVMaXN0LnB1c2gocCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGlzTmV3U3RhdGUgPSBmYWxzZTtcbiAgdmFyIG5ld1BsYWNlO1xuICB2YXIgc2hvdWxkVXBkYXRlUGxhY2UgPSBkZXNpcmVkUGxhY2UgIT09IHBsYWNlO1xuXG4gIGlmIChpbnNpZGUoZGVzaXJlZFBsYWNlKSAmJiBzaG91bGRVcGRhdGVQbGFjZSkge1xuICAgIGlzTmV3U3RhdGUgPSB0cnVlO1xuICAgIG5ld1BsYWNlID0gZGVzaXJlZFBsYWNlO1xuICB9IGVsc2UgaWYgKGluc2lkZUxpc3QubGVuZ3RoID4gMCAmJiBvdXRzaWRlKGRlc2lyZWRQbGFjZSkgJiYgb3V0c2lkZShwbGFjZSkpIHtcbiAgICBpc05ld1N0YXRlID0gdHJ1ZTtcbiAgICBuZXdQbGFjZSA9IGluc2lkZUxpc3RbMF07XG4gIH1cblxuICBpZiAoaXNOZXdTdGF0ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBpc05ld1N0YXRlOiB0cnVlLFxuICAgICAgbmV3U3RhdGU6IHtcbiAgICAgICAgcGxhY2U6IG5ld1BsYWNlXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaXNOZXdTdGF0ZTogZmFsc2UsXG4gICAgcG9zaXRpb246IHtcbiAgICAgIGxlZnQ6IHBhcnNlSW50KGdldFRpcE9mZnNldExlZnQocGxhY2UpIC0gcGFyZW50TGVmdCwgMTApLFxuICAgICAgdG9wOiBwYXJzZUludChnZXRUaXBPZmZzZXRUb3AocGxhY2UpIC0gcGFyZW50VG9wLCAxMClcbiAgICB9XG4gIH07XG59XG5cbnZhciBnZXREaW1lbnNpb25zID0gZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhub2RlKSB7XG4gIHZhciBfbm9kZSRnZXRCb3VuZGluZ0NsaWUgPSBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgaGVpZ2h0ID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLmhlaWdodCxcbiAgICAgIHdpZHRoID0gX25vZGUkZ2V0Qm91bmRpbmdDbGllLndpZHRoO1xuXG4gIHJldHVybiB7XG4gICAgaGVpZ2h0OiBwYXJzZUludChoZWlnaHQsIDEwKSxcbiAgICB3aWR0aDogcGFyc2VJbnQod2lkdGgsIDEwKVxuICB9O1xufTsgLy8gR2V0IGN1cnJlbnQgbW91c2Ugb2Zmc2V0XG5cblxudmFyIGdldEN1cnJlbnRPZmZzZXQgPSBmdW5jdGlvbiBnZXRDdXJyZW50T2Zmc2V0KGUsIGN1cnJlbnRUYXJnZXQsIGVmZmVjdCkge1xuICB2YXIgYm91bmRpbmdDbGllbnRSZWN0ID0gY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHRhcmdldFRvcCA9IGJvdW5kaW5nQ2xpZW50UmVjdC50b3A7XG4gIHZhciB0YXJnZXRMZWZ0ID0gYm91bmRpbmdDbGllbnRSZWN0LmxlZnQ7XG5cbiAgdmFyIF9nZXREaW1lbnNpb25zMyA9IGdldERpbWVuc2lvbnMoY3VycmVudFRhcmdldCksXG4gICAgICB0YXJnZXRXaWR0aCA9IF9nZXREaW1lbnNpb25zMy53aWR0aCxcbiAgICAgIHRhcmdldEhlaWdodCA9IF9nZXREaW1lbnNpb25zMy5oZWlnaHQ7XG5cbiAgaWYgKGVmZmVjdCA9PT0gJ2Zsb2F0Jykge1xuICAgIHJldHVybiB7XG4gICAgICBtb3VzZVg6IGUuY2xpZW50WCxcbiAgICAgIG1vdXNlWTogZS5jbGllbnRZXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbW91c2VYOiB0YXJnZXRMZWZ0ICsgdGFyZ2V0V2lkdGggLyAyLFxuICAgIG1vdXNlWTogdGFyZ2V0VG9wICsgdGFyZ2V0SGVpZ2h0IC8gMlxuICB9O1xufTsgLy8gTGlzdCBhbGwgcG9zc2liaWxpdHkgb2YgdG9vbHRpcCBmaW5hbCBvZmZzZXRcbi8vIFRoaXMgaXMgdXNlZnVsIGluIGp1ZGdpbmcgaWYgaXQgaXMgbmVjZXNzYXJ5IGZvciB0b29sdGlwIHRvIHN3aXRjaCBwb3NpdGlvbiB3aGVuIG91dCBvZiB3aW5kb3dcblxuXG52YXIgZ2V0RGVmYXVsdFBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0RGVmYXVsdFBvc2l0aW9uKGVmZmVjdCwgdGFyZ2V0V2lkdGgsIHRhcmdldEhlaWdodCwgdGlwV2lkdGgsIHRpcEhlaWdodCkge1xuICB2YXIgdG9wO1xuICB2YXIgcmlnaHQ7XG4gIHZhciBib3R0b207XG4gIHZhciBsZWZ0O1xuICB2YXIgZGlzVG9Nb3VzZSA9IDM7XG4gIHZhciB0cmlhbmdsZUhlaWdodCA9IDI7XG4gIHZhciBjdXJzb3JIZWlnaHQgPSAxMjsgLy8gT3B0aW1pemUgZm9yIGZsb2F0IGJvdHRvbSBvbmx5LCBjYXVzZSB0aGUgY3Vyc29yIHdpbGwgaGlkZSB0aGUgdG9vbHRpcFxuXG4gIGlmIChlZmZlY3QgPT09ICdmbG9hdCcpIHtcbiAgICB0b3AgPSB7XG4gICAgICBsOiAtKHRpcFdpZHRoIC8gMiksXG4gICAgICByOiB0aXBXaWR0aCAvIDIsXG4gICAgICB0OiAtKHRpcEhlaWdodCArIGRpc1RvTW91c2UgKyB0cmlhbmdsZUhlaWdodCksXG4gICAgICBiOiAtZGlzVG9Nb3VzZVxuICAgIH07XG4gICAgYm90dG9tID0ge1xuICAgICAgbDogLSh0aXBXaWR0aCAvIDIpLFxuICAgICAgcjogdGlwV2lkdGggLyAyLFxuICAgICAgdDogZGlzVG9Nb3VzZSArIGN1cnNvckhlaWdodCxcbiAgICAgIGI6IHRpcEhlaWdodCArIGRpc1RvTW91c2UgKyB0cmlhbmdsZUhlaWdodCArIGN1cnNvckhlaWdodFxuICAgIH07XG4gICAgbGVmdCA9IHtcbiAgICAgIGw6IC0odGlwV2lkdGggKyBkaXNUb01vdXNlICsgdHJpYW5nbGVIZWlnaHQpLFxuICAgICAgcjogLWRpc1RvTW91c2UsXG4gICAgICB0OiAtKHRpcEhlaWdodCAvIDIpLFxuICAgICAgYjogdGlwSGVpZ2h0IC8gMlxuICAgIH07XG4gICAgcmlnaHQgPSB7XG4gICAgICBsOiBkaXNUb01vdXNlLFxuICAgICAgcjogdGlwV2lkdGggKyBkaXNUb01vdXNlICsgdHJpYW5nbGVIZWlnaHQsXG4gICAgICB0OiAtKHRpcEhlaWdodCAvIDIpLFxuICAgICAgYjogdGlwSGVpZ2h0IC8gMlxuICAgIH07XG4gIH0gZWxzZSBpZiAoZWZmZWN0ID09PSAnc29saWQnKSB7XG4gICAgdG9wID0ge1xuICAgICAgbDogLSh0aXBXaWR0aCAvIDIpLFxuICAgICAgcjogdGlwV2lkdGggLyAyLFxuICAgICAgdDogLSh0YXJnZXRIZWlnaHQgLyAyICsgdGlwSGVpZ2h0ICsgdHJpYW5nbGVIZWlnaHQpLFxuICAgICAgYjogLSh0YXJnZXRIZWlnaHQgLyAyKVxuICAgIH07XG4gICAgYm90dG9tID0ge1xuICAgICAgbDogLSh0aXBXaWR0aCAvIDIpLFxuICAgICAgcjogdGlwV2lkdGggLyAyLFxuICAgICAgdDogdGFyZ2V0SGVpZ2h0IC8gMixcbiAgICAgIGI6IHRhcmdldEhlaWdodCAvIDIgKyB0aXBIZWlnaHQgKyB0cmlhbmdsZUhlaWdodFxuICAgIH07XG4gICAgbGVmdCA9IHtcbiAgICAgIGw6IC0odGlwV2lkdGggKyB0YXJnZXRXaWR0aCAvIDIgKyB0cmlhbmdsZUhlaWdodCksXG4gICAgICByOiAtKHRhcmdldFdpZHRoIC8gMiksXG4gICAgICB0OiAtKHRpcEhlaWdodCAvIDIpLFxuICAgICAgYjogdGlwSGVpZ2h0IC8gMlxuICAgIH07XG4gICAgcmlnaHQgPSB7XG4gICAgICBsOiB0YXJnZXRXaWR0aCAvIDIsXG4gICAgICByOiB0aXBXaWR0aCArIHRhcmdldFdpZHRoIC8gMiArIHRyaWFuZ2xlSGVpZ2h0LFxuICAgICAgdDogLSh0aXBIZWlnaHQgLyAyKSxcbiAgICAgIGI6IHRpcEhlaWdodCAvIDJcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHRvcCxcbiAgICBib3R0b206IGJvdHRvbSxcbiAgICBsZWZ0OiBsZWZ0LFxuICAgIHJpZ2h0OiByaWdodFxuICB9O1xufTsgLy8gQ29uc2lkZXIgYWRkaXRpb25hbCBvZmZzZXQgaW50byBwb3NpdGlvbiBjYWxjdWxhdGlvblxuXG5cbnZhciBjYWxjdWxhdGVPZmZzZXQgPSBmdW5jdGlvbiBjYWxjdWxhdGVPZmZzZXQob2Zmc2V0KSB7XG4gIHZhciBleHRyYU9mZnNldFggPSAwO1xuICB2YXIgZXh0cmFPZmZzZXRZID0gMDtcblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShvZmZzZXQpID09PSAnW29iamVjdCBTdHJpbmddJykge1xuICAgIG9mZnNldCA9IEpTT04ucGFyc2Uob2Zmc2V0LnRvU3RyaW5nKCkucmVwbGFjZSgvJy9nLCAnXCInKSk7XG4gIH1cblxuICBmb3IgKHZhciBrZXkgaW4gb2Zmc2V0KSB7XG4gICAgaWYgKGtleSA9PT0gJ3RvcCcpIHtcbiAgICAgIGV4dHJhT2Zmc2V0WSAtPSBwYXJzZUludChvZmZzZXRba2V5XSwgMTApO1xuICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYm90dG9tJykge1xuICAgICAgZXh0cmFPZmZzZXRZICs9IHBhcnNlSW50KG9mZnNldFtrZXldLCAxMCk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdsZWZ0Jykge1xuICAgICAgZXh0cmFPZmZzZXRYIC09IHBhcnNlSW50KG9mZnNldFtrZXldLCAxMCk7XG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdyaWdodCcpIHtcbiAgICAgIGV4dHJhT2Zmc2V0WCArPSBwYXJzZUludChvZmZzZXRba2V5XSwgMTApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXh0cmFPZmZzZXRYOiBleHRyYU9mZnNldFgsXG4gICAgZXh0cmFPZmZzZXRZOiBleHRyYU9mZnNldFlcbiAgfTtcbn07IC8vIEdldCB0aGUgb2Zmc2V0IG9mIHRoZSBwYXJlbnQgZWxlbWVudHNcblxuXG52YXIgZ2V0UGFyZW50ID0gZnVuY3Rpb24gZ2V0UGFyZW50KGN1cnJlbnRUYXJnZXQpIHtcbiAgdmFyIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50VGFyZ2V0O1xuXG4gIHdoaWxlIChjdXJyZW50UGFyZW50KSB7XG4gICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50UGFyZW50KTsgLy8gdHJhbnNmb3JtIGFuZCB3aWxsLWNoYW5nZTogdHJhbnNmb3JtIGNoYW5nZSB0aGUgY29udGFpbmluZyBibG9ja1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX0Jsb2NrXG5cbiAgICBpZiAoY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCd0cmFuc2Zvcm0nKSAhPT0gJ25vbmUnIHx8IGNvbXB1dGVkU3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnd2lsbC1jaGFuZ2UnKSA9PT0gJ3RyYW5zZm9ybScpIGJyZWFrO1xuICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50UGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cblxuICB2YXIgcGFyZW50VG9wID0gY3VycmVudFBhcmVudCAmJiBjdXJyZW50UGFyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCB8fCAwO1xuICB2YXIgcGFyZW50TGVmdCA9IGN1cnJlbnRQYXJlbnQgJiYgY3VycmVudFBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0IHx8IDA7XG4gIHJldHVybiB7XG4gICAgcGFyZW50VG9wOiBwYXJlbnRUb3AsXG4gICAgcGFyZW50TGVmdDogcGFyZW50TGVmdFxuICB9O1xufTtcblxuLyoqXG4gKiBUbyBnZXQgdGhlIHRvb2x0aXAgY29udGVudFxuICogaXQgbWF5IGNvbWVzIGZyb20gZGF0YS10aXAgb3IgdGhpcy5wcm9wcy5jaGlsZHJlblxuICogaXQgc2hvdWxkIHN1cHBvcnQgbXVsdGlsaW5lXG4gKlxuICogQHBhcmFtc1xuICogLSBgdGlwYCB7U3RyaW5nfSB2YWx1ZSBvZiBkYXRhLXRpcFxuICogLSBgY2hpbGRyZW5gIHtSZWFjdEVsZW1lbnR9IHRoaXMucHJvcHMuY2hpbGRyZW5cbiAqIC0gYG11bHRpbGluZWAge0FueX0gY291bGQgYmUgQm9vbCh0cnVlL2ZhbHNlKSBvciBTdHJpbmcoJ3RydWUnLydmYWxzZScpXG4gKlxuICogQHJldHVyblxuICogLSBTdHJpbmcgb3IgcmVhY3QgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIGdldFRpcENvbnRlbnQgKHRpcCwgY2hpbGRyZW4sIGdldENvbnRlbnQsIG11bHRpbGluZSkge1xuICBpZiAoY2hpbGRyZW4pIHJldHVybiBjaGlsZHJlbjtcbiAgaWYgKGdldENvbnRlbnQgIT09IHVuZGVmaW5lZCAmJiBnZXRDb250ZW50ICE9PSBudWxsKSByZXR1cm4gZ2V0Q29udGVudDsgLy8gZ2V0Q29udGVudCBjYW4gYmUgMCwgJycsIGV0Yy5cblxuICBpZiAoZ2V0Q29udGVudCA9PT0gbnVsbCkgcmV0dXJuIG51bGw7IC8vIFRpcCBub3QgZXhpc3QgYW5kIGNoaWxkcmVuIGlzIG51bGwgb3IgdW5kZWZpbmVkXG5cbiAgdmFyIHJlZ2V4cCA9IC88YnJcXHMqXFwvPz4vO1xuXG4gIGlmICghbXVsdGlsaW5lIHx8IG11bHRpbGluZSA9PT0gJ2ZhbHNlJyB8fCAhcmVnZXhwLnRlc3QodGlwKSkge1xuICAgIC8vIE5vIHRyaW0oKSwgc28gdGhhdCB1c2VyIGNhbiBrZWVwIHRoZWlyIGlucHV0XG4gICAgcmV0dXJuIHRpcDtcbiAgfSAvLyBNdWx0aWxpbmUgdG9vbHRpcCBjb250ZW50XG5cblxuICByZXR1cm4gdGlwLnNwbGl0KHJlZ2V4cCkubWFwKGZ1bmN0aW9uIChkLCBpKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGtleTogaSxcbiAgICAgIGNsYXNzTmFtZTogXCJtdWx0aS1saW5lXCJcbiAgICB9LCBkKTtcbiAgfSk7XG59XG5cbi8qKlxuICogU3VwcG9ydCBhcmlhLSBhbmQgcm9sZSBpbiBSZWFjdFRvb2x0aXBcbiAqXG4gKiBAcGFyYW1zIHByb3BzIHtPYmplY3R9XG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXJpYShwcm9wcykge1xuICB2YXIgYXJpYU9iaiA9IHt9O1xuICBPYmplY3Qua2V5cyhwcm9wcykuZmlsdGVyKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgLy8gYXJpYS14eHggYW5kIHJvbGUgaXMgYWNjZXB0YWJsZVxuICAgIHJldHVybiAvKF5hcmlhLVxcdyskfF5yb2xlJCkvLnRlc3QocHJvcCk7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBhcmlhT2JqW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gIH0pO1xuICByZXR1cm4gYXJpYU9iajtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IG5vZGVsaXN0IHRvIGFycmF5XG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mYmpzL2Jsb2IvZTY2YmEyMGFkNWJlNDMzZWI1NDQyM2YyYjA5N2Q4MjkzMjRkOWRlNi9wYWNrYWdlcy9mYmpzL3NyYy9jb3JlL2NyZWF0ZUFycmF5RnJvbU1peGVkLmpzI0wyNFxuICogTm9kZUxpc3RzIGFyZSBmdW5jdGlvbnMgaW4gU2FmYXJpXG4gKi9cbmZ1bmN0aW9uIG5vZGVMaXN0VG9BcnJheSAobm9kZUxpc3QpIHtcbiAgdmFyIGxlbmd0aCA9IG5vZGVMaXN0Lmxlbmd0aDtcblxuICBpZiAobm9kZUxpc3QuaGFzT3duUHJvcGVydHkpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwobm9kZUxpc3QpO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBBcnJheShsZW5ndGgpLmZpbGwoKS5tYXAoZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgcmV0dXJuIG5vZGVMaXN0W2luZGV4XTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHtcbiAgcmV0dXJuICd0JyArIHY0KCk7XG59XG5cbnZhciBiYXNlQ3NzID0gXCIuX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCB7XFxuICBib3JkZXItcmFkaXVzOiAzcHg7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXNpemU6IDEzcHg7XFxuICBsZWZ0OiAtOTk5ZW07XFxuICBvcGFjaXR5OiAwO1xcbiAgcGFkZGluZzogOHB4IDIxcHg7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlLW91dDtcXG4gIHRvcDogLTk5OWVtO1xcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xcbiAgei1pbmRleDogOTk5O1xcbn1cXG4uX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcC5hbGxvd19ob3ZlciwgLl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAuYWxsb3dfY2xpY2sge1xcbiAgcG9pbnRlci1ldmVudHM6IGF1dG87XFxufVxcbi5fX3JlYWN0X2NvbXBvbmVudF90b29sdGlwOjpiZWZvcmUsIC5fX3JlYWN0X2NvbXBvbmVudF90b29sdGlwOjphZnRlciB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHdpZHRoOiAwO1xcbiAgaGVpZ2h0OiAwO1xcbiAgcG9zaXRpb246IGFic29sdXRlO1xcbn1cXG4uX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcC5zaG93IHtcXG4gIG9wYWNpdHk6IDAuOTtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tbGVmdDogMDtcXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XFxufVxcbi5fX3JlYWN0X2NvbXBvbmVudF90b29sdGlwLnBsYWNlLXRvcDo6YmVmb3JlIHtcXG4gIGJvcmRlci1sZWZ0OiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm9yZGVyLXJpZ2h0OiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgYm90dG9tOiAtOHB4O1xcbiAgbGVmdDogNTAlO1xcbiAgbWFyZ2luLWxlZnQ6IC0xMHB4O1xcbn1cXG4uX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcC5wbGFjZS1ib3R0b206OmJlZm9yZSB7XFxuICBib3JkZXItbGVmdDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1yaWdodDogMTBweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIHRvcDogLThweDtcXG4gIGxlZnQ6IDUwJTtcXG4gIG1hcmdpbi1sZWZ0OiAtMTBweDtcXG59XFxuLl9fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAucGxhY2UtbGVmdDo6YmVmb3JlIHtcXG4gIGJvcmRlci10b3A6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1ib3R0b206IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIHJpZ2h0OiAtOHB4O1xcbiAgdG9wOiA1MCU7XFxuICBtYXJnaW4tdG9wOiAtNXB4O1xcbn1cXG4uX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcC5wbGFjZS1yaWdodDo6YmVmb3JlIHtcXG4gIGJvcmRlci10b3A6IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGJvcmRlci1ib3R0b206IDZweCBzb2xpZCB0cmFuc3BhcmVudDtcXG4gIGxlZnQ6IC04cHg7XFxuICB0b3A6IDUwJTtcXG4gIG1hcmdpbi10b3A6IC01cHg7XFxufVxcbi5fX3JlYWN0X2NvbXBvbmVudF90b29sdGlwIC5tdWx0aS1saW5lIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgcGFkZGluZzogMnB4IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVwiO1xuXG4vKipcbiAqIERlZmF1bHQgcG9wLXVwIHN0eWxlIHZhbHVlcyAodGV4dCBjb2xvciwgYmFja2dyb3VuZCBjb2xvcikuXG4gKi9cbnZhciBkZWZhdWx0Q29sb3JzID0ge1xuICBkYXJrOiB7XG4gICAgdGV4dDogJyNmZmYnLFxuICAgIGJhY2tncm91bmQ6ICcjMjIyJyxcbiAgICBib3JkZXI6ICd0cmFuc3BhcmVudCcsXG4gICAgYXJyb3c6ICcjMjIyJ1xuICB9LFxuICBzdWNjZXNzOiB7XG4gICAgdGV4dDogJyNmZmYnLFxuICAgIGJhY2tncm91bmQ6ICcjOERDNTcyJyxcbiAgICBib3JkZXI6ICd0cmFuc3BhcmVudCcsXG4gICAgYXJyb3c6ICcjOERDNTcyJ1xuICB9LFxuICB3YXJuaW5nOiB7XG4gICAgdGV4dDogJyNmZmYnLFxuICAgIGJhY2tncm91bmQ6ICcjRjBBRDRFJyxcbiAgICBib3JkZXI6ICd0cmFuc3BhcmVudCcsXG4gICAgYXJyb3c6ICcjRjBBRDRFJ1xuICB9LFxuICBlcnJvcjoge1xuICAgIHRleHQ6ICcjZmZmJyxcbiAgICBiYWNrZ3JvdW5kOiAnI0JFNjQ2NCcsXG4gICAgYm9yZGVyOiAndHJhbnNwYXJlbnQnLFxuICAgIGFycm93OiAnI0JFNjQ2NCdcbiAgfSxcbiAgaW5mbzoge1xuICAgIHRleHQ6ICcjZmZmJyxcbiAgICBiYWNrZ3JvdW5kOiAnIzMzN0FCNycsXG4gICAgYm9yZGVyOiAndHJhbnNwYXJlbnQnLFxuICAgIGFycm93OiAnIzMzN0FCNydcbiAgfSxcbiAgbGlnaHQ6IHtcbiAgICB0ZXh0OiAnIzIyMicsXG4gICAgYmFja2dyb3VuZDogJyNmZmYnLFxuICAgIGJvcmRlcjogJ3RyYW5zcGFyZW50JyxcbiAgICBhcnJvdzogJyNmZmYnXG4gIH1cbn07XG5mdW5jdGlvbiBnZXREZWZhdWx0UG9wdXBDb2xvcnModHlwZSkge1xuICByZXR1cm4gZGVmYXVsdENvbG9yc1t0eXBlXSA/IF9vYmplY3RTcHJlYWQyKHt9LCBkZWZhdWx0Q29sb3JzW3R5cGVdKSA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIHNwZWNpZmljIHRvb2x0aXAgc3R5bGUgZm9yIHVzZSBvbiByZW5kZXIuXG4gKi9cblxuZnVuY3Rpb24gZ2VuZXJhdGVUb29sdGlwU3R5bGUodXVpZCwgY3VzdG9tQ29sb3JzLCB0eXBlLCBoYXNCb3JkZXIpIHtcbiAgcmV0dXJuIGdlbmVyYXRlU3R5bGUodXVpZCwgZ2V0UG9wdXBDb2xvcnMoY3VzdG9tQ29sb3JzLCB0eXBlLCBoYXNCb3JkZXIpKTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHRoZSB0b29sdGlwIHN0eWxlIHJ1bGVzIGJhc2VkIG9uIHRoZSBlbGVtZW50LXNwZWNpZmllZCBcImRhdGEtdHlwZVwiIHByb3BlcnR5LlxuICovXG5cbmZ1bmN0aW9uIGdlbmVyYXRlU3R5bGUodXVpZCwgY29sb3JzKSB7XG4gIHZhciB0ZXh0Q29sb3IgPSBjb2xvcnMudGV4dDtcbiAgdmFyIGJhY2tncm91bmRDb2xvciA9IGNvbG9ycy5iYWNrZ3JvdW5kO1xuICB2YXIgYm9yZGVyQ29sb3IgPSBjb2xvcnMuYm9yZGVyO1xuICB2YXIgYXJyb3dDb2xvciA9IGNvbG9ycy5hcnJvdztcbiAgcmV0dXJuIFwiXFxuICBcXHQuXCIuY29uY2F0KHV1aWQsIFwiIHtcXG5cXHQgICAgY29sb3I6IFwiKS5jb25jYXQodGV4dENvbG9yLCBcIjtcXG5cXHQgICAgYmFja2dyb3VuZDogXCIpLmNvbmNhdChiYWNrZ3JvdW5kQ29sb3IsIFwiO1xcblxcdCAgICBib3JkZXI6IDFweCBzb2xpZCBcIikuY29uY2F0KGJvcmRlckNvbG9yLCBcIjtcXG4gIFxcdH1cXG5cXG4gIFxcdC5cIikuY29uY2F0KHV1aWQsIFwiLnBsYWNlLXRvcCB7XFxuICAgICAgICBtYXJnaW4tdG9wOiAtMTBweDtcXG4gICAgfVxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS10b3A6OmJlZm9yZSB7XFxuICAgICAgICBib3JkZXItdG9wOiA4cHggc29saWQgXCIpLmNvbmNhdChib3JkZXJDb2xvciwgXCI7XFxuICAgIH1cXG4gICAgLlwiKS5jb25jYXQodXVpZCwgXCIucGxhY2UtdG9wOjphZnRlciB7XFxuICAgICAgICBib3JkZXItbGVmdDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBib3R0b206IC02cHg7XFxuICAgICAgICBsZWZ0OiA1MCU7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLThweDtcXG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6IFwiKS5jb25jYXQoYXJyb3dDb2xvciwgXCI7XFxuICAgICAgICBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci10b3Atd2lkdGg6IDZweDtcXG4gICAgfVxcblxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1ib3R0b20ge1xcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcXG4gICAgfVxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1ib3R0b206OmJlZm9yZSB7XFxuICAgICAgICBib3JkZXItYm90dG9tOiA4cHggc29saWQgXCIpLmNvbmNhdChib3JkZXJDb2xvciwgXCI7XFxuICAgIH1cXG4gICAgLlwiKS5jb25jYXQodXVpZCwgXCIucGxhY2UtYm90dG9tOjphZnRlciB7XFxuICAgICAgICBib3JkZXItbGVmdDogOHB4IHNvbGlkIHRyYW5zcGFyZW50O1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICB0b3A6IC02cHg7XFxuICAgICAgICBsZWZ0OiA1MCU7XFxuICAgICAgICBtYXJnaW4tbGVmdDogLThweDtcXG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IFwiKS5jb25jYXQoYXJyb3dDb2xvciwgXCI7XFxuICAgICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDZweDtcXG4gICAgfVxcblxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1sZWZ0IHtcXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMTBweDtcXG4gICAgfVxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1sZWZ0OjpiZWZvcmUge1xcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDhweCBzb2xpZCBcIikuY29uY2F0KGJvcmRlckNvbG9yLCBcIjtcXG4gICAgfVxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1sZWZ0OjphZnRlciB7XFxuICAgICAgICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICByaWdodDogLTZweDtcXG4gICAgICAgIHRvcDogNTAlO1xcbiAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcXG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiBcIikuY29uY2F0KGFycm93Q29sb3IsIFwiO1xcbiAgICAgICAgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkO1xcbiAgICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDZweDtcXG4gICAgfVxcblxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1yaWdodCB7XFxuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcXG4gICAgfVxcbiAgICAuXCIpLmNvbmNhdCh1dWlkLCBcIi5wbGFjZS1yaWdodDo6YmVmb3JlIHtcXG4gICAgICAgIGJvcmRlci1yaWdodDogOHB4IHNvbGlkIFwiKS5jb25jYXQoYm9yZGVyQ29sb3IsIFwiO1xcbiAgICB9XFxuICAgIC5cIikuY29uY2F0KHV1aWQsIFwiLnBsYWNlLXJpZ2h0OjphZnRlciB7XFxuICAgICAgICBib3JkZXItdG9wOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBib3JkZXItYm90dG9tOiA1cHggc29saWQgdHJhbnNwYXJlbnQ7XFxuICAgICAgICBsZWZ0OiAtNnB4O1xcbiAgICAgICAgdG9wOiA1MCU7XFxuICAgICAgICBtYXJnaW4tdG9wOiAtNHB4O1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBcIikuY29uY2F0KGFycm93Q29sb3IsIFwiO1xcbiAgICAgICAgYm9yZGVyLXJpZ2h0LXN0eWxlOiBzb2xpZDtcXG4gICAgICAgIGJvcmRlci1yaWdodC13aWR0aDogNnB4O1xcbiAgICB9XFxuICBcIik7XG59XG5cbmZ1bmN0aW9uIGdldFBvcHVwQ29sb3JzKGN1c3RvbUNvbG9ycywgdHlwZSwgaGFzQm9yZGVyKSB7XG4gIHZhciB0ZXh0Q29sb3IgPSBjdXN0b21Db2xvcnMudGV4dDtcbiAgdmFyIGJhY2tncm91bmRDb2xvciA9IGN1c3RvbUNvbG9ycy5iYWNrZ3JvdW5kO1xuICB2YXIgYm9yZGVyQ29sb3IgPSBjdXN0b21Db2xvcnMuYm9yZGVyO1xuICB2YXIgYXJyb3dDb2xvciA9IGN1c3RvbUNvbG9ycy5hcnJvdyA/IGN1c3RvbUNvbG9ycy5hcnJvdyA6IGN1c3RvbUNvbG9ycy5iYWNrZ3JvdW5kO1xuICB2YXIgY29sb3JzID0gZ2V0RGVmYXVsdFBvcHVwQ29sb3JzKHR5cGUpO1xuXG4gIGlmICh0ZXh0Q29sb3IpIHtcbiAgICBjb2xvcnMudGV4dCA9IHRleHRDb2xvcjtcbiAgfVxuXG4gIGlmIChiYWNrZ3JvdW5kQ29sb3IpIHtcbiAgICBjb2xvcnMuYmFja2dyb3VuZCA9IGJhY2tncm91bmRDb2xvcjtcbiAgfVxuXG4gIGlmIChoYXNCb3JkZXIpIHtcbiAgICBpZiAoYm9yZGVyQ29sb3IpIHtcbiAgICAgIGNvbG9ycy5ib3JkZXIgPSBib3JkZXJDb2xvcjtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sb3JzLmJvcmRlciA9IHR5cGUgPT09ICdsaWdodCcgPyAnYmxhY2snIDogJ3doaXRlJztcbiAgICB9XG4gIH1cblxuICBpZiAoYXJyb3dDb2xvcikge1xuICAgIGNvbG9ycy5hcnJvdyA9IGFycm93Q29sb3I7XG4gIH1cblxuICByZXR1cm4gY29sb3JzO1xufVxuXG52YXIgY29tbW9uanNHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB7fTtcblxuZnVuY3Rpb24gY3JlYXRlQ29tbW9uanNNb2R1bGUoZm4sIG1vZHVsZSkge1xuXHRyZXR1cm4gbW9kdWxlID0geyBleHBvcnRzOiB7fSB9LCBmbihtb2R1bGUsIG1vZHVsZS5leHBvcnRzKSwgbW9kdWxlLmV4cG9ydHM7XG59XG5cbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbnZhciBnbG9iYWxfMSA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1nbG9iYWwtdGhpcyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09ICdvYmplY3QnICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgd2luZG93KSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1nbG9iYWxzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGNvbW1vbmpzR2xvYmFsID09ICdvYmplY3QnICYmIGNvbW1vbmpzR2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxudmFyIGZhaWxzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8vIERldGVjdCBJRTgncyBpbmNvbXBsZXRlIGRlZmluZVByb3BlcnR5IGltcGxlbWVudGF0aW9uXG52YXIgZGVzY3JpcHRvcnMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIDEsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pWzFdICE9IDc7XG59KTtcblxudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxudmFyIGYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6ICRwcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxudmFyIG9iamVjdFByb3BlcnR5SXNFbnVtZXJhYmxlID0ge1xuXHRmOiBmXG59O1xuXG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG5cbnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG52YXIgY2xhc3NvZlJhdyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcblxudmFyIHNwbGl0ID0gJycuc3BsaXQ7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgaW5kZXhlZE9iamVjdCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zIC0tIHNhZmVcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mUmF3KGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuXG4vLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuXG4vLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xuXG5cblxudmFyIHRvSW5kZXhlZE9iamVjdCA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuXG52YXIgaXNPYmplY3QgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbnZhciB0b1ByaW1pdGl2ZSA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG52YXIgdG9PYmplY3QgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuXG52YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGhhcyA9IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKHRvT2JqZWN0KGl0KSwga2V5KTtcbn07XG5cbnZhciBkb2N1bWVudCQxID0gZ2xvYmFsXzEuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCQxKSAmJiBpc09iamVjdChkb2N1bWVudCQxLmNyZWF0ZUVsZW1lbnQpO1xuXG52YXIgZG9jdW1lbnRDcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudCQxLmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG52YXIgaWU4RG9tRGVmaW5lID0gIWRlc2NyaXB0b3JzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gcmVxdWllZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbnZhciBmJDEgPSBkZXNjcmlwdG9ycyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChpZThEb21EZWZpbmUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighb2JqZWN0UHJvcGVydHlJc0VudW1lcmFibGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG5cbnZhciBvYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSB7XG5cdGY6IGYkMVxufTtcblxudmFyIGFuT2JqZWN0ID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbnZhciBmJDIgPSBkZXNjcmlwdG9ycyA/ICRkZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChpZThEb21EZWZpbmUpIHRyeSB7XG4gICAgcmV0dXJuICRkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG5cbnZhciBvYmplY3REZWZpbmVQcm9wZXJ0eSA9IHtcblx0ZjogZiQyXG59O1xuXG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gZGVzY3JpcHRvcnMgPyBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHJldHVybiBvYmplY3REZWZpbmVQcm9wZXJ0eS5mKG9iamVjdCwga2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG52YXIgc2V0R2xvYmFsID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgdHJ5IHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoZ2xvYmFsXzEsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbF8xW2tleV0gPSB2YWx1ZTtcbiAgfSByZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxfMVtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxudmFyIHNoYXJlZFN0b3JlID0gc3RvcmU7XG5cbnZhciBmdW5jdGlvblRvU3RyaW5nID0gRnVuY3Rpb24udG9TdHJpbmc7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgMy40LjEtMy40LjRgLCBzbyB3ZSBjYW4ndCB1c2UgYHNoYXJlZGAgaGVscGVyXG5pZiAodHlwZW9mIHNoYXJlZFN0b3JlLmluc3BlY3RTb3VyY2UgIT0gJ2Z1bmN0aW9uJykge1xuICBzaGFyZWRTdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcuY2FsbChpdCk7XG4gIH07XG59XG5cbnZhciBpbnNwZWN0U291cmNlID0gc2hhcmVkU3RvcmUuaW5zcGVjdFNvdXJjZTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWxfMS5XZWFrTWFwO1xuXG52YXIgbmF0aXZlV2Vha01hcCA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcblxudmFyIHNoYXJlZCA9IGNyZWF0ZUNvbW1vbmpzTW9kdWxlKGZ1bmN0aW9uIChtb2R1bGUpIHtcbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzaGFyZWRTdG9yZVtrZXldIHx8IChzaGFyZWRTdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4xMi4xJyxcbiAgbW9kZTogICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDIxIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG59KTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcblxudmFyIHVpZCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbnZhciBzaGFyZWRLZXkgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cbnZhciBoaWRkZW5LZXlzID0ge307XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgV2Vha01hcCQxID0gZ2xvYmFsXzEuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzJDE7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMkMShpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAobmF0aXZlV2Vha01hcCB8fCBzaGFyZWRTdG9yZS5zdGF0ZSkge1xuICB2YXIgc3RvcmUkMSA9IHNoYXJlZFN0b3JlLnN0YXRlIHx8IChzaGFyZWRTdG9yZS5zdGF0ZSA9IG5ldyBXZWFrTWFwJDEoKSk7XG4gIHZhciB3bWdldCA9IHN0b3JlJDEuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZSQxLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUkMS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAod21oYXMuY2FsbChzdG9yZSQxLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0LmNhbGwoc3RvcmUkMSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlJDEsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzJDEgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSQxLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChoYXMoaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyQxID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGhhcyhpdCwgU1RBVEUpO1xuICB9O1xufVxuXG52YXIgaW50ZXJuYWxTdGF0ZSA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyQxLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcblxudmFyIHJlZGVmaW5lID0gY3JlYXRlQ29tbW9uanNNb2R1bGUoZnVuY3Rpb24gKG1vZHVsZSkge1xudmFyIGdldEludGVybmFsU3RhdGUgPSBpbnRlcm5hbFN0YXRlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IGludGVybmFsU3RhdGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHVuc2FmZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMudW5zYWZlIDogZmFsc2U7XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgdmFyIG5vVGFyZ2V0R2V0ID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5ub1RhcmdldEdldCA6IGZhbHNlO1xuICB2YXIgc3RhdGU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnICYmICFoYXModmFsdWUsICduYW1lJykpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIH1cbiAgICBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgICBpZiAoIXN0YXRlLnNvdXJjZSkge1xuICAgICAgc3RhdGUuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICAgIH1cbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsXzEpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBpbnNwZWN0U291cmNlKHRoaXMpO1xufSk7XG59KTtcblxudmFyIHBhdGggPSBnbG9iYWxfMTtcblxudmFyIGFGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YXJpYWJsZSkge1xuICByZXR1cm4gdHlwZW9mIHZhcmlhYmxlID09ICdmdW5jdGlvbicgPyB2YXJpYWJsZSA6IHVuZGVmaW5lZDtcbn07XG5cbnZhciBnZXRCdWlsdEluID0gZnVuY3Rpb24gKG5hbWVzcGFjZSwgbWV0aG9kKSB7XG4gIHJldHVybiBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IGFGdW5jdGlvbihwYXRoW25hbWVzcGFjZV0pIHx8IGFGdW5jdGlvbihnbG9iYWxfMVtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbF8xW25hbWVzcGFjZV0gJiYgZ2xvYmFsXzFbbmFtZXNwYWNlXVttZXRob2RdO1xufTtcblxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG52YXIgdG9JbnRlZ2VyID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc05hTihhcmd1bWVudCA9ICthcmd1bWVudCkgPyAwIDogKGFyZ3VtZW50ID4gMCA/IGZsb29yIDogY2VpbCkoYXJndW1lbnQpO1xufTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxudmFyIHRvTGVuZ3RoID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyKGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluJDEgPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxudmFyIHRvQWJzb2x1dGVJbmRleCA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluJDEoaW50ZWdlciwgbGVuZ3RoKTtcbn07XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbnZhciBhcnJheUluY2x1ZGVzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuXG52YXIgaW5kZXhPZiA9IGFycmF5SW5jbHVkZXMuaW5kZXhPZjtcblxuXG52YXIgb2JqZWN0S2V5c0ludGVybmFsID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXMoaGlkZGVuS2V5cywga2V5KSAmJiBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xudmFyIGVudW1CdWdLZXlzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcblxudmFyIGhpZGRlbktleXMkMSA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHluYW1lc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eW5hbWVzIC0tIHNhZmVcbnZhciBmJDMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIG9iamVjdEtleXNJbnRlcm5hbChPLCBoaWRkZW5LZXlzJDEpO1xufTtcblxudmFyIG9iamVjdEdldE93blByb3BlcnR5TmFtZXMgPSB7XG5cdGY6IGYkM1xufTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxudmFyIGYkNCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbnZhciBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSB7XG5cdGY6IGYkNFxufTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xudmFyIG93bktleXMkMSA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scy5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcblxudmFyIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzJDEoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gb2JqZWN0RGVmaW5lUHJvcGVydHkuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IG9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvci5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxudmFyIGlzRm9yY2VkXzEgPSBpc0ZvcmNlZDtcblxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciQxID0gb2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmY7XG5cblxuXG5cblxuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbnZhciBfZXhwb3J0ID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbF8xO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbF8xW1RBUkdFVF0gfHwgc2V0R2xvYmFsKFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IChnbG9iYWxfMVtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciQxKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkXzEoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuXG52YXIgYUZ1bmN0aW9uJDEgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgZnVuY3Rpb25CaW5kQ29udGV4dCA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbiQxKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1pc2FycmF5IC0tIHNhZmVcbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY2xhc3NvZlJhdyhhcmcpID09ICdBcnJheSc7XG59O1xuXG52YXIgZW5naW5lVXNlckFnZW50ID0gZ2V0QnVpbHRJbignbmF2aWdhdG9yJywgJ3VzZXJBZ2VudCcpIHx8ICcnO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbF8xLnByb2Nlc3M7XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnM7XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgdmVyc2lvbiA9IG1hdGNoWzBdIDwgNCA/IDEgOiBtYXRjaFswXSArIG1hdGNoWzFdO1xufSBlbHNlIGlmIChlbmdpbmVVc2VyQWdlbnQpIHtcbiAgbWF0Y2ggPSBlbmdpbmVVc2VyQWdlbnQubWF0Y2goL0VkZ2VcXC8oXFxkKykvKTtcbiAgaWYgKCFtYXRjaCB8fCBtYXRjaFsxXSA+PSA3NCkge1xuICAgIG1hdGNoID0gZW5naW5lVXNlckFnZW50Lm1hdGNoKC9DaHJvbWVcXC8oXFxkKykvKTtcbiAgICBpZiAobWF0Y2gpIHZlcnNpb24gPSBtYXRjaFsxXTtcbiAgfVxufVxuXG52YXIgZW5naW5lVjhWZXJzaW9uID0gdmVyc2lvbiAmJiArdmVyc2lvbjtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG5cblxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5c3ltYm9scyAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xudmFyIG5hdGl2ZVN5bWJvbCA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gIVN0cmluZyhTeW1ib2woKSkgfHxcbiAgICAvLyBDaHJvbWUgMzggU3ltYm9sIGhhcyBpbmNvcnJlY3QgdG9TdHJpbmcgY29udmVyc2lvblxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIGVuZ2luZVY4VmVyc2lvbiAmJiBlbmdpbmVWOFZlcnNpb24gPCA0MTtcbn0pO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cblxuXG52YXIgdXNlU3ltYm9sQXNVaWQgPSBuYXRpdmVTeW1ib2xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG5cbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIFN5bWJvbCQxID0gZ2xvYmFsXzEuU3ltYm9sO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IHVzZVN5bWJvbEFzVWlkID8gU3ltYm9sJDEgOiBTeW1ib2wkMSAmJiBTeW1ib2wkMS53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkgfHwgIShuYXRpdmVTeW1ib2wgfHwgdHlwZW9mIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9PSAnc3RyaW5nJykpIHtcbiAgICBpZiAobmF0aXZlU3ltYm9sICYmIGhhcyhTeW1ib2wkMSwgbmFtZSkpIHtcbiAgICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IFN5bWJvbCQxW25hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woJ1N5bWJvbC4nICsgbmFtZSk7XG4gICAgfVxuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG52YXIgYXJyYXlTcGVjaWVzQ3JlYXRlID0gZnVuY3Rpb24gKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuICB2YXIgQztcbiAgaWYgKGlzQXJyYXkob3JpZ2luYWxBcnJheSkpIHtcbiAgICBDID0gb3JpZ2luYWxBcnJheS5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmICh0eXBlb2YgQyA9PSAnZnVuY3Rpb24nICYmIChDID09PSBBcnJheSB8fCBpc0FycmF5KEMucHJvdG90eXBlKSkpIEMgPSB1bmRlZmluZWQ7XG4gICAgZWxzZSBpZiAoaXNPYmplY3QoQykpIHtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYgKEMgPT09IG51bGwpIEMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9IHJldHVybiBuZXcgKEMgPT09IHVuZGVmaW5lZCA/IEFycmF5IDogQykobGVuZ3RoID09PSAwID8gMCA6IGxlbmd0aCk7XG59O1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyT3V0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QkMSA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgSVNfRklMVEVSX09VVCA9IFRZUEUgPT0gNztcbiAgdmFyIE5PX0hPTEVTID0gVFlQRSA9PSA1IHx8IElTX0ZJTkRfSU5ERVg7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGNhbGxiYWNrZm4sIHRoYXQsIHNwZWNpZmljQ3JlYXRlKSB7XG4gICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7XG4gICAgdmFyIHNlbGYgPSBpbmRleGVkT2JqZWN0KE8pO1xuICAgIHZhciBib3VuZEZ1bmN0aW9uID0gZnVuY3Rpb25CaW5kQ29udGV4dChjYWxsYmFja2ZuLCB0aGF0LCAzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoc2VsZi5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGNyZWF0ZSA9IHNwZWNpZmljQ3JlYXRlIHx8IGFycmF5U3BlY2llc0NyZWF0ZTtcbiAgICB2YXIgdGFyZ2V0ID0gSVNfTUFQID8gY3JlYXRlKCR0aGlzLCBsZW5ndGgpIDogSVNfRklMVEVSIHx8IElTX0ZJTFRFUl9PVVQgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlclxuICAgICAgICB9IGVsc2Ugc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSA0OiByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgIC8vIGV2ZXJ5XG4gICAgICAgICAgY2FzZSA3OiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlck91dFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG52YXIgYXJyYXlJdGVyYXRpb24gPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kJDEoMCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUubWFwYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kJDEoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gIGZpbHRlcjogY3JlYXRlTWV0aG9kJDEoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kJDEoMyksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZXZlcnlgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kJDEoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiAgZmluZDogY3JlYXRlTWV0aG9kJDEoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kJDEoNiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyT3V0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtYXJyYXktZmlsdGVyaW5nXG4gIGZpbHRlck91dDogY3JlYXRlTWV0aG9kJDEoNylcbn07XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWtleXMgLS0gc2FmZVxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIG9iamVjdEtleXNJbnRlcm5hbChPLCBlbnVtQnVnS2V5cyk7XG59O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydGllc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0aWVzIC0tIHNhZmVcbnZhciBvYmplY3REZWZpbmVQcm9wZXJ0aWVzID0gZGVzY3JpcHRvcnMgPyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykge1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFByb3BlcnRpZXMpO1xuICB2YXIgbGVuZ3RoID0ga2V5cy5sZW5ndGg7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpbmRleCkgb2JqZWN0RGVmaW5lUHJvcGVydHkuZihPLCBrZXkgPSBrZXlzW2luZGV4KytdLCBQcm9wZXJ0aWVzW2tleV0pO1xuICByZXR1cm4gTztcbn07XG5cbnZhciBodG1sID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgLS0gb2xkIElFICovXG4gICAgYWN0aXZlWERvY3VtZW50ID0gZG9jdW1lbnQuZG9tYWluICYmIG5ldyBBY3RpdmVYT2JqZWN0KCdodG1sZmlsZScpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBpZ25vcmUgKi8gfVxuICBOdWxsUHJvdG9PYmplY3QgPSBhY3RpdmVYRG9jdW1lbnQgPyBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYKGFjdGl2ZVhEb2N1bWVudCkgOiBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUoKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgTnVsbFByb3RvT2JqZWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBOdWxsUHJvdG9PYmplY3QoKTtcbn07XG5cbmhpZGRlbktleXNbSUVfUFJPVE9dID0gdHJ1ZTtcblxuLy8gYE9iamVjdC5jcmVhdGVgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IG9iamVjdERlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5pZiAoQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkge1xuICBvYmplY3REZWZpbmVQcm9wZXJ0eS5mKEFycmF5UHJvdG90eXBlLCBVTlNDT1BBQkxFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogb2JqZWN0Q3JlYXRlKG51bGwpXG4gIH0pO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcblxudmFyICRmaW5kID0gYXJyYXlJdGVyYXRpb24uZmluZDtcblxuXG52YXIgRklORCA9ICdmaW5kJztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbi8vIFNob3VsZG4ndCBza2lwIGhvbGVzXG5pZiAoRklORCBpbiBbXSkgQXJyYXkoMSlbRklORF0oZnVuY3Rpb24gKCkgeyBTS0lQU19IT0xFUyA9IGZhbHNlOyB9KTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbl9leHBvcnQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKEZJTkQpO1xuXG52YXIgX2NsYXNzLCBfY2xhc3MyLCBfdGVtcDtcblxudmFyIFJlYWN0VG9vbHRpcCA9IHN0YXRpY01ldGhvZHMoX2NsYXNzID0gd2luZG93TGlzdGVuZXIoX2NsYXNzID0gY3VzdG9tRXZlbnQoX2NsYXNzID0gaXNDYXB0dXJlKF9jbGFzcyA9IGdldEVmZmVjdChfY2xhc3MgPSBib2R5TW9kZShfY2xhc3MgPSB0cmFja1JlbW92YWwoX2NsYXNzID0gKF90ZW1wID0gX2NsYXNzMiA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUmVhY3RUb29sdGlwLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBfY3JlYXRlQ2xhc3MoUmVhY3RUb29sdGlwLCBudWxsLCBbe1xuICAgIGtleTogXCJwcm9wVHlwZXNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHV1aWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuYW55LFxuICAgICAgICBwbGFjZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgZWZmZWN0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBvZmZzZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICAgIG11bHRpbGluZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIGJvcmRlcjogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIHRleHRDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBib3JkZXJDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgYXJyb3dDb2xvcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgaW5zZWN1cmU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBcImNsYXNzXCI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGh0bWw6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICBkZWxheUhpZGU6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIGRlbGF5VXBkYXRlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgICBkZWxheVNob3c6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICAgIGV2ZW50OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBldmVudE9mZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgaXNDYXB0dXJlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgZ2xvYmFsRXZlbnRPZmY6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGdldENvbnRlbnQ6IFByb3BUeXBlcy5hbnksXG4gICAgICAgIGFmdGVyU2hvdzogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIGFmdGVySGlkZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICAgIG92ZXJyaWRlUG9zaXRpb246IFByb3BUeXBlcy5mdW5jLFxuICAgICAgICBkaXNhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgICAgICAgc2Nyb2xsSGlkZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIHJlc2l6ZUhpZGU6IFByb3BUeXBlcy5ib29sLFxuICAgICAgICB3cmFwcGVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBib2R5TW9kZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICAgIHBvc3NpYmxlQ3VzdG9tRXZlbnRzOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBwb3NzaWJsZUN1c3RvbUV2ZW50c09mZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgICAgY2xpY2thYmxlOiBQcm9wVHlwZXMuYm9vbFxuICAgICAgfTtcbiAgICB9XG4gIH1dKTtcblxuICBmdW5jdGlvbiBSZWFjdFRvb2x0aXAocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RUb29sdGlwKTtcblxuICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKFJlYWN0VG9vbHRpcCkuY2FsbCh0aGlzLCBwcm9wcykpO1xuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgdXVpZDogcHJvcHMudXVpZCB8fCBnZW5lcmF0ZVVVSUQoKSxcbiAgICAgIHBsYWNlOiBwcm9wcy5wbGFjZSB8fCAndG9wJyxcbiAgICAgIC8vIERpcmVjdGlvbiBvZiB0b29sdGlwXG4gICAgICBkZXNpcmVkUGxhY2U6IHByb3BzLnBsYWNlIHx8ICd0b3AnLFxuICAgICAgdHlwZTogJ2RhcmsnLFxuICAgICAgLy8gQ29sb3IgdGhlbWUgb2YgdG9vbHRpcFxuICAgICAgZWZmZWN0OiAnZmxvYXQnLFxuICAgICAgLy8gZmxvYXQgb3IgZml4ZWRcbiAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgYm9yZGVyOiBmYWxzZSxcbiAgICAgIGN1c3RvbUNvbG9yczoge30sXG4gICAgICBvZmZzZXQ6IHt9LFxuICAgICAgZXh0cmFDbGFzczogJycsXG4gICAgICBodG1sOiBmYWxzZSxcbiAgICAgIGRlbGF5SGlkZTogMCxcbiAgICAgIGRlbGF5U2hvdzogMCxcbiAgICAgIGV2ZW50OiBwcm9wcy5ldmVudCB8fCBudWxsLFxuICAgICAgZXZlbnRPZmY6IHByb3BzLmV2ZW50T2ZmIHx8IG51bGwsXG4gICAgICBjdXJyZW50RXZlbnQ6IG51bGwsXG4gICAgICAvLyBDdXJyZW50IG1vdXNlIGV2ZW50XG4gICAgICBjdXJyZW50VGFyZ2V0OiBudWxsLFxuICAgICAgLy8gQ3VycmVudCB0YXJnZXQgb2YgbW91c2UgZXZlbnRcbiAgICAgIGFyaWFQcm9wczogcGFyc2VBcmlhKHByb3BzKSxcbiAgICAgIC8vIGFyaWEtIGFuZCByb2xlIGF0dHJpYnV0ZXNcbiAgICAgIGlzRW1wdHlUaXA6IGZhbHNlLFxuICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICBwb3NzaWJsZUN1c3RvbUV2ZW50czogcHJvcHMucG9zc2libGVDdXN0b21FdmVudHMgfHwgJycsXG4gICAgICBwb3NzaWJsZUN1c3RvbUV2ZW50c09mZjogcHJvcHMucG9zc2libGVDdXN0b21FdmVudHNPZmYgfHwgJycsXG4gICAgICBvcmlnaW5Ub29sdGlwOiBudWxsLFxuICAgICAgaXNNdWx0aWxpbmU6IGZhbHNlXG4gICAgfTtcblxuICAgIF90aGlzLmJpbmQoWydzaG93VG9vbHRpcCcsICd1cGRhdGVUb29sdGlwJywgJ2hpZGVUb29sdGlwJywgJ2hpZGVUb29sdGlwT25TY3JvbGwnLCAnZ2V0VG9vbHRpcENvbnRlbnQnLCAnZ2xvYmFsUmVidWlsZCcsICdnbG9iYWxTaG93JywgJ2dsb2JhbEhpZGUnLCAnb25XaW5kb3dSZXNpemUnLCAnbW91c2VPblRvb2xUaXAnXSk7XG5cbiAgICBfdGhpcy5tb3VudCA9IHRydWU7XG4gICAgX3RoaXMuZGVsYXlTaG93TG9vcCA9IG51bGw7XG4gICAgX3RoaXMuZGVsYXlIaWRlTG9vcCA9IG51bGw7XG4gICAgX3RoaXMuZGVsYXlSZXNob3cgPSBudWxsO1xuICAgIF90aGlzLmludGVydmFsVXBkYXRlQ29udGVudCA9IG51bGw7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG4gIC8qKlxuICAgKiBGb3IgdW5pZnkgdGhlIGJpbmQgYW5kIHVuYmluZCBsaXN0ZW5lclxuICAgKi9cblxuXG4gIF9jcmVhdGVDbGFzcyhSZWFjdFRvb2x0aXAsIFt7XG4gICAga2V5OiBcImJpbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYmluZChtZXRob2RBcnJheSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIG1ldGhvZEFycmF5LmZvckVhY2goZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICBfdGhpczJbbWV0aG9kXSA9IF90aGlzMlttZXRob2RdLmJpbmQoX3RoaXMyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgaW5zZWN1cmUgPSBfdGhpcyRwcm9wcy5pbnNlY3VyZSxcbiAgICAgICAgICByZXNpemVIaWRlID0gX3RoaXMkcHJvcHMucmVzaXplSGlkZTtcbiAgICAgIHRoaXMuYmluZExpc3RlbmVyKCk7IC8vIEJpbmQgbGlzdGVuZXIgZm9yIHRvb2x0aXBcblxuICAgICAgdGhpcy5iaW5kV2luZG93RXZlbnRzKHJlc2l6ZUhpZGUpOyAvLyBCaW5kIGdsb2JhbCBldmVudCBmb3Igc3RhdGljIG1ldGhvZFxuXG4gICAgICB0aGlzLmluamVjdFN0eWxlcygpOyAvLyBJbmplY3Qgc3R5bGVzIGZvciBlYWNoIERPTSByb290IGhhdmluZyB0b29sdGlwLlxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMubW91bnQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY2xlYXJUaW1lcigpO1xuICAgICAgdGhpcy51bmJpbmRMaXN0ZW5lcigpO1xuICAgICAgdGhpcy5yZW1vdmVTY3JvbGxMaXN0ZW5lcih0aGlzLnN0YXRlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgdGhpcy51bmJpbmRXaW5kb3dFdmVudHMoKTtcbiAgICB9XG4gICAgLyogTG9vayBmb3IgdGhlIGNsb3Nlc3QgRE9NIHJvb3QgaGF2aW5nIHRvb2x0aXAgYW5kIGluamVjdCBzdHlsZXMuICovXG5cbiAgfSwge1xuICAgIGtleTogXCJpbmplY3RTdHlsZXNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaW5qZWN0U3R5bGVzKCkge1xuICAgICAgdmFyIHRvb2x0aXBSZWYgPSB0aGlzLnRvb2x0aXBSZWY7XG5cbiAgICAgIGlmICghdG9vbHRpcFJlZikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBwYXJlbnROb2RlID0gdG9vbHRpcFJlZi5wYXJlbnROb2RlO1xuXG4gICAgICB3aGlsZSAocGFyZW50Tm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgICB9XG5cbiAgICAgIHZhciBkb21Sb290O1xuXG4gICAgICBzd2l0Y2ggKHBhcmVudE5vZGUuY29uc3RydWN0b3IubmFtZSkge1xuICAgICAgICBjYXNlICdEb2N1bWVudCc6XG4gICAgICAgIGNhc2UgJ0hUTUxEb2N1bWVudCc6XG4gICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgIGRvbVJvb3QgPSBwYXJlbnROb2RlLmhlYWQ7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnU2hhZG93Um9vdCc6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgZG9tUm9vdCA9IHBhcmVudE5vZGU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9IC8vIFByZXZlbnQgc3R5bGVzIGR1cGxpY2F0aW9uLlxuXG5cbiAgICAgIGlmICghZG9tUm9vdC5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLXJlYWN0LXRvb2x0aXBdJykpIHtcbiAgICAgICAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSBiYXNlQ3NzO1xuICAgICAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmVhY3QtdG9vbHRpcCcsICd0cnVlJyk7XG4gICAgICAgIGRvbVJvb3QuYXBwZW5kQ2hpbGQoc3R5bGUpO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gaWYgdGhlIG1vdXNlIGlzIG9uIHRoZSB0b29sdGlwLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIC0gbW91c2UgaXMgb24gdGhlIHRvb2x0aXBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcIm1vdXNlT25Ub29sVGlwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG1vdXNlT25Ub29sVGlwKCkge1xuICAgICAgdmFyIHNob3cgPSB0aGlzLnN0YXRlLnNob3c7XG5cbiAgICAgIGlmIChzaG93ICYmIHRoaXMudG9vbHRpcFJlZikge1xuICAgICAgICAvKiBvbGQgSUUgb3IgRmlyZWZveCB3b3JrIGFyb3VuZCAqL1xuICAgICAgICBpZiAoIXRoaXMudG9vbHRpcFJlZi5tYXRjaGVzKSB7XG4gICAgICAgICAgLyogb2xkIElFIHdvcmsgYXJvdW5kICovXG4gICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFJlZi5tc01hdGNoZXNTZWxlY3Rvcikge1xuICAgICAgICAgICAgdGhpcy50b29sdGlwUmVmLm1hdGNoZXMgPSB0aGlzLnRvb2x0aXBSZWYubXNNYXRjaGVzU2VsZWN0b3I7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIG9sZCBGaXJlZm94IHdvcmsgYXJvdW5kICovXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBSZWYubWF0Y2hlcyA9IHRoaXMudG9vbHRpcFJlZi5tb3pNYXRjaGVzU2VsZWN0b3I7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcFJlZi5tYXRjaGVzKCc6aG92ZXInKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBQaWNrIG91dCBjb3JyZXNwb25kZWQgdGFyZ2V0IGVsZW1lbnRzXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJnZXRUYXJnZXRBcnJheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUYXJnZXRBcnJheShpZCkge1xuICAgICAgdmFyIHRhcmdldEFycmF5ID0gW107XG4gICAgICB2YXIgc2VsZWN0b3I7XG5cbiAgICAgIGlmICghaWQpIHtcbiAgICAgICAgc2VsZWN0b3IgPSAnW2RhdGEtdGlwXTpub3QoW2RhdGEtZm9yXSknO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVzY2FwZWQgPSBpZC5yZXBsYWNlKC9cXFxcL2csICdcXFxcXFxcXCcpLnJlcGxhY2UoL1wiL2csICdcXFxcXCInKTtcbiAgICAgICAgc2VsZWN0b3IgPSBcIltkYXRhLXRpcF1bZGF0YS1mb3I9XFxcIlwiLmNvbmNhdChlc2NhcGVkLCBcIlxcXCJdXCIpO1xuICAgICAgfSAvLyBTY2FuIGRvY3VtZW50IGZvciBzaGFkb3cgRE9NIGVsZW1lbnRzXG5cblxuICAgICAgbm9kZUxpc3RUb0FycmF5KGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCcqJykpLmZpbHRlcihmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5zaGFkb3dSb290O1xuICAgICAgfSkuZm9yRWFjaChmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgICAgICB0YXJnZXRBcnJheSA9IHRhcmdldEFycmF5LmNvbmNhdChub2RlTGlzdFRvQXJyYXkoZWxlbWVudC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0YXJnZXRBcnJheS5jb25jYXQobm9kZUxpc3RUb0FycmF5KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEJpbmQgbGlzdGVuZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50c1xuICAgICAqIFRoZXNlIGxpc3RlbmVycyB1c2VkIHRvIHRyaWdnZXIgc2hvd2luZyBvciBoaWRpbmcgdGhlIHRvb2x0aXBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImJpbmRMaXN0ZW5lclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBiaW5kTGlzdGVuZXIoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgaWQgPSBfdGhpcyRwcm9wczIuaWQsXG4gICAgICAgICAgZ2xvYmFsRXZlbnRPZmYgPSBfdGhpcyRwcm9wczIuZ2xvYmFsRXZlbnRPZmYsXG4gICAgICAgICAgaXNDYXB0dXJlID0gX3RoaXMkcHJvcHMyLmlzQ2FwdHVyZTtcbiAgICAgIHZhciB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0VGFyZ2V0QXJyYXkoaWQpO1xuICAgICAgdGFyZ2V0QXJyYXkuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdjdXJyZW50SXRlbScpID09PSBudWxsKSB7XG4gICAgICAgICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnY3VycmVudEl0ZW0nLCAnZmFsc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzMy51bmJpbmRCYXNpY0xpc3RlbmVyKHRhcmdldCk7XG5cbiAgICAgICAgaWYgKF90aGlzMy5pc0N1c3RvbUV2ZW50KHRhcmdldCkpIHtcbiAgICAgICAgICBfdGhpczMuY3VzdG9tVW5iaW5kTGlzdGVuZXIodGFyZ2V0KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLmlzQm9keU1vZGUoKSkge1xuICAgICAgICB0aGlzLmJpbmRCb2R5TGlzdGVuZXIodGFyZ2V0QXJyYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFyZ2V0QXJyYXkuZm9yRWFjaChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgICAgdmFyIGlzQ2FwdHVyZU1vZGUgPSBfdGhpczMuaXNDYXB0dXJlKHRhcmdldCk7XG5cbiAgICAgICAgICB2YXIgZWZmZWN0ID0gX3RoaXMzLmdldEVmZmVjdCh0YXJnZXQpO1xuXG4gICAgICAgICAgaWYgKF90aGlzMy5pc0N1c3RvbUV2ZW50KHRhcmdldCkpIHtcbiAgICAgICAgICAgIF90aGlzMy5jdXN0b21CaW5kTGlzdGVuZXIodGFyZ2V0KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgX3RoaXMzLnNob3dUb29sdGlwLCBpc0NhcHR1cmVNb2RlKTtcbiAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBfdGhpczMuc2hvd1Rvb2x0aXAsIGlzQ2FwdHVyZU1vZGUpO1xuXG4gICAgICAgICAgaWYgKGVmZmVjdCA9PT0gJ2Zsb2F0Jykge1xuICAgICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIF90aGlzMy51cGRhdGVUb29sdGlwLCBpc0NhcHR1cmVNb2RlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIF90aGlzMy5oaWRlVG9vbHRpcCwgaXNDYXB0dXJlTW9kZSk7XG4gICAgICAgICAgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBfdGhpczMuaGlkZVRvb2x0aXAsIGlzQ2FwdHVyZU1vZGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8gR2xvYmFsIGV2ZW50IHRvIGhpZGUgdG9vbHRpcFxuXG5cbiAgICAgIGlmIChnbG9iYWxFdmVudE9mZikge1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihnbG9iYWxFdmVudE9mZiwgdGhpcy5oaWRlVG9vbHRpcCk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKGdsb2JhbEV2ZW50T2ZmLCB0aGlzLmhpZGVUb29sdGlwLCBpc0NhcHR1cmUpO1xuICAgICAgfSAvLyBUcmFjayByZW1vdmFsIG9mIHRhcmdldEFycmF5IGVsZW1lbnRzIGZyb20gRE9NXG5cblxuICAgICAgdGhpcy5iaW5kUmVtb3ZhbFRyYWNrZXIoKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVW5iaW5kIGxpc3RlbmVycyBvbiB0YXJnZXQgZWxlbWVudHNcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcInVuYmluZExpc3RlbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuYmluZExpc3RlbmVyKCkge1xuICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGlkID0gX3RoaXMkcHJvcHMzLmlkLFxuICAgICAgICAgIGdsb2JhbEV2ZW50T2ZmID0gX3RoaXMkcHJvcHMzLmdsb2JhbEV2ZW50T2ZmO1xuXG4gICAgICBpZiAodGhpcy5pc0JvZHlNb2RlKCkpIHtcbiAgICAgICAgdGhpcy51bmJpbmRCb2R5TGlzdGVuZXIoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciB0YXJnZXRBcnJheSA9IHRoaXMuZ2V0VGFyZ2V0QXJyYXkoaWQpO1xuICAgICAgICB0YXJnZXRBcnJheS5mb3JFYWNoKGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgICBfdGhpczQudW5iaW5kQmFzaWNMaXN0ZW5lcih0YXJnZXQpO1xuXG4gICAgICAgICAgaWYgKF90aGlzNC5pc0N1c3RvbUV2ZW50KHRhcmdldCkpIF90aGlzNC5jdXN0b21VbmJpbmRMaXN0ZW5lcih0YXJnZXQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JhbEV2ZW50T2ZmKSB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihnbG9iYWxFdmVudE9mZiwgdGhpcy5oaWRlVG9vbHRpcCk7XG4gICAgICB0aGlzLnVuYmluZFJlbW92YWxUcmFja2VyKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEludm9rZSB0aGlzIGJlZm9yZSBiaW5kIGxpc3RlbmVyIGFuZCB1bm1vdW50IHRoZSBjb21wb25lbnRcbiAgICAgKiBpdCBpcyBuZWNlc3NhcnkgdG8gaW52b2tlIHRoaXMgZXZlbiB3aGVuIGJpbmRpbmcgY3VzdG9tIGV2ZW50XG4gICAgICogc28gdGhhdCB0aGUgdG9vbHRpcCBjYW4gc3dpdGNoIGJldHdlZW4gY3VzdG9tIGFuZCBkZWZhdWx0IGxpc3RlbmVyXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJ1bmJpbmRCYXNpY0xpc3RlbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuYmluZEJhc2ljTGlzdGVuZXIodGFyZ2V0KSB7XG4gICAgICB2YXIgaXNDYXB0dXJlTW9kZSA9IHRoaXMuaXNDYXB0dXJlKHRhcmdldCk7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsIHRoaXMuc2hvd1Rvb2x0aXAsIGlzQ2FwdHVyZU1vZGUpO1xuICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMudXBkYXRlVG9vbHRpcCwgaXNDYXB0dXJlTW9kZSk7XG4gICAgICB0YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuaGlkZVRvb2x0aXAsIGlzQ2FwdHVyZU1vZGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRUb29sdGlwQ29udGVudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRUb29sdGlwQ29udGVudCgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGdldENvbnRlbnQgPSBfdGhpcyRwcm9wczQuZ2V0Q29udGVudCxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzJHByb3BzNC5jaGlsZHJlbjsgLy8gR2VuZXJhdGUgdG9vbHRpcCBjb250ZW50XG5cbiAgICAgIHZhciBjb250ZW50O1xuXG4gICAgICBpZiAoZ2V0Q29udGVudCkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShnZXRDb250ZW50KSkge1xuICAgICAgICAgIGNvbnRlbnQgPSBnZXRDb250ZW50WzBdICYmIGdldENvbnRlbnRbMF0odGhpcy5zdGF0ZS5vcmlnaW5Ub29sdGlwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250ZW50ID0gZ2V0Q29udGVudCh0aGlzLnN0YXRlLm9yaWdpblRvb2x0aXApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBnZXRUaXBDb250ZW50KHRoaXMuc3RhdGUub3JpZ2luVG9vbHRpcCwgY2hpbGRyZW4sIGNvbnRlbnQsIHRoaXMuc3RhdGUuaXNNdWx0aWxpbmUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJpc0VtcHR5VGlwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGlzRW1wdHlUaXAocGxhY2Vob2xkZXIpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgcGxhY2Vob2xkZXIgPT09ICdzdHJpbmcnICYmIHBsYWNlaG9sZGVyID09PSAnJyB8fCBwbGFjZWhvbGRlciA9PT0gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBtb3VzZSBlbnRlciwgc2hvdyB0aGUgdG9vbHRpcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwic2hvd1Rvb2x0aXBcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hvd1Rvb2x0aXAoZSwgaXNHbG9iYWxDYWxsKSB7XG4gICAgICBpZiAoIXRoaXMudG9vbHRpcFJlZikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc0dsb2JhbENhbGwpIHtcbiAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBvdGhlciBlbGVtZW50cyBiZWxvbmdzIHRvIG90aGVyIFJlYWN0VG9vbHRpcFxuICAgICAgICB2YXIgdGFyZ2V0QXJyYXkgPSB0aGlzLmdldFRhcmdldEFycmF5KHRoaXMucHJvcHMuaWQpO1xuICAgICAgICB2YXIgaXNNeUVsZW1lbnQgPSB0YXJnZXRBcnJheS5zb21lKGZ1bmN0aW9uIChlbGUpIHtcbiAgICAgICAgICByZXR1cm4gZWxlID09PSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWlzTXlFbGVtZW50KSByZXR1cm47XG4gICAgICB9IC8vIEdldCB0aGUgdG9vbHRpcCBjb250ZW50XG4gICAgICAvLyBjYWxjdWxhdGUgaW4gdGhpcyBwaHJhc2Ugc28gdGhhdCB0aXAgd2lkdGggaGVpZ2h0IGNhbiBiZSBkZXRlY3RlZFxuXG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczUgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIG11bHRpbGluZSA9IF90aGlzJHByb3BzNS5tdWx0aWxpbmUsXG4gICAgICAgICAgZ2V0Q29udGVudCA9IF90aGlzJHByb3BzNS5nZXRDb250ZW50O1xuICAgICAgdmFyIG9yaWdpblRvb2x0aXAgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXRpcCcpO1xuICAgICAgdmFyIGlzTXVsdGlsaW5lID0gZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1tdWx0aWxpbmUnKSB8fCBtdWx0aWxpbmUgfHwgZmFsc2U7IC8vIElmIGl0IGlzIGZvY3VzIGV2ZW50IG9yIGNhbGxlZCBieSBSZWFjdFRvb2x0aXAuc2hvdywgc3dpdGNoIHRvIGBzb2xpZGAgZWZmZWN0XG5cbiAgICAgIHZhciBzd2l0Y2hUb1NvbGlkID0gZSBpbnN0YW5jZW9mIHdpbmRvdy5Gb2N1c0V2ZW50IHx8IGlzR2xvYmFsQ2FsbDsgLy8gaWYgaXQgbmVlZHMgdG8gc2tpcCBhZGRpbmcgaGlkZSBsaXN0ZW5lciB0byBzY3JvbGxcblxuICAgICAgdmFyIHNjcm9sbEhpZGUgPSB0cnVlO1xuXG4gICAgICBpZiAoZS5jdXJyZW50VGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1zY3JvbGwtaGlkZScpKSB7XG4gICAgICAgIHNjcm9sbEhpZGUgPSBlLmN1cnJlbnRUYXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXNjcm9sbC1oaWRlJykgPT09ICd0cnVlJztcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy5zY3JvbGxIaWRlICE9IG51bGwpIHtcbiAgICAgICAgc2Nyb2xsSGlkZSA9IHRoaXMucHJvcHMuc2Nyb2xsSGlkZTtcbiAgICAgIH0gLy8gYWRkaW5nIGFyaWEtZGVzY3JpYmVkYnkgdG8gdGFyZ2V0IHRvIG1ha2UgdG9vbHRpcHMgcmVhZCBieSBzY3JlZW4gcmVhZGVyc1xuXG5cbiAgICAgIGlmIChlICYmIGUuY3VycmVudFRhcmdldCAmJiBlLmN1cnJlbnRUYXJnZXQuc2V0QXR0cmlidXRlKSB7XG4gICAgICAgIGUuY3VycmVudFRhcmdldC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknLCB0aGlzLnN0YXRlLnV1aWQpO1xuICAgICAgfSAvLyBNYWtlIHN1cmUgdGhlIGNvcnJlY3QgcGxhY2UgaXMgc2V0XG5cblxuICAgICAgdmFyIGRlc2lyZWRQbGFjZSA9IGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2UnKSB8fCB0aGlzLnByb3BzLnBsYWNlIHx8ICd0b3AnO1xuICAgICAgdmFyIGVmZmVjdCA9IHN3aXRjaFRvU29saWQgJiYgJ3NvbGlkJyB8fCB0aGlzLmdldEVmZmVjdChlLmN1cnJlbnRUYXJnZXQpO1xuICAgICAgdmFyIG9mZnNldCA9IGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtb2Zmc2V0JykgfHwgdGhpcy5wcm9wcy5vZmZzZXQgfHwge307XG4gICAgICB2YXIgcmVzdWx0ID0gZ2V0UG9zaXRpb24oZSwgZS5jdXJyZW50VGFyZ2V0LCB0aGlzLnRvb2x0aXBSZWYsIGRlc2lyZWRQbGFjZSwgZGVzaXJlZFBsYWNlLCBlZmZlY3QsIG9mZnNldCk7XG5cbiAgICAgIGlmIChyZXN1bHQucG9zaXRpb24gJiYgdGhpcy5wcm9wcy5vdmVycmlkZVBvc2l0aW9uKSB7XG4gICAgICAgIHJlc3VsdC5wb3NpdGlvbiA9IHRoaXMucHJvcHMub3ZlcnJpZGVQb3NpdGlvbihyZXN1bHQucG9zaXRpb24sIGUsIGUuY3VycmVudFRhcmdldCwgdGhpcy50b29sdGlwUmVmLCBkZXNpcmVkUGxhY2UsIGRlc2lyZWRQbGFjZSwgZWZmZWN0LCBvZmZzZXQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgcGxhY2UgPSByZXN1bHQuaXNOZXdTdGF0ZSA/IHJlc3VsdC5uZXdTdGF0ZS5wbGFjZSA6IGRlc2lyZWRQbGFjZTsgLy8gVG8gcHJldmVudCBwcmV2aW91c2x5IGNyZWF0ZWQgdGltZXJzIGZyb20gdHJpZ2dlcmluZ1xuXG4gICAgICB0aGlzLmNsZWFyVGltZXIoKTtcbiAgICAgIHZhciB0YXJnZXQgPSBlLmN1cnJlbnRUYXJnZXQ7XG4gICAgICB2YXIgcmVzaG93RGVsYXkgPSB0aGlzLnN0YXRlLnNob3cgPyB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWRlbGF5LXVwZGF0ZScpIHx8IHRoaXMucHJvcHMuZGVsYXlVcGRhdGUgOiAwO1xuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgICB2YXIgdXBkYXRlU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVTdGF0ZSgpIHtcbiAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XG4gICAgICAgICAgb3JpZ2luVG9vbHRpcDogb3JpZ2luVG9vbHRpcCxcbiAgICAgICAgICBpc011bHRpbGluZTogaXNNdWx0aWxpbmUsXG4gICAgICAgICAgZGVzaXJlZFBsYWNlOiBkZXNpcmVkUGxhY2UsXG4gICAgICAgICAgcGxhY2U6IHBsYWNlLFxuICAgICAgICAgIHR5cGU6IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdHlwZScpIHx8IHNlbGYucHJvcHMudHlwZSB8fCAnZGFyaycsXG4gICAgICAgICAgY3VzdG9tQ29sb3JzOiB7XG4gICAgICAgICAgICB0ZXh0OiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXRleHQtY29sb3InKSB8fCBzZWxmLnByb3BzLnRleHRDb2xvciB8fCBudWxsLFxuICAgICAgICAgICAgYmFja2dyb3VuZDogdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1iYWNrZ3JvdW5kLWNvbG9yJykgfHwgc2VsZi5wcm9wcy5iYWNrZ3JvdW5kQ29sb3IgfHwgbnVsbCxcbiAgICAgICAgICAgIGJvcmRlcjogdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1ib3JkZXItY29sb3InKSB8fCBzZWxmLnByb3BzLmJvcmRlckNvbG9yIHx8IG51bGwsXG4gICAgICAgICAgICBhcnJvdzogdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1hcnJvdy1jb2xvcicpIHx8IHNlbGYucHJvcHMuYXJyb3dDb2xvciB8fCBudWxsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlZmZlY3Q6IGVmZmVjdCxcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICBodG1sOiAodGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1odG1sJykgPyB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWh0bWwnKSA9PT0gJ3RydWUnIDogc2VsZi5wcm9wcy5odG1sKSB8fCBmYWxzZSxcbiAgICAgICAgICBkZWxheVNob3c6IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtZGVsYXktc2hvdycpIHx8IHNlbGYucHJvcHMuZGVsYXlTaG93IHx8IDAsXG4gICAgICAgICAgZGVsYXlIaWRlOiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWRlbGF5LWhpZGUnKSB8fCBzZWxmLnByb3BzLmRlbGF5SGlkZSB8fCAwLFxuICAgICAgICAgIGRlbGF5VXBkYXRlOiB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWRlbGF5LXVwZGF0ZScpIHx8IHNlbGYucHJvcHMuZGVsYXlVcGRhdGUgfHwgMCxcbiAgICAgICAgICBib3JkZXI6ICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWJvcmRlcicpID8gdGFyZ2V0LmdldEF0dHJpYnV0ZSgnZGF0YS1ib3JkZXInKSA9PT0gJ3RydWUnIDogc2VsZi5wcm9wcy5ib3JkZXIpIHx8IGZhbHNlLFxuICAgICAgICAgIGV4dHJhQ2xhc3M6IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtY2xhc3MnKSB8fCBzZWxmLnByb3BzW1wiY2xhc3NcIl0gfHwgc2VsZi5wcm9wcy5jbGFzc05hbWUgfHwgJycsXG4gICAgICAgICAgZGlzYWJsZTogKHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlwLWRpc2FibGUnKSA/IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGlwLWRpc2FibGUnKSA9PT0gJ3RydWUnIDogc2VsZi5wcm9wcy5kaXNhYmxlKSB8fCBmYWxzZSxcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0OiB0YXJnZXRcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChzY3JvbGxIaWRlKSB7XG4gICAgICAgICAgICBzZWxmLmFkZFNjcm9sbExpc3RlbmVyKHNlbGYuc3RhdGUuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2VsZi51cGRhdGVUb29sdGlwKGUpO1xuXG4gICAgICAgICAgaWYgKGdldENvbnRlbnQgJiYgQXJyYXkuaXNBcnJheShnZXRDb250ZW50KSkge1xuICAgICAgICAgICAgc2VsZi5pbnRlcnZhbFVwZGF0ZUNvbnRlbnQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmIChzZWxmLm1vdW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIF9nZXRDb250ZW50ID0gc2VsZi5wcm9wcy5nZXRDb250ZW50O1xuICAgICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlciA9IGdldFRpcENvbnRlbnQob3JpZ2luVG9vbHRpcCwgJycsIF9nZXRDb250ZW50WzBdKCksIGlzTXVsdGlsaW5lKTtcbiAgICAgICAgICAgICAgICB2YXIgaXNFbXB0eVRpcCA9IHNlbGYuaXNFbXB0eVRpcChwbGFjZWhvbGRlcik7XG4gICAgICAgICAgICAgICAgc2VsZi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICBpc0VtcHR5VGlwOiBpc0VtcHR5VGlwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2VsZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBnZXRDb250ZW50WzFdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTsgLy8gSWYgdGhlcmUgaXMgbm8gZGVsYXkgY2FsbCBpbW1lZGlhdGVseSwgZG9uJ3QgYWxsb3cgZXZlbnRzIHRvIGdldCBpbiBmaXJzdC5cblxuXG4gICAgICBpZiAocmVzaG93RGVsYXkpIHtcbiAgICAgICAgdGhpcy5kZWxheVJlc2hvdyA9IHNldFRpbWVvdXQodXBkYXRlU3RhdGUsIHJlc2hvd0RlbGF5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZVN0YXRlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZW4gbW91c2UgaG92ZXIsIHVwZGF0ZSB0b29sIHRpcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwidXBkYXRlVG9vbHRpcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVUb29sdGlwKGUpIHtcbiAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkc3RhdGUgPSB0aGlzLnN0YXRlLFxuICAgICAgICAgIGRlbGF5U2hvdyA9IF90aGlzJHN0YXRlLmRlbGF5U2hvdyxcbiAgICAgICAgICBkaXNhYmxlID0gX3RoaXMkc3RhdGUuZGlzYWJsZTtcbiAgICAgIHZhciBhZnRlclNob3cgPSB0aGlzLnByb3BzLmFmdGVyU2hvdztcbiAgICAgIHZhciBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0VG9vbHRpcENvbnRlbnQoKTtcbiAgICAgIHZhciBldmVudFRhcmdldCA9IGUuY3VycmVudFRhcmdldCB8fCBlLnRhcmdldDsgLy8gQ2hlY2sgaWYgdGhlIG1vdXNlIGlzIGFjdHVhbGx5IG92ZXIgdGhlIHRvb2x0aXAsIGlmIHNvIGRvbid0IGhpZGUgdGhlIHRvb2x0aXBcblxuICAgICAgaWYgKHRoaXMubW91c2VPblRvb2xUaXAoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIGlmIHRoZSB0b29sdGlwIGlzIGVtcHR5LCBkaXNhYmxlIHRoZSB0b29sdGlwXG5cblxuICAgICAgaWYgKHRoaXMuaXNFbXB0eVRpcChwbGFjZWhvbGRlcikgfHwgZGlzYWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBkZWxheVRpbWUgPSAhdGhpcy5zdGF0ZS5zaG93ID8gcGFyc2VJbnQoZGVsYXlTaG93LCAxMCkgOiAwO1xuXG4gICAgICB2YXIgdXBkYXRlU3RhdGUgPSBmdW5jdGlvbiB1cGRhdGVTdGF0ZSgpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGxhY2Vob2xkZXIpICYmIHBsYWNlaG9sZGVyLmxlbmd0aCA+IDAgfHwgcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICB2YXIgaXNJbnZpc2libGUgPSAhX3RoaXM1LnN0YXRlLnNob3c7XG5cbiAgICAgICAgICBfdGhpczUuc2V0U3RhdGUoe1xuICAgICAgICAgICAgY3VycmVudEV2ZW50OiBlLFxuICAgICAgICAgICAgY3VycmVudFRhcmdldDogZXZlbnRUYXJnZXQsXG4gICAgICAgICAgICBzaG93OiB0cnVlXG4gICAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgX3RoaXM1LnVwZGF0ZVBvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmIChpc0ludmlzaWJsZSAmJiBhZnRlclNob3cpIHtcbiAgICAgICAgICAgICAgYWZ0ZXJTaG93KGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVNob3dMb29wKTtcblxuICAgICAgaWYgKGRlbGF5VGltZSkge1xuICAgICAgICB0aGlzLmRlbGF5U2hvd0xvb3AgPSBzZXRUaW1lb3V0KHVwZGF0ZVN0YXRlLCBkZWxheVRpbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXBkYXRlU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLypcbiAgICAgKiBJZiB3ZSdyZSBtb3VzaW5nIG92ZXIgdGhlIHRvb2x0aXAgcmVtb3ZlIGl0IHdoZW4gd2UgbGVhdmUuXG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJsaXN0ZW5Gb3JUb29sdGlwRXhpdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsaXN0ZW5Gb3JUb29sdGlwRXhpdCgpIHtcbiAgICAgIHZhciBzaG93ID0gdGhpcy5zdGF0ZS5zaG93O1xuXG4gICAgICBpZiAoc2hvdyAmJiB0aGlzLnRvb2x0aXBSZWYpIHtcbiAgICAgICAgdGhpcy50b29sdGlwUmVmLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLmhpZGVUb29sdGlwKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlTGlzdGVuZXJGb3JUb29sdGlwRXhpdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lckZvclRvb2x0aXBFeGl0KCkge1xuICAgICAgdmFyIHNob3cgPSB0aGlzLnN0YXRlLnNob3c7XG5cbiAgICAgIGlmIChzaG93ICYmIHRoaXMudG9vbHRpcFJlZikge1xuICAgICAgICB0aGlzLnRvb2x0aXBSZWYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuaGlkZVRvb2x0aXApO1xuICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBXaGVuIG1vdXNlIGxlYXZlLCBoaWRlIHRvb2x0aXBcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImhpZGVUb29sdGlwXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhpZGVUb29sdGlwKGUsIGhhc1RhcmdldCkge1xuICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB7XG4gICAgICAgIGlzU2Nyb2xsOiBmYWxzZVxuICAgICAgfTtcbiAgICAgIHZhciBkaXNhYmxlID0gdGhpcy5zdGF0ZS5kaXNhYmxlO1xuICAgICAgdmFyIGlzU2Nyb2xsID0gb3B0aW9ucy5pc1Njcm9sbDtcbiAgICAgIHZhciBkZWxheUhpZGUgPSBpc1Njcm9sbCA/IDAgOiB0aGlzLnN0YXRlLmRlbGF5SGlkZTtcbiAgICAgIHZhciBhZnRlckhpZGUgPSB0aGlzLnByb3BzLmFmdGVySGlkZTtcbiAgICAgIHZhciBwbGFjZWhvbGRlciA9IHRoaXMuZ2V0VG9vbHRpcENvbnRlbnQoKTtcbiAgICAgIGlmICghdGhpcy5tb3VudCkgcmV0dXJuO1xuICAgICAgaWYgKHRoaXMuaXNFbXB0eVRpcChwbGFjZWhvbGRlcikgfHwgZGlzYWJsZSkgcmV0dXJuOyAvLyBpZiB0aGUgdG9vbHRpcCBpcyBlbXB0eSwgZGlzYWJsZSB0aGUgdG9vbHRpcFxuXG4gICAgICBpZiAoaGFzVGFyZ2V0KSB7XG4gICAgICAgIC8vIERvbid0IHRyaWdnZXIgb3RoZXIgZWxlbWVudHMgYmVsb25ncyB0byBvdGhlciBSZWFjdFRvb2x0aXBcbiAgICAgICAgdmFyIHRhcmdldEFycmF5ID0gdGhpcy5nZXRUYXJnZXRBcnJheSh0aGlzLnByb3BzLmlkKTtcbiAgICAgICAgdmFyIGlzTXlFbGVtZW50ID0gdGFyZ2V0QXJyYXkuc29tZShmdW5jdGlvbiAoZWxlKSB7XG4gICAgICAgICAgcmV0dXJuIGVsZSA9PT0gZS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFpc015RWxlbWVudCB8fCAhdGhpcy5zdGF0ZS5zaG93KSByZXR1cm47XG4gICAgICB9IC8vIGNsZWFuIHVwIGFyaWEtZGVzY3JpYmVkYnkgd2hlbiBoaWRpbmcgdG9vbHRpcFxuXG5cbiAgICAgIGlmIChlICYmIGUuY3VycmVudFRhcmdldCAmJiBlLmN1cnJlbnRUYXJnZXQucmVtb3ZlQXR0cmlidXRlKSB7XG4gICAgICAgIGUuY3VycmVudFRhcmdldC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlc2V0U3RhdGUgPSBmdW5jdGlvbiByZXNldFN0YXRlKCkge1xuICAgICAgICB2YXIgaXNWaXNpYmxlID0gX3RoaXM2LnN0YXRlLnNob3c7IC8vIENoZWNrIGlmIHRoZSBtb3VzZSBpcyBhY3R1YWxseSBvdmVyIHRoZSB0b29sdGlwLCBpZiBzbyBkb24ndCBoaWRlIHRoZSB0b29sdGlwXG5cbiAgICAgICAgaWYgKF90aGlzNi5tb3VzZU9uVG9vbFRpcCgpKSB7XG4gICAgICAgICAgX3RoaXM2Lmxpc3RlbkZvclRvb2x0aXBFeGl0KCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpczYucmVtb3ZlTGlzdGVuZXJGb3JUb29sdGlwRXhpdCgpO1xuXG4gICAgICAgIF90aGlzNi5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2hvdzogZmFsc2VcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF90aGlzNi5yZW1vdmVTY3JvbGxMaXN0ZW5lcihfdGhpczYuc3RhdGUuY3VycmVudFRhcmdldCk7XG5cbiAgICAgICAgICBpZiAoaXNWaXNpYmxlICYmIGFmdGVySGlkZSkge1xuICAgICAgICAgICAgYWZ0ZXJIaWRlKGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNsZWFyVGltZXIoKTtcblxuICAgICAgaWYgKGRlbGF5SGlkZSkge1xuICAgICAgICB0aGlzLmRlbGF5SGlkZUxvb3AgPSBzZXRUaW1lb3V0KHJlc2V0U3RhdGUsIHBhcnNlSW50KGRlbGF5SGlkZSwgMTApKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc2V0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogV2hlbiBzY3JvbGwsIGhpZGUgdG9vbHRpcFxuICAgICAqL1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiaGlkZVRvb2x0aXBPblNjcm9sbFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoaWRlVG9vbHRpcE9uU2Nyb2xsKGV2ZW50LCBoYXNUYXJnZXQpIHtcbiAgICAgIHRoaXMuaGlkZVRvb2x0aXAoZXZlbnQsIGhhc1RhcmdldCwge1xuICAgICAgICBpc1Njcm9sbDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkZCBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgd2hlbiB0b29sdGlwIHNob3dcbiAgICAgKiBhdXRvbWF0aWNhbGx5IGhpZGUgdGhlIHRvb2x0aXAgd2hlbiBzY3JvbGxpbmdcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImFkZFNjcm9sbExpc3RlbmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFkZFNjcm9sbExpc3RlbmVyKGN1cnJlbnRUYXJnZXQpIHtcbiAgICAgIHZhciBpc0NhcHR1cmVNb2RlID0gdGhpcy5pc0NhcHR1cmUoY3VycmVudFRhcmdldCk7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5oaWRlVG9vbHRpcE9uU2Nyb2xsLCBpc0NhcHR1cmVNb2RlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVtb3ZlU2Nyb2xsTGlzdGVuZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlU2Nyb2xsTGlzdGVuZXIoY3VycmVudFRhcmdldCkge1xuICAgICAgdmFyIGlzQ2FwdHVyZU1vZGUgPSB0aGlzLmlzQ2FwdHVyZShjdXJyZW50VGFyZ2V0KTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhpZGVUb29sdGlwT25TY3JvbGwsIGlzQ2FwdHVyZU1vZGUpO1xuICAgIH0gLy8gQ2FsY3VsYXRpb24gdGhlIHBvc2l0aW9uXG5cbiAgfSwge1xuICAgIGtleTogXCJ1cGRhdGVQb3NpdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkc3RhdGUyID0gdGhpcy5zdGF0ZSxcbiAgICAgICAgICBjdXJyZW50RXZlbnQgPSBfdGhpcyRzdGF0ZTIuY3VycmVudEV2ZW50LFxuICAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSBfdGhpcyRzdGF0ZTIuY3VycmVudFRhcmdldCxcbiAgICAgICAgICBwbGFjZSA9IF90aGlzJHN0YXRlMi5wbGFjZSxcbiAgICAgICAgICBkZXNpcmVkUGxhY2UgPSBfdGhpcyRzdGF0ZTIuZGVzaXJlZFBsYWNlLFxuICAgICAgICAgIGVmZmVjdCA9IF90aGlzJHN0YXRlMi5lZmZlY3QsXG4gICAgICAgICAgb2Zmc2V0ID0gX3RoaXMkc3RhdGUyLm9mZnNldDtcbiAgICAgIHZhciBub2RlID0gdGhpcy50b29sdGlwUmVmO1xuICAgICAgdmFyIHJlc3VsdCA9IGdldFBvc2l0aW9uKGN1cnJlbnRFdmVudCwgY3VycmVudFRhcmdldCwgbm9kZSwgcGxhY2UsIGRlc2lyZWRQbGFjZSwgZWZmZWN0LCBvZmZzZXQpO1xuXG4gICAgICBpZiAocmVzdWx0LnBvc2l0aW9uICYmIHRoaXMucHJvcHMub3ZlcnJpZGVQb3NpdGlvbikge1xuICAgICAgICByZXN1bHQucG9zaXRpb24gPSB0aGlzLnByb3BzLm92ZXJyaWRlUG9zaXRpb24ocmVzdWx0LnBvc2l0aW9uLCBjdXJyZW50RXZlbnQsIGN1cnJlbnRUYXJnZXQsIG5vZGUsIHBsYWNlLCBkZXNpcmVkUGxhY2UsIGVmZmVjdCwgb2Zmc2V0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdC5pc05ld1N0YXRlKSB7XG4gICAgICAgIC8vIFN3aXRjaCB0byByZXZlcnNlIHBsYWNlbWVudFxuICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZShyZXN1bHQubmV3U3RhdGUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczcudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICB9IC8vIFNldCB0b29sdGlwIHBvc2l0aW9uXG5cblxuICAgICAgbm9kZS5zdHlsZS5sZWZ0ID0gcmVzdWx0LnBvc2l0aW9uLmxlZnQgKyAncHgnO1xuICAgICAgbm9kZS5zdHlsZS50b3AgPSByZXN1bHQucG9zaXRpb24udG9wICsgJ3B4JztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ0xlYXIgYWxsIGtpbmRzIG9mIHRpbWVvdXQgb2YgaW50ZXJ2YWxcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyVGltZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXJUaW1lcigpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRlbGF5U2hvd0xvb3ApO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGVsYXlIaWRlTG9vcCk7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kZWxheVJlc2hvdyk7XG4gICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxVcGRhdGVDb250ZW50KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiaGFzQ3VzdG9tQ29sb3JzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhc0N1c3RvbUNvbG9ycygpIHtcbiAgICAgIHZhciBfdGhpczggPSB0aGlzO1xuXG4gICAgICByZXR1cm4gQm9vbGVhbihPYmplY3Qua2V5cyh0aGlzLnN0YXRlLmN1c3RvbUNvbG9ycykuZmluZChmdW5jdGlvbiAoY29sb3IpIHtcbiAgICAgICAgcmV0dXJuIGNvbG9yICE9PSAnYm9yZGVyJyAmJiBfdGhpczguc3RhdGUuY3VzdG9tQ29sb3JzW2NvbG9yXTtcbiAgICAgIH0pIHx8IHRoaXMuc3RhdGUuYm9yZGVyICYmIHRoaXMuc3RhdGUuY3VzdG9tQ29sb3JzWydib3JkZXInXSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHN0YXRlMyA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgZXh0cmFDbGFzcyA9IF90aGlzJHN0YXRlMy5leHRyYUNsYXNzLFxuICAgICAgICAgIGh0bWwgPSBfdGhpcyRzdGF0ZTMuaHRtbCxcbiAgICAgICAgICBhcmlhUHJvcHMgPSBfdGhpcyRzdGF0ZTMuYXJpYVByb3BzLFxuICAgICAgICAgIGRpc2FibGUgPSBfdGhpcyRzdGF0ZTMuZGlzYWJsZSxcbiAgICAgICAgICB1dWlkID0gX3RoaXMkc3RhdGUzLnV1aWQ7XG4gICAgICB2YXIgY29udGVudCA9IHRoaXMuZ2V0VG9vbHRpcENvbnRlbnQoKTtcbiAgICAgIHZhciBpc0VtcHR5VGlwID0gdGhpcy5pc0VtcHR5VGlwKGNvbnRlbnQpO1xuICAgICAgdmFyIHN0eWxlID0gZ2VuZXJhdGVUb29sdGlwU3R5bGUodGhpcy5zdGF0ZS51dWlkLCB0aGlzLnN0YXRlLmN1c3RvbUNvbG9ycywgdGhpcy5zdGF0ZS50eXBlLCB0aGlzLnN0YXRlLmJvcmRlcik7XG4gICAgICB2YXIgdG9vbHRpcENsYXNzID0gJ19fcmVhY3RfY29tcG9uZW50X3Rvb2x0aXAnICsgXCIgXCIuY29uY2F0KHRoaXMuc3RhdGUudXVpZCkgKyAodGhpcy5zdGF0ZS5zaG93ICYmICFkaXNhYmxlICYmICFpc0VtcHR5VGlwID8gJyBzaG93JyA6ICcnKSArICh0aGlzLnN0YXRlLmJvcmRlciA/ICcgYm9yZGVyJyA6ICcnKSArIFwiIHBsYWNlLVwiLmNvbmNhdCh0aGlzLnN0YXRlLnBsYWNlKSArIC8vIHRvcCwgYm90dG9tLCBsZWZ0LCByaWdodFxuICAgICAgXCIgdHlwZS1cIi5jb25jYXQodGhpcy5oYXNDdXN0b21Db2xvcnMoKSA/ICdjdXN0b20nIDogdGhpcy5zdGF0ZS50eXBlKSArICggLy8gZGFyaywgc3VjY2Vzcywgd2FybmluZywgZXJyb3IsIGluZm8sIGxpZ2h0LCBjdXN0b21cbiAgICAgIHRoaXMucHJvcHMuZGVsYXlVcGRhdGUgPyAnIGFsbG93X2hvdmVyJyA6ICcnKSArICh0aGlzLnByb3BzLmNsaWNrYWJsZSA/ICcgYWxsb3dfY2xpY2snIDogJycpO1xuICAgICAgdmFyIFdyYXBwZXIgPSB0aGlzLnByb3BzLndyYXBwZXI7XG5cbiAgICAgIGlmIChSZWFjdFRvb2x0aXAuc3VwcG9ydGVkV3JhcHBlcnMuaW5kZXhPZihXcmFwcGVyKSA8IDApIHtcbiAgICAgICAgV3JhcHBlciA9IFJlYWN0VG9vbHRpcC5kZWZhdWx0UHJvcHMud3JhcHBlcjtcbiAgICAgIH1cblxuICAgICAgdmFyIHdyYXBwZXJDbGFzc05hbWUgPSBbdG9vbHRpcENsYXNzLCBleHRyYUNsYXNzXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuXG4gICAgICBpZiAoaHRtbCkge1xuICAgICAgICB2YXIgaHRtbENvbnRlbnQgPSBcIlwiLmNvbmNhdChjb250ZW50LCBcIlxcbjxzdHlsZSBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCI+XCIpLmNvbmNhdChzdHlsZSwgXCI8L3N0eWxlPlwiKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlciwgX2V4dGVuZHMoe1xuICAgICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQod3JhcHBlckNsYXNzTmFtZSksXG4gICAgICAgICAgaWQ6IHRoaXMucHJvcHMuaWQgfHwgdXVpZCxcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihfcmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM5LnRvb2x0aXBSZWYgPSBfcmVmO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgYXJpYVByb3BzLCB7XG4gICAgICAgICAgXCJkYXRhLWlkXCI6IFwidG9vbHRpcFwiLFxuICAgICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOiB7XG4gICAgICAgICAgICBfX2h0bWw6IGh0bWxDb250ZW50XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChXcmFwcGVyLCBfZXh0ZW5kcyh7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdCh3cmFwcGVyQ2xhc3NOYW1lKSxcbiAgICAgICAgICBpZDogdGhpcy5wcm9wcy5pZCB8fCB1dWlkXG4gICAgICAgIH0sIGFyaWFQcm9wcywge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKF9yZWYyKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXM5LnRvb2x0aXBSZWYgPSBfcmVmMjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGF0YS1pZFwiOiBcInRvb2x0aXBcIlxuICAgICAgICB9KSwgUmVhY3QuY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgICAgX19odG1sOiBzdHlsZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJhcmlhLWhpZGRlblwiOiBcInRydWVcIlxuICAgICAgICB9KSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XSwgW3tcbiAgICBrZXk6IFwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIHByZXZTdGF0ZSkge1xuICAgICAgdmFyIGFyaWFQcm9wcyA9IHByZXZTdGF0ZS5hcmlhUHJvcHM7XG4gICAgICB2YXIgbmV3QXJpYVByb3BzID0gcGFyc2VBcmlhKG5leHRQcm9wcyk7XG4gICAgICB2YXIgaXNDaGFuZ2VkID0gT2JqZWN0LmtleXMobmV3QXJpYVByb3BzKS5zb21lKGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgICByZXR1cm4gbmV3QXJpYVByb3BzW3Byb3BzXSAhPT0gYXJpYVByb3BzW3Byb3BzXTtcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWlzQ2hhbmdlZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQyKHt9LCBwcmV2U3RhdGUsIHtcbiAgICAgICAgYXJpYVByb3BzOiBuZXdBcmlhUHJvcHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBSZWFjdFRvb2x0aXA7XG59KFJlYWN0LkNvbXBvbmVudCksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGluc2VjdXJlOiB0cnVlLFxuICByZXNpemVIaWRlOiB0cnVlLFxuICB3cmFwcGVyOiAnZGl2JyxcbiAgY2xpY2thYmxlOiBmYWxzZVxufSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcInN1cHBvcnRlZFdyYXBwZXJzXCIsIFsnZGl2JywgJ3NwYW4nXSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MyLCBcImRpc3BsYXlOYW1lXCIsICdSZWFjdFRvb2x0aXAnKSwgX3RlbXApKSB8fCBfY2xhc3MpIHx8IF9jbGFzcykgfHwgX2NsYXNzKSB8fCBfY2xhc3MpIHx8IF9jbGFzcykgfHwgX2NsYXNzKSB8fCBfY2xhc3M7XG5cbmV4cG9ydCBkZWZhdWx0IFJlYWN0VG9vbHRpcDtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmVzLmpzLm1hcFxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIi8qKiBAbGljZW5zZSBSZWFjdCB2MTYuMTMuMVxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7dmFyIGI9XCJmdW5jdGlvblwiPT09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvcixjPWI/U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIik6NjAxMDMsZD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik6NjAxMDYsZT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKTo2MDEwNyxmPWI/U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpOjYwMTA4LGc9Yj9TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIik6NjAxMTQsaD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKTo2MDEwOSxrPWI/U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIik6NjAxMTAsbD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5hc3luY19tb2RlXCIpOjYwMTExLG09Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29uY3VycmVudF9tb2RlXCIpOjYwMTExLG49Yj9TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIik6NjAxMTIscD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKTo2MDExMyxxPWI/XG5TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKTo2MDEyMCxyPWI/U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIik6NjAxMTUsdD1iP1N5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpOjYwMTE2LHY9Yj9TeW1ib2wuZm9yKFwicmVhY3QuYmxvY2tcIik6NjAxMjEsdz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mdW5kYW1lbnRhbFwiKTo2MDExNyx4PWI/U3ltYm9sLmZvcihcInJlYWN0LnJlc3BvbmRlclwiKTo2MDExOCx5PWI/U3ltYm9sLmZvcihcInJlYWN0LnNjb3BlXCIpOjYwMTE5O1xuZnVuY3Rpb24geihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgdT1hLiQkdHlwZW9mO3N3aXRjaCh1KXtjYXNlIGM6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgbDpjYXNlIG06Y2FzZSBlOmNhc2UgZzpjYXNlIGY6Y2FzZSBwOnJldHVybiBhO2RlZmF1bHQ6c3dpdGNoKGE9YSYmYS4kJHR5cGVvZixhKXtjYXNlIGs6Y2FzZSBuOmNhc2UgdDpjYXNlIHI6Y2FzZSBoOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHV9fWNhc2UgZDpyZXR1cm4gdX19fWZ1bmN0aW9uIEEoYSl7cmV0dXJuIHooYSk9PT1tfWV4cG9ydHMuQXN5bmNNb2RlPWw7ZXhwb3J0cy5Db25jdXJyZW50TW9kZT1tO2V4cG9ydHMuQ29udGV4dENvbnN1bWVyPWs7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9aDtleHBvcnRzLkVsZW1lbnQ9YztleHBvcnRzLkZvcndhcmRSZWY9bjtleHBvcnRzLkZyYWdtZW50PWU7ZXhwb3J0cy5MYXp5PXQ7ZXhwb3J0cy5NZW1vPXI7ZXhwb3J0cy5Qb3J0YWw9ZDtcbmV4cG9ydHMuUHJvZmlsZXI9ZztleHBvcnRzLlN0cmljdE1vZGU9ZjtleHBvcnRzLlN1c3BlbnNlPXA7ZXhwb3J0cy5pc0FzeW5jTW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gQShhKXx8eihhKT09PWx9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1BO2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1rfTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09aH07ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWN9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09bn07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZX07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT10fTtcbmV4cG9ydHMuaXNNZW1vPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cn07ZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWR9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWd9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Zn07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09cH07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50VHlwZT1mdW5jdGlvbihhKXtyZXR1cm5cInN0cmluZ1wiPT09dHlwZW9mIGF8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhfHxhPT09ZXx8YT09PW18fGE9PT1nfHxhPT09Znx8YT09PXB8fGE9PT1xfHxcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiYoYS4kJHR5cGVvZj09PXR8fGEuJCR0eXBlb2Y9PT1yfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWt8fGEuJCR0eXBlb2Y9PT1ufHxhLiQkdHlwZW9mPT09d3x8YS4kJHR5cGVvZj09PXh8fGEuJCR0eXBlb2Y9PT15fHxhLiQkdHlwZW9mPT09dil9O2V4cG9ydHMudHlwZU9mPXo7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbnZhciBydW50aW1lID0gKGZ1bmN0aW9uIChleHBvcnRzKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgZnVuY3Rpb24gZGVmaW5lKG9iaiwga2V5LCB2YWx1ZSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gSUUgOCBoYXMgYSBicm9rZW4gT2JqZWN0LmRlZmluZVByb3BlcnR5IHRoYXQgb25seSB3b3JrcyBvbiBET00gb2JqZWN0cy5cbiAgICBkZWZpbmUoe30sIFwiXCIpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBkZWZpbmUgPSBmdW5jdGlvbihvYmosIGtleSwgdmFsdWUpIHtcbiAgICAgIHJldHVybiBvYmpba2V5XSA9IHZhbHVlO1xuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBleHBvcnRzLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIEFzeW5jSXRlcmF0b3IucHJvdG90eXBlW2FzeW5jSXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuICBleHBvcnRzLkFzeW5jSXRlcmF0b3IgPSBBc3luY0l0ZXJhdG9yO1xuXG4gIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2ZcbiAgLy8gQXN5bmNJdGVyYXRvciBvYmplY3RzOyB0aGV5IGp1c3QgcmV0dXJuIGEgUHJvbWlzZSBmb3IgdGhlIHZhbHVlIG9mXG4gIC8vIHRoZSBmaW5hbCByZXN1bHQgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLlxuICBleHBvcnRzLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QsIFByb21pc2VJbXBsKSB7XG4gICAgaWYgKFByb21pc2VJbXBsID09PSB2b2lkIDApIFByb21pc2VJbXBsID0gUHJvbWlzZTtcblxuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSxcbiAgICAgIFByb21pc2VJbXBsXG4gICAgKTtcblxuICAgIHJldHVybiBleHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbilcbiAgICAgID8gaXRlciAvLyBJZiBvdXRlckZuIGlzIGEgZ2VuZXJhdG9yLCByZXR1cm4gdGhlIGZ1bGwgaXRlcmF0b3IuXG4gICAgICA6IGl0ZXIubmV4dCgpLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7XG4gICAgICAgIH0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIG1ha2VJbnZva2VNZXRob2QoaW5uZXJGbiwgc2VsZiwgY29udGV4dCkge1xuICAgIHZhciBzdGF0ZSA9IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQ7XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlRXhlY3V0aW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7XG4gICAgICB9XG5cbiAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVDb21wbGV0ZWQpIHtcbiAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgdGhyb3cgYXJnO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzpcbiAgICAgICAgLy8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWdlbmVyYXRvcnJlc3VtZVxuICAgICAgICByZXR1cm4gZG9uZVJlc3VsdCgpO1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IG1ldGhvZDtcbiAgICAgIGNvbnRleHQuYXJnID0gYXJnO1xuXG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlO1xuICAgICAgICBpZiAoZGVsZWdhdGUpIHtcbiAgICAgICAgICB2YXIgZGVsZWdhdGVSZXN1bHQgPSBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcbiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHtcbiAgICAgICAgICAgIGlmIChkZWxlZ2F0ZVJlc3VsdCA9PT0gQ29udGludWVTZW50aW5lbCkgY29udGludWU7XG4gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGVSZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgY29udGV4dC5zZW50ID0gY29udGV4dC5fc2VudCA9IGNvbnRleHQuYXJnO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIGlmIChzdGF0ZSA9PT0gR2VuU3RhdGVTdXNwZW5kZWRTdGFydCkge1xuICAgICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5tZXRob2QgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgICBjb250ZXh0LmFicnVwdChcInJldHVyblwiLCBjb250ZXh0LmFyZyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZSA9IEdlblN0YXRlRXhlY3V0aW5nO1xuXG4gICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcbiAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiKSB7XG4gICAgICAgICAgLy8gSWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBmcm9tIGlubmVyRm4sIHdlIGxlYXZlIHN0YXRlID09PVxuICAgICAgICAgIC8vIEdlblN0YXRlRXhlY3V0aW5nIGFuZCBsb29wIGJhY2sgZm9yIGFub3RoZXIgaW52b2NhdGlvbi5cbiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZVxuICAgICAgICAgICAgPyBHZW5TdGF0ZUNvbXBsZXRlZFxuICAgICAgICAgICAgOiBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkO1xuXG4gICAgICAgICAgaWYgKHJlY29yZC5hcmcgPT09IENvbnRpbnVlU2VudGluZWwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZyxcbiAgICAgICAgICAgIGRvbmU6IGNvbnRleHQuZG9uZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUNvbXBsZXRlZDtcbiAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXhjZXB0aW9uIGJ5IGxvb3BpbmcgYmFjayBhcm91bmQgdG8gdGhlXG4gICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gQ2FsbCBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF0oY29udGV4dC5hcmcpIGFuZCBoYW5kbGUgdGhlXG4gIC8vIHJlc3VsdCwgZWl0aGVyIGJ5IHJldHVybmluZyBhIHsgdmFsdWUsIGRvbmUgfSByZXN1bHQgZnJvbSB0aGVcbiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsXG4gIC8vIHNldHRpbmcgY29udGV4dC5kZWxlZ2F0ZSB0byBudWxsLCBhbmQgcmV0dXJuaW5nIHRoZSBDb250aW51ZVNlbnRpbmVsLlxuICBmdW5jdGlvbiBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KSB7XG4gICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIEEgLnRocm93IG9yIC5yZXR1cm4gd2hlbiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIG5vIC50aHJvd1xuICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC5cbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAvLyBOb3RlOiBbXCJyZXR1cm5cIl0gbXVzdCBiZSB1c2VkIGZvciBFUzMgcGFyc2luZyBjb21wYXRpYmlsaXR5LlxuICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3JbXCJyZXR1cm5cIl0pIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhXG4gICAgICAgICAgLy8gY2hhbmNlIHRvIGNsZWFuIHVwLlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTtcblxuICAgICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICAvLyBJZiBtYXliZUludm9rZURlbGVnYXRlKGNvbnRleHQpIGNoYW5nZWQgY29udGV4dC5tZXRob2QgZnJvbVxuICAgICAgICAgICAgLy8gXCJyZXR1cm5cIiB0byBcInRocm93XCIsIGxldCB0aGF0IG92ZXJyaWRlIHRoZSBUeXBlRXJyb3IgYmVsb3cuXG4gICAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgIFwiVGhlIGl0ZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgYSAndGhyb3cnIG1ldGhvZFwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTtcblxuICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgdmFyIGluZm8gPSByZWNvcmQuYXJnO1xuXG4gICAgaWYgKCEgaW5mbykge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKTtcbiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuXG4gICAgaWYgKGluZm8uZG9uZSkge1xuICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnlcbiAgICAgIC8vIHZhcmlhYmxlIHNwZWNpZmllZCBieSBkZWxlZ2F0ZS5yZXN1bHROYW1lIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0W2RlbGVnYXRlLnJlc3VsdE5hbWVdID0gaW5mby52YWx1ZTtcblxuICAgICAgLy8gUmVzdW1lIGV4ZWN1dGlvbiBhdCB0aGUgZGVzaXJlZCBsb2NhdGlvbiAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dC5uZXh0ID0gZGVsZWdhdGUubmV4dExvYztcblxuICAgICAgLy8gSWYgY29udGV4dC5tZXRob2Qgd2FzIFwidGhyb3dcIiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlXG4gICAgICAvLyBleGNlcHRpb24sIGxldCB0aGUgb3V0ZXIgZ2VuZXJhdG9yIHByb2NlZWQgbm9ybWFsbHkuIElmXG4gICAgICAvLyBjb250ZXh0Lm1ldGhvZCB3YXMgXCJuZXh0XCIsIGZvcmdldCBjb250ZXh0LmFyZyBzaW5jZSBpdCBoYXMgYmVlblxuICAgICAgLy8gXCJjb25zdW1lZFwiIGJ5IHRoZSBkZWxlZ2F0ZSBpdGVyYXRvci4gSWYgY29udGV4dC5tZXRob2Qgd2FzXG4gICAgICAvLyBcInJldHVyblwiLCBhbGxvdyB0aGUgb3JpZ2luYWwgLnJldHVybiBjYWxsIHRvIGNvbnRpbnVlIGluIHRoZVxuICAgICAgLy8gb3V0ZXIgZ2VuZXJhdG9yLlxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSBcInJldHVyblwiKSB7XG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlLXlpZWxkIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGRlbGVnYXRlIG1ldGhvZC5cbiAgICAgIHJldHVybiBpbmZvO1xuICAgIH1cblxuICAgIC8vIFRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBpcyBmaW5pc2hlZCwgc28gZm9yZ2V0IGl0IGFuZCBjb250aW51ZSB3aXRoXG4gICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci5cbiAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgfVxuXG4gIC8vIERlZmluZSBHZW5lcmF0b3IucHJvdG90eXBlLntuZXh0LHRocm93LHJldHVybn0gaW4gdGVybXMgb2YgdGhlXG4gIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEdwKTtcblxuICBkZWZpbmUoR3AsIHRvU3RyaW5nVGFnU3ltYm9sLCBcIkdlbmVyYXRvclwiKTtcblxuICAvLyBBIEdlbmVyYXRvciBzaG91bGQgYWx3YXlzIHJldHVybiBpdHNlbGYgYXMgdGhlIGl0ZXJhdG9yIG9iamVjdCB3aGVuIHRoZVxuICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZVxuICAvLyBpdGVyYXRvciBwcm90b3R5cGUgY2hhaW4gaW5jb3JyZWN0bHkgaW1wbGVtZW50IHRoaXMsIGNhdXNpbmcgdGhlIEdlbmVyYXRvclxuICAvLyBvYmplY3QgdG8gbm90IGJlIHJldHVybmVkIGZyb20gdGhpcyBjYWxsLiBUaGlzIGVuc3VyZXMgdGhhdCBkb2Vzbid0IGhhcHBlbi5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuXG4gIEdwW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEdwLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIFwiW29iamVjdCBHZW5lcmF0b3JdXCI7XG4gIH07XG5cbiAgZnVuY3Rpb24gcHVzaFRyeUVudHJ5KGxvY3MpIHtcbiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9O1xuXG4gICAgaWYgKDEgaW4gbG9jcykge1xuICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdO1xuICAgIH1cblxuICAgIGlmICgyIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmZpbmFsbHlMb2MgPSBsb2NzWzJdO1xuICAgICAgZW50cnkuYWZ0ZXJMb2MgPSBsb2NzWzNdO1xuICAgIH1cblxuICAgIHRoaXMudHJ5RW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlc2V0VHJ5RW50cnkoZW50cnkpIHtcbiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTtcbiAgICByZWNvcmQudHlwZSA9IFwibm9ybWFsXCI7XG4gICAgZGVsZXRlIHJlY29yZC5hcmc7XG4gICAgZW50cnkuY29tcGxldGlvbiA9IHJlY29yZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIENvbnRleHQodHJ5TG9jc0xpc3QpIHtcbiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2hcbiAgICAvLyBvciBhIGZpbmFsbHkgYmxvY2spIGdpdmVzIHVzIGEgcGxhY2UgdG8gc3RvcmUgdmFsdWVzIHRocm93biBmcm9tXG4gICAgLy8gbG9jYXRpb25zIHdoZXJlIHRoZXJlIGlzIG5vIGVuY2xvc2luZyB0cnkgc3RhdGVtZW50LlxuICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogXCJyb290XCIgfV07XG4gICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpO1xuICAgIHRoaXMucmVzZXQodHJ1ZSk7XG4gIH1cblxuICBleHBvcnRzLmtleXMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIga2V5cyA9IFtdO1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGtleXMucHVzaChrZXkpO1xuICAgIH1cbiAgICBrZXlzLnJldmVyc2UoKTtcblxuICAgIC8vIFJhdGhlciB0aGFuIHJldHVybmluZyBhbiBvYmplY3Qgd2l0aCBhIG5leHQgbWV0aG9kLCB3ZSBrZWVwXG4gICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi5cbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgIHdoaWxlIChrZXlzLmxlbmd0aCkge1xuICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTtcbiAgICAgICAgaWYgKGtleSBpbiBvYmplY3QpIHtcbiAgICAgICAgICBuZXh0LnZhbHVlID0ga2V5O1xuICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRvIGF2b2lkIGNyZWF0aW5nIGFuIGFkZGl0aW9uYWwgb2JqZWN0LCB3ZSBqdXN0IGhhbmcgdGhlIC52YWx1ZVxuICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXNcbiAgICAgIC8vIGFsc28gZW5zdXJlcyB0aGF0IHRoZSBtaW5pZmllciB3aWxsIG5vdCBhbm9ueW1pemUgdGhlIGZ1bmN0aW9uLlxuICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsdWVzKGl0ZXJhYmxlKSB7XG4gICAgaWYgKGl0ZXJhYmxlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07XG4gICAgICBpZiAoaXRlcmF0b3JNZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yTWV0aG9kLmNhbGwoaXRlcmFibGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhYmxlLm5leHQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gaXRlcmFibGU7XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNOYU4oaXRlcmFibGUubGVuZ3RoKSkge1xuICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgICB3aGlsZSAoKytpIDwgaXRlcmFibGUubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAoaGFzT3duLmNhbGwoaXRlcmFibGUsIGkpKSB7XG4gICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTtcbiAgICAgICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbmV4dC5kb25lID0gdHJ1ZTtcblxuICAgICAgICAgIHJldHVybiBuZXh0O1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiBhbiBpdGVyYXRvciB3aXRoIG5vIHZhbHVlcy5cbiAgICByZXR1cm4geyBuZXh0OiBkb25lUmVzdWx0IH07XG4gIH1cbiAgZXhwb3J0cy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHtcbiAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH07XG4gIH1cblxuICBDb250ZXh0LnByb3RvdHlwZSA9IHtcbiAgICBjb25zdHJ1Y3RvcjogQ29udGV4dCxcblxuICAgIHJlc2V0OiBmdW5jdGlvbihza2lwVGVtcFJlc2V0KSB7XG4gICAgICB0aGlzLnByZXYgPSAwO1xuICAgICAgdGhpcy5uZXh0ID0gMDtcbiAgICAgIC8vIFJlc2V0dGluZyBjb250ZXh0Ll9zZW50IGZvciBsZWdhY3kgc3VwcG9ydCBvZiBCYWJlbCdzXG4gICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZG9uZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IG51bGw7XG5cbiAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcblxuICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7XG5cbiAgICAgIGlmICghc2tpcFRlbXBSZXNldCkge1xuICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHtcbiAgICAgICAgICAvLyBOb3Qgc3VyZSBhYm91dCB0aGUgb3B0aW1hbCBvcmRlciBvZiB0aGVzZSBjb25kaXRpb25zOlxuICAgICAgICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gXCJ0XCIgJiZcbiAgICAgICAgICAgICAgaGFzT3duLmNhbGwodGhpcywgbmFtZSkgJiZcbiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkge1xuICAgICAgICAgICAgdGhpc1tuYW1lXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgc3RvcDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuXG4gICAgICB2YXIgcm9vdEVudHJ5ID0gdGhpcy50cnlFbnRyaWVzWzBdO1xuICAgICAgdmFyIHJvb3RSZWNvcmQgPSByb290RW50cnkuY29tcGxldGlvbjtcbiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMucnZhbDtcbiAgICB9LFxuXG4gICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikge1xuICAgICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgICB0aHJvdyBleGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIHZhciBjb250ZXh0ID0gdGhpcztcbiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkge1xuICAgICAgICByZWNvcmQudHlwZSA9IFwidGhyb3dcIjtcbiAgICAgICAgcmVjb3JkLmFyZyA9IGV4Y2VwdGlvbjtcbiAgICAgICAgY29udGV4dC5uZXh0ID0gbG9jO1xuXG4gICAgICAgIGlmIChjYXVnaHQpIHtcbiAgICAgICAgICAvLyBJZiB0aGUgZGlzcGF0Y2hlZCBleGNlcHRpb24gd2FzIGNhdWdodCBieSBhIGNhdGNoIGJsb2NrLFxuICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhISBjYXVnaHQ7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSBcInJvb3RcIikge1xuICAgICAgICAgIC8vIEV4Y2VwdGlvbiB0aHJvd24gb3V0c2lkZSBvZiBhbnkgdHJ5IGJsb2NrIHRoYXQgY291bGQgaGFuZGxlXG4gICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvXG4gICAgICAgICAgLy8gdGhyb3cgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXR1cm4gaGFuZGxlKFwiZW5kXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYpIHtcbiAgICAgICAgICB2YXIgaGFzQ2F0Y2ggPSBoYXNPd24uY2FsbChlbnRyeSwgXCJjYXRjaExvY1wiKTtcbiAgICAgICAgICB2YXIgaGFzRmluYWxseSA9IGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIik7XG5cbiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0NhdGNoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuZmluYWxseUxvYyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidHJ5IHN0YXRlbWVudCB3aXRob3V0IGNhdGNoIG9yIGZpbmFsbHlcIik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIGFicnVwdDogZnVuY3Rpb24odHlwZSwgYXJnKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA8PSB0aGlzLnByZXYgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCBcImZpbmFsbHlMb2NcIikgJiZcbiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB2YXIgZmluYWxseUVudHJ5ID0gZW50cnk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJlxuICAgICAgICAgICh0eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICAgdHlwZSA9PT0gXCJjb250aW51ZVwiKSAmJlxuICAgICAgICAgIGZpbmFsbHlFbnRyeS50cnlMb2MgPD0gYXJnICYmXG4gICAgICAgICAgYXJnIDw9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGFcbiAgICAgICAgLy8gbG9jYXRpb24gb3V0c2lkZSB0aGUgdHJ5L2NhdGNoIGJsb2NrLlxuICAgICAgICBmaW5hbGx5RW50cnkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICB2YXIgcmVjb3JkID0gZmluYWxseUVudHJ5ID8gZmluYWxseUVudHJ5LmNvbXBsZXRpb24gOiB7fTtcbiAgICAgIHJlY29yZC50eXBlID0gdHlwZTtcbiAgICAgIHJlY29yZC5hcmcgPSBhcmc7XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHtcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2M7XG4gICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5jb21wbGV0ZShyZWNvcmQpO1xuICAgIH0sXG5cbiAgICBjb21wbGV0ZTogZnVuY3Rpb24ocmVjb3JkLCBhZnRlckxvYykge1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZztcbiAgICAgIH1cblxuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcImJyZWFrXCIgfHxcbiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gXCJjb250aW51ZVwiKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcInJldHVyblwiKSB7XG4gICAgICAgIHRoaXMucnZhbCA9IHRoaXMuYXJnID0gcmVjb3JkLmFyZztcbiAgICAgICAgdGhpcy5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICB0aGlzLm5leHQgPSBcImVuZFwiO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIiAmJiBhZnRlckxvYykge1xuICAgICAgICB0aGlzLm5leHQgPSBhZnRlckxvYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfSxcblxuICAgIGZpbmlzaDogZnVuY3Rpb24oZmluYWxseUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS5maW5hbGx5TG9jID09PSBmaW5hbGx5TG9jKSB7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7XG4gICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgXCJjYXRjaFwiOiBmdW5jdGlvbih0cnlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHtcbiAgICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjtcbiAgICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgdmFyIHRocm93biA9IHJlY29yZC5hcmc7XG4gICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRocm93bjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb25cbiAgICAgIC8vIGFyZ3VtZW50IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBrbm93biBjYXRjaCBibG9jay5cbiAgICAgIHRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKTtcbiAgICB9LFxuXG4gICAgZGVsZWdhdGVZaWVsZDogZnVuY3Rpb24oaXRlcmFibGUsIHJlc3VsdE5hbWUsIG5leHRMb2MpIHtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSB7XG4gICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLFxuICAgICAgICByZXN1bHROYW1lOiByZXN1bHROYW1lLFxuICAgICAgICBuZXh0TG9jOiBuZXh0TG9jXG4gICAgICB9O1xuXG4gICAgICBpZiAodGhpcy5tZXRob2QgPT09IFwibmV4dFwiKSB7XG4gICAgICAgIC8vIERlbGliZXJhdGVseSBmb3JnZXQgdGhlIGxhc3Qgc2VudCB2YWx1ZSBzbyB0aGF0IHdlIGRvbid0XG4gICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS5cbiAgICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlXG4gIC8vIG9yIG5vdCwgcmV0dXJuIHRoZSBydW50aW1lIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBkZWNsYXJlIHRoZSB2YXJpYWJsZVxuICAvLyByZWdlbmVyYXRvclJ1bnRpbWUgaW4gdGhlIG91dGVyIHNjb3BlLCB3aGljaCBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmVcbiAgLy8gaW5qZWN0ZWQgZWFzaWx5IGJ5IGBiaW4vcmVnZW5lcmF0b3IgLS1pbmNsdWRlLXJ1bnRpbWUgc2NyaXB0LmpzYC5cbiAgcmV0dXJuIGV4cG9ydHM7XG5cbn0oXG4gIC8vIElmIHRoaXMgc2NyaXB0IGlzIGV4ZWN1dGluZyBhcyBhIENvbW1vbkpTIG1vZHVsZSwgdXNlIG1vZHVsZS5leHBvcnRzXG4gIC8vIGFzIHRoZSByZWdlbmVyYXRvclJ1bnRpbWUgbmFtZXNwYWNlLiBPdGhlcndpc2UgY3JlYXRlIGEgbmV3IGVtcHR5XG4gIC8vIG9iamVjdC4gRWl0aGVyIHdheSwgdGhlIHJlc3VsdGluZyBvYmplY3Qgd2lsbCBiZSB1c2VkIHRvIGluaXRpYWxpemVcbiAgLy8gdGhlIHJlZ2VuZXJhdG9yUnVudGltZSB2YXJpYWJsZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS5cbiAgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIiA/IG1vZHVsZS5leHBvcnRzIDoge31cbikpO1xuXG50cnkge1xuICByZWdlbmVyYXRvclJ1bnRpbWUgPSBydW50aW1lO1xufSBjYXRjaCAoYWNjaWRlbnRhbFN0cmljdE1vZGUpIHtcbiAgLy8gVGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSBydW5uaW5nIGluIHN0cmljdCBtb2RlLCBzbyB0aGUgYWJvdmVcbiAgLy8gYXNzaWdubWVudCBzaG91bGQgYWx3YXlzIHdvcmsgdW5sZXNzIHNvbWV0aGluZyBpcyBtaXNjb25maWd1cmVkLiBKdXN0XG4gIC8vIGluIGNhc2UgcnVudGltZS5qcyBhY2NpZGVudGFsbHkgcnVucyBpbiBzdHJpY3QgbW9kZSwgd2UgY2FuIGVzY2FwZVxuICAvLyBzdHJpY3QgbW9kZSB1c2luZyBhIGdsb2JhbCBGdW5jdGlvbiBjYWxsLiBUaGlzIGNvdWxkIGNvbmNlaXZhYmx5IGZhaWxcbiAgLy8gaWYgYSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBmb3JiaWRzIHVzaW5nIEZ1bmN0aW9uLCBidXQgaW4gdGhhdCBjYXNlXG4gIC8vIHRoZSBwcm9wZXIgc29sdXRpb24gaXMgdG8gZml4IHRoZSBhY2NpZGVudGFsIHN0cmljdCBtb2RlIHByb2JsZW0uIElmXG4gIC8vIHlvdSd2ZSBtaXNjb25maWd1cmVkIHlvdXIgYnVuZGxlciB0byBmb3JjZSBzdHJpY3QgbW9kZSBhbmQgYXBwbGllZCBhXG4gIC8vIENTUCB0byBmb3JiaWQgRnVuY3Rpb24sIGFuZCB5b3UncmUgbm90IHdpbGxpbmcgdG8gZml4IGVpdGhlciBvZiB0aG9zZVxuICAvLyBwcm9ibGVtcywgcGxlYXNlIGRldGFpbCB5b3VyIHVuaXF1ZSBwcmVkaWNhbWVudCBpbiBhIEdpdEh1YiBpc3N1ZS5cbiAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbn1cbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMltpXSA9IGFycltpXTtcbiAgfVxuXG4gIHJldHVybiBhcnIyO1xufSIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKGFycikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7XG4gIHZhciBfaSA9IGFyciA9PSBudWxsID8gbnVsbCA6IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgYXJyW1N5bWJvbC5pdGVyYXRvcl0gfHwgYXJyW1wiQEBpdGVyYXRvclwiXTtcblxuICBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuO1xuICB2YXIgX2FyciA9IFtdO1xuICB2YXIgX24gPSB0cnVlO1xuICB2YXIgX2QgPSBmYWxzZTtcblxuICB2YXIgX3MsIF9lO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkge1xuICAgICAgX2Fyci5wdXNoKF9zLnZhbHVlKTtcblxuICAgICAgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgX2QgPSB0cnVlO1xuICAgIF9lID0gZXJyO1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChfZCkgdGhyb3cgX2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIF9hcnI7XG59IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikge1xuICBpZiAoIW8pIHJldHVybjtcbiAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcblxuY29uc3QgQnV0dG9uQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIHBhZGRpbmc6IDZweCAxOHB4O1xuICBiYWNrZ3JvdW5kOiAkeyhwcm9wcykgPT4gcHJvcHMuYmFja2dyb3VuZCB8fCAnIzAwMDAwMCd9O1xuICBjb2xvcjogJHsocHJvcHMpID0+IHByb3BzLmNvbG9yIHx8ICcjRkZGRkZGJ307XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjZweDtcbiAgLyogaWRlbnRpY2FsIHRvIGJveCBoZWlnaHQsIG9yIDE2MiUgKi9cbiAgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTtcbmA7XG5cbmZ1bmN0aW9uIEJ1dHRvbih7IHNldHRpbmcsIGlzTW9iaWxlLCBvbkNsaWNrID0gKCkgPT4ge30gfSkge1xuICBsZXQgc3R5bGUgPSB7fTtcblxuICAvLyB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsO1xuICAvLyB0ZXh0LW9yaWVudGF0aW9uOiBtaXhlZDtcbiAgLy8gdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcblxuICBjb25zdCBwb3NpdGlvbiA9IGlzTW9iaWxlID8gc2V0dGluZy5tb2JpbGVfcG9zaXRpb24gOiBzZXR0aW5nLnBvc2l0aW9uO1xuICBjb25zdCBzaXplID0gaXNNb2JpbGUgPyBzZXR0aW5nLm1vYmlsZV9zaXplIDogc2V0dGluZy5zaXplO1xuICBjb25zdCBzaG93ID0gaXNNb2JpbGUgPyBzZXR0aW5nLm1vYmlsZV9zaG93IDogc2V0dGluZy5zaG93O1xuXG4gIGlmICghc2hvdykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgc3R5bGUgPSB7XG4gICAgICAgIHdyaXRpbmdNb2RlOiAndmVydGljYWwtcmwnLFxuICAgICAgICB0ZXh0T3JpZW50YXRpb246ICdtaXhlZCcsXG4gICAgICAgIHBhZGRpbmc6ICcxOHB4IDZweCcsXG4gICAgICAgIGJvcmRlclRvcExlZnRSYWRpdXM6IDQsXG4gICAgICAgIGJvcmRlckJvdHRvbUxlZnRSYWRpdXM6IDQsXG4gICAgICAgIHRyYW5zZm9ybTogJ3JvdGF0ZSgxODBkZWcpJyxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBzdHlsZSA9IHtcbiAgICAgICAgd3JpdGluZ01vZGU6ICd2ZXJ0aWNhbC1ybCcsXG4gICAgICAgIHRleHRPcmllbnRhdGlvbjogJ21peGVkJyxcbiAgICAgICAgcGFkZGluZzogJzE4cHggNnB4JyxcbiAgICAgICAgYm9yZGVyVG9wUmlnaHRSYWRpdXM6IDQsXG4gICAgICAgIGJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOiA0LFxuICAgICAgICB0cmFuc2Zvcm06ICdyb3RhdGUoMTgwZGVnKScsXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0eWxlID0ge1xuICAgICAgICBib3JkZXJUb3BSaWdodFJhZGl1czogNCxcbiAgICAgICAgYm9yZGVyVG9wTGVmdFJhZGl1czogNCxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHN3aXRjaCAoc2l6ZSkge1xuICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICBzdHlsZS5mb250U2l6ZSA9ICcxM3B4JztcbiAgICAgIHN0eWxlLmxpbmVIZWlnaHQgPSAnMTZweCc7XG4gICAgICBzdHlsZS5wYWRkaW5nID1cbiAgICAgICAgcG9zaXRpb24gPT0gJ2xlZnQnIHx8IHBvc2l0aW9uID09ICdyaWdodCcgPyAnMTFweCA3cHgnIDogJzdweCAxMXB4JztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgIHN0eWxlLmZvbnRTaXplID0gJzEycHgnO1xuICAgICAgc3R5bGUubGluZUhlaWdodCA9ICcxMnB4JztcbiAgICAgIHN0eWxlLnBhZGRpbmcgPVxuICAgICAgICBwb3NpdGlvbiA9PSAnbGVmdCcgfHwgcG9zaXRpb24gPT0gJ3JpZ2h0JyA/ICcxMHB4IDZweCcgOiAnNnB4IDEwcHgnO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uQ29udGFpbmVyXG4gICAgICBiYWNrZ3JvdW5kPXtpc01vYmlsZSA/IHNldHRpbmcubW9iaWxlX2JhY2tncm91bmQgOiBzZXR0aW5nLmJhY2tncm91bmR9XG4gICAgICBjb2xvcj17aXNNb2JpbGUgPyBzZXR0aW5nLm1vYmlsZV9jb2xvciA6IHNldHRpbmcuY29sb3J9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgc3R5bGU9e3N0eWxlfVxuICAgID5cbiAgICAgIHtpc01vYmlsZSA/IHNldHRpbmcubW9iaWxlX3RleHQgOiBzZXR0aW5nLnRleHR9XG4gICAgPC9CdXR0b25Db250YWluZXI+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7XG4gICAgdmFyIHZhbHVlID0gaW5mby52YWx1ZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmZvLmRvbmUpIHtcbiAgICByZXNvbHZlKHZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTtcblxuICAgICAgZnVuY3Rpb24gX25leHQodmFsdWUpIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfdGhyb3coZXJyKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpO1xuICAgICAgfVxuXG4gICAgICBfbmV4dCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xufSIsImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIEVycm9yKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgYXJpYUhpZGRlbj1cInRydWVcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCI+XG4gICAgICA8cGF0aCBkPVwiTTEwIDE4YTggOCAwIDExMC0xNiA4IDggMCAwMTAgMTZ6TTkgOWExIDEgMCAwMDIgMFY3YTEgMSAwIDEwLTIgMHYyem0wIDRhMSAxIDAgMTAyIDAgMSAxIDAgMDAtMiAwelwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEVycm9yIGZyb20gJy4vSWNvbnMvRXJyb3InO1xuXG5jb25zdCBDb250YWluZXQgPSBzdHlsZWQuZGl2YFxuICBjb2xvcjogcmdiKDIxNSwgNDQsIDEzKTtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBzdmcge1xuICAgIGZpbGw6IHJnYigyMTUsIDQ0LCAxMyk7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICB9XG5gO1xuXG5mdW5jdGlvbiBFcnJvckxpbmUoeyBtZXNzYWdlID0gJycgfSkge1xuICBpZiAoIW1lc3NhZ2UpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXQ+XG4gICAgICA8RXJyb3IgLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvQ29udGFpbmV0PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxpbmU7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1ub25pbnRlcmFjdGl2ZS1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbGFiZWwtaGFzLWFzc29jaWF0ZWQtY29udHJvbCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEVycm9yTGluZSBmcm9tICcuL0Vycm9yTGluZSc7XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMzBweDtcbmA7XG5cbmNvbnN0IFRleHQgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgLyogaWRlbnRpY2FsIHRvIGJveCBoZWlnaHQsIG9yIDE1NiUgKi9cbiAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4O1xuICBjb2xvcjogJHsoeyBjb2xvciB9KSA9PiBjb2xvciB8fCAnIzAwMDAwMCd9O1xuYDtcblxuY29uc3QgU2VsZWN0ID0gc3R5bGVkLnNlbGVjdGBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB6LWluZGV4OiAxO1xuICBib3JkZXI6IDFweCBzb2xpZCAjYmRiOGI4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxNnB4IDE3cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMDAwMDAwO1xuICAtbW96LWFwcGVhcmFuY2U6IG5vbmU7IC8qIEZpcmVmb3ggKi9cbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyAvKiBTYWZhcmkgYW5kIENocm9tZSAqL1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7XG5gO1xuXG5mdW5jdGlvbiBJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIxMlwiXG4gICAgICBoZWlnaHQ9XCI3XCJcbiAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMTIgN1wiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgZmlsbD1cIiMwMDBcIlxuICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICBkPVwiTTYgN2EuOTk3Ljk5NyAwIDAxLS43MDctLjI5M2wtNS01QS45OTkuOTk5IDAgMTExLjcwNy4yOTNMNiA0LjU4NiAxMC4yOTMuMjkzYS45OTkuOTk5IDAgMTExLjQxNCAxLjQxNGwtNSA1QS45OTcuOTk3IDAgMDE2IDd6XCJcbiAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmNvbnN0IENvbnRhaW5lclNlbGVjdCA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTRweDtcbiAgbGFiZWwge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMThweDtcbiAgICB6LWluZGV4OiAwO1xuICB9XG5gO1xuXG5mdW5jdGlvbiBDYXRlZ29yeSh7XG4gIGNhdGVnb3J5LFxuICBpc01vYmlsZSxcbiAgaXNTaG93LFxuICBlcnJvcixcbiAgdmFsdWUgPSAnJyxcbiAgb25DaGFuZ2UgPSAoKSA9PiB7fSxcbn0pIHtcbiAgY29uc3QgbGlzdCA9IChpc01vYmlsZSA/IGNhdGVnb3J5Lm1vYmlsZV9saXN0IDogY2F0ZWdvcnkubGlzdCkgfHwgW107XG4gIGNvbnN0IHNob3cgPSBpc01vYmlsZSA/IGNhdGVnb3J5Lm1vYmlsZV9zaG93IDogY2F0ZWdvcnkuc2hvdztcblxuICBpZiAoIWlzU2hvdykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPFRleHQ+e2lzTW9iaWxlID8gY2F0ZWdvcnkubW9iaWxlX3RpdGxlIDogY2F0ZWdvcnkudGl0bGV9PC9UZXh0PlxuICAgICAgPENvbnRhaW5lclNlbGVjdD5cbiAgICAgICAgPGxhYmVsPlxuICAgICAgICAgIDxJY29uIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBpZD1cImZlZWRiYWNrX2NhdGVnb3J5XCJcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBvbkNoYW5nZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQgc2VsZWN0ZWQgaGlkZGVuPlxuICAgICAgICAgICAge2lzTW9iaWxlID8gY2F0ZWdvcnkubW9iaWxlX2hpbnRfdGl0bGUgOiBjYXRlZ29yeS5oaW50X3RpdGxlfVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIHtsaXN0Lm1hcCgoX2ksIGkpID0+IChcbiAgICAgICAgICAgIDxvcHRpb24ga2V5PXsnY2F0LScgKyBpfSB2YWx1ZT17X2l9PlxuICAgICAgICAgICAgICB7X2l9XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICA8L0NvbnRhaW5lclNlbGVjdD5cbiAgICAgIDxFcnJvckxpbmUgbWVzc2FnZT17ZXJyb3J9IC8+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhdGVnb3J5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG5gO1xuXG5jb25zdCBCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgYmFja2dyb3VuZDogIzAwMDAwMDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBwYWRkaW5nOiAxNnB4IDQwcHg7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjRweDtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuYDtcblxuZnVuY3Rpb24gRG9uZSh7IGlzTW9iaWxlLCB0cmFuc2xhdGlvbiA9IFtdLCBvblNlbmRGZWVmYmFjayA9ICgpID0+IHt9IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyPlxuICAgICAgPEJ1dHRvbiB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgIHtpc01vYmlsZSA/IHRyYW5zbGF0aW9uLm1vYmlsZV90ZXh0IDogdHJhbnNsYXRpb24udGV4dH1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBEb25lO1xuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBAbmV4dC9uZXh0L25vLWltZy1lbGVtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbHQtdGV4dCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5mdW5jdGlvbiBJY29uKHByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPHN2Z1xuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICB3aWR0aD1cIjI0XCJcbiAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgIGZpbGw9XCIjNjc2NjY0XCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgey4uLnByb3BzfVxuICAgID5cbiAgICAgIDxnIGNsaXBQYXRoPVwidXJsKCNjbGlwMF8xNzlfMjA1NilcIj5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBmaWxsUnVsZT1cImV2ZW5vZGRcIlxuICAgICAgICAgIGQ9XCJNNS4xMjEgMy43MDdhMSAxIDAgMTAtMS40MTQgMS40MTRsNi43MTcgNi43MTgtNi43MTcgNi43MTdhMSAxIDAgMTAxLjQxNCAxLjQxNWw2LjcxOC02LjcxOCA2LjcxNyA2LjcxOGExIDEgMCAwMDEuNDE0LTEuNDE1bC02LjcxNy02LjcxN0wxOS45NyA1LjEyYTEgMSAwIDEwLTEuNDE0LTEuNDE0bC02LjcxNyA2LjcxOEw1LjEyIDMuNzA3elwiXG4gICAgICAgICAgY2xpcFJ1bGU9XCJldmVub2RkXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZz5cbiAgICAgIDxkZWZzPlxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8xNzlfMjA1NlwiPlxuICAgICAgICAgIDxwYXRoIGZpbGw9XCIjZmZmXCIgZD1cIk0wIDBIMjRWMjRIMHpcIiAvPlxuICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgPC9kZWZzPlxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNzhweDtcbiAgYmFja2dyb3VuZDogJHsoeyBiYWNrZ3JvdW5kIH0pID0+IGJhY2tncm91bmQgfHwgJyNFQkU2RTAnfTtcbiAgcGFkZGluZzogMTlweCAyN3B4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA2cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA2cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbmA7XG5cbmNvbnN0IExvZ29Db250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogJHsoeyBwb3NpdGlvbiB9KSA9PiBwb3NpdGlvbiB8fCAnZmxleC1zdGFydCd9O1xuICAvKiBtYXJnaW4tcmlnaHQ6IDQwcHg7ICovXG4gIHBhZGRpbmc6IDAgJHsoeyBwb3NpdGlvbiB9KSA9PiAocG9zaXRpb24gPT0gJ2ZsZXgtZW5kJyA/ICc5MXB4JyA6ICc0MHB4Jyl9O1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBpbWcge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiA0MHB4O1xuICB9XG5gO1xuXG5jb25zdCBDb250YWluZXJOb3RMb2dvID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIC8qIHdpZHRoOiAxMDAlOyAqL1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAzMHB4O1xuICB0b3A6IDMwcHg7XG4gIHotaW5kZXg6IDI7XG4gICY6aG92ZXIge1xuICAgIHN2ZyB7XG4gICAgICBmaWxsOiAjOWI5NjkxO1xuICAgIH1cbiAgfVxuYDtcblxuZnVuY3Rpb24gSGVhZGVyKHsgcmF0aW5nID0ge30sIG9uQ2xvc2UgPSAoKSA9PiB7fSwgaXNNb2JpbGUgfSkge1xuICBjb25zdCBsb2dvID0gaXNNb2JpbGUgPyByYXRpbmcubW9iaWxlX2xvZ28gOiByYXRpbmcubG9nbztcblxuICBsZXQgcG9zaXRpb24gPSAnZmxleC1zdGFydCc7XG5cbiAgc3dpdGNoIChpc01vYmlsZSA/IHJhdGluZy5tb2JpbGVfbG9nb19wb3NpdGlvbiA6IHJhdGluZy5sb2dvX3Bvc2l0aW9uKSB7XG4gICAgY2FzZSAnY2VudGVyJzpcbiAgICAgIHBvc2l0aW9uID0gJ2NlbnRlcic7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBwb3NpdGlvbiA9ICdmbGV4LWVuZCc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoIWxvZ28pIHtcbiAgICByZXR1cm4gKFxuICAgICAgPENvbnRhaW5lck5vdExvZ28+XG4gICAgICAgIDxJY29uIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInLCB6SW5kZXg6IDIgfX0gb25DbGljaz17b25DbG9zZX0gLz5cbiAgICAgIDwvQ29udGFpbmVyTm90TG9nbz5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyXG4gICAgICBiYWNrZ3JvdW5kPXtcbiAgICAgICAgaXNNb2JpbGUgPyByYXRpbmcubW9iaWxlX2hlYWRlcl9iYWNrZ3JvdW5kIDogcmF0aW5nLmhlYWRlcl9iYWNrZ3JvdW5kXG4gICAgICB9XG4gICAgPlxuICAgICAgPExvZ29Db250YWluZXIgcG9zaXRpb249e3Bvc2l0aW9ufT5cbiAgICAgICAge2xvZ28gJiYgPGltZyBzcmM9e2xvZ299IC8+fVxuICAgICAgPC9Mb2dvQ29udGFpbmVyPlxuICAgICAgPEljb24gc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicsIHpJbmRleDogMiB9fSBvbkNsaWNrPXtvbkNsb3NlfSAvPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBIZWFkZXI7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjMDAwMDAwO1xuICBhIHtcbiAgICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgfVxuICBwIHtcbiAgICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAvKiBvciAxMzMlICovXG4gICAgY29sb3I6ICMwMDAwMDA7XG4gIH1cbmA7XG5cbmZ1bmN0aW9uIExpbmsoeyBpc01vYmlsZSwgbGluayA9IHt9LCBpc1Nob3cgfSkge1xuICBjb25zdCBzaG93ID0gaXNNb2JpbGUgPyBsaW5rLm1vYmlsZV9zaG93IDogbGluay5zaG93O1xuICBpZiAoIWlzU2hvdykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lclxuICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgX19odG1sOiBpc01vYmlsZSA/IGxpbmsubW9iaWxlX3RleHQgOiBsaW5rLnRleHQsXG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExpbms7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikge1xuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHtcbiAgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07XG4gICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlO1xuICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTtcbiAgICBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7XG4gIGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpO1xuICBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7XG4gIHJldHVybiBDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5IGluIG9iaikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG5cbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG4gICAgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuXG4gICAgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBvd25LZXlzID0gb3duS2V5cy5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzb3VyY2UpLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwgc3ltKS5lbnVtZXJhYmxlO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykge1xuICBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB9XG5cbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7XG4gICAgY29uc3RydWN0b3I6IHtcbiAgICAgIHZhbHVlOiBzdWJDbGFzcyxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfVxuICB9KTtcbiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gICAgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTtcbiAgfTtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTtcbn1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikge1xuICBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7XG4gICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICB9XG5cbiAgcmV0dXJuIHNlbGY7XG59XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHtcbiAgaWYgKGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7XG4gICAgcmV0dXJuIGNhbGw7XG4gIH1cblxuICByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTtcbn1cblxudmFyIHN0eWxlID0ge1xuICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgYm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgYm9yZGVyOiAnNXB4IGRvdWJsZSB3aGl0ZScsXG4gIHdpZHRoOiAzMCxcbiAgaGVpZ2h0OiAzMFxufTtcbnZhciBTdHlsZSA9IHtcbiAgZW1wdHk6IF9vYmplY3RTcHJlYWQoe30sIHN0eWxlLCB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2NjYydcbiAgfSksXG4gIGZ1bGw6IF9vYmplY3RTcHJlYWQoe30sIHN0eWxlLCB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAnYmxhY2snXG4gIH0pLFxuICBwbGFjZWhvbGRlcjogX29iamVjdFNwcmVhZCh7fSwgc3R5bGUsIHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZWQnXG4gIH0pXG59O1xuXG4vLyBSZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgUmVhY3Qgbm9kZSBmb3IgYW4gaWNvbi5cbnZhciBfaWNvbk5vZGUgPSBmdW5jdGlvbiBfaWNvbk5vZGUoaWNvbikge1xuICAvLyBJZiBpdCBpcyBhbHJlYWR5IGEgUmVhY3QgRWxlbWVudCBqdXN0IHJldHVybiBpdC5cbiAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGljb24pKSB7XG4gICAgcmV0dXJuIGljb247XG4gIH0gLy8gSWYgaXQgaXMgYW4gb2JqZWN0LCB0cnkgdG8gdXNlIGl0IGFzIGEgQ1NTIHN0eWxlIG9iamVjdC5cblxuXG4gIGlmIChfdHlwZW9mKGljb24pID09PSAnb2JqZWN0JyAmJiBpY29uICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIHN0eWxlOiBpY29uXG4gICAgfSk7XG4gIH0gLy8gSWYgaXQgaXMgYSBzdHJpbmcsIHVzZSBpdCBhcyBjbGFzcyBuYW1lcy5cblxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoaWNvbikgPT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG4gICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogaWNvblxuICAgIH0pO1xuICB9XG59O1xuXG52YXIgUmF0aW5nU3ltYm9sID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUmF0aW5nU3ltYm9sLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUmF0aW5nU3ltYm9sKCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSYXRpbmdTeW1ib2wpO1xuXG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihSYXRpbmdTeW1ib2wpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJhdGluZ1N5bWJvbCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfaWNvbkNvbnRhaW5lclN0eWxlO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGluZGV4ID0gX3RoaXMkcHJvcHMuaW5kZXgsXG4gICAgICAgICAgaW5hY3RpdmVJY29uID0gX3RoaXMkcHJvcHMuaW5hY3RpdmVJY29uLFxuICAgICAgICAgIGFjdGl2ZUljb24gPSBfdGhpcyRwcm9wcy5hY3RpdmVJY29uLFxuICAgICAgICAgIHBlcmNlbnQgPSBfdGhpcyRwcm9wcy5wZXJjZW50LFxuICAgICAgICAgIGRpcmVjdGlvbiA9IF90aGlzJHByb3BzLmRpcmVjdGlvbixcbiAgICAgICAgICByZWFkb25seSA9IF90aGlzJHByb3BzLnJlYWRvbmx5LFxuICAgICAgICAgIG9uQ2xpY2sgPSBfdGhpcyRwcm9wcy5vbkNsaWNrLFxuICAgICAgICAgIG9uTW91c2VNb3ZlID0gX3RoaXMkcHJvcHMub25Nb3VzZU1vdmU7XG5cbiAgICAgIHZhciBiYWNrZ3JvdW5kTm9kZSA9IF9pY29uTm9kZShpbmFjdGl2ZUljb24pO1xuXG4gICAgICB2YXIgc2hvd2JnSWNvbiA9IHBlcmNlbnQgPCAxMDA7XG4gICAgICB2YXIgYmdJY29uQ29udGFpbmVyU3R5bGUgPSBzaG93YmdJY29uID8ge30gOiB7XG4gICAgICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nXG4gICAgICB9O1xuXG4gICAgICB2YXIgaWNvbk5vZGUgPSBfaWNvbk5vZGUoYWN0aXZlSWNvbik7XG5cbiAgICAgIHZhciBpY29uQ29udGFpbmVyU3R5bGUgPSAoX2ljb25Db250YWluZXJTdHlsZSA9IHtcbiAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIHRvcDogMFxuICAgICAgfSwgX2RlZmluZVByb3BlcnR5KF9pY29uQ29udGFpbmVyU3R5bGUsIGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAncmlnaHQnIDogJ2xlZnQnLCAwKSwgX2RlZmluZVByb3BlcnR5KF9pY29uQ29udGFpbmVyU3R5bGUsIFwid2lkdGhcIiwgXCJcIi5jb25jYXQocGVyY2VudCwgXCIlXCIpKSwgX2ljb25Db250YWluZXJTdHlsZSk7XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIGN1cnNvcjogIXJlYWRvbmx5ID8gJ3BvaW50ZXInIDogJ2luaGVyaXQnLFxuICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZSdcbiAgICAgIH07XG5cbiAgICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShlKSB7XG4gICAgICAgIGlmIChvbk1vdXNlTW92ZSkge1xuICAgICAgICAgIG9uTW91c2VNb3ZlKGluZGV4LCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZUNsaWNrKGUpIHtcbiAgICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgICAvLyBbU3VwcG9ydGluZyBib3RoIFRvdWNoRXZlbnQgYW5kIE1vdXNlRXZlbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ub3VjaF9ldmVudHMvU3VwcG9ydGluZ19ib3RoX1RvdWNoRXZlbnRfYW5kX01vdXNlRXZlbnQpXG4gICAgICAgICAgLy8gV2UgbXVzdCBwcmV2ZW50IGZpcmluZyBjbGljayBldmVudCB0d2ljZSBvbiB0b3VjaCBkZXZpY2VzLlxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBvbkNsaWNrKGluZGV4LCBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIG9uQ2xpY2s6IGhhbmRsZU1vdXNlQ2xpY2ssXG4gICAgICAgIG9uTW91c2VNb3ZlOiBoYW5kbGVNb3VzZU1vdmUsXG4gICAgICAgIG9uVG91Y2hNb3ZlOiBoYW5kbGVNb3VzZU1vdmUsXG4gICAgICAgIG9uVG91Y2hFbmQ6IGhhbmRsZU1vdXNlQ2xpY2tcbiAgICAgIH0sIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgc3R5bGU6IGJnSWNvbkNvbnRhaW5lclN0eWxlXG4gICAgICB9LCBiYWNrZ3JvdW5kTm9kZSksIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgc3R5bGU6IGljb25Db250YWluZXJTdHlsZVxuICAgICAgfSwgaWNvbk5vZGUpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmF0aW5nU3ltYm9sO1xufShSZWFjdC5QdXJlQ29tcG9uZW50KTsgLy8gRGVmaW5lIHByb3BUeXBlcyBvbmx5IGluIGRldmVsb3BtZW50LiBUaGV5IHdpbGwgYmUgdm9pZCBpbiBwcm9kdWN0aW9uLlxuXG52YXIgUmF0aW5nID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkUHVyZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoUmF0aW5nLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUmF0aW5nKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJhdGluZyk7XG5cbiAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihSYXRpbmcpLmNhbGwodGhpcywgcHJvcHMpKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIC8vIEluZGljYXRlcyB0aGUgdmFsdWUgdGhhdCBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gdGhlIGZvcm0gb2Ygc3ltYm9scy5cbiAgICAgIC8vIEl0IGNhbiBiZSBlaXRoZXIgMCAoZm9yIG5vIGRpc3BsYXllZCBzeW1ib2xzKSBvciAoMCwgZW5kXVxuICAgICAgZGlzcGxheVZhbHVlOiBfdGhpcy5wcm9wcy52YWx1ZSxcbiAgICAgIC8vIEluZGljYXRlcyBpZiB0aGUgdXNlciBpcyBjdXJyZW50bHkgaG92ZXJpbmcgb3ZlciB0aGUgcmF0aW5nIGVsZW1lbnRcbiAgICAgIGludGVyYWN0aW5nOiBmYWxzZVxuICAgIH07XG4gICAgX3RoaXMub25Nb3VzZUxlYXZlID0gX3RoaXMub25Nb3VzZUxlYXZlLmJpbmQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSkpO1xuICAgIF90aGlzLnN5bWJvbE1vdXNlTW92ZSA9IF90aGlzLnN5bWJvbE1vdXNlTW92ZS5iaW5kKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpKTtcbiAgICBfdGhpcy5zeW1ib2xDbGljayA9IF90aGlzLnN5bWJvbENsaWNrLmJpbmQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSkpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhSYXRpbmcsIFt7XG4gICAga2V5OiBcIlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIFVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgdmFyIHZhbHVlQ2hhbmdlZCA9IHRoaXMucHJvcHMudmFsdWUgIT09IG5leHRQcm9wcy52YWx1ZTtcbiAgICAgIHRoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHByZXZTdGF0ZSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpc3BsYXlWYWx1ZTogdmFsdWVDaGFuZ2VkID8gbmV4dFByb3BzLnZhbHVlIDogcHJldlN0YXRlLmRpc3BsYXlWYWx1ZVxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUpIHtcbiAgICAgIC8vIElnbm9yZSBzdGF0ZSB1cGRhdGUgZHVlIHRvIHZhbHVlIGNoYW5nZWQgZnJvbSBwcm9wcy5cbiAgICAgIC8vIFVzdWFsbHkgb3JpZ2luYXRlZCB0aHJvdWdoIGFuIG9uQ2xpY2sgZXZlbnQuXG4gICAgICBpZiAocHJldlByb3BzLnZhbHVlICE9PSB0aGlzLnByb3BzLnZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gV2hlbiBob3ZlciBlbmRzLCBjYWxsIHRoaXMucHJvcHMub25Ib3ZlciB3aXRoIG5vIHZhbHVlLlxuXG5cbiAgICAgIGlmIChwcmV2U3RhdGUuaW50ZXJhY3RpbmcgJiYgIXRoaXMuc3RhdGUuaW50ZXJhY3RpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25Ib3ZlcigpO1xuICAgICAgfSAvLyBXaGVuIGhvdmVyIG92ZXIuXG5cblxuICAgICAgaWYgKHRoaXMuc3RhdGUuaW50ZXJhY3RpbmcpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkhvdmVyKHRoaXMuc3RhdGUuZGlzcGxheVZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3ltYm9sQ2xpY2tcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3ltYm9sQ2xpY2soc3ltYm9sSW5kZXgsIGV2ZW50KSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLmNhbGN1bGF0ZURpc3BsYXlWYWx1ZShzeW1ib2xJbmRleCwgZXZlbnQpO1xuICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKHZhbHVlLCBldmVudCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN5bWJvbE1vdXNlTW92ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzeW1ib2xNb3VzZU1vdmUoc3ltYm9sSW5kZXgsIGV2ZW50KSB7XG4gICAgICB2YXIgdmFsdWUgPSB0aGlzLmNhbGN1bGF0ZURpc3BsYXlWYWx1ZShzeW1ib2xJbmRleCwgZXZlbnQpOyAvLyBUaGlzIGNhbGwgc2hvdWxkIGNhdXNlIGFuIHVwZGF0ZSBvbmx5IGlmIHRoZSBzdGF0ZSBjaGFuZ2VzLlxuICAgICAgLy8gTWFpbmx5IHRoZSBmaXJzdCB0aW1lIHRoZSBtb3VzZSBlbnRlcnMgYW5kIHdoZW5ldmVyIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAgLy8gU28gRGlkQ29tcG9uZW50VXBkYXRlIGlzIE5PVCBjYWxsZWQgZm9yIGV2ZXJ5IG1vdXNlIG1vdmVtZW50LlxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgaW50ZXJhY3Rpbmc6ICF0aGlzLnByb3BzLnJlYWRvbmx5LFxuICAgICAgICBkaXNwbGF5VmFsdWU6IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwib25Nb3VzZUxlYXZlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBkaXNwbGF5VmFsdWU6IHRoaXMucHJvcHMudmFsdWUsXG4gICAgICAgIGludGVyYWN0aW5nOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNhbGN1bGF0ZURpc3BsYXlWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjYWxjdWxhdGVEaXNwbGF5VmFsdWUoc3ltYm9sSW5kZXgsIGV2ZW50KSB7XG4gICAgICB2YXIgcGVyY2VudGFnZSA9IHRoaXMuY2FsY3VsYXRlSG92ZXJQZXJjZW50YWdlKGV2ZW50KTsgLy8gR2V0IHRoZSBjbG9zZXN0IHRvcCBmcmFjdGlvbi5cblxuICAgICAgdmFyIGZyYWN0aW9uID0gTWF0aC5jZWlsKHBlcmNlbnRhZ2UgJSAxICogdGhpcy5wcm9wcy5mcmFjdGlvbnMpIC8gdGhpcy5wcm9wcy5mcmFjdGlvbnM7IC8vIFRydW5jYXRlIGRlY2ltYWwgdHJ5aW5nIHRvIGF2b2lkIGZsb2F0IHByZWNpc3Npb24gaXNzdWVzLlxuXG4gICAgICB2YXIgcHJlY2lzaW9uID0gTWF0aC5wb3coMTAsIDMpO1xuICAgICAgdmFyIGRpc3BsYXlWYWx1ZSA9IHN5bWJvbEluZGV4ICsgKE1hdGguZmxvb3IocGVyY2VudGFnZSkgKyBNYXRoLmZsb29yKGZyYWN0aW9uICogcHJlY2lzaW9uKSAvIHByZWNpc2lvbik7IC8vIGVuc3VyZSB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIDAgYW5kIGxvd2VyIHRoYW4gdG90YWxTeW1ib2xzXG5cbiAgICAgIHJldHVybiBkaXNwbGF5VmFsdWUgPiAwID8gZGlzcGxheVZhbHVlID4gdGhpcy5wcm9wcy50b3RhbFN5bWJvbHMgPyB0aGlzLnByb3BzLnRvdGFsU3ltYm9scyA6IGRpc3BsYXlWYWx1ZSA6IDEgLyB0aGlzLnByb3BzLmZyYWN0aW9ucztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2FsY3VsYXRlSG92ZXJQZXJjZW50YWdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNhbGN1bGF0ZUhvdmVyUGVyY2VudGFnZShldmVudCkge1xuICAgICAgdmFyIGNsaWVudFggPSBldmVudC5uYXRpdmVFdmVudC50eXBlLmluZGV4T2YoXCJ0b3VjaFwiKSA+IC0xID8gZXZlbnQubmF0aXZlRXZlbnQudHlwZS5pbmRleE9mKFwidG91Y2hlbmRcIikgPiAtMSA/IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFggOiBldmVudC5jbGllbnRYO1xuICAgICAgdmFyIHRhcmdldFJlY3QgPSBldmVudC50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB2YXIgZGVsdGEgPSB0aGlzLnByb3BzLmRpcmVjdGlvbiA9PT0gJ3J0bCcgPyB0YXJnZXRSZWN0LnJpZ2h0IC0gY2xpZW50WCA6IGNsaWVudFggLSB0YXJnZXRSZWN0LmxlZnQ7IC8vIFJldHVybmluZyAwIGlmIHRoZSBkZWx0YSBpcyBuZWdhdGl2ZSBzb2x2ZXMgdGhlIGZsaWNrZXJpbmcgaXNzdWVcblxuICAgICAgcmV0dXJuIGRlbHRhIDwgMCA/IDAgOiBkZWx0YSAvIHRhcmdldFJlY3Qud2lkdGg7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHJlYWRvbmx5ID0gX3RoaXMkcHJvcHMucmVhZG9ubHksXG4gICAgICAgICAgcXVpZXQgPSBfdGhpcyRwcm9wcy5xdWlldCxcbiAgICAgICAgICB0b3RhbFN5bWJvbHMgPSBfdGhpcyRwcm9wcy50b3RhbFN5bWJvbHMsXG4gICAgICAgICAgdmFsdWUgPSBfdGhpcyRwcm9wcy52YWx1ZSxcbiAgICAgICAgICBwbGFjZWhvbGRlclZhbHVlID0gX3RoaXMkcHJvcHMucGxhY2Vob2xkZXJWYWx1ZSxcbiAgICAgICAgICBkaXJlY3Rpb24gPSBfdGhpcyRwcm9wcy5kaXJlY3Rpb24sXG4gICAgICAgICAgZW1wdHlTeW1ib2wgPSBfdGhpcyRwcm9wcy5lbXB0eVN5bWJvbCxcbiAgICAgICAgICBmdWxsU3ltYm9sID0gX3RoaXMkcHJvcHMuZnVsbFN5bWJvbCxcbiAgICAgICAgICBwbGFjZWhvbGRlclN5bWJvbCA9IF90aGlzJHByb3BzLnBsYWNlaG9sZGVyU3ltYm9sLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgICBpZCA9IF90aGlzJHByb3BzLmlkLFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHMuc3R5bGUsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wcy50YWJJbmRleDtcbiAgICAgIHZhciBfdGhpcyRzdGF0ZSA9IHRoaXMuc3RhdGUsXG4gICAgICAgICAgZGlzcGxheVZhbHVlID0gX3RoaXMkc3RhdGUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIGludGVyYWN0aW5nID0gX3RoaXMkc3RhdGUuaW50ZXJhY3Rpbmc7XG4gICAgICB2YXIgc3ltYm9sTm9kZXMgPSBbXTtcbiAgICAgIHZhciBlbXB0eSA9IFtdLmNvbmNhdChlbXB0eVN5bWJvbCk7XG4gICAgICB2YXIgZnVsbCA9IFtdLmNvbmNhdChmdWxsU3ltYm9sKTtcbiAgICAgIHZhciBwbGFjZWhvbGRlciA9IFtdLmNvbmNhdChwbGFjZWhvbGRlclN5bWJvbCk7XG4gICAgICB2YXIgc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJWYWx1ZSAhPT0gMCAmJiB2YWx1ZSA9PT0gMCAmJiAhaW50ZXJhY3Rpbmc7IC8vIFRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCBhcyBiYXNlIGZvciBjYWxjdWxhdGluZyBob3cgdG8gcmVuZGVyIHRoZSBzeW1ib2xzXG5cbiAgICAgIHZhciByZW5kZXJlZFZhbHVlO1xuXG4gICAgICBpZiAoc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyKSB7XG4gICAgICAgIHJlbmRlcmVkVmFsdWUgPSBwbGFjZWhvbGRlclZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVuZGVyZWRWYWx1ZSA9IHF1aWV0ID8gdmFsdWUgOiBkaXNwbGF5VmFsdWU7XG4gICAgICB9IC8vIFRoZSBhbW91bnQgb2YgZnVsbCBzeW1ib2xzXG5cblxuICAgICAgdmFyIGZ1bGxTeW1ib2xzID0gTWF0aC5mbG9vcihyZW5kZXJlZFZhbHVlKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbFN5bWJvbHM7IGkrKykge1xuICAgICAgICB2YXIgcGVyY2VudCA9IHZvaWQgMDsgLy8gQ2FsY3VsYXRlIGVhY2ggc3ltYm9sJ3MgZnVsbG5lc3MgcGVyY2VudGFnZVxuXG4gICAgICAgIGlmIChpIC0gZnVsbFN5bWJvbHMgPCAwKSB7XG4gICAgICAgICAgcGVyY2VudCA9IDEwMDtcbiAgICAgICAgfSBlbHNlIGlmIChpIC0gZnVsbFN5bWJvbHMgPT09IDApIHtcbiAgICAgICAgICBwZXJjZW50ID0gKHJlbmRlcmVkVmFsdWUgLSBpKSAqIDEwMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwZXJjZW50ID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN5bWJvbE5vZGVzLnB1c2goUmVhY3QuY3JlYXRlRWxlbWVudChSYXRpbmdTeW1ib2wsIF9leHRlbmRzKHtcbiAgICAgICAgICBrZXk6IGksXG4gICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgcmVhZG9ubHk6IHJlYWRvbmx5LFxuICAgICAgICAgIGluYWN0aXZlSWNvbjogZW1wdHlbaSAlIGVtcHR5Lmxlbmd0aF0sXG4gICAgICAgICAgYWN0aXZlSWNvbjogc2hvdWxkRGlzcGxheVBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXJbaSAlIGZ1bGwubGVuZ3RoXSA6IGZ1bGxbaSAlIGZ1bGwubGVuZ3RoXSxcbiAgICAgICAgICBwZXJjZW50OiBwZXJjZW50LFxuICAgICAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uXG4gICAgICAgIH0sICFyZWFkb25seSAmJiB7XG4gICAgICAgICAgb25DbGljazogdGhpcy5zeW1ib2xDbGljayxcbiAgICAgICAgICBvbk1vdXNlTW92ZTogdGhpcy5zeW1ib2xNb3VzZU1vdmUsXG4gICAgICAgICAgb25Ub3VjaE1vdmU6IHRoaXMuc3ltYm9sTW91c2VNb3ZlLFxuICAgICAgICAgIG9uVG91Y2hFbmQ6IHRoaXMuc3ltYm9sQ2xpY2tcbiAgICAgICAgfSkpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIF9leHRlbmRzKHtcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBzdHlsZTogX29iamVjdFNwcmVhZCh7fSwgc3R5bGUsIHtcbiAgICAgICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICAgICBkaXJlY3Rpb246IGRpcmVjdGlvblxuICAgICAgICB9KSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWwnXVxuICAgICAgfSwgIXJlYWRvbmx5ICYmIHtcbiAgICAgICAgb25Nb3VzZUxlYXZlOiB0aGlzLm9uTW91c2VMZWF2ZVxuICAgICAgfSksIHN5bWJvbE5vZGVzKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUmF0aW5nO1xufShSZWFjdC5QdXJlQ29tcG9uZW50KTsgLy8gRGVmaW5lIHByb3BUeXBlcyBvbmx5IGluIGRldmVsb3BtZW50LlxuXG5mdW5jdGlvbiBub29wKCkge31cblxubm9vcC5fbmFtZSA9ICdyZWFjdF9yYXRpbmdfbm9vcCc7XG5cbnZhciBSYXRpbmdBUElMYXllciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFJhdGluZ0FQSUxheWVyLCBfUmVhY3QkUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gUmF0aW5nQVBJTGF5ZXIocHJvcHMpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmF0aW5nQVBJTGF5ZXIpO1xuXG4gICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoUmF0aW5nQVBJTGF5ZXIpLmNhbGwodGhpcywgcHJvcHMpKTtcbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHZhbHVlOiBwcm9wcy5pbml0aWFsUmF0aW5nXG4gICAgfTtcbiAgICBfdGhpcy5oYW5kbGVDbGljayA9IF90aGlzLmhhbmRsZUNsaWNrLmJpbmQoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSkpO1xuICAgIF90aGlzLmhhbmRsZUhvdmVyID0gX3RoaXMuaGFuZGxlSG92ZXIuYmluZChfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKSk7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFJhdGluZ0FQSUxheWVyLCBbe1xuICAgIGtleTogXCJVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBVTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB2YWx1ZTogbmV4dFByb3BzLmluaXRpYWxSYXRpbmdcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVDbGlja1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVDbGljayh2YWx1ZSwgZSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBuZXdWYWx1ZSA9IHRoaXMudHJhbnNsYXRlRGlzcGxheVZhbHVlVG9WYWx1ZSh2YWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLm9uQ2xpY2sobmV3VmFsdWUpOyAvLyBBdm9pZCBjYWxsaW5nIHNldFN0YXRlIGlmIG5vdCBuZWNlc3NhcnkuIE1pY3JvIG9wdGltaXNhdGlvbi5cblxuICAgICAgaWYgKHRoaXMuc3RhdGUudmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgIC8vIElmIHdlIGhhdmUgYSBuZXcgdmFsdWUgdHJpZ2dlciBvbkNoYW5nZSBjYWxsYmFjay5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgdmFsdWU6IG5ld1ZhbHVlXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMyLnByb3BzLm9uQ2hhbmdlKF90aGlzMi5zdGF0ZS52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJoYW5kbGVIb3ZlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBoYW5kbGVIb3ZlcihkaXNwbGF5VmFsdWUpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGRpc3BsYXlWYWx1ZSA9PT0gdW5kZWZpbmVkID8gZGlzcGxheVZhbHVlIDogdGhpcy50cmFuc2xhdGVEaXNwbGF5VmFsdWVUb1ZhbHVlKGRpc3BsYXlWYWx1ZSk7XG4gICAgICB0aGlzLnByb3BzLm9uSG92ZXIodmFsdWUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ0cmFuc2xhdGVEaXNwbGF5VmFsdWVUb1ZhbHVlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRyYW5zbGF0ZURpc3BsYXlWYWx1ZVRvVmFsdWUoZGlzcGxheVZhbHVlKSB7XG4gICAgICB2YXIgdHJhbnNsYXRlZFZhbHVlID0gZGlzcGxheVZhbHVlICogdGhpcy5wcm9wcy5zdGVwICsgdGhpcy5wcm9wcy5zdGFydDsgLy8gbWluaW11bSB2YWx1ZSBjYW5ub3QgYmUgZXF1YWwgdG8gc3RhcnQsIHNpbmNlIGl0J3MgZXhjbHVzaXZlXG5cbiAgICAgIHJldHVybiB0cmFuc2xhdGVkVmFsdWUgPT09IHRoaXMucHJvcHMuc3RhcnQgPyB0cmFuc2xhdGVkVmFsdWUgKyAxIC8gdGhpcy5wcm9wcy5mcmFjdGlvbnMgOiB0cmFuc2xhdGVkVmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInRyYW5sYXRlVmFsdWVUb0Rpc3BsYXlWYWx1ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0cmFubGF0ZVZhbHVlVG9EaXNwbGF5VmFsdWUodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKHZhbHVlIC0gdGhpcy5wcm9wcy5zdGFydCkgLyB0aGlzLnByb3BzLnN0ZXA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHN0ZXAgPSBfdGhpcyRwcm9wcy5zdGVwLFxuICAgICAgICAgIGVtcHR5U3ltYm9sID0gX3RoaXMkcHJvcHMuZW1wdHlTeW1ib2wsXG4gICAgICAgICAgZnVsbFN5bWJvbCA9IF90aGlzJHByb3BzLmZ1bGxTeW1ib2wsXG4gICAgICAgICAgcGxhY2Vob2xkZXJTeW1ib2wgPSBfdGhpcyRwcm9wcy5wbGFjZWhvbGRlclN5bWJvbCxcbiAgICAgICAgICByZWFkb25seSA9IF90aGlzJHByb3BzLnJlYWRvbmx5LFxuICAgICAgICAgIHF1aWV0ID0gX3RoaXMkcHJvcHMucXVpZXQsXG4gICAgICAgICAgZnJhY3Rpb25zID0gX3RoaXMkcHJvcHMuZnJhY3Rpb25zLFxuICAgICAgICAgIGRpcmVjdGlvbiA9IF90aGlzJHByb3BzLmRpcmVjdGlvbixcbiAgICAgICAgICBzdGFydCA9IF90aGlzJHByb3BzLnN0YXJ0LFxuICAgICAgICAgIHN0b3AgPSBfdGhpcyRwcm9wcy5zdG9wLFxuICAgICAgICAgIGlkID0gX3RoaXMkcHJvcHMuaWQsXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHMuc3R5bGUsXG4gICAgICAgICAgdGFiSW5kZXggPSBfdGhpcyRwcm9wcy50YWJJbmRleDtcblxuICAgICAgZnVuY3Rpb24gY2FsY3VsYXRlVG90YWxTeW1ib2xzKHN0YXJ0LCBzdG9wLCBzdGVwKSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKChzdG9wIC0gc3RhcnQpIC8gc3RlcCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFJhdGluZywge1xuICAgICAgICBpZDogaWQsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWUsXG4gICAgICAgIHRhYkluZGV4OiB0YWJJbmRleCxcbiAgICAgICAgXCJhcmlhLWxhYmVsXCI6IHRoaXMucHJvcHNbJ2FyaWEtbGFiZWwnXSxcbiAgICAgICAgdG90YWxTeW1ib2xzOiBjYWxjdWxhdGVUb3RhbFN5bWJvbHMoc3RhcnQsIHN0b3AsIHN0ZXApLFxuICAgICAgICB2YWx1ZTogdGhpcy50cmFubGF0ZVZhbHVlVG9EaXNwbGF5VmFsdWUodGhpcy5zdGF0ZS52YWx1ZSksXG4gICAgICAgIHBsYWNlaG9sZGVyVmFsdWU6IHRoaXMudHJhbmxhdGVWYWx1ZVRvRGlzcGxheVZhbHVlKHRoaXMucHJvcHMucGxhY2Vob2xkZXJSYXRpbmcpLFxuICAgICAgICByZWFkb25seTogcmVhZG9ubHksXG4gICAgICAgIHF1aWV0OiBxdWlldCxcbiAgICAgICAgZnJhY3Rpb25zOiBmcmFjdGlvbnMsXG4gICAgICAgIGRpcmVjdGlvbjogZGlyZWN0aW9uLFxuICAgICAgICBlbXB0eVN5bWJvbDogZW1wdHlTeW1ib2wsXG4gICAgICAgIGZ1bGxTeW1ib2w6IGZ1bGxTeW1ib2wsXG4gICAgICAgIHBsYWNlaG9sZGVyU3ltYm9sOiBwbGFjZWhvbGRlclN5bWJvbCxcbiAgICAgICAgb25DbGljazogdGhpcy5oYW5kbGVDbGljayxcbiAgICAgICAgb25Ib3ZlcjogdGhpcy5oYW5kbGVIb3ZlclxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFJhdGluZ0FQSUxheWVyO1xufShSZWFjdC5QdXJlQ29tcG9uZW50KTtcblxuUmF0aW5nQVBJTGF5ZXIuZGVmYXVsdFByb3BzID0ge1xuICBzdGFydDogMCxcbiAgc3RvcDogNSxcbiAgc3RlcDogMSxcbiAgcmVhZG9ubHk6IGZhbHNlLFxuICBxdWlldDogZmFsc2UsXG4gIGZyYWN0aW9uczogMSxcbiAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgb25Ib3Zlcjogbm9vcCxcbiAgb25DbGljazogbm9vcCxcbiAgb25DaGFuZ2U6IG5vb3AsXG4gIGVtcHR5U3ltYm9sOiBTdHlsZS5lbXB0eSxcbiAgZnVsbFN5bWJvbDogU3R5bGUuZnVsbCxcbiAgcGxhY2Vob2xkZXJTeW1ib2w6IFN0eWxlLnBsYWNlaG9sZGVyXG59OyAvLyBEZWZpbmUgcHJvcFR5cGVzIG9ubHkgaW4gZGV2ZWxvcG1lbnQuXG5cbmV4cG9ydCBkZWZhdWx0IFJhdGluZ0FQSUxheWVyO1xuIiwiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gU3RhclllbGxvdyhwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiI0ZGQkYzQVwiXG4gICAgICAgIGQ9XCJNMTEuMDgyIDEuMTMzYy4zNDctLjgwNiAxLjQ5LS44MDYgMS44MzYgMGwyLjYzMyA2LjExMmExIDEgMCAwMC44MjYuNmw2LjYyNi42MTRjLjg3My4wODEgMS4yMjcgMS4xNjguNTY3IDEuNzQ3bC01IDQuMzkyYTEgMSAwIDAwLS4zMTUuOTcxbDEuNDYzIDYuNDkyYy4xOTMuODU2LS43MzEgMS41MjgtMS40ODYgMS4wOGwtNS43MjEtMy4zOThhMSAxIDAgMDAtMS4wMjIgMGwtNS43MjEgMy4zOThjLS43NTUuNDQ4LTEuNjgtLjIyNC0xLjQ4Ni0xLjA4bDEuNDYzLTYuNDkyYTEgMSAwIDAwLS4zMTYtLjk3bC01LTQuMzkzQy0uMjMgOS42MjcuMTI1IDguNTQuOTk4IDguNDZsNi42MjYtLjYxNGExIDEgMCAwMC44MjctLjZsMi42MzItNi4xMTJ6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXJZZWxsb3c7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiBTdGFyR3JheShwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgIHsuLi5wcm9wc31cbiAgICA+XG4gICAgICA8cGF0aFxuICAgICAgICBmaWxsPVwiI0Q4RDNDRVwiXG4gICAgICAgIGQ9XCJNMTEuMDgyIDEuMTMzYy4zNDctLjgwNiAxLjQ5LS44MDYgMS44MzYgMGwyLjYzMyA2LjExMmExIDEgMCAwMC44MjYuNmw2LjYyNi42MTRjLjg3My4wODEgMS4yMjcgMS4xNjguNTY3IDEuNzQ3bC01IDQuMzkyYTEgMSAwIDAwLS4zMTUuOTcxbDEuNDYzIDYuNDkyYy4xOTMuODU2LS43MzEgMS41MjgtMS40ODYgMS4wOGwtNS43MjEtMy4zOThhMSAxIDAgMDAtMS4wMjIgMGwtNS43MjEgMy4zOThjLS43NTUuNDQ4LTEuNjgtLjIyNC0xLjQ4Ni0xLjA4bDEuNDYzLTYuNDkyYTEgMSAwIDAwLS4zMTYtLjk3bC01LTQuMzkzQy0uMjMgOS42MjcuMTI1IDguNTQuOTk4IDguNDZsNi42MjYtLjYxNGExIDEgMCAwMC44MjctLjZsMi42MzItNi4xMTJ6XCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXJHcmF5O1xuIiwiLyogZXNsaW50LWRpc2FibGUgQG5leHQvbmV4dC9uby1pbWctZWxlbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYWx0LXRleHQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIEhhdGUocHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBzcmM9XCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFCZUVTVVJCVkhnQjVWdDVrRnhIZWYvNnZUZjN6TzdzcFYydFpFbXJBOHNyeVphUmZNbzJQZ2d4TGh3N0pqSldUQ0VLVTVDUU1wQ2tDSkJLNFZWUmxSQmNaVklwamdBVlRHSkk0U1BFVGxTWUV0aGE0VU9Xc2ZBcEdXVEprbld0dE5wN2RvNTNkZWY3dXZ2TjY1bGRYYmJNUDNTcHQ5K2JlVWYvZnQvWlg0OEEvb0NiQUVqQUgzcGo4SHRzQXdNRDFpMnRneTBzN2VaU1laakxKa1hDRHdXelhQQjVtSzM0YnEzeTZvc0xKMjUvK09FUWZrL3RYU2ZnNVh1djZldE1qNnpLWjZxWFduYTQxRW1KcGN5Q0luTkVsb0Z3YUFZQ21NOUNWaEVoVElXdTJCLzRpUU9UYnZxWnNXcmhwWXUrOFB3QmtOcjY3clJ6VHNCREEvM0ppL09KRlYyWjBkc1QyZkQ2VkRaWVkyZkJocHdGa01TZXdtN2pheDBXdjUzZytmaUhjd0FQUnhmSGNnaThBbUd0bkh6TmRaM0h5OVgwL3h3NjFQSHFsZC9ZWG9WejJNNFpBZC85MUpyRTljdkthK2ZreGorVHlmZzNKb3E4RS9JT1NPQnA3Qm1oQ0VqbUVYd0xrbEFBc0ZKcUNzSURDS2VRaEVrRVA0MGtJQUV1ZmxYRGU2WVZHZjRFbkhBcmllM0RsZUs5TzNkY3RQMWNtY2s3SnVBRkJONjJwSFJOZDJGa0lKM3pMN2M3TFFmeU5rQWVINTFGQWdyTGtJVFZTTUlsQ0h3SkFwK0hkNld4Si9YckkrME9RS0lPaC9Id0FFRDFPZXl2QUpSK2h3U1VrQWo4ZWhveGo0VjhlaXI1U3NWTmZYSGJWTnZnN1FPN1BYZ0g3UjBSc0hXZ1A3K3lNSEpQc2FYNlNhZERGS0dBRWk3aUkzTlpnSTRiRVB4MXFQSnI4VXFVTmxnYXJLMWZHL1dvY2QyRjBjdW9EWHNBS3RzQmhoOUJNc1lBVUZHZ3hNRWZoWW55UlBLeGw2WVhmUDY2Z1pjbTRHMjJ0MDNBdm4rYS8rSGUvTVJBdXBPdmhLS3RnTGUwQS9Sc1FMelhJOTV1QllnUllFc0R0M1FIWXdTSXRZQWJIYVV0b21OcUtPankwd0JERHdDTXZ3a3dpWjlQaGxBWmR0NHFsVE5mNnY3aThRY1pPM3RuZWRZRWtNcDNMVHAyUjIvcjZIZWNUcGFERGxKMy9HSXVndTY2QXlYZWh4TTNKYTJCTS9PY3FjOGF2Q0EzUnV3aWpJa0FnNGh3QkFsNEV1Q3QvMEJOOEFGRzBUK01zYWxqWXkxZjJ2ZUw1ZCsvYm5Bd2dMTm9aMFVBZ1YrNGVQKzMydHZMRzYwdUt3bXRlSHZYQW9ENUc1R0V0UnFBSVcxbVN0NGtBS0JSQTJBbUFXQVFJSm8wZzU3akhnSTQvRU9Bbzc5QnN4QWdoZ00rT3BaNzZOZlZqay9mdEdudkZKeGhzOC8wd2hjRzFtUjdXdC84U25mbjlPZXNEdHVCTnB4RTUyS0F2cjlGWjRja2dLOG5aMHBPSDdPd0NjQnNQV2pzd3RmSHM0MW9EaGhiSVg4aFhvZm03eDhFVkgrV0JtOUZtK2ZucnJ0bC90WWZQejUyUmxIaWpBaWdETzU2NStmZjdPNHMzMjNOc1MwcCtmUFF5YzM3R0diVEdRUVl6QVREdUJwUEJWSjJUNFBTd0JxNkd4OEx2L0ZhZVk3dnlGK0VRYVVEUStZdXRETEJzdHk5ckRqaEwrdS81b3JOancwZU9LMDVPSEFHN1dQc3UzZDJGVXAzV1VVRVQrR3RFMTg2NTJhdHhUV0k3ZG1LdTJoeWZDeTZ4b3dDWmpQVlh4aHFIelorTHMvTkVUOXZ4Zm4wb204SU53TnpMV2dQS245Mnc5aXJ2MEpYOUozVE9jYlRFbkJ3VS9jdFhmblJmN0U2TFNYNTdqWG84RDZFMzFSajBNSzBiUTJRTlRsQllSbEVSZUJaRXdIQ0FHeUFiUEFCRVVHaGRyYWFoUFlyRkJ6L1ViQTUyRDN1NUgzN052VlVBSTc5RUU3UlRta0NXd2V1elM5S0huZ2szeDdPaHlMRmVGUzErZXNSQjA3Y0NsVW45YmRPWnRlRzJqUFRqbWN6Q2RNVUloL1FaUGNOMTJzekVJSHFISThkRE1QQktGck9NSkhnSkQxMzFjMVhYZnFqZng4OFhEMXJBc2pqTHk3c3VxK2p2WFlqYTBObTI0c0lIdFUra1RiQWh5Y0gxQUE0YUFRM3E4MjdNTVB1bzJ0RTB6bDFIblZmZDMyY1dvaVhZVGJwVFVFeUROc1RsZkhpRGJjdCtNWEpuT0pKVGFDMTY4aTZsblR0ZGtZMlQ1bHJjUlZlVFFGZjJ6d251MmFxQzMxc3FyZ3dReDlBN0F0bVUzOXFRdWREVGI1Z3RuT3AvcUJNZ3d0dEN2cDdFa3c3bXVrWWhzazhoOVpTN2FQbkRaZTM0SmMvblEzbnJCcUF6MlBlVS95QjFtS3duTFZTbGpjWG5SN0dlWXZVblN1Vlk0WUdpRWdEUEQwUlErck0xQUJUK3RHNXFmck4waWNWZHh2UHBiU0RSdW1IdEpneXRJRGhPb1BqZmJVUmNBS2V0R3JCQmRldFduai9qNStmcVFXemFzQ09yeXg0NzZyczBTc1pyZUtTV0RWcXdVVU1SOGx6cGlYZnJBRk1mVWNTdGp3dDVVZ1R6THpmelA1bWl3TFJhQ1pGRUo4TEpSMHBkVzVJbjV1ZmNmVlpmaEd1UUE4QlMwMUNJZU91N0cxMTM0ZDNiMm5HT2tNRC92WHVwYW5MMHNmdkt4YkRGVlllSjl3eER3bkFSTWNXalZJSDdRQ2pKRWMwT3puNlRpZEg1S3lZNlNObWs3N2hGMFN6bG9STmtvNGNIL2JBVjUrWjMwbk5BR1dHNWVQMGFzYkxRZkh5TldzZWZmaTV3OEVwTmVES3RMOGk3WVJYc1NSS0tFSDIzNjBtUk14YWxwSzBsRHdlaHl5MmZVc0xDaVhMUGN6UEt4Vjh2d1dKZkE3c1JFSUwyTlFBZ01hMVFQT0k2VzJJcTc3cE1tTHowS1dud1VrbDFSMTFKUWtiTlVJZUUxOTZMWkZzeFo0RUsrSGh5cngyN2ZuNVk1U3ZQM1ZLQWxxVHBWdlNxYUNISlJ4ZHZFQVBHTkk2M1c0Q0VNVjdwdWZMcExhWGowL0JyeDdiQjA4L09ReVVnMXo5Z2Jtdzd0WmxVT2dwbnNJQlFnTncraGZXWEhoangwRjQ5UDU5TURIbXd1SmxXYmpoMWo1WXZIbytjczhNb0V5TjFPVm5RcDlydjVUQjBGMCtCcWtNTDdST2p0N1JUTUFNRS9pYmE1eDc4L21nMThsaHVhN1FpUnFBT2JjbFZLZjBsZ25kSTNNSTFUbU93dmRneTRONzRPYy9QWXFUQ1ZGeUhIYTlOSW0zK2ZDZWl6dHc0bEZ5RTV5a2MrblpCZDU3OExVaCtNOXZ2QTRqeHlwSXU0QWpoMnF3NzdlVHNPYXlJcVRTdG9vQUpPVlFPK0VJTkEvVlNKOVRENmlpTklreTVGQ3JXYm5XNi8xL0d4eU1zOE9HSmRuV3Y3dHdmdGF1ckpiMU9senZLT2w3Um5mVlNCNDJPcVl4cU1rK2ZuUU1udHg4QkhxUXQ3NTVGdlROdC9DWXdiTmJobUI2R0lzWmZyVityZXloN3VablBpWnZYaG0yL2U5YjRFMjcrQXhiUG1zUmp1V0pHanozeEdFMC8rZzVlaDQwY3RlWWx6RS9Ld0VDelVjZ3BwUlR1K0I5M2dYOWNESVR5TExKaXh4SE9NS2llcTJqMVR0UTlrVU1TN3ZYeTFFbjhnV3hTZzhkbklaTVFrQmJpd1V0T2ZXZHJPdFVReGc5Vm9hV3pwU09DbUJZZ1lBNFdpaXZ6bENLUS91bm9SMVQ3eUxtSVRRVk5HVjhOWU5EZTB2bzQzeVVqNjFzUDlUUlFSNkRFUWw0ckNWMlFoWmliUnRZYXpCNk1WNzEycXdFRk1UVTFhS2V1anRLbmFSSHRUVUpWZ3lhVy9IODZUQmhnWThxbDAwelNLZlVwS21sRVhNR3UrK0h1dmdKSjJrUkVZb0xtd3JJK0N6eW4rUjdVemhtMCtvNWdrQUZvUTdMd3JCN3NpUVIrd1JwRWdGTzFaWUJnYkFsaFlkWkVqd3d3d1RXcjhkM2NyK1BQTGRneXFFSm9jT0t0S2RRaDVoQTI1a2VSVmkzeFk2ZVRDTWs3ZFBJWjdYMXBqU2hKK3RjUHkrUXZxSmpia28vb0xHMXpVbWhKSG5qR2lDYVV6MDh4czhUWEVjOUVoeE9KTUg4WlM5OGQwMWlCZ0dmdVhKMWdiR3dUMmh0RkRMakRJd0o2dU1nSWtUSDMwQ1RnK1A4eFJtWXU2UUExU3FHTDVRRTlVcFZ3TkpMT3FHekIxVWk4SnA4aWhjL0p6cW51TzY2c1BiR1h0UW9CaTd1RXdUNEhCZjNEVEN5d3BVM3paVW1vaHljSDg4bk1BUVZPVUJKZ0M4MUpzTEZJT3diZmNOdm0wSEE5SWpJY2NHTEFwaE9zME9wQVNMa3NWMXhYWjZLR0s1N1haV1ZXVGp4OTI5Y2dwRW5EK1BqQWlZbUJMVDNGZUg5SDFzRXJPTEZhbGwvcHBHOW1XcUw2dDMvM2dLc3UyTXBUR0pGZkh5Q1E5VzM0WkpiRjhHODh4SUtMTmYySGRrNm1MYXZsOUR5MlFHZUJpcHRrSUlWQllmeHdnd2YwT0tWY0tzS01wd1NFSXJwb01LUkFxMVRYYksxS1AydEwxNmlsRmRkdHhCWHBCc0hWc0t4b1FBc2REdzljeGxZNVlxeXpTaEZack1sUHN3NHhiVnNlUm91dnlvSHl5KzVGQ1pIQW1pZms0Q0NqWjU5dXFxSkErMzB0QS9nWURoQzVRZUVOZ0hTWk1Ja00yY1EyV1E0bnA5QkFPcWJ3MjJlaUpJcElRdzJvOVFjRE1jSGNRSWtuMHhlaXhqM0EzQW1KbUYraTA0eEpuZ01tQm1KRTV1bEtpUkU3RGhvcUxoWWJmZXhESUhYMVNyR1hLeFl5dlc1aU5oMmVmd1o0UkJ5Rk5HamJTN0MxRXdDNVBzdHhJSjdjbnB4b2ZBTE5mL0lpTGllUEkxUlJxYmZCeFE1cENveXRiM0ZETkR5R3RFVS9tWTZ1ZnA3NnBjWVFJVmVaa2VMSDNtc0pTNk0rK2xFcXI3UUpJalk0Z2cwajE5Y0o4Qk5aQU9Nc3lHUDBtdFNJYTBGVW1BUmVJcEpVZHhsMGFSQXJ3Yko1ZHRRajJXV1Z1MEl2R2dxaFRkWHhFelFZRHhiR0JLdXIvd1lOR3dpUmZPTFFOUDlYR0VnUDFaM055RzZZbWI3TXdpb3NIUTVERVdGY3pPS29QUEFFNXZ6MkFRaURiQ2lDZWpQb29SQWlIamxHMTBMWUNSTkVmQm81azNyQTJGSWNWYUFldVFSS1dBUUUxOHJwQUJEalVGSUZ5VXhnVlZ4V1N2dU5CNXBKQ0RYYnBYRkVXdUNWRUE2NlZEb0NJQ09oRHl6bzVZQzlmVS9HQktnRE5HMFJ6REFNOE54NGtRQ1hDa0diZ0Mxa2d0dWxSd1Z4eXFiRFpsY0FpdnNDYkF4NHlIbnFVQng5VHdEV0wwU0JNMGFBSFV0a1YrajUxY09NQTR5S21DSmFjaUo4Z3dOZUthMnMvUkJrZDhiQnY1YTdrZlJpYW1IWUdjVVY2blNhMW14a3pGM2QrazdvYk1lcVNIUkpBV0crUkFtY0ZHejkzZFQ4TXJMWlRneTVNSFl1TW9WcFA5RXdQbXNCZDFkTnF6c3o4SjdMaWpBdkw0OEpMSUo1RlpyVmFUeTB0NXR3eUdhMHRlcGV1Z3J6NC9IcU5YMTFFQ2xMUFpCM3VPUHpTQmdZQUQ0SDk5dHZ4a0dRdDBVS0MwZ1gyQlo5REJmU3ByWmRwTkQxRTVKcmhhTlkweWZLWlNXVGxUZ3RSZkg0Y2x0RTNCMGlCd3N4eUlUQWk2bWNLR3AxaHRlellmcGNSZjI3Zyt4ZTFEWU5nV3JWMmJocXF1TDBMdTBEUnhaVHhBei9VRWRQS3RyZ0V4OGRFWklZVkNuQWhvVGRuRDIzL1RadmQ0TUFxaFZSY3VPdkZ0U0NSWjJtelFmbDVQY0R0QVBxRFdCd0MrWWs0SUcyN1VzUXhPVXAvWXFOZGp6eWpnODlOTmhPREVhUUQ1dnc0WHI1c0RxYTN0aDRiSVc2T3hLZ0dNcEM2RVVZYW9Vd1BBUkYxNStkZ2plMkhrQ250NHhEYzgrWDRZUDNsQ0dkZGQwUUd0UHdTaUdSSDZnc1l1b09rUWtvTGk1QmsyWlpJQ1pKQ1dhMDZ5d1EyNG16a1pBSmQvOW1sY2VDcE8rc09rbWgyNUtVaTAwUkxza00vQ1Zsdzl3NW83K2dRTmpqVTZLZ2JUeEhZTWo4TmpQUnNCREFwZXY3b0FQM0xrTWxpek5ROUxEWmF5SHljeUp5QXp4UFhoVE8ycFArMXdienY5b0g0emNzaEMyYlQ0SU8zNzJGdnpzaVFuWWY5Q0ZqUnZQUXorVlJkOXFHZG9Bc1Zub2NoaGxmYVQrcExsUzRqSnJWd1RnSWxLNHlUblBSdzZRV2tOQjVMK2VQanB4MXlYcG0yMDc3SFdTK0NwYzh0cll5UTV0dVJERVk3SjFHaVY0czBKa3lVTy9Fc0t6ZzBQd2swZUhJWU5TLy9QUHI0YWIxeStDN29RTGRvWEErM3JEWnhZUVNCYXJlcEJESVAxSTJzWHZYd2pIM3BxQ1BhK1hzQ0JTZ2NYejBwRE5wMUJyTEdqWUlRdERaYUt5dTFMNkFUNkxRSHZvYUwwYUZrUEttRTU3NlgzYjJqNHhNRGc0S0dZbGdOckgxMmFYT2N4ZEp3bElFQUU0RWdFMmdSZXFIS1ZyZ3F4aEN3eWt4MzM5MVJGNFpQTXdwcTVaK01oZlhRaXIzNE5TSzFWaXU0VlQ5U2pUeEd2UkwrVFFsNXgvMlR4Y0VISFl1V01FcGlaOVdOWGZnbk94WWllbzF5eXlKQzZkbjRlS3dLWGErNTRDVHlTNFNFQWx5RDY0OGQ2ZmJ6Ynh6cWdKbHJPZEQ2YmM2bDJleDl0dEY5ZjFTYTQwSVZBZW56RlB3eld5R0lGVkY3VEx5ZEV5L09pUklVaGlPUHZMTDYrQnJoUXlVbkpqZ0hLWUpmdUxINlFIbld5aEdoZEZGVDZ5WVFrV2dFTFl2dlVJTE45K0FpNi92QnMxa3B5eFY3ZDVNdkFJUERrOGtuNkFLMG5mMWQyekpnT1dld2lYVmcxdnRKcW5NSytRZXRVWHlTMUIvVWI5c0tna0lGZHNlbHVxdnB6MXNMTGx3ZGFuUnJDU1pNT0dUNitDTHRwRWtTdEFJMEdSRXRON0NrSnZxbktta3luZFF3c2Fma3FBZ0t6eE10eTJmaWxjZW5VdmJCa2NoZEdoc241L1VDL0xrUW53SUl4VzVncThwN1RBZDRtVXhJNDNzd3QzTnVPZFFjREtnZDJlYTgvNVZsQkZQbXRhaGJBSEhsZDJwVDJyQ09pbE5mMXlEL2J0R1lPbmZqME9ILy9VU2xqUml3N1NEYUJoRmRud1V3SHQrdXRiQ0VKWGRhSU84YWpKeUxrMTJMQmhHZTdPSmVIeEo0NWgrUytxS2JweUxod1hZUVRlOXhWd0Q0VVhxWDlZNDZLVW1QT051NzcrVE9tMEJGRGJVMnZiNFluVUMwRk5zVWZkSXlaMS9ZRklJRldUQlE1UncycHdGYmEvT0FscnIrcUI1UXRRTmFseUVjWG5TTUtSbzR1U0ZzN2l6QzQ2TnpVbDBwQW8xY1ozcGFvbFdMOWhFZXc1NUVGbHNneXE4S2xxRnFTWVpQZDFqNi90bjZyQmJwaDY0NGIyUmIrY0RldXNlNE9iZHc3eERWZDBIMDc2NVQ5Qlg1ZWk3TTZ5bUY0Q0tIdW1pQ0FUUDh3N1F6ejQ3WEVIYnJ1cEhSTFZHalFVSmVvbEprUHRCWnVaMzBlRjBZaVlVTlFMR3ZVOVA1UjBad3NXV2VibDRQalJFdlIya2hWd0pYbFpJRUxRQkJqOVJXMGFCWWJGV0s4Q1pZOFYvMkxoMTNlOVBodldrKzRPRjFkMFAxRjdlZUoreDYxK3ppY25tT0F5QWxnMlZlbUZqQWdVR1dRZWhFOVovOEVjSk4wcHhTbDlJSFRxTExmUDlLL0VtQmsxV0tORDVGcjhFWG1nazNoWis5TWpKZk5sSDFhZlowRnRUZzY1Y2JYTkN3bmVWUDNBRFVuMWtaalU1a3lQL2N1VDRXUndpcloxWUZFeGUvem9jOGswUHo5ZHNERTN0eUdGR3liSkZJN1lpUURIa2VWbTlNcVd4bW1yWklrNUNyaXNFVENEQUNQczFZc2pBaHFMSVFMcVA1T0x5bkJDVmFka2xZZjhFRmNwZTZCVGQ0KzI0MUQ2MVhLZ0pJK1paYlhxRERsekZseTQ1cDQ5b3lmN3Fjd3BDYUJheVBiUHR0MWhCNlVmWkFxUWRpSUNjUFZHdXpNT2V2d0U1UXFxNWk3ekJjc1dNaitRaXhqcWRTS2FmeXNFTUtNOFZxOEZhQUs0M3ZYUjlUMVY4aE82cENpMDZpc0g3WktmUXFsNzAwUUFyamFuWWRvWHVjOWQ4YzJKKytXYlRrTEFhWDhqdEtWai9NRS9HbTNOdStYeWR6QVh0aTBXT3l0TzJUQ0NVcXRHTWc5TW1YR1VXU1BPamxuVTlZWkt0S0hLekZXa21VdEVmMFFkTUlCYUxrUGtPN25Rd0puVUFKWHNoTkxodVNoMXZ4YklUTlF2YzFIbCthOW1nNGtIVGdVZTRBdzBnTVlEbXlCMWVMancvU3lyM0pscXNaaWRzVEhaUWVrbnRTbmdwa2pDWVhJZFQrQnQ2VFJOekRwMVlqcm8xRWY5eDZ3RFFsVFJFYnFreFhRNVMyZ0MxTXBPT1QybDlrU0NWd21sM2RlbTBBeUM5R1BGN2dXM3I3aG50Mzg2QXM3b1ozS0xNSU1QbG5kLzh1aXU0OE9pVlBsclRQQVlrMzVKVGRiQjVFVlE2b3dFSkRCMTVsTGpGUW1rRVhGUmlPdmpLTjVGL0J2ekV5eXViUmhTbHhwQU5xOGxML01TVFFCbGlSN1pQYWE3TlQvMXZiWWU2OHY5c0RzNEhYaUEwMmdBUUt3RjhEQllPM2ExNTd3VDNyZXpyTG9obmJjc08yM0phZzZ0RzBnYmFOM2dKSlF2Y0d3V2swQ0xwL3F1R292TGhPWjc5QjhsK1JnOGpXRmQ4bHdtZjc3UFZXVUpDUWhvRTBhR1BVekxndVQvWlhxS2Q3NFhqdGJrUSs5Um0xendUZ2hvSUdFVGpoOEMrK2tmdEgwaUtVci9uTTZJMWlSV2Nod3lBeVRCVGhBWlRJSW5NaWhzVW5Td3RPK3pOSGpXUklDSTM2UHRYV2dDUUJaUVZDbUw2MFNIeTA3cVRscmdWM0NSVXhhdXg3Si8zN0V5L2IzK0UxaUJ1VWNYNTg3ZzErTm5Sd0ExMUFUb0F2Yk1mN2QrbVB2dTExb3kvaUpIYW9JbFNYQlFFeXdaSGkwWkRTbHZJRTJ3WlJhbHRTR0tmazBxb01wOUdueGs4NkYyZkw1ZTMvdks2L3MxSmZsSzFkb2ZKTFAvZVBXZlR2NFFUdUFqZG1NL0E4bWZGUUV6aUNCTjZBZjI2bThXdEl5T2p0NlhTcmkzWmxPaW1FZ3BJcXdFbVlKS21tZ2xLYk5JN1JkVUVHRGEvekVEdktoN2V4R0Z2RkFURUVZRWFPRDBZNGNLbS9aWThpZHQ4L1Avc05JZkhzWDVuRFg0c3laZ05oSU9INTZmZkhOLzZXcm1lVjlMZ3JjNms4ZVNDWmtCbVlTajZ3bTJpaEJTQ2F6SURCaVlOVlgxYkwwWjB5QjVWWmVrMVIxSnZrSS9HZUtKWFpCTWZyVjFRZnJ4Qzh2SFhRbCt2UzdWbnVWL21qaHJBaHBJTUlqWU9RNVdiVy9YNWY3NDlCY2NPN2dpblFnN0V3MUVNSlZLVzJxV0xDb2phaEtVNHhNYXZBcDEwdXQ3cXRjOE5obGF5VzFoTnYvdC9oNzJkUGRhQkc2by9Oc0IvN1lKYUNCaWszNEdra0MrWWRmdXJ2U0ozNFlyN2NDOURjdlNOeklSckVnbHVFWG1RZGxpVEVLVEU1VDFmSjNsVVlMakMrSDZGaGZNMmgwS2Uxc3lsM3VvMkFvdnJ1Zy9VVVhRZEN0L0o4RGhYQkFRdFFhem9FWmtyQWR5bUlDRTlJMk13TVdCVzEzSHVOK0hKQ3pFRzFwd01aWEZpVHVnN3NYd3pyQlN5a29odDk3RU5QcU5JSkhabVMwNHI2eTc4ZGp2NEZxOGFwTUdUZTBjQUkvYU9TRWdhck1Tc1Z1YWlKem9nVElreE5FNXJTZXFMRnN1czZ3akFybExHM0xieTdha3l4MnR0ZktTMVBGSnVCdExKUThiRDk2dGdaNUQ0RkU3cHdRMHR4bStJbXI5cDNqdmJnUGN1d0M0dWRGYWpINFA2c083M0FUQW1jT0lFNlYzRFhqVS9oOHY1eFkxQjBxeDJBQUFBQUJKUlU1RXJrSmdnZz09XCJcbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBIYXRlO1xuIiwiLyogZXNsaW50LWRpc2FibGUgQG5leHQvbmV4dC9uby1pbWctZWxlbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYWx0LXRleHQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIERpc2xpa2UocHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBzcmM9XCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFCb3FTVVJCVkhnQjVWdDVrQnpWZWYrOTdwNzczTm5aUTFyZDErcENRaElDWklTNG5Db0tCNXZZZ2NoeHlpNGIyMG1jQWlla2lKMVVLb2h5bFdQaktsemxzazFzVjN3VXRoUEFUa3lDVFlKeEVBWU1raEVJQ1MwSWRLeWsxV3AzVnJPN3M3Tno5UFR4OHIzWHIyZDZEeTBTQ1AvalJ6MzFURTkzdi81KzMrODczd0w4SGc4T2hQRDdQaGgraDJQWHJsM2FCeks3MHl5cUpTTE9aQ0llNWlITDRVd3pJNWJyNkZYTHJGY1B2cng0L0xaSEhuSHdPeHJ2T2dDdmZHWEgwbnowN0NYSldPMXlUWGRXR0JHK2dtbklNb1BIYVhFRGpCTVZtY1VjVm5VZFRMZ21PMjViZW4vSmpENDNXa3Z0MzNqMzNuNUl0cjQ3NDZJRDhQQ3V0ZUZOeWRDNmpsanh0bERjdVQ0U3Q3Zm9jZWhJYUVDWVpvU21Ma1JucmRXRmVCYjk0N3BBZzQ0bUhTc08zQ3FjZWlYOHFta2FqMWRxMGY4OGRhcjk0SHUrK253TkYzRmNOQUMrOWVrdG9ldFhWaTdyVEpRK0U0dVpONGF5Ymg1SkExTHdLTTBZOXdBSUowbjROSUdRQXJTSTl3cThBVGdUQkVLSmhKOGtFQWdBazM2cTB6MlRIaGpXT0ViTWF1ajVRalg3bFgxN05qNS9zY3prSFFQd0lnbmV0cnk4b3lzMXVpdWFNSy9VODVxQnBBNGs2ZEZ4QWlDMWtrQzRsRURZU29Jdko4Rjc2SzRvemJCYTNtZTNEU20xVTZDUC9VRHRCWm9IZ1BKaEFxQk1RTkRQa3c3NHFPTldKc0lIcW1ia2MwOVB0TzIrYlZkZkErOWd2Q01BbnRxMU5yaytkZmFlYkxyMlNhT2RaNUVpRFdmcGtZazQwSDREQ1g4ZFVmNHl1cEswRFUwSnE2dGwvZWtQVjAwZW1CVml3eHRBOVhtZzhCTUNZeFFnb3FEc3dpcGl2RHdlZnZUQTVLSy92bTdYL25HOHpmRzJBVGo2endzK05EODV2aXVhZDljanEzdUNwM05BOTRkSjN1dEozaTVQSUNZRTFwVGdtcG9JSElFV0M5ekFKSVp6LzdNWXBPaktzOENaQjRHeFkwQ0p6cGNjVkF2R2lYSWw5dm11encwL3hOaUZPOHNMQmtCUXZtUEowTTc1bWVJRFJwNGwwQzdvVGovTUk2RTdkcExHbDlLTEJ6V3RCR2ZCNzh3N044VUx1b0VqVGU2MGdFQUFDT2NzQWZCL3dJa2ZFQk1zb0VqK1laUk5ESTJtUDMvMGw2dS9jOTN1M1RZdVlGd1FBRUw0eGN1T2Z5T1hxM3hNNjlEQ3lORHRIWXVBQlI4akVDNVRBZ1MwellLYUR3SUFUR1VBWmdLQUFBQjhHalBFYzh4VHdNRDNnY0dYeUN3b2xCWnN0emlhZlBpM3RaVi9mdE85ZXlad25rTS8zd3RmM0xVbDNwMDU5azlkK2NuUGF1MjZnVFo2aWZ3eVlPbmZrck1qRUdDcGx3dHFUbjFtempRQlpwdjIxTWt0OVhtMkk1a0R4VllrTjlCMVpQN1dTUkQ5V1JUbXVyYkdST0s2RHl4NDZrZVBqNTVYbERndkFFUUdkNzN4djEvdnlsZnUwRHAxVFdwK0lUbTVubzlTTmgwakFlMlp3akRYTzg0bHBKd05KWlFTYk1vMFc1KzVOZlZhK1ozV1NHNmtvTkpPSWZNUVdSbG5jZGU4SWp0dXJWeTdZOXRqais3dWYwdHpNSEFlNDZQV3R6N1MwVFp4dTVZbDRVVjR5OU9pblRjckZ0ZlJzbWV0TmZrMHg4ZjhhNEpSSURpQzlPY0IyanRUejh2dndTT2R6OUQ3ekNmZjREd0dabXJJMmRVL3ZtSDA0Sy9KRlQzd1ZvN3hMUUU0OXNYOCt4ZEdScjZxNVRWUDgxMWs2L1BlUjcvVVdrTHpvRzByQWRrMEo4aTFBRkMrOEd3YUFEd2djRURJS1Q3QUI4aFJ6bGFCa052bWlXUDlETG9MdmRzczNYLzAzdTRxTVBSOXpESG1OSUduZGwyYlhLWWYvMGs4eHhjaUsySThVYTNuUTNRWGZkWWNid3I2YStleTZ3RHRXZENPWnpPSm9DbjRQbUNhM1UrNVhwa0J0NzNwMG1lRHdyQmRKTXNwQ0JDTWNNTzg1T2J0bC8vd1gzY1AxQzRZQU9IeGw2VU8zZCtlTTI5a2JZUnNMa3Zlbm1nZmpnV0VkMW9Dc1drQ1RSSFluaXJjckRadllvYmQrOWZ3YWQvRmRQMXBxYWsrUnhiVFpaUk5OaVlRZHB4Y3FGckszdkRCaGI4OGwxTThwd2xrT2s1ZmxZN1diMlBDNWtYbW1yMkVyaFlCWDltOEsreWFlWk1yTTJBQml2Tmc2QU5hdm1BMitvdkJWVDQwelJmTTlsM1NINTVwdUZ5Wmd2cGRLQ2EzQlJpbE1KbDBrU2xYLzJ4aG9mSUUvZmdmczhrNUt3T0UxNzlLMy8zalROWmF4VElpeTV0SFRvOXNYeE4wZHozS3NZRFd1VS9waG5xUmdOWlprQUZCN2Z2Zmc5U2ZybjFCY1hQcWQ2bHRlNnIySFZGTUJWakFxTTV3NmI3NldSaTJHOWJxOXByckxubnY5MzYwOThnTUZzektnQnZyRDI1S1oydVhzeWdKSDZHSHBhbWdjVW56TGxPYW44NEE1djBtTkt3MWxKWjlKZ1R6L21EMk4xc1U4SS9CcEFpdDcxTHIzTk82RzlDK0d6em5ldWVTUzZnQ1BRVVdLU0VWTTlmUHo3eDZEZDM5eEhSWlp6RGdhM2VzaUZ5Uk9ITi9KdXV1MDVMMHd1M3pDUUJLZEhSM3F0YWI4WjRxTktFUlI5a2tuV1BOYS96a3lKcm1JMmJUZnNBdjhPa3NjYVNHdVZqRHFqYzF6bnpuNXdSWm9NNUp6T2o5SzhOaWFlWlc3T3lWVzdiODdKRVhCdXc1R2ZDZXFMVXVhampiV1pnMEZCTDIzK1U1SVZjNHZwYm1YVUxhS3Rjd01WcEJXVlJuamtFL3UwaW1PSks1Q0dJZGJkQ2pVU0tMMGpTZnpvQWdDL2cwSmlqdEt6dDM2aGFxWjhkUkdxbkp5cGpUczBLNmd6UzVwSFI3Q3FGb0RKcGdwYzhHUjlVUzRRek5NTFJRQXpHamZtMXZja2prNjgvTUNVQW1YUGxBTkdKM3M1Q2htaGZrQVIxUnArdVMrcTdEVVMyVnNmOFFjSENnRXlkTEMvSGMza000Y2FvZnFXUVNWMjNiakpVTG8ranQ3c2ZhM21Fc1dwMG0zeGtuek5nY0RuQ2E4SXJxZHRYRTRPdWoyTjhYeDVIQ0lwd2FZWGpxNlQwb1RaU3dZRUVQdG03c1JXOVhDV3ZtRFdQakdpcENjMGtQQ0FHQW8veFNqRUozWlFqUm1KdktsSW83cHdNd3d3VHUycUYvSlptMDV4c0phdGVsOHNRQXlyazFMcWRMTEJnOFhzTGplOXV4YitRS3hEczI0cEdmUG9vREIvYWpVUzloZkh3RXgvc0hzR2JERHFwVVYrSzFvMUZFYW9Ob1MxY1Fqb2ZSeXV6c2Mwelg4K3lrdlhweEhBZjNUdUxuZTlaaHFMRVJOc3ZpaHo5NkNBTW5qNkpXbmNDcFU2ZHdlcmlJTGRmc3hPRkNuczVYMEs2ZFFTcERUQlRQY0d4djJxS2pWQ0lkdXFqWHRVVG1ldXRmZHU5dVVXNEtBRS85M1lZRjg4T0RYd29uTmMxSWhBa0FRczhRbXVjRXFJMytOOHY0OFV0YjRiWmRpY3UyYmtWeFpBRFA3djQzZE9aMUVwSTZuYlI0V0svRE5FMTgvUGJQeU5iWGJ3K25VRHhkd3VMT0FxVVFHajNLVVhacUI1SVlmOUp2ZGdQMTBSSis4WGdTZTA5dXc1SlZXN0Y1ODJiODZvbWZva0NWbjFnclIvMkh6cnlCS0pucCtrdTI0SXB0MjNHNmxNQnZhSzBPSEVjK2JSRUk0bG0yVjB5YUZkajFCZ1VHS3g5dnJQN0pENTQ1VzVqVkJPSnNjcU5oY0lPVDNYTERVQjdlbHA3MXpCa0gvL1hxT3VRV2JzU2ExYjFZdm13Wlh0ejdORXJVcXFxTU9BU1ExOTZLUmhqU1o0dFlzV0lwVW9rRStRVU54NDVxZUdYLzA3ajhTa3BPVWdsNVhjc0tPRnJSZ3NPcTF2SEtQZ09IeHk3SGlsVzlXTHRtTmViTm40OVRKd2RRS0pLdnNlbmR5TTRqc1FqV3JLSUVOWlBCcFJzMklHU0U4Rm8wZ2wvMGxaQU43Y09DaFJFQ1crVU1la2cyWW5VZExHT1BiNktGWHAwVmdCUWZ1NW8zVTNmRDB3aDVWSXVha2o4L3NBWXNmeGsyWDdvUlBUMDlTSkM5TDF5OEdpT2pYQXJKT1plT3NXRnA2Rm00Qm0xdE9RbUFFZElSQ29YeHdtdFY1REsveHBwTnRaWmpuR2IvNG4yUHYrN2dtY05YWU0yNjllanQ3VVZuWndmQ2RIOVhUeTlHZDc5SWF3a0h6RkczYkp3NlhVUXFsVUd1UFkrTkJFSThGc016dFRwKzltb05uODRlUkNTaVMyYTVtdTdsYXZRMXpHdVVKZUZCZjlWbVYrTFdXeW5EZDYybFhBZ2pTaWloRkFwSG5HaDBoZ2d6ek5aajZaSWw2T3pxSm9jU2t3SmZjODAxV0xWcWxSUmNQb3p1Ylc5dng4Yy9jVHNhalFaQ2tTaTY1M1ZqeWVMRmlLVjc4TXJSWmVUWWFnclk2ZE1GcjV0NDZmVWVSRE5Mc1dqUll1UnlGRW5vNVcxeWFKLysxS2N3cjd1N3VZNUQ1MnAwL1ZYYmQ4QzJHa2lsMDFpNmRBbVcwUnhsdlRoNXhwRHZMa08wR0lMTkJGNklPU3RmL05hVzBBd2Y4STFQWFpwSlQ0N2NHWTI3UFFhMXNYV2ltRWIyNzVBVCtYWC9jbWo1eTdGNjlXcDBkT1NKU3NRbCtrOW9kdWZPblVnU0cxS3BGSGJzMklHdjNuOC9ObTNlUlBmWjBPbitTQ1JHUncyVlNnVW5CaHRZMlhHWTJPTjZ2b0NyYm85TWFSMk1GV3pzN3R1T2xhdldZTm55NVlqS01PcXhxN096RTdmOXlXM2t5RXgwRXhDMzNISUx2bnpmZmZKOWhITU9oeW4wa21Kc1dyZFVuc0RJMEJEVzVvZGxydUJhRnZtQU9temhDR3V3QjR0dEQvM3dOOE9WS1NZd2VaWW5YTzVtYVpkR2hWOUhNcUJjTlhDbU5nL3psdWVSeWFTaGtmQ2FZQWpuMG93VFJQTzc3cnBMc3NDUWdOR0doZ2hEOUt0RkM4ZGlJUWxRUHA5SGZ5eUw0V0lLbmQzVXhkSDFnQStBWk1CUUlVSFJJb2M4Q1JXaERKVEoyQzdWSnk4Uno3aVBoT1owcldTQjY1WEVEb1ZtbTlZS1VjelB0OVA5dVhZY085bE5ESGtkaVRDeFFJQUFLRmJ6bE1GYzBhWXVUREdCZEtNc3RxcGlyclJGQVlJckZ4b3pZNWhrSFhMeHFFZzRKRURCd29ldWRMd1UyeGJDYzY1RUVpOGxGbmRKTzlRK3pHU1JUcVZSTE9XSW1xNksxVzRyWnBNd1EyTlpaTE5aZWExT1hUZUdwb3VVRkJhZ0N3MDdJZ216TGZsZC9DZVRNc3Y3THNET3RtV3BvWjdEV0RVa1RZQTd0cFJKWnM3ZzhiQXpscHpwQkNtVmM4bGZ5V1JLTEt6aXNTVTJNS2ovR1NFNkN0VDl0K0xOVU1xa2VibmMwN3I4V1R5RXJ2VlRkYUhKY0NoRVdvMmcxZ2g3L1kyQVpqMEdNRFNjaUtTOVFkYzJFeWNsNVBUcm1RUkVuZFBVK25SQ0krQUU0SXhGVUhkQ1VnNEpGT2QrLzBSM3VST1pDUUNDZFliM1FkeWtVUUxFbVBmWnYwWjhoelFCRmloWldKUFFraUdDcGo3TlJZU0E5NUthZkYvNngvRlQzdWJxZE41RFJvUTVUM2JlMUQ0Q3UwaWN0KzZSb0hNbzFrTDZFOEZja2JqcG1uZXhGNkdVYkVKb3Q3Vncwd1RNVUp3SXpIeXprbllzSGtTcE1WWEJGWEllTlVtL1pxcXFaSmFLa2l6d3RLK2NiWkFmMG90YmxCeUpaeVFUZFM4TVRxa1NQWk9LeDAxVXEyS2RSaE53aFlENnpwUUNmRVV3K0l0cWNuMG1vMCtkMXRMZEd1SVJ5Mk1BeWRJc0ZoMUt0Wmh1elFDZ3lxSVZjaVpWZFpHNjJFRXVYa04zL0F4R1JncW8xYXBRNytGcFgxRzhTVEZGUzdrN1FFSnF1aVpmb0VvUllHeHNsQW9aeXVFN0pyd3FiWHFIbklxc2hkMFZsT2k2Y1pxTmh0WFV0bVJDVStnZ0F6eWt4ZStHekZpQjhWSUp4ZUlvMGtZUldYcDNsNVFtR00xOW1hQlZUWmFabkFGQUlxZFZ1S3VOKzM1SkZEMENPWjI4d0lyMllSU0dDeGdiSFpNczRFRVNOR3NjM3l3Q0wwbi8xTTA2Vll0bEZBckRwSlV4ZEhmVXZZcVNCenBKNHVobzZHcHZVTDlsQkVQREF1eWF5aThDZEZQSmttU2JNaEh2SFpnTXpSYmxBeU1qWnpGY0dNSHk3QkR0eEp2U25OeW1UT0xJSjJtbnVqSURnT2ZxTjVjdEhqcmkrT1cwN0MyUTV5UlB2cUZyQUc2bEg4ZU9INmVDWjF5WkFndG9xS1VWSHJEZEJ0MDdPanFPZ2RPRE9ETndBcHRXbkFDVjJ2UVdxckVpR3l5NmQ2VFRVZW81YkZ4K2t0TGVma3E5ejBnUW1zOVZQa2NNQVF3UDRrTEFpR3NIYVowalI0OWlmUGdrcmw3WkwrTy9DREJ5MnFvMGNQU1RicmMxT2dNQWFvT1J2T3lZWTN0eFZRSWhqblIzbUZleHNhc1BKL3I3Y2ZyMEFHbDBRaFpIdk1WRnp4N1JVcGh3ZU1JZUM0VUNqaDg3aG14a0VHdVhEMU8wOFRzNUNFeDFiOFBGNXRWRHlJUk80amlCWFJnZWh0a3dsY0JjRm1XZTlsbXpzaGFnaU54amhPb1BvYUIrbXRzV1VySkYrK211Q011dVYyZDVNdEdFY2Z5bU80ODB0OVNuUklFYVQrOUptbVdLMzVDVGVnNmlwMFlOQ1pNZStpWkZ5Z2hlZmlsTVdWMFZ5eWxUeTFENkdhYlFwbXRhTTA1ejdvRTJTYlEvZTNZRWZYMkg0RXoyNDVacjMwQmFLM3RObmhsOWdXYTBSOHFvNHVZZGIrQ2hKMk40aFp5WlJXcnI2T2lnSGZlNFRIUmtqR0ZlUFNDQUVaWG5CTm45a2FOSGNLanZNTmFrWHNZMUs5NkVXNjU3Q3JSRjdpQnlFaTZiUnBNc3RVZHVKczRHUURYWjlXcWpjc1lKVzF3WE54bmlKcEVHRUpKNlpSTGJseDdCcEpYRXdWZnFrbkx6NXMyVCticElrSVFOQ3VHRjFvWFRHeG9heE1EQUFFTFdNZHh3UlQvYXcrTmV6eE4rZHFjODJwUnFFTElqMWg0dTQ2YnRiK0tYdjNGcExSc0xxZm5STlcrK0xNQkNLa2NRSUF2aGk2TkZhUzV2dkg0WUMrSkg4TDVMajBBdlRWRGtjWnRNZGl3UEFKRXJtZUhPdmNEcEZuTXhkYkE5ZjVYWW0waVlseVZvTHlDYTBoRkxVblpFVlZXWXBrYTVQOHZsY2FyYWd5Y1Byc0NvMllGVXRndUpWRkttcnJKQXFWWlJKVyt2T3dXc1d6NkdyV3RQSVVvOWV1SnkwMTZETVgzYThpMUNrS0JtTElWZjdlbkJHNmZhcWJrNWp3cWVES1hlY1lvdWpJUnZZSEp5RWtVeXNZUTJqQnN1b1E1VSt3RFkrRmxxVFRaZ05Xd0t2UzVxWldxdVZHeE1qdG1vVEVhT1BKNi91MWVZKzdrQXdMTi9tYmt2R1NuZm5XZ0xJWm9XQUZCbVJkM2hpQ2lRcUtqUndsU2d4Rk9veHJ0d2FpS0hJNmR6R0MwblVLVTlPYXA4a1VtWm1OOVp4NHJGSmVSaUU5RHBKYVVoc21iOG5HUDRhYWFmQTFDK0gwOWd1SnJDb1dOcERBd21NRFlSSWsvT0VJczRhRXZXMEx0Z0hLdTdSNUdzRFlNVFMxMnJSaHAzaUlua2crcU9CMENaaENjQUpzejBBMWQvWSt3endSVm45QVFyOGZ4REViTjJPejBncDV1TTlwY29jaG9VWm16djVSaHJ5TC9aaVprV2VrTkY5SzZobGxra1RyVjJ5SE5TSXVDUzk2ZWNsMnlLZTFsUk05bUJBdUpjdzNmNVd2T2pQamFKK2VUUTVpK2xMYTllUS9ZcFJIVFNoV2N6cWJRbW9mbFluVUkyVFVxZ1hOdFZ4UkhOQnRIZVZMT2hsV3lXZUJnWXc1d0E5S1FpQnlmcTRTZHNzNzdUQ3BNZmlGQktHYUtwR2tTaTg2c0xFUHhLYlZ4MGk2bkpvVWU4cnJFdnBKK2w4ZUJucUNJS0xYT1E1d0twSXcrY0QyNFIyT1JBSmsxNnRCRGVhVzJRaUlZdHRlTTV0Y1NGMTNkVUowd0tMNmNyVGNGeHdudU9wUmJ2QXdZd25YTXp4bE4zTHR1ZWRrN3NEcWMxUFpZbVg1QWdVNkFtYVNoQ05BOXIxQ1lrVXlCellLUjFKdjdVVFJlZVVpQkVMTkJDM3VhcEJBRlQ3ZDdQa3ViYXNXNEN3ZjJrd3J0WEF1RjZ2ZjltSDdFaDl3TmNNWlh3Z3ZwQzZEcDFzY3lxVFIxczhnVmxteGZab3B2ZSs3WCsvNW0rbkRiYk83eFJiOXZUNEpFWDdicUhucGp5d1paQ2x5Z21xQ1lhbU5URzhiYWhYTFdOSlQ3TFRSS3VFaDNXb25SekJ3ZnFQR3RwMldWVE40U0NXYUw4WFcxOWNYOTd6Ri9Ma2htcnlQUkU1R3A2Zk9rRFhOa05OcDNJbXpma2xqdzVtNnl6N2cwK3R1K00rK0Z0UFFOaHEveCtZbXhFMkxISTdiMUN4MU9yWDQ2S0ZqVHo5Kys1Y3E2cU5QV09MSkQyYW9IdjhJNStwOElQaFQ0d2psKzlCUFlCNVE2UUFsZ1VUQlRqWktoVGJzZW1KS3NoQkNiblY1OGtoZFhJR1ZaUmFiRHNYeXkrNzlCcnM4bDZ6dDNoN0xyMlg5VmZPZnM5dzZ4OTFoSk9NT1RLS2s0V09QQktaRjMzYUUxZE82OFhMelpQeFJhYU1BZTVnYXA3bTZQTSt5c3g3dThncThvdGFBcXlZT1orTWUzdkQ2aU5XUC9vMjc2d2R3Skg1dmlPbitpNDB1WWI1UENFNW0yVFRFSXcySTQ4RnV2V256eVhuSE1HcGFkMkxjbkdod2RmQ0VmZFhwRVRoT0lVRHNrWGlKeEFkRndGQUlZaDI4MnlXU0o5b1B3aUJEZVVzSVlNUndjUGxLaFg1eWlSMmRUVmVhdWJJSDVQa3MvWnVERkRleks2Mmo5UVcxMmlUU2VtMExyTG04S0xZNlBoZUhHZllyN1VQSVcrV3MwNFkzUXUyckRsbmplSzUvcFRtVGtCRVBYSDgzZTI3ZFR0OG5jcEo0a2FQZ0F5TDlCbENSb0tNUWxFRXdUZEsxcEVNOU5EeE1EK1Y2djQrbytMRUZzTnVqYUhLcmpxanBHOGQveHBPeTVaRzBQenorU1V4a1YxSnlzNzE2YythYnNoVW1KQmZ4SjhVZ0Jna3dsUTBzb1RuOTMyOWZIdnljZWZBNEMzL0J1aEo5ckhIdnFEWWlacFZpb1BVTDlFbHo1QU9TdFhwT2FpaitPS3pRcGhIZzZWczh3TEF2UjJUS05KN1JkWC9NbHdnaUZMcmNod3FDVXZNRE1lVUFKSGUzK2tVZGswYVhqOXcwQ255aE9jU1FZSTdWdEM4d0lBMHJwVkorR3JkS3k0dkliMEYrTFcySU56Q1I5OGoxbUgzNUhxdjNkSlpLQlEvRTZjVlQ4U1NXdE1qMUZxVERNVVZxWVFvdkJvTUptaUN1RjE2VFJWK0tlakZZcmd5ZjBPcGEwbTlldjh1dDVySGJHQVVRZ2ZJODdIVXdadTNCcUdRVDFzcFh6WmJIWDkycDRvN3prOWovWUNoQVlKTHV5K1BrRm1ZRWNmelhZdHVtM2RQWDNXV3dGd1huOG10d1Q5RFh2MWlrOE9IaW9VZUxuNk54RlNBWk4reVV0YkRXcG04TEFtQVFoUmZ1QnFxaU1rampKcmErQ21MWlF2VUJyZE5QL3AwUE5BRG1SU0YyZVNXbU4rTDA4SXpyM3kzRmFhRjdUM0FiREp4elNFM1Zjby9sdVJiN2QxYTMrL0ZuMzJXd252QXovbjhGbUFSNkR0T1pSTE5FWWEzNHl6Mm9lanRJR3FVMzBRRXI0Z3JFazJpRnJCQ0htK3dOQlpDd1RoOWYwazBjOEtBeVZ3cXlLRWFuV2oyY2dVZ2NGcGF0NlYxWjFsQ2J0M0pBQjJqUmdnd3g0bHczYjR2MlBkMlk5c3htQmRQdlllcjB2M2pnQ1lBc0s5ZFB4RDZNOSt0KzBUWVY3K2NqVEdNK0U0Q1N2TWdFRFFRd0lNSm9VWFlBaEs2MzUwMEZRM21DSFF6R2lKcjlaUjl1NjF2anp0dTZxVjVhcEV4NVZUMEYyd3dLcUtuaU0zR3l6K0QrM3JvOTllT3pKU0ZZTEw1NS9IWDQ5ZkdBQmlFQk5vRDVvOTk5UE1oMXpML0ZJNlppMHhKQk0wQ1lKQlROQmtlTlJrTkJSNWcyQ0NMck1veFFiV0tnRmFpNmpjeUZYQyt6YnZLTWNuQkZjQVNNSHJudWFyTmYyNEhZNTk4ZW8vS24wZkkvU0lQcHJub2ZrTEFtQUdFSUlKYThFT3ZyUW9YU3dXNzQrRXpGdmlFWjZWdFFJQm9ZV0VLWGhKazZna1pSYXAvQUpUOVlCOFVLQ041bTkreUc2WkgvSWNCWURqQTZBRUo3dXZWdG1relNMLzNyWWc4WS9yclVLUjN1ZUNoYjlnQUdZRFlXQmdRZmpZOGZMVnJOSDRVaGlOUzJOSnhuUmhCc0lrRE04VUJDUEU5S3BKM3d6WWpMNkl0SDhWNjF1YTUzS1BRbFIzUXZQVkNpWENidWdRaFpNdlpCWkZIOTlRR1RhbDhMZDYrek1YK2o5TlhEQUFVMEFJQUxGdkRGcjlTTWVWMXRqazNZWnViNHVHbkh4b0NoRE1TNlUxN3kyWi8zL1FCSG9nSGdEY3MzbWxlVTl3YXE5VFBlOW9vYWVkZVBLYmE3dlpzMTJYa2VBQnlyOGQ0ZDgyQUZPQXVGYzlnMEFRdnVGUVgwZDA1SFZudlc2YkgrU09jeU50VDYrTGhGeE5tSWV1SXdEQ05DZklXU3ZMRXdtT3hibHBhUzVuV3AvRDlhZkRpY1REMlF4ZVhyZDJwRVpDaTF2ZGR5STRMZ1lBL3BoaUZtSUlNRzZGY0pqVXFlMVlldllzTnRsbTdTcm1Xa3NKaE1WMFE1cUtxVGk5dUFIdlhncnZyRVlmeTY2ckhhTTArazA3Rk50SENkR0JxMjRjT294cjZhcDdsZEJpWEFUQi9YRlJBUERIckVEMFNST1JMOXBmb2QzbndjN01TSTNGS3hVV043Z3RkMmtkVjIvRTA5RktlNlplV1I1SmxYREhFVnVBMXh4OVN0Q0xLTGcvTGlvQTA4Y01YK0dQdFhPczJ4Y1E3bDBRZVBvUWpTdng5NkFXM3VVaEs5N3pGYU9WS0wxcmd2dmovd0VFSC80Y0JnNlpMQUFBQUFCSlJVNUVya0pnZ2c9PVwiXG4gICAgLz5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzbGlrZTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIEBuZXh0L25leHQvbm8taW1nLWVsZW1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2FsdC10ZXh0ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5mdW5jdGlvbiBOZXV0cmFsKHByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgey4uLnByb3BzfVxuICAgICAgc3JjPVwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFFQUFBQUJBQ0FZQUFBQ3FhWEhlQUFBQUNYQklXWE1BQUFzVEFBQUxFd0VBbXB3WUFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQlk2U1VSQlZIZ0I1VnA1a0IzRmVmOTZadDY4Yy9lOXZiUnJJWFFCQmlSeFdZQVJ0OEIyS1FSQ2pJR0NFSnVxMkNFdXA4Qk9KY1FrbFFxcmNpb2hjUlZ4dVJ4VFFHSklFU29Hbk5oVUNNVGdJQkVnSUlLQUFKTE5KUVFJSWEyMEsrM3hqcm02L1gxOXpQUjcrMWJTZ3ZBL2JsVnJqcDNwNmQvdk8vdnJCL0JyM0FSQURuN2RHNE5mWVJzZEhYVXVyVzdzWlFXbm5FOW15aVZmNUtKRU1DZklSenh4RzFIUWFyenk0cEw5Vno3d1FBSy9vdmF4RS9ELzN6NTMyV0JoN3dtVll2TjB4MDJPOXZMaWFPWkFqWG1paEIvM2dBbFVSUmF4aERWNEFsTThZRy9Ia2J0OU1pZzhQZEhzZWVta0c1L2JEbEpiUDU1MjJBbTRmM1NGZjBvbHQzS29PSDVscnBSY2tDL0ZxOTBTdUZCMkFIenNlZXd1UVdmWjF3bGVoUDl4RGhEaU1jQmpQUUhlZ0tSVjkxOE5BdStSZXJQdzQvZmVHM2psekw5L3BnbUhzUjAyQW02L2JuWHVnbVBxcHk0b1QzNnRXQXpXNVdwOEVDb2VTT0FGN0VXaENQQXJDTDRYU2VnQmNQSnFDaUlFU0thUWhFa0VQNE1rSUFFQi9xbUY3OHdvTXFMOXNDZG81SjRaYTlTK3ZYblRTYzhjTGpQNXlBUThqOEQ3anBvK2Q3aG5ZclJRRHM1d0J4MFBLaTVBQlljdUlRRTl4eUFKSnlNSnB5SHdveEQ0RWZoV0FidXZQMiswT3dhSk9obkQwKzBBeldleHZ3d3cvUm9TTUkxRTRKOW5FaEFUQ2E5UCtTODNndnczbjVqcTIzamw2TllRUGtMN1NBUnNHRjFSV2RXejkrWmFiL01yM29Db1FROUt1SVpEbGtzQUF4Y2krTFdvOHFmaWt5aHRjRFJZVjMvV2ROTzQ3c0xxZGRTRzF3RWF6d0NNL1FqSm1BQkFSWUZwRHRFNDdKL2U3ei80OHN6aWI2d2RmV2svZk1qMm9RbDQ2MjhXZldGaFpmOW9ZWkN2Z3BxcmdQZjJBNHhjalhndlFMekRDaEFqd0k0Rzd1Z08xaEVnMHdKdWRkUndZYzZwb2FEclR3RjhjQS9Bdm0wQWszaC9Nb0hHbVBmT2RMMTQwL0EzZDkvSDJQeWQ1YndKSUpVZldycnJxb1hWOGR1OFFWYUdBVkozL01NbkVQVFFWU2p4WlRoeFc5SWFPTE92bWJyWDVnVzVkY1F1a293SXNJaEk5aUlCandPODg4K29DUkhBT1BxSENUYTFhNkwzcHJjZU8rN090UnMzeGpDUE5pOENDUHlTNVcvL1EzOS8vVnBueVBHaGlxOFBMUVpZZEMyU2NLb0dZRW1iMlpLM0NRQm8xd0NZVFFCWUJJZ096YUJ4Z3ZjQWR0d05zUE1GTkFzTXBXTXhINStvM1A5L3pXUCs0S0wxbTZiZ0VKdDdxQTgrUDdxNk5GTGQ5cGZEZ3pOZmR3WmNEL3B3RW9QTEFaYjlNVG83SkFFaVBUbGJjdnFjSlIwQXV2VzR2WXRJbjNjN29qbGdiSVhLaWZnY21uLzBMcUQ2c3dJRUsvdkNxZkxhU3hkdHVQZVJpVU9LRW9kRUFHVndGM2cvL2Q3d1lQMTZaNEhyU01rZmlVN3VpQzloTmwxRWdQRnNNSXlyNDRGQXloNXFVQnBZV3creWN4RzFQeXV2OFJ1Vmt6Q29ER0RJM0lKV0psaUpCNSt1N1krT1dYSHVtb2NlM0xqOW9PYmd3U0cwTDdIYnJ4bnFtZnF5VTBQd0ZONEc4YU1MTHRGYTNJTE1ucDJzaXc3SHg4d3pkaFN3bTYzK3dsTDdwUDIrdkxhUGVMK0s4MW1JdmlGNUNGamdRSC9jdVB6Q2lWZitCMTNSYlFkempBY2w0TjMxdzVjT1ZjYS80d3c2U3ZMRHE5SGhYWXgvYVdhZ2hXM2JHaURyY0lMQ3NZZ3k0RmtIQWNJQ2JJRnM4d0dHb0VRN1cwMUMveG9GSi9vSnVCemNrV0R5MXJmV2p6UUFkdDBOQjJnSE5JRU5vK2RYbHZyYmYxVHBUeFpCaldJOHF0cWlLeEFIVHR4SlZDZjFkK2F5YTB2dG1XM0gzVXpDTmdYakF6cnN2dTE1YlFZaVZwM2p1WWRoT0I1SHl4a2pFancvREU2NDVPelQvK1dmTnU1b3pwc0FTbTNYOUd5NWRiQy90WTcxSWJQOU5RU1BhcDhyV09DVHVRRzFBWTdid1hXMStRQm0yYjE1Um5SY1UrZW1SN3JyOC93U2ZBeXp5WEFLL0NUcHp6VW1heGRlZHVSamN6bkZPVTNnL09HZFovUVdnaXRZeFZHWmErMEVmSm9DdnJaNVRuYk5WQmY2M0ZaeFlZYytnTXdYZEZOL2FrTG5ReDIrb051MVZIOVFwc0dGTmdYOWR4Sk1QNXJwQkliSkNvZnFkT04zanh5clA0cC8vUGR1T0x0cUFIbjlzOXpINzYxVjQrTllGU2RkeGF4dXdXbGEzYlYzWjVZR0NLTUJvWjZJSlhWbWE0QXRmWE50cTM2bjlFbkZnL1pyS2UyNFhmb0pMYVlzTFdDNHp1RDRYbXN2ZURIM25WWjgvTm9UUG5QWHZjKzlPVXNMdW1yQXV0WTlwMVJyd1JwV1JIN3lPRmp2SjNGQWxMeGpTOTdXQU94Y2E0QVRhaWtiVGJEemZqdjc2eFlGek5GT2lzdzlMV25xWEMrZHVYMXQ3bkYxcjdJVVY2RHZBY3RQUWs4eFdMV3crdXA1T01pam5WaG5hY0Izcno4Ni8rbnlCN2RXYTN5bFErby9zQkFKd0VUSDVVcWFiWFlmWjBtT01JNHBocmc1QTlPN2RrUFVtRUtYNFNCWDNIb3Zua1A2bGwvUURwQW5MV2p1SFlQRytBUzRPSWFEeFJObU5FQTZQdXh4cEtTZmFvRjJpSkpEbkg5OU4zMmE4WHBjTzJQMTZwODg4T3lPK0lBYWNHWWhXbG53a3JPWmp4TEtZUzhNS3lmRWt3NE4wRDJWUEpNZmJVN053TE1Qdnc0Yi8zTUhGSEE1ZlBsMXg4UHkxVXZCSlUxcTB3QmJDOFNzSTQ5Q2VPL2w5K0RIZDI2QmlZa1F6bHo3Q1Rqdjg4ZENzZFpyS1VuU3JoSHluR1NqMXhKK0Zic1BUaTZFb3RjNi85aktMc3JYbjRRRGFjQ05hM05mN1NzMWZ0UHZjWUZWY0JsYlhhU3lPa2M3b2xTU09rbEpyMUZpVVFzZXYyOHJQUFN2Mi9GMkRQV3BFRFkvUFFaSEhWdUEvb1VWNU90QWtTRzdGaWpCZHhIOEhYLzFJa3pzYnFDd1kzaDU4ejRJcGh1dzRsTURhaHlTTWttZkJKTm9MWkRuc1RxWG1vSFhJZnFDZ0piVlNUNXB4YzN2UEJrOGJPUHRYSkdnU2dRWE1aUzhjS2w2MDZ1Y0NlOE1PN0crVHdXTVFEdWlDQ2M0QTAvK2RDZjA5UXBZT09UQXdnVU9PdVVZbm40WVBYTGNWTytUTm9uV0hEMU1uZHJtRFR2UWhGbzRCcFBqZkFMSGUrblpQVEF6UHFuVW5XdFRvZS9MOXpSd2JuWDZPMVdnSEJTbTUyQWxMamwvZExRZGM1c0piUGpURXhlVjNDMG5nMGQxTy95VFYxQWZ3d0Vnc1RJODFzRWZPVG84ZmZjMUxGaUVJU3dZY2FFSFUyWXVOZFNCZDdaT1FGeWZnVndwcjB6RnFIcW5CZEFOVkdVUnh2RGFDM3RocU4rQkFVekFQUHlrajlONWYzY00yN2J1aFpQUDlESjFKL1ZQT3M3SkJFajZkSFJ5SVB3Q0NDK0N2TmM2L3J6dytCVUFQMysxS3dFbE5uT1M1d2xQNENTRjUya1BIeXY3b3NISTh5ZDZPZW9aUDVBaG1kamJoR0tSWWVCZzRPS2tTWWtLaUhscUpvYWdGYUpETkZIQkFpL1JtL3ZLcTRjQmFsTWpnbDRzc3VRODVYcnlPRTRaMTEwVFkwMnRSU3dETEF4NHNDS0I2WGpUemNsQ0xNNkpWZVA5cCtCVDNRbm9FZnZPRVducTdpbWJrdXJrYWhLY0REUjNzdm5UYVE3VkhYMEZUZGgxczJvZlNVOWVrNjhnZFdWemxTQU1FU0I5RHZIdnVkbmpSR2FPOW5FY29ZUVNDK1dBMjZRTzZuN0NNeTFBMCtDb3dSUVFDSnN2bXBnbHdUM1Fyc01BVjF4QmtTWmFKcEJ1UVVzb21vdlE5aTRkUzZKdFA4NmNqZFJ4M2ZHNmI4aFhwTnV3OEtLQStVU0JkZ0ZrNXBiTTBmWGZFRnplRjFEdXlha0V6K0tISGhrWXpLbTUyR3NBTTZjMFBHYmpDYTZqSGpHSm1wMWp5VEhQMzc0Nk40dUFyNTE1Y2c5S2FablEyaWh6RGdQU0RFN0hPTTQ4cmZTMm1odzhManE2aE9VQkR4MndTQ05URUFoWWZuSWZhZ0U5RStwNGJYYzdqb2ZTZTZQM2dPVW5WYUdGNzVyb0Z0SG5VWXpMVCtyUjM5YzVnSmxQYkFuSy9GMFNnRkVGQldSd01ZaVdqYjhSOWMwaVlHYXZLSFBCYTVocTZEUTdrUm9nRXA3WkZVOHNLUm9WMDg0R3IzR3JDNDVlUFFqMU9wZkFDUUJENzdYNmM1aEx0T0oyNTJReU9UTzJyYmJvQTA3OTNBaVFQZEVZQVc2VzFCc0NQbm42SUdaMUxQdStTREpiQjl2MjlSSmFqaDNqWmF6U0JpbFkwZU14M2pPTGdONXdtcFMwaUQ0WUh5SVN1Q1FoQXkzYUo1NVlrNmJyR0o5RFIzZlJGNCtFVmIreEZHTDB2RjUvTDF6OGplTmgyV0pQL1YyKzEybTNoa2pMbStQMW9oRUhMcjlwSmVSd2pBQ0xYYXZXTFlGMXY0TTVTVFBJU0RUMkhsdWtXa2VoVFlBMG1UREp6QmxFeVUvMlZRenV6QWxHaVllK0xtZWlpeEFXbXlZMUI4dnhHWWRsdkRGNUtmeHdydEdFQ3k0YWdOTStPd0krYm9NVms0WWtKclZEWmh4ZGw2cVF5ZlhwQVh6bnlFRWZMditUNDZTbTk1WTRzS202K3BiMGFGcks2VnhFWnJzOHUwYzRoRHdLTTdUTFJaS2ZUUURZV2FVNlVmZ0Y3VjlDYWtSY1Q1Nk9PdjBGL1QyZ3lCRmp6ajdWZ3FyVFVxbStXVGpKWjBSSCtPdFNyUkpXcUd6R1VCYlRhbUtCZWNXRGRQRkRSSmo0TDZ6M3BjZU01ZHhCZzA4dGprRHo3TU1wQVVHdUZDY0pTMVR5UXByUFV5MlFBalBnS1NpYnVNdk1oRUd2Q1lSS21wZ09VWTRPYlFhODZFZzhPeXRpS1MvQ0lnTXNyOHd5OEp4QjJ5YVNtWjhCVGU5emhZSDhXT3B1RW5URnpJMW1FZEJnaFhxU2lBYm5kaFJCNTRFWEx1ZVpDUmdOY013RTlEMlRFQWlSclh6TnN3QlcwbVNBZDBxZnpaWmlWNEQ2eUEwcFlCR1RQU3VrQUJPTlFVaC9LVEdCMHdoWUZYY2Ezd2VOU0xWeXYxTVgzTm1mK3JWRTZBaUFqaVJKcktLTFVWRmQ2RFRFdEVuTG1tU3FubXoyTThMcE9MTDJ2NldBZFJkTzlpeXdMdTlvOFBLOVdEdEF5emRLWHlsbWNLZTZibkNuQkR6ZHVtUTZFcmszRTVOYlNHZksxQ0FtR1RKcmJKcU05T2I2WElKMXJYdHUrOFQwd2xHQmNQVXo1bDNYR285bDR5Vkc1WjNzS0orRDdCMURTbnJ1cXI4bmtmTDhLRGpVNmpRMVVDbUwreTRmaVNabUVZQmxNTVRMdGlXeFVDL0ZTZ3Q0b21PcEhEU2FMZVZVVXNZRTlEbDNzMGtiVFVrZFZoZjFCc2k4c0xBa0wxZ0hvWTQxQjhjeUIrMzFLZkhSR1NHRlFaMEthRXpZd1h2N29odmVUTGZVMjZKQVUvUnVxZ1RUS3NIQ1Rza2IxdFR3K3pINkFiVW1FSlNwZWZxSERkcDI1YmNqeXJaRXRqZENOUVRwOVIzTDVvVzZsenBHODJWaGtRRHB1RzJoem5hQWVPNmdNMDRkcys3Q1ZJZUlCQlEzMTZCajZwaWRVcUk1dzNvMnljM0ViZ1EwS3NPdmh2VVBFajhTTHIzazBVdFl5SEV3MFhDUUJFYURrNWVQRVpTbmZ1QkFIM2wvKzM1NFpjc2tKUmxxeThCUkRxODk3TGVEWnAxNFJmdFJhQzFKQXdKWHhORjlCMGs5WlhVL0RJMWdrUVZNWWhXbFdSK3BQMm11bExqTTJoVUJFZklTK0F1ZU13NXdGZ0VYMy9MODI1ditzUHhpRkFhbnhxRm1EUWNoekM3WkZINllKUjdCeEtNalg1K2VEdUVmZjdnTGRvKzFzUHJFdW13M0N3MElEcjB4TzBLMmp5aFRBcHpidGc4UytQMXJ5MWk2WURJekZPbjZKSlRueG93SlIwVGc4UmlJd2x2UDlWejZDNEFYdXhOQTQwZmMyeENIelpTQVdBdWRlNWdRTVZSL1I2MVJKUm40enkvbW9WTHhVT3NZcnRlWlRCTTYwY3dIZS9aVzkwWlo3d3dtbDZXeWozUHhsTG9MWGYzaFVTWjl1VDdUNmgrUyttT2RRZmlQa2Ereng1dFZGSzJYQnUvTEI4MHZoeUh2ZHdPR21vNlJFNHNmYnF4aU0yT2hucHo2ditpNzhNWHJWc0xUL3p1RzYzY3UxVjlKVzJWZzZneU1IVWd6NmE0T0xKTjg2aWFRWXFvRTY1L1gwSzBFSFo2TGk2UzFadytERzgyQUtvOFp5WWRvQlZ4S1h3cVBwQi9vSGpxVE1TdmZEN0FQRGtqQUVUMzVWNlphL3FOeDBMb3F3dFdkbDhma09TZGtoVXptUDFnY2RWbVlwYmVZb281Z3BlZXlpeGZqNmcxTExyS2VvSk1oay95a1IvV0tZQjNBTlUzTU9ENmUzbEx4bUpxSkRuU0pEbzVOVDJiTGF4N0tDTVhqeEt6TUZYalpPUkpBcFBpYnR2VXMyUXl3QTdwOXZhMXR1R0g1MmIzSk94djlYc2N0OW5wUUtMdFFMSHVRdzhWTnpxY2FIVlovc0c3SXNOVEU2S2R1cnEvV0FTd25hM0R5ZDRCbVpNY1NLVE9TbnNNbzJoeWhTRU9icWhXQ2lnaUoybnRJZDRkSTZsTHlDbnhJZ0xHMzZnbVcxV0pvVE1ZUVRjZGluQzIrNkRQZjNmNWZuWjkwdXMzajlWYmZwbERrbjQ5YmlqM3FjbUJkZjRncFA0aTVrZ0JWYzdtdURBdFRLWTdTY05XZUI0aE13dHpLM3RKcnNMclRFZXYxMXBjd1ZkL3NXNVN4eWxVeGVYM2o4WEcrSWM0L3dia0hTZjZOQy91WC9xd2IxcTU3Z3c5dC9vQmZ2ZWFJSFg0MC9WdW82WG1LYldUYmFnbWdkSm5DR21GeFVDck1GQ1NFVmxlN0tOR1d3TmdwTDBCYmZtOVNXME5NWWxZdjFqNWdvc3Znc25Ka2VmdEVWWXppQ0VFVDRGWUNyUmtVV0RPQnNBSDFrTlcrdXVUdnR2eThHOWF1R2tDdHRuTGd2d01vM0VVTVJpMDFNSFVaVWlMbFhhVzk2VVVUeERpeEdMVWgwUnBCeDhRYzlUa1ByWlVXV0ZrZldOV2lTR21XMlhPUTc0YjYzSUFQNURjVmVKUG9jR256SVRvOGtud2NvRW1RQnNmK1E4VkI5MmR6NFp3cjJzaTJZWFJwcmJSNzU3TitnUjlid0oyaVhNbUZQUG9DUDQ5SDdDN2F1dWVwRWpobFpvNzhOWnlybDhTZWNwVGtHOUw5QkFadEc2ZHBsbVRTWTgyR0trZ3FyVElWS2FHcVU3TEtROEI1QnA2T1laaElVMjNXWXlYNTZSaWFUZThEYjhIaUUxZmYvUHI0WEQrVk9TQUJWQXQ1NW9hK3E5eDQrZ2ZGSGloNGhvQUNIckY3V0xmTzVaZ2tJaVhCVmQ2Y29vRml4QkRSK1ZzaC9YbG1lYjYwRnFBSjRIcnJYZGYzVk1sUDZLcVhVWDJVZGtnMVNOSlFCRDVEQk1Sb0FqQVRpZkxYMTN4di8xM3lTM01RY05EZkNEMDZzTysrejQ1WEswRzlmaHVtZjY1anFrRmtvcFFOSXlpMWFrUS9nWXNIaCtJMDRjVFpNU2ZSTzhNZFcrcnByb0hGZjVvc2lCUXd5THFrV2d1WVNwVUN6cVFHa1BRamtqd1JnRktQc1BBYU5mQlk1NklKdmQ4cVJmdnVPUkI0Z0VQUUFEcHVYNzgwdjJOcy9NNFNhMXlUNzNXWWkzVitIM3ZPMTZhQW15STVqd2hRNEYxSFpZUVpacDA2cGFVeHgvbzZzNlN1U1pBVkhaMUlVVEZUbHJPRUprQ3Q3SlRUVTJwUEpJUUluT3krTllWbUVCY2VyQTB2dm5MbHpWdWpneEZ3U0QrVFd3cmJ3L2k0bzcreWM4dlltSmh1L0ZFZVJjRGs2a3ROMXNOMWdmQWRTVUFPOHdQdXFBV1J0QUxPcktJUTErZW1kSk1sUVJuckxMVUVZVWxkYWdEWlBEZnBMVThKaU5IcmgyVDNXSTV2UmZrNytrYWNQMXNCVytPRGdRYzRpQVlBWkZvQUQ0Q3phVXQvT2R3VGZyL0VtbGNYS283akZsRHk1QXQ4UjJxRGkrQzluUElGbnNzeUV1aG5uT211R3B1OUdnWkwrQ0Rhd05NeFNTWFA1UUluaXNqdUUwbEEzS1FvUldGUDRPNjMveC9Ga2RvMW40S2RMVG5veldxVEN6NEtBVzBrck1manhlQSs5WU8rMy9QRjlOOFdpcUxxbHhBc21RR1M0T2FJRENiQkV4bk1JWlBRMFlHSWdHeVpiSDljWk4vUjlpNDBBZFM1TG1WeG5laHcyVW5kU1F1aUJvZEdYUVFoSy8zNXdLckNIU3YyN0drUWNEbitJYXpENWtjQU5kUUVHQUwyOUw5VnY4Q2o0SmJlWXJUVWs1cmdTQkk4MUFSSGhrZEhSa09IMG1ZaVFtWlJXaHZTR29IOUVlMEN0ZFJUbTArMDQ0djArajVTWHA5eUU1SjhvK20rSGZ2RnZ6N244NU4zd3g0Y1lpdjJRNUQ4dkFpWVJRUnB3Z3Bncjd5d3VIZDhmUHpXZkM3NDdWSmUxT1JhQVlsd2NtUUtUSUgzZEJhcC9RTFRpeVBsLzVnRlhxVGVYcGlRbDJnQ0VrT0FCbzUyMzJpd21aamxmOWkzcVB3WHE2S3hjWnpQdk1IUG00QnVKT3pZc2NqZjl2YjBPU3dNYi9FaFBMbFlZY3dsTXlDVDhKUXBrRVpRWjIzVklwWkZ3M1JzdlJuVEpubFZsNVQxaVpEVUhYTkJudHVDMVpkdlZSY1hIam14dmp1UTRLL1ErMEh6TEQvTW00QTJFaXdpTnU4RHAvWG0wQm5SdnBrYlBUZGVVOGdsZzdrMklwajBDVElmMGs0eERRUnBJaWcwZUJYcXBOY1BWVy9oZWo1eGNrOGtwY3IzVjR5d3A0WlBSZUNXeW44WThCK2FnRFlpMXVzeGtBVHlEVnUyRGhYMi9DSlo1Y2JCWlZpV1hzZEV2REtmNHc2WmgveWhSRXBDaHhPVTlYeWQ1Y1Z5dlNHQ3lPRlllZHFhQ1BjSnYxeSt2MWFGRjFldTJOTkUwUFFxL3lqQTRYQVFZRnFiV1ZBak1xNEFjcGlBaEN6YnV4ZE9pWVBtV1l4SHk1Q0VKZmhDTDFaNlNqaHhUeGQ2TUx5ekpwNU9jKzVzd3pUNmpUaFgzRnpxOFY0K2E5MnUxK0I4ZkdxOUJrM3RNQUEzN2JBUVlGcFhJclpLRTVFVDNWN0gzZWVkQzZwN21xeFVyN09TSjJLNVM1dHdOeXoxRnVvRDFWYjlxSHpQSkZ6L1premtwVzJyQm5vWWdadDJXQW5vYkxOOGhXa3JEdkRkclJhNGp3RndaNk8xR1AwZU5JS1B1WW41bEllelJPbGpBMjdhTHdFb0dNaDk2TEFDNmdBQUFBQkpSVTVFcmtKZ2dnPT1cIlxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5ldXRyYWw7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAbmV4dC9uZXh0L25vLWltZy1lbGVtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbHQtdGV4dCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gTGlrZShwcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxpbWdcbiAgICAgIHsuLi5wcm9wc31cbiAgICAgIHNyYz1cImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBWUFBQUNxYVhIZUFBQUFDWEJJV1hNQUFBc1RBQUFMRXdFQW1wd1lBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUJocFNVUkJWSGdCNVZ0NWtGeEhlZi82WFhQdnpONnIrN1JRU2JKa0k5bjRRcjRnNWJnZ0ppWjJtWmdDS2xCQVVRWGtJa0NLaWxkRkZTR1FNZ2tCSENDY0psWFlKZ1FJS1FVYmtJMFBXYlpzMlpLMWxtd2RxMnNsN2IwNzgyYm1YZDM1dnU1K00yOTJWNWN0OHc5ZDFYcHp2SG5kdjk5M2Y3MEMrQU1lQXNDR1AvVEI0UGM0K3Z2N2pkdUtqN2F4dEpGTFJaVmMxaEYyRUFsbWVLbUFSMlkxOE9yVlBidVdUTjc1MEVNUi9KN0dHMDdBaTEvZXZLd3JQWHBwUGxPNzBqQ2psVlpLckdRR2xKZ2xzcmk0QlV5Z0tyS0FSYXpLSTVqbUhqc2NCdWJnbEpkK2NyeFdlR0hEcDU0WkJLbXRiOHk0NkFRODJML0d1VHh2ciszT2pOMXBaNk9iVXRsd281a0ZFM0lHZ0lNemhkTWs2S3k1T3NFTDhCL09BWHk4ZW5oMUkrQlZpT3F1ODVMbldWdmRXdnEvangzcjNIUE5WN2JYNENLT2kwYkFOeis4MGI3cEVuZFRUMjdxWTVtTWQ0dGQ0bDJRdDBBQ1QrUE1DRVdBazBmd2JVaENBY0JJcVMwSUh5Q2FSaEttRUh3RlNVQUNQUHlxanIrcEtES0NTUmp4cXZiMjRXcnB5OC90MkxEOVlwbko2eVpnSndKdlgxSGUzRnNZNzAvbnZLdk1Mc09DdkFtUXgwZG5rWURDSlVqQ1pVakNGUWg4QlFKZmdMOUs0M1QwOHJGMmh5QlJSOFA0Y2hDZzlqVE8zUURsL1VoQUdZbkFyeXNSaVBHSXU5UE83cXFYK3ZSajArMlAzdGsvNE1QckdLK0xnRzM5YS9MckNxUDNsTnBxSDdJNlJRa0tLT0VTUGpLWEJlaThHY0hmaUNxL0NlOUVhWU9od1pwNjJYakdnK3NwRXRORmJYZ0ZvTG9kWVBnblNNWTRBQ29LbERrRVl6QlpublIrdnJ1eStDOXY3SDloRWw3amVNMEVIUHpIaGUrZW41L3NUM2Z4ZFZBeUZmQzJEb0MrOXlEZW14QnZyd0xFQ0xDaGdSdDZRdUlLME5RQ25waW80U0orVFFNRjdUNEJjUEorZ0lsREFGUDQrVlFFMVdIclNObk5mS2IzMDZjZllPekNuZVVGRTBBcTM3MzAxRjN6aTJQM1dWMHNCNTJrN3ZqRlBBVGRmUmRLZkJsdVBDbHBEWndsM3pQMVdZc1g1SWtyVGhFMWlZQUVFZEVvRXZCYmdDTS9RRTBJQU1iUVA0eXo2VlBqYlo4NStNanFiOS80NktNaFhNQzRJQUlJL0pMbGg3L2UwZUcrMytnMkhDaml6N3NYQXl4OFA1S3dTUU5JU0pzbEpaOGtBS0JWQTJBMkFaQWdRTXpRREhxT2R3emcrUGNCaHA1SHM4QlFPaHp5c2ZIOGc4L1dMdm5JclZ0MlRNTjVEdk44Yjl6WnZ6SGJWenowRDcxZGxVOGFuYVlGN2JpSnJ1VUF5LzRHblIyU0FJSGVYRkp5K2pXTFpnQ1lhNGF0VXdUNjlWeFhOQWVNclpCZmovZWgrUWRIQWRXZnBjRmIyKzVQNTI2OGJlRzIvOXc2Zmw1UjRyd0lvQXp1SnV0WFgrdnRjajl1OUppR2xQd2lkSElMM29mWmRBWUJoclBCTUs2dVp3TXBwNjlCYVdBdDAydStGa0hydmZJOXJwSGZnRUdsRTBQbVhyUXl3YkxjZTB0cE1yaGt6ZWFyZi9uelJ3ZlBhUTRXbk1kNEgvdm0zZDJGNlE4YUpRUlA0YTBMRisxNXA5YmlPalR0MldoT01jUHhzZmllWkJSSWpxVDZpNFRhUjYyZnkvZkpLMzVleFAzTVI5OFEvUktZWjBCSFdQMnptOGYzL0E1ZDBYM25jb3puSk9Eb2x0N2J1dk5qLzJKMEdVcnl2UnZSNGIwRHY2azFRWXVrYld1QWJJWVRGRWFDcUJnOG0wR0FTQUJPZ0d6eEFURkJrWGEybW9TT3F4V2M0R2RnY2pEN3ZLbDdEMjdwcXdLYytqNmNaWnpWQkxiMTM1QmY2Z3orSk44UkxZUVN4WGhVdFlWM0lBN2N1QkdwU2Vwdm5NbXVFMnJQa25ZOGwwa2tUU0gyQVRQc3Z1VitiUVlpVkpQamF3dkRjRGlHbGpOTUpGaU83MTM2enV1dS9ORjNIajFldTJBQ3lPTXZMK3k5dDdPamZndHJSMlk3U2dnZTFkNU9KOEJIWndiVUFqaHNCVGVuelhzd3krN2plOFNNOXpSNVBBTTk5ZXZVRXJ3TnMwbC9HcHdvNnJDclU2V2JiMS8weUptYzRobE5vTmg5NHRxMmRQMU9SalpQbVd2cFVyeWJBcjYyZVU1MnpkUVUrblhTRjdTb1BFRFRGOHlsL2pTRXpvZG0rSUtXOTZDdVpCSkNtd1lYMmhUMC9TU1lEalRUY1F5VGVRN0Zjdlc5aTRiZGgvSExuODZGYzg0OGdMeitSK0dmbit6dXFsOWxkS09TZE0wRFdQeEhxb0t6VFdVQ0ZsVjFCaTRaUVJRRzRMa3VWTXN1MUNxZWRIaTVZaGJ5cURWMm9RU0dhYzhnS0Y0NldRdEFLMmdFeFhrSWdUc045Y2xKY0tkYzRHRUVUc3FCVEQ0RHFVSU9MRHVGVzhGblJuaC94TlVNdVZLVTA4OWkxamdBWWlTRTBSRm45ODdSNjYrODlkKzJlak94enFrQnQ5VHZ2N3l0Vkx1U3BSRXNMZ2h0V05Cd2xEeG5XdklHYXBzQUh6YzFPSEFNOXIxNEdnN3VtNFNKc1JyVTYxeml5dVpzbUxjb0R6ZSs2MDJ3Zk9OS0xBTGI1aUFnT1VUaXlpSHlhbkJ5M3lCcysra0FEQjRnQW55SUVHZ0s5MVJvYzJESmlpS3NYdDhEbDF5MkNES0ZBaEpoS1czZzJqbm1sMklGZWd4WWFnb0tHVy9kL09KTDErT0RINTZKZFpZUCtPckhWNmJla2p0NWI3SEUxeHA1M0hEbmZDUUFFeDFUSlRRQ2JkaXZUTU56ait5R0gzOTdGL3pmenc3REVkeWc1OWJSRjBXb0pCeGhZckZTQytEMGNSY2UyM29FbFNhQVZadW9Ob2o5Uk93TGtvNHY0UmZRdVEwODlRcDgvWE9QdzlGWEo3QXBFSUNKWHQvRTUvSXd4T0xRUTFMS3NPUHhJZGk5ZlJCWWJRcDZlaDJ3VUVOWjdCQ2xNdUgrM2RPMGJjYmRzSFRWeG8wL2UranA0K0ZaTmVDYWRMQTJiVVhYTVlmVW5leS9WemtoWWhZajRmU3BLZGkyOVFBOHNuVUlMVUJBUjVzQmhmWXN6RnZlQmUzejI2SFFnZDBQeTBhejREQTFWb1hoRTFQUXVSSk5pUG5hakpPU1Q5WUNpU3QyaWF6Mk5saXhZVEcwZDJmUUFvdVF6cWRsNkt0TzFXQnNhQUpPN0RzSms2TVZtQml0dzA4ZlBBd25qMWZnMXR0WFFyR25RMGRQL01jcDRuVEFzSDNJV1BVYjNwUS9SZm42NDJjbG9PaTR0NlZUWVIrekxkMjh3SVVqcXROTjZYTWUrc0ZlZVBicFVWaU5FbDIvZVFtc3ZXWUpkUGFsd1RhRWxpclg1bzNzWTJ0QTVnTVVyc0xxV1J3Z0pBZ1E4aEdyMTJkaDliM1hhaWNYS0VCYzF4cHNCVnFpQTlOakh1eCs0Z2pzK2QwZ1BQSDRhVGh5MklXL3ZlZEtzRXhjTTlLUktZT2gyejBGNlF3dkZLZkc3am9uQVJaNHR6S1V2RUFIeHh5MFc0N2d1U2tuYzJ4WXNHRUJySHJiS3JoaTh6eEFUY0Z1SG5ZcUtqaUpBSU0xd2JQa2U2WS8wKy9QbUp3eHpZRlFqbzI3R3JTT0VOTEcxYVRsU3RoYTIveTJMcmp5aGw3WVB6QU5oL2FNWUpNSjEvRUQ3UXNpSlVRRDk0NTdOVmwwUTM4L0dEaDVZc1htMlBaMzZ4ZXVTZTg5bk84MHJIUkhHb3p1UmRqY3lDdlA3NWpTNjBNK3BhVVVxdmN5MFdPcXo4ZjBhd09hZ09VcXNXb2I2dnVHcWljRUgzOUFmY0VXaXhETnozZ3JDU3BURmduTndJbStCd0xjVzhEVnJQbkFSNDlDZmFRTTduZ2s5dnFyMXQvNGhaZGZhZ284TWJLc3NzR3loQ1Z3azhLeWRJd1AxUVlveE5BR3FRWW4wQVNZdE16V29JUW1JUWJDRWlTSTVzY3FiVTZBbDEvcTMrdndwK0o2L0I3VStzbHFPZEo1UUNoVTJCT2FpRWdURk9rY1FlaStBb1ZoM0J0YUJpdUdrNWZqWFhNVFVCQVRieFdOMU4xU2FoUUYrb01nSVYxUWVRQzlEalZ3Tzg0TnJJVHFhNDFJQWo1akJ5SW1JdkUyTm9jNDJZbkJoVnE2b1g0ZmlhWjJORW9JblJ1Z3BuSTBBUW9JaE0wUk5jeVM0UDVaQk54eEJ5bzBENVlKOVBTQ1NpamFDNFlUbWRGUzdJK1lVdVU0bndrMGNObmlKaUlNWlNwMnBJbGdDanhuelh3bnFRMXdOaUlTQkVoUVREazFBaHhFR3Z3WkNBQ3RKZlFiRktEZ091b3h0UitiUlpmcy9PWkdlOU5Ibmd0YUNQallOWmNWMk5EK1pVSnJvOVFlelBCWS9PTkdFU2RhYlozQTBxU3dpU1JRdmhRaFVTRnVoZ1RBOEQ0clpZS05IV0tEQ0pxbEFhMk9RS0RrQkxiRmcyb0lvYWVxUVpPZWdWUDZXUUpIQlBnSkVwTGdrMXFrTVJBSk1TNEd3Ykt4VjROMi9IYTRoWURLcU1oeHdVdDRTcVBJSi9ib3gvaWVrUzNIRG9sVVMycENUQUNUempBb0M1aWU5bUgvd1JxY09CbkE4RVFFTlR6Z3dGOURvV2pDMnZVNTJIQjFDZkk5MlVRMFNEaEVBbzV6YXFnS3UzZE13TXN2Vm1HNnJBaklaVTNvN1RCaDRYd2JWaTNQUUw3TlJrbXlWZ0lhZmtOUHBqK0xBb2tsVmdwY280REpXbUVXQVcxK21ZNnFNaHhvSTdIS2hjcHdJSFpDdk1tMERuTzB4WkhoQUg3eFdBWDJZNUpWeHcybEhaVkJHNGI2eVdra1pPZXpOYmowV1JjKyt0bGxVaHVTVW8vdHZ6YnB3WDFmT2daSGozcFF3TjA0bHRyMEdPYnpCdzVnbmVnSkRFYVRzR0dsQTdkdUxrQlhoeVcxUXBwQVFzM2pJbzBPM2FRSlJLRjhrSElSSXV0RUUva1lkOU1KQnBHRm9kNFdEVWZNRlFteThXQzBPcUw0Smx4c2FNaUhILzdHaFJIczFiY2hyejFwdEROYmVsd1ZCY2xuNFFiVEdEMFBIZlRBUjRKc3JqVm9oajFNVEhJNGRjSkhhUnY0TEZSN25hakhXd253dDVXcWdGMEhBdFMyS1hqdjIvUFFRYVY2ckFGeG1EV1VWc3EySEVZUWdldlQxQ21GeVVXVW1rMEFOQ3RNb2IydG9JTkxmQUJyaEJtdUhZN09JM0NORnc4Rk1Jb25ObjNkaHBTOGljN1B4cHpCeVRzWWZWVEk4T3NSR0hnMGRzVVYzWkFyWlZTaTB2QnlUU1hvVzlvRzE3NXJBWXdlbUlhVWhlbXdvdzVUT05xODV3WVExRVBLYkNHTHllbUI0UkJlZU1XRG05WXJCVldhejNWdW9nWEdkTnpFL1hJZFJ1bGk4ZWJDRFFJOE94dEdFWXM0VDVCQWJ5U0xUSWNmMFN3N3RRYXNYbFdBbDRjRjVMRndXclE4RDh2WGRtTDlsSUpzTytiZ1ZFMmk0NHM0bGMwY2Nta1VZN1U2Unk2Z2hva21kL3NIRmtNMXdJQ045MUJSQlQ2VzIrZ01hMk0rako3eVlQK3VFVGlNQkMyWVo4Q1NwVGxVaTBEdFJ6cG1JeloweGFuQjVicFNBMENuRXhHRVBqT0RXUVJVV2RyRmNyT2F6Qi9veDdMQjBHandjaFdHd3BnQWdKV0ZFUDc2N2w1Z0dRUk1MbHBnK2xySER0UWtKaDhwS3FjdEZSNXBnL0VwSG1Nd094NHE3MjFOdTlDbXZMQTZNZlp3WVNTZ3pRK2hGeHNjYTY4dlFuZ2RPdkdLRDlZa25obFdReVh0eHRGRGdsemRTMVFtb0YwWUdGV1BGVEYzUDlGS1FLN0RjTVVKWTVLVHgrU2FMWU1NQmgrQUVtUXR1VGh2eHVlNkQrWW9udXFtTFFVMmE2dU5jR2pOM2t6V2pDUXRXVkhpZmRJblV1NUJXU2psSDNGem1NSWZhcERsb1FEUkhOQ2g2T1NJS3o5RlB6U0Zxa3UwSDVOaFZlaWNqaVlYRmNpUmxOUm9ITTg4V1g5bk9STDJnVERTVHBOWWs5b1FxME1penNZYlpuSFMwSlNnZXE5VmtjZFRBNkRYRkZXNGJxbko3MHh0WWpQdWw4OHlaajh6dVJiTVNLeGlQaVhvMlBhRmJLUkVNUUdSZVpUM0JlT3pDTUEyR0E4Wk94U2luWFB5bUxFcGFKR0llS1hZdzVLYk54SVpYN0xpYXp3NjNqU0RsbUpHaUtZUGpBRUNKS0lNTkFsVWhVZVQ4SGpHKzdEMFh1UStERjFXNlAzRzBwZGNJQWtoTmZDc3c3ZCs0a0RqU0wwbEN0UkUyNDZDVjViRkZJVXVTdXROZklLQkQyUkdJdEV3RWh1U21hQ3BQcU1OMFNZTWZTWVFueGZFWVRTV1VvdklBSnBta0pDb1lOQ1NLRkZmd2VCTjhpM2VKQzVHUWZ1SlRZQzZSNkI5TnJrdDlDZVkxMEdGRlhiSXc4UzVDS2ptZTE4SzNKUFk0eFRra0lFS1FxbWhNaDBWMEtpRVZFNnBGNHczRkd0RnJBbW1tckh2YUhTUW9RbWFKWHlBU0RBalJPSkt6N0lVZUVteTBMV0hWaWw2aG55K2ZxYmNJcGRhRVBGWTlSRTgzaC80SUR5bjU1bllBUUxNT0tKOXh4ZDNIZzVFYXBmdjQ4M0VXS1R5K1VpYUlLb1R4bVpaOVZGOGxoMGp1emt0UFExYmJUUk9kRVNzQVN4UnowT3psbStjb1NZK2ozMkJzSnBtUmRXcEpOcFVrckZ0dlFkTURDaGxwSnlER2prVTVBMVNkWlg1VWRBaVBEVHJQSDN3bWNKdCs1S1laM2FFaEI5WjIwSy90c2xIQW14aVR1WVRUQW1hbU5XY01hWnRqdXpFU3ZnRVE1c0Q2TTNIZlVDbW84WloyMkphSXhvYW9HVVUxeDJHbHJDbFNaSTJIMmlDZWNOVGNabjJxcjFMeVpNd01ZMzJoZk1JK2Jya2lzYk1MYmpacmdlOHdCcjNzWkNwVTFVV0tsVUtjWE1SNWRmVUhTYVc2VzhzU1J0a0g4RFNHbUJwNlpzS3ZOQXpVcFdpdko3dEZLMmhFWWE2bit2ZngyZU5odFlBVTY5bE1TMTF2TTFXSVRDdTNDbUZvTDJUNUttRzhIeGpLbVM1QjJmaW5VWEFna0pxVHlDY2h3UDhFVTNLM1NuOHluM3BQb0dTaE5BT0ozWThwbEpUbXJIM2owRWw4d0dlQUJaN2VtRTBQNCtNcGluRXAyNHRKTmhOWHlBRGhGQXRlOXdQWjVTNk1YVVloK3VTTS9keDh5VE1LTEozSE1vdWVlNmNCS3pySC9BOXMrZnJRVTFFZE1oQjA4T0hCUFJBVWlza0lTSi9ZR0NaU1ZtaUdXa3lJbDBtbThwcDRhWkhoeXF3Ny9uVFVKMm9ZVU5KYUEwUXpiUTZCcGhzYkdDV0dXSHRNSDVzRW5ZL1BhUjZBdEowZEllWjZleFVDa0d0TDR4UWdvOVE2K1RwQW40c2N5WFM0aG85ajR1eTNmT1ZEMzdweWZJNUNhRHhTcjE5aHk5U084TzZZcytqaVFBQzNaU1JEa2JhTXAwTTQwcE1INFpLZTR3UExMRk1MalA0MS84NER2Zi82QkFjM3pjQzlhbXFMR3lheFRscjVBS1VhMFdZM1UyZm5vWmRUdzNCTjc1N0JCN1lPb0hhN21pTjBLZkJjcDFJcldVb0JrWE1Jd2d0ZVZKNTNIT2RUcGp3R3FWZXZibGo2YS9ud2pxWEo1TGoxNTlZZWtzeFBQNUFxc0Rhbkx5SjUzRVdwREttUEpxeTBPbFJ5V3VZVkxKaXkwTW1ETFkyQVVlcnFnVThrNEd2L3ZzQmJGbVBTVXRaMkczRGh0VjVXRFF2Q3gxZGVKWmdxZWFMaHhJL2ZzS0ZnMGRxc1BjZ05rSlFhclRHQno2OEJ0Njh6Rlo5U1hrdVFOT1hmVDdaNk1BWUYra0VKNVF6a3FEcGViWHBDSHlzRTd5eXdET3JqaisvN211bmZ6RVh6ak9lRHBmV2R2Nm0vdUxvOXl5djlza0FOMnJhWExhM0RIa2dLdVJyVTFOb0l2Y0dwWTBrRVdtUGxzempEUVR5N2pzV3dmM2ZxVUxOOVdBU04vU3JweWJSZVU5QnhsSGtDZTJzWEk5THY1YkRVcmVFMXpkZjFRZnJWMkxaWG5kMVNocHFBZ0lKbnVzU1Y4WjRLWFUwVXdwMzVMZVFCRElkVkgzOFBQWExUSi81NnpQaFBLTUcwTmpXdjdTVVBUMzB0SlBtYjBvWHFLK0hHcEN6OElRV3J6aXA5cWZ6T0JVQkRSV1ZUTzJ0bVE2RDZUU2NyRHZ3MEEvM1l6M3ZTK0prYzBNM0tLUXBVekpwcTFCTEdkdEtQUFQ4a3orZUIyYkYxZExuRFEyUXJib29UbktVNU9ucVk5a2NJSWsxRjArVWF5ajljZ2kxbW5YUzZsbThmdU05cjR5ZDZVOWx6a29BU29kdC8wVDdYV1pZL202bWdQVmVURUE2TmdWVGQzOFNKSml5aTRoQWRWcE1SR0FINCtDNEJiLzkzNlBZMktqSjN6RGRzbUo2R3dTQzdIYlYrajY0L3ZvZXlOV21tNm92bWswTm9adXRYR2Q1SlBuUVYzN0tSNm43RlNJQVczTVZxQVFpOThtcnZ6YjVQYm5DR1FnNDU5OElQZHc1OGNEYng0cDV6M1h2UStlRERkcG10Y2JwejMycGJZR2hUSEF5RCt6OGNDVkpocnRqQmsyOEdhV3hBby9MRjMxd09XeC9aZ0lHWDUyU2g1d2lhaFpZM1F0THNHRlRKNnpxRmRTaHBUZ0dNZ25YcDBLcUNoY2FPRk81aVV4dlVmSkVBRXFkT2taQkZhOHVGelZvKzN3Mm1Mai9iT0FWOWVmUUFMb09ibG1hT2o0ODl1MHNxOTZkYWpPWWljN1F3VW10TDJrS21JYVNReU9ucURwU1RBbS9VU0JxT2FPYWlGd1dYSERnMUtTQU1rcUx2bW92MkRDL0UxdHBWV3FtMUZWVUFOVWxsczFNMlg0UW1nQmw5N0pnQzVUYUV3aytBaWU3cjArakdZVHBuNWQ2RjkrNTlwNkI0RndFbk5lZnlTMkZRVDljdmZKRFEzdUhoMFc1K2xjcEZBR1Rma21sclJZbUw4SXhKQUUyZW04dXRWK1JRQnJSYU5LUVZnUmx5T0orVnRDWEpmMEY5UjVHVlBWR2dIVkpyMHRaRFZ3Mk5kUjVnL1Q0S1BXWWdCQzl2azkyNzJMY0QxTGZhdTh6UHJzR0JzSnpnWmZmd3psR3JBWHdFQmc3OW5iay9CSC9HMWxXZTA4NmJ4aG1HaVZQdmdEQmt6YVlDRjdXUXdpT1BIeURCUG96enNiaE1HdjJVNUxyNkgrVTVKdmcxUWxYTEhrdW16VkJRSFlmU1FKQ2pEUUJFbEN2WU9JV092K1Q2U3ZkL1dZWXFzdUgzcU1PdWVEMUVOQkN3aGE4dmdQTUo3N2IvaGVPS1A5VE9pT0tUdGFRSno4bWttRGFSSVlLYjBTR0RKVnhkSkJIaVFvOG0wR0FhSzZqN1QzWnlPQ3FuWVZYNmZFUlBFMVM5MUNlSUhHb3VzTHpXZmJ2TzllbHY3Vm1aS1JLd09YenorT3Z4eStNQUJxb0NkQU43TW4vS3I2YkI5NFgyekxCVWt0cWdpRkpzRkFUWklKa0dib3dOS1FtbUxxaWs5cWdFMEEyUXdVa2ZpMzFoczFIMnZFUmNFMkFCRjVYa3EvV3pNT2hrL25DVy85MDZ2c3dnbzhZd0hrZWtyOGdBbVlSUVpxd0J0aWU1eGUzalkyTjNadXl2WGRsVTZKa3B4UVJobTNJdUM3Qlc4b1VtUFlMVERkUzVJTmlCclRxeDk1ZXhDRXYwZ1JFTVFFYU9OcDl0Y29xSVV2OXVIMWg3blByZ3VFeDNNOEZnNzlnQXVZaTRmanhoYzZodytXM010Ly9vZ1ArWlprOFl5YVpBWm1FcFV5Qk5JS21haUhFWnNBZzJmRlN6eGFOTTRtbTVPazFTVjA1UGd3VWtjL3R2ZGdJK1h4eGNYcnJldmUwSjhIZm9Uc1BGL2lmSmk2WWdCWVNFa1E4TndGRy9VRDNWY0ZFNVZPV0dWNmR0cU11dTRVSXBsSnBRKzJTNlM1MnNnZWlDQkM2aGExSVVNQ3htNFAxZkdUWWowWFovRGZXOUxFbmVqY2g4SVRLdnhid3I1bUFGaUsyNkdjZ0NlUWI5ZzUwcDBmMlJldk0wTHNkaTVWYm1BalhwbXh1a0huSTg4SUdDVE9jSUlXL09NdFRYUnpoQlFZMmQ0eUJTSmlQT2JuY2c2VWk3RnE3WnFTR29PbW4vUFVBaDR0QlFEeGF6SUlHa1hFSGtNTUVKR1RaNkNoY0hucTFheGtQbGlFSlMvQUhiWXlKTEc3YzB0a3dobmRXdzVkbHpvMURtRWEvR3RxWjU3SUZhL2UxdDV6YUR6ZmdYVnMwYUJvWEFYZzhMZ29COFppVGlBRnBJbktqZ3k2ZVBnLzFGRWRxTE91NkxHdUpVSjdTUnR6MHMyMXB0N05ZZDFla0NsUHc4UU1oa2RjWUF4cm9SUVFlajR0S3dNd3h5MWZFWTgxWjFoMUlnSHNEQU04Y1REZTZBM2lEaCt6Y255K01acUwwaGdHUHgvOERlZ25IekNrdFNlZ0FBQUFBU1VWT1JLNUNZSUk9XCJcbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBMaWtlO1xuIiwiLyogZXNsaW50LWRpc2FibGUgQG5leHQvbmV4dC9uby1pbWctZWxlbWVudCAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYWx0LXRleHQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmZ1bmN0aW9uIExvdmUocHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aW1nXG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBzcmM9XCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUVBQUFBQkFDQVlBQUFDcWFYSGVBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFCcC9TVVJCVkhnQjdWdDVrR1ZWZWYvT1hkL2FlL2ZNOU5pek1TUGpnQ0FNekNDVE1Tb2dZbUtVU2x4aXhTUWFxcXk0L0JFMFlxQ01EUm90a1Nva3BqU1lhTGxHRFFGeGl5UmFBY21BSU1qT0NNekNMRDNUUGQzOWVudmIzVTkrM3puMzludlQzYlBCNEQveHd1RytkL3ZlYzgvMys3YmY5NTBIMGUrTy85K0hvTi95SVNXSnA2L2ZaSytRUVM3b0pkZjBJak9JY3VGWU1OdmNUS09CR0thSWZvdkhTdzdBcmJlUy9jYjZocUZPMXpqZnRzS3p5RW5XV0JZTnhrYlNiUW9xNGhaRFN1RWJVa3duVVRLWFJNYnpjV2p1bldybTd5K0VZOC8yWHpOWnBaZndlRWtBZU9helo1Yjc4OEhsT1NkOGcxVklMclBjWk1nb0ppYmw4THFjU1dUaERPbEo4T3VsK3BkaXFVZVFxQ0hya3VLbVdZODhZMGZjRkhkNVh2R3VKMnVEdTE4M2ZNOXB0WkRUQ2tEbEUrczdSTGYzNS9sQzlBNjdIRjFrRnFWRlpZTW9qNUhEY0VnUG1BQlpMblNQTStHNmhFeFJnQkVTaFRFR0xuczhBRVl0SnRrZ0djNktBMkhEdXJkYWN6NjcvSm9ETzRHZHBOTnduQllBUmo2OXNyZWpFRi9qRnYwL2RicmlsMUVIdE56SlFtUDZZb0dvc0JialBDSjNJd1EvRXpMM1lIVGlTWnNVQUFSQnFRRWdZTzNoZm96bmlKcVA0UkxPdFVQNERIQnF1S1VhVXpKTmNhUG03SkIxNitQbHhwbS9GQy9TSWw0MEFKTTNyWGhySVJkOExOZnRieFdkbUs0VHdyTm5kMEhvam91SlNwZEN6dlc0MEpFS0s5T3pvTmJyWlRxU3Rwa2h0S3pBQ2g2SDRQZkN2UDRiSVBoRWM3aXZtbEJVTVNhYjlkenRoMGVUdjkxNDR3dVBFeThZZ01PZldyRzZtUE0rV2VyMS84em9NZ1IxWTZvU0JPdmZRdFR6VnBqOU50eGxwVzlnZ2MzMGRRWWREVUJteVJrQWJVUHlPZGIzeVJrSWZ4ZlIyQjFFczRjeDhMZVpoTHhKWjArMWJsL2JmODNFYlMvRUxWNFFBQWMvZmNiNjd2emtkd3Jkd1diUkIrRTdJRkR2SU5HeUs2SDVOK0VPTjcwekV4eG5rUUhRRHNSU0ZwRG96ekpPUDhkSFh3L2hFbE1BNHVCdEtqN1FaRXpodEppZG51bTRkc0FmKy9LcHB0RlRCbUQwTTh2ZTBWMm9mczVkbGd4UkY0VHBSbFJiY1RuUjhuZGpOcGRhR21haDJ3Q2dwUUJvUDVJRklNUXQ0V1g3dFVRLzMwUjhHUGs2TE9KSldBYXVIb25sM0V6KzlpblpjOVVaSDlzN1N5ZDVtSFFLeDhIclgvYjd2Y1c1NzdoOVNULzFzTDhqaUszK0M1ajlINmJ5UkFzVzJuWVc3ZVlkcFgrTGpqMWt1T0JhMkhiR3NCRlRTdWRpdWtsY0h1R01LcHdrM0NRYllmZGZiMS94ODF2dW1Ua3BTemhwQ3hpOW9mL3R2ZVhhRit4bHlRQjFzNi9ENUZlOUI0dFlsK2IwQlQ1K2xNa3ZaUUVuRVFQYVFaU3k5VG03TjhIM0NITlVFQ1QzL2h0aVFranlTRVN6MC9rZitwWDh1NWJmZEtSK0lybE95Z0tlSGQ2d3JxOVErWDZ1SjRibUlVeG5tV2pOKzVEYVZtQUdBRzFrNXBwcGRva2gyalhPbjVmU2NKdVdaYkRnZXJzRjhEblEvQ0hCMmNFNkRLekwyMFVDMk5oeDlITFBNQnMzYnZmdXUvNmU0d2RHaTA1dzdCOGVXTmZ0SFBwZXNTZnNvMjdnMWROUE5QUXV2QlFtS0RsM0czck1CN1dGRnBCK2wyMng0YWdVbUIwTEErRlMyU0Q3dTZTall3Tys5eUxyaUJ4dSt3OHlaU3k2Zzlyd1JOd0RDNWk2NVhqeUdYU0NvMkQ2SHkyVXc4MHEwaGN4QmhEdzNHNjhURkcxZERRWGZHNm00RFJiUTExdkxCak5CZWUyNitvNVR3ODFyOS8yanJicjBrLy9odnZMSUZxOTUyRFIwR3lYc011NStqVjdyMXU3K25qeUhUY0c3TDkrK2R0V2xDYS9ady9BeWZ0Z0xDdGZTOVIzbnZaNXk5Um4wMGhqUUJiMVUrMktoUnB2MTd4QlMxdEFwdDBGbXA3WGR0dDEvcDRrclJvaVN2UUlZQ2tqUHdaUjJRWGx4elE5NGY1ZzNNNjllK014aXFwanVzQXp3ME9EWmFQeVlidU0rSnJIWXN0RE91QXBiUm90MDVmNFc1SUMwUzZjTUZ1ZkZjRXowdUxIT0FiMmFWRWtaRXRZL3F4dVM5cDRRU2E4MUVObUFUSjdCdmYxWGtBMC9Ud3NWbEp4MXIraVhIV1JxdWlmVGdtQUxwcDlmekVmYnFFQ2MzcmMxcnVWVkFCU3FLZmFWZ29WTFNBUWlQaFUyMW1oNlR1Zkl6blZJTE8zUklXTFFCbTJyeWJEZGxMWjI3TkFLbncyV0E1RGtuZGdtcVordG9mQ1hSTmtGRzBxWFlRU1k5dEtNbDFUQ3h5bndtY1dFS2NXd2RlNDBHSlg4QjVGdGt5Y1F0QzQ5amQvdC9JN3Ivak1vY3BDT1pmTUFzOTh0cTljU3J4dkZqdmpvaWh6NEFPWEx3OXFkRTJPNkpIK0xOTDhMblJrbHdCbzh0OTMwdHlOVDFQM21rdXBjOU9sNU15VnFQYXQrMm5paWQxVXZuZ1pHUTQ2SW9zaWZ5dktTMFQvNmJ0MzA5alZkMU5ockpzNjEyNERyeHlpNEk3SGFQYUJYVlI4M1FBWi9GN21DVW1rQjJlRE9QMGVwOWNFQ2hKdkFxR3FRVVlZbGIzUTN2WDVleHVQTEpSMXlSaXc3K01ESDFuZU9mazV0eGVhNzBlMFh3SHRGMHBBTnZYMzdKekZBTEJoQ2ExTS9tQWZPVC92b3M3ci9oNkE0Ym1aYVpqaUZNWU1IZjdpUDlLc2RaRE8vTzZiVUFWYk9tMjFIOUNjaEFZbnZyK0x4bTk0aERhODV3UGt2aHlWWTJjWHRObUwyTk5QOFErL1Q1V252MDA5MTUxRlp0NkdoOGlqTFlCSGxMcUdENUNxUnhESWZvVXlJcWFKY2Z1SnNXcjVzbk52T2pKK1hBdlkvNWxWM1c0NGZVT3BVNjR5aXZoekZ6UmY3TU9DTWJrcEFXNUkvblNEb2thZ21LOWhZK0ZSUlA1WWxXcTM3S0grOTE0TjVCR2RuM3NXU01JUFJ3NFMzazV1L3dETjdYaVNuSzBGc2dld2VPTm9KaWlSejVQUXB6MGZ2SmY2MXA1SHBXWExTVlRCYUdjd0pxREpxVWt5VnEwbXNXTW5lWEtjbkExNWFFL0hocWpxVVlnaEFLSmhNUWlwSmFBZFFiVXhCRWJNNzhVOUNiblAzSEp2NDdGMmVSZkZnSGl1c2QwdHhwdUZZK2hJbnh2QU8zeUswYUVaL2NZSWhUOXZVT2VhaldRNkxqV3IrNG5PQ2NpNXBJdXF2NjVRSVljZ09YS0E1TndjSmZVYUNkL1RZR0JCRmpTK2JPTkdtcjc5V1NxOElvY3c0T2c0cWJUUEZnMEc5L0E0R1pNMmxjOEYxeGc3VE5JMFNkcWcyeGdpQjRIekJYSlduMEdWNzk1SnVlMUZxdjFpbW9ML25BVVg2eVhwRktrNVBrcTBya0g5NzF4SnhSVTVIUThLbUt0K0VHRWhzbDJ2QVFKRFh6c3VBS1lWWFdhWmNZNU1mbkZCcnk3eDZkQy83aWRyMXdDdC9md1hTQXkrRENrR0hIelBIbXJlOVJPYXZQWSthcGcrclR4akE4azl1M0E3QzQ1c0VRUnFpRGhXYnBLRDY4UTdaeW1xMVFCZ1BpVkhwTnhId3JJNGVPYkxKVEliRFlTV3FnNTJKcWRibTZUclFFaEhBVUd6TGgyNjdpa3FUaTVEQWZvZU1zNDdIK1JzamRKNjlldGZvZEYvK0JhdCt1UVo1SEFYeWk2cDU0WEZTb2d1Zkg2NHEydnQ4TXpNa2dESXQ1RTVJb08zQ0R2MTdSeVFqVHlxUEZRbForOGdyUmdlQnBvZ0tnOCtRSEp5QWo0MlN5NU1kVVgrRXFvKzlDQlorQzRiZFdXS3pOT1Y0Q0dDRTg3c3I5d0tOR29SUlZOVnNoR2pUQ2ROamZEZDJQUEpQd0pnQUlxWW1WSVJYV1ZGQm9EdjRUUEhEV1NTVHJlSXVkZFI4YUpYd01wQWduWStEWXVCcWNQTnl1OUQ3T2p2cDBOZnVwbFd2WDhJQ1VWb1JWb2VwZ2k3Z2tibmF6SHRuVXNDc0hmZGlwVjVVVmtwRWR5a0JkU1I2bUlmVWZtZUNnMWRBQVo0NkJDYU5CVjByaUFvTHhLYUpEWjFhS3pjMzY4K3E4VnlhYVlFaTFXZlR6QUlESWpLMjRnakVKWkNwRVREVEZ1Q0VCYUN4TXBYQVI1Y1NFSUJhZzd1RzJJOUlvdlhURXNLQloxOUQ0K2dlWXAzRmdFSWdxM0JTcWxNa3JOdVBZWC9rbEJqZjVXS3kvVjdXQ1lCRFZqUzMzSk1BRUpoYkMyWmtRRS9nSFZpUUlDb0daTi91RW5oZXBqUTd1Y1FtRkI4MTZwcWtXem1yQUVaK0dSZ0NNN0RBRTJZYVlUUExDQU5TZ2tMMmNka0JWVmJHQ2dmRjNBTlpuQkpFREo5cGRwY2xZS0NRMVlPY1FMckVHWUNiYWVjUTJvQVRTVTlOMGZnWWsxWXBKdFRHU2NwbFJVUW9ydUh1T1BlT0ZpblFvL1VuQVh2RVFEQk5LSXR6dyt2eWEwZDN1Y3RBa0JJLzJ4S09ZM2lWc2l0WEd3bEVDeXNUSkFEYlpwek05QjRYZnQ0S2h4cm1MVXJzb2lXcE15TUFWREVLVkwzQmswQTBHdkFrdGxGUXAyK0ZGT01WVmZZSFREcENDd3VhSGhvSkxPNVkwN0I4Nlp1a0swVC8waWVrODJmTVFINHhIRUgxaUFEemlhOGJrL1RBMTRmcFRLeGNjcDRkZGhBWVlkd3pYUE5KMlBlc1FITlhTMVpJNHE5NnBUSFZtQ3R0S2lHbEpiTVRpUENJeTJ4RmRUcjg0SE9ZUFBPYUd0R1hUTldwczZrekh1eTVwR3h5VkhFQ1F2QllCQUM3Ujc0WGxocGtKZExxTnBvVXVRRktyMktqTzRTdFpnbi84dUFjeHU5V1ZkckVWaVh3ZHFmSEtjWXFUY1dzMlQzTUZDWUI4U0kzWmxsZzYwTlFBMkRtZHd0Tm5JOTJVa2lWMGlWWGJXSlNSa3BjbExHb2l0Nzk1STNEUUNhVGZpcHA1QVdhb0ZSS3FTa28zbVZhRkZlTE5hRGlWZWdtZUo2bTVrdXFmSTI1ZkVLREFCb29lWXdCazJhWXlzSTJMcFNDNXFmMG1odHBpaXJ3ZnQ1SGF3SWRnVTFtdFRZOVF4WmF3MDFuMVFFSzI2VldKTHlHSDJMQU5ndDErZndyZzdXdkxvWkR3b0FJR0N1aFNFRXhIVk5Hbm44Y1dyT3pxSXhqNTBLbUJ3SExrb0RIS1VCVGkyUXpWY3hSRk1WTkt6SldmVDJ3N1VtNWZzdGxmOVZwb2kxRUN3a0EyRGcyWjZ0ZVpxQ3RUUWdXTWdnSkdrL3d6RGFta2dwQVB4dUJnRHJVSndEQUhpamgybHk1RGtxYndkdk1EVzRTcEVjZk5VU0UvQlFiekVBMWFEbXdqeEsyS2RMRmFPcks1TTNjV3lUK2w1VG9IcXhDbjR5Q2xlcklUZzJrU0VRQUxNZ3gvZG5CaUJFUzF0NGE0aDdwa0IwaXVjN0NPb21CZ0lsdGFwSmdhR3VJeTMybk9OU0NCWmRoL0Irb0ZPb2RsNDZtajdMdEhQTXNZQmRnUU1zRkZNWlEzL3cxUVk1cUdGTXRlK2l5MmtwczNwUm9ub1I1VVVBZExoU3pOK3V6RjhMWklBVDJHaUVGQVljR3Z5VElvM25aK25aMFhHYW5BSDFyVFhJcjhOZm01NmlteFJHcmNJdVhhU0VFSFBRZnExYlV0ZjU0RmNnSjRZbFZLV3IrYnZtOHFwcjZKaGdjQTUxd3dxbVBWZ0I0a0RFS1RPTzZhZytZdllzdHRFazNJVTV4TnhzbGZhTmo1UDNlcEMvYy9Ma2xHeGtFbE8zSldCaGNPOHNpZkR6WWhFQURjOE5rOFR3a3FSbHplei9iTVU4a1l1U05OZmowc28zZzhGc2dzdk16dEZvdFVZekFLQmVheUp5SXpZd0VKN2ZTbjB3VHgrUmZ3YUNPSnZ3UEdvQTA3V2dTTE1WSjlJaERNNitodnA3L3dWNW1zTzc2NUhPSElwT0ozRmJFMFRQelh5aWp2ZVB6dFJvcjFHbjhCS1RDbWU2NUhZZ2pSWXNEVFJyUDlIbXJ4NU5WRHJ3TXJubjAyQTVaelJubW1KT0FSRGpNV2dsd1lzTW1Ka0pMdTVnVXE0TkdMeWhLMHdhSDBSTWVOQ255blJJdlk1Tm5kQkVFZDVWdEMyUU5Wc3h1QWhBVk1BY1IyRUZhMTdYaGFEa1FFaFQrZnA4cnAySFFydUJoU3F2ZklaTDFqcVRaZy9FMUlGNWJRQnNNeFBrS2hKelJyaldCT0FNN0JIUWROcUlodFgyQXJsbzArZTZBWURTUHErVTAyR3MwbmdXcXhNcElpOFdrNHNBV0xOcFgvaklmYVVwSlRnakZtdFhVSDRHNUMyWHRlUVN4d2pEUm1IektvUEtxMndhKzVWUEI1N3lxYWNlVVJjRUtBR3NQRFJqdy9ZQ1BEOEI4NWVyNFVJcklCUnJIL2Vvdks2Q2Uxdm00R3pBVnVCWTZyNmVDL00wc2JkRzNiQWtHNVpWU3UyMUNiT3ZRZnZqQU1IclE0WjZOUUJiNHlpdE95VkhnV0NqYVdJWWdVcmhFcTZTcE1tRXo3RVVvV1dJMlVVQWlMZFQvUENIek9jajFOTnhsdG1VN1BoaWhod01sSFp5NkxhWU1DOExYU0lMYnVIMjJCUnNpMmgwaDAvN240MnAxTUNpbUhKQ3l3R0FITU1rcXkvcGdGQXcvM3liK1NjTE84TWNGcVVHQUpZeXNDVlA0dzgwcVhJSWJvREZjQkFOQWRJMEFKR0Rncm91dHFsN0pTeXpETUVMV0VlblF6Ym1aK0VGZUFZVEpVNS9yTkNzVlJEcldEMHA3ZHpJSWdDVUVpeDdkNlFDcndZaDVzQ1I2RHhxQUFnaFdEdXVqdGd3U1RPSG5JNFhXbTVJUTVkWjFEZzdwSW1IUEJyWkZWRWViaFJ6YWx0bFVkZUdISVRDczFZYWNwSTBwZEZDN3NDQkh1QmhUaHNhN2QrU284UGZyVklEakREZzk0TXFkMStBSUxrUmduZEJXQmE4N0FJQVMvazhaeXVETzFOWmx3aG5saUZyRkxGY1VXeE9GQWJrMUpJQTVBcjVoOE9xb1grckFIN09aUUUvWk1BQ1pBSy9Cb2RuMzdiZzQ5elZVVllBcXdnUnNlMnFEeE1FMFFGbkNMQXJOZnBMajZhZUMrbk1TMHNxZUZvTUZuTjdtVFZKcVVWdjUwbVVVQlppb1czR1dsMit0VVQ3Zm9aaXF5eG8rWVV1ZGF4aE00ZmdlUjJUK0I0R1ZzVVZEbmhKMmhyRDRQSTY0U29UTzBleHlwWlN4V1pKOWxQZkN3NU5Md2xBWkZkM3g5S3N4bEZjVnZNb2Q0QlpnbEFZRmlhVk1DOTJKUGkzWVRxcVNqT0F1Z2JDcExBUlVRQWc3RnhFYS83QW9SWGJKWHA2ZWJWSXZrOHdBMnJmcDVFdDg4Kys2MkJvS2NDY2pwZzJ2YnNiZ3NJeVhFUEZoaXpDT3lpWVRNekptVU5SRHJaVXFiV2ZNVmp0KzFvRzVkb0J2OEIrQkZWOXNpUUE1NkZSOE5BSEN6dENQN29pRENFNEhvZ2haMnpoYzh3dXdMemQxTHhFZ1lESEVSQlpPUFpkdXhCak9JalNpTlFlNGdGMnJHejJVY1FLRTBKbFpRSWRKWGRhMmJWZk5neGxXYno1MUhjV01sS1k2QXlSMDJadk9TbVpVc1VOS1o0Z3RjYlNJaXZVdnMrRE16SmtDWDI0VVdna0hjWFNqOUROb1NVQjBHOTM3NDRDLzQxUmdId1JadWlSc2dJT0xzTGc3aTIzdjgxVWI0NnVObTJ1dHcybFBUdTA4ZUpFclk0MXg3bGRaSHNDa2hZZmtxaDlzMVFvQnNwYTVzQm9xUFJ2bUliS1BxYXQrd1JjczZsQW1taXFxL09jcndCUXBoL3JkYk1pbzBCclgwcDczNGJjZ1gzdHIxNEVnRnNzMys1WG14OEsvR2lJT3phaEt4V250bFJGbWlnckVQeFVQTTk3c1daYjlRQVVud2NJaVFxUWVtTkRYVGRUNWhmUm9ucXBOY2M4RW9vanFHemhha0JKbGRvaUxRVFRoOVIyWVRpdjhYbmhrUzB5NFZud0tFZ284TmtDSUwvaGZGVU1OOXR0Y1BIZTRDdjNITmlQRzM4YzgwTjRPQXkwLzBRcWdqTGdjVnJDQnFyVVZPYUdRb1RMWGJWaFFsbzdKdWQwZzZPeVNBTmZSbjZNMXVla2Jjei96Wmd2M2cxaHRPWVJJcTBmK05YY1F1TjZQOUFBWk1KSFVacnVaRXY0Z0lWbml6REdUYlB3WHd2bFhXUUI0amFLbjd3Mjk4LytYUE92UkZNNmxwUG9Ub3FwZitCa2FOdkRVbnhsR2RYWmdPNzR5VFNWWWE3clZ4ZHBjRlVIbFpDYXJJS3RTVS9HKzdOYWZsN3phVm5iZm1TeElMVUdWWlJ4Y0VOR2lwb1JOV3NCalk1VTZabmROVG80N3RNZlhkcERhMVpiU2lGS2VGWlNxTTJlbGVlekVxSHdDRzIyV0pidTNEd3krdWdKQWVEamJHZjhxWWRrL245Qk9TOEpmS2JDSUpYby8zUDd5a3g1akFWM01MRXpLMUZ5UFgzQXA5bTVpSDd4V0oxNnlsUFUzMjNUNmtHWGxnMjRORENRUjh2T1JJcTFWYkhEdnN6emlMUlhJTlBLUk5jZVVyRzNHQUw3alpBYVlKY1RreDZOVHdRME11clJXQVVNY0RvaUw1UnFqdGZIdWd4bjBzUDVYbGZYVWdXOVRQT1J6NVlnb2tLKy9FVngyMng4VWdBSXBJbEhQdHgxUTlpc25HODFaYmZIZlRuZWNPQ0ZZOWhTUjJEV1VMa2c2ZUlMQ3ZUb0V6WEt1WXgrVEljcU1lMDYxTlN0QXRYREk4ckRuL09JS1RtQWFYR0ZhV3FMa0drUFFVVnNMSytKUmJPQUhzNWhMSlUzMkxDaUF1WjJIVUhMK3BFVjRESmRYUTZ0SFRJQlZwajFYcFh3clBrQUdnL1F5d3lnL1JEbm1QSmZlZVZOSTA4c0plc3hOMGRueTZQM0YvM09XeU8vK2pIdVoxdVpCWEJOenJ4ZGFHc3dZQ0ZiTHlqUmI1NnRVMGRSNzZYd0xuVUlBc0lBaEpFV1RKMFJzV2U1amRkSXErYk1BOUp5WDZSOUZPeTVVS0hBOHdNb1N3T2d6N3BTcmRjVHVtaExtZkp3UVhUdDV6VWZoaHp3MHVHbHBoK1plMkIrWDlLL3RGeEMyWFNjNDZuaC9sTDl5TnlEVGk3YTVLTEJZSU9BNUlvZ0k5Q2tqUkxad21vdFhpVE0rNTdIQW5ycXlSbnE2akFVQ0ZuNUtkTnRPNzJqM2FySjI0UCtQQUNVOVZHRUFpTGJEa2c3N1lyWTFMQkROYkNpU0ZlK29RTWJMSjV5Rnc3UUhLeERWSDRla3pIV2ZoWGQ3Rm9zWTZ2bkhWdHZtYmp0V0RJZTl5Y3ladzlQMUg3OU4vM1hoLzdNMTB3N3lmTnZnUXd6eFl3M1JPMjBEOXdNNmFMelNqUU5GNnVNMWFpUTE5WmhtUXV5bTJ6aExZK2pDU0dPQm9hUFJQVS9wT3BMdkdaYkY4VW9rVE9HRjBaYWVJNVhvYWZObnMrSktQeDAvK0hYM2tGMFRQbFAvQ09wV3g5bzdEeDhVZGM0Tmk3ZkpDaHovclpGcHoxNkMzYjQ4alBMdFBzZ3RyaXFJVG0ybU5mY1VzTllNSmE4ajlMMlg4S3hBVUxHSmwzNTF1WFVSWjRTTnZONTdmZXgwanpUY2Q3TENBTG5GNmJWZWRWbFgzMXc1bmp5bmZBM1FpeGVmMi9ITjZPNGNGdlVBTnRtbEgyTnRzK2ZHWG1PdXZ3cmIzUm5ycmlrajNvSHlzcFVWYXRRMGdzK012ZnhJTHlGTGJITEwxOU9uWW1uaXE4NDlYa0ZnTko4ck9oM2hNRG5OYzBwdDl6NWdRdHVPWHpnUk84NHFaL0o4WThPcjNuMTBJL240ckFIVmRZVzlaTmNtZVpwdFZKOVh3d3JjRUgzenRyVVNYT0JpVjF4WHhValFvZ1dCUkFuRURyOWp6SjVBTXRia2N0V2R0S2JMeCtnVHRtRWo2TmxIbXFDQnJhSy9SQXRPR3MvYXNUVTlLeGRwbGw4NSthYkozOU5KM0VJT29YajRXdldkUWJWeXRjY1VYdExybVFJYm5EYXFBSXQ4SE51UkhDOWIzTEV4bmUzbzBTSHF5YmRkLzhFZHEyYVZPUzRrUEtJNDRIQWduTlE0L2FpaWJCLzN1WitPbnV0alUyWk9maDZyRFhQZ1ErYWp4Z0lCb0F0c2diTmUwYkZ6blZlZWY3TkV6c0VuZHdQcDA4SkFBWENyWnZ0Nk1tOUg4YjI5Y2R6T1Zsd2lseS9jNmxxcVBMVWNqUnJ0RlRxUWtIVDIwRVROWk1lZVdLYUt1Tk5ORWxEK0h5aVVwelJ0dVdYcFVzTFZXWHZRSUZlc2JHRGh2ckJKTkdDRHp6TzlZbnFVVERKU2FKRTAxdTRIVE85QUYwb1AzVHVUa1RwNm0xZm5IanNWT1E1WlFENGtNTmtQVERaZVpXTS9FOFZDbUd2QlV0d3VIQmhJQlRiWStGMUVjUldZYU1hdEV0RmFzWVdqVmNUcWxSQ0dnY1lqWHFvaEhkZ1BYMTlPZXJwUWVzZEd5ZGxORVNTV2gzbUhhZzBKMVZObitpYVBrelU0QnpQSURUcWNNckUvV2xwMmZLclhqVzhaL3hVWlhsQkFHVEhqbzhPRGNxWnlwY2RLN3drbDVjNUc5cTM4bWw3bS9zRVhFTlltajNxelNLMkRrdTF2TXdjeW1oZFl1cm1KZmNRNE5NaHFqblZsRlZOVEthNVVyZTFRbTN5Y1ZxZythejF5RDVnT29XclM5M0xmM1QyOE02QVhzRHhvZ0RnWTllSGVqcU9rSHd6YlBGR3h3d0djd1ZEeFFUdUlqUHZad0FZQ0I2cUJraUp6cUk0a0pJam1XNWdKSkhVL1h6VjF0S1ZIWjlaY004M2dsZzYzOHFWU3pkZmVOT1JwK2hGSEM4YWdPeDQvQ1BMaWw0WS9iSGZySC9RTXVKelhUZHhsRVhZZWlkSUJUOEdRdWg5K29VQWFJWW8wNzBQcWZjbGxNbHI4L2V4N3hJazlpUmFkdCt3bmM1dlgveUZ3NC9TYVRoT0d3RFo4Y3RyQjVZRlUvN3ZZVnZrdlltTXR0bEcxTW0vYytJQ2lBT2ZNSFhuZHlrTDBQUlpxbmE4cnVvU2JEMmFZU3pzM2ZDWDI4b2w5ODVYM1RqeCtPbjZQOGI0T08wQXRCL2pxQ1dlbXpKZms0VE5iWEhvbjI4SXVVWVlzaDluYk1LaW15alU3cWhxbWZBdmlnd3BzSlVnb0dWakRENkRQTzQ4V2lvWC8yZnovb1A3dUU5Qkw4SHhrZ0xRZmp6L2w1VHpCL3A2eHV2MmNqUlRlc1BJN0JGbTNHR2cxU3dObzRrNllRcHhZNmJYTlErYXVXQnF3eWVtcXFkVDA3ODdmbmNzZmZ3ZmNLaTBPYVZRQm5VQUFBQUFTVVZPUks1Q1lJST1cIlxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvdmU7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LWluZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBSYXRpbmcgZnJvbSAncmVhY3QtcmF0aW5nJztcbmltcG9ydCBSZWFjdFRvb2x0aXAgZnJvbSAncmVhY3QtdG9vbHRpcCc7XG5pbXBvcnQgU3RhclllbGxvdyBmcm9tICcuL0ljb25zL1N0YXJZZWxsb3cnO1xuaW1wb3J0IFN0YXJHcmF5IGZyb20gJy4vSWNvbnMvU3RhckdyYXknO1xuaW1wb3J0IEhhdGUgZnJvbSAnLi9JY29ucy9IYXRlJztcbmltcG9ydCBEaXNsaWtlIGZyb20gJy4vSWNvbnMvRGlzbGlrZSc7XG5pbXBvcnQgTmV1dHJhbCBmcm9tICcuL0ljb25zL05ldXRyYWwnO1xuaW1wb3J0IExpa2UgZnJvbSAnLi9JY29ucy9MaWtlJztcbmltcG9ydCBMb3ZlIGZyb20gJy4vSWNvbnMvTG92ZSc7XG5cbmNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgLnRvb2x0aXBMcyB7XG4gICAgJi5zaG93IHtcbiAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IFJhdGluZ0NvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDE0cHg7XG4gIGhlaWdodDogMjhweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBzZWxlY3Qge1xuICAgIHdpZHRoOiAxcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLyogYmFja2dyb3VuZDogcmVkOyAqL1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEycHg7XG4gICAgbGVmdDogNzhweDtcbiAgICB6LWluZGV4OiAtMTtcbiAgICAvKiB2aXNpYmlsaXR5OiBoaWRkZW47ICovXG4gIH1cbiAgc3BhbixcbiAgLmJsb2NrX3JhdGluZyB7XG4gICAgZGl2IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgIHdpZHRoOiAyOHB4O1xuICAgICAgaGVpZ2h0OiAyOHB4O1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBpbWcge1xuICAgICAgICB3aWR0aDogMjRweDtcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgaW1nIHtcbiAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzdmcge1xuICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG4gIH1cbiAgLmJsb2NrX3JhdGluZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuYDtcblxuY29uc3QgVGV4dCA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICAvKiBpZGVudGljYWwgdG8gYm94IGhlaWdodCwgb3IgMTU2JSAqL1xuICBsZXR0ZXItc3BhY2luZzogMC40cHg7XG4gIGNvbG9yOiAkeyh7IGNvbG9yIH0pID0+IGNvbG9yIHx8ICcjMDAwMDAwJ307XG5gO1xuXG5mdW5jdGlvbiBSYXRpbmdDb250YWluZXIoe1xuICByYXRpbmcgPSB7fSxcbiAgaXNNb2JpbGUsXG4gIGNvdW50ID0gMCxcbiAgdHJhbnNsYXRpb24gPSB7fSxcbiAgaXNTaG93ID0gdHJ1ZSxcbiAgb25DaGFuZ2VSYXRpbmcgPSAoKSA9PiB7fSxcbn0pIHtcbiAgY29uc3QgW2hvdmVyRW1vamksIHNldGhvdmVyRW1vamldID0gdXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgY29uc3QgdHlwZSA9IGlzTW9iaWxlID8gcmF0aW5nLm1vYmlsZV90eXBlIDogcmF0aW5nLnR5cGU7XG4gIGNvbnN0IGxpc3QgPSBpc01vYmlsZVxuICAgID8gdHJhbnNsYXRpb24ubW9iaWxlX3JhdGluZ190ZXh0XG4gICAgOiB0cmFuc2xhdGlvbi5yYXRpbmdfdGV4dCB8fCBbJ0hhdGUnLCAnRGlzbGlrZScsICdOZXV0cmFsJywgJ0xpa2UnLCAnTG92ZSddO1xuXG4gIGNvbnN0IHNob3cgPSBpc01vYmlsZSA/IHJhdGluZy5tb2JpbGVfc2hvdyA6IHJhdGluZy5zaG93O1xuXG4gIGlmICghaXNTaG93KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBnZXRFbW9qaSA9IChpbmRleCwgb25DbGljayA9ICgpID0+IHt9KSA9PiB7XG4gICAgbGV0IGVsID0gbnVsbDtcbiAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIGVsID0gKFxuICAgICAgICAgIDxkaXYgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICA8SGF0ZVxuICAgICAgICAgICAgICBkYXRhLXRpcD17bGlzdFtpbmRleF19XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogY291bnQgJiYgY291bnQgIT0gMSA/IDAuNyA6IDEsXG4gICAgICAgICAgICAgICAgLy8gd2lkdGg6IGhvdmVyRW1vamkgPT0gMSA/IDI4IDogMjQsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgZWwgPSAoXG4gICAgICAgICAgPGRpdiBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgIDxEaXNsaWtlXG4gICAgICAgICAgICAgIGRhdGEtdGlwPXtsaXN0W2luZGV4XX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiBjb3VudCAmJiBjb3VudCAhPSAyID8gMC43IDogMSxcbiAgICAgICAgICAgICAgICAvLyB3aWR0aDogaG92ZXJFbW9qaSA9PSAyID8gMjggOiAyNCxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBlbCA9IChcbiAgICAgICAgICA8ZGl2IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgICAgICAgPE5ldXRyYWxcbiAgICAgICAgICAgICAgZGF0YS10aXA9e2xpc3RbaW5kZXhdfVxuICAgICAgICAgICAgICBzdHlsZT17eyBvcGFjaXR5OiBjb3VudCAmJiBjb3VudCAhPSAzID8gMC43IDogMSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGVsID0gKFxuICAgICAgICAgIDxkaXYgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgICA8TGlrZVxuICAgICAgICAgICAgICBkYXRhLXRpcD17bGlzdFtpbmRleF19XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogY291bnQgJiYgY291bnQgIT0gNCA/IDAuNyA6IDEsXG4gICAgICAgICAgICAgICAgLy8gd2lkdGg6IGhvdmVyRW1vamkgPT0gNCA/IDI4IDogMjQsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgZWwgPSAoXG4gICAgICAgICAgPGRpdiBvbkNsaWNrPXtvbkNsaWNrfT5cbiAgICAgICAgICAgIDxMb3ZlXG4gICAgICAgICAgICAgIGRhdGEtdGlwPXtsaXN0W2luZGV4XX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiBjb3VudCAmJiBjb3VudCAhPSA1ID8gMC43IDogMSxcbiAgICAgICAgICAgICAgICAvLyB3aWR0aDogaG92ZXJFbW9qaSA9PSA1ID8gMjggOiAyNCxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBlbDtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXI+XG4gICAgICA8VGV4dCBjb2xvcj17aXNNb2JpbGUgPyByYXRpbmcubW9iaWxlX3RleHRfY29sb3IgOiByYXRpbmcudGV4dF9jb2xvcn0+XG4gICAgICAgIHtpc01vYmlsZSA/IHJhdGluZy5tb2JpbGVfdGl0bGUgOiByYXRpbmcudGl0bGV9XG4gICAgICA8L1RleHQ+XG4gICAgICA8UmF0aW5nQ29udGVudD5cbiAgICAgICAge3R5cGUgPT0gJ3N0YXJzJyAmJiAoXG4gICAgICAgICAgPFJhdGluZ1xuICAgICAgICAgICAgb25Ib3Zlcj17KHYpID0+IHtcbiAgICAgICAgICAgICAgc2V0aG92ZXJFbW9qaSh2KTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBpbml0aWFsUmF0aW5nPXtjb3VudH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZVJhdGluZ31cbiAgICAgICAgICAgIGVtcHR5U3ltYm9sPXtsaXN0Lm1hcCgodCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgPFN0YXJHcmF5IGRhdGEtdGlwPXt0fSBrZXk9eydzZycgKyBpbmRleH0gLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgZnVsbFN5bWJvbD17bGlzdC5tYXAoKHQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICAgIDxTdGFyWWVsbG93IGRhdGEtdGlwPXt0fSBrZXk9eydzZycgKyBpbmRleH0gLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt0eXBlICE9ICdzdGFycycgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvY2tfcmF0aW5nXCI+XG4gICAgICAgICAgICB7WzAsIDEsIDIsIDMsIDRdLm1hcCgoaSkgPT5cbiAgICAgICAgICAgICAgZ2V0RW1vamkoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIG9uQ2hhbmdlUmF0aW5nKGkgKyAxKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIDxzZWxlY3QgcmVxdWlyZWQgdmFsdWU9e2NvdW50fT5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPXsxfT4xPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT17Mn0+Mjwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9ezN9PjE8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPXs0fT4xPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT17NX0+MTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvUmF0aW5nQ29udGVudD5cbiAgICAgIDxSZWFjdFRvb2x0aXBcbiAgICAgICAgY2xhc3NOYW1lPVwidG9vbHRpcExzXCJcbiAgICAgICAgcGxhY2U9XCJ0b3BcIlxuICAgICAgICBlZmZlY3Q9XCJzb2xpZFwiXG4gICAgICAgIGJhY2tncm91bmRDb2xvcj1cIiM2NzY2NjRcIlxuICAgICAgLz5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmF0aW5nQ29udGFpbmVyO1xuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBFcnJvckxpbmUgZnJvbSAnLi9FcnJvckxpbmUnO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG5gO1xuXG5jb25zdCBUZXh0ID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIC8qIGlkZW50aWNhbCB0byBib3ggaGVpZ2h0LCBvciAxNTYlICovXG4gIGxldHRlci1zcGFjaW5nOiAwLjRweDtcbiAgY29sb3I6ICR7KHsgY29sb3IgfSkgPT4gY29sb3IgfHwgJyMwMDAwMDAnfTtcbmA7XG5cbmNvbnN0IFRleHRhcmVhID0gc3R5bGVkLnRleHRhcmVhYFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNiZGI4Yjg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgLyogaWRlbnRpY2FsIHRvIGJveCBoZWlnaHQsIG9yIDEzMyUgKi9cbiAgbWFyZ2luLXRvcDogMTRweDtcbiAgcGFkZGluZzogMTZweDtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIHJlc2l6ZTogbm9uZTtcbiAgaGVpZ2h0OiAxNjJweDtcbmA7XG5cbmZ1bmN0aW9uIFJldmlldyh7XG4gIGlzTW9iaWxlLFxuICByZXZpZXcgPSB7fSxcbiAgaXNTaG93LFxuICBvbkNoYW5nZSA9ICgpID0+IHt9LFxuICB2YWx1ZSA9ICcnLFxuICBlcnJvcixcbn0pIHtcbiAgY29uc3Qgc2hvdyA9IGlzTW9iaWxlID8gcmV2aWV3Lm1vYmlsZV9zaG93IDogcmV2aWV3LnNob3c7XG4gIGlmICghaXNTaG93KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXI+XG4gICAgICA8VGV4dD57aXNNb2JpbGUgPyByZXZpZXcubW9iaWxlX3RpdGxlIDogcmV2aWV3LnRpdGxlfTwvVGV4dD5cbiAgICAgIDxUZXh0YXJlYVxuICAgICAgICAvLyByb3dzPVwiMTBcIlxuICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uQ2hhbmdlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICBwbGFjZWhvbGRlcj17aXNNb2JpbGUgPyByZXZpZXcubW9iaWxlX2hpbnQgOiByZXZpZXcuaGludH1cbiAgICAgIC8+XG4gICAgICA8RXJyb3JMaW5lIG1lc3NhZ2U9e2Vycm9yfSAvPlxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBSZXZpZXc7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBAbmV4dC9uZXh0L25vLWltZy1lbGVtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbHQtdGV4dCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZnVuY3Rpb24gVGhhbmtZb3UoKSB7XG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgd2lkdGg9XCI0NVwiXG4gICAgICBzcmM9XCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUZvQUFBQmFDQVlBQUFBNHFFRUNBQUFBQ1hCSVdYTUFBQXNUQUFBTEV3RUFtcHdZQUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFDV0FTVVJCVkhnQjdYMEp1R1ZWZGViYSs4eDNla1BWZTFYVXlGU1JXS0JKd0NGb0lrWUU1Y01TaENLS0ZFVFNqYTBJeFBoMVRGcU5UMDFpN01RT0g1b0VxMlZRZ3NiVXh5ZU42VlF3M1ZJUlkyY0FqVFFpWUlYQktxaDY5ZVozaDNQUHVMUFcydnVjZXd0ZXlTMnF3UGVaMm55YisrNjVaOWo3MzJ0ZWE1OENPTmFPdFdQdFdEdnNKbUFadHF1dXVxb1N4L0hQcEdtNjl1U1RUOTQ1TVRHUi81alQ1VHZmK2M3VGhSQlpwVko1ZVB2MjdTRWVVN0RNbWczTHFHM2J0cTJLWUwzT3R1MjNTaW5mbUNUSlkzaDQ1NCs3NXF5enpwSjQvc1gxZXYwS0JQdWZycjMyMnE5M09wMTdkKy9lL2RDdVhidFNXQ2J0YUFOTkhISlkxTFIxNjlhaFdxMzJpbXExdWlVSWdvdGMxMTFEeDdNc2czYTdmZDl6VURNQm5VOU9UazRqMEt2dytpMldaVzFCVG9EUjBkRUhUenZ0dFA4OU56ZjN0MUVVUGJCang0NVorQW0yb3diMGhSZGUrSEw4ZU5QWTJOaG5rSDA3ZzF4ejNubm5iZlE4NzIrUWlqY2lVQlVFWENEUWtPYzVJRGlBRk4wZTVENUl5VzI4RCtCaVFYRTlmcDZLWExFWjczRTFBdi9iZU5xZkRuS3ZMVnUyclBKOS96SWMwNS9lZXV1dFhUaEtUY0pSYWpqSjl3ME5EWDJ3MVdwdGdRRmwvN3AxNjU1R01PNUhrS3BJalFJbkI5UUpOQUlNUmNMQ2M5MERLWjQ0YUFIUDVldndQdHpOOVFMN1B5TjMvQlVNMXNUSXlNZzFPSmVQNDJMOUtoeEZIWFpVZ0w3Z2dndU9SNERlamxRNU1qdzgvTUVycnJqaXhFR3VROHBQa05VbkVJaW42VHYrWFhha1VsQktMUTV3RzRVVU8wOS80S0x4ZGVaYW91eHAvUHcwaW8ycEFlNERsMTkrK1NhY3czV05ScU9Dbng5R25iRWVqbEk3WXFCUnhycmo0K01mUVlCck9FQkFxbjQ1L3YwaHBMU0I3bjNMTGJjOGhoYkdmOFBleFU3aWd1VXpnb2NmMlJ3TTFqcm1HcjYrMisxQ0dJYjBlUU4rLzd0QmJrQ0tHT1g2NytMNGEwalZnRUNmaE45L0g0NFNWUjh4MERpZ2w2RnNQUjg3L1Ewa1o1SDFMajV3NE1EYkJyMEhndklWVkh4M1kyZVFDSEFFTFI0VWFLVGNSYnFHNURwYUhLUkVxWDhULy80Y2NjMGc5MERpK0JVYzk0Vm1Eb0JFUTZMczdlOTk3M3ZQSDVSb2ZsdzdvaHNRTmFQaWVBL0t4UEZDTmxMSEFlTllheDlCS2hrZjVENmtkQkRVVDZCOGY1eUFNb3FRU0hvUTBVR0xRa0Fyb21LNnZ0bHNocmhnSDczeHhoc1BESEk5Z3JrYTUvRWJPUFpLM3h5bzIzajhkNmVtcGs2R0kyeEhCRFN5Mldrb1Q4OTJISWZsS2lra1VrS29sSWdhWG9Zc2VPMmcxSURBUElBQWJVZEt6QTNZWGV3RFVmVDA5SFFIZ2M0SWFMeUh3Z1g3bjlkZmYvM2ZEM0l0eW5DQjQ3MEErMnNRMUVLSmxuUEJmZ2FlZGdVU2xRVkgwSTRFYUlIZy9CcCtiaUJ6aW1Ra2RWSkNCZWhJR2UvZHMyZlBHWVBjakZqODRZY2Z2bjVoWWVGZmlmVVJ0Qmo3UUdZaVBxZUY1N2FNMkhnUSt4L0FnUFk4S3NEMU9OWmZSMEE5R2plMVlqNzBTWW9WUDYvQ1o3d2VqcUE5YjZEUkJ0NkVvRzVOVXExOENCeWtKRlpDeFBvRU9Gb0JJMGdsZjRJdWNtT1FlNkluMThWN1hJdDlQNEdNVkRxUTZNQnpFeHhEQjYrYnhYSDgxODkvL3ZPVE1HQkRtWHcxanZQbkNWQUNsOFpQOHpCeW51ZUNRRnNvbm40VnFYb1VubWQ3M2c3TDNyMTduOEpWZmhzTzhoZFZybDZKQTNvWnN0OEtwSXBSN0ZhZUs3WUFjQUt2eG5PdXdVcytpVDEvcnZ0dTJyVHAvejN5eUNPM0lRMmNnL2NNQnhnS1VYU0VBTTBqR0hjalpRNGtNcWk5NHgzdmVCa1N4QlVJc0VXQUV0RFU0amhwSjBuOFZCSjN2OXZ1ZEwrT3YzMExEMDl0M3J4NUFVMUZlRDd0cUpndXBCUlJjWXdpOVc1QVVFL0RtNTZaSzNVNi9yUVJ3YTRpWlU0aWRWeDh4eDEzL05NZzl5TzdITm41T2hJQk8zZnVITWdHUnMvMEpnVHFJM2ZkZGRmVE1GZ1RsMTU2NlcwNDdrdDl6K3RZdGsyTCtsQ1dKTjlFYXRpVkpQc2VndnVmbk41Ky8vMERXUzNQK1RCNFlacEE4S3RJWFJ1UXlrN0I3MmNpMk8ydmZ2V3JIeDMwQmhRRFFXM2ZIalF3aElzemZPZWRkNUluT1pCc1B2Lzg4MzhCT1dFN2p2SGJxTXp2UmNyK0RwcWtlM0ZoSXpqV2psNDc1NXh6cXFlZmZyb0R4OXF4ZHF3ZGE4ZmFmL2oydksyT1J6OEZiN01jK3oyazRwTW92ZjJVNzhCdFlnZGs4RlBVSnRDWTMvYUhjQ2E2ZGFkbEN2WlVRL2pHMmdrWXlGdDlabnRlUUQveSsvQ0dZR1h0cnFIMXF5b0NSOUU2TU4xZDJELzNHM1lGYnQxMExmeFVtRWRxQXVRakhueThkdHpJTlVHdEdrU3RkaDdPdFc2Zi9GSHl2alAvQkFaeXBQcmJZWHVHOTAxQVJmcjJCMFpQV0ZPcGptQjZUMGh3SzRIZmJZYS9IYlc2ZCtNcFQ4QlBRZnVCRGErdGo5VS9NSDdTaWI3dDFTR05XekQ3NUpNWERiV252b0UvM3c2SDJRNDcxbEgxWU55ckI2LzBxME9ZRXZId0RoamhDdXJnRDFlUGw4TDZXZmdwYVpaclgxQWZIL1dkWUFpRTdZUGoxNkU2TWp6a0J2YUY4RHphYzFMMEgyMkQ2bHRPaGFHWG5BQ1Q0aExJcE9kSnUrTFowa0dRQlVXN0ZCSzFnd054d1hKZzNWTi9EQ3REc0srVGdYMnV5UElrYXNWZjhXTFlmc0lFSExWRTU5RnN4S0UxSDg2M0hma2FqSVBOeWp6LzBpTjc0RWVXWTczVXdiZzB6NUU2elJIem1XNE55UnNPdjRyaGtFQy8veGNoMlBMTGNQbjZ0Y0YvOWl2VzJKTlR5WDJQZkRyNmVDTEZITVl6S0R4SDJUclFIaStCTFFIakczN3NleDhhV3JYaVBkVVZLenlWcFREN282ZlBXSGg2Z1pUa1FGbm9GN09wcldBOTdNcVBEYTBkL1RWL3VMNENjc3cwN0p2WnVtbGpleHRPSnhCU0V4S29EUFFjTVpmcFdERmQrK2dmd2F0c3o3a01WMkhqNUZUOHJZZWVnci80OVp2aGtIR1dRd0w5bHRmQU9TY2NYL3ZreWhQWGpOaCtEY0tGK1EyTCt5Wkg4bGIwWVh4bXFQRGhJdE42VCtVeGRvVWRWdnFONnRuRHg2M3g3QUFqaWptR0dMUFVEZWM3Nzdsdkl2bktHUk13RGN1by9jc3A4QXRqdzhHVncydFhqWHIxbFpRRnNLVzBOODgrOGRRMnBDTU1mMkI0S2FlWWtnYWE1aXlWQ24vNDMrRWtwMUc5dGJGNjdDV081NHJhaXRselBiKzU2WXYvSmZyUTVUZkNrbG1kSllGKy8xWUlHblg3MnFIalJrY3FJMk80aW5VVURWVklvKzRaU1d0eU15NThyRklkMUdKNlZqcElUdGw2RE9NMUxLOWFzcHdiSUx0VnZMVnFNcUhNK0xJQzJnVzBub1pyTlJ2bkpsRFg0RVFoR0I1QnRiUC9GV21ZNVlvU0dWa1hRNzFhbFdHNkhlY0pIY3R4THgxYU0vNlN4dW9OUWdyTXhBU0IyMjAvdHUyNDZlZ2VQTzFMU3oxclNXWDR5aHFzckZldHpRU1N3QnVCUWlNT0ZVSlFyN2t5Y0lmeFFKSlRPcCtXUGMrWW1ubkZjNUZMeHpib3A1cmxNS0F1SFJtQUJhdGhtVFZweTFOdDEzRWxBNW56ZUtXRmFTemZzL0lNSStvc0htbGVPUUpNMmFPY3lEeDJhdTRwMWFFUkllMHEzUVJzcndLVjRhcFhxMW0vZEtobkxVblI2NGJBc1J5VVV2UjhacCtVQnlKdDE3SWR5ODB3YmFvQjFtWTRBMDBEd2lRRlVNU2YyRTNROFpTUEMwdGFJb1dCRXJVdlpoT2d4aGhqSWdvelJ3SlRLSkhUWEdoZUJIQnhOcWZxc2p5MXE0R1BXSlRYQ0pMZm1McXJCWElZdVp2TFNwNzVyS1ZsdEFlcDBnMGZuT0tERXcwWTJtOVNXaU5TaUlTb1FDc0xJbHBLVzFIUkN5QWxaQXd3VFVCbENWTUQvWXpMVllWbDFvb3hjVzRROVEyU0tJOFo5UXFsNFNRaDF2UHBGQUZLWktjc1M0enkwVHpXdjlCaUtNWTJFWWR3QVpjRTJzR0Y1Rm9mWWhWOEtIbC9vT1dVd0VQRHdyVVN5L1Z4RmF1Z3RYS0twcDFOZ0Z1WkFUcFBGVkpBYWxpT2gzdlV5cytPV3NNOE1rc0hTc1FpeTBtYUx5Vm0weHlOS0xRdlhNenV1elJIWGJ0cE9WMndFUWZrN1hFUXVlWjJsZkpDRVZIYUFnb3o3Rmx0U2FCVkJLVHBVREN4NnNVck03T3VKQWFVZzVRZGtXekNVZWo3NWhiS051eWlVSTVhbEJTTFN4U2Z5MlZaaXkySW1ISVNGMGdRQ0pkUjZybEMrUzBzZEF6QUNsalBNS2lvcjVUTU1leWhUTEk1WjJ5MEhDZHFNaVMrUkZzUzZORVJkRXlreVBnQkRHVE85RWphRjBXR1FNaWFxZ0FTaFJuOXdXeUdvc05HVkNVdWdMQnhrRWpSV1phemplMHNQM3JtY1RHQm9BSWttVXVpVUZKQ1daTGNBOGxjekJnWUVVa3JBS0tGTXNVdE9KbUpzU0JpZVdoUFprbWcwY0JJcEkxeW1Jb05hUUJrZWFDcEptMGtkRnhvQkxuRGlpNHJuTDI4ZkpnU01oY0V0T1hqTlVqNFdZelhXWkRieTA5MFNGWXpGbEtIZzJNTW1HS0YxU1VNVTlUcEZVMWt4TnpVMmZySVVHSTBwVzI3Z3FoZFV4aENnc1NFOS9FY2RPUU9FY0Jrb0g5NEEzanRPVGpUOXF6alVwWDlvR1hCb3lOU0pxVGdwRlV4TGlnaVpaRk5LYWlVSU5VV1JXWWtrakoxSExTK3VlWUVsdW1DLzZPTHBJSWpxdlI1SVpvazlpUzBlWXg2anN5NlNrVlNJTkNseGFWRklVMGJSVTBzTEtJNjdaNExpU1loRVJTdm1tRFI4ZjkvRDlZbktkUm5JNWc4KzVNd3c4K2FPQXZzYnRQK25aSGpHbDhlV3pmNmhSVXI2M2M4L3JSN0ltSVZNb2JNUHRvVjFUU0xqMEV4UlVwREE1M3lxcE9NSW1XZHAxb1pNaVdvRFBSNXRCRExEMmhGTWtFWjF1ZTVHRVdlcVl6b2h1VTErd01rdDltMFE5ekpUaUN4SXRqQm9SZ0lMUkI5alJYRS96d0JadytQVmU0WVBhNzYxMnVIcmUzLzl3T3drWjVsbjc3WmZrVmp4SHZmMkluclZuaTFJVWphQ3ljY3YvRDR1eERKbGpabTZDSG1ZWnBZN1RqTzU3VWRUUXNvdE9JanN3SzVrRjF4SG5TdUI2MEsyM1Q1YmVCUnhsb2dxd09GTTdCbG5XdkxnOHc3dHJyNjVvZ1dWWjdIZEFBcGp3aEpGakpjM3llT0lWKzF2dkdiS3phdWU0WGx1ckM0Yi84SllUZ1ZUNXlWYmJOWGoxVzJCcU9WVWJkU1JhQThjR3JETUxhcXVqYWViN2EwSTVJWmpXdnNEcFFsR0JDWTV3Q0xMS0picUFXZFdWSXFGaHNldVdZNU1nMjFWM1dRRWJKc0dvOHJ6NDNIUjJhc3BZbUNqRmcwNzJ4V2tEaEhvbVlpTWttcmtTK2lIZTBVcGgwekExa3N0RmdDdk5xSzBiWEIwRXErZjMwOGdaSEp4VGVkY2NhS1Uyekw5VTZWamlVMGhTYU1odU02OVZpcHRoNUVwdTFvWTB1aVBQTzBXNDFoVW5lSUZRaUJiWHVUYU8xWnhFT0NZd05zL2hVVitFQ0crYklEV2hodlJDblZPMEl6SkNSOXRHSXBadU9OYWs3R0FKa2w1NVdpMVpER1UxTTY5RUNnbzh1dU1GSk14WjAxelJrSnM3aGRjU3BEZGZ0bmJaRjJ4Z1ZpeHdFVVM3TVAzaURBZXpTMWZPMVJNNEVtTFNVVkMzNnlNU3NsMEJLMU1CbjU2R3dMNGVCeERJbklCT01BVHM3T2pDV1duNHdXeUpvU2ljRWl5aVY4TUJjbnJFV2FCeUp0VzJ5SldIaGNwdXdya0tWaGxSNmpNbUpWbVZCRG5pTS9rM1ZiSVkrUnZXSnQydHBXMmpySlZsbmtBUmhWcDQxdVlCS20yNUY1UjFFdHFjRVVCSnJyMkVtYWltTDF5M2d0T3lYSzVZTVNiMm5WV1h3SXE0TmdVNzB4cmN4ejFqaStxQTBKMTBLT3hua2g1VG9OQmxWYSsybEdVZ2syUXdBS2k0UzdwQTljQUpzelM5cVJNWEZxeWRhcmc5eGhzeE5rNGorSWk4ekN1UnE2T3Jtak5PbmpvbWt4UVhDZ3VKMGxReDQ0UXVWb0d4TjRRdzZCeVRJTnNyQW51eWxla0lOSDkxRVVOMkI3c3BRWDlNZXkyanhLaldJM2JJQ3lLY3JSSlIxRVFnMk9MaVA2Q3loS2M3TVJsKzFwRE9nUmhUb09MZzQ1aDRLSmpHTkkwczZVRkp3aEx4UnFyclJIbmNScFFETFZZby9Qb3E2OUk4dVdFT2Vpd3hneVJUczhFS1dkeEVxZVVLeVcyQ1hSbmlIb25WQVl3Y0xZSVFvWFhvUU8rL0lrNDdVYnYveUFKcXJTNFlLRXg4b2NUVW9jbEUwc3p6WTB5bVk5Y1JJRmJOWTYyclN6ZGFmZkpQa1g2T1JJR1dvZ0NWWWlOTzJqVWZUU1pxcTNqWXhGbDVCT3d1TVlNVkpON2I4RDlEUXNEUUk4UkRKaTA4K01scHJqQlZCZE9mSlMxM01yTkVhbWdGeGJIVW8vMG9WbDFoQWpSOHRZVW5iYWdpQXZzVEk2dE1tdFZpamczRk40Yk1JaDBLbXlkQnBQYzJ5cFFBRzZxSVl5bEFTdVJGSEVqanNGNUN3T1AxRG9CS1QyMzFSUDVBTFUwbFF0NHMyUWwyTDh5WUlpN3VxZzBaTjZhS2F3RXlOTEQxRDZvOUFZRjZOYWp2bWc1WEd1SDBqV2g3Mjh3cVNVTDN4VUNxK24yREttVU10clFHTlZ0c0d5VVhhelc2NUZDbWkxaFVDU3FzUzVaN0hSWnhaYkpiZ0VUVnd5d3NYVFhxYmVLeW5ZOHNMMUl3OUl4NTJOdThuUFZZN3ZnNDBCZmlpQytMeHFLRUs4YW0wMVNxckxMRW9HRXdlQVhYcU9GdXU3RkRUTEdQY2NyN1VkRnlXUVdEa0lBUGRNZ0gzeUtsalZhVVBkeldIKytBNGNFQk5IWDR0K2Z6TmdBa3BXaU5OTnpKR1BDN1E4M0RxSlM3STRmT2haRjRpV1g2a0c0eVBuT1c0QUdoU2k2bHpIcFZHNDA5WWQ1QTZyOURKTkZCTzFuclFSeTVTTWJWYUdITEJueXJabHJyd01yUXUyclVrcHNsenl3QnRhNHpyVnpucmhyc0RCVkVxSFJTOVN3dFlITjZXMXRFUld0RDI4enBXcjRjZFVqRDM1WjNCaUx2eHRqdWRkaG5iODhlNlFzSk1vanY5dE1Yem9nWS9IZjQ3OGRmdkwveGdPMmh2K3cydWdFYTJDMXdWVjV3STdjRS9IckpDSDJtTnZGcVYvRDJsM3gzMy9BTHN2T1VTWldqZUUwVVpnVjltMEs1VmhFYU94dGVsS25lZVNzWW5uVk1ZcUs5YUsxOW5CaVBZS1ZXRkRVd2dpd3lWVEZjNHpJZkE1SnhCMG1xOGRRMlpydVdHVUdabHdnbVM5ZE5IUFQzSU92V1ltRG1vejBHUzZTU3N3MzdYN3FXVjRwRmZXMkpaYWRDZ2VOR2xwNlRwcjFlY1NSN3dibnJWVjRmRS9jMTV0VjZvM05WYU52Y1J2akpEcXdNZkdrRVJkTjJ3dS9wemNNM1hEVERmNitXOWRtZi9XYTIrR0psM3o3ZmZEYUt0aGZXWjRwYmRsYU5XS21qL1VRQk1TSFRZbFRvbkM5aHM2VXpOWHYvb040U2NlMzl5NWVhbWFrbG9WVmptQjc1Q3J6REVMalNqMEFnVmFKL0Z2TkZlQ3lSa0N0bEpwL2l5akV4T0xwa1JIamphdmxObzlLd0pWK3BhVzFNWkd6cEVuY3Vvc0hTUnhmYjh1Z21DRDdUaUtRNlNGYzhLMm96UmNnMVpGMnNLT1JKYTBkT2RqMUVNZFFqVkJHUUxPcTNySFBUb0RKejF6d25zLzYvMk1XNmx0SDkyNDRhWFZNUlNOYmsxSHlvejdUb3E2TWxyeGdxcTRNdktkS3hnT1Jaa2UrZUZLdzc2a3RuS29Sb1V1cE1TSU90MUtBK3BqNjhXS0UwOWVYVms1OGdkeXBYZVYraHc4dTdMZmdkUGN3Tk54OUNJNFJ1VVRaTEtTU1plYStXVnQvWjNOdkZUN0ZBWFlVaGNSc2R0aFc1aGlzV3UyNjNFRkYyRXBqU251VUw2QU5CeGJrMW8yODhyNTlVWmp4WEdyL2xOUXIwdHQzZ1Y5cTI3T0krb2xZRE1hVE5OOGRyVTV4QllIcmJqbVdnSzZNanBzV2I1ek5ZVmtTMHIrakh1SzFhanNHTjI0N2xTL3ZoTFJRNlVTTFVEY2JVR0VRcnJiYmtMVTdoQzFnT3RSc0YxY1J0SEd2MzVYNDJTMFJMZDZnV1huR0krTXdnNTBXMDI4cm8wU0EzVjRpaWtudnc1RGE5WU5WY1pIUC9GRVhybXlIMk9xVG5Lci9xVit2ZGFqNU1LVW8wN3pJQUppUW1ycXpuTTFBU1kySEt5UytDaHBnSDcyaHNiNHlDVmMzY1F3Y3RpVXc2ZVU3TEl4M1p2cTRoY2RxU0pQMmZLR0FjbkUxdkszaU5FYXdWODJFeWJOVFhRdk42d0dXbkhRR21wdlhvZW5BOXFRdjJIbDFaMjVoWTFQZkRiL1J5dHdUd2thMVMyTjFXdUhxTDZObnAxRmJRUXJSSkdCdll2NXRBaVBkV05ra0FqQ1pnWmgxM0plaDNkZlNPUFZTU3ByYVRmQmhRaUJGRTFPbS9XeEl6ZUNnL3JHOFRPd01kODNzdjc0aHVQdnUySFBUVE5ucDgzdzgybVNSbllRdkx1eFp2UlhYRDh3d1k2c2lIcVllWUlSaDJadWhXZlluN3ZnYStpWXpkWkpkWFNjQ01GbGkwc2xaUVVBbnlvZ1FTMkpnVDhxREVIQkxjbnVFNmxtQ1VrMmRlRitGc0VUMVl2UDVsblB2ajVvQVVUZlFwU2pZdFllWHIxR1ZFZFhubytPd1p1bDYxc0lzQ0JxVUVrYlFVWXFScERqVGdkQjdrTFNRYURiQkhBQ2N6TVF0UmJjYjZhSi9lbXpka1haanEzdTl4ZWJzRlBzVFM4Y0dRMzlvQkZUVFJ5bnpmS3NLT1pCVHZhUmJGQVVOZGFjN1BwRG94ZmhUZDZvMGl5elBMZnVWU3FDbkRPbHM5dFFsSDFwaGxXYzV5d3BuVTFsUThYRkFoakMxdTZ5bzAxQlR1c3BwbnpPcHBQWmwyU0FTRVoya3FpUXZtZ05tZXNUMmVXMm9GU0NoWEhPRkp6MUJsWG0wNHhMQWxhZk1nVCtYWUMyTlRrK2dLeG0xd0xTS2piTE9tTFRwSW1EYVpQaVk1RGpEb0xkN0VCck5vYUYyYnpUYXRyM2ROdnVUVWdrOTc3MXk4MFpEc1B1V0p5OTQ3TEtCMVRxZkRYcXFBc3J0ZVFOamRIT2VHVUlDYWJoYS9ETWVqc2tROTBHZU1QSDQwYzZ4RjRnV1ZJYytJa0FsZ2lUQ3hQWEtPTjdvcCtMRGZleXQyd0lqUFdZa1lqa1FTcXo0RVRBNkpBZ2MzWnN5b0ZsS09kVXNVcDhVYUFWWDJGRE1wdklIc0VXV1JjR2xZNDdVRlpZaXFJd3NEaFhhQ1ZMTEdWWE5LZXdqTmV5TUkrYlZHcUdNaGtwR1VFT1o1b3dQNW0wNTJmRnR4ZmI3bzErRnQ3OWx0dWlaNzN5NTZLLzZPekRqeDMzYklXZE01M3FxMXZONUxxaGtmanNrZkhNMThGdkhjUGduQ0FYSnhMVk5UUnhFTmlvNUFRcGJiS1d5bm1VZzRZeUhWZGFWLzFkWjF5TWJOVGx5NnB3ZkR0NHV0NFV3UHZqTWZ2b0NwakRTQnkwbE5rc3IrUEluZ2wvV2lZR1lFUkZXUmxpdkVGbWt4d0tEMUNEbmZka3VUQmloN1F6YTJoMERDM0grQVloQTYxUXMyZEpoSElacVRrTW9UMjlDUHVmU09jVzV1eFBOcHVWN1pmc21Idk9WLzI4ZmdlZ3htci9uNy9hQ3Q4TUkvL2lzSjFOakVmTlRZMjFvcGZobGpoNTZmWG1CdVp2MmRYV0JGc2FDZlE0MGRqVmhZOVEydG15UjJRRnlEeGZTeE5RNFVXU1lRQTZ1SlJpWENoTXJBWDAvc1Ewb3E1RkZkL0k1TUZZREdTR0F2cENvaVhWWnIySDgvSFVuR3UrczJrVEdDb09lcXpJckJ1eFZzK1RqaFlacU5CYSt4ZGczeFBKN3ZtRnlvWG4zOXg2RUE1emh3WTZKbWdTZEwrRWdQOXRGTHVmWFpNdHZrTnNGT1dyZ3h5N0JlUWRRKzdwQlJlK25tZHU3R2dHT3piNlNQYUpEcXZIelFYNFpWTzlMZ3gyNUdzSTE1aU5WQjJIY2lZVE14S3hmRHlKczB6THRmNEhTR00zRjY1b242dGF5T0YrOFZZV2JOdDZkVG1RM2pEZW8xa1FGa1BhTE13UmFCWVpTTTJkMlVXWTJwdjlvTDFnRzVDZmYwUEFaNStLNGl1bjlzRVhGdlkxdTJRZXhyU2hQdTVvazQwQkxaeEZRNGwyM2ZTS0FjcnFBMVdhYVJjeGtUN0ZLY3hjbVpydEhyVUxxM2o5Qk01UkpSanhtWllpei84Tnc1NnhsdEU5bjErRFo1ZXg2SEpWaXh5aUtUTUE2TDlHOG1veXlCVDRKd29TdlRTWWRncmErTkhDaWFQU2l5TTBKMW93dHkrY0NkdndtK2ZlSEI4UnlFVjcxNjNRUlphOWJ2NUEvbmN0RkVjSm1ZeVVPYVczdTVFRG9ycUdXTXlZaWFBbzdrNkV3V1B1bTIvL0hBOHF2Z2REakk1eFhPeSs4d3VvY3VUWVBCSXFPU0JSUmorWllXYVhEdXBrYk5xekpROEMyM3JHd3dzN3N5OWNTcjhUOVZ1R0xmdlRoSFF1Ry8wb01wQzZVZ1E1b1ZmelRMVmdZVnJlRFoxMEZ4ekY5c2J0c0RBL0wvN0gvR1E4M2NYRlRKRnpzcmlMMHpOZ2w5VmJoZkp6VENDcFdzYmZ5N21xL3BCQzBRdEY2ZlRFQ2Y5a0tnQW9hNTdTeTJMVWdiRVFabVJxaytoSUY5T1k3TDdFUktJaWVKWnR6SjZoemVFL0xXdWhUMEdhYzJRUk4zaG1lbEFacGROQ3liR0lJSWRNWmQxbUMyYWVUcWFib2ZpOTE5OTY5UGU0TkJmU2V4Zm40Y3ZOeVRhTHFEZ2lzRnRzVW1ySzdxOUpOT1lxQSs3M0ZCNVA3Wm5uMkgyOXZ3Q3JpT1RGYkVNVHBsa2lkdi9jYmRDUjg3OE1rN2pRVHlib2ZaRjNwVEtqaGJObkZFWXlzSllXRFp4REJDakNnVDJyUlBZZXFQcFduK3pWVkU4d1JhK1BaQ1o1ZE0wREhaaWJ0Mis5YjMzOENMd0FqU0ozVWN2YVBqZVpQdG1kYXpKVnAvUkdHWTdMWU04NzBPK29GQ0dJa2xwTHk2S2c2RDRxQnZON1AwRHN3bmZaUGljdk5lbkVSTkhmb3gvbEpaY2dwTjFzZDlUdUdqbldOYXZkTnRWR2ZiWWx0MEt4Z1lrUEZPNTMxaHRRNFQyeGcwTW1sSTRaMEY0OXRqSlFaSVR6TFpqZGx6MFdxZmhURXhNdlhOYjJDVHQrSk96SXp5NU1oam5aNmtUVkNZa1FvbW9DbkRqdG9MRVhmeHNDeWhPRFErR2NHTEZ5RU1iS25CZXl3czBRdzVUMVQ1U2lXSDZnUUEyNlhmbGdkN0dyQ0FUcU9RL0NCRkk0WjBhcm52YkFLN3ZSd0NveEFYOHpxRUw4RUdkUVFDWlpRSlpkWk5jNlJqY3BXbWpEN05OUnQ5bVVuOXF5L1lYZDEvTHU3WWhyNW54bDlnRDhZd2VkSVZwa0VsdHBSRW9aemZSMHNTZXpPY3liOWtEdTl5UHlQZ0lxSFRsRDdVV0FEZWRLQ2pkRmdvM0RMb1R0WkM2Sm5NZG9IS3dxdTZHOFAxek1Ea1N0OWlyTHRyayt4Q25jWnpMd2xROUZYRU1uWHVuR2lhbnUwU2t3TGczbTBIV2ZGOG5VM3VFNFJoSjFPR0FVdDlzb010b3dOd1ZmV3dISkxmQWl0SFAvUE55ejgwci9nOU43azI4NFFjdlJyOWJVeFQwV1cybnB3UTRIaHhrMDhNcGtWOHI1aUZoL2s4WTdKTFBQS0hrVmtmN1J4QnExT2hBdXFzbE9sT3d0Z1U0NzZYY1hGNndINjdPdFZiYW42eFZJYXpwZWdnbzQxRllFTDU0dWpkSXBlVjJhb0V6T2pZTlJ1ZDRkb0hGV0hGZ2hUWitROXhmcWdGRm5aaEZtSnRQN282N3prVE51VG8vSys0b0dhVysrdWZ1dHIxL2wvcUZmYS8rT2RLaU1XNWRDT0RuVnFsQnBzYWQxanhLbVJJemlJVGxWOTJ2d1RhQ2ZDWXA5QlZ0dkxWR3BDU1cwdFZqcWRqaWMwSjVxUTZ0cDNmUG1XL0xwRXVqemJvZkZyMThsLzNMeFFQcGF0OWJXQlRVY0dLRXRFOWp0RU1vZE1NdzlWTUxLcFZNY1IrQjZUSTZheFQwbFNBVTFDSFNLb1U1U1FMVEtKSmVubmtKMTJMS3ZmOU5OMGFOd003eW9yUXZlRGJQN3UrZjZmdnVWVlBEQ2V4a29wSXBqdDV5WWcwazZzbW1JUjFlNDZYSUpJem9FMVh0Ym9veC9FUEZSR0NGTllsYTJFYzZ6dTRpK3dZR3NuWFQ5V3pGQ3FrcWdxWVc1KzdXRnVlUmlmNnA5TGlWa2VDOEhHdG0yazJCM0dOUWl4c0ZWQ0xTaXBwNkRLeTJUcE15SzhIWURNbS9TaEVGbXNEdGRXTmdYcW9WWjY0dnRmWTMvSmNTMGdoZTViZG5lblA2YmQvbS9kZURwOUU3TGJRL1RNU296enRKRUo1QnRyZWhZckpCNG9VSTd5N3k1TjlQY3pKbjlWSmtpSloxcnpRaGtlb0V0empOQmFtNmhOVFUvYjMvTmU3enpRUEhzMHVEOXkrOGs3WXRlNnV4RlQrWnRGVC94Rk1mNnRaakFZTGtHTVN0S25hQklqRk9PVGk4SzE1cGxmQjQ3SXhSVFJuR1JVZ0FmTFpyV2RBajc5cmozeFptOFpndnlEdnlFMnFZTDBqMWpCeHhjL2ZRY3o4UGtNOVVUWjNvZklWRzNyZ2d3Y1duNkgzSnNia3A3cVdpSWs2NFkvc3pTdUp3bkJjWFNrR0xveUxWekhaajhrVGl3R0ZwdmYvT2RhZmtXOW9NOGl3czNwWHR5cUR5YWRMTXRucFBhbEJFdjRxb1pnNjFkYjczblEzSmVRTXR1czdFVEtTT2pWWTAwdUpRbGlac2hoajFqMkxmWC9WNnpMZC82MWk5MDk4QlBzTzNhQmVwVnE3UHYycm52SWdXOTFyVVNRN0hrdVdyRngvS2I2ekpNcFZGUmlLNW94MWJLSE1wWklBS1hPTlprZ1RwelhkaS9GNmJtNTkyckx2aENlTkE3L2c0Q2VzZERvSzRhamg4Tmg0TFJKQmF2c3ExTWtDUVR1ZGwxUkVsSUFwbmk5ckxZWmlXTnJxQUZTWGhCS1AyVWhER0VDeEhNN0Jjd2RjQjdLczJ0clJkOHNmTkRXQVp0NTI3SXRxMDUvdDZtREZjZ0I3L2NsaWxLQ0VVRk1send3bHRLdUdKV1YvSUxZODZ4YnFKM1ZCc0t6akNWbGtjMDN4VGFpeWxNVDlyelljZjkyTDg4MXY3U3JpY085ZzJldFlIbjlidVFJNVQ4ZmhpNTJkeXNCL1BURm5TYUNnK0MwY2htU3h3Uk55OERRTEV2aWNRSWliRWtFZEJ1MlRBOUhjQmlLMENXbE0wTm83WGRzSXphZVR0M1J5aGo3MnExL1BEQVpJRHBNb3RxUGRBT1ZxV0pyTGRkOVBuSGVWRm9CRnpFbGNRNWRCWXptRU83WW1iS2czYmJXUlJXZE8vRXJtZnZ6bHF5OE5DWE1JTkxuSFBoakdOeElZYklKRmlaalhhbnBXMUhhVnhWK3N3MHlDbWVrK0U1R1laV3BlK0JXMFhLanZrTjU1Mm5OdFR4NFFPL20vVkZhZjZRZytsenFXaDdjWTZ1ZFp6Ym1PaEZiazJScXZOZStiMDJkMFZKVEZsT2MzVnhZUVE2ZXdyaWxFb0owRXlVZVZpdkJtMTRkdW5Lb1hiT2l0QUxuTnpGUkhoUWQ2QStTaTgra1Z4RFp6bUNSUWN0Z2pUdjRzOW93eWVDN0FRdWFtOTBkZ0kwbWRBc1pMOG1KcGF6bTJKMkhTN0hzaUpxV0xtNjNsN2NINlpCMVlIYWlJZnpkREdMcnF0cHBhV0RTcnBrd09JcVF0SlpWTUJwZVQ2NEdFQ3p2Qnk4U0VGek51WXFMM3BqdUR1MDlLYk9KZmYra2Y3MUExdjVGUmU4V29EQVZmVHJJQUlQblJnZjAvZ3UwTXU1U1Y2VEdXUnhwU29OME9MTjU1VHh0bEhYK0ppWjlpcFUrV1Exei9yb3JtWDFCakVTRFFoV3gzRlFMZGE0d0FmSVdiTTllcnVCVGR0RWtLZ3NyaktpVGlZdS9lNGdwd1kxSHlxTkFQeEdGYmsyd0d0OVBPYUE2MW5aNHorSWxwem5raFM5ZHdiRXl2VkV0R1JING9OZGZJZ3I5Q1lra2hia0Vja2lOYVcxdEdWcnpjMzBMYWhHMTRMSVUwZ2hSUGx5T2I0NVRBaW5tcURubTdvQkFWaThya2dYZHBGVHdod3I5VzQzamdMVHBueU9qRXFPRml2OHpVbkoxOGlZZ3lsVCtBL2ZDOFZTRDFzUzZJcXRIR25Fc01VVnFFTGZYS3ErUUo3VXNXbWhyUTlCSUhOQWhoMXpOdlJ0bTk2TVR1Vm1Nb1dQOVNjZGwwZkwwQ1cwSFprNVNMMjJxMTgzVDhTbEs3ZjAvbmF0aTBBSGxiZ1VRNEIrQ1lIZ2NJZE9BR3NpcFBVWnJhT01YU0swZnFodHczMW1YeEdwb3IvN3dxWHNQYUUzUlRYcjNGMVR1MWRram9WT3lRa3VsRlB3MGVVRk1yVWMvUlZ5L0RSUm1URnp3RWtYNXROTEJXakRFQ2QxaVpySi9ET0phcDMzVU16QndpUUc2RmJWUTJ6eld4Sm9wYmtIZW1WU29FMGRWUmh6ZEV1clYvQlhaRmFFcWFJRUhTdlIremlvdm9GZDFtVUZOSTNIRWJRNXRqQk5uNUg3TE43ZUlGMG1LTDMzdThpYktqYjFpcmlPS1YraFJSREtWa3RpdXVSQkRLMXc5RkJ2N2pmbFVYcTNWczlKS1RJUlpjNU5Kd1IweWJCMjFUa1BTWHNqbDlsdXJLSjFpY05Od01pOHhzYzRabm8rb2d6eTk5VjFnQ243RXYxSmJOMUpxcVR1WVZBMHVwKzJMcG5XNWcyMy92c2FHUzFNY1lrcUVyZEZEckVjdk9ZQ0FjdndwU2pZb29ROU1KWnNLdXZ0V3krQVZuMEVkTkQ4U2l5VlVaS2lDT2FKeWlIMlV5NEpnR01yWFovT0ZvYnNyWjdxUFVhSzNrcUwvdFVHSGQwcnc0ckExb2dIeTdEdC85ZkhMRlRhRk5FQlpUaVFtakx5V3ZSenJURGI1RVJmRnN2a2FxVW8xWklJbk1PZ2FESVlhRXVqTElJcTVsb3Q5SHZLQVBvVVF6R1k0b3graVlmUkx4ZGc2UUg4SkZ1U0FVbFVXNnNoODE5SlRJV1M2cU5xNkUyaXpDd1pwSGxYTVVWV3M4T1EwV2p5T0N5aW1XaEY3NGFseFFIUS80Y29yYjYrRGQ5R1dmQitMeUdxVzdjdVAvR3hmei9tNkxnTUgwcktFRWE1UGN0NEtKaTZUM3lVU3lGRThTL1BXYlhhWVlnTzlQUWNLUXIzRStDZ2wyVVZrSXJlTFlxSEs5VW5Xd0JLNnJDbDhuL3B1OHR2UStmd2tQS2xsbnRRdm8ya0VMYjZHNmlTZkRTdkNtV1dRaFFFQ0NWR0pBSWM5ekNBN3NRaTRDeE9tVlYveHVvZVZNYXFoMVdZMlVMMG5XL01RdVNRU3JocStXM290S3U4Y1ZXV1pSc2xnTVZMdTdUcHBmcmtkRUZoaFVrSGhpQzFyc1JZUTJRdi9mcWtwUTRxN1djczRnMVNNQnExcUkvUmU4dE5DcXY4UWVtTXVkS3NwV3NEOWNxejErVEl6dko2V2FadWNhUUNtM2Z4S0ZXV3IwQy9ITzVyb3FCcVRlZDVuNU1zU3N0RHlpUlNTLzZUSS84TzdaNEZOSUMvb2hvQUFBQUFTVVZPUks1Q1lJST1cIlxuICAgIC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRoYW5rWW91O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXNpemU6IDEycHg7XG4gIGxpbmUtaGVpZ2h0OiAyNnB4O1xuICAvKiBpZGVudGljYWwgdG8gYm94IGhlaWdodCwgb3IgMjE3JSAqL1xuICBsZXR0ZXItc3BhY2luZzogMC4wMmVtO1xuICBjb2xvcjogIzAwMDAwMDtcbiAgbWFyZ2luLXRvcDogNDBweDtcbiAgYSB7XG4gICAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gICAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgICBjb2xvcjogIzAwMDAwMDtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cbmA7XG5cbmZ1bmN0aW9uIFdhdGVybWFyayh7IHJhdGluZywgaXNNb2JpbGUgfSkge1xuICBjb25zdCBzaG93ID0gaXNNb2JpbGUgPyByYXRpbmcubW9iaWxlX3dhdGVybWFyayA6IHJhdGluZy53YXRlcm1hcms7XG4gIGlmICghc2hvdykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIFBvd2VyZWQgYnkgPGEgaHJlZj1cImh0dHBzOi8vZmVlZGJhY2tidXR0b24uYXBwXCI+RmFiIEZlZWRiYWNrIEJ1dHRvbjwvYT5cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgV2F0ZXJtYXJrO1xuIiwiLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYWx0LXRleHQgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IEVycm9yTGluZSBmcm9tICcuL0Vycm9yTGluZSc7XG5pbXBvcnQgVGhhbmtZb3UgZnJvbSAnLi9JY29ucy9UaGFua1lvdSc7XG5pbXBvcnQgV2F0ZXJtYXJrIGZyb20gJy4vV2F0ZXJtYXJrJztcblxuY29uc3QgQ29udGVudCA9IHN0eWxlZC5mb3JtYFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgcGFkZGluZzogMzBweCA0MHB4O1xuICBwYWRkaW5nLXRvcDogMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuYDtcblxuY29uc3QgSW1hZ2UgPSBzdHlsZWQuZGl2YFxuICBtYXJnaW4tdG9wOiAzMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IFRleHQgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogJ1NGIFBybyBEaXNwbGF5JztcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBsaW5lLWhlaWdodDogMjhweDtcbiAgLyogaWRlbnRpY2FsIHRvIGJveCBoZWlnaHQsIG9yIDE1NiUgKi9cblxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAwLjRweDtcblxuICBjb2xvcjogIzAwMDAwMDtcbmA7XG5cbmNvbnN0IENvbnRhaW5lckJ1dHRvbiA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5gO1xuXG5jb25zdCBDb250YWluZXJFbWFpbCA9IHN0eWxlZC5kaXZgXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLXRvcDogMzBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuYDtcblxuY29uc3QgVGV4dEVtYWlsID0gc3R5bGVkLmRpdmBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI4cHg7XG4gIC8qIGlkZW50aWNhbCB0byBib3ggaGVpZ2h0LCBvciAxNTYlICovXG4gIGxldHRlci1zcGFjaW5nOiAwLjRweDtcblxuICBjb2xvcjogIzAwMDAwMDtcbmA7XG5cbmNvbnN0IEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGZvbnQtZmFtaWx5OiAnU0YgUHJvIERpc3BsYXknO1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQ6ICMwMDAwMDA7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgcGFkZGluZzogMTZweCA0MHB4O1xuICBmb250LXdlaWdodDogNjAwO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAyOHB4O1xuICBsZXR0ZXItc3BhY2luZzogMC40cHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG5gO1xuXG5jb25zdCBFbWFpbCA9IHN0eWxlZC5pbnB1dGBcbiAgZm9udC1mYW1pbHk6ICdTRiBQcm8gRGlzcGxheSc7XG4gIG1hcmdpbi10b3A6IDE0cHg7XG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNiZGI4Yjg7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDE3cHggMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgLyogaWRlbnRpY2FsIHRvIGJveCBoZWlnaHQsIG9yIDEzMyUgKi9cbiAgY29sb3I6ICMwMDAwMDA7XG5gO1xuXG5mdW5jdGlvbiBUaGFua1lvdUNvbnRlbnQoeyB3aWRnZXQsIGlzTW9iaWxlLCBvbkNvbnRpbnVlU2hvcHBpbmcgPSAoKSA9PiB7fSwgZXJyb3JzID0ge30gfSkge1xuICBjb25zdCBbdmFsdWUsIHNldEVtYWlsXSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCB0aXRsZSA9IGlzTW9iaWxlXG4gICAgPyB3aWRnZXQucG9wdXAudGhhbmtfeW91Lm1vYmlsZV90aXRsZVxuICAgIDogd2lkZ2V0LnBvcHVwLnRoYW5rX3lvdS50aXRsZTtcbiAgY29uc3QgZW1haWwgPSBpc01vYmlsZVxuICAgID8gd2lkZ2V0LnBvcHVwLnRoYW5rX3lvdS5tb2JpbGVfZW1haWxcbiAgICA6IHdpZGdldC5wb3B1cC50aGFua195b3UuZW1haWw7XG4gIGNvbnN0IGVtYWlsX3RpdGxlID0gaXNNb2JpbGVcbiAgICA/IHdpZGdldC5wb3B1cC50aGFua195b3UubW9iaWxlX2VtYWlsX3RpdGxlXG4gICAgOiB3aWRnZXQucG9wdXAudGhhbmtfeW91LmVtYWlsX3RpdGxlO1xuICBjb25zdCBlbWFpbF9oaW50ID0gaXNNb2JpbGVcbiAgICA/IHdpZGdldC5wb3B1cC50aGFua195b3UubW9iaWxlX2VtYWlsX2hpbnRcbiAgICA6IHdpZGdldC5wb3B1cC50aGFua195b3UuZW1haWxfaGludDtcbiAgY29uc3QgY29udGludWVfc2hvcHBpbmcgPSBpc01vYmlsZVxuICAgID8gd2lkZ2V0LnRyYW5zbGF0aW9uLm1vYmlsZV9jb250aW51ZV9zaG9wcGluZ1xuICAgIDogd2lkZ2V0LnRyYW5zbGF0aW9uLmNvbnRpbnVlX3Nob3BwaW5nO1xuXG4gIGNvbnN0IG9uU3VibWl0ID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgb25Db250aW51ZVNob3BwaW5nKHZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDb250ZW50IG9uU3VibWl0PXtvblN1Ym1pdH0+XG4gICAgICA8SW1hZ2U+XG4gICAgICAgIDxUaGFua1lvdSAvPlxuICAgICAgPC9JbWFnZT5cbiAgICAgIDxUZXh0Pnt0aXRsZX08L1RleHQ+XG4gICAgICB7ZW1haWwgJiYgKFxuICAgICAgICA8Q29udGFpbmVyRW1haWw+XG4gICAgICAgICAgPFRleHRFbWFpbD57ZW1haWxfdGl0bGV9PC9UZXh0RW1haWw+XG4gICAgICAgICAgPEVtYWlsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj17ZW1haWxfaGludH1cbiAgICAgICAgICAgIC8vIHR5cGU9XCJlbWFpbFwiXG4gICAgICAgICAgICBuYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRFbWFpbChlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8RXJyb3JMaW5lIG1lc3NhZ2U9e2Vycm9ycy5lbWFpbH0gLz5cbiAgICAgICAgPC9Db250YWluZXJFbWFpbD5cbiAgICAgICl9XG4gICAgICA8Q29udGFpbmVyQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIHR5cGU9XCJzdWJtaXRcIj5cbiAgICAgICAgICB7Y29udGludWVfc2hvcHBpbmcgfHwgJ0NvbnRpbnVlIFNob3BwaW5nJ31cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0NvbnRhaW5lckJ1dHRvbj5cbiAgICAgIDxXYXRlcm1hcmsgcmF0aW5nPXt3aWRnZXQ/LnBvcHVwPy5yYXRpbmcgfHwge319IGlzTW9iaWxlPXtpc01vYmlsZX0gLz5cbiAgICA8L0NvbnRlbnQ+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRoYW5rWW91Q29udGVudDtcbiIsIi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby1kdXBsaWNhdGUtcHJvcHMgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ3N0eWxlZC1jb21wb25lbnRzJztcbmltcG9ydCBDYXRlZ29yeSBmcm9tICcuL01vZGFsQ29udGVudC9DYXRlZ29yeSc7XG5pbXBvcnQgRG9uZSBmcm9tICcuL01vZGFsQ29udGVudC9Eb25lJztcbmltcG9ydCBIZWFkZXIgZnJvbSAnLi9Nb2RhbENvbnRlbnQvSGVhZGVyJztcbmltcG9ydCBMaW5rIGZyb20gJy4vTW9kYWxDb250ZW50L0xpbmsnO1xuaW1wb3J0IFJhdGluZ0NvbnRhaW5lciBmcm9tICcuL01vZGFsQ29udGVudC9SYXRpbmdDb250YWluZXInO1xuaW1wb3J0IFJldmlldyBmcm9tICcuL01vZGFsQ29udGVudC9SZXZpZXcnO1xuaW1wb3J0IFRoYW5rWW91Q29udGVudCBmcm9tICcuL01vZGFsQ29udGVudC9UaGFua1lvdUNvbnRlbnQnO1xuaW1wb3J0IFdhdGVybWFyayBmcm9tICcuL01vZGFsQ29udGVudC9XYXRlcm1hcmsnO1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXgtd2lkdGg6IDYwMHB4O1xuICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xuICBib3gtc2hhZG93OiAwcHggMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIG1hcmdpbi10b3A6IGF1dG87XG4gIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICoge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbmA7XG5cbmNvbnN0IENvbnRlbnQgPSBzdHlsZWQuZm9ybWBcbiAgcGFkZGluZzogMzBweCA0MHB4O1xuICBwYWRkaW5nLXRvcDogMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuYDtcblxuZnVuY3Rpb24gTW9kYWxDb250ZW50KHtcbiAgc3R5bGUgPSB7fSxcbiAgd2lkZ2V0ID0ge30sXG4gIGVycm9ycyA9IHt9LFxuICB2YWx1ZXMgPSB7fSxcbiAgaXNNb2JpbGUsXG4gIGlzU2hvd1JhdGluZyxcbiAgaXNTaG93Q2F0ZWdvcnksXG4gIGlzU2hvd1JldmlldyxcbiAgaXNTaG93RG9uZSxcbiAgaXNTaG93TGluayxcbiAgaXNUaGFua1lvdSxcbiAgb25DbG9zZSA9ICgpID0+IHt9LFxuICBvbkNvbnRpbnVlU2hvcHBpbmcgPSAoKSA9PiB7fSxcbiAgb25TZW5kRmVlZmJhY2sgPSAoKSA9PiB7fSxcbiAgb25DaGFuZ2UgPSAoKSA9PiAoKSA9PiB7fSxcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIG9uQ2xpY2s9eyhlKSA9PiBlLnN0b3BQcm9wYWdhdGlvbigpfSBzdHlsZT17c3R5bGV9PlxuICAgICAgPEhlYWRlclxuICAgICAgICByYXRpbmc9e3dpZGdldD8ucG9wdXA/LnJhdGluZyB8fCB7fX1cbiAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgLz5cbiAgICAgIHtpc1RoYW5rWW91ICYmIChcbiAgICAgICAgPFRoYW5rWW91Q29udGVudFxuICAgICAgICAgIHdpZGdldD17d2lkZ2V0fVxuICAgICAgICAgIGVycm9ycz17ZXJyb3JzfVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBvbkNvbnRpbnVlU2hvcHBpbmc9e29uQ29udGludWVTaG9wcGluZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7IWlzVGhhbmtZb3UgJiYgKFxuICAgICAgICA8Q29udGVudFxuICAgICAgICAgIG9uU3VibWl0PXsoZSkgPT4ge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgb25TZW5kRmVlZmJhY2soKTtcbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhdGluZ0NvbnRhaW5lclxuICAgICAgICAgICAgcmF0aW5nPXt3aWRnZXQ/LnBvcHVwPy5yYXRpbmcgfHwge319XG4gICAgICAgICAgICB0cmFuc2xhdGlvbj17d2lkZ2V0Py50cmFuc2xhdGlvbiB8fCB7fX1cbiAgICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlUmF0aW5nPXtvbkNoYW5nZSgnY291bnQnKX1cbiAgICAgICAgICAgIGNvdW50PXt2YWx1ZXMuY291bnQgfHwgMH1cbiAgICAgICAgICAgIGlzU2hvdz17aXNTaG93UmF0aW5nfVxuICAgICAgICAgICAgZXJyb3I9e2Vycm9ycz8uY291bnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8Q2F0ZWdvcnlcbiAgICAgICAgICAgIGNhdGVnb3J5PXt3aWRnZXQ/LnBvcHVwPy5jYXRlZ29yeSB8fCB7fX1cbiAgICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXMuY2F0ZWdvcnl9XG4gICAgICAgICAgICBvbkNoYW5nZT17b25DaGFuZ2UoJ2NhdGVnb3J5Jyl9XG4gICAgICAgICAgICBpc1Nob3c9e2lzU2hvd0NhdGVnb3J5fVxuICAgICAgICAgICAgZXJyb3I9e2Vycm9ycz8uY2F0ZWdvcnl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8UmV2aWV3XG4gICAgICAgICAgICByZXZpZXc9e3dpZGdldD8ucG9wdXA/LnJldmlldyB8fCB7fX1cbiAgICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXMudGV4dH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZSgndGV4dCcpfVxuICAgICAgICAgICAgaXNTaG93PXtpc1Nob3dSZXZpZXd9XG4gICAgICAgICAgICBlcnJvcj17ZXJyb3JzPy50ZXh0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGxpbms9e3dpZGdldD8ucG9wdXA/LmxpbmsgfHwge319XG4gICAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgICBpc1Nob3c9e2lzU2hvd0xpbmt9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7aXNTaG93RG9uZSAmJiAoXG4gICAgICAgICAgICA8RG9uZVxuICAgICAgICAgICAgICB0cmFuc2xhdGlvbj17d2lkZ2V0Py50cmFuc2xhdGlvbiB8fCB7fX1cbiAgICAgICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgICAgICBvblNlbmRGZWVmYmFjaz17b25TZW5kRmVlZmJhY2t9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPFdhdGVybWFyayByYXRpbmc9e3dpZGdldD8ucG9wdXA/LnJhdGluZyB8fCB7fX0gaXNNb2JpbGU9e2lzTW9iaWxlfSAvPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBNb2RhbENvbnRlbnQ7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTW9kYWxDb250ZW50IGZyb20gJy4uL2NvbXBvbmVudHMvV2lkZ2V0Q29tcG9uZW50L01vZGFsQ29udGVudCc7XG5cbmNvbnN0IHZhbGlkYXRlRW1haWwgPSAoZW1haWwpID0+IHtcbiAgcmV0dXJuIFN0cmluZyhlbWFpbClcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5tYXRjaChcbiAgICAgIC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkL1xuICAgICk7XG59O1xuXG5mdW5jdGlvbiBXaWRnZXRDb250YWluZXIoe1xuICBzZXR0aW5nLFxuICBpc01vYmlsZSxcbiAgb25DbG9zZSxcbiAgZmV0Y2hGZWVkYmFjayxcbiAgZmV0Y2hGZWVkYmFja0VtYWlsLFxufSkge1xuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGUoe1xuICAgIGNvdW50OiAwLFxuICAgIC8vIGNhdGVnb3J5OiBzZXR0aW5nPy5wb3B1cD8uY2F0ZWdvcnk/Lmxpc3RbMF0gfHwgJycsXG4gICAgY2F0ZWdvcnk6ICcnLFxuICAgIHRleHQ6ICcnLFxuICB9KTtcblxuICBjb25zdCB3aWRnZXRTaG93UmF0aW5nID0gaXNNb2JpbGVcbiAgICA/IHNldHRpbmcucG9wdXAucmF0aW5nLm1vYmlsZV9zaG93XG4gICAgOiBzZXR0aW5nLnBvcHVwLnJhdGluZy5zaG93O1xuICBjb25zdCB3aWRnZXRTaG93Q2F0ZWdvcnkgPSBpc01vYmlsZVxuICAgID8gc2V0dGluZy5wb3B1cC5jYXRlZ29yeS5tb2JpbGVfc2hvd1xuICAgIDogc2V0dGluZy5wb3B1cC5jYXRlZ29yeS5zaG93O1xuICBjb25zdCB3aWRnZXRTaG93UmV2aWV3ID0gaXNNb2JpbGVcbiAgICA/IHNldHRpbmcucG9wdXAucmV2aWV3Lm1vYmlsZV9zaG93XG4gICAgOiBzZXR0aW5nLnBvcHVwLnJldmlldy5zaG93O1xuICBjb25zdCB3aWRnZXRTaG93TGluayA9IGlzTW9iaWxlXG4gICAgPyBzZXR0aW5nLnBvcHVwLmxpbmsubW9iaWxlX3Nob3dcbiAgICA6IHNldHRpbmcucG9wdXAubGluay5zaG93O1xuICBjb25zdCB3aWRnZXRUaGFua1lvdSA9IGlzTW9iaWxlXG4gICAgPyBzZXR0aW5nLnBvcHVwLnRoYW5rX3lvdS5tb2JpbGVfc2hvd1xuICAgIDogc2V0dGluZy5wb3B1cC50aGFua195b3Uuc2hvdztcblxuICBjb25zdCBbaXNTaG93UmF0aW5nLCBzZXRJc1Nob3dSYXRpbmddID0gdXNlU3RhdGUod2lkZ2V0U2hvd1JhdGluZyk7XG4gIGNvbnN0IFtpc1Nob3dDYXRlZ29yeSwgc2V0SXNTaG93Q2F0ZWdvcnldID0gdXNlU3RhdGUoXG4gICAgIXdpZGdldFNob3dSYXRpbmcgJiYgd2lkZ2V0U2hvd0NhdGVnb3J5XG4gICk7XG4gIGNvbnN0IFtpc1Nob3dSZXZpZXcsIHNldElzU2hvd1Jldmlld10gPSB1c2VTdGF0ZShcbiAgICAhd2lkZ2V0U2hvd1JhdGluZyAmJiAhd2lkZ2V0U2hvd0NhdGVnb3J5ICYmIHdpZGdldFNob3dSZXZpZXdcbiAgKTtcblxuICBjb25zdCBbZmVlZGJhY2tJZCwgc2V0RmVlZGJhY2tJZF0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3QgW2lzVGhhbmtZb3UsIHNldElzVGhhbmtZb3VdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3QgZ2V0U2hvd0RvbmUgPSAoKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgaWYgKHdpZGdldFNob3dSYXRpbmcgJiYgd2lkZ2V0U2hvd0NhdGVnb3J5ICYmIHdpZGdldFNob3dSZXZpZXcpIHtcbiAgICAgIGlmIChpc1Nob3dSYXRpbmcgJiYgaXNTaG93Q2F0ZWdvcnkgJiYgaXNTaG93UmV2aWV3KSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF3aWRnZXRTaG93UmF0aW5nICYmIHdpZGdldFNob3dDYXRlZ29yeSAmJiB3aWRnZXRTaG93UmV2aWV3KSB7XG4gICAgICBpZiAoIWlzU2hvd1JhdGluZyAmJiBpc1Nob3dDYXRlZ29yeSAmJiBpc1Nob3dSZXZpZXcpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXdpZGdldFNob3dSYXRpbmcgJiYgIXdpZGdldFNob3dDYXRlZ29yeSAmJiB3aWRnZXRTaG93UmV2aWV3KSB7XG4gICAgICBpZiAoIWlzU2hvd1JhdGluZyAmJiAhaXNTaG93Q2F0ZWdvcnkgJiYgaXNTaG93UmV2aWV3KSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF3aWRnZXRTaG93UmF0aW5nICYmICF3aWRnZXRTaG93Q2F0ZWdvcnkgJiYgIXdpZGdldFNob3dSZXZpZXcpIHtcbiAgICAgIGlmICghaXNTaG93UmF0aW5nICYmICFpc1Nob3dDYXRlZ29yeSAmJiAhaXNTaG93UmV2aWV3KSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldFNob3dSYXRpbmcgJiYgIXdpZGdldFNob3dDYXRlZ29yeSAmJiAhd2lkZ2V0U2hvd1Jldmlldykge1xuICAgICAgaWYgKGlzU2hvd1JhdGluZyAmJiAhaXNTaG93Q2F0ZWdvcnkgJiYgIWlzU2hvd1JldmlldyAmJiB2YWx1ZXMuY291bnQpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXdpZGdldFNob3dSYXRpbmcgJiYgd2lkZ2V0U2hvd0NhdGVnb3J5ICYmICF3aWRnZXRTaG93UmV2aWV3KSB7XG4gICAgICBpZiAoIWlzU2hvd1JhdGluZyAmJiBpc1Nob3dDYXRlZ29yeSAmJiAhaXNTaG93UmV2aWV3KSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldFNob3dSYXRpbmcgJiYgd2lkZ2V0U2hvd0NhdGVnb3J5ICYmICF3aWRnZXRTaG93UmV2aWV3KSB7XG4gICAgICBpZiAoaXNTaG93UmF0aW5nICYmIGlzU2hvd0NhdGVnb3J5ICYmICFpc1Nob3dSZXZpZXcpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2lkZ2V0U2hvd1JhdGluZyAmJiAhd2lkZ2V0U2hvd0NhdGVnb3J5ICYmIHdpZGdldFNob3dSZXZpZXcpIHtcbiAgICAgIGlmIChpc1Nob3dSYXRpbmcgJiYgIWlzU2hvd0NhdGVnb3J5ICYmIGlzU2hvd1Jldmlldykge1xuICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG5cbiAgY29uc3Qgb25DaGFuZ2UgPSAobmFtZSkgPT4gKHYpID0+IHtcbiAgICBpZiAobmFtZSA9PSAnY291bnQnKSB7XG4gICAgICBpZiAod2lkZ2V0U2hvd0NhdGVnb3J5KSB7XG4gICAgICAgIHNldElzU2hvd0NhdGVnb3J5KHRydWUpO1xuICAgICAgfSBlbHNlIGlmICh3aWRnZXRTaG93UmV2aWV3KSB7XG4gICAgICAgIHNldElzU2hvd1Jldmlldyh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSA9PSAnY2F0ZWdvcnknKSB7XG4gICAgICBpZiAod2lkZ2V0U2hvd1Jldmlldykge1xuICAgICAgICBzZXRJc1Nob3dSZXZpZXcodHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdG1wRXJyb3JzID0geyAuLi5lcnJvcnMgfTtcbiAgICBkZWxldGUgdG1wRXJyb3JzW25hbWVdO1xuICAgIHNldEVycm9ycyh0bXBFcnJvcnMpO1xuICAgIHNldFZhbHVlcyh7IC4uLnZhbHVlcywgW25hbWVdOiB2IH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgIG9uQ2xvc2UoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFZhbHVlcyh7XG4gICAgICAgIGNvdW50OiAwLFxuICAgICAgICBjYXRlZ29yeTogJycsXG4gICAgICAgIHRleHQ6ICcnLFxuICAgICAgfSk7XG4gICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgc2V0SXNTaG93UmF0aW5nKHdpZGdldFNob3dSYXRpbmcpO1xuICAgICAgc2V0SXNTaG93Q2F0ZWdvcnkoIXdpZGdldFNob3dSYXRpbmcgJiYgd2lkZ2V0U2hvd0NhdGVnb3J5KTtcbiAgICAgIHNldElzU2hvd1JldmlldyhcbiAgICAgICAgIXdpZGdldFNob3dSYXRpbmcgJiYgIXdpZGdldFNob3dDYXRlZ29yeSAmJiB3aWRnZXRTaG93UmV2aWV3XG4gICAgICApO1xuICAgIH0sIDUwMCk7XG4gICAgaWYgKGlzVGhhbmtZb3UpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRJc1RoYW5rWW91KGZhbHNlKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEZlZWZiYWNrID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRtcEVycm9ycyA9IHt9O1xuXG4gICAgaWYgKHdpZGdldFNob3dSZXZpZXcgJiYgIXZhbHVlcy50ZXh0KSB7XG4gICAgICB0bXBFcnJvcnMudGV4dCA9ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICB9XG5cbiAgICBpZiAod2lkZ2V0U2hvd1JhdGluZyAmJiAhdmFsdWVzLmNvdW50KSB7XG4gICAgICB0bXBFcnJvcnMuY291bnQgPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldFNob3dDYXRlZ29yeSAmJiAhdmFsdWVzLmNhdGVnb3J5KSB7XG4gICAgICB0bXBFcnJvcnMuY2F0ZWdvcnkgPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCc7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKHRtcEVycm9ycykubGVuZ3RoKSB7XG4gICAgICBzZXRFcnJvcnModG1wRXJyb3JzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hGZWVkYmFjayh2YWx1ZXMpO1xuICAgIGlmIChkYXRhICYmIGRhdGEuaWQpIHtcbiAgICAgIHNldEZlZWRiYWNrSWQoZGF0YS5pZCk7XG4gICAgfVxuXG4gICAgaWYgKHdpZGdldFRoYW5rWW91KSB7XG4gICAgICBzZXRJc1RoYW5rWW91KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBoYW5kbGVDbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvbkNvbnRpbnVlU2hvcHBpbmcgPSAoZW1haWwpID0+IHtcbiAgICBpZiAoZW1haWwpIHtcbiAgICAgIGlmICh2YWxpZGF0ZUVtYWlsKGVtYWlsKSkge1xuICAgICAgICBmZXRjaEZlZWRiYWNrRW1haWwoZmVlZGJhY2tJZCwgZW1haWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JzKHsgZW1haWw6ICdJbnZhbGlkIGVtYWlsIGZvcm1hdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxNb2RhbENvbnRlbnRcbiAgICAgIHdpZGdldD17c2V0dGluZ31cbiAgICAgIGlzVGhhbmtZb3U9e2lzVGhhbmtZb3V9XG4gICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICBpc1Nob3dSYXRpbmc9e2lzU2hvd1JhdGluZ31cbiAgICAgIGlzU2hvd0NhdGVnb3J5PXtpc1Nob3dDYXRlZ29yeX1cbiAgICAgIGlzU2hvd0xpbms9e2dldFNob3dEb25lKCkgJiYgd2lkZ2V0U2hvd0xpbmt9XG4gICAgICBpc1Nob3dEb25lPXtnZXRTaG93RG9uZSgpfVxuICAgICAgaXNTaG93UmV2aWV3PXtpc1Nob3dSZXZpZXd9XG4gICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZX1cbiAgICAgIHZhbHVlcz17dmFsdWVzfVxuICAgICAgZXJyb3JzPXtlcnJvcnN9XG4gICAgICBvbkNoYW5nZT17b25DaGFuZ2V9XG4gICAgICBvblNlbmRGZWVmYmFjaz17b25TZW5kRmVlZmJhY2t9XG4gICAgICBvbkNvbnRpbnVlU2hvcHBpbmc9e29uQ29udGludWVTaG9wcGluZ31cbiAgICAvPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRDb250YWluZXI7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBjb25zaXN0ZW50LXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLWJpbmQgKi9cbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBCdXR0b24gZnJvbSAnLi4vY29tcG9uZW50cy9XaWRnZXRDb21wb25lbnQvQnV0dG9uJztcbmltcG9ydCBnZXRTdHlsZUJ1dHRvbiBmcm9tICcuLi9saWIvZ2V0U3R5bGVCdXR0b24nO1xuaW1wb3J0IFdpZGdldENvbnRhaW5lciBmcm9tICcuL1dpZGdldENvbnRhaW5lcic7XG5cbmNvbnN0IHVybCA9ICd7e19fVVJMX199fSc7XG5jb25zdCBzaG9wID0gJ3t7X19TSE9QX199fSc7XG5jb25zdCBlbGVtZW50SWQgPSAnZmFiLWZlZWRiYWNrLWJ1dHRvbic7XG5cbmNvbnN0IGlzTW9iaWxlID0gd2luZG93LmlubmVyV2lkdGggPD0gNTIwO1xuXG4oKCkgPT4ge1xuICBmdW5jdGlvbiBnZW5QYXJlbnRFbGVtZW50V2lkZ2V0KHNldHRpbmdzKSB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LnNldEF0dHJpYnV0ZSgnaWQnLCBlbGVtZW50SWQpO1xuICAgIGRpdi5jbGFzc05hbWUgPSAnJztcblxuICAgIGNvbnN0IHN0eWxlID0gZ2V0U3R5bGVCdXR0b24oc2V0dGluZ3MsIGlzTW9iaWxlKTtcbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgZGl2LnN0eWxlW2F0dHJdID0gc3R5bGVbYXR0cl07XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGl2O1xuICB9XG5cbiAgZnVuY3Rpb24gZ2VuT3ZlcmxheUVsZW1lbnRXaWRnZXQoc2V0dGluZ3MpIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYuc2V0QXR0cmlidXRlKCdpZCcsIGVsZW1lbnRJZCArICdfb3ZlcmxheScpO1xuXG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICAnYWxpZ24taXRlbXMnOiAnZmxleC1zdGFydCcsXG4gICAgICAnanVzdGlmeS1jb250ZW50JzogJ2NlbnRlcicsXG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB6SW5kZXg6IDIxNDc0ODM2NDAsXG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSg3MCwgNzAsIDcwLCAwLjYpJyxcbiAgICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICBwYWRkaW5nOiAnMjNweCAyMHB4JyxcbiAgICAgICdib3gtc2l6aW5nJzogJ2JvcmRlci1ib3gnLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuNXMgZWFzZScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGVuJyxcbiAgICAgICdvdmVyZmxvdy15JzogJ2F1dG8nLFxuICAgIH07XG5cbiAgICBPYmplY3Qua2V5cyhzdHlsZSkuZm9yRWFjaCgoYXR0cikgPT4ge1xuICAgICAgZGl2LnN0eWxlW2F0dHJdID0gc3R5bGVbYXR0cl07XG4gICAgfSk7XG5cbiAgICBkaXYub25jbGljayA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICB0aGlzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgfTtcblxuICAgIHJldHVybiBkaXY7XG4gIH1cblxuICBmdW5jdGlvbiBmZXRjaFNldHRpbmdzKCkge1xuICAgIHJldHVybiBmZXRjaChgJHt1cmx9L2FwaS93aWRnZXQvc2V0dGluZz9zaG9wPSR7c2hvcH1gLCB7XG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pLnRoZW4oKHJlc3ApID0+IHtcbiAgICAgIHJldHVybiByZXNwLmpzb24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZldGNoRmVlZGJhY2soYm9keSkge1xuICAgIHJldHVybiBmZXRjaChgJHt1cmx9L2FwaS9mZWVkYmFja2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyAuLi5ib2R5LCBzaG9waWZ5X2RvbWFpbjogc2hvcCB9KSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgfSkudGhlbigocmVzcCkgPT4ge1xuICAgICAgcmV0dXJuIHJlc3AuanNvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gZmV0Y2hGZWVkYmFja0VtYWlsKGlkLCBlbWFpbCkge1xuICAgIHJldHVybiBmZXRjaChgJHt1cmx9L2FwaS9mZWVkYmFjay8ke2lkfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsIH0pLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICB9KS50aGVuKChyZXNwKSA9PiB7XG4gICAgICByZXR1cm4gcmVzcC5qc29uKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBvblNob3coKSB7XG4gICAgY29uc3Qgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCArICdfb3ZlcmxheScpO1xuICAgIGlmIChvdmVybGF5KSB7XG4gICAgICBvdmVybGF5LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgb3ZlcmxheS5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgICAgLy8gb3ZlcmxheS5zdHlsZS5taW5IZWlnaHQgPSAnMTAwdmgnO1xuICAgICAgfSwgMTAwKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbkNsb3NlKCkge1xuICAgIGNvbnN0IG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQgKyAnX292ZXJsYXknKTtcbiAgICBpZiAob3ZlcmxheSkge1xuICAgICAgb3ZlcmxheS5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnYXV0byc7XG4gICAgICAvLyBvdmVybGF5LnN0eWxlLm1pbkhlaWdodCA9IDA7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgb3ZlcmxheS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICBQcm9taXNlLmFsbChbXG4gICAgZmV0Y2hTZXR0aW5ncygpLFxuICAgIGZldGNoKGBodHRwczovL2ZlZWRiYWNrYnV0dG9uLmFwcC9mb250cy9TRi1Qcm8tRGlzcGxheS1SZWd1bGFyLm90ZmApXG4gICAgICAudGhlbigocmVzcCkgPT4gcmVzcC5hcnJheUJ1ZmZlcigpKVxuICAgICAgLnRoZW4oKGZvbnQpID0+IHtcbiAgICAgICAgY29uc3QgZm9udEZhY2UgPSBuZXcgRm9udEZhY2UoJ1NGIFBybyBEaXNwbGF5JywgZm9udCk7XG4gICAgICAgIGRvY3VtZW50LmZvbnRzLmFkZChmb250RmFjZSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHt9KSxcbiAgXSlcbiAgICAudGhlbigoW3NldHRpbmddKSA9PiB7XG4gICAgICBpZiAoIXNldHRpbmcgfHwgIXNldHRpbmcuYWN0aXZlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXYgPSBnZW5QYXJlbnRFbGVtZW50V2lkZ2V0KHNldHRpbmcuYnV0dG9uKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTtcbiAgICAgIFJlYWN0RE9NLnJlbmRlcihcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHNldHRpbmc9e3NldHRpbmcuYnV0dG9ufVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblNob3d9XG4gICAgICAgIC8+LFxuICAgICAgICBkaXZcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBnZW5PdmVybGF5RWxlbWVudFdpZGdldChzZXR0aW5nKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3ZlcmxheSk7XG4gICAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICAgIDxXaWRnZXRDb250YWluZXJcbiAgICAgICAgICBzZXR0aW5nPXtzZXR0aW5nfVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgIGZldGNoRmVlZGJhY2s9e2ZldGNoRmVlZGJhY2t9XG4gICAgICAgICAgZmV0Y2hGZWVkYmFja0VtYWlsPXtmZXRjaEZlZWRiYWNrRW1haWx9XG4gICAgICAgIC8+LFxuICAgICAgICBvdmVybGF5XG4gICAgICApO1xuICAgIH0pXG4gICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCfwn5qAIH4gZmlsZTogaW5kZXguanMgfiBsaW5lIDE4NCB+IF0pLnRoZW4gfiBlcnInLCBlcnIpO1xuICAgICAgLy8gbG9nZ2VyLmVycm9yKCdhZGQgdG8gY2FydCBlcnJvcicsIGVycik7XG4gICAgfSk7XG59KSgpO1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnRcbmV4cG9ydCBkZWZhdWx0IChzZXR0aW5nLCBpc01vYmlsZSkgPT4ge1xuICBjb25zdCBzdHlsZSA9IHtcbiAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICB6SW5kZXg6IDIxNDc0ODM2NDAsXG4gICAgJ2JveC1zaXppbmcnOiAnYm9yZGVyLWJveCcsXG4gICAgZGlzcGxheTogJ2dyaWQnLFxuICB9O1xuXG4gIGNvbnN0IHBvc2l0aW9uID0gaXNNb2JpbGUgPyBzZXR0aW5nLm1vYmlsZV9wb3NpdGlvbiA6IHNldHRpbmcucG9zaXRpb247XG5cbiAgc3dpdGNoIChwb3NpdGlvbikge1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgc3R5bGUubGVmdCA9IDA7XG4gICAgICBzdHlsZS50b3AgPSAnNTAlJztcbiAgICAgIHN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKC01MCUpJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2JvdHRvbV9sZWZ0JzpcbiAgICAgIHN0eWxlLmxlZnQgPSAnMTAlJztcbiAgICAgIHN0eWxlLmJvdHRvbSA9IDA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdib3R0b21fcmlnaHQnOlxuICAgICAgc3R5bGUucmlnaHQgPSAnMTAlJztcbiAgICAgIHN0eWxlLmJvdHRvbSA9IDA7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdyaWdodCc6XG4gICAgICBzdHlsZS5yaWdodCA9IDA7XG4gICAgICBzdHlsZS50b3AgPSAnNTAlJztcbiAgICAgIHN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGVZKC01MCUpJztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn07XG4iLCIvLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiBJbiB0aGUgYnJvd3NlciB3ZSB0aGVyZWZvcmVcbi8vIHJlcXVpcmUgdGhlIGNyeXB0byBBUEkgYW5kIGRvIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGZhbGxiYWNrIHRvIGxvd2VyIHF1YWxpdHkgcmFuZG9tIG51bWJlclxuLy8gZ2VuZXJhdG9ycyAobGlrZSBNYXRoLnJhbmRvbSgpKS5cbi8vIGdldFJhbmRvbVZhbHVlcyBuZWVkcyB0byBiZSBpbnZva2VkIGluIGEgY29udGV4dCB3aGVyZSBcInRoaXNcIiBpcyBhIENyeXB0byBpbXBsZW1lbnRhdGlvbi4gQWxzbyxcbi8vIGZpbmQgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mIGNyeXB0byAobXNDcnlwdG8pIG9uIElFMTEuXG52YXIgZ2V0UmFuZG9tVmFsdWVzID0gdHlwZW9mIGNyeXB0byAhPSAndW5kZWZpbmVkJyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuYmluZChjcnlwdG8pIHx8IHR5cGVvZiBtc0NyeXB0byAhPSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09ICdmdW5jdGlvbicgJiYgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQobXNDcnlwdG8pO1xudmFyIHJuZHM4ID0gbmV3IFVpbnQ4QXJyYXkoMTYpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJuZygpIHtcbiAgaWYgKCFnZXRSYW5kb21WYWx1ZXMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkJyk7XG4gIH1cblxuICByZXR1cm4gZ2V0UmFuZG9tVmFsdWVzKHJuZHM4KTtcbn0iLCIvKipcbiAqIENvbnZlcnQgYXJyYXkgb2YgMTYgYnl0ZSB2YWx1ZXMgdG8gVVVJRCBzdHJpbmcgZm9ybWF0IG9mIHRoZSBmb3JtOlxuICogWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhYXG4gKi9cbnZhciBieXRlVG9IZXggPSBbXTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICBieXRlVG9IZXhbaV0gPSAoaSArIDB4MTAwKS50b1N0cmluZygxNikuc3Vic3RyKDEpO1xufVxuXG5mdW5jdGlvbiBieXRlc1RvVXVpZChidWYsIG9mZnNldCkge1xuICB2YXIgaSA9IG9mZnNldCB8fCAwO1xuICB2YXIgYnRoID0gYnl0ZVRvSGV4OyAvLyBqb2luIHVzZWQgdG8gZml4IG1lbW9yeSBpc3N1ZSBjYXVzZWQgYnkgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzE3NSNjNFxuXG4gIHJldHVybiBbYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgJy0nLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCAnLScsIGJ0aFtidWZbaSsrXV0sIGJ0aFtidWZbaSsrXV0sICctJywgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgJy0nLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dXS5qb2luKCcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYnl0ZXNUb1V1aWQ7IiwiaW1wb3J0IHJuZyBmcm9tICcuL3JuZy5qcyc7XG5pbXBvcnQgYnl0ZXNUb1V1aWQgZnJvbSAnLi9ieXRlc1RvVXVpZC5qcyc7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIHZhciBpID0gYnVmICYmIG9mZnNldCB8fCAwO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PSAnc3RyaW5nJykge1xuICAgIGJ1ZiA9IG9wdGlvbnMgPT09ICdiaW5hcnknID8gbmV3IEFycmF5KDE2KSA6IG51bGw7XG4gICAgb3B0aW9ucyA9IG51bGw7XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgdmFyIHJuZHMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgcm5nKSgpOyAvLyBQZXIgNC40LCBzZXQgYml0cyBmb3IgdmVyc2lvbiBhbmQgYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgXG5cbiAgcm5kc1s2XSA9IHJuZHNbNl0gJiAweDBmIHwgMHg0MDtcbiAgcm5kc1s4XSA9IHJuZHNbOF0gJiAweDNmIHwgMHg4MDsgLy8gQ29weSBieXRlcyB0byBidWZmZXIsIGlmIHByb3ZpZGVkXG5cbiAgaWYgKGJ1Zikge1xuICAgIGZvciAodmFyIGlpID0gMDsgaWkgPCAxNjsgKytpaSkge1xuICAgICAgYnVmW2kgKyBpaV0gPSBybmRzW2lpXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnVmIHx8IGJ5dGVzVG9VdWlkKHJuZHMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB2NDsiXSwic291cmNlUm9vdCI6IiJ9