<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*! For license information please see global.f6e7affa781e6474f47d.js.LICENSE.txt */
(()=&gt;{var e,t,n={3023:(e,t)=&gt;{"use strict";Symbol.for("react.element"),Symbol.for("react.portal"),Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.server_context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.suspense_list"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.for("react.offscreen");Symbol.for("react.module.reference")},6607:(e,t,n)=&gt;{"use strict";n(3023)},755:(e,t,n)=&gt;{"use strict";n.d(t,{Z:()=&gt;c,f:()=&gt;u});var r=n(7294);function o(e){return o="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},o(e)}function a(){a=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},i=r.iterator||"@@iterator",l=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var o=t&amp;&amp;t.prototype instanceof p?t:p,a=Object.create(o.prototype),i=new P(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=k(i,n);if(l){if(l===d)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&amp;&amp;n.abrupt("return",n.arg);r="executing";var s=f(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===d)continue;return{value:s.arg,done:n.done}}"throw"===s.type&amp;&amp;(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),a}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var d={};function p(){}function h(){}function m(){}var y={};u(y,i,(function(){return this}));var v=Object.getPrototypeOf,g=v&amp;&amp;v(v(C([])));g&amp;&amp;g!==t&amp;&amp;n.call(g,i)&amp;&amp;(y=g);var b=m.prototype=p.prototype=Object.create(y);function w(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function r(a,i,l,s){var u=f(e[a],e,i);if("throw"!==u.type){var c=u.arg,d=c.value;return d&amp;&amp;"object"==o(d)&amp;&amp;n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,l,s)}),(function(e){r("throw",e,l,s)})):t.resolve(d).then((function(e){c.value=e,l(c)}),(function(e){return r("throw",e,l,s)}))}s(u.arg)}var a;this._invoke=function(e,n){function o(){return new t((function(t,o){r(e,n,t,o)}))}return a=a?a.then(o,o):o()}}function k(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&amp;&amp;(t.method="return",t.arg=void 0,k(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var r=f(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,d;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&amp;&amp;(t.method="next",t.arg=void 0),t.delegate=null,d):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function x(e){var t={tryLoc:e[0]};1 in e&amp;&amp;(t.catchLoc=e[1]),2 in e&amp;&amp;(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 P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function C(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r&lt;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 o.next=o}}return{next:O}}function O(){return{value:void 0,done:!0}}return h.prototype=m,u(b,"constructor",m),u(m,"constructor",h),h.displayName=u(m,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&amp;&amp;e.constructor;return!!t&amp;&amp;(t===h||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,s,"GeneratorFunction")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},w(S.prototype),u(S.prototype,l,(function(){return this})),e.AsyncIterator=S,e.async=function(t,n,r,o,a){void 0===a&amp;&amp;(a=Promise);var i=new S(c(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},w(b),u(b,s,"Generator"),u(b,i,(function(){return this})),u(b,"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=C,P.prototype={constructor:P,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)&amp;&amp;n.call(this,t)&amp;&amp;!isNaN(+t.slice(1))&amp;&amp;(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 i.type="throw",i.arg=e,t.next=n,r&amp;&amp;(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o&gt;=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc&lt;=this.prev){var l=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(l&amp;&amp;s){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0);if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r&gt;=0;--r){var o=this.tryEntries[r];if(o.tryLoc&lt;=this.prev&amp;&amp;n.call(o,"finallyLoc")&amp;&amp;this.prev&lt;o.finallyLoc){var a=o;break}}a&amp;&amp;("break"===e||"continue"===e)&amp;&amp;a.tryLoc&lt;=t&amp;&amp;t&lt;=a.finallyLoc&amp;&amp;(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,d):this.complete(i)},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&amp;&amp;t&amp;&amp;(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),d}},catch:function(e){for(var t=this.tryEntries.length-1;t&gt;=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:C(e),resultName:t,nextLoc:n},"next"===this.method&amp;&amp;(this.arg=void 0),d}},e}function i(e,t,n,r,o,a,i){try{var l=e[a](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function l(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function l(e){i(a,r,o,l,s,"next",e)}function s(e){i(a,r,o,l,s,"throw",e)}l(void 0)}))}}function s(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var u="onCartChange";const c=function(e){var t,n,o,i=(n=(0,r.useState)({}),o=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(n,o)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(n,o)||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.")}()),c=i[0],f=i[1],d=function(){(function(){return p.apply(this,arguments)})("/api/order/getBasketItems?lang="+e.lang).then((function(e){f(e||null)}))};function p(){return p=l(a().mark((function e(){var t,n,r=arguments;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.length&gt;0&amp;&amp;void 0!==r[0]?r[0]:"",e.next=3,fetch(t,{method:"GET",headers:{accept:"application/json"}});case 3:return n=e.sent,e.abrupt("return",n.json());case 5:case"end":return e.stop()}}),e)}))),p.apply(this,arguments)}return(0,r.useEffect)((function(){d();var e=new BroadcastChannel(u);return e.onmessage=function(e){d()},function(){return e.close()}}),[]),r.createElement(r.Fragment,null,e.text&amp;&amp;(null==c||null===(t=c.items)||void 0===t?void 0:t.length)&gt;0&amp;&amp;r.createElement("div",{className:"bg-orionDarkBlue p-32 text-white flex justify-center"},r.createElement("div",{className:"text-content text-content-white inline-p m-0"},r.createElement("span",{className:"material-icons inline p-8 text-base rounded-full aspect-square bg-cartRed border border-cartRed mr-16 align-sub","aria-hidden":"true"},"shopping_cart"),r.createElement("span",{dangerouslySetInnerHTML:{__html:e.text}}))))}},2845:(e,t,n)=&gt;{"use strict";n.r(t),n.d(t,{default:()=&gt;u});var r=n(7294),o=n(4216),a=n(755);function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(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 l(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var s=function(e){var t=e.options,n=e.selectedValue,o=e.unselectedValue,a=e.onChange,l=e.isInBasket,s=e.onClick,u=e.loading,c=i((0,r.useState)(!1),2),f=c[0],d=c[1],p=(0,r.useRef)(null),h=function(e){p.current&amp;&amp;!p.current.contains(e.target)&amp;&amp;d(!1)};(0,r.useEffect)((function(){return document.addEventListener("click",h),function(){return document.removeEventListener("click",h)}}),[]);var m=function(e){a(e),d(!1)};return r.createElement(r.Fragment,null,r.createElement("div",{className:"relative",ref:p},r.createElement("div",{className:"flex h-full items-center border rounded-l-xl text-xs text-right px-10 py-2 cursor-pointer bg-white",onClick:function(e){e.stopPropagation(),e.preventDefault(),d((function(e){return!e}))}},r.createElement("span",{className:"inline-block min-w-[3ch]"},n||(l?"0":o)),r.createElement("span",{className:"material-icons ml-2"},"expand_more")),f&amp;&amp;r.createElement("div",{className:"absolute top-full left-0 w-full border rounded-xl bg-white z-10 shadow-lg"},l&amp;&amp;r.createElement("div",{key:"0",className:"text-right px-6 py-2 hover:bg-babyBlue40 cursor-pointer",onClick:function(e){e.stopPropagation(),e.preventDefault(),m(0)}},"0"),t.map((function(e,t){return r.createElement("div",{key:t,className:"text-right px-6 py-2 hover:bg-babyBlue40 cursor-pointer",onClick:function(t){t.stopPropagation(),t.preventDefault(),m(e)}},e)})))),r.createElement("button",{onClick:s,className:"button translate3d-0 rounded-none text-xs py-8 px-12 whitespace-nowrap ".concat(l?"bg-green button--default-green":"button--default-blue")},r.createElement("span",{className:"material-icons text-base leading-[0] align-sub ".concat(u&amp;&amp;"animate-spin"),"aria-hidden":"true"},u?"refresh":l&amp;&amp;0==n?"remove_shopping_cart":"shopping_cart")))};const u=function(e){var t=i((0,r.useState)(e.amountInBasket&gt;0?e.amountInBasket:0),2),n=t[0],l=t[1],u=i((0,r.useState)(!1),2),c=u[0],f=u[1],d=i((0,r.useState)(e.amountInBasket&gt;0),2),p=d[0],h=d[1];return(0,r.useRef)(null),r.createElement("div",{className:"flex flex-wrap gap-10"},e.orderQuantity&amp;&amp;r.createElement("div",{className:"inline-flex border border-2 rounded-xl self-start ".concat(p?"border-green":"border-blue")},r.createElement(s,{options:e.orderQuantity,selectedValue:n,unselectedValue:e.quantityText,onChange:function(e){var t=parseInt(e);l(t)},isInBasket:p,onClick:function(){var t,r;t=e.productIdField,r=n,new Promise((function(n,i){var l=new XMLHttpRequest;0===r?l.open("POST","/api/order/removeBasketItem?lang=".concat(e.lang,"&amp;productId=").concat(t),!0):l.open("PUT","/api/order/upsertBasketItem?lang=".concat(e.lang,"&amp;productId=").concat(t,"&amp;quantity=").concat(r),!0),l.send(),f(!0),l.onreadystatechange=function(){4===this.readyState&amp;&amp;(200===this.status?(h(r&gt;0),new BroadcastChannel(a.f).postMessage(r),o.eventbus.publish(o.events.productAddedToCartEvent,r&gt;0),n()):i("Failed to update basket for product ID: ".concat(t)),f(!1))}}))},loading:c})),e.fileUrl&amp;&amp;r.createElement("a",{href:e.fileUrl,target:"_blank",className:"button button--default-blue flex items-center shrink rounded-xl text-xs px-12 py-8 whitespace-nowrap"},"PDF ",r.createElement("span",{className:"material-icons text-base ml-6 leading-[0] align-sub","aria-hidden":"true"},"picture_as_pdf")))}},3756:()=&gt;{window.addEventListener("DOMContentLoaded",(function(e){document.querySelectorAll('li[data-active="true"]').forEach((function(e){e.parentElement&amp;&amp;e.parentElement.classList.remove("hidden"),e.parentElement.previousElementSibling&amp;&amp;(e.parentElement.previousElementSibling.querySelector(".material-icons").innerHTML="remove")})),document.querySelectorAll(".digitalMaterialPage aside h2").forEach((function(e){e.addEventListener("click",(function(e){this.nextElementSibling.classList.toggle("hidden"),"remove"==this.querySelector(".material-icons").innerText?this.querySelector(".material-icons").innerHTML="add":this.querySelector(".material-icons").innerHTML="remove"}))}))}))},1794:()=&gt;{var e=document.querySelectorAll(".advanced-highlight video"),t=new IntersectionObserver((function(e){e.forEach((function(e){var t=e.target.classList.contains("play-once"),n=e.target.classList.contains("played");!(e.intersectionRatio&gt;.9)||t&amp;&amp;n?e.target.pause():e.target.play()}))}),{threshold:function(){for(var e=[],t=0;t&lt;=1;t+=.05)e.push(t);return e}()});e.forEach((function(e){t.observe(e),e.addEventListener("ended",(function(){e.classList.add("played")}))}))},2031:()=&gt;{function e(e,n){var r="undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&amp;&amp;e.constructor&amp;&amp;(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n&amp;&amp;e&amp;&amp;"number"==typeof e.length){r&amp;&amp;(e=r);var o=0,a=function(){};return{s:a,n:function(){return o&gt;=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){s=!0,i=e},f:function(){try{l||null==r.return||r.return()}finally{if(s)throw i}}}}function t(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var n=document.querySelectorAll(".js-equal-w");if(n){var r,o=0,a=e(n);try{for(a.s();!(r=a.n()).done;){var i=r.value;o=o&lt;i.clientWidth?i.clientWidth:o}}catch(e){a.e(e)}finally{a.f()}var l,s=e(n);try{for(s.s();!(l=s.n()).done;)l.value.style.minWidth=o+"px"}catch(e){s.e(e)}finally{s.f()}}},4216:(e,t,n)=&gt;{"use strict";function r(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}n.r(t),n.d(t,{eventbus:()=&gt;o,events:()=&gt;a});var o=new(function(){function e(){var t,n;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),n={},(t="eventObservers")in this?Object.defineProperty(this,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):this[t]=n}var t,n;return t=e,(n=[{key:"subscribe",value:function(e,t){if(this.eventObservers[e]){var n=this.eventObservers[e];n.push(t),this.eventObservers[e]=n}else this.eventObservers[e]=[t]}},{key:"publish",value:function(e,t){this.eventObservers[e]&amp;&amp;this.eventObservers[e].forEach((function(e){try{e(t)}catch(e){console.log("Could not call callback function succesfully. Error below"),console.log(e)}}))}}])&amp;&amp;r(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}()),a={productAddedToCartEvent:"productAddedToCartEvent"};window.vmEventbus=o,window.vmEventbusEvents=a},8582:()=&gt;{var e=document.querySelector(".EPiServerForms");if(e){var t=function(e,t){var n='&lt;div class="epiform-tooltip-icon"&gt;&lt;div class="epiform-tooltip"&gt;&lt;button class="absolute md:hidden right-[15px] top-[5px]"&gt;&lt;span class="material-icons text-orionBlue text-[2rem]"&gt;&amp;#xE5CD;&lt;/span&gt;&lt;/button&gt;&lt;div&gt;'.concat(e,"&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;");t.insertAdjacentHTML("beforeend",n)},n=e.querySelectorAll(".Form__Element input"),r=e.querySelectorAll(".Form__Element textarea"),o=e.querySelectorAll(".Form__Element.FormChoice"),a=e.querySelectorAll(".Form__Element select");document.addEventListener("DOMContentLoaded",(function(){e&amp;&amp;(n.forEach((function(e,n){if(!["radio","checkbox"].includes(e.type)&amp;&amp;e.hasAttribute("title")){var r=e.closest(".Form__Element").querySelector("label"),o=e.getAttribute("title");t(o,r)}})),r.forEach((function(e,n){if(e.hasAttribute("title")){var r=e.closest(".Form__Element").querySelector("label"),o=e.getAttribute("title");t(o,r)}})),o.forEach((function(e,n){if(e.hasAttribute("title")){var r=e.closest(".Form__Element").querySelector("legend"),o=e.getAttribute("title");t(o,r)}})),a.forEach((function(e,n){if(e.hasAttribute("title")){var r=e.closest(".Form__Element").querySelector("label"),o=e.getAttribute("title");t(o,r)}})))}))}},5475:()=&gt;{var e,t,n;window.innerWidth&lt;768&amp;&amp;(".fullwidth-highlight",e=document.querySelectorAll(".fullwidth-highlight"),t=window.innerHeight/2,(n=function(){for(var n=0;n&lt;e.length;n++){var r=e[n].getBoundingClientRect().top,o=e[n].querySelector(".play-video-target");r&lt;0?(e[n].classList.remove("in-viewport"),o.pause()):r&lt;t?(e[n].classList.add("in-viewport"),o.play()):(e[n].classList.remove("in-viewport"),o.pause())}})(),window.addEventListener("scroll",n))},540:()=&gt;{var e=document.querySelector("body");window.addEventListener("DOMContentLoaded",(function(t){document.querySelector("#mobile-navi-trigger").addEventListener("click",(function(t){e.classList.contains("overflow-hidden")?e.classList.remove("overflow-hidden"):e.classList.add("overflow-hidden"),document.querySelector("#mobile-navigation div").classList.contains("invisible")?document.querySelector("#mobile-navigation div").classList.remove("invisible"):setTimeout((function(){document.querySelector("#mobile-navigation div").classList.add("invisible")}),300),document.querySelector("#mobile-navigation div").classList.toggle("translate-y-0"),document.querySelector("#mobile-navigation div").classList.toggle("opacity-100"),document.querySelector("#x-top").classList.toggle("-translate-y-8"),document.querySelector("#x-top").classList.toggle("rotate-45"),document.querySelector("#x-bottom").classList.toggle("translate-y-8"),document.querySelector("#x-bottom").classList.toggle("-rotate-45"),document.querySelector("#x-middle").classList.toggle("opacity-0"),f(),l()}));var n=document.querySelectorAll("#mobile-navigation .navi-link"),r=0;n.forEach((function(e){e.addEventListener("click",(function(e){this.classList.contains("lvl-2-arrow")&amp;&amp;(e.preventDefault(),this.nextElementSibling.classList.remove("hidden"),r-=100,document.querySelector("#mobile-navigation &gt; div").style.transform="translateX("+r+"%)")}))})),document.querySelectorAll(".mobile-navigation-back").forEach((function(e){e.addEventListener("click",(function(e){e.preventDefault(),setTimeout(function(){this.parentElement.parentElement.classList.add("hidden")}.bind(this),300),r+=100,document.querySelector("#mobile-navigation &gt; div").style.transform="translateX("+r+"%)"}))})),document.querySelectorAll(".language-link").forEach((function(e){e.addEventListener("click",(function(e){var t=this.getAttribute("data-language");t&amp;&amp;(document.cookie="UserLanguage="+t+"; path=/")}))}))}));var t=document.querySelector(".page-header__search-toggler"),n=document.querySelector(".page-header__search-form");if(t&amp;&amp;n){var r=function(){o.value.length&gt;0?(i.classList.remove("text-grey"),i.disabled=!1):(i.classList.add("text-grey"),i.disabled=!0)},o=n.querySelector(".page-header__search-input"),a=n.querySelector(".page-header__search-form-close"),i=n.querySelector(".page-header__search-button");t.addEventListener("click",(function(){var r="false"===t.getAttribute("aria-expanded"),a="true"!==n.getAttribute("aria-hidden");e.classList.add("overflow-hidden"),t.classList.toggle("is-active"),t.setAttribute("aria-expanded",r),n.classList.toggle("is-active"),n.setAttribute("aria-hidden",a),o.focus(),f()})),a.addEventListener("click",(function(e){l()})),document.querySelector(".page-header__search-input").addEventListener("keypress",(function(e){"Enter"===e.key&amp;&amp;(e.preventDefault(),document.querySelector(".page-header__search-button").click())})),r(),o.addEventListener("keyup",(function(e){r()}))}function l(){t.classList.contains("is-active")&amp;&amp;(e.classList.remove("overflow-hidden"),t.classList.remove("is-active"),t.setAttribute("aria-expanded",!1),n.classList.remove("is-active"),n.setAttribute("aria-hidden",!0),n.classList.remove("is-active"),event.preventDefault())}var s=document.querySelector(".language-menu-toggler"),u=document.querySelector(".language-menu");if(s){var c=document.querySelector(".language-menu-close");s.addEventListener("click",(function(){var t="false"===s.getAttribute("aria-expanded"),n="true"!==u.getAttribute("aria-hidden");e.classList.toggle("overflow-hidden"),s.classList.toggle("is-active"),s.setAttribute("aria-expanded",t),u.classList.toggle("is-active"),u.setAttribute("aria-hidden",n),l()})),c.addEventListener("click",(function(){f()}))}function f(){s.classList.contains("is-active")&amp;&amp;(e.classList.remove("overflow-hidden"),s.classList.remove("is-active"),s.setAttribute("aria-expanded",!1),u.classList.remove("is-active"),u.setAttribute("aria-hidden",!0),event.preventDefault())}for(var d=document.querySelectorAll(".second-level li"),p=0;p&lt;d.length;p++)d[p].addEventListener("mouseover",(function(){this.querySelector(".third-level")&amp;&amp;(this.closest(".mega").style.minHeight=this.querySelector(".third-level").offsetHeight+80+"px",this.querySelector(".third-level").style.minHeight=this.closest(".second-level").offsetHeight+"px")})),d[p].addEventListener("mouseout",(function(){this.closest(".mega").style.removeProperty("min-height")}));document.querySelector("h1").setAttribute("id","main-content")},8930:(e,t,n)=&gt;{"use strict";function r(e){return null!==e&amp;&amp;"object"==typeof e&amp;&amp;"constructor"in e&amp;&amp;e.constructor===Object}function o(e,t){void 0===e&amp;&amp;(e={}),void 0===t&amp;&amp;(t={}),Object.keys(t).forEach((function(n){void 0===e[n]?e[n]=t[n]:r(t[n])&amp;&amp;r(e[n])&amp;&amp;Object.keys(t[n]).length&gt;0&amp;&amp;o(e[n],t[n])}))}n.r(t);var a={body:{},addEventListener:function(){},removeEventListener:function(){},activeElement:{blur:function(){},nodeName:""},querySelector:function(){return null},querySelectorAll:function(){return[]},getElementById:function(){return null},createEvent:function(){return{initEvent:function(){}}},createElement:function(){return{children:[],childNodes:[],style:{},setAttribute:function(){},getElementsByTagName:function(){return[]}}},createElementNS:function(){return{}},importNode:function(){return null},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){var e="undefined"!=typeof document?document:{};return o(e,a),e}var l={document:a,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState:function(){},pushState:function(){},go:function(){},back:function(){}},CustomEvent:function(){return this},addEventListener:function(){},removeEventListener:function(){},getComputedStyle:function(){return{getPropertyValue:function(){return""}}},Image:function(){},Date:function(){},screen:{},setTimeout:function(){},clearTimeout:function(){},matchMedia:function(){return{}},requestAnimationFrame:function(e){return"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0)},cancelAnimationFrame:function(e){"undefined"!=typeof setTimeout&amp;&amp;clearTimeout(e)}};function s(){var e="undefined"!=typeof window?window:{};return o(e,l),e}function u(e){return u=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},u(e)}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function d(e,t,n){return d=f()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&amp;&amp;c(o,n.prototype),o},d.apply(null,arguments)}function p(e){var t="function"==typeof Map?new Map:void 0;return p=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return d(e,arguments,u(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),c(r,e)},p(e)}var h=function(e){var t,n;function r(t){var n,r,o;return r=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(n=e.call.apply(e,[this].concat(t))||this),o=r.__proto__,Object.defineProperty(r,"__proto__",{get:function(){return o},set:function(e){o.__proto__=e}}),n}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r}(p(Array));function m(e){void 0===e&amp;&amp;(e=[]);var t=[];return e.forEach((function(e){Array.isArray(e)?t.push.apply(t,m(e)):t.push(e)})),t}function y(e,t){return Array.prototype.filter.call(e,t)}function v(e,t){var n=s(),r=i(),o=[];if(!t&amp;&amp;e instanceof h)return e;if(!e)return new h(o);if("string"==typeof e){var a=e.trim();if(a.indexOf("&lt;")&gt;=0&amp;&amp;a.indexOf("&gt;")&gt;=0){var l="div";0===a.indexOf("&lt;li")&amp;&amp;(l="ul"),0===a.indexOf("&lt;tr")&amp;&amp;(l="tbody"),0!==a.indexOf("&lt;td")&amp;&amp;0!==a.indexOf("&lt;th")||(l="tr"),0===a.indexOf("&lt;tbody")&amp;&amp;(l="table"),0===a.indexOf("&lt;option")&amp;&amp;(l="select");var u=r.createElement(l);u.innerHTML=a;for(var c=0;c&lt;u.childNodes.length;c+=1)o.push(u.childNodes[c])}else o=function(e,t){if("string"!=typeof e)return[e];for(var n=[],r=t.querySelectorAll(e),o=0;o&lt;r.length;o+=1)n.push(r[o]);return n}(e.trim(),t||r)}else if(e.nodeType||e===n||e===r)o.push(e);else if(Array.isArray(e)){if(e instanceof h)return e;o=e}return new h(function(e){for(var t=[],n=0;n&lt;e.length;n+=1)-1===t.indexOf(e[n])&amp;&amp;t.push(e[n]);return t}(o))}v.fn=h.prototype;var g="resize scroll".split(" ");function b(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];if(void 0===n[0]){for(var o=0;o&lt;this.length;o+=1)g.indexOf(e)&lt;0&amp;&amp;(e in this[o]?this[o][e]():v(this[o]).trigger(e));return this}return this.on.apply(this,[e].concat(n))}}b("click"),b("blur"),b("focus"),b("focusin"),b("focusout"),b("keyup"),b("keydown"),b("keypress"),b("submit"),b("change"),b("mousedown"),b("mousemove"),b("mouseup"),b("mouseenter"),b("mouseleave"),b("mouseout"),b("mouseover"),b("touchstart"),b("touchend"),b("touchmove"),b("resize"),b("scroll");var w={addClass:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=m(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).add.apply(t,r)})),this},removeClass:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=m(t.map((function(e){return e.split(" ")})));return this.forEach((function(e){var t;(t=e.classList).remove.apply(t,r)})),this},hasClass:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=m(t.map((function(e){return e.split(" ")})));return y(this,(function(e){return r.filter((function(t){return e.classList.contains(t)})).length&gt;0})).length&gt;0},toggleClass:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=m(t.map((function(e){return e.split(" ")})));this.forEach((function(e){r.forEach((function(t){e.classList.toggle(t)}))}))},attr:function(e,t){if(1===arguments.length&amp;&amp;"string"==typeof e)return this[0]?this[0].getAttribute(e):void 0;for(var n=0;n&lt;this.length;n+=1)if(2===arguments.length)this[n].setAttribute(e,t);else for(var r in e)this[n][r]=e[r],this[n].setAttribute(r,e[r]);return this},removeAttr:function(e){for(var t=0;t&lt;this.length;t+=1)this[t].removeAttribute(e);return this},transform:function(e){for(var t=0;t&lt;this.length;t+=1)this[t].style.transform=e;return this},transition:function(e){for(var t=0;t&lt;this.length;t+=1)this[t].style.transitionDuration="string"!=typeof e?e+"ms":e;return this},on:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=t[0],o=t[1],a=t[2],i=t[3];function l(e){var t=e.target;if(t){var n=e.target.dom7EventData||[];if(n.indexOf(e)&lt;0&amp;&amp;n.unshift(e),v(t).is(o))a.apply(t,n);else for(var r=v(t).parents(),i=0;i&lt;r.length;i+=1)v(r[i]).is(o)&amp;&amp;a.apply(r[i],n)}}function s(e){var t=e&amp;&amp;e.target&amp;&amp;e.target.dom7EventData||[];t.indexOf(e)&lt;0&amp;&amp;t.unshift(e),a.apply(this,t)}"function"==typeof t[1]&amp;&amp;(r=t[0],a=t[1],i=t[2],o=void 0),i||(i=!1);for(var u,c=r.split(" "),f=0;f&lt;this.length;f+=1){var d=this[f];if(o)for(u=0;u&lt;c.length;u+=1){var p=c[u];d.dom7LiveListeners||(d.dom7LiveListeners={}),d.dom7LiveListeners[p]||(d.dom7LiveListeners[p]=[]),d.dom7LiveListeners[p].push({listener:a,proxyListener:l}),d.addEventListener(p,l,i)}else for(u=0;u&lt;c.length;u+=1){var h=c[u];d.dom7Listeners||(d.dom7Listeners={}),d.dom7Listeners[h]||(d.dom7Listeners[h]=[]),d.dom7Listeners[h].push({listener:a,proxyListener:s}),d.addEventListener(h,s,i)}}return this},off:function(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];var r=t[0],o=t[1],a=t[2],i=t[3];"function"==typeof t[1]&amp;&amp;(r=t[0],a=t[1],i=t[2],o=void 0),i||(i=!1);for(var l=r.split(" "),s=0;s&lt;l.length;s+=1)for(var u=l[s],c=0;c&lt;this.length;c+=1){var f=this[c],d=void 0;if(!o&amp;&amp;f.dom7Listeners?d=f.dom7Listeners[u]:o&amp;&amp;f.dom7LiveListeners&amp;&amp;(d=f.dom7LiveListeners[u]),d&amp;&amp;d.length)for(var p=d.length-1;p&gt;=0;p-=1){var h=d[p];a&amp;&amp;h.listener===a||a&amp;&amp;h.listener&amp;&amp;h.listener.dom7proxy&amp;&amp;h.listener.dom7proxy===a?(f.removeEventListener(u,h.proxyListener,i),d.splice(p,1)):a||(f.removeEventListener(u,h.proxyListener,i),d.splice(p,1))}}return this},trigger:function(){for(var e=s(),t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];for(var o=n[0].split(" "),a=n[1],i=0;i&lt;o.length;i+=1)for(var l=o[i],u=0;u&lt;this.length;u+=1){var c=this[u];if(e.CustomEvent){var f=new e.CustomEvent(l,{detail:a,bubbles:!0,cancelable:!0});c.dom7EventData=n.filter((function(e,t){return t&gt;0})),c.dispatchEvent(f),c.dom7EventData=[],delete c.dom7EventData}}return this},transitionEnd:function(e){var t=this;return e&amp;&amp;t.on("transitionend",(function n(r){r.target===this&amp;&amp;(e.call(this,r),t.off("transitionend",n))})),this},outerWidth:function(e){if(this.length&gt;0){if(e){var t=this.styles();return this[0].offsetWidth+parseFloat(t.getPropertyValue("margin-right"))+parseFloat(t.getPropertyValue("margin-left"))}return this[0].offsetWidth}return null},outerHeight:function(e){if(this.length&gt;0){if(e){var t=this.styles();return this[0].offsetHeight+parseFloat(t.getPropertyValue("margin-top"))+parseFloat(t.getPropertyValue("margin-bottom"))}return this[0].offsetHeight}return null},styles:function(){var e=s();return this[0]?e.getComputedStyle(this[0],null):{}},offset:function(){if(this.length&gt;0){var e=s(),t=i(),n=this[0],r=n.getBoundingClientRect(),o=t.body,a=n.clientTop||o.clientTop||0,l=n.clientLeft||o.clientLeft||0,u=n===e?e.scrollY:n.scrollTop,c=n===e?e.scrollX:n.scrollLeft;return{top:r.top+u-a,left:r.left+c-l}}return null},css:function(e,t){var n,r=s();if(1===arguments.length){if("string"!=typeof e){for(n=0;n&lt;this.length;n+=1)for(var o in e)this[n].style[o]=e[o];return this}if(this[0])return r.getComputedStyle(this[0],null).getPropertyValue(e)}if(2===arguments.length&amp;&amp;"string"==typeof e){for(n=0;n&lt;this.length;n+=1)this[n].style[e]=t;return this}return this},each:function(e){return e?(this.forEach((function(t,n){e.apply(t,[t,n])})),this):this},html:function(e){if(void 0===e)return this[0]?this[0].innerHTML:null;for(var t=0;t&lt;this.length;t+=1)this[t].innerHTML=e;return this},text:function(e){if(void 0===e)return this[0]?this[0].textContent.trim():null;for(var t=0;t&lt;this.length;t+=1)this[t].textContent=e;return this},is:function(e){var t,n,r=s(),o=i(),a=this[0];if(!a||void 0===e)return!1;if("string"==typeof e){if(a.matches)return a.matches(e);if(a.webkitMatchesSelector)return a.webkitMatchesSelector(e);if(a.msMatchesSelector)return a.msMatchesSelector(e);for(t=v(e),n=0;n&lt;t.length;n+=1)if(t[n]===a)return!0;return!1}if(e===o)return a===o;if(e===r)return a===r;if(e.nodeType||e instanceof h){for(t=e.nodeType?[e]:e,n=0;n&lt;t.length;n+=1)if(t[n]===a)return!0;return!1}return!1},index:function(){var e,t=this[0];if(t){for(e=0;null!==(t=t.previousSibling);)1===t.nodeType&amp;&amp;(e+=1);return e}},eq:function(e){if(void 0===e)return this;var t=this.length;if(e&gt;t-1)return v([]);if(e&lt;0){var n=t+e;return v(n&lt;0?[]:[this[n]])}return v([this[e]])},append:function(){for(var e,t=i(),n=0;n&lt;arguments.length;n+=1){e=n&lt;0||arguments.length&lt;=n?void 0:arguments[n];for(var r=0;r&lt;this.length;r+=1)if("string"==typeof e){var o=t.createElement("div");for(o.innerHTML=e;o.firstChild;)this[r].appendChild(o.firstChild)}else if(e instanceof h)for(var a=0;a&lt;e.length;a+=1)this[r].appendChild(e[a]);else this[r].appendChild(e)}return this},prepend:function(e){var t,n,r=i();for(t=0;t&lt;this.length;t+=1)if("string"==typeof e){var o=r.createElement("div");for(o.innerHTML=e,n=o.childNodes.length-1;n&gt;=0;n-=1)this[t].insertBefore(o.childNodes[n],this[t].childNodes[0])}else if(e instanceof h)for(n=0;n&lt;e.length;n+=1)this[t].insertBefore(e[n],this[t].childNodes[0]);else this[t].insertBefore(e,this[t].childNodes[0]);return this},next:function(e){return this.length&gt;0?e?this[0].nextElementSibling&amp;&amp;v(this[0].nextElementSibling).is(e)?v([this[0].nextElementSibling]):v([]):this[0].nextElementSibling?v([this[0].nextElementSibling]):v([]):v([])},nextAll:function(e){var t=[],n=this[0];if(!n)return v([]);for(;n.nextElementSibling;){var r=n.nextElementSibling;e?v(r).is(e)&amp;&amp;t.push(r):t.push(r),n=r}return v(t)},prev:function(e){if(this.length&gt;0){var t=this[0];return e?t.previousElementSibling&amp;&amp;v(t.previousElementSibling).is(e)?v([t.previousElementSibling]):v([]):t.previousElementSibling?v([t.previousElementSibling]):v([])}return v([])},prevAll:function(e){var t=[],n=this[0];if(!n)return v([]);for(;n.previousElementSibling;){var r=n.previousElementSibling;e?v(r).is(e)&amp;&amp;t.push(r):t.push(r),n=r}return v(t)},parent:function(e){for(var t=[],n=0;n&lt;this.length;n+=1)null!==this[n].parentNode&amp;&amp;(e?v(this[n].parentNode).is(e)&amp;&amp;t.push(this[n].parentNode):t.push(this[n].parentNode));return v(t)},parents:function(e){for(var t=[],n=0;n&lt;this.length;n+=1)for(var r=this[n].parentNode;r;)e?v(r).is(e)&amp;&amp;t.push(r):t.push(r),r=r.parentNode;return v(t)},closest:function(e){var t=this;return void 0===e?v([]):(t.is(e)||(t=t.parents(e).eq(0)),t)},find:function(e){for(var t=[],n=0;n&lt;this.length;n+=1)for(var r=this[n].querySelectorAll(e),o=0;o&lt;r.length;o+=1)t.push(r[o]);return v(t)},children:function(e){for(var t=[],n=0;n&lt;this.length;n+=1)for(var r=this[n].children,o=0;o&lt;r.length;o+=1)e&amp;&amp;!v(r[o]).is(e)||t.push(r[o]);return v(t)},filter:function(e){return v(y(this,e))},remove:function(){for(var e=0;e&lt;this.length;e+=1)this[e].parentNode&amp;&amp;this[e].parentNode.removeChild(this[e]);return this}};Object.keys(w).forEach((function(e){Object.defineProperty(v.fn,e,{value:w[e],writable:!0})}));const S=v;function k(e,t){return void 0===t&amp;&amp;(t=0),setTimeout(e,t)}function x(){return Date.now()}function E(e){return"object"==typeof e&amp;&amp;null!==e&amp;&amp;e.constructor&amp;&amp;"Object"===Object.prototype.toString.call(e).slice(8,-1)}function P(e){return"undefined"!=typeof window&amp;&amp;void 0!==window.HTMLElement?e instanceof HTMLElement:e&amp;&amp;(1===e.nodeType||11===e.nodeType)}function C(){for(var e=Object(arguments.length&lt;=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"],n=1;n&lt;arguments.length;n+=1){var r=n&lt;0||arguments.length&lt;=n?void 0:arguments[n];if(null!=r&amp;&amp;!P(r))for(var o=Object.keys(Object(r)).filter((function(e){return t.indexOf(e)&lt;0})),a=0,i=o.length;a&lt;i;a+=1){var l=o[a],s=Object.getOwnPropertyDescriptor(r,l);void 0!==s&amp;&amp;s.enumerable&amp;&amp;(E(e[l])&amp;&amp;E(r[l])?r[l].__swiper__?e[l]=r[l]:C(e[l],r[l]):!E(e[l])&amp;&amp;E(r[l])?(e[l]={},r[l].__swiper__?e[l]=r[l]:C(e[l],r[l])):e[l]=r[l])}}return e}function O(e,t){Object.keys(t).forEach((function(n){E(t[n])&amp;&amp;Object.keys(t[n]).forEach((function(r){"function"==typeof t[n][r]&amp;&amp;(t[n][r]=t[n][r].bind(e))})),e[n]=t[n]}))}function T(e){return void 0===e&amp;&amp;(e=""),"."+e.trim().replace(/([\.:!\/])/g,"\\$1").replace(/ /g,".")}function _(e,t,n,r){var o=i();return n&amp;&amp;Object.keys(r).forEach((function(n){if(!t[n]&amp;&amp;!0===t.auto){var a=o.createElement("div");a.className=r[n],e.append(a),t[n]=a}})),t}var L,j,N;function M(){return L||(L=function(){var e=s(),t=i();return{touch:!!("ontouchstart"in e||e.DocumentTouch&amp;&amp;t instanceof e.DocumentTouch),pointerEvents:!!e.PointerEvent&amp;&amp;"maxTouchPoints"in e.navigator&amp;&amp;e.navigator.maxTouchPoints&gt;=0,observer:"MutationObserver"in e||"WebkitMutationObserver"in e,passiveListener:function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});e.addEventListener("testPassiveListener",null,n)}catch(e){}return t}(),gestures:"ongesturestart"in e}}()),L}function R(e){return void 0===e&amp;&amp;(e={}),j||(j=function(e){var t=(void 0===e?{}:e).userAgent,n=M(),r=s(),o=r.navigator.platform,a=t||r.navigator.userAgent,i={ios:!1,android:!1},l=r.screen.width,u=r.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/),f=a.match(/(iPad).*OS\s([\d_]+)/),d=a.match(/(iPod)(.*OS\s([\d_]+))?/),p=!f&amp;&amp;a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===o,m="MacIntel"===o;return!f&amp;&amp;m&amp;&amp;n.touch&amp;&amp;["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(l+"x"+u)&gt;=0&amp;&amp;((f=a.match(/(Version)\/([\d.]+)/))||(f=[0,1,"13_0_0"]),m=!1),c&amp;&amp;!h&amp;&amp;(i.os="android",i.android=!0),(f||p||d)&amp;&amp;(i.os="ios",i.ios=!0),i}(e)),j}function A(){return N||(N=function(){var e,t=s();return{isEdge:!!t.navigator.userAgent.match(/Edge/g),isSafari:(e=t.navigator.userAgent.toLowerCase(),e.indexOf("safari")&gt;=0&amp;&amp;e.indexOf("chrome")&lt;0&amp;&amp;e.indexOf("android")&lt;0),isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(t.navigator.userAgent)}}()),N}const I={name:"resize",create:function(){var e=this;C(e,{resize:{observer:null,createObserver:function(){e&amp;&amp;!e.destroyed&amp;&amp;e.initialized&amp;&amp;(e.resize.observer=new ResizeObserver((function(t){var n=e.width,r=e.height,o=n,a=r;t.forEach((function(t){var n=t.contentBoxSize,r=t.contentRect,i=t.target;i&amp;&amp;i!==e.el||(o=r?r.width:(n[0]||n).inlineSize,a=r?r.height:(n[0]||n).blockSize)})),o===n&amp;&amp;a===r||e.resize.resizeHandler()})),e.resize.observer.observe(e.el))},removeObserver:function(){e.resize.observer&amp;&amp;e.resize.observer.unobserve&amp;&amp;e.el&amp;&amp;(e.resize.observer.unobserve(e.el),e.resize.observer=null)},resizeHandler:function(){e&amp;&amp;!e.destroyed&amp;&amp;e.initialized&amp;&amp;(e.emit("beforeResize"),e.emit("resize"))},orientationChangeHandler:function(){e&amp;&amp;!e.destroyed&amp;&amp;e.initialized&amp;&amp;e.emit("orientationchange")}}})},on:{init:function(e){var t=s();e.params.resizeObserver&amp;&amp;void 0!==s().ResizeObserver?e.resize.createObserver():(t.addEventListener("resize",e.resize.resizeHandler),t.addEventListener("orientationchange",e.resize.orientationChangeHandler))},destroy:function(e){var t=s();e.resize.removeObserver(),t.removeEventListener("resize",e.resize.resizeHandler),t.removeEventListener("orientationchange",e.resize.orientationChangeHandler)}}};function D(){return D=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},D.apply(this,arguments)}var z={attach:function(e,t){void 0===t&amp;&amp;(t={});var n=s(),r=this,o=new(n.MutationObserver||n.WebkitMutationObserver)((function(e){if(1!==e.length){var t=function(){r.emit("observerUpdate",e[0])};n.requestAnimationFrame?n.requestAnimationFrame(t):n.setTimeout(t,0)}else r.emit("observerUpdate",e[0])}));o.observe(e,{attributes:void 0===t.attributes||t.attributes,childList:void 0===t.childList||t.childList,characterData:void 0===t.characterData||t.characterData}),r.observer.observers.push(o)},init:function(){var e=this;if(e.support.observer&amp;&amp;e.params.observer){if(e.params.observeParents)for(var t=e.$el.parents(),n=0;n&lt;t.length;n+=1)e.observer.attach(t[n]);e.observer.attach(e.$el[0],{childList:e.params.observeSlideChildren}),e.observer.attach(e.$wrapperEl[0],{attributes:!1})}},destroy:function(){this.observer.observers.forEach((function(e){e.disconnect()})),this.observer.observers=[]}};const B={name:"observer",params:{observer:!1,observeParents:!1,observeSlideChildren:!1},create:function(){O(this,{observer:D({},z,{observers:[]})})},on:{init:function(e){e.observer.init()},destroy:function(e){e.observer.destroy()}}},F={on:function(e,t,n){var r=this;if("function"!=typeof t)return r;var o=n?"unshift":"push";return e.split(" ").forEach((function(e){r.eventsListeners[e]||(r.eventsListeners[e]=[]),r.eventsListeners[e][o](t)})),r},once:function(e,t,n){var r=this;if("function"!=typeof t)return r;function o(){r.off(e,o),o.__emitterProxy&amp;&amp;delete o.__emitterProxy;for(var n=arguments.length,a=new Array(n),i=0;i&lt;n;i++)a[i]=arguments[i];t.apply(r,a)}return o.__emitterProxy=t,r.on(e,o,n)},onAny:function(e,t){var n=this;if("function"!=typeof e)return n;var r=t?"unshift":"push";return n.eventsAnyListeners.indexOf(e)&lt;0&amp;&amp;n.eventsAnyListeners[r](e),n},offAny:function(e){var t=this;if(!t.eventsAnyListeners)return t;var n=t.eventsAnyListeners.indexOf(e);return n&gt;=0&amp;&amp;t.eventsAnyListeners.splice(n,1),t},off:function(e,t){var n=this;return n.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?n.eventsListeners[e]=[]:n.eventsListeners[e]&amp;&amp;n.eventsListeners[e].forEach((function(r,o){(r===t||r.__emitterProxy&amp;&amp;r.__emitterProxy===t)&amp;&amp;n.eventsListeners[e].splice(o,1)}))})),n):n},emit:function(){var e,t,n,r=this;if(!r.eventsListeners)return r;for(var o=arguments.length,a=new Array(o),i=0;i&lt;o;i++)a[i]=arguments[i];"string"==typeof a[0]||Array.isArray(a[0])?(e=a[0],t=a.slice(1,a.length),n=r):(e=a[0].events,t=a[0].data,n=a[0].context||r),t.unshift(n);var l=Array.isArray(e)?e:e.split(" ");return l.forEach((function(e){r.eventsAnyListeners&amp;&amp;r.eventsAnyListeners.length&amp;&amp;r.eventsAnyListeners.forEach((function(r){r.apply(n,[e].concat(t))})),r.eventsListeners&amp;&amp;r.eventsListeners[e]&amp;&amp;r.eventsListeners[e].forEach((function(e){e.apply(n,t)}))})),r}},$={updateSize:function(){var e,t,n=this,r=n.$el;e=void 0!==n.params.width&amp;&amp;null!==n.params.width?n.params.width:r[0].clientWidth,t=void 0!==n.params.height&amp;&amp;null!==n.params.height?n.params.height:r[0].clientHeight,0===e&amp;&amp;n.isHorizontal()||0===t&amp;&amp;n.isVertical()||(e=e-parseInt(r.css("padding-left")||0,10)-parseInt(r.css("padding-right")||0,10),t=t-parseInt(r.css("padding-top")||0,10)-parseInt(r.css("padding-bottom")||0,10),Number.isNaN(e)&amp;&amp;(e=0),Number.isNaN(t)&amp;&amp;(t=0),C(n,{width:e,height:t,size:n.isHorizontal()?e:t}))},updateSlides:function(){var e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function n(e,n){return parseFloat(e.getPropertyValue(t(n))||0)}var r=e.params,o=e.$wrapperEl,a=e.size,i=e.rtlTranslate,l=e.wrongRTL,s=e.virtual&amp;&amp;r.virtual.enabled,u=s?e.virtual.slides.length:e.slides.length,c=o.children("."+e.params.slideClass),f=s?e.virtual.slides.length:c.length,d=[],p=[],h=[],m=r.slidesOffsetBefore;"function"==typeof m&amp;&amp;(m=r.slidesOffsetBefore.call(e));var y=r.slidesOffsetAfter;"function"==typeof y&amp;&amp;(y=r.slidesOffsetAfter.call(e));var v=e.snapGrid.length,g=e.slidesGrid.length,b=r.spaceBetween,w=-m,S=0,k=0;if(void 0!==a){var x,E;"string"==typeof b&amp;&amp;b.indexOf("%")&gt;=0&amp;&amp;(b=parseFloat(b.replace("%",""))/100*a),e.virtualSize=-b,i?c.css({marginLeft:"",marginBottom:"",marginTop:""}):c.css({marginRight:"",marginBottom:"",marginTop:""}),r.slidesPerColumn&gt;1&amp;&amp;(x=Math.floor(f/r.slidesPerColumn)===f/e.params.slidesPerColumn?f:Math.ceil(f/r.slidesPerColumn)*r.slidesPerColumn,"auto"!==r.slidesPerView&amp;&amp;"row"===r.slidesPerColumnFill&amp;&amp;(x=Math.max(x,r.slidesPerView*r.slidesPerColumn)));for(var P,O,T,_=r.slidesPerColumn,L=x/_,j=Math.floor(f/r.slidesPerColumn),N=0;N&lt;f;N+=1){E=0;var M=c.eq(N);if(r.slidesPerColumn&gt;1){var R=void 0,A=void 0,I=void 0;if("row"===r.slidesPerColumnFill&amp;&amp;r.slidesPerGroup&gt;1){var D=Math.floor(N/(r.slidesPerGroup*r.slidesPerColumn)),z=N-r.slidesPerColumn*r.slidesPerGroup*D,B=0===D?r.slidesPerGroup:Math.min(Math.ceil((f-D*_*r.slidesPerGroup)/_),r.slidesPerGroup);R=(A=z-(I=Math.floor(z/B))*B+D*r.slidesPerGroup)+I*x/_,M.css({"-webkit-box-ordinal-group":R,"-moz-box-ordinal-group":R,"-ms-flex-order":R,"-webkit-order":R,order:R})}else"column"===r.slidesPerColumnFill?(I=N-(A=Math.floor(N/_))*_,(A&gt;j||A===j&amp;&amp;I===_-1)&amp;&amp;(I+=1)&gt;=_&amp;&amp;(I=0,A+=1)):A=N-(I=Math.floor(N/L))*L;M.css(t("margin-top"),0!==I?r.spaceBetween&amp;&amp;r.spaceBetween+"px":"")}if("none"!==M.css("display")){if("auto"===r.slidesPerView){var F=getComputedStyle(M[0]),$=M[0].style.transform,V=M[0].style.webkitTransform;if($&amp;&amp;(M[0].style.transform="none"),V&amp;&amp;(M[0].style.webkitTransform="none"),r.roundLengths)E=e.isHorizontal()?M.outerWidth(!0):M.outerHeight(!0);else{var H=n(F,"width"),U=n(F,"padding-left"),W=n(F,"padding-right"),q=n(F,"margin-left"),G=n(F,"margin-right"),K=F.getPropertyValue("box-sizing");if(K&amp;&amp;"border-box"===K)E=H+q+G;else{var Y=M[0],X=Y.clientWidth;E=H+U+W+q+G+(Y.offsetWidth-X)}}$&amp;&amp;(M[0].style.transform=$),V&amp;&amp;(M[0].style.webkitTransform=V),r.roundLengths&amp;&amp;(E=Math.floor(E))}else E=(a-(r.slidesPerView-1)*b)/r.slidesPerView,r.roundLengths&amp;&amp;(E=Math.floor(E)),c[N]&amp;&amp;(c[N].style[t("width")]=E+"px");c[N]&amp;&amp;(c[N].swiperSlideSize=E),h.push(E),r.centeredSlides?(w=w+E/2+S/2+b,0===S&amp;&amp;0!==N&amp;&amp;(w=w-a/2-b),0===N&amp;&amp;(w=w-a/2-b),Math.abs(w)&lt;.001&amp;&amp;(w=0),r.roundLengths&amp;&amp;(w=Math.floor(w)),k%r.slidesPerGroup==0&amp;&amp;d.push(w),p.push(w)):(r.roundLengths&amp;&amp;(w=Math.floor(w)),(k-Math.min(e.params.slidesPerGroupSkip,k))%e.params.slidesPerGroup==0&amp;&amp;d.push(w),p.push(w),w=w+E+b),e.virtualSize+=E+b,S=E,k+=1}}if(e.virtualSize=Math.max(e.virtualSize,a)+y,i&amp;&amp;l&amp;&amp;("slide"===r.effect||"coverflow"===r.effect)&amp;&amp;o.css({width:e.virtualSize+r.spaceBetween+"px"}),r.setWrapperSize&amp;&amp;o.css(((O={})[t("width")]=e.virtualSize+r.spaceBetween+"px",O)),r.slidesPerColumn&gt;1&amp;&amp;(e.virtualSize=(E+r.spaceBetween)*x,e.virtualSize=Math.ceil(e.virtualSize/r.slidesPerColumn)-r.spaceBetween,o.css(((T={})[t("width")]=e.virtualSize+r.spaceBetween+"px",T)),r.centeredSlides)){P=[];for(var Q=0;Q&lt;d.length;Q+=1){var Z=d[Q];r.roundLengths&amp;&amp;(Z=Math.floor(Z)),d[Q]&lt;e.virtualSize+d[0]&amp;&amp;P.push(Z)}d=P}if(!r.centeredSlides){P=[];for(var J=0;J&lt;d.length;J+=1){var ee=d[J];r.roundLengths&amp;&amp;(ee=Math.floor(ee)),d[J]&lt;=e.virtualSize-a&amp;&amp;P.push(ee)}d=P,Math.floor(e.virtualSize-a)-Math.floor(d[d.length-1])&gt;1&amp;&amp;d.push(e.virtualSize-a)}if(0===d.length&amp;&amp;(d=[0]),0!==r.spaceBetween){var te,ne=e.isHorizontal()&amp;&amp;i?"marginLeft":t("marginRight");c.filter((function(e,t){return!r.cssMode||t!==c.length-1})).css(((te={})[ne]=b+"px",te))}if(r.centeredSlides&amp;&amp;r.centeredSlidesBounds){var re=0;h.forEach((function(e){re+=e+(r.spaceBetween?r.spaceBetween:0)}));var oe=(re-=r.spaceBetween)-a;d=d.map((function(e){return e&lt;0?-m:e&gt;oe?oe+y:e}))}if(r.centerInsufficientSlides){var ae=0;if(h.forEach((function(e){ae+=e+(r.spaceBetween?r.spaceBetween:0)})),(ae-=r.spaceBetween)&lt;a){var ie=(a-ae)/2;d.forEach((function(e,t){d[t]=e-ie})),p.forEach((function(e,t){p[t]=e+ie}))}}C(e,{slides:c,snapGrid:d,slidesGrid:p,slidesSizesGrid:h}),f!==u&amp;&amp;e.emit("slidesLengthChange"),d.length!==v&amp;&amp;(e.params.watchOverflow&amp;&amp;e.checkOverflow(),e.emit("snapGridLengthChange")),p.length!==g&amp;&amp;e.emit("slidesGridLengthChange"),(r.watchSlidesProgress||r.watchSlidesVisibility)&amp;&amp;e.updateSlidesOffset()}},updateAutoHeight:function(e){var t,n=this,r=[],o=n.virtual&amp;&amp;n.params.virtual.enabled,a=0;"number"==typeof e?n.setTransition(e):!0===e&amp;&amp;n.setTransition(n.params.speed);var i=function(e){return o?n.slides.filter((function(t){return parseInt(t.getAttribute("data-swiper-slide-index"),10)===e}))[0]:n.slides.eq(e)[0]};if("auto"!==n.params.slidesPerView&amp;&amp;n.params.slidesPerView&gt;1)if(n.params.centeredSlides)n.visibleSlides.each((function(e){r.push(e)}));else for(t=0;t&lt;Math.ceil(n.params.slidesPerView);t+=1){var l=n.activeIndex+t;if(l&gt;n.slides.length&amp;&amp;!o)break;r.push(i(l))}else r.push(i(n.activeIndex));for(t=0;t&lt;r.length;t+=1)if(void 0!==r[t]){var s=r[t].offsetHeight;a=s&gt;a?s:a}a&amp;&amp;n.$wrapperEl.css("height",a+"px")},updateSlidesOffset:function(){for(var e=this.slides,t=0;t&lt;e.length;t+=1)e[t].swiperSlideOffset=this.isHorizontal()?e[t].offsetLeft:e[t].offsetTop},updateSlidesProgress:function(e){void 0===e&amp;&amp;(e=this&amp;&amp;this.translate||0);var t=this,n=t.params,r=t.slides,o=t.rtlTranslate;if(0!==r.length){void 0===r[0].swiperSlideOffset&amp;&amp;t.updateSlidesOffset();var a=-e;o&amp;&amp;(a=e),r.removeClass(n.slideVisibleClass),t.visibleSlidesIndexes=[],t.visibleSlides=[];for(var i=0;i&lt;r.length;i+=1){var l=r[i],s=(a+(n.centeredSlides?t.minTranslate():0)-l.swiperSlideOffset)/(l.swiperSlideSize+n.spaceBetween);if(n.watchSlidesVisibility||n.centeredSlides&amp;&amp;n.autoHeight){var u=-(a-l.swiperSlideOffset),c=u+t.slidesSizesGrid[i];(u&gt;=0&amp;&amp;u&lt;t.size-1||c&gt;1&amp;&amp;c&lt;=t.size||u&lt;=0&amp;&amp;c&gt;=t.size)&amp;&amp;(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(i),r.eq(i).addClass(n.slideVisibleClass))}l.progress=o?-s:s}t.visibleSlides=S(t.visibleSlides)}},updateProgress:function(e){var t=this;if(void 0===e){var n=t.rtlTranslate?-1:1;e=t&amp;&amp;t.translate&amp;&amp;t.translate*n||0}var r=t.params,o=t.maxTranslate()-t.minTranslate(),a=t.progress,i=t.isBeginning,l=t.isEnd,s=i,u=l;0===o?(a=0,i=!0,l=!0):(i=(a=(e-t.minTranslate())/o)&lt;=0,l=a&gt;=1),C(t,{progress:a,isBeginning:i,isEnd:l}),(r.watchSlidesProgress||r.watchSlidesVisibility||r.centeredSlides&amp;&amp;r.autoHeight)&amp;&amp;t.updateSlidesProgress(e),i&amp;&amp;!s&amp;&amp;t.emit("reachBeginning toEdge"),l&amp;&amp;!u&amp;&amp;t.emit("reachEnd toEdge"),(s&amp;&amp;!i||u&amp;&amp;!l)&amp;&amp;t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){var e,t=this,n=t.slides,r=t.params,o=t.$wrapperEl,a=t.activeIndex,i=t.realIndex,l=t.virtual&amp;&amp;r.virtual.enabled;n.removeClass(r.slideActiveClass+" "+r.slideNextClass+" "+r.slidePrevClass+" "+r.slideDuplicateActiveClass+" "+r.slideDuplicateNextClass+" "+r.slideDuplicatePrevClass),(e=l?t.$wrapperEl.find("."+r.slideClass+'[data-swiper-slide-index="'+a+'"]'):n.eq(a)).addClass(r.slideActiveClass),r.loop&amp;&amp;(e.hasClass(r.slideDuplicateClass)?o.children("."+r.slideClass+":not(."+r.slideDuplicateClass+')[data-swiper-slide-index="'+i+'"]').addClass(r.slideDuplicateActiveClass):o.children("."+r.slideClass+"."+r.slideDuplicateClass+'[data-swiper-slide-index="'+i+'"]').addClass(r.slideDuplicateActiveClass));var s=e.nextAll("."+r.slideClass).eq(0).addClass(r.slideNextClass);r.loop&amp;&amp;0===s.length&amp;&amp;(s=n.eq(0)).addClass(r.slideNextClass);var u=e.prevAll("."+r.slideClass).eq(0).addClass(r.slidePrevClass);r.loop&amp;&amp;0===u.length&amp;&amp;(u=n.eq(-1)).addClass(r.slidePrevClass),r.loop&amp;&amp;(s.hasClass(r.slideDuplicateClass)?o.children("."+r.slideClass+":not(."+r.slideDuplicateClass+')[data-swiper-slide-index="'+s.attr("data-swiper-slide-index")+'"]').addClass(r.slideDuplicateNextClass):o.children("."+r.slideClass+"."+r.slideDuplicateClass+'[data-swiper-slide-index="'+s.attr("data-swiper-slide-index")+'"]').addClass(r.slideDuplicateNextClass),u.hasClass(r.slideDuplicateClass)?o.children("."+r.slideClass+":not(."+r.slideDuplicateClass+')[data-swiper-slide-index="'+u.attr("data-swiper-slide-index")+'"]').addClass(r.slideDuplicatePrevClass):o.children("."+r.slideClass+"."+r.slideDuplicateClass+'[data-swiper-slide-index="'+u.attr("data-swiper-slide-index")+'"]').addClass(r.slideDuplicatePrevClass)),t.emitSlidesClasses()},updateActiveIndex:function(e){var t,n=this,r=n.rtlTranslate?n.translate:-n.translate,o=n.slidesGrid,a=n.snapGrid,i=n.params,l=n.activeIndex,s=n.realIndex,u=n.snapIndex,c=e;if(void 0===c){for(var f=0;f&lt;o.length;f+=1)void 0!==o[f+1]?r&gt;=o[f]&amp;&amp;r&lt;o[f+1]-(o[f+1]-o[f])/2?c=f:r&gt;=o[f]&amp;&amp;r&lt;o[f+1]&amp;&amp;(c=f+1):r&gt;=o[f]&amp;&amp;(c=f);i.normalizeSlideIndex&amp;&amp;(c&lt;0||void 0===c)&amp;&amp;(c=0)}if(a.indexOf(r)&gt;=0)t=a.indexOf(r);else{var d=Math.min(i.slidesPerGroupSkip,c);t=d+Math.floor((c-d)/i.slidesPerGroup)}if(t&gt;=a.length&amp;&amp;(t=a.length-1),c!==l){var p=parseInt(n.slides.eq(c).attr("data-swiper-slide-index")||c,10);C(n,{snapIndex:t,realIndex:p,previousIndex:l,activeIndex:c}),n.emit("activeIndexChange"),n.emit("snapIndexChange"),s!==p&amp;&amp;n.emit("realIndexChange"),(n.initialized||n.params.runCallbacksOnInit)&amp;&amp;n.emit("slideChange")}else t!==u&amp;&amp;(n.snapIndex=t,n.emit("snapIndexChange"))},updateClickedSlide:function(e){var t,n=this,r=n.params,o=S(e.target).closest("."+r.slideClass)[0],a=!1;if(o)for(var i=0;i&lt;n.slides.length;i+=1)if(n.slides[i]===o){a=!0,t=i;break}if(!o||!a)return n.clickedSlide=void 0,void(n.clickedIndex=void 0);n.clickedSlide=o,n.virtual&amp;&amp;n.params.virtual.enabled?n.clickedIndex=parseInt(S(o).attr("data-swiper-slide-index"),10):n.clickedIndex=t,r.slideToClickedSlide&amp;&amp;void 0!==n.clickedIndex&amp;&amp;n.clickedIndex!==n.activeIndex&amp;&amp;n.slideToClickedSlide()}},V={slideTo:function(e,t,n,r,o){if(void 0===e&amp;&amp;(e=0),void 0===t&amp;&amp;(t=this.params.speed),void 0===n&amp;&amp;(n=!0),"number"!=typeof e&amp;&amp;"string"!=typeof e)throw new Error("The 'index' argument cannot have type other than 'number' or 'string'. ["+typeof e+"] given.");if("string"==typeof e){var a=parseInt(e,10);if(!isFinite(a))throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. ["+e+"] given.");e=a}var i=this,l=e;l&lt;0&amp;&amp;(l=0);var s=i.params,u=i.snapGrid,c=i.slidesGrid,f=i.previousIndex,d=i.activeIndex,p=i.rtlTranslate,h=i.wrapperEl,m=i.enabled;if(i.animating&amp;&amp;s.preventInteractionOnTransition||!m&amp;&amp;!r&amp;&amp;!o)return!1;var y=Math.min(i.params.slidesPerGroupSkip,l),v=y+Math.floor((l-y)/i.params.slidesPerGroup);v&gt;=u.length&amp;&amp;(v=u.length-1),(d||s.initialSlide||0)===(f||0)&amp;&amp;n&amp;&amp;i.emit("beforeSlideChangeStart");var g,b=-u[v];if(i.updateProgress(b),s.normalizeSlideIndex)for(var w=0;w&lt;c.length;w+=1){var S=-Math.floor(100*b),k=Math.floor(100*c[w]),x=Math.floor(100*c[w+1]);void 0!==c[w+1]?S&gt;=k&amp;&amp;S&lt;x-(x-k)/2?l=w:S&gt;=k&amp;&amp;S&lt;x&amp;&amp;(l=w+1):S&gt;=k&amp;&amp;(l=w)}if(i.initialized&amp;&amp;l!==d){if(!i.allowSlideNext&amp;&amp;b&lt;i.translate&amp;&amp;b&lt;i.minTranslate())return!1;if(!i.allowSlidePrev&amp;&amp;b&gt;i.translate&amp;&amp;b&gt;i.maxTranslate()&amp;&amp;(d||0)!==l)return!1}if(g=l&gt;d?"next":l&lt;d?"prev":"reset",p&amp;&amp;-b===i.translate||!p&amp;&amp;b===i.translate)return i.updateActiveIndex(l),s.autoHeight&amp;&amp;i.updateAutoHeight(),i.updateSlidesClasses(),"slide"!==s.effect&amp;&amp;i.setTranslate(b),"reset"!==g&amp;&amp;(i.transitionStart(n,g),i.transitionEnd(n,g)),!1;if(s.cssMode){var E,P=i.isHorizontal(),C=-b;return p&amp;&amp;(C=h.scrollWidth-h.offsetWidth-C),0===t?h[P?"scrollLeft":"scrollTop"]=C:h.scrollTo?h.scrollTo(((E={})[P?"left":"top"]=C,E.behavior="smooth",E)):h[P?"scrollLeft":"scrollTop"]=C,!0}return 0===t?(i.setTransition(0),i.setTranslate(b),i.updateActiveIndex(l),i.updateSlidesClasses(),i.emit("beforeTransitionStart",t,r),i.transitionStart(n,g),i.transitionEnd(n,g)):(i.setTransition(t),i.setTranslate(b),i.updateActiveIndex(l),i.updateSlidesClasses(),i.emit("beforeTransitionStart",t,r),i.transitionStart(n,g),i.animating||(i.animating=!0,i.onSlideToWrapperTransitionEnd||(i.onSlideToWrapperTransitionEnd=function(e){i&amp;&amp;!i.destroyed&amp;&amp;e.target===this&amp;&amp;(i.$wrapperEl[0].removeEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.$wrapperEl[0].removeEventListener("webkitTransitionEnd",i.onSlideToWrapperTransitionEnd),i.onSlideToWrapperTransitionEnd=null,delete i.onSlideToWrapperTransitionEnd,i.transitionEnd(n,g))}),i.$wrapperEl[0].addEventListener("transitionend",i.onSlideToWrapperTransitionEnd),i.$wrapperEl[0].addEventListener("webkitTransitionEnd",i.onSlideToWrapperTransitionEnd))),!0},slideToLoop:function(e,t,n,r){void 0===e&amp;&amp;(e=0),void 0===t&amp;&amp;(t=this.params.speed),void 0===n&amp;&amp;(n=!0);var o=this,a=e;return o.params.loop&amp;&amp;(a+=o.loopedSlides),o.slideTo(a,t,n,r)},slideNext:function(e,t,n){void 0===e&amp;&amp;(e=this.params.speed),void 0===t&amp;&amp;(t=!0);var r=this,o=r.params,a=r.animating;if(!r.enabled)return r;var i=r.activeIndex&lt;o.slidesPerGroupSkip?1:o.slidesPerGroup;if(o.loop){if(a&amp;&amp;o.loopPreventsSlide)return!1;r.loopFix(),r._clientLeft=r.$wrapperEl[0].clientLeft}return r.slideTo(r.activeIndex+i,e,t,n)},slidePrev:function(e,t,n){void 0===e&amp;&amp;(e=this.params.speed),void 0===t&amp;&amp;(t=!0);var r=this,o=r.params,a=r.animating,i=r.snapGrid,l=r.slidesGrid,s=r.rtlTranslate;if(!r.enabled)return r;if(o.loop){if(a&amp;&amp;o.loopPreventsSlide)return!1;r.loopFix(),r._clientLeft=r.$wrapperEl[0].clientLeft}function u(e){return e&lt;0?-Math.floor(Math.abs(e)):Math.floor(e)}var c,f=u(s?r.translate:-r.translate),d=i.map((function(e){return u(e)})),p=i[d.indexOf(f)-1];return void 0===p&amp;&amp;o.cssMode&amp;&amp;i.forEach((function(e){!p&amp;&amp;f&gt;=e&amp;&amp;(p=e)})),void 0!==p&amp;&amp;(c=l.indexOf(p))&lt;0&amp;&amp;(c=r.activeIndex-1),r.slideTo(c,e,t,n)},slideReset:function(e,t,n){return void 0===e&amp;&amp;(e=this.params.speed),void 0===t&amp;&amp;(t=!0),this.slideTo(this.activeIndex,e,t,n)},slideToClosest:function(e,t,n,r){void 0===e&amp;&amp;(e=this.params.speed),void 0===t&amp;&amp;(t=!0),void 0===r&amp;&amp;(r=.5);var o=this,a=o.activeIndex,i=Math.min(o.params.slidesPerGroupSkip,a),l=i+Math.floor((a-i)/o.params.slidesPerGroup),s=o.rtlTranslate?o.translate:-o.translate;if(s&gt;=o.snapGrid[l]){var u=o.snapGrid[l];s-u&gt;(o.snapGrid[l+1]-u)*r&amp;&amp;(a+=o.params.slidesPerGroup)}else{var c=o.snapGrid[l-1];s-c&lt;=(o.snapGrid[l]-c)*r&amp;&amp;(a-=o.params.slidesPerGroup)}return a=Math.max(a,0),a=Math.min(a,o.slidesGrid.length-1),o.slideTo(a,e,t,n)},slideToClickedSlide:function(){var e,t=this,n=t.params,r=t.$wrapperEl,o="auto"===n.slidesPerView?t.slidesPerViewDynamic():n.slidesPerView,a=t.clickedIndex;if(n.loop){if(t.animating)return;e=parseInt(S(t.clickedSlide).attr("data-swiper-slide-index"),10),n.centeredSlides?a&lt;t.loopedSlides-o/2||a&gt;t.slides.length-t.loopedSlides+o/2?(t.loopFix(),a=r.children("."+n.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+n.slideDuplicateClass+")").eq(0).index(),k((function(){t.slideTo(a)}))):t.slideTo(a):a&gt;t.slides.length-o?(t.loopFix(),a=r.children("."+n.slideClass+'[data-swiper-slide-index="'+e+'"]:not(.'+n.slideDuplicateClass+")").eq(0).index(),k((function(){t.slideTo(a)}))):t.slideTo(a)}else t.slideTo(a)}},H={loopCreate:function(){var e=this,t=i(),n=e.params,r=e.$wrapperEl;r.children("."+n.slideClass+"."+n.slideDuplicateClass).remove();var o=r.children("."+n.slideClass);if(n.loopFillGroupWithBlank){var a=n.slidesPerGroup-o.length%n.slidesPerGroup;if(a!==n.slidesPerGroup){for(var l=0;l&lt;a;l+=1){var s=S(t.createElement("div")).addClass(n.slideClass+" "+n.slideBlankClass);r.append(s)}o=r.children("."+n.slideClass)}}"auto"!==n.slidesPerView||n.loopedSlides||(n.loopedSlides=o.length),e.loopedSlides=Math.ceil(parseFloat(n.loopedSlides||n.slidesPerView,10)),e.loopedSlides+=n.loopAdditionalSlides,e.loopedSlides&gt;o.length&amp;&amp;(e.loopedSlides=o.length);var u=[],c=[];o.each((function(t,n){var r=S(t);n&lt;e.loopedSlides&amp;&amp;c.push(t),n&lt;o.length&amp;&amp;n&gt;=o.length-e.loopedSlides&amp;&amp;u.push(t),r.attr("data-swiper-slide-index",n)}));for(var f=0;f&lt;c.length;f+=1)r.append(S(c[f].cloneNode(!0)).addClass(n.slideDuplicateClass));for(var d=u.length-1;d&gt;=0;d-=1)r.prepend(S(u[d].cloneNode(!0)).addClass(n.slideDuplicateClass))},loopFix:function(){var e=this;e.emit("beforeLoopFix");var t,n=e.activeIndex,r=e.slides,o=e.loopedSlides,a=e.allowSlidePrev,i=e.allowSlideNext,l=e.snapGrid,s=e.rtlTranslate;e.allowSlidePrev=!0,e.allowSlideNext=!0;var u=-l[n]-e.getTranslate();n&lt;o?(t=r.length-3*o+n,t+=o,e.slideTo(t,0,!1,!0)&amp;&amp;0!==u&amp;&amp;e.setTranslate((s?-e.translate:e.translate)-u)):n&gt;=r.length-o&amp;&amp;(t=-r.length+n+o,t+=o,e.slideTo(t,0,!1,!0)&amp;&amp;0!==u&amp;&amp;e.setTranslate((s?-e.translate:e.translate)-u)),e.allowSlidePrev=a,e.allowSlideNext=i,e.emit("loopFix")},loopDestroy:function(){var e=this,t=e.$wrapperEl,n=e.params,r=e.slides;t.children("."+n.slideClass+"."+n.slideDuplicateClass+",."+n.slideClass+"."+n.slideBlankClass).remove(),r.removeAttr("data-swiper-slide-index")}};function U(e){var t=this,n=i(),r=s(),o=t.touchEventsData,a=t.params,l=t.touches;if(t.enabled&amp;&amp;(!t.animating||!a.preventInteractionOnTransition)){var u=e;u.originalEvent&amp;&amp;(u=u.originalEvent);var c=S(u.target);if(("wrapper"!==a.touchEventsTarget||c.closest(t.wrapperEl).length)&amp;&amp;(o.isTouchEvent="touchstart"===u.type,(o.isTouchEvent||!("which"in u)||3!==u.which)&amp;&amp;!(!o.isTouchEvent&amp;&amp;"button"in u&amp;&amp;u.button&gt;0||o.isTouched&amp;&amp;o.isMoved))){a.noSwipingClass&amp;&amp;""!==a.noSwipingClass&amp;&amp;u.target&amp;&amp;u.target.shadowRoot&amp;&amp;e.path&amp;&amp;e.path[0]&amp;&amp;(c=S(e.path[0]));var f=a.noSwipingSelector?a.noSwipingSelector:"."+a.noSwipingClass,d=!(!u.target||!u.target.shadowRoot);if(a.noSwiping&amp;&amp;(d?function(e,t){return void 0===t&amp;&amp;(t=this),function t(n){return n&amp;&amp;n!==i()&amp;&amp;n!==s()?(n.assignedSlot&amp;&amp;(n=n.assignedSlot),n.closest(e)||t(n.getRootNode().host)):null}(t)}(f,u.target):c.closest(f)[0]))t.allowClick=!0;else if(!a.swipeHandler||c.closest(a.swipeHandler)[0]){l.currentX="touchstart"===u.type?u.targetTouches[0].pageX:u.pageX,l.currentY="touchstart"===u.type?u.targetTouches[0].pageY:u.pageY;var p=l.currentX,h=l.currentY,m=a.edgeSwipeDetection||a.iOSEdgeSwipeDetection,y=a.edgeSwipeThreshold||a.iOSEdgeSwipeThreshold;if(m&amp;&amp;(p&lt;=y||p&gt;=r.innerWidth-y)){if("prevent"!==m)return;e.preventDefault()}if(C(o,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),l.startX=p,l.startY=h,o.touchStartTime=x(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,a.threshold&gt;0&amp;&amp;(o.allowThresholdMove=!1),"touchstart"!==u.type){var v=!0;c.is(o.focusableElements)&amp;&amp;(v=!1),n.activeElement&amp;&amp;S(n.activeElement).is(o.focusableElements)&amp;&amp;n.activeElement!==c[0]&amp;&amp;n.activeElement.blur();var g=v&amp;&amp;t.allowTouchMove&amp;&amp;a.touchStartPreventDefault;!a.touchStartForcePreventDefault&amp;&amp;!g||c[0].isContentEditable||u.preventDefault()}t.emit("touchStart",u)}}}}function W(e){var t=i(),n=this,r=n.touchEventsData,o=n.params,a=n.touches,l=n.rtlTranslate;if(n.enabled){var s=e;if(s.originalEvent&amp;&amp;(s=s.originalEvent),r.isTouched){if(!r.isTouchEvent||"touchmove"===s.type){var u="touchmove"===s.type&amp;&amp;s.targetTouches&amp;&amp;(s.targetTouches[0]||s.changedTouches[0]),c="touchmove"===s.type?u.pageX:s.pageX,f="touchmove"===s.type?u.pageY:s.pageY;if(s.preventedByNestedSwiper)return a.startX=c,void(a.startY=f);if(!n.allowTouchMove)return n.allowClick=!1,void(r.isTouched&amp;&amp;(C(a,{startX:c,startY:f,currentX:c,currentY:f}),r.touchStartTime=x()));if(r.isTouchEvent&amp;&amp;o.touchReleaseOnEdges&amp;&amp;!o.loop)if(n.isVertical()){if(f&lt;a.startY&amp;&amp;n.translate&lt;=n.maxTranslate()||f&gt;a.startY&amp;&amp;n.translate&gt;=n.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(c&lt;a.startX&amp;&amp;n.translate&lt;=n.maxTranslate()||c&gt;a.startX&amp;&amp;n.translate&gt;=n.minTranslate())return;if(r.isTouchEvent&amp;&amp;t.activeElement&amp;&amp;s.target===t.activeElement&amp;&amp;S(s.target).is(r.focusableElements))return r.isMoved=!0,void(n.allowClick=!1);if(r.allowTouchCallbacks&amp;&amp;n.emit("touchMove",s),!(s.targetTouches&amp;&amp;s.targetTouches.length&gt;1)){a.currentX=c,a.currentY=f;var d,p=a.currentX-a.startX,h=a.currentY-a.startY;if(!(n.params.threshold&amp;&amp;Math.sqrt(Math.pow(p,2)+Math.pow(h,2))&lt;n.params.threshold))if(void 0===r.isScrolling&amp;&amp;(n.isHorizontal()&amp;&amp;a.currentY===a.startY||n.isVertical()&amp;&amp;a.currentX===a.startX?r.isScrolling=!1:p*p+h*h&gt;=25&amp;&amp;(d=180*Math.atan2(Math.abs(h),Math.abs(p))/Math.PI,r.isScrolling=n.isHorizontal()?d&gt;o.touchAngle:90-d&gt;o.touchAngle)),r.isScrolling&amp;&amp;n.emit("touchMoveOpposite",s),void 0===r.startMoving&amp;&amp;(a.currentX===a.startX&amp;&amp;a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling)r.isTouched=!1;else if(r.startMoving){n.allowClick=!1,!o.cssMode&amp;&amp;s.cancelable&amp;&amp;s.preventDefault(),o.touchMoveStopPropagation&amp;&amp;!o.nested&amp;&amp;s.stopPropagation(),r.isMoved||(o.loop&amp;&amp;n.loopFix(),r.startTranslate=n.getTranslate(),n.setTransition(0),n.animating&amp;&amp;n.$wrapperEl.trigger("webkitTransitionEnd transitionend"),r.allowMomentumBounce=!1,!o.grabCursor||!0!==n.allowSlideNext&amp;&amp;!0!==n.allowSlidePrev||n.setGrabCursor(!0),n.emit("sliderFirstMove",s)),n.emit("sliderMove",s),r.isMoved=!0;var m=n.isHorizontal()?p:h;a.diff=m,m*=o.touchRatio,l&amp;&amp;(m=-m),n.swipeDirection=m&gt;0?"prev":"next",r.currentTranslate=m+r.startTranslate;var y=!0,v=o.resistanceRatio;if(o.touchReleaseOnEdges&amp;&amp;(v=0),m&gt;0&amp;&amp;r.currentTranslate&gt;n.minTranslate()?(y=!1,o.resistance&amp;&amp;(r.currentTranslate=n.minTranslate()-1+Math.pow(-n.minTranslate()+r.startTranslate+m,v))):m&lt;0&amp;&amp;r.currentTranslate&lt;n.maxTranslate()&amp;&amp;(y=!1,o.resistance&amp;&amp;(r.currentTranslate=n.maxTranslate()+1-Math.pow(n.maxTranslate()-r.startTranslate-m,v))),y&amp;&amp;(s.preventedByNestedSwiper=!0),!n.allowSlideNext&amp;&amp;"next"===n.swipeDirection&amp;&amp;r.currentTranslate&lt;r.startTranslate&amp;&amp;(r.currentTranslate=r.startTranslate),!n.allowSlidePrev&amp;&amp;"prev"===n.swipeDirection&amp;&amp;r.currentTranslate&gt;r.startTranslate&amp;&amp;(r.currentTranslate=r.startTranslate),n.allowSlidePrev||n.allowSlideNext||(r.currentTranslate=r.startTranslate),o.threshold&gt;0){if(!(Math.abs(m)&gt;o.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=n.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}o.followFinger&amp;&amp;!o.cssMode&amp;&amp;((o.freeMode||o.watchSlidesProgress||o.watchSlidesVisibility)&amp;&amp;(n.updateActiveIndex(),n.updateSlidesClasses()),o.freeMode&amp;&amp;(0===r.velocities.length&amp;&amp;r.velocities.push({position:a[n.isHorizontal()?"startX":"startY"],time:r.touchStartTime}),r.velocities.push({position:a[n.isHorizontal()?"currentX":"currentY"],time:x()})),n.updateProgress(r.currentTranslate),n.setTranslate(r.currentTranslate))}}}}else r.startMoving&amp;&amp;r.isScrolling&amp;&amp;n.emit("touchMoveOpposite",s)}}function q(e){var t=this,n=t.touchEventsData,r=t.params,o=t.touches,a=t.rtlTranslate,i=t.$wrapperEl,l=t.slidesGrid,s=t.snapGrid;if(t.enabled){var u=e;if(u.originalEvent&amp;&amp;(u=u.originalEvent),n.allowTouchCallbacks&amp;&amp;t.emit("touchEnd",u),n.allowTouchCallbacks=!1,!n.isTouched)return n.isMoved&amp;&amp;r.grabCursor&amp;&amp;t.setGrabCursor(!1),n.isMoved=!1,void(n.startMoving=!1);r.grabCursor&amp;&amp;n.isMoved&amp;&amp;n.isTouched&amp;&amp;(!0===t.allowSlideNext||!0===t.allowSlidePrev)&amp;&amp;t.setGrabCursor(!1);var c,f=x(),d=f-n.touchStartTime;if(t.allowClick&amp;&amp;(t.updateClickedSlide(u),t.emit("tap click",u),d&lt;300&amp;&amp;f-n.lastClickTime&lt;300&amp;&amp;t.emit("doubleTap doubleClick",u)),n.lastClickTime=x(),k((function(){t.destroyed||(t.allowClick=!0)})),!n.isTouched||!n.isMoved||!t.swipeDirection||0===o.diff||n.currentTranslate===n.startTranslate)return n.isTouched=!1,n.isMoved=!1,void(n.startMoving=!1);if(n.isTouched=!1,n.isMoved=!1,n.startMoving=!1,c=r.followFinger?a?t.translate:-t.translate:-n.currentTranslate,!r.cssMode)if(r.freeMode){if(c&lt;-t.minTranslate())return void t.slideTo(t.activeIndex);if(c&gt;-t.maxTranslate())return void(t.slides.length&lt;s.length?t.slideTo(s.length-1):t.slideTo(t.slides.length-1));if(r.freeModeMomentum){if(n.velocities.length&gt;1){var p=n.velocities.pop(),h=n.velocities.pop(),m=p.position-h.position,y=p.time-h.time;t.velocity=m/y,t.velocity/=2,Math.abs(t.velocity)&lt;r.freeModeMinimumVelocity&amp;&amp;(t.velocity=0),(y&gt;150||x()-p.time&gt;300)&amp;&amp;(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeModeMomentumVelocityRatio,n.velocities.length=0;var v=1e3*r.freeModeMomentumRatio,g=t.velocity*v,b=t.translate+g;a&amp;&amp;(b=-b);var w,S,E=!1,P=20*Math.abs(t.velocity)*r.freeModeMomentumBounceRatio;if(b&lt;t.maxTranslate())r.freeModeMomentumBounce?(b+t.maxTranslate()&lt;-P&amp;&amp;(b=t.maxTranslate()-P),w=t.maxTranslate(),E=!0,n.allowMomentumBounce=!0):b=t.maxTranslate(),r.loop&amp;&amp;r.centeredSlides&amp;&amp;(S=!0);else if(b&gt;t.minTranslate())r.freeModeMomentumBounce?(b-t.minTranslate()&gt;P&amp;&amp;(b=t.minTranslate()+P),w=t.minTranslate(),E=!0,n.allowMomentumBounce=!0):b=t.minTranslate(),r.loop&amp;&amp;r.centeredSlides&amp;&amp;(S=!0);else if(r.freeModeSticky){for(var C,O=0;O&lt;s.length;O+=1)if(s[O]&gt;-b){C=O;break}b=-(b=Math.abs(s[C]-b)&lt;Math.abs(s[C-1]-b)||"next"===t.swipeDirection?s[C]:s[C-1])}if(S&amp;&amp;t.once("transitionEnd",(function(){t.loopFix()})),0!==t.velocity){if(v=a?Math.abs((-b-t.translate)/t.velocity):Math.abs((b-t.translate)/t.velocity),r.freeModeSticky){var T=Math.abs((a?-b:b)-t.translate),_=t.slidesSizesGrid[t.activeIndex];v=T&lt;_?r.speed:T&lt;2*_?1.5*r.speed:2.5*r.speed}}else if(r.freeModeSticky)return void t.slideToClosest();r.freeModeMomentumBounce&amp;&amp;E?(t.updateProgress(w),t.setTransition(v),t.setTranslate(b),t.transitionStart(!0,t.swipeDirection),t.animating=!0,i.transitionEnd((function(){t&amp;&amp;!t.destroyed&amp;&amp;n.allowMomentumBounce&amp;&amp;(t.emit("momentumBounce"),t.setTransition(r.speed),setTimeout((function(){t.setTranslate(w),i.transitionEnd((function(){t&amp;&amp;!t.destroyed&amp;&amp;t.transitionEnd()}))}),0))}))):t.velocity?(t.updateProgress(b),t.setTransition(v),t.setTranslate(b),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,i.transitionEnd((function(){t&amp;&amp;!t.destroyed&amp;&amp;t.transitionEnd()})))):(t.emit("_freeModeNoMomentumRelease"),t.updateProgress(b)),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeModeSticky)return void t.slideToClosest();r.freeMode&amp;&amp;t.emit("_freeModeNoMomentumRelease")}(!r.freeModeMomentum||d&gt;=r.longSwipesMs)&amp;&amp;(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}else{for(var L=0,j=t.slidesSizesGrid[0],N=0;N&lt;l.length;N+=N&lt;r.slidesPerGroupSkip?1:r.slidesPerGroup){var M=N&lt;r.slidesPerGroupSkip-1?1:r.slidesPerGroup;void 0!==l[N+M]?c&gt;=l[N]&amp;&amp;c&lt;l[N+M]&amp;&amp;(L=N,j=l[N+M]-l[N]):c&gt;=l[N]&amp;&amp;(L=N,j=l[l.length-1]-l[l.length-2])}var R=(c-l[L])/j,A=L&lt;r.slidesPerGroupSkip-1?1:r.slidesPerGroup;if(d&gt;r.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&amp;&amp;(R&gt;=r.longSwipesRatio?t.slideTo(L+A):t.slideTo(L)),"prev"===t.swipeDirection&amp;&amp;(R&gt;1-r.longSwipesRatio?t.slideTo(L+A):t.slideTo(L))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);!t.navigation||u.target!==t.navigation.nextEl&amp;&amp;u.target!==t.navigation.prevEl?("next"===t.swipeDirection&amp;&amp;t.slideTo(L+A),"prev"===t.swipeDirection&amp;&amp;t.slideTo(L)):u.target===t.navigation.nextEl?t.slideTo(L+A):t.slideTo(L)}}}}function G(){var e=this,t=e.params,n=e.el;if(!n||0!==n.offsetWidth){t.breakpoints&amp;&amp;e.setBreakpoint();var r=e.allowSlideNext,o=e.allowSlidePrev,a=e.snapGrid;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses(),("auto"===t.slidesPerView||t.slidesPerView&gt;1)&amp;&amp;e.isEnd&amp;&amp;!e.isBeginning&amp;&amp;!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0),e.autoplay&amp;&amp;e.autoplay.running&amp;&amp;e.autoplay.paused&amp;&amp;e.autoplay.run(),e.allowSlidePrev=o,e.allowSlideNext=r,e.params.watchOverflow&amp;&amp;a!==e.snapGrid&amp;&amp;e.checkOverflow()}}function K(e){var t=this;t.enabled&amp;&amp;(t.allowClick||(t.params.preventClicks&amp;&amp;e.preventDefault(),t.params.preventClicksPropagation&amp;&amp;t.animating&amp;&amp;(e.stopPropagation(),e.stopImmediatePropagation())))}function Y(){var e=this,t=e.wrapperEl,n=e.rtlTranslate;if(e.enabled){e.previousTranslate=e.translate,e.isHorizontal()?e.translate=n?t.scrollWidth-t.offsetWidth-t.scrollLeft:-t.scrollLeft:e.translate=-t.scrollTop,-0===e.translate&amp;&amp;(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();var r=e.maxTranslate()-e.minTranslate();(0===r?0:(e.translate-e.minTranslate())/r)!==e.progress&amp;&amp;e.updateProgress(n?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}}var X=!1;function Q(){}const Z={attachEvents:function(){var e=this,t=i(),n=e.params,r=e.touchEvents,o=e.el,a=e.wrapperEl,l=e.device,s=e.support;e.onTouchStart=U.bind(e),e.onTouchMove=W.bind(e),e.onTouchEnd=q.bind(e),n.cssMode&amp;&amp;(e.onScroll=Y.bind(e)),e.onClick=K.bind(e);var u=!!n.nested;if(!s.touch&amp;&amp;s.pointerEvents)o.addEventListener(r.start,e.onTouchStart,!1),t.addEventListener(r.move,e.onTouchMove,u),t.addEventListener(r.end,e.onTouchEnd,!1);else{if(s.touch){var c=!("touchstart"!==r.start||!s.passiveListener||!n.passiveListeners)&amp;&amp;{passive:!0,capture:!1};o.addEventListener(r.start,e.onTouchStart,c),o.addEventListener(r.move,e.onTouchMove,s.passiveListener?{passive:!1,capture:u}:u),o.addEventListener(r.end,e.onTouchEnd,c),r.cancel&amp;&amp;o.addEventListener(r.cancel,e.onTouchEnd,c),X||(t.addEventListener("touchstart",Q),X=!0)}(n.simulateTouch&amp;&amp;!l.ios&amp;&amp;!l.android||n.simulateTouch&amp;&amp;!s.touch&amp;&amp;l.ios)&amp;&amp;(o.addEventListener("mousedown",e.onTouchStart,!1),t.addEventListener("mousemove",e.onTouchMove,u),t.addEventListener("mouseup",e.onTouchEnd,!1))}(n.preventClicks||n.preventClicksPropagation)&amp;&amp;o.addEventListener("click",e.onClick,!0),n.cssMode&amp;&amp;a.addEventListener("scroll",e.onScroll),n.updateOnWindowResize?e.on(l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",G,!0):e.on("observerUpdate",G,!0)},detachEvents:function(){var e=this,t=i(),n=e.params,r=e.touchEvents,o=e.el,a=e.wrapperEl,l=e.device,s=e.support,u=!!n.nested;if(!s.touch&amp;&amp;s.pointerEvents)o.removeEventListener(r.start,e.onTouchStart,!1),t.removeEventListener(r.move,e.onTouchMove,u),t.removeEventListener(r.end,e.onTouchEnd,!1);else{if(s.touch){var c=!("onTouchStart"!==r.start||!s.passiveListener||!n.passiveListeners)&amp;&amp;{passive:!0,capture:!1};o.removeEventListener(r.start,e.onTouchStart,c),o.removeEventListener(r.move,e.onTouchMove,u),o.removeEventListener(r.end,e.onTouchEnd,c),r.cancel&amp;&amp;o.removeEventListener(r.cancel,e.onTouchEnd,c)}(n.simulateTouch&amp;&amp;!l.ios&amp;&amp;!l.android||n.simulateTouch&amp;&amp;!s.touch&amp;&amp;l.ios)&amp;&amp;(o.removeEventListener("mousedown",e.onTouchStart,!1),t.removeEventListener("mousemove",e.onTouchMove,u),t.removeEventListener("mouseup",e.onTouchEnd,!1))}(n.preventClicks||n.preventClicksPropagation)&amp;&amp;o.removeEventListener("click",e.onClick,!0),n.cssMode&amp;&amp;a.removeEventListener("scroll",e.onScroll),e.off(l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",G)}},J={addClasses:function(){var e,t,n,r=this,o=r.classNames,a=r.params,i=r.rtl,l=r.$el,s=r.device,u=r.support,c=(e=["initialized",a.direction,{"pointer-events":u.pointerEvents&amp;&amp;!u.touch},{"free-mode":a.freeMode},{autoheight:a.autoHeight},{rtl:i},{multirow:a.slidesPerColumn&gt;1},{"multirow-column":a.slidesPerColumn&gt;1&amp;&amp;"column"===a.slidesPerColumnFill},{android:s.android},{ios:s.ios},{"css-mode":a.cssMode}],t=a.containerModifierClass,n=[],e.forEach((function(e){"object"==typeof e?Object.keys(e).forEach((function(r){e[r]&amp;&amp;n.push(t+r)})):"string"==typeof e&amp;&amp;n.push(t+e)})),n);o.push.apply(o,c),l.addClass([].concat(o).join(" ")),r.emitContainerClasses()},removeClasses:function(){var e=this,t=e.$el,n=e.classNames;t.removeClass(n.join(" ")),e.emitContainerClasses()}},ee={init:!0,direction:"horizontal",touchEventsTarget:"container",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!1,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,freeMode:!1,freeModeMomentum:!0,freeModeMomentumRatio:1,freeModeMomentumBounce:!0,freeModeMomentumBounceRatio:1,freeModeMomentumVelocityRatio:1,freeModeSticky:!1,freeModeMinimumVelocity:.02,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerColumn:1,slidesPerColumnFill:"column",slidesPerGroup:1,slidesPerGroupSkip:0,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!1,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:0,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,watchSlidesVisibility:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,preloadImages:!0,updateOnImagesReady:!0,loop:!1,loopAdditionalSlides:0,loopedSlides:null,loopFillGroupWithBlank:!1,loopPreventsSlide:!0,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,containerModifierClass:"swiper-container-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-invisible-blank",slideActiveClass:"swiper-slide-active",slideDuplicateActiveClass:"swiper-slide-duplicate-active",slideVisibleClass:"swiper-slide-visible",slideDuplicateClass:"swiper-slide-duplicate",slideNextClass:"swiper-slide-next",slideDuplicateNextClass:"swiper-slide-duplicate-next",slidePrevClass:"swiper-slide-prev",slideDuplicatePrevClass:"swiper-slide-duplicate-prev",wrapperClass:"swiper-wrapper",runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}var ne={modular:{useParams:function(e){var t=this;t.modules&amp;&amp;Object.keys(t.modules).forEach((function(n){var r=t.modules[n];r.params&amp;&amp;C(e,r.params)}))},useModules:function(e){void 0===e&amp;&amp;(e={});var t=this;t.modules&amp;&amp;Object.keys(t.modules).forEach((function(n){var r=t.modules[n],o=e[n]||{};r.on&amp;&amp;t.on&amp;&amp;Object.keys(r.on).forEach((function(e){t.on(e,r.on[e])})),r.create&amp;&amp;r.create.bind(t)(o)}))}},eventsEmitter:F,update:$,translate:{getTranslate:function(e){void 0===e&amp;&amp;(e=this.isHorizontal()?"x":"y");var t=this,n=t.params,r=t.rtlTranslate,o=t.translate,a=t.$wrapperEl;if(n.virtualTranslate)return r?-o:o;if(n.cssMode)return o;var i=function(e,t){void 0===t&amp;&amp;(t="x");var n,r,o,a=s(),i=function(e){var t,n=s();return n.getComputedStyle&amp;&amp;(t=n.getComputedStyle(e,null)),!t&amp;&amp;e.currentStyle&amp;&amp;(t=e.currentStyle),t||(t=e.style),t}(e);return a.WebKitCSSMatrix?((r=i.transform||i.webkitTransform).split(",").length&gt;6&amp;&amp;(r=r.split(", ").map((function(e){return e.replace(",",".")})).join(", ")),o=new a.WebKitCSSMatrix("none"===r?"":r)):n=(o=i.MozTransform||i.OTransform||i.MsTransform||i.msTransform||i.transform||i.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,")).toString().split(","),"x"===t&amp;&amp;(r=a.WebKitCSSMatrix?o.m41:16===n.length?parseFloat(n[12]):parseFloat(n[4])),"y"===t&amp;&amp;(r=a.WebKitCSSMatrix?o.m42:16===n.length?parseFloat(n[13]):parseFloat(n[5])),r||0}(a[0],e);return r&amp;&amp;(i=-i),i||0},setTranslate:function(e,t){var n=this,r=n.rtlTranslate,o=n.params,a=n.$wrapperEl,i=n.wrapperEl,l=n.progress,s=0,u=0;n.isHorizontal()?s=r?-e:e:u=e,o.roundLengths&amp;&amp;(s=Math.floor(s),u=Math.floor(u)),o.cssMode?i[n.isHorizontal()?"scrollLeft":"scrollTop"]=n.isHorizontal()?-s:-u:o.virtualTranslate||a.transform("translate3d("+s+"px, "+u+"px, 0px)"),n.previousTranslate=n.translate,n.translate=n.isHorizontal()?s:u;var c=n.maxTranslate()-n.minTranslate();(0===c?0:(e-n.minTranslate())/c)!==l&amp;&amp;n.updateProgress(e),n.emit("setTranslate",n.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,n,r,o){void 0===e&amp;&amp;(e=0),void 0===t&amp;&amp;(t=this.params.speed),void 0===n&amp;&amp;(n=!0),void 0===r&amp;&amp;(r=!0);var a=this,i=a.params,l=a.wrapperEl;if(a.animating&amp;&amp;i.preventInteractionOnTransition)return!1;var s,u=a.minTranslate(),c=a.maxTranslate();if(s=r&amp;&amp;e&gt;u?u:r&amp;&amp;e&lt;c?c:e,a.updateProgress(s),i.cssMode){var f,d=a.isHorizontal();return 0===t?l[d?"scrollLeft":"scrollTop"]=-s:l.scrollTo?l.scrollTo(((f={})[d?"left":"top"]=-s,f.behavior="smooth",f)):l[d?"scrollLeft":"scrollTop"]=-s,!0}return 0===t?(a.setTransition(0),a.setTranslate(s),n&amp;&amp;(a.emit("beforeTransitionStart",t,o),a.emit("transitionEnd"))):(a.setTransition(t),a.setTranslate(s),n&amp;&amp;(a.emit("beforeTransitionStart",t,o),a.emit("transitionStart")),a.animating||(a.animating=!0,a.onTranslateToWrapperTransitionEnd||(a.onTranslateToWrapperTransitionEnd=function(e){a&amp;&amp;!a.destroyed&amp;&amp;e.target===this&amp;&amp;(a.$wrapperEl[0].removeEventListener("transitionend",a.onTranslateToWrapperTransitionEnd),a.$wrapperEl[0].removeEventListener("webkitTransitionEnd",a.onTranslateToWrapperTransitionEnd),a.onTranslateToWrapperTransitionEnd=null,delete a.onTranslateToWrapperTransitionEnd,n&amp;&amp;a.emit("transitionEnd"))}),a.$wrapperEl[0].addEventListener("transitionend",a.onTranslateToWrapperTransitionEnd),a.$wrapperEl[0].addEventListener("webkitTransitionEnd",a.onTranslateToWrapperTransitionEnd))),!0}},transition:{setTransition:function(e,t){var n=this;n.params.cssMode||n.$wrapperEl.transition(e),n.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&amp;&amp;(e=!0);var n=this,r=n.activeIndex,o=n.params,a=n.previousIndex;if(!o.cssMode){o.autoHeight&amp;&amp;n.updateAutoHeight();var i=t;if(i||(i=r&gt;a?"next":r&lt;a?"prev":"reset"),n.emit("transitionStart"),e&amp;&amp;r!==a){if("reset"===i)return void n.emit("slideResetTransitionStart");n.emit("slideChangeTransitionStart"),"next"===i?n.emit("slideNextTransitionStart"):n.emit("slidePrevTransitionStart")}}},transitionEnd:function(e,t){void 0===e&amp;&amp;(e=!0);var n=this,r=n.activeIndex,o=n.previousIndex,a=n.params;if(n.animating=!1,!a.cssMode){n.setTransition(0);var i=t;if(i||(i=r&gt;o?"next":r&lt;o?"prev":"reset"),n.emit("transitionEnd"),e&amp;&amp;r!==o){if("reset"===i)return void n.emit("slideResetTransitionEnd");n.emit("slideChangeTransitionEnd"),"next"===i?n.emit("slideNextTransitionEnd"):n.emit("slidePrevTransitionEnd")}}}},slide:V,loop:H,grabCursor:{setGrabCursor:function(e){var t=this;if(!(t.support.touch||!t.params.simulateTouch||t.params.watchOverflow&amp;&amp;t.isLocked||t.params.cssMode)){var n=t.el;n.style.cursor="move",n.style.cursor=e?"-webkit-grabbing":"-webkit-grab",n.style.cursor=e?"-moz-grabbin":"-moz-grab",n.style.cursor=e?"grabbing":"grab"}},unsetGrabCursor:function(){var e=this;e.support.touch||e.params.watchOverflow&amp;&amp;e.isLocked||e.params.cssMode||(e.el.style.cursor="")}},manipulation:{appendSlide:function(e){var t=this,n=t.$wrapperEl,r=t.params;if(r.loop&amp;&amp;t.loopDestroy(),"object"==typeof e&amp;&amp;"length"in e)for(var o=0;o&lt;e.length;o+=1)e[o]&amp;&amp;n.append(e[o]);else n.append(e);r.loop&amp;&amp;t.loopCreate(),r.observer&amp;&amp;t.support.observer||t.update()},prependSlide:function(e){var t=this,n=t.params,r=t.$wrapperEl,o=t.activeIndex;n.loop&amp;&amp;t.loopDestroy();var a=o+1;if("object"==typeof e&amp;&amp;"length"in e){for(var i=0;i&lt;e.length;i+=1)e[i]&amp;&amp;r.prepend(e[i]);a=o+e.length}else r.prepend(e);n.loop&amp;&amp;t.loopCreate(),n.observer&amp;&amp;t.support.observer||t.update(),t.slideTo(a,0,!1)},addSlide:function(e,t){var n=this,r=n.$wrapperEl,o=n.params,a=n.activeIndex;o.loop&amp;&amp;(a-=n.loopedSlides,n.loopDestroy(),n.slides=r.children("."+o.slideClass));var i=n.slides.length;if(e&lt;=0)n.prependSlide(t);else if(e&gt;=i)n.appendSlide(t);else{for(var l=a&gt;e?a+1:a,s=[],u=i-1;u&gt;=e;u-=1){var c=n.slides.eq(u);c.remove(),s.unshift(c)}if("object"==typeof t&amp;&amp;"length"in t){for(var f=0;f&lt;t.length;f+=1)t[f]&amp;&amp;r.append(t[f]);l=a&gt;e?a+t.length:a}else r.append(t);for(var d=0;d&lt;s.length;d+=1)r.append(s[d]);o.loop&amp;&amp;n.loopCreate(),o.observer&amp;&amp;n.support.observer||n.update(),o.loop?n.slideTo(l+n.loopedSlides,0,!1):n.slideTo(l,0,!1)}},removeSlide:function(e){var t=this,n=t.params,r=t.$wrapperEl,o=t.activeIndex;n.loop&amp;&amp;(o-=t.loopedSlides,t.loopDestroy(),t.slides=r.children("."+n.slideClass));var a,i=o;if("object"==typeof e&amp;&amp;"length"in e){for(var l=0;l&lt;e.length;l+=1)a=e[l],t.slides[a]&amp;&amp;t.slides.eq(a).remove(),a&lt;i&amp;&amp;(i-=1);i=Math.max(i,0)}else a=e,t.slides[a]&amp;&amp;t.slides.eq(a).remove(),a&lt;i&amp;&amp;(i-=1),i=Math.max(i,0);n.loop&amp;&amp;t.loopCreate(),n.observer&amp;&amp;t.support.observer||t.update(),n.loop?t.slideTo(i+t.loopedSlides,0,!1):t.slideTo(i,0,!1)},removeAllSlides:function(){for(var e=[],t=0;t&lt;this.slides.length;t+=1)e.push(t);this.removeSlide(e)}},events:Z,breakpoints:{setBreakpoint:function(){var e=this,t=e.activeIndex,n=e.initialized,r=e.loopedSlides,o=void 0===r?0:r,a=e.params,i=e.$el,l=a.breakpoints;if(l&amp;&amp;(!l||0!==Object.keys(l).length)){var s=e.getBreakpoint(l,e.params.breakpointsBase,e.el);if(s&amp;&amp;e.currentBreakpoint!==s){var u=s in l?l[s]:void 0;u&amp;&amp;["slidesPerView","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerColumn"].forEach((function(e){var t=u[e];void 0!==t&amp;&amp;(u[e]="slidesPerView"!==e||"AUTO"!==t&amp;&amp;"auto"!==t?"slidesPerView"===e?parseFloat(t):parseInt(t,10):"auto")}));var c=u||e.originalParams,f=a.slidesPerColumn&gt;1,d=c.slidesPerColumn&gt;1,p=a.enabled;f&amp;&amp;!d?(i.removeClass(a.containerModifierClass+"multirow "+a.containerModifierClass+"multirow-column"),e.emitContainerClasses()):!f&amp;&amp;d&amp;&amp;(i.addClass(a.containerModifierClass+"multirow"),(c.slidesPerColumnFill&amp;&amp;"column"===c.slidesPerColumnFill||!c.slidesPerColumnFill&amp;&amp;"column"===a.slidesPerColumnFill)&amp;&amp;i.addClass(a.containerModifierClass+"multirow-column"),e.emitContainerClasses());var h=c.direction&amp;&amp;c.direction!==a.direction,m=a.loop&amp;&amp;(c.slidesPerView!==a.slidesPerView||h);h&amp;&amp;n&amp;&amp;e.changeDirection(),C(e.params,c);var y=e.params.enabled;C(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),p&amp;&amp;!y?e.disable():!p&amp;&amp;y&amp;&amp;e.enable(),e.currentBreakpoint=s,e.emit("_beforeBreakpoint",c),m&amp;&amp;n&amp;&amp;(e.loopDestroy(),e.loopCreate(),e.updateSlides(),e.slideTo(t-o+e.loopedSlides,0,!1)),e.emit("breakpoint",c)}}},getBreakpoint:function(e,t,n){if(void 0===t&amp;&amp;(t="window"),e&amp;&amp;("container"!==t||n)){var r=!1,o=s(),a="window"===t?o.innerHeight:n.clientHeight,i=Object.keys(e).map((function(e){if("string"==typeof e&amp;&amp;0===e.indexOf("@")){var t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));i.sort((function(e,t){return parseInt(e.value,10)-parseInt(t.value,10)}));for(var l=0;l&lt;i.length;l+=1){var u=i[l],c=u.point,f=u.value;"window"===t?o.matchMedia("(min-width: "+f+"px)").matches&amp;&amp;(r=c):f&lt;=n.clientWidth&amp;&amp;(r=c)}return r||"max"}}},checkOverflow:{checkOverflow:function(){var e=this,t=e.params,n=e.isLocked,r=e.slides.length&gt;0&amp;&amp;t.slidesOffsetBefore+t.spaceBetween*(e.slides.length-1)+e.slides[0].offsetWidth*e.slides.length;t.slidesOffsetBefore&amp;&amp;t.slidesOffsetAfter&amp;&amp;r?e.isLocked=r&lt;=e.size:e.isLocked=1===e.snapGrid.length,e.allowSlideNext=!e.isLocked,e.allowSlidePrev=!e.isLocked,n!==e.isLocked&amp;&amp;e.emit(e.isLocked?"lock":"unlock"),n&amp;&amp;n!==e.isLocked&amp;&amp;(e.isEnd=!1,e.navigation&amp;&amp;e.navigation.update())}},classes:J,images:{loadImage:function(e,t,n,r,o,a){var i,l=s();function u(){a&amp;&amp;a()}S(e).parent("picture")[0]||e.complete&amp;&amp;o?u():t?((i=new l.Image).onload=u,i.onerror=u,r&amp;&amp;(i.sizes=r),n&amp;&amp;(i.srcset=n),t&amp;&amp;(i.src=t)):u()},preloadImages:function(){var e=this;function t(){null!=e&amp;&amp;e&amp;&amp;!e.destroyed&amp;&amp;(void 0!==e.imagesLoaded&amp;&amp;(e.imagesLoaded+=1),e.imagesLoaded===e.imagesToLoad.length&amp;&amp;(e.params.updateOnImagesReady&amp;&amp;e.update(),e.emit("imagesReady")))}e.imagesToLoad=e.$el.find("img");for(var n=0;n&lt;e.imagesToLoad.length;n+=1){var r=e.imagesToLoad[n];e.loadImage(r,r.currentSrc||r.getAttribute("src"),r.srcset||r.getAttribute("srcset"),r.sizes||r.getAttribute("sizes"),!0,t)}}}},re={},oe=function(){function e(){for(var t,n,r=arguments.length,o=new Array(r),a=0;a&lt;r;a++)o[a]=arguments[a];if(1===o.length&amp;&amp;o[0].constructor&amp;&amp;"Object"===Object.prototype.toString.call(o[0]).slice(8,-1)?n=o[0]:(t=o[0],n=o[1]),n||(n={}),n=C({},n),t&amp;&amp;!n.el&amp;&amp;(n.el=t),n.el&amp;&amp;S(n.el).length&gt;1){var i=[];return S(n.el).each((function(t){var r=C({},n,{el:t});i.push(new e(r))})),i}var l=this;l.__swiper__=!0,l.support=M(),l.device=R({userAgent:n.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],void 0===l.modules&amp;&amp;(l.modules={}),Object.keys(l.modules).forEach((function(e){var t=l.modules[e];if(t.params){var r=Object.keys(t.params)[0],o=t.params[r];if("object"!=typeof o||null===o)return;if(["navigation","pagination","scrollbar"].indexOf(r)&gt;=0&amp;&amp;!0===n[r]&amp;&amp;(n[r]={auto:!0}),!(r in n)||!("enabled"in o))return;!0===n[r]&amp;&amp;(n[r]={enabled:!0}),"object"!=typeof n[r]||"enabled"in n[r]||(n[r].enabled=!0),n[r]||(n[r]={enabled:!1})}}));var s,u,c=C({},ee);return l.useParams(c),l.params=C({},c,re,n),l.originalParams=C({},l.params),l.passedParams=C({},n),l.params&amp;&amp;l.params.on&amp;&amp;Object.keys(l.params.on).forEach((function(e){l.on(e,l.params.on[e])})),l.params&amp;&amp;l.params.onAny&amp;&amp;l.onAny(l.params.onAny),l.$=S,C(l,{enabled:l.params.enabled,el:t,classNames:[],slides:S(),slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:function(){return"horizontal"===l.params.direction},isVertical:function(){return"vertical"===l.params.direction},activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEvents:(s=["touchstart","touchmove","touchend","touchcancel"],u=["mousedown","mousemove","mouseup"],l.support.pointerEvents&amp;&amp;(u=["pointerdown","pointermove","pointerup"]),l.touchEventsTouch={start:s[0],move:s[1],end:s[2],cancel:s[3]},l.touchEventsDesktop={start:u[0],move:u[1],end:u[2]},l.support.touch||!l.params.simulateTouch?l.touchEventsTouch:l.touchEventsDesktop),touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:x(),clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,isTouchEvent:void 0,startMoving:void 0},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.useModules(),l.emit("_swiper"),l.params.init&amp;&amp;l.init(),l}var t,n,r=e.prototype;return r.enable=function(){var e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&amp;&amp;e.setGrabCursor(),e.emit("enable"))},r.disable=function(){var e=this;e.enabled&amp;&amp;(e.enabled=!1,e.params.grabCursor&amp;&amp;e.unsetGrabCursor(),e.emit("disable"))},r.setProgress=function(e,t){var n=this;e=Math.min(Math.max(e,0),1);var r=n.minTranslate(),o=(n.maxTranslate()-r)*e+r;n.translateTo(o,void 0===t?0:t),n.updateActiveIndex(),n.updateSlidesClasses()},r.emitContainerClasses=function(){var e=this;if(e.params._emitClasses&amp;&amp;e.el){var t=e.el.className.split(" ").filter((function(t){return 0===t.indexOf("swiper-container")||0===t.indexOf(e.params.containerModifierClass)}));e.emit("_containerClasses",t.join(" "))}},r.getSlideClasses=function(e){var t=this;return e.className.split(" ").filter((function(e){return 0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass)})).join(" ")},r.emitSlidesClasses=function(){var e=this;if(e.params._emitClasses&amp;&amp;e.el){var t=[];e.slides.each((function(n){var r=e.getSlideClasses(n);t.push({slideEl:n,classNames:r}),e.emit("_slideClass",n,r)})),e.emit("_slideClasses",t)}},r.slidesPerViewDynamic=function(){var e=this,t=e.params,n=e.slides,r=e.slidesGrid,o=e.size,a=e.activeIndex,i=1;if(t.centeredSlides){for(var l,s=n[a].swiperSlideSize,u=a+1;u&lt;n.length;u+=1)n[u]&amp;&amp;!l&amp;&amp;(i+=1,(s+=n[u].swiperSlideSize)&gt;o&amp;&amp;(l=!0));for(var c=a-1;c&gt;=0;c-=1)n[c]&amp;&amp;!l&amp;&amp;(i+=1,(s+=n[c].swiperSlideSize)&gt;o&amp;&amp;(l=!0))}else for(var f=a+1;f&lt;n.length;f+=1)r[f]-r[a]&lt;o&amp;&amp;(i+=1);return i},r.update=function(){var e=this;if(e&amp;&amp;!e.destroyed){var t=e.snapGrid,n=e.params;n.breakpoints&amp;&amp;e.setBreakpoint(),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode?(r(),e.params.autoHeight&amp;&amp;e.updateAutoHeight()):(("auto"===e.params.slidesPerView||e.params.slidesPerView&gt;1)&amp;&amp;e.isEnd&amp;&amp;!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||r(),n.watchOverflow&amp;&amp;t!==e.snapGrid&amp;&amp;e.checkOverflow(),e.emit("update")}function r(){var t=e.rtlTranslate?-1*e.translate:e.translate,n=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(n),e.updateActiveIndex(),e.updateSlidesClasses()}},r.changeDirection=function(e,t){void 0===t&amp;&amp;(t=!0);var n=this,r=n.params.direction;return e||(e="horizontal"===r?"vertical":"horizontal"),e===r||"horizontal"!==e&amp;&amp;"vertical"!==e||(n.$el.removeClass(""+n.params.containerModifierClass+r).addClass(""+n.params.containerModifierClass+e),n.emitContainerClasses(),n.params.direction=e,n.slides.each((function(t){"vertical"===e?t.style.width="":t.style.height=""})),n.emit("changeDirection"),t&amp;&amp;n.update()),n},r.mount=function(e){var t=this;if(t.mounted)return!0;var n=S(e||t.params.el);if(!(e=n[0]))return!1;e.swiper=t;var r=function(){return"."+(t.params.wrapperClass||"").trim().split(" ").join(".")},o=function(){if(e&amp;&amp;e.shadowRoot&amp;&amp;e.shadowRoot.querySelector){var t=S(e.shadowRoot.querySelector(r()));return t.children=function(e){return n.children(e)},t}return n.children(r())}();if(0===o.length&amp;&amp;t.params.createElements){var a=i().createElement("div");o=S(a),a.className=t.params.wrapperClass,n.append(a),n.children("."+t.params.slideClass).each((function(e){o.append(e)}))}return C(t,{$el:n,el:e,$wrapperEl:o,wrapperEl:o[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction"),rtlTranslate:"horizontal"===t.params.direction&amp;&amp;("rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction")),wrongRTL:"-webkit-box"===o.css("display")}),!0},r.init=function(e){var t=this;return t.initialized||!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&amp;&amp;t.setBreakpoint(),t.addClasses(),t.params.loop&amp;&amp;t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&amp;&amp;t.checkOverflow(),t.params.grabCursor&amp;&amp;t.enabled&amp;&amp;t.setGrabCursor(),t.params.preloadImages&amp;&amp;t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t},r.destroy=function(e,t){void 0===e&amp;&amp;(e=!0),void 0===t&amp;&amp;(t=!0);var n,r=this,o=r.params,a=r.$el,i=r.$wrapperEl,l=r.slides;return void 0===r.params||r.destroyed||(r.emit("beforeDestroy"),r.initialized=!1,r.detachEvents(),o.loop&amp;&amp;r.loopDestroy(),t&amp;&amp;(r.removeClasses(),a.removeAttr("style"),i.removeAttr("style"),l&amp;&amp;l.length&amp;&amp;l.removeClass([o.slideVisibleClass,o.slideActiveClass,o.slideNextClass,o.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),r.emit("destroy"),Object.keys(r.eventsListeners).forEach((function(e){r.off(e)})),!1!==e&amp;&amp;(r.$el[0].swiper=null,n=r,Object.keys(n).forEach((function(e){try{n[e]=null}catch(e){}try{delete n[e]}catch(e){}}))),r.destroyed=!0),null},e.extendDefaults=function(e){C(re,e)},e.installModule=function(t){e.prototype.modules||(e.prototype.modules={});var n=t.name||Object.keys(e.prototype.modules).length+"_"+x();e.prototype.modules[n]=t},e.use=function(t){return Array.isArray(t)?(t.forEach((function(t){return e.installModule(t)})),e):(e.installModule(t),e)},t=e,n=[{key:"extendedDefaults",get:function(){return re}},{key:"defaults",get:function(){return ee}}],null&amp;&amp;te(t.prototype,null),n&amp;&amp;te(t,n),e}();Object.keys(ne).forEach((function(e){Object.keys(ne[e]).forEach((function(t){oe.prototype[t]=ne[e][t]}))})),oe.use([I,B]);const ae=oe;function ie(){return ie=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},ie.apply(this,arguments)}var le={toggleEl:function(e,t){e[t?"addClass":"removeClass"](this.params.navigation.disabledClass),e[0]&amp;&amp;"BUTTON"===e[0].tagName&amp;&amp;(e[0].disabled=t)},update:function(){var e=this,t=e.params.navigation,n=e.navigation.toggleEl;if(!e.params.loop){var r=e.navigation,o=r.$nextEl,a=r.$prevEl;a&amp;&amp;a.length&gt;0&amp;&amp;(e.isBeginning?n(a,!0):n(a,!1),e.params.watchOverflow&amp;&amp;e.enabled&amp;&amp;a[e.isLocked?"addClass":"removeClass"](t.lockClass)),o&amp;&amp;o.length&gt;0&amp;&amp;(e.isEnd?n(o,!0):n(o,!1),e.params.watchOverflow&amp;&amp;e.enabled&amp;&amp;o[e.isLocked?"addClass":"removeClass"](t.lockClass))}},onPrevClick:function(e){var t=this;e.preventDefault(),t.isBeginning&amp;&amp;!t.params.loop||t.slidePrev()},onNextClick:function(e){var t=this;e.preventDefault(),t.isEnd&amp;&amp;!t.params.loop||t.slideNext()},init:function(){var e,t,n=this,r=n.params.navigation;n.params.navigation=_(n.$el,n.params.navigation,n.params.createElements,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),(r.nextEl||r.prevEl)&amp;&amp;(r.nextEl&amp;&amp;(e=S(r.nextEl),n.params.uniqueNavElements&amp;&amp;"string"==typeof r.nextEl&amp;&amp;e.length&gt;1&amp;&amp;1===n.$el.find(r.nextEl).length&amp;&amp;(e=n.$el.find(r.nextEl))),r.prevEl&amp;&amp;(t=S(r.prevEl),n.params.uniqueNavElements&amp;&amp;"string"==typeof r.prevEl&amp;&amp;t.length&gt;1&amp;&amp;1===n.$el.find(r.prevEl).length&amp;&amp;(t=n.$el.find(r.prevEl))),e&amp;&amp;e.length&gt;0&amp;&amp;e.on("click",n.navigation.onNextClick),t&amp;&amp;t.length&gt;0&amp;&amp;t.on("click",n.navigation.onPrevClick),C(n.navigation,{$nextEl:e,nextEl:e&amp;&amp;e[0],$prevEl:t,prevEl:t&amp;&amp;t[0]}),n.enabled||(e&amp;&amp;e.addClass(r.lockClass),t&amp;&amp;t.addClass(r.lockClass)))},destroy:function(){var e=this,t=e.navigation,n=t.$nextEl,r=t.$prevEl;n&amp;&amp;n.length&amp;&amp;(n.off("click",e.navigation.onNextClick),n.removeClass(e.params.navigation.disabledClass)),r&amp;&amp;r.length&amp;&amp;(r.off("click",e.navigation.onPrevClick),r.removeClass(e.params.navigation.disabledClass))}};const se={name:"navigation",params:{navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock"}},create:function(){O(this,{navigation:ie({},le)})},on:{init:function(e){e.navigation.init(),e.navigation.update()},toEdge:function(e){e.navigation.update()},fromEdge:function(e){e.navigation.update()},destroy:function(e){e.navigation.destroy()},"enable disable":function(e){var t=e.navigation,n=t.$nextEl,r=t.$prevEl;n&amp;&amp;n[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass),r&amp;&amp;r[e.enabled?"removeClass":"addClass"](e.params.navigation.lockClass)},click:function(e,t){var n=e.navigation,r=n.$nextEl,o=n.$prevEl,a=t.target;if(e.params.navigation.hideOnClick&amp;&amp;!S(a).is(o)&amp;&amp;!S(a).is(r)){if(e.pagination&amp;&amp;e.params.pagination&amp;&amp;e.params.pagination.clickable&amp;&amp;(e.pagination.el===a||e.pagination.el.contains(a)))return;var i;r?i=r.hasClass(e.params.navigation.hiddenClass):o&amp;&amp;(i=o.hasClass(e.params.navigation.hiddenClass)),!0===i?e.emit("navigationShow"):e.emit("navigationHide"),r&amp;&amp;r.toggleClass(e.params.navigation.hiddenClass),o&amp;&amp;o.toggleClass(e.params.navigation.hiddenClass)}}}};function ue(){return ue=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},ue.apply(this,arguments)}var ce={update:function(){var e=this,t=e.rtl,n=e.params.pagination;if(n.el&amp;&amp;e.pagination.el&amp;&amp;e.pagination.$el&amp;&amp;0!==e.pagination.$el.length){var r,o=e.virtual&amp;&amp;e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,a=e.pagination.$el,i=e.params.loop?Math.ceil((o-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;if(e.params.loop?((r=Math.ceil((e.activeIndex-e.loopedSlides)/e.params.slidesPerGroup))&gt;o-1-2*e.loopedSlides&amp;&amp;(r-=o-2*e.loopedSlides),r&gt;i-1&amp;&amp;(r-=i),r&lt;0&amp;&amp;"bullets"!==e.params.paginationType&amp;&amp;(r=i+r)):r=void 0!==e.snapIndex?e.snapIndex:e.activeIndex||0,"bullets"===n.type&amp;&amp;e.pagination.bullets&amp;&amp;e.pagination.bullets.length&gt;0){var l,s,u,c=e.pagination.bullets;if(n.dynamicBullets&amp;&amp;(e.pagination.bulletSize=c.eq(0)[e.isHorizontal()?"outerWidth":"outerHeight"](!0),a.css(e.isHorizontal()?"width":"height",e.pagination.bulletSize*(n.dynamicMainBullets+4)+"px"),n.dynamicMainBullets&gt;1&amp;&amp;void 0!==e.previousIndex&amp;&amp;(e.pagination.dynamicBulletIndex+=r-e.previousIndex,e.pagination.dynamicBulletIndex&gt;n.dynamicMainBullets-1?e.pagination.dynamicBulletIndex=n.dynamicMainBullets-1:e.pagination.dynamicBulletIndex&lt;0&amp;&amp;(e.pagination.dynamicBulletIndex=0)),l=r-e.pagination.dynamicBulletIndex,u=((s=l+(Math.min(c.length,n.dynamicMainBullets)-1))+l)/2),c.removeClass(n.bulletActiveClass+" "+n.bulletActiveClass+"-next "+n.bulletActiveClass+"-next-next "+n.bulletActiveClass+"-prev "+n.bulletActiveClass+"-prev-prev "+n.bulletActiveClass+"-main"),a.length&gt;1)c.each((function(e){var t=S(e),o=t.index();o===r&amp;&amp;t.addClass(n.bulletActiveClass),n.dynamicBullets&amp;&amp;(o&gt;=l&amp;&amp;o&lt;=s&amp;&amp;t.addClass(n.bulletActiveClass+"-main"),o===l&amp;&amp;t.prev().addClass(n.bulletActiveClass+"-prev").prev().addClass(n.bulletActiveClass+"-prev-prev"),o===s&amp;&amp;t.next().addClass(n.bulletActiveClass+"-next").next().addClass(n.bulletActiveClass+"-next-next"))}));else{var f=c.eq(r),d=f.index();if(f.addClass(n.bulletActiveClass),n.dynamicBullets){for(var p=c.eq(l),h=c.eq(s),m=l;m&lt;=s;m+=1)c.eq(m).addClass(n.bulletActiveClass+"-main");if(e.params.loop)if(d&gt;=c.length-n.dynamicMainBullets){for(var y=n.dynamicMainBullets;y&gt;=0;y-=1)c.eq(c.length-y).addClass(n.bulletActiveClass+"-main");c.eq(c.length-n.dynamicMainBullets-1).addClass(n.bulletActiveClass+"-prev")}else p.prev().addClass(n.bulletActiveClass+"-prev").prev().addClass(n.bulletActiveClass+"-prev-prev"),h.next().addClass(n.bulletActiveClass+"-next").next().addClass(n.bulletActiveClass+"-next-next");else p.prev().addClass(n.bulletActiveClass+"-prev").prev().addClass(n.bulletActiveClass+"-prev-prev"),h.next().addClass(n.bulletActiveClass+"-next").next().addClass(n.bulletActiveClass+"-next-next")}}if(n.dynamicBullets){var v=Math.min(c.length,n.dynamicMainBullets+4),g=(e.pagination.bulletSize*v-e.pagination.bulletSize)/2-u*e.pagination.bulletSize,b=t?"right":"left";c.css(e.isHorizontal()?b:"top",g+"px")}}if("fraction"===n.type&amp;&amp;(a.find(T(n.currentClass)).text(n.formatFractionCurrent(r+1)),a.find(T(n.totalClass)).text(n.formatFractionTotal(i))),"progressbar"===n.type){var w;w=n.progressbarOpposite?e.isHorizontal()?"vertical":"horizontal":e.isHorizontal()?"horizontal":"vertical";var k=(r+1)/i,x=1,E=1;"horizontal"===w?x=k:E=k,a.find(T(n.progressbarFillClass)).transform("translate3d(0,0,0) scaleX("+x+") scaleY("+E+")").transition(e.params.speed)}"custom"===n.type&amp;&amp;n.renderCustom?(a.html(n.renderCustom(e,r+1,i)),e.emit("paginationRender",a[0])):e.emit("paginationUpdate",a[0]),e.params.watchOverflow&amp;&amp;e.enabled&amp;&amp;a[e.isLocked?"addClass":"removeClass"](n.lockClass)}},render:function(){var e=this,t=e.params.pagination;if(t.el&amp;&amp;e.pagination.el&amp;&amp;e.pagination.$el&amp;&amp;0!==e.pagination.$el.length){var n=e.virtual&amp;&amp;e.params.virtual.enabled?e.virtual.slides.length:e.slides.length,r=e.pagination.$el,o="";if("bullets"===t.type){var a=e.params.loop?Math.ceil((n-2*e.loopedSlides)/e.params.slidesPerGroup):e.snapGrid.length;e.params.freeMode&amp;&amp;!e.params.loop&amp;&amp;a&gt;n&amp;&amp;(a=n);for(var i=0;i&lt;a;i+=1)t.renderBullet?o+=t.renderBullet.call(e,i,t.bulletClass):o+="&lt;"+t.bulletElement+' class="'+t.bulletClass+'"&gt;&lt;/'+t.bulletElement+"&gt;";r.html(o),e.pagination.bullets=r.find(T(t.bulletClass))}"fraction"===t.type&amp;&amp;(o=t.renderFraction?t.renderFraction.call(e,t.currentClass,t.totalClass):'&lt;span class="'+t.currentClass+'"&gt;&lt;/span&gt; / &lt;span class="'+t.totalClass+'"&gt;&lt;/span&gt;',r.html(o)),"progressbar"===t.type&amp;&amp;(o=t.renderProgressbar?t.renderProgressbar.call(e,t.progressbarFillClass):'&lt;span class="'+t.progressbarFillClass+'"&gt;&lt;/span&gt;',r.html(o)),"custom"!==t.type&amp;&amp;e.emit("paginationRender",e.pagination.$el[0])}},init:function(){var e=this;e.params.pagination=_(e.$el,e.params.pagination,e.params.createElements,{el:"swiper-pagination"});var t=e.params.pagination;if(t.el){var n=S(t.el);0!==n.length&amp;&amp;(e.params.uniqueNavElements&amp;&amp;"string"==typeof t.el&amp;&amp;n.length&gt;1&amp;&amp;(n=e.$el.find(t.el)),"bullets"===t.type&amp;&amp;t.clickable&amp;&amp;n.addClass(t.clickableClass),n.addClass(t.modifierClass+t.type),"bullets"===t.type&amp;&amp;t.dynamicBullets&amp;&amp;(n.addClass(""+t.modifierClass+t.type+"-dynamic"),e.pagination.dynamicBulletIndex=0,t.dynamicMainBullets&lt;1&amp;&amp;(t.dynamicMainBullets=1)),"progressbar"===t.type&amp;&amp;t.progressbarOpposite&amp;&amp;n.addClass(t.progressbarOppositeClass),t.clickable&amp;&amp;n.on("click",T(t.bulletClass),(function(t){t.preventDefault();var n=S(this).index()*e.params.slidesPerGroup;e.params.loop&amp;&amp;(n+=e.loopedSlides),e.slideTo(n)})),C(e.pagination,{$el:n,el:n[0]}),e.enabled||n.addClass(t.lockClass))}},destroy:function(){var e=this,t=e.params.pagination;if(t.el&amp;&amp;e.pagination.el&amp;&amp;e.pagination.$el&amp;&amp;0!==e.pagination.$el.length){var n=e.pagination.$el;n.removeClass(t.hiddenClass),n.removeClass(t.modifierClass+t.type),e.pagination.bullets&amp;&amp;e.pagination.bullets.removeClass(t.bulletActiveClass),t.clickable&amp;&amp;n.off("click",T(t.bulletClass))}}};const fe={name:"pagination",params:{pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:function(e){return e},formatFractionTotal:function(e){return e},bulletClass:"swiper-pagination-bullet",bulletActiveClass:"swiper-pagination-bullet-active",modifierClass:"swiper-pagination-",currentClass:"swiper-pagination-current",totalClass:"swiper-pagination-total",hiddenClass:"swiper-pagination-hidden",progressbarFillClass:"swiper-pagination-progressbar-fill",progressbarOppositeClass:"swiper-pagination-progressbar-opposite",clickableClass:"swiper-pagination-clickable",lockClass:"swiper-pagination-lock"}},create:function(){O(this,{pagination:ue({dynamicBulletIndex:0},ce)})},on:{init:function(e){e.pagination.init(),e.pagination.render(),e.pagination.update()},activeIndexChange:function(e){(e.params.loop||void 0===e.snapIndex)&amp;&amp;e.pagination.update()},snapIndexChange:function(e){e.params.loop||e.pagination.update()},slidesLengthChange:function(e){e.params.loop&amp;&amp;(e.pagination.render(),e.pagination.update())},snapGridLengthChange:function(e){e.params.loop||(e.pagination.render(),e.pagination.update())},destroy:function(e){e.pagination.destroy()},"enable disable":function(e){var t=e.pagination.$el;t&amp;&amp;t[e.enabled?"removeClass":"addClass"](e.params.pagination.lockClass)},click:function(e,t){var n=t.target;if(e.params.pagination.el&amp;&amp;e.params.pagination.hideOnClick&amp;&amp;e.pagination.$el.length&gt;0&amp;&amp;!S(n).hasClass(e.params.pagination.bulletClass)){if(e.navigation&amp;&amp;(e.navigation.nextEl&amp;&amp;n===e.navigation.nextEl||e.navigation.prevEl&amp;&amp;n===e.navigation.prevEl))return;!0===e.pagination.$el.hasClass(e.params.pagination.hiddenClass)?e.emit("paginationShow"):e.emit("paginationHide"),e.pagination.$el.toggleClass(e.params.pagination.hiddenClass)}}}};var de=n(3379),pe=n.n(de),he=n(7933),me=n.n(he);pe()(me(),{insert:"head",singleton:!1}),me().locals,ae.use([se,fe]),new ae(".related-articles__swiper",{modules:[se,fe],slidesPerView:1.1,spaceBetween:30,navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev",disabledClass:"hidden"},breakpoints:{640:{slidesPerView:2.1},1024:{slidesPerView:3}}}),new ae(".related-articles__swiper--big",{modules:[se,fe],slidesPerView:1.1,spaceBetween:30,navigation:{nextEl:".swiper-button-next",prevEl:".swiper-button-prev",disabledClass:"hidden"},breakpoints:{640:{slidesPerView:2.1},1024:{slidesPerView:2}}})},4843:()=&gt;{var e,t,n=document.querySelector(".text-content"),r=document.querySelector(".text-content table");if(n){var o=document.createElement("div");o.className="overflow-x-auto",r&amp;&amp;(t=o,(e=n.querySelector("table")).parentNode.insertBefore(t,e),t.appendChild(e))}},9588:(e,t,n)=&gt;{"use strict";n.r(t);var r=n(7294),o=n.t(r,2),a=n(745),i=n(2004);const l=function(e){var t=e.className,n=e.src,o=e.alt,a=e.sources,i=e.sizes;return a&amp;&amp;i?r.createElement("img",{className:t,src:n,alt:o,srcSet:a.join(","),sizes:i}):r.createElement("img",{className:t,src:n,alt:o})};function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},s.apply(this,arguments)}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(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 c(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function f(e,t){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,f(e,t)}var p=!("undefined"==typeof window||!window.document||!window.document.createElement),h=void 0;function m(e){e.handlers===e.nextHandlers&amp;&amp;(e.nextHandlers=e.handlers.slice())}function y(e){this.target=e,this.events={}}y.prototype.getEventHandlers=function(e,t){var n,r=String(e)+" "+String((n=t)?!0===n?100:(n.capture&lt;&lt;0)+(n.passive&lt;&lt;1)+(n.once&lt;&lt;2):0);return this.events[r]||(this.events[r]={handlers:[],handleEvent:void 0},this.events[r].nextHandlers=this.events[r].handlers),this.events[r]},y.prototype.handleEvent=function(e,t,n){var r=this.getEventHandlers(e,t);r.handlers=r.nextHandlers,r.handlers.forEach((function(e){e&amp;&amp;e(n)}))},y.prototype.add=function(e,t,n){var r=this,o=this.getEventHandlers(e,n);m(o),0===o.nextHandlers.length&amp;&amp;(o.handleEvent=this.handleEvent.bind(this,e,n),this.target.addEventListener(e,o.handleEvent,n)),o.nextHandlers.push(t);var a=!0;return function(){if(a){a=!1,m(o);var i=o.nextHandlers.indexOf(t);o.nextHandlers.splice(i,1),0===o.nextHandlers.length&amp;&amp;(r.target&amp;&amp;r.target.removeEventListener(e,o.handleEvent,n),o.handleEvent=void 0)}}};var v="__consolidated_events_handlers__";function g(e,t,n,r){e[v]||(e[v]=new y(e));var o=function(e){if(e)return void 0===h&amp;&amp;(h=function(){if(!p)return!1;if(!window.addEventListener||!window.removeEventListener||!Object.defineProperty)return!1;var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}}),n=function(){};window.addEventListener("testPassiveEventSupport",n,t),window.removeEventListener("testPassiveEventSupport",n,t)}catch(e){}return e}()),h?e:!!e.capture}(r);return e[v].add(t,n,o)}var b=n(5834);function w(e,t){var n,r=(n=e,!isNaN(parseFloat(n))&amp;&amp;isFinite(n)?parseFloat(n):"px"===n.slice(-2)?parseFloat(n.slice(0,-2)):void 0);if("number"==typeof r)return r;var o=function(e){if("%"===e.slice(-1))return parseFloat(e.slice(0,-1))/100}(e);return"number"==typeof o?o*t:void 0}var S,k="above",x="inside",E="below",P="invisible";function C(e){return"string"==typeof e.type}var O=[];function T(e){O.push(e),S||(S=setTimeout((function(){var e;for(S=null;e=O.shift();)e()}),0));var t=!0;return function(){if(t){t=!1;var n=O.indexOf(e);-1!==n&amp;&amp;(O.splice(n,1),!O.length&amp;&amp;S&amp;&amp;(clearTimeout(S),S=null))}}}var _="undefined"!=typeof window,L=function(e){function t(t){var n;return(n=e.call(this,t)||this).refElement=function(e){n._ref=e},n}d(t,e);var o=t.prototype;return o.componentDidMount=function(){var e=this;_&amp;&amp;(this.cancelOnNextTick=T((function(){e.cancelOnNextTick=null;var t=e.props,n=t.children;t.debug,function(e,t){if(e&amp;&amp;!C(e)&amp;&amp;!t)throw new Error("&lt;Waypoint&gt; needs a DOM element to compute boundaries. The child you passed is neither a DOM element (e.g. &lt;div&gt;) nor does it use the innerRef prop.\n\nSee https://goo.gl/LrBNgw for more info.")}(n,e._ref),e._handleScroll=e._handleScroll.bind(e),e.scrollableAncestor=e._findScrollableAncestor(),e.scrollEventListenerUnsubscribe=g(e.scrollableAncestor,"scroll",e._handleScroll,{passive:!0}),e.resizeEventListenerUnsubscribe=g(window,"resize",e._handleScroll,{passive:!0}),e._handleScroll(null)})))},o.componentDidUpdate=function(){var e=this;_&amp;&amp;this.scrollableAncestor&amp;&amp;(this.cancelOnNextTick||(this.cancelOnNextTick=T((function(){e.cancelOnNextTick=null,e._handleScroll(null)}))))},o.componentWillUnmount=function(){_&amp;&amp;(this.scrollEventListenerUnsubscribe&amp;&amp;this.scrollEventListenerUnsubscribe(),this.resizeEventListenerUnsubscribe&amp;&amp;this.resizeEventListenerUnsubscribe(),this.cancelOnNextTick&amp;&amp;this.cancelOnNextTick())},o._findScrollableAncestor=function(){var e=this.props,t=e.horizontal,r=e.scrollableAncestor;if(r)return function(e){return"window"===e?n.g.window:e}(r);for(var o=this._ref;o.parentNode;){if((o=o.parentNode)===document.body)return window;var a=window.getComputedStyle(o),i=(t?a.getPropertyValue("overflow-x"):a.getPropertyValue("overflow-y"))||a.getPropertyValue("overflow");if("auto"===i||"scroll"===i||"overlay"===i)return o}return window},o._handleScroll=function(e){if(this._ref){var t=this._getBounds(),n=function(e){return e.viewportBottom-e.viewportTop==0?P:e.viewportTop&lt;=e.waypointTop&amp;&amp;e.waypointTop&lt;=e.viewportBottom||e.viewportTop&lt;=e.waypointBottom&amp;&amp;e.waypointBottom&lt;=e.viewportBottom||e.waypointTop&lt;=e.viewportTop&amp;&amp;e.viewportBottom&lt;=e.waypointBottom?x:e.viewportBottom&lt;e.waypointTop?E:e.waypointTop&lt;e.viewportTop?k:P}(t),r=this._previousPosition,o=this.props,a=(o.debug,o.onPositionChange),i=o.onEnter,l=o.onLeave,s=o.fireOnRapidScroll;if(this._previousPosition=n,r!==n){var u={currentPosition:n,previousPosition:r,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom};a.call(this,u),n===x?i.call(this,u):r===x&amp;&amp;l.call(this,u),s&amp;&amp;(r===E&amp;&amp;n===k||r===k&amp;&amp;n===E)&amp;&amp;(i.call(this,{currentPosition:x,previousPosition:r,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom}),l.call(this,{currentPosition:n,previousPosition:x,event:e,waypointTop:t.waypointTop,waypointBottom:t.waypointBottom,viewportTop:t.viewportTop,viewportBottom:t.viewportBottom}))}}},o._getBounds=function(){var e,t,n=this.props,r=n.horizontal,o=(n.debug,this._ref.getBoundingClientRect()),a=o.left,i=o.top,l=o.right,s=o.bottom,u=r?a:i,c=r?l:s;this.scrollableAncestor===window?(e=r?window.innerWidth:window.innerHeight,t=0):(e=r?this.scrollableAncestor.offsetWidth:this.scrollableAncestor.offsetHeight,t=r?this.scrollableAncestor.getBoundingClientRect().left:this.scrollableAncestor.getBoundingClientRect().top);var f=this.props,d=f.bottomOffset;return{waypointTop:u,waypointBottom:c,viewportTop:t+w(f.topOffset,e),viewportBottom:t+e-w(d,e)}},o.render=function(){var e=this,t=this.props.children;return t?C(t)||(0,b.isForwardRef)(t)?r.cloneElement(t,{ref:function(n){e.refElement(n),t.ref&amp;&amp;("function"==typeof t.ref?t.ref(n):t.ref.current=n)}}):r.cloneElement(t,{innerRef:this.refElement}):r.createElement("span",{ref:this.refElement,style:{fontSize:0}})},t}(r.PureComponent);function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(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 N(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}L.above=k,L.below=E,L.inside=x,L.invisible=P,L.defaultProps={debug:!1,scrollableAncestor:void 0,children:void 0,topOffset:"0px",bottomOffset:"0px",horizontal:!1,onEnter:function(){},onLeave:function(){},onPositionChange:function(){},fireOnRapidScroll:!0},L.displayName="Waypoint";var M=n(6878),R=n(1358),A=n.n(R);const I=function(e){return r.createElement("div",{className:"flex flex-nowrap sm:flex-wrap overflow-x-auto gap-10 md:gap-x-20 py-10 mb-20"},e.props.options.map((function(t){return r.createElement("button",{key:t.value,className:"button whitespace-nowrap ".concat(t.selected?"button--default-blue":"button--outline-blue"),onClick:function(){return e.filter(t.value)}},t.text)})),function(e){for(var t in e)for(var n in e[t])if(1==e[t][n])return!0;return!1}(e.props.options)&amp;&amp;r.createElement("button",{className:"font-eina inline-flex items-center text-base px-10 py-15 text-center transition-all text-orionBlue hover:-translate-y-2",onClick:function(){return e.filter(null)}},e.props.clearLabel,r.createElement("span",{className:"material-icons ml-4 mt-3"},"Óóç")))};function D(){return D=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},D.apply(this,arguments)}const z=function(e){return r.createElement("div",{className:"container h-full p-0"},r.createElement("a",{href:e.props.url,className:"group rounded-xl h-full shadow-lg md:hover:shadow-2xl flex flex-col duration-300 transition-all will-change-transform md:hover:-translate-y-10 check-in-viewport ".concat(e.loading&amp;&amp;"opacity-30","  ").concat(e.isVisible?"opacity-100":"opacity-0 md:translate-y-30")},r.createElement("div",{className:"aspect-video rounded-t-xl bg-babyBlue40"},r.createElement(l,D({className:"aspect-video rounded-t-xl text-xs h-full w-full object-cover"},e.props.image))),r.createElement("div",{className:"p-16"},r.createElement("h4",{className:"font-eina-semibold leading-tight line-clamp-2"},e.props.heading),r.createElement("div",{className:"text-md font-eina-light mt-12"},e.props.publishDate," ",e.props.tag))))};function B(e){return B="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},B(e)}function F(){F=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",i=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&amp;&amp;t.prototype instanceof f?t:f,a=Object.create(o.prototype),i=new x(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=w(i,n);if(l){if(l===c)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&amp;&amp;n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===c)continue;return{value:s.arg,done:n.done}}"throw"===s.type&amp;&amp;(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var c={};function f(){}function d(){}function p(){}var h={};l(h,o,(function(){return this}));var m=Object.getPrototypeOf,y=m&amp;&amp;m(m(E([])));y&amp;&amp;y!==t&amp;&amp;n.call(y,o)&amp;&amp;(h=y);var v=p.prototype=f.prototype=Object.create(h);function g(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function r(o,a,i,l){var s=u(e[o],e,a);if("throw"!==s.type){var c=s.arg,f=c.value;return f&amp;&amp;"object"==B(f)&amp;&amp;n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return r("throw",e,i,l)}))}l(s.arg)}var o;this._invoke=function(e,n){function a(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(a,a):a()}}function w(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&amp;&amp;(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&amp;&amp;(t.method="next",t.arg=void 0),t.delegate=null,c):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function S(e){var t={tryLoc:e[0]};1 in e&amp;&amp;(t.catchLoc=e[1]),2 in e&amp;&amp;(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function E(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,a=function t(){for(;++r&lt;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 a.next=a}}return{next:P}}function P(){return{value:void 0,done:!0}}return d.prototype=p,l(v,"constructor",p),l(p,"constructor",d),d.displayName=l(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&amp;&amp;e.constructor;return!!t&amp;&amp;(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,i,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},g(b.prototype),l(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,o,a){void 0===a&amp;&amp;(a=Promise);var i=new b(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},g(v),l(v,i,"Generator"),l(v,o,(function(){return this})),l(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=E,x.prototype={constructor:x,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(k),!e)for(var t in this)"t"===t.charAt(0)&amp;&amp;n.call(this,t)&amp;&amp;!isNaN(+t.slice(1))&amp;&amp;(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 i.type="throw",i.arg=e,t.next=n,r&amp;&amp;(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o&gt;=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc&lt;=this.prev){var l=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(l&amp;&amp;s){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0);if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r&gt;=0;--r){var o=this.tryEntries[r];if(o.tryLoc&lt;=this.prev&amp;&amp;n.call(o,"finallyLoc")&amp;&amp;this.prev&lt;o.finallyLoc){var a=o;break}}a&amp;&amp;("break"===e||"continue"===e)&amp;&amp;a.tryLoc&lt;=t&amp;&amp;t&lt;=a.finallyLoc&amp;&amp;(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(i)},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&amp;&amp;t&amp;&amp;(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&amp;&amp;(this.arg=void 0),c}},e}function $(e,t,n,r,o,a,i){try{var l=e[a](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function V(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){$(a,r,o,i,l,"next",e)}function l(e){$(a,r,o,i,l,"throw",e)}i(void 0)}))}}function H(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function U(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?H(Object(n),!0).forEach((function(t){W(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):H(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function W(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function q(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?G(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 G(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function K(e){return K="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},K(e)}function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},Y.apply(this,arguments)}function X(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function Q(e,t){return Q=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Q(e,t)}function Z(e,t){if(t&amp;&amp;("object"===K(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return J(e)}function J(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ee(e){return ee=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ee(e)}const te=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&amp;&amp;Q(e,t)}(s,e);var t,n,o,a,i=(o=s,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=ee(o);if(a){var n=ee(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return Z(this,e)});function s(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),(t=i.call(this,e)).state={value:void 0===t.props.form.query?"":t.props.form.query},t.state.results=t.props.results,t.state.loading=!1,t.state.page=t.props.results.page,t.handleChange=t.handleChange.bind(J(t)),t.handleSubmit=t.handleSubmit.bind(J(t)),t}return t=s,(n=[{key:"handleChange",value:function(e){this.setState({value:e.target.value})}},{key:"handlePageChange",value:function(e){this.setState({page:e}),this.doSearch(e),window.scrollTo({top:document.querySelector(".search-page").offsetTop+50,behavior:"smooth"})}},{key:"handleSubmit",value:function(e){e.preventDefault(),this.setState({page:1}),this.doSearch(1)}},{key:"doSearch",value:function(e){var t=this;this.setState({loading:!0}),fetch(window.location.protocol+"//"+window.location.host+window.location.pathname+"?q="+(void 0===this.state.value?null:this.state.value)+"&amp;page="+(e||this.state.page),{method:"POST",headers:{accept:"application/json"}}).then((function(e){return e.json()})).then((function(e){window.history.replaceState(null,null,window.location.protocol+"//"+window.location.host+window.location.pathname+(void 0===t.state.value||""==t.state.value?"":"?q="+t.state.value)),t.setState({results:e}),t.setState({loading:!1})}))}},{key:"render",value:function(){var e,t,n=this,o=this.state.results.hits.map((function(e){return r.createElement("a",{href:e.url,key:e.id,className:"search-result block md:flex mb-50 overflow-hidden rounded-xl shadow-xl duration-300 transition-all will-change-transform md:hover:-translate-y-10 ".concat(n.state.loading&amp;&amp;"opacity-20"),target:"_blank"},e.picture?r.createElement("div",{className:"flex-shrink-0 w-full md:w-[260px] ".concat(e.isExternal?"aspect-double-video":"aspect-video"," ")},r.createElement(l,Y({className:"w-full h-full ".concat(e.isExternal?"object-contain px-30":"object-cover")},e.picture))):null,r.createElement("div",{className:"px-25 py-20"},r.createElement("h2",{dangerouslySetInnerHTML:{__html:e.heading},className:"h4 mt-0 mb-10 line-clamp-2"}),r.createElement("div",{className:"font-eina-light text-md"},e.publishDate," ",e.tag&amp;&amp;e.tag.name),r.createElement("div",{dangerouslySetInnerHTML:{__html:e.excerpt},className:"mt-10 line-clamp-3 md:line-clamp-2"}),e.isExternal&amp;&amp;r.createElement("div",{className:"h4 mb-0 mt-10 text-orionBlue"},e.linkText," ",r.createElement("span",{className:"material-icons align-bottom"},"open_in_new"))))}));return r.createElement("div",null,r.createElement("form",{onSubmit:this.handleSubmit},r.createElement("div",{className:"pt-50"},r.createElement("div",{className:"container max-w-screen-lg text-center"},r.createElement("h1",{className:"h3"},this.props.form.heading)),r.createElement("div",{className:"mx-15"},r.createElement("div",{className:"container flex max-w-screen-lg p-0 relative rounded-full shadow-lg"},r.createElement("input",{type:"search",name:"q",value:this.state.value,placeholder:this.props.form.placeholder,onChange:this.handleChange,className:"page-header__search-input bg-white block outline-none py-15 pl-30 pr-15 rounded-l-full w-full"}),r.createElement("button",{type:"submit",className:"arrow-link bg-white pr-30 rounded-r-full text-xxl"},r.createElement("span",{className:"sr-only"}),r.createElement("span",{className:"material-icons transition-transform group-hover:translate-x-1"},"Ó£§")))))),r.createElement("div",{className:"search-results container max-w-screen-lg"},r.createElement("div",{className:"pt-15 pb-50 px-15 text-rock text-xs"},this.state.results.totalCount," ",this.props.form.resultsLabel),o,this.state.results.pagesCount&gt;1&amp;&amp;r.createElement("div",{className:"my-50"},r.createElement(A(),(null,(t="renderOnZeroPageCount")in(e={breakLabel:"...",nextLabel:r.createElement("span",{className:"material-icons mt-8"},"Óóà"),previousLabel:r.createElement("span",{className:"material-icons mt-8"},"ÓóÑ"),pageRangeDisplayed:3,marginPagesDisplayed:2,pageCount:this.state.results.pagesCount,renderOnZeroPageCount:null,containerClassName:"flex inline-flex w-full items-center justify-center text-orionBlue",pageClassName:"px-8 hover:orionMiddleBlue",previousClassName:"px-8 hover:text-orionMiddleBlue",nextClassName:"px-8 hover:text-orionMiddleBlue",activeClassName:"font-eina-semibold",onPageChange:function(e){return n.handlePageChange(e.selected+1)}})?Object.defineProperty(e,t,{value:null,enumerable:!0,configurable:!0,writable:!0}):e[t]=null,e)))))}}])&amp;&amp;X(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),s}(r.Component);function ne(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r&lt;a.length;r++)n=a[r],t.indexOf(n)&gt;=0||(o[n]=e[n]);return o}function re(){return re=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},re.apply(this,arguments)}function oe(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t&lt;e.length;t++)e[t]&amp;&amp;(n=oe(e[t]))&amp;&amp;(r&amp;&amp;(r+=" "),r+=n);else for(t in e)e[t]&amp;&amp;(r&amp;&amp;(r+=" "),r+=t);return r}const ae=function(){for(var e,t,n=0,r="";n&lt;arguments.length;)(e=arguments[n++])&amp;&amp;(t=oe(e))&amp;&amp;(r&amp;&amp;(r+=" "),r+=t);return r};function ie(e,t,n){const r={};return Object.keys(e).forEach((o=&gt;{r[o]=e[o].reduce(((e,r)=&gt;{if(r){const o=t(r);""!==o&amp;&amp;e.push(o),n&amp;&amp;n[r]&amp;&amp;e.push(n[r])}return e}),[]).join(" ")})),r}function le(e){var t=Object.create(null);return function(n){return void 0===t[n]&amp;&amp;(t[n]=e(n)),t[n]}}var se=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|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|enterKeyHint|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|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|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)-.*))$/,ue=le((function(e){return se.test(e)||111===e.charCodeAt(0)&amp;&amp;110===e.charCodeAt(1)&amp;&amp;e.charCodeAt(2)&lt;91})),ce=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)==0&amp;&amp;this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&amp;&amp;t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t&lt;document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]}(t);try{n.insertRule(e,n.cssRules.length)}catch(e){}}else t.appendChild(document.createTextNode(e));this.ctr++},t.flush=function(){this.tags.forEach((function(e){return e.parentNode&amp;&amp;e.parentNode.removeChild(e)})),this.tags=[],this.ctr=0},e}(),fe=Math.abs,de=String.fromCharCode,pe=Object.assign;function he(e){return e.trim()}function me(e,t,n){return e.replace(t,n)}function ye(e,t){return e.indexOf(t)}function ve(e,t){return 0|e.charCodeAt(t)}function ge(e,t,n){return e.slice(t,n)}function be(e){return e.length}function we(e){return e.length}function Se(e,t){return t.push(e),e}var ke=1,xe=1,Ee=0,Pe=0,Ce=0,Oe="";function Te(e,t,n,r,o,a,i){return{value:e,root:t,parent:n,type:r,props:o,children:a,line:ke,column:xe,length:i,return:""}}function _e(e,t){return pe(Te("",null,null,"",null,null,0),e,{length:-e.length},t)}function Le(){return Ce=Pe&gt;0?ve(Oe,--Pe):0,xe--,10===Ce&amp;&amp;(xe=1,ke--),Ce}function je(){return Ce=Pe&lt;Ee?ve(Oe,Pe++):0,xe++,10===Ce&amp;&amp;(xe=1,ke++),Ce}function Ne(){return ve(Oe,Pe)}function Me(){return Pe}function Re(e,t){return ge(Oe,e,t)}function Ae(e){switch(e){case 0:case 9:case 10:case 13:case 32:return 5;case 33:case 43:case 44:case 47:case 62:case 64:case 126:case 59:case 123:case 125:return 4;case 58:return 3;case 34:case 39:case 40:case 91:return 2;case 41:case 93:return 1}return 0}function Ie(e){return ke=xe=1,Ee=be(Oe=e),Pe=0,[]}function De(e){return Oe="",e}function ze(e){return he(Re(Pe-1,$e(91===e?e+2:40===e?e+1:e)))}function Be(e){for(;(Ce=Ne())&amp;&amp;Ce&lt;33;)je();return Ae(e)&gt;2||Ae(Ce)&gt;3?"":" "}function Fe(e,t){for(;--t&amp;&amp;je()&amp;&amp;!(Ce&lt;48||Ce&gt;102||Ce&gt;57&amp;&amp;Ce&lt;65||Ce&gt;70&amp;&amp;Ce&lt;97););return Re(e,Me()+(t&lt;6&amp;&amp;32==Ne()&amp;&amp;32==je()))}function $e(e){for(;je();)switch(Ce){case e:return Pe;case 34:case 39:34!==e&amp;&amp;39!==e&amp;&amp;$e(Ce);break;case 40:41===e&amp;&amp;$e(e);break;case 92:je()}return Pe}function Ve(e,t){for(;je()&amp;&amp;e+Ce!==57&amp;&amp;(e+Ce!==84||47!==Ne()););return"/*"+Re(t,Pe-1)+"*"+de(47===e?e:je())}function He(e){for(;!Ae(Ne());)je();return Re(e,Pe)}var Ue="-ms-",We="-webkit-",qe="comm",Ge="rule",Ke="decl",Ye="@keyframes";function Xe(e,t){for(var n="",r=we(e),o=0;o&lt;r;o++)n+=t(e[o],o,e,t)||"";return n}function Qe(e,t,n,r){switch(e.type){case"@layer":if(e.children.length)break;case"@import":case Ke:return e.return=e.return||e.value;case qe:return"";case Ye:return e.return=e.value+"{"+Xe(e.children,r)+"}";case Ge:e.value=e.props.join(",")}return be(n=Xe(e.children,r))?e.return=e.value+"{"+n+"}":""}function Ze(e){return De(Je("",null,null,null,[""],e=Ie(e),0,[0],e))}function Je(e,t,n,r,o,a,i,l,s){for(var u=0,c=0,f=i,d=0,p=0,h=0,m=1,y=1,v=1,g=0,b="",w=o,S=a,k=r,x=b;y;)switch(h=g,g=je()){case 40:if(108!=h&amp;&amp;58==ve(x,f-1)){-1!=ye(x+=me(ze(g),"&amp;","&amp;\f"),"&amp;\f")&amp;&amp;(v=-1);break}case 34:case 39:case 91:x+=ze(g);break;case 9:case 10:case 13:case 32:x+=Be(h);break;case 92:x+=Fe(Me()-1,7);continue;case 47:switch(Ne()){case 42:case 47:Se(tt(Ve(je(),Me()),t,n),s);break;default:x+="/"}break;case 123*m:l[u++]=be(x)*v;case 125*m:case 59:case 0:switch(g){case 0:case 125:y=0;case 59+c:-1==v&amp;&amp;(x=me(x,/\f/g,"")),p&gt;0&amp;&amp;be(x)-f&amp;&amp;Se(p&gt;32?nt(x+";",r,n,f-1):nt(me(x," ","")+";",r,n,f-2),s);break;case 59:x+=";";default:if(Se(k=et(x,t,n,u,c,o,l,b,w=[],S=[],f),a),123===g)if(0===c)Je(x,t,k,k,w,a,f,l,S);else switch(99===d&amp;&amp;110===ve(x,3)?100:d){case 100:case 108:case 109:case 115:Je(e,k,k,r&amp;&amp;Se(et(e,k,k,0,0,o,l,b,o,w=[],f),S),o,S,f,l,r?w:S);break;default:Je(x,k,k,k,[""],S,0,l,S)}}u=c=p=0,m=v=1,b=x="",f=i;break;case 58:f=1+be(x),p=h;default:if(m&lt;1)if(123==g)--m;else if(125==g&amp;&amp;0==m++&amp;&amp;125==Le())continue;switch(x+=de(g),g*m){case 38:v=c&gt;0?1:(x+="\f",-1);break;case 44:l[u++]=(be(x)-1)*v,v=1;break;case 64:45===Ne()&amp;&amp;(x+=ze(je())),d=Ne(),c=f=be(b=x+=He(Me())),g++;break;case 45:45===h&amp;&amp;2==be(x)&amp;&amp;(m=0)}}return a}function et(e,t,n,r,o,a,i,l,s,u,c){for(var f=o-1,d=0===o?a:[""],p=we(d),h=0,m=0,y=0;h&lt;r;++h)for(var v=0,g=ge(e,f+1,f=fe(m=i[h])),b=e;v&lt;p;++v)(b=he(m&gt;0?d[v]+" "+g:me(g,/&amp;\f/g,d[v])))&amp;&amp;(s[y++]=b);return Te(e,t,n,0===o?Ge:l,s,u,c)}function tt(e,t,n){return Te(e,t,n,qe,de(Ce),ge(e,2,-2),0)}function nt(e,t,n,r){return Te(e,t,n,Ke,ge(e,0,r),ge(e,r+1,-1),r)}var rt=function(e,t,n){for(var r=0,o=0;r=o,o=Ne(),38===r&amp;&amp;12===o&amp;&amp;(t[n]=1),!Ae(o);)je();return Re(e,Pe)},ot=new WeakMap,at=function(e){if("rule"===e.type&amp;&amp;e.parent&amp;&amp;!(e.length&lt;1)){for(var t=e.value,n=e.parent,r=e.column===n.column&amp;&amp;e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||ot.get(n))&amp;&amp;!r){ot.set(e,!0);for(var o=[],a=function(e,t){return De(function(e,t){var n=-1,r=44;do{switch(Ae(r)){case 0:38===r&amp;&amp;12===Ne()&amp;&amp;(t[n]=1),e[n]+=rt(Pe-1,t,n);break;case 2:e[n]+=ze(r);break;case 4:if(44===r){e[++n]=58===Ne()?"&amp;\f":"",t[n]=e[n].length;break}default:e[n]+=de(r)}}while(r=je());return e}(Ie(e),t))}(t,o),i=n.props,l=0,s=0;l&lt;a.length;l++)for(var u=0;u&lt;i.length;u++,s++)e.props[s]=o[l]?a[l].replace(/&amp;\f/g,i[u]):i[u]+" "+a[l]}}},it=function(e){if("decl"===e.type){var t=e.value;108===t.charCodeAt(0)&amp;&amp;98===t.charCodeAt(2)&amp;&amp;(e.return="",e.value="")}};function lt(e,t){switch(function(e,t){return 45^ve(e,0)?(((t&lt;&lt;2^ve(e,0))&lt;&lt;2^ve(e,1))&lt;&lt;2^ve(e,2))&lt;&lt;2^ve(e,3):0}(e,t)){case 5103:return"-webkit-print-"+e+e;case 5737:case 4201:case 3177:case 3433:case 1641:case 4457:case 2921:case 5572:case 6356:case 5844:case 3191:case 6645:case 3005:case 6391:case 5879:case 5623:case 6135:case 4599:case 4855:case 4215:case 6389:case 5109:case 5365:case 5621:case 3829:return We+e+e;case 5349:case 4246:case 4810:case 6968:case 2756:return We+e+"-moz-"+e+Ue+e+e;case 6828:case 4268:return We+e+Ue+e+e;case 6165:return We+e+Ue+"flex-"+e+e;case 5187:return We+e+me(e,/(\w+).+(:[^]+)/,"-webkit-box-$1$2-ms-flex-$1$2")+e;case 5443:return We+e+Ue+"flex-item-"+me(e,/flex-|-self/,"")+e;case 4675:return We+e+Ue+"flex-line-pack"+me(e,/align-content|flex-|-self/,"")+e;case 5548:return We+e+Ue+me(e,"shrink","negative")+e;case 5292:return We+e+Ue+me(e,"basis","preferred-size")+e;case 6060:return"-webkit-box-"+me(e,"-grow","")+We+e+Ue+me(e,"grow","positive")+e;case 4554:return We+me(e,/([^-])(transform)/g,"$1-webkit-$2")+e;case 6187:return me(me(me(e,/(zoom-|grab)/,"-webkit-$1"),/(image-set)/,"-webkit-$1"),e,"")+e;case 5495:case 3959:return me(e,/(image-set\([^]*)/,"-webkit-$1$`$1");case 4968:return me(me(e,/(.+:)(flex-)?(.*)/,"-webkit-box-pack:$3-ms-flex-pack:$3"),/s.+-b[^;]+/,"justify")+We+e+e;case 4095:case 3583:case 4068:case 2532:return me(e,/(.+)-inline(.+)/,"-webkit-$1$2")+e;case 8116:case 7059:case 5753:case 5535:case 5445:case 5701:case 4933:case 4677:case 5533:case 5789:case 5021:case 4765:if(be(e)-1-t&gt;6)switch(ve(e,t+1)){case 109:if(45!==ve(e,t+4))break;case 102:return me(e,/(.+:)(.+)-([^]+)/,"$1-webkit-$2-$3$1-moz-"+(108==ve(e,t+3)?"$3":"$2-$3"))+e;case 115:return~ye(e,"stretch")?lt(me(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==ve(e,t+1))break;case 6444:switch(ve(e,be(e)-3-(~ye(e,"!important")&amp;&amp;10))){case 107:return me(e,":",":-webkit-")+e;case 101:return me(e,/(.+:)([^;!]+)(;|!.+)?/,"$1-webkit-"+(45===ve(e,14)?"inline-":"")+"box$3$1-webkit-$2$3$1-ms-$2box$3")+e}break;case 5936:switch(ve(e,t+11)){case 114:return We+e+Ue+me(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return We+e+Ue+me(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return We+e+Ue+me(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return We+e+Ue+e+e}return e}var st=[function(e,t,n,r){if(e.length&gt;-1&amp;&amp;!e.return)switch(e.type){case Ke:e.return=lt(e.value,e.length);break;case Ye:return Xe([_e(e,{value:me(e.value,"@","@-webkit-")})],r);case Ge:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,(function(t){switch(function(e,t){return(e=/(::plac\w+|:read-\w+)/.exec(e))?e[0]:e}(t)){case":read-only":case":read-write":return Xe([_e(e,{props:[me(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return Xe([_e(e,{props:[me(t,/:(plac\w+)/,":-webkit-input-$1")]}),_e(e,{props:[me(t,/:(plac\w+)/,":-moz-$1")]}),_e(e,{props:[me(t,/:(plac\w+)/,"-ms-input-$1")]})],r)}return""}))}}],ut=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,(function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&amp;&amp;(document.head.appendChild(e),e.setAttribute("data-s",""))}))}var r,o,a=e.stylisPlugins||st,i={},l=[];r=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),(function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;n&lt;t.length;n++)i[t[n]]=!0;l.push(e)}));var s,u,c,f,d=[Qe,(f=function(e){s.insert(e)},function(e){e.root||(e=e.return)&amp;&amp;f(e)})],p=(u=[at,it].concat(a,d),c=we(u),function(e,t,n,r){for(var o="",a=0;a&lt;c;a++)o+=u[a](e,t,n,r)||"";return o});o=function(e,t,n,r){s=n,function(e){Xe(Ze(e),p)}(e?e+"{"+t.styles+"}":t.styles),r&amp;&amp;(h.inserted[t.name]=!0)};var h={key:t,sheet:new ce({key:t,container:r,nonce:e.nonce,speedy:e.speedy,prepend:e.prepend,insertionPoint:e.insertionPoint}),nonce:e.nonce,inserted:i,registered:{},insert:o};return h.sheet.hydrate(l),h};function ct(e){for(var t,n=0,r=0,o=e.length;o&gt;=4;++r,o-=4)t=1540483477*(65535&amp;(t=255&amp;e.charCodeAt(r)|(255&amp;e.charCodeAt(++r))&lt;&lt;8|(255&amp;e.charCodeAt(++r))&lt;&lt;16|(255&amp;e.charCodeAt(++r))&lt;&lt;24))+(59797*(t&gt;&gt;&gt;16)&lt;&lt;16),n=1540483477*(65535&amp;(t^=t&gt;&gt;&gt;24))+(59797*(t&gt;&gt;&gt;16)&lt;&lt;16)^1540483477*(65535&amp;n)+(59797*(n&gt;&gt;&gt;16)&lt;&lt;16);switch(o){case 3:n^=(255&amp;e.charCodeAt(r+2))&lt;&lt;16;case 2:n^=(255&amp;e.charCodeAt(r+1))&lt;&lt;8;case 1:n=1540483477*(65535&amp;(n^=255&amp;e.charCodeAt(r)))+(59797*(n&gt;&gt;&gt;16)&lt;&lt;16)}return(((n=1540483477*(65535&amp;(n^=n&gt;&gt;&gt;13))+(59797*(n&gt;&gt;&gt;16)&lt;&lt;16))^n&gt;&gt;&gt;15)&gt;&gt;&gt;0).toString(36)}var ft={animationIterationCount:1,aspectRatio: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},dt=/[A-Z]|^ms/g,pt=/_EMO_([^_]+?)_([^]*?)_EMO_/g,ht=function(e){return 45===e.charCodeAt(1)},mt=function(e){return null!=e&amp;&amp;"boolean"!=typeof e},yt=le((function(e){return ht(e)?e:e.replace(dt,"-$&amp;").toLowerCase()})),vt=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(pt,(function(e,t,n){return bt={name:t,styles:n,next:bt},t}))}return 1===ft[e]||ht(e)||"number"!=typeof t||0===t?t:t+"px"};function gt(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return bt={name:n.name,styles:n.styles,next:bt},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)bt={name:r.name,styles:r.styles,next:bt},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o&lt;n.length;o++)r+=gt(e,t,n[o])+";";else for(var a in n){var i=n[a];if("object"!=typeof i)null!=t&amp;&amp;void 0!==t[i]?r+=a+"{"+t[i]+"}":mt(i)&amp;&amp;(r+=yt(a)+":"+vt(a,i)+";");else if(!Array.isArray(i)||"string"!=typeof i[0]||null!=t&amp;&amp;void 0!==t[i[0]]){var l=gt(e,t,i);switch(a){case"animation":case"animationName":r+=yt(a)+":"+l+";";break;default:r+=a+"{"+l+"}"}}else for(var s=0;s&lt;i.length;s++)mt(i[s])&amp;&amp;(r+=yt(a)+":"+vt(a,i[s])+";")}return r}(e,t,n);case"function":if(void 0!==e){var o=bt,a=n(e);return bt=o,gt(e,t,a)}}if(null==t)return n;var i=t[n];return void 0!==i?i:n}var bt,wt=/label:\s*([^\s;\n{]+)\s*(;|$)/g,St=function(e,t,n){if(1===e.length&amp;&amp;"object"==typeof e[0]&amp;&amp;null!==e[0]&amp;&amp;void 0!==e[0].styles)return e[0];var r=!0,o="";bt=void 0;var a=e[0];null==a||void 0===a.raw?(r=!1,o+=gt(n,t,a)):o+=a[0];for(var i=1;i&lt;e.length;i++)o+=gt(n,t,e[i]),r&amp;&amp;(o+=a[i]);wt.lastIndex=0;for(var l,s="";null!==(l=wt.exec(o));)s+="-"+l[1];return{name:ct(o)+s,styles:o,next:bt}},kt=!!o.useInsertionEffect&amp;&amp;o.useInsertionEffect,xt=kt||function(e){return e()},Et=(kt||r.useLayoutEffect,r.createContext("undefined"!=typeof HTMLElement?ut({key:"css"}):null));Et.Provider;var Pt=function(e){return(0,r.forwardRef)((function(t,n){var o=(0,r.useContext)(Et);return e(t,o,n)}))},Ct=r.createContext({});function Ot(e,t,n){var r="";return n.split(" ").forEach((function(n){void 0!==e[n]?t.push(e[n]+";"):r+=n+" "})),r}var Tt=function(e,t,n){var r=e.key+"-"+t.name;!1===n&amp;&amp;void 0===e.registered[r]&amp;&amp;(e.registered[r]=t.styles)},_t={animationIterationCount:1,aspectRatio: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},Lt=/[A-Z]|^ms/g,jt=/_EMO_([^_]+?)_([^]*?)_EMO_/g,Nt=function(e){return 45===e.charCodeAt(1)},Mt=function(e){return null!=e&amp;&amp;"boolean"!=typeof e},Rt=le((function(e){return Nt(e)?e:e.replace(Lt,"-$&amp;").toLowerCase()})),At=function(e,t){switch(e){case"animation":case"animationName":if("string"==typeof t)return t.replace(jt,(function(e,t,n){return Dt={name:t,styles:n,next:Dt},t}))}return 1===_t[e]||Nt(e)||"number"!=typeof t||0===t?t:t+"px"};function It(e,t,n){if(null==n)return"";if(void 0!==n.__emotion_styles)return n;switch(typeof n){case"boolean":return"";case"object":if(1===n.anim)return Dt={name:n.name,styles:n.styles,next:Dt},n.name;if(void 0!==n.styles){var r=n.next;if(void 0!==r)for(;void 0!==r;)Dt={name:r.name,styles:r.styles,next:Dt},r=r.next;return n.styles+";"}return function(e,t,n){var r="";if(Array.isArray(n))for(var o=0;o&lt;n.length;o++)r+=It(e,t,n[o])+";";else for(var a in n){var i=n[a];if("object"!=typeof i)null!=t&amp;&amp;void 0!==t[i]?r+=a+"{"+t[i]+"}":Mt(i)&amp;&amp;(r+=Rt(a)+":"+At(a,i)+";");else if(!Array.isArray(i)||"string"!=typeof i[0]||null!=t&amp;&amp;void 0!==t[i[0]]){var l=It(e,t,i);switch(a){case"animation":case"animationName":r+=Rt(a)+":"+l+";";break;default:r+=a+"{"+l+"}"}}else for(var s=0;s&lt;i.length;s++)Mt(i[s])&amp;&amp;(r+=Rt(a)+":"+At(a,i[s])+";")}return r}(e,t,n);case"function":if(void 0!==e){var o=Dt,a=n(e);return Dt=o,It(e,t,a)}}if(null==t)return n;var i=t[n];return void 0!==i?i:n}var Dt,zt=/label:\s*([^\s;\n{]+)\s*(;|$)/g,Bt=function(e,t,n){if(1===e.length&amp;&amp;"object"==typeof e[0]&amp;&amp;null!==e[0]&amp;&amp;void 0!==e[0].styles)return e[0];var r=!0,o="";Dt=void 0;var a=e[0];null==a||void 0===a.raw?(r=!1,o+=It(n,t,a)):o+=a[0];for(var i=1;i&lt;e.length;i++)o+=It(n,t,e[i]),r&amp;&amp;(o+=a[i]);zt.lastIndex=0;for(var l,s="";null!==(l=zt.exec(o));)s+="-"+l[1];return{name:ct(o)+s,styles:o,next:Dt}},Ft=ue,$t=function(e){return"theme"!==e},Vt=function(e){return"string"==typeof e&amp;&amp;e.charCodeAt(0)&gt;96?Ft:$t},Ht=function(e,t,n){var r;if(t){var o=t.shouldForwardProp;r=e.__emotion_forwardProp&amp;&amp;o?function(t){return e.__emotion_forwardProp(t)&amp;&amp;o(t)}:o}return"function"!=typeof r&amp;&amp;n&amp;&amp;(r=e.__emotion_forwardProp),r},Ut=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return Tt(t,n,r),xt((function(){return function(e,t,n){Tt(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}(t,n,r)})),null},Wt=function e(t,n){var o,a,i=t.__emotion_real===t,l=i&amp;&amp;t.__emotion_base||t;void 0!==n&amp;&amp;(o=n.label,a=n.target);var s=Ht(t,n,i),u=s||Vt(l),c=!u("as");return function(){var f=arguments,d=i&amp;&amp;void 0!==t.__emotion_styles?t.__emotion_styles.slice(0):[];if(void 0!==o&amp;&amp;d.push("label:"+o+";"),null==f[0]||void 0===f[0].raw)d.push.apply(d,f);else{d.push(f[0][0]);for(var p=f.length,h=1;h&lt;p;h++)d.push(f[h],f[0][h])}var m=Pt((function(e,t,n){var o=c&amp;&amp;e.as||l,i="",f=[],p=e;if(null==e.theme){for(var h in p={},e)p[h]=e[h];p.theme=r.useContext(Ct)}"string"==typeof e.className?i=Ot(t.registered,f,e.className):null!=e.className&amp;&amp;(i=e.className+" ");var m=Bt(d.concat(f),t.registered,p);i+=t.key+"-"+m.name,void 0!==a&amp;&amp;(i+=" "+a);var y=c&amp;&amp;void 0===s?Vt(o):u,v={};for(var g in e)c&amp;&amp;"as"===g||y(g)&amp;&amp;(v[g]=e[g]);return v.className=i,v.ref=n,r.createElement(r.Fragment,null,r.createElement(Ut,{cache:t,serialized:m,isStringTag:"string"==typeof o}),r.createElement(o,v))}));return m.displayName=void 0!==o?o:"Styled("+("string"==typeof l?l:l.displayName||l.name||"Component")+")",m.defaultProps=t.defaultProps,m.__emotion_real=m,m.__emotion_base=l,m.__emotion_styles=d,m.__emotion_forwardProp=s,Object.defineProperty(m,"toString",{value:function(){return"."+a}}),m.withComponent=function(t,r){return e(t,re({},n,r,{shouldForwardProp:Ht(m,r,!0)})).apply(void 0,d)},m}}.bind();function qt(e,t){return Wt(e,t)}function Gt(e){return null!==e&amp;&amp;"object"==typeof e&amp;&amp;e.constructor===Object}function Kt(e){if(!Gt(e))return e;const t={};return Object.keys(e).forEach((n=&gt;{t[n]=Kt(e[n])})),t}function Yt(e,t,n={clone:!0}){const r=n.clone?re({},e):e;return Gt(e)&amp;&amp;Gt(t)&amp;&amp;Object.keys(t).forEach((o=&gt;{"__proto__"!==o&amp;&amp;(Gt(t[o])&amp;&amp;o in e&amp;&amp;Gt(e[o])?r[o]=Yt(e[o],t[o],n):n.clone?r[o]=Gt(t[o])?Kt(t[o]):t[o]:r[o]=t[o])})),r}["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","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){Wt[e]=Wt(e)}));const Xt=["values","unit","step"];const Qt={borderRadius:4},Zt={xs:0,sm:600,md:900,lg:1200,xl:1536},Jt={keys:["xs","sm","md","lg","xl"],up:e=&gt;`@media (min-width:${Zt[e]}px)`};function en(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||Jt;return t.reduce(((r,o,a)=&gt;(r[e.up(e.keys[a])]=n(t[a]),r)),{})}if("object"==typeof t){const e=r.breakpoints||Jt;return Object.keys(t).reduce(((r,o)=&gt;{if(-1!==Object.keys(e.values||Zt).indexOf(o))r[e.up(o)]=n(t[o],o);else{const e=o;r[e]=t[e]}return r}),{})}return n(t)}function tn(e){let t="https://mui.com/production-error/?code="+e;for(let e=1;e&lt;arguments.length;e+=1)t+="&amp;args[]="+encodeURIComponent(arguments[e]);return"Minified MUI error #"+e+"; visit "+t+" for the full message."}function nn(e){if("string"!=typeof e)throw new Error(tn(7));return e.charAt(0).toUpperCase()+e.slice(1)}function rn(e,t,n=!0){if(!t||"string"!=typeof t)return null;if(e&amp;&amp;e.vars&amp;&amp;n){const n=`vars.${t}`.split(".").reduce(((e,t)=&gt;e&amp;&amp;e[t]?e[t]:null),e);if(null!=n)return n}return t.split(".").reduce(((e,t)=&gt;e&amp;&amp;null!=e[t]?e[t]:null),e)}function on(e,t,n,r=n){let o;return o="function"==typeof e?e(n):Array.isArray(e)?e[n]||r:rn(e,n)||r,t&amp;&amp;(o=t(o,r,e)),o}const an=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:r,transform:o}=e,a=e=&gt;{if(null==e[t])return null;const a=e[t],i=rn(e.theme,r)||{};return en(e,a,(e=&gt;{let r=on(i,o,e);return e===r&amp;&amp;"string"==typeof e&amp;&amp;(r=on(i,o,`${t}${"default"===e?"":nn(e)}`,e)),!1===n?r:{[n]:r}}))};return a.propTypes={},a.filterProps=[t],a},ln=function(e,t){return t?Yt(e,t,{clone:!1}):e},sn={m:"margin",p:"padding"},un={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},cn={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},fn=function(e){const t={};return e=&gt;(void 0===t[e]&amp;&amp;(t[e]=(e=&gt;{if(e.length&gt;2){if(!cn[e])return[e];e=cn[e]}const[t,n]=e.split(""),r=sn[t],o=un[n]||"";return Array.isArray(o)?o.map((e=&gt;r+e)):[r+o]})(e)),t[e])}(),dn=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],pn=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],hn=[...dn,...pn];function mn(e,t,n,r){var o;const a=null!=(o=rn(e,t,!1))?o:n;return"number"==typeof a?e=&gt;"string"==typeof e?e:a*e:Array.isArray(a)?e=&gt;"string"==typeof e?e:a[e]:"function"==typeof a?a:()=&gt;{}}function yn(e){return mn(e,"spacing",8)}function vn(e,t){if("string"==typeof t||null==t)return t;const n=e(Math.abs(t));return t&gt;=0?n:"number"==typeof n?-n:`-${n}`}function gn(e,t){const n=yn(e.theme);return Object.keys(e).map((r=&gt;function(e,t,n,r){if(-1===t.indexOf(n))return null;const o=function(e,t){return n=&gt;e.reduce(((e,r)=&gt;(e[r]=vn(t,n),e)),{})}(fn(n),r);return en(e,e[n],o)}(e,t,r,n))).reduce(ln,{})}function bn(e){return gn(e,dn)}function wn(e){return gn(e,pn)}function Sn(e){return gn(e,hn)}bn.propTypes={},bn.filterProps=dn,wn.propTypes={},wn.filterProps=pn,Sn.propTypes={},Sn.filterProps=hn;const kn=function(...e){const t=e.reduce(((e,t)=&gt;(t.filterProps.forEach((n=&gt;{e[n]=t})),e)),{}),n=e=&gt;Object.keys(e).reduce(((n,r)=&gt;t[r]?ln(n,t[r](e)):n),{});return n.propTypes={},n.filterProps=e.reduce(((e,t)=&gt;e.concat(t.filterProps)),[]),n};function xn(e){return"number"!=typeof e?e:`${e}px solid`}const En=an({prop:"border",themeKey:"borders",transform:xn}),Pn=an({prop:"borderTop",themeKey:"borders",transform:xn}),Cn=an({prop:"borderRight",themeKey:"borders",transform:xn}),On=an({prop:"borderBottom",themeKey:"borders",transform:xn}),Tn=an({prop:"borderLeft",themeKey:"borders",transform:xn}),_n=an({prop:"borderColor",themeKey:"palette"}),Ln=an({prop:"borderTopColor",themeKey:"palette"}),jn=an({prop:"borderRightColor",themeKey:"palette"}),Nn=an({prop:"borderBottomColor",themeKey:"palette"}),Mn=an({prop:"borderLeftColor",themeKey:"palette"}),Rn=e=&gt;{if(void 0!==e.borderRadius&amp;&amp;null!==e.borderRadius){const t=mn(e.theme,"shape.borderRadius",4),n=e=&gt;({borderRadius:vn(t,e)});return en(e,e.borderRadius,n)}return null};Rn.propTypes={},Rn.filterProps=["borderRadius"],kn(En,Pn,Cn,On,Tn,_n,Ln,jn,Nn,Mn,Rn);const An=e=&gt;{if(void 0!==e.gap&amp;&amp;null!==e.gap){const t=mn(e.theme,"spacing",8),n=e=&gt;({gap:vn(t,e)});return en(e,e.gap,n)}return null};An.propTypes={},An.filterProps=["gap"];const In=e=&gt;{if(void 0!==e.columnGap&amp;&amp;null!==e.columnGap){const t=mn(e.theme,"spacing",8),n=e=&gt;({columnGap:vn(t,e)});return en(e,e.columnGap,n)}return null};In.propTypes={},In.filterProps=["columnGap"];const Dn=e=&gt;{if(void 0!==e.rowGap&amp;&amp;null!==e.rowGap){const t=mn(e.theme,"spacing",8),n=e=&gt;({rowGap:vn(t,e)});return en(e,e.rowGap,n)}return null};function zn(e,t){return"grey"===t?t:e}function Bn(e){return e&lt;=1&amp;&amp;0!==e?100*e+"%":e}Dn.propTypes={},Dn.filterProps=["rowGap"],kn(An,In,Dn,an({prop:"gridColumn"}),an({prop:"gridRow"}),an({prop:"gridAutoFlow"}),an({prop:"gridAutoColumns"}),an({prop:"gridAutoRows"}),an({prop:"gridTemplateColumns"}),an({prop:"gridTemplateRows"}),an({prop:"gridTemplateAreas"}),an({prop:"gridArea"})),kn(an({prop:"color",themeKey:"palette",transform:zn}),an({prop:"bgcolor",cssProperty:"backgroundColor",themeKey:"palette",transform:zn}),an({prop:"backgroundColor",themeKey:"palette",transform:zn}));const Fn=an({prop:"width",transform:Bn}),$n=e=&gt;{if(void 0!==e.maxWidth&amp;&amp;null!==e.maxWidth){const t=t=&gt;{var n;return{maxWidth:(null==(n=e.theme)||null==(n=n.breakpoints)||null==(n=n.values)?void 0:n[t])||Zt[t]||Bn(t)}};return en(e,e.maxWidth,t)}return null};$n.filterProps=["maxWidth"];const Vn=an({prop:"minWidth",transform:Bn}),Hn=an({prop:"height",transform:Bn}),Un=an({prop:"maxHeight",transform:Bn}),Wn=an({prop:"minHeight",transform:Bn}),qn=(an({prop:"size",cssProperty:"width",transform:Bn}),an({prop:"size",cssProperty:"height",transform:Bn}),kn(Fn,$n,Vn,Hn,Un,Wn,an({prop:"boxSizing"})),{border:{themeKey:"borders",transform:xn},borderTop:{themeKey:"borders",transform:xn},borderRight:{themeKey:"borders",transform:xn},borderBottom:{themeKey:"borders",transform:xn},borderLeft:{themeKey:"borders",transform:xn},borderColor:{themeKey:"palette"},borderTopColor:{themeKey:"palette"},borderRightColor:{themeKey:"palette"},borderBottomColor:{themeKey:"palette"},borderLeftColor:{themeKey:"palette"},borderRadius:{themeKey:"shape.borderRadius",style:Rn},color:{themeKey:"palette",transform:zn},bgcolor:{themeKey:"palette",cssProperty:"backgroundColor",transform:zn},backgroundColor:{themeKey:"palette",transform:zn},p:{style:wn},pt:{style:wn},pr:{style:wn},pb:{style:wn},pl:{style:wn},px:{style:wn},py:{style:wn},padding:{style:wn},paddingTop:{style:wn},paddingRight:{style:wn},paddingBottom:{style:wn},paddingLeft:{style:wn},paddingX:{style:wn},paddingY:{style:wn},paddingInline:{style:wn},paddingInlineStart:{style:wn},paddingInlineEnd:{style:wn},paddingBlock:{style:wn},paddingBlockStart:{style:wn},paddingBlockEnd:{style:wn},m:{style:bn},mt:{style:bn},mr:{style:bn},mb:{style:bn},ml:{style:bn},mx:{style:bn},my:{style:bn},margin:{style:bn},marginTop:{style:bn},marginRight:{style:bn},marginBottom:{style:bn},marginLeft:{style:bn},marginX:{style:bn},marginY:{style:bn},marginInline:{style:bn},marginInlineStart:{style:bn},marginInlineEnd:{style:bn},marginBlock:{style:bn},marginBlockStart:{style:bn},marginBlockEnd:{style:bn},displayPrint:{cssProperty:!1,transform:e=&gt;({"@media print":{display:e}})},display:{},overflow:{},textOverflow:{},visibility:{},whiteSpace:{},flexBasis:{},flexDirection:{},flexWrap:{},justifyContent:{},alignItems:{},alignContent:{},order:{},flex:{},flexGrow:{},flexShrink:{},alignSelf:{},justifyItems:{},justifySelf:{},gap:{style:An},rowGap:{style:Dn},columnGap:{style:In},gridColumn:{},gridRow:{},gridAutoFlow:{},gridAutoColumns:{},gridAutoRows:{},gridTemplateColumns:{},gridTemplateRows:{},gridTemplateAreas:{},gridArea:{},position:{},zIndex:{themeKey:"zIndex"},top:{},right:{},bottom:{},left:{},boxShadow:{themeKey:"shadows"},width:{transform:Bn},maxWidth:{style:$n},minWidth:{transform:Bn},height:{transform:Bn},maxHeight:{transform:Bn},minHeight:{transform:Bn},boxSizing:{},fontFamily:{themeKey:"typography"},fontSize:{themeKey:"typography"},fontStyle:{themeKey:"typography"},fontWeight:{themeKey:"typography"},letterSpacing:{},textTransform:{},lineHeight:{},textAlign:{},typography:{cssProperty:!1,themeKey:"typography"}}),Gn=function(){function e(e,t,n,r){const o={[e]:t,theme:n},a=r[e];if(!a)return{[e]:t};const{cssProperty:i=e,themeKey:l,transform:s,style:u}=a;if(null==t)return null;if("typography"===l&amp;&amp;"inherit"===t)return{[e]:t};const c=rn(n,l)||{};return u?u(o):en(o,t,(t=&gt;{let n=on(c,s,t);return t===n&amp;&amp;"string"==typeof t&amp;&amp;(n=on(c,s,`${e}${"default"===t?"":nn(t)}`,t)),!1===i?n:{[i]:n}}))}return function t(n){var r;const{sx:o,theme:a={}}=n||{};if(!o)return null;const i=null!=(r=a.unstable_sxConfig)?r:qn;function l(n){let r=n;if("function"==typeof n)r=n(a);else if("object"!=typeof n)return n;if(!r)return null;const o=function(e={}){var t;return(null==(t=e.keys)?void 0:t.reduce(((t,n)=&gt;(t[e.up(n)]={},t)),{}))||{}}(a.breakpoints),l=Object.keys(o);let s=o;return Object.keys(r).forEach((n=&gt;{const o="function"==typeof(l=r[n])?l(a):l;var l;if(null!=o)if("object"==typeof o)if(i[n])s=ln(s,e(n,o,a,i));else{const e=en({theme:a},o,(e=&gt;({[n]:e})));!function(...e){const t=e.reduce(((e,t)=&gt;e.concat(Object.keys(t))),[]),n=new Set(t);return e.every((e=&gt;n.size===Object.keys(e).length))}(e,o)?s=ln(s,e):s[n]=t({sx:o,theme:a})}else s=ln(s,e(n,o,a,i))})),u=s,l.reduce(((e,t)=&gt;{const n=e[t];return(!n||0===Object.keys(n).length)&amp;&amp;delete e[t],e}),u);var u}return Array.isArray(o)?o.map(l):l(o)}}();Gn.filterProps=["sx"];const Kn=Gn,Yn=["breakpoints","palette","spacing","shape"],Xn=function(e={},...t){const{breakpoints:n={},palette:r={},spacing:o,shape:a={}}=e,i=ne(e,Yn),l=function(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:r=5}=e,o=ne(e,Xt),a=(e=&gt;{const t=Object.keys(e).map((t=&gt;({key:t,val:e[t]})))||[];return t.sort(((e,t)=&gt;e.val-t.val)),t.reduce(((e,t)=&gt;re({},e,{[t.key]:t.val})),{})})(t),i=Object.keys(a);function l(e){return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n})`}function s(e){return`@media (max-width:${("number"==typeof t[e]?t[e]:e)-r/100}${n})`}function u(e,o){const a=i.indexOf(o);return`@media (min-width:${"number"==typeof t[e]?t[e]:e}${n}) and (max-width:${(-1!==a&amp;&amp;"number"==typeof t[i[a]]?t[i[a]]:o)-r/100}${n})`}return re({keys:i,values:a,up:l,down:s,between:u,only:function(e){return i.indexOf(e)+1&lt;i.length?u(e,i[i.indexOf(e)+1]):l(e)},not:function(e){const t=i.indexOf(e);return 0===t?l(i[1]):t===i.length-1?s(i[t]):u(e,i[i.indexOf(e)+1]).replace("@media","@media not all and")},unit:n},o)}(n),s=function(e=8){if(e.mui)return e;const t=yn({spacing:e}),n=(...e)=&gt;(0===e.length?[1]:e).map((e=&gt;{const n=t(e);return"number"==typeof n?`${n}px`:n})).join(" ");return n.mui=!0,n}(o);let u=Yt({breakpoints:l,direction:"ltr",components:{},palette:re({mode:"light"},r),spacing:s,shape:re({},Qt,a)},i);return u=t.reduce(((e,t)=&gt;Yt(e,t)),u),u.unstable_sxConfig=re({},qn,null==i?void 0:i.unstable_sxConfig),u.unstable_sx=function(e){return Kn({sx:e,theme:this})},u},Qn=["variant"];function Zn(e){return 0===e.length}function Jn(e){const{variant:t}=e,n=ne(e,Qn);let r=t||"";return Object.keys(n).sort().forEach((t=&gt;{r+="color"===t?Zn(r)?e[t]:nn(e[t]):`${Zn(r)?t:nn(t)}${nn(e[t].toString())}`})),r}const er=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function tr(e){return"ownerState"!==e&amp;&amp;"theme"!==e&amp;&amp;"sx"!==e&amp;&amp;"as"!==e}const nr=Xn(),rr=e=&gt;e?e.charAt(0).toLowerCase()+e.slice(1):e;function or({defaultTheme:e,theme:t,themeId:n}){return r=t,0===Object.keys(r).length?e:t[n]||t;var r}function ar(e){return e?(t,n)=&gt;n[e]:null}function ir(e,t=0,n=1){return Math.min(Math.max(t,e),n)}function lr(e){if(e.type)return e;if("#"===e.charAt(0))return lr(function(e){e=e.slice(1);const t=new RegExp(`.{1,${e.length&gt;=6?2:1}}`,"g");let n=e.match(t);return n&amp;&amp;1===n[0].length&amp;&amp;(n=n.map((e=&gt;e+e))),n?`rgb${4===n.length?"a":""}(${n.map(((e,t)=&gt;t&lt;3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3)).join(", ")})`:""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error(tn(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),r=o.shift(),4===o.length&amp;&amp;"/"===o[3].charAt(0)&amp;&amp;(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error(tn(10,r))}else o=o.split(",");return o=o.map((e=&gt;parseFloat(e))),{type:n,values:o,colorSpace:r}}function sr(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map(((e,t)=&gt;t&lt;3?parseInt(e,10):e)):-1!==t.indexOf("hsl")&amp;&amp;(r[1]=`${r[1]}%`,r[2]=`${r[2]}%`),r=-1!==t.indexOf("color")?`${n} ${r.join(" ")}`:`${r.join(", ")}`,`${t}(${r})`}function ur(e){let t="hsl"===(e=lr(e)).type||"hsla"===e.type?lr(function(e){e=lr(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,a=r*Math.min(o,1-o),i=(e,t=(e+n/30)%12)=&gt;o-a*Math.max(Math.min(t-3,9-t,1),-1);let l="rgb";const s=[Math.round(255*i(0)),Math.round(255*i(8)),Math.round(255*i(4))];return"hsla"===e.type&amp;&amp;(l+="a",s.push(t[3])),sr({type:l,values:s})}(e)).values:e.values;return t=t.map((t=&gt;("color"!==e.type&amp;&amp;(t/=255),t&lt;=.03928?t/12.92:((t+.055)/1.055)**2.4))),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}const cr={black:"#000",white:"#fff"},fr={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},dr="#f3e5f5",pr="#ce93d8",hr="#ba68c8",mr="#ab47bc",yr="#9c27b0",vr="#7b1fa2",gr="#e57373",br="#ef5350",wr="#f44336",Sr="#d32f2f",kr="#c62828",xr="#ffb74d",Er="#ffa726",Pr="#ff9800",Cr="#f57c00",Or="#e65100",Tr="#e3f2fd",_r="#90caf9",Lr="#42a5f5",jr="#1976d2",Nr="#1565c0",Mr="#4fc3f7",Rr="#29b6f6",Ar="#03a9f4",Ir="#0288d1",Dr="#01579b",zr="#81c784",Br="#66bb6a",Fr="#4caf50",$r="#388e3c",Vr="#2e7d32",Hr="#1b5e20",Ur=["mode","contrastThreshold","tonalOffset"],Wr={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:cr.white,default:cr.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},qr={text:{primary:cr.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:cr.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function Gr(e,t,n,r){const o=r.light||r,a=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=function(e,t){if(e=lr(e),t=ir(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let n=0;n&lt;3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(let n=0;n&lt;3;n+=1)e.values[n]+=(1-e.values[n])*t;return sr(e)}(e.main,o):"dark"===t&amp;&amp;(e.dark=function(e,t){if(e=lr(e),t=ir(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let n=0;n&lt;3;n+=1)e.values[n]*=1-t;return sr(e)}(e.main,a)))}const Kr=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"],Yr={textTransform:"uppercase"},Xr='"Roboto", "Helvetica", "Arial", sans-serif';function Qr(e,t){const n="function"==typeof t?t(e):t,{fontFamily:r=Xr,fontSize:o=14,fontWeightLight:a=300,fontWeightRegular:i=400,fontWeightMedium:l=500,fontWeightBold:s=700,htmlFontSize:u=16,allVariants:c,pxToRem:f}=n,d=ne(n,Kr),p=o/14,h=f||(e=&gt;e/u*p+"rem"),m=(e,t,n,o,a)=&gt;{return re({fontFamily:r,fontWeight:e,fontSize:h(t),lineHeight:n},r===Xr?{letterSpacing:(i=o/t,Math.round(1e5*i)/1e5+"em")}:{},a,c);var i},y={h1:m(a,96,1.167,-1.5),h2:m(a,60,1.2,-.5),h3:m(i,48,1.167,0),h4:m(i,34,1.235,.25),h5:m(i,24,1.334,0),h6:m(l,20,1.6,.15),subtitle1:m(i,16,1.75,.15),subtitle2:m(l,14,1.57,.1),body1:m(i,16,1.5,.15),body2:m(i,14,1.43,.15),button:m(l,14,1.75,.4,Yr),caption:m(i,12,1.66,.4),overline:m(i,12,2.66,1,Yr),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return Yt(re({htmlFontSize:u,pxToRem:h,fontFamily:r,fontSize:o,fontWeightLight:a,fontWeightRegular:i,fontWeightMedium:l,fontWeightBold:s},y),d,{clone:!1})}function Zr(...e){return[`${e[0]}px ${e[1]}px ${e[2]}px ${e[3]}px rgba(0,0,0,0.2)`,`${e[4]}px ${e[5]}px ${e[6]}px ${e[7]}px rgba(0,0,0,0.14)`,`${e[8]}px ${e[9]}px ${e[10]}px ${e[11]}px rgba(0,0,0,0.12)`].join(",")}const Jr=["none",Zr(0,2,1,-1,0,1,1,0,0,1,3,0),Zr(0,3,1,-2,0,2,2,0,0,1,5,0),Zr(0,3,3,-2,0,3,4,0,0,1,8,0),Zr(0,2,4,-1,0,4,5,0,0,1,10,0),Zr(0,3,5,-1,0,5,8,0,0,1,14,0),Zr(0,3,5,-1,0,6,10,0,0,1,18,0),Zr(0,4,5,-2,0,7,10,1,0,2,16,1),Zr(0,5,5,-3,0,8,10,1,0,3,14,2),Zr(0,5,6,-3,0,9,12,1,0,3,16,2),Zr(0,6,6,-3,0,10,14,1,0,4,18,3),Zr(0,6,7,-4,0,11,15,1,0,4,20,3),Zr(0,7,8,-4,0,12,17,2,0,5,22,4),Zr(0,7,8,-4,0,13,19,2,0,5,24,4),Zr(0,7,9,-4,0,14,21,2,0,5,26,4),Zr(0,8,9,-5,0,15,22,2,0,6,28,5),Zr(0,8,10,-5,0,16,24,2,0,6,30,5),Zr(0,8,11,-5,0,17,26,2,0,6,32,5),Zr(0,9,11,-5,0,18,28,2,0,7,34,6),Zr(0,9,12,-6,0,19,29,2,0,7,36,6),Zr(0,10,13,-6,0,20,31,3,0,8,38,7),Zr(0,10,13,-6,0,21,33,3,0,8,40,7),Zr(0,10,14,-6,0,22,35,3,0,8,42,7),Zr(0,11,14,-7,0,23,36,3,0,9,44,8),Zr(0,11,15,-7,0,24,38,3,0,9,46,8)],eo=["duration","easing","delay"],to={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},no={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function ro(e){return`${Math.round(e)}ms`}function oo(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function ao(e){const t=re({},to,e.easing),n=re({},no,e.duration);return re({getAutoHeightDuration:oo,create:(e=["all"],r={})=&gt;{const{duration:o=n.standard,easing:a=t.easeInOut,delay:i=0}=r;return ne(r,eo),(Array.isArray(e)?e:[e]).map((e=&gt;`${e} ${"string"==typeof o?o:ro(o)} ${a} ${"string"==typeof i?i:ro(i)}`)).join(",")}},e,{easing:t,duration:n})}const io={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},lo=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];const so=function(e={},...t){const{mixins:n={},palette:r={},transitions:o={},typography:a={}}=e,i=ne(e,lo);if(e.vars)throw new Error(tn(18));const l=function(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:r=.2}=e,o=ne(e,Ur),a=e.primary||function(e="light"){return"dark"===e?{main:_r,light:Tr,dark:Lr}:{main:jr,light:Lr,dark:Nr}}(t),i=e.secondary||function(e="light"){return"dark"===e?{main:pr,light:dr,dark:mr}:{main:yr,light:hr,dark:vr}}(t),l=e.error||function(e="light"){return"dark"===e?{main:wr,light:gr,dark:Sr}:{main:Sr,light:br,dark:kr}}(t),s=e.info||function(e="light"){return"dark"===e?{main:Rr,light:Mr,dark:Ir}:{main:Ir,light:Ar,dark:Dr}}(t),u=e.success||function(e="light"){return"dark"===e?{main:Br,light:zr,dark:$r}:{main:Vr,light:Fr,dark:Hr}}(t),c=e.warning||function(e="light"){return"dark"===e?{main:Er,light:xr,dark:Cr}:{main:"#ed6c02",light:Pr,dark:Or}}(t);function f(e){const t=function(e,t){const n=ur(e),r=ur(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}(e,qr.text.primary)&gt;=n?qr.text.primary:Wr.text.primary;return t}const d=({color:e,name:t,mainShade:n=500,lightShade:o=300,darkShade:a=700})=&gt;{if(!(e=re({},e)).main&amp;&amp;e[n]&amp;&amp;(e.main=e[n]),!e.hasOwnProperty("main"))throw new Error(tn(11,t?` (${t})`:"",n));if("string"!=typeof e.main)throw new Error(tn(12,t?` (${t})`:"",JSON.stringify(e.main)));return Gr(e,"light",o,r),Gr(e,"dark",a,r),e.contrastText||(e.contrastText=f(e.main)),e},p={dark:qr,light:Wr};return Yt(re({common:re({},cr),mode:t,primary:d({color:a,name:"primary"}),secondary:d({color:i,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:d({color:l,name:"error"}),warning:d({color:c,name:"warning"}),info:d({color:s,name:"info"}),success:d({color:u,name:"success"}),grey:fr,contrastThreshold:n,getContrastText:f,augmentColor:d,tonalOffset:r},p[t]),o)}(r),s=Xn(e);let u=Yt(s,{mixins:(c=s.breakpoints,f=n,re({toolbar:{minHeight:56,[c.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[c.up("sm")]:{minHeight:64}}},f)),palette:l,shadows:Jr.slice(),typography:Qr(l,a),transitions:ao(o),zIndex:re({},io)});var c,f;return u=Yt(u,i),u=t.reduce(((e,t)=&gt;Yt(e,t)),u),u.unstable_sxConfig=re({},qn,null==i?void 0:i.unstable_sxConfig),u.unstable_sx=function(e){return Kn({sx:e,theme:this})},u},uo=so(),co="$$material",fo=function(e={}){const{themeId:t,defaultTheme:n=nr,rootShouldForwardProp:r=tr,slotShouldForwardProp:o=tr}=e,a=e=&gt;Kn(re({},e,{theme:or(re({},e,{defaultTheme:n,themeId:t}))}));return a.__mui_systemSx=!0,(e,i={})=&gt;{((e,t)=&gt;{Array.isArray(e.__emotion_styles)&amp;&amp;(e.__emotion_styles=(e=&gt;e.filter((e=&gt;!(null!=e&amp;&amp;e.__mui_systemSx))))(e.__emotion_styles))})(e);const{name:l,slot:s,skipVariantsResolver:u,skipSx:c,overridesResolver:f=ar(rr(s))}=i,d=ne(i,er),p=void 0!==u?u:s&amp;&amp;"Root"!==s&amp;&amp;"root"!==s||!1,h=c||!1;let m=tr;"Root"===s||"root"===s?m=r:s?m=o:function(e){return"string"==typeof e&amp;&amp;e.charCodeAt(0)&gt;96}(e)&amp;&amp;(m=void 0);const y=qt(e,re({shouldForwardProp:m,label:void 0},d)),v=(r,...o)=&gt;{const i=o?o.map((e=&gt;"function"==typeof e&amp;&amp;e.__emotion_real!==e?r=&gt;e(re({},r,{theme:or(re({},r,{defaultTheme:n,themeId:t}))})):e)):[];let s=r;l&amp;&amp;f&amp;&amp;i.push((e=&gt;{const r=or(re({},e,{defaultTheme:n,themeId:t})),o=((e,t)=&gt;t.components&amp;&amp;t.components[e]&amp;&amp;t.components[e].styleOverrides?t.components[e].styleOverrides:null)(l,r);if(o){const t={};return Object.entries(o).forEach((([n,o])=&gt;{t[n]="function"==typeof o?o(re({},e,{theme:r})):o})),f(e,t)}return null})),l&amp;&amp;!p&amp;&amp;i.push((e=&gt;{const r=or(re({},e,{defaultTheme:n,themeId:t}));return((e,t,n,r)=&gt;{var o;const{ownerState:a={}}=e,i=[],l=null==n||null==(o=n.components)||null==(o=o[r])?void 0:o.variants;return l&amp;&amp;l.forEach((n=&gt;{let r=!0;Object.keys(n.props).forEach((t=&gt;{a[t]!==n.props[t]&amp;&amp;e[t]!==n.props[t]&amp;&amp;(r=!1)})),r&amp;&amp;i.push(t[Jn(n.props)])})),i})(e,((e,t)=&gt;{let n=[];t&amp;&amp;t.components&amp;&amp;t.components[e]&amp;&amp;t.components[e].variants&amp;&amp;(n=t.components[e].variants);const r={};return n.forEach((e=&gt;{const t=Jn(e.props);r[t]=e.style})),r})(l,r),r,l)})),h||i.push(a);const u=i.length-o.length;if(Array.isArray(r)&amp;&amp;u&gt;0){const e=new Array(u).fill("");s=[...r,...e],s.raw=[...r.raw,...e]}else"function"==typeof r&amp;&amp;r.__emotion_real!==r&amp;&amp;(s=e=&gt;r(re({},e,{theme:or(re({},e,{defaultTheme:n,themeId:t}))})));const c=y(s,...i);return e.muiName&amp;&amp;(c.muiName=e.muiName),c};return y.withConfig&amp;&amp;(v.withConfig=y.withConfig),v}}({themeId:co,defaultTheme:uo,rootShouldForwardProp:e=&gt;tr(e)&amp;&amp;"classes"!==e}),po=fo;function ho(e,t){const n=re({},t);return Object.keys(e).forEach((r=&gt;{if(r.toString().match(/^(components|slots)$/))n[r]=re({},e[r],n[r]);else if(r.toString().match(/^(componentsProps|slotProps)$/)){const o=e[r]||{},a=t[r];n[r]={},a&amp;&amp;Object.keys(a)?o&amp;&amp;Object.keys(o)?(n[r]=re({},a),Object.keys(o).forEach((e=&gt;{n[r][e]=ho(o[e],a[e])}))):n[r]=a:n[r]=o}else void 0===n[r]&amp;&amp;(n[r]=e[r])})),n}function mo(e){const{theme:t,name:n,props:r}=e;return t&amp;&amp;t.components&amp;&amp;t.components[n]&amp;&amp;t.components[n].defaultProps?ho(t.components[n].defaultProps,r):r}const yo=Xn(),vo=function(e=yo){return function(e=null){const t=r.useContext(Ct);return t&amp;&amp;(n=t,0!==Object.keys(n).length)?t:e;var n}(e)};function go({props:e,name:t}){return function({props:e,name:t,defaultTheme:n,themeId:r}){let o=vo(n);return r&amp;&amp;(o=o[r]||o),mo({theme:o,name:t,props:e})}({props:e,name:t,defaultTheme:uo,themeId:co})}function bo(...e){return r.useMemo((()=&gt;e.every((e=&gt;null==e))?null:t=&gt;{e.forEach((e=&gt;{!function(e,t){"function"==typeof e?e(t):e&amp;&amp;(e.current=t)}(e,t)}))}),e)}const wo=bo,So="undefined"!=typeof window?r.useLayoutEffect:r.useEffect,ko=function(e){const t=r.useRef(e);return So((()=&gt;{t.current=e})),r.useCallback(((...e)=&gt;(0,t.current)(...e)),[])};let xo,Eo=!0,Po=!1;const Co={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function Oo(e){e.metaKey||e.altKey||e.ctrlKey||(Eo=!0)}function To(){Eo=!1}function _o(){"hidden"===this.visibilityState&amp;&amp;Po&amp;&amp;(Eo=!0)}const Lo=function(){const e=r.useCallback((e=&gt;{var t;null!=e&amp;&amp;((t=e.ownerDocument).addEventListener("keydown",Oo,!0),t.addEventListener("mousedown",To,!0),t.addEventListener("pointerdown",To,!0),t.addEventListener("touchstart",To,!0),t.addEventListener("visibilitychange",_o,!0))}),[]),t=r.useRef(!1);return{isFocusVisibleRef:t,onFocus:function(e){return!!function(e){const{target:t}=e;try{return t.matches(":focus-visible")}catch(e){}return Eo||function(e){const{type:t,tagName:n}=e;return!("INPUT"!==n||!Co[t]||e.readOnly)||"TEXTAREA"===n&amp;&amp;!e.readOnly||!!e.isContentEditable}(t)}(e)&amp;&amp;(t.current=!0,!0)},onBlur:function(){return!!t.current&amp;&amp;(Po=!0,window.clearTimeout(xo),xo=window.setTimeout((()=&gt;{Po=!1}),100),t.current=!1,!0)},ref:e}},jo=r.createContext(null);function No(e,t){var n=Object.create(null);return e&amp;&amp;r.Children.map(e,(function(e){return e})).forEach((function(e){n[e.key]=function(e){return t&amp;&amp;(0,r.isValidElement)(e)?t(e):e}(e)})),n}function Mo(e,t,n){return null!=n[t]?n[t]:e.props[t]}function Ro(e,t,n){var o=No(e.children),a=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),a=[];for(var i in e)i in t?a.length&amp;&amp;(o[i]=a,a=[]):a.push(i);var l={};for(var s in t){if(o[s])for(r=0;r&lt;o[s].length;r++){var u=o[s][r];l[o[s][r]]=n(u)}l[s]=n(s)}for(r=0;r&lt;a.length;r++)l[a[r]]=n(a[r]);return l}(t,o);return Object.keys(a).forEach((function(i){var l=a[i];if((0,r.isValidElement)(l)){var s=i in t,u=i in o,c=t[i],f=(0,r.isValidElement)(c)&amp;&amp;!c.props.in;!u||s&amp;&amp;!f?u||!s||f?u&amp;&amp;s&amp;&amp;(0,r.isValidElement)(c)&amp;&amp;(a[i]=(0,r.cloneElement)(l,{onExited:n.bind(null,l),in:c.props.in,exit:Mo(l,"exit",e),enter:Mo(l,"enter",e)})):a[i]=(0,r.cloneElement)(l,{in:!1}):a[i]=(0,r.cloneElement)(l,{onExited:n.bind(null,l),in:!0,exit:Mo(l,"exit",e),enter:Mo(l,"enter",e)})}})),a}var Ao=Object.values||function(e){return Object.keys(e).map((function(t){return e[t]}))},Io=function(e){function t(t,n){var r,o=(r=e.call(this,t,n)||this).handleExited.bind(function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(r));return r.state={contextValue:{isMounting:!0},handleExited:o,firstRender:!0},r}d(t,e);var n=t.prototype;return n.componentDidMount=function(){this.mounted=!0,this.setState({contextValue:{isMounting:!1}})},n.componentWillUnmount=function(){this.mounted=!1},t.getDerivedStateFromProps=function(e,t){var n,o,a=t.children,i=t.handleExited;return{children:t.firstRender?(n=e,o=i,No(n.children,(function(e){return(0,r.cloneElement)(e,{onExited:o.bind(null,e),in:!0,appear:Mo(e,"appear",n),enter:Mo(e,"enter",n),exit:Mo(e,"exit",n)})}))):Ro(e,a,i),firstRender:!1}},n.handleExited=function(e,t){var n=No(this.props.children);e.key in n||(e.props.onExited&amp;&amp;e.props.onExited(t),this.mounted&amp;&amp;this.setState((function(t){var n=re({},t.children);return delete n[e.key],{children:n}})))},n.render=function(){var e=this.props,t=e.component,n=e.childFactory,o=ne(e,["component","childFactory"]),a=this.state.contextValue,i=Ao(this.state.children).map(n);return delete o.appear,delete o.enter,delete o.exit,null===t?r.createElement(jo.Provider,{value:a},i):r.createElement(jo.Provider,{value:a},r.createElement(t,o,i))},t}(r.Component);Io.propTypes={},Io.defaultProps={component:"div",childFactory:function(e){return e}};const Do=Io;function zo(){for(var e=arguments.length,t=new Array(e),n=0;n&lt;e;n++)t[n]=arguments[n];return St(t)}n(8679);var Bo=function(){var e=zo.apply(void 0,arguments),t="animation-"+e.name;return{name:t,styles:"@keyframes "+t+"{"+e.styles+"}",anim:1,toString:function(){return"_EMO_"+this.name+"_"+this.styles+"_EMO_"}}},Fo=n(5893);const $o=e=&gt;e,Vo=(()=&gt;{let e=$o;return{configure(t){e=t},generate:t=&gt;e(t),reset(){e=$o}}})(),Ho={active:"active",checked:"checked",completed:"completed",disabled:"disabled",readOnly:"readOnly",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",required:"required",selected:"selected"};function Uo(e,t,n="Mui"){const r=Ho[t];return r?`${n}-${r}`:`${Vo.generate(e)}-${t}`}function Wo(e,t,n="Mui"){const r={};return t.forEach((t=&gt;{r[t]=Uo(e,t,n)})),r}const qo=Wo("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),Go=["center","classes","className"];let Ko,Yo,Xo,Qo,Zo=e=&gt;e;const Jo=Bo(Ko||(Ko=Zo`
  0% {
    transform: scale(0);
    opacity: 0.1;
  }

  100% {
    transform: scale(1);
    opacity: 0.3;
  }
`)),ea=Bo(Yo||(Yo=Zo`
  0% {
    opacity: 1;
  }

  100% {
    opacity: 0;
  }
`)),ta=Bo(Xo||(Xo=Zo`
  0% {
    transform: scale(1);
  }

  50% {
    transform: scale(0.92);
  }

  100% {
    transform: scale(1);
  }
`)),na=po("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),ra=po((function(e){const{className:t,classes:n,pulsate:o=!1,rippleX:a,rippleY:i,rippleSize:l,in:s,onExited:u,timeout:c}=e,[f,d]=r.useState(!1),p=ae(t,n.ripple,n.rippleVisible,o&amp;&amp;n.ripplePulsate),h={width:l,height:l,top:-l/2+i,left:-l/2+a},m=ae(n.child,f&amp;&amp;n.childLeaving,o&amp;&amp;n.childPulsate);return s||f||d(!0),r.useEffect((()=&gt;{if(!s&amp;&amp;null!=u){const e=setTimeout(u,c);return()=&gt;{clearTimeout(e)}}}),[u,s,c]),(0,Fo.jsx)("span",{className:p,style:h,children:(0,Fo.jsx)("span",{className:m})})}),{name:"MuiTouchRipple",slot:"Ripple"})(Qo||(Qo=Zo`
  opacity: 0;
  position: absolute;

  &amp;.${0} {
    opacity: 0.3;
    transform: scale(1);
    animation-name: ${0};
    animation-duration: ${0}ms;
    animation-timing-function: ${0};
  }

  &amp;.${0} {
    animation-duration: ${0}ms;
  }

  &amp; .${0} {
    opacity: 1;
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background-color: currentColor;
  }

  &amp; .${0} {
    opacity: 0;
    animation-name: ${0};
    animation-duration: ${0}ms;
    animation-timing-function: ${0};
  }

  &amp; .${0} {
    position: absolute;
    /* @noflip */
    left: 0px;
    top: 0;
    animation-name: ${0};
    animation-duration: 2500ms;
    animation-timing-function: ${0};
    animation-iteration-count: infinite;
    animation-delay: 200ms;
  }
`),qo.rippleVisible,Jo,550,(({theme:e})=&gt;e.transitions.easing.easeInOut),qo.ripplePulsate,(({theme:e})=&gt;e.transitions.duration.shorter),qo.child,qo.childLeaving,ea,550,(({theme:e})=&gt;e.transitions.easing.easeInOut),qo.childPulsate,ta,(({theme:e})=&gt;e.transitions.easing.easeInOut)),oa=r.forwardRef((function(e,t){const n=go({props:e,name:"MuiTouchRipple"}),{center:o=!1,classes:a={},className:i}=n,l=ne(n,Go),[s,u]=r.useState([]),c=r.useRef(0),f=r.useRef(null);r.useEffect((()=&gt;{f.current&amp;&amp;(f.current(),f.current=null)}),[s]);const d=r.useRef(!1),p=r.useRef(0),h=r.useRef(null),m=r.useRef(null);r.useEffect((()=&gt;()=&gt;{p.current&amp;&amp;clearTimeout(p.current)}),[]);const y=r.useCallback((e=&gt;{const{pulsate:t,rippleX:n,rippleY:r,rippleSize:o,cb:i}=e;u((e=&gt;[...e,(0,Fo.jsx)(ra,{classes:{ripple:ae(a.ripple,qo.ripple),rippleVisible:ae(a.rippleVisible,qo.rippleVisible),ripplePulsate:ae(a.ripplePulsate,qo.ripplePulsate),child:ae(a.child,qo.child),childLeaving:ae(a.childLeaving,qo.childLeaving),childPulsate:ae(a.childPulsate,qo.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:r,rippleSize:o},c.current)])),c.current+=1,f.current=i}),[a]),v=r.useCallback(((e={},t={},n=(()=&gt;{}))=&gt;{const{pulsate:r=!1,center:a=o||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&amp;&amp;d.current)return void(d.current=!1);"touchstart"===(null==e?void 0:e.type)&amp;&amp;(d.current=!0);const l=i?null:m.current,s=l?l.getBoundingClientRect():{width:0,height:0,left:0,top:0};let u,c,f;if(a||void 0===e||0===e.clientX&amp;&amp;0===e.clientY||!e.clientX&amp;&amp;!e.touches)u=Math.round(s.width/2),c=Math.round(s.height/2);else{const{clientX:t,clientY:n}=e.touches&amp;&amp;e.touches.length&gt;0?e.touches[0]:e;u=Math.round(t-s.left),c=Math.round(n-s.top)}if(a)f=Math.sqrt((2*s.width**2+s.height**2)/3),f%2==0&amp;&amp;(f+=1);else{const e=2*Math.max(Math.abs((l?l.clientWidth:0)-u),u)+2,t=2*Math.max(Math.abs((l?l.clientHeight:0)-c),c)+2;f=Math.sqrt(e**2+t**2)}null!=e&amp;&amp;e.touches?null===h.current&amp;&amp;(h.current=()=&gt;{y({pulsate:r,rippleX:u,rippleY:c,rippleSize:f,cb:n})},p.current=setTimeout((()=&gt;{h.current&amp;&amp;(h.current(),h.current=null)}),80)):y({pulsate:r,rippleX:u,rippleY:c,rippleSize:f,cb:n})}),[o,y]),g=r.useCallback((()=&gt;{v({},{pulsate:!0})}),[v]),b=r.useCallback(((e,t)=&gt;{if(clearTimeout(p.current),"touchend"===(null==e?void 0:e.type)&amp;&amp;h.current)return h.current(),h.current=null,void(p.current=setTimeout((()=&gt;{b(e,t)})));h.current=null,u((e=&gt;e.length&gt;0?e.slice(1):e)),f.current=t}),[]);return r.useImperativeHandle(t,(()=&gt;({pulsate:g,start:v,stop:b})),[g,v,b]),(0,Fo.jsx)(na,re({className:ae(qo.root,a.root,i),ref:m},l,{children:(0,Fo.jsx)(Do,{component:null,exit:!0,children:s})}))}));function aa(e){return Uo("MuiButtonBase",e)}const ia=Wo("MuiButtonBase",["root","disabled","focusVisible"]),la=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],sa=po("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=&gt;t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&amp;::-moz-focus-inner":{borderStyle:"none"},[`&amp;.${ia.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),ua=r.forwardRef((function(e,t){const n=go({props:e,name:"MuiButtonBase"}),{action:o,centerRipple:a=!1,children:i,className:l,component:s="button",disabled:u=!1,disableRipple:c=!1,disableTouchRipple:f=!1,focusRipple:d=!1,LinkComponent:p="a",onBlur:h,onClick:m,onContextMenu:y,onDragLeave:v,onFocus:g,onFocusVisible:b,onKeyDown:w,onKeyUp:S,onMouseDown:k,onMouseLeave:x,onMouseUp:E,onTouchEnd:P,onTouchMove:C,onTouchStart:O,tabIndex:T=0,TouchRippleProps:_,touchRippleRef:L,type:j}=n,N=ne(n,la),M=r.useRef(null),R=r.useRef(null),A=wo(R,L),{isFocusVisibleRef:I,onFocus:D,onBlur:z,ref:B}=Lo(),[F,$]=r.useState(!1);u&amp;&amp;F&amp;&amp;$(!1),r.useImperativeHandle(o,(()=&gt;({focusVisible:()=&gt;{$(!0),M.current.focus()}})),[]);const[V,H]=r.useState(!1);r.useEffect((()=&gt;{H(!0)}),[]);const U=V&amp;&amp;!c&amp;&amp;!u;function W(e,t,n=f){return ko((r=&gt;(t&amp;&amp;t(r),!n&amp;&amp;R.current&amp;&amp;R.current[e](r),!0)))}r.useEffect((()=&gt;{F&amp;&amp;d&amp;&amp;!c&amp;&amp;V&amp;&amp;R.current.pulsate()}),[c,d,F,V]);const q=W("start",k),G=W("stop",y),K=W("stop",v),Y=W("stop",E),X=W("stop",(e=&gt;{F&amp;&amp;e.preventDefault(),x&amp;&amp;x(e)})),Q=W("start",O),Z=W("stop",P),J=W("stop",C),ee=W("stop",(e=&gt;{z(e),!1===I.current&amp;&amp;$(!1),h&amp;&amp;h(e)}),!1),te=ko((e=&gt;{M.current||(M.current=e.currentTarget),D(e),!0===I.current&amp;&amp;($(!0),b&amp;&amp;b(e)),g&amp;&amp;g(e)})),oe=()=&gt;{const e=M.current;return s&amp;&amp;"button"!==s&amp;&amp;!("A"===e.tagName&amp;&amp;e.href)},le=r.useRef(!1),se=ko((e=&gt;{d&amp;&amp;!le.current&amp;&amp;F&amp;&amp;R.current&amp;&amp;" "===e.key&amp;&amp;(le.current=!0,R.current.stop(e,(()=&gt;{R.current.start(e)}))),e.target===e.currentTarget&amp;&amp;oe()&amp;&amp;" "===e.key&amp;&amp;e.preventDefault(),w&amp;&amp;w(e),e.target===e.currentTarget&amp;&amp;oe()&amp;&amp;"Enter"===e.key&amp;&amp;!u&amp;&amp;(e.preventDefault(),m&amp;&amp;m(e))})),ue=ko((e=&gt;{d&amp;&amp;" "===e.key&amp;&amp;R.current&amp;&amp;F&amp;&amp;!e.defaultPrevented&amp;&amp;(le.current=!1,R.current.stop(e,(()=&gt;{R.current.pulsate(e)}))),S&amp;&amp;S(e),m&amp;&amp;e.target===e.currentTarget&amp;&amp;oe()&amp;&amp;" "===e.key&amp;&amp;!e.defaultPrevented&amp;&amp;m(e)}));let ce=s;"button"===ce&amp;&amp;(N.href||N.to)&amp;&amp;(ce=p);const fe={};"button"===ce?(fe.type=void 0===j?"button":j,fe.disabled=u):(N.href||N.to||(fe.role="button"),u&amp;&amp;(fe["aria-disabled"]=u));const de=wo(t,B,M),pe=re({},n,{centerRipple:a,component:s,disabled:u,disableRipple:c,disableTouchRipple:f,focusRipple:d,tabIndex:T,focusVisible:F}),he=(e=&gt;{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,a=ie({root:["root",t&amp;&amp;"disabled",n&amp;&amp;"focusVisible"]},aa,o);return n&amp;&amp;r&amp;&amp;(a.root+=` ${r}`),a})(pe);return(0,Fo.jsxs)(sa,re({as:ce,className:ae(he.root,l),ownerState:pe,onBlur:ee,onClick:m,onContextMenu:G,onFocus:te,onKeyDown:se,onKeyUp:ue,onMouseDown:q,onMouseLeave:X,onMouseUp:Y,onDragLeave:K,onTouchEnd:Z,onTouchMove:J,onTouchStart:Q,ref:de,tabIndex:u?-1:T,type:j},fe,N,{children:[i,U?(0,Fo.jsx)(oa,re({ref:A,center:a},_)):null]}))})),ca=ua,fa=nn;function da(e){return Uo("MuiTab",e)}const pa=Wo("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),ha=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],ma=po(ca,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[t.root,n.label&amp;&amp;n.icon&amp;&amp;t.labelIcon,t[`textColor${fa(n.textColor)}`],n.fullWidth&amp;&amp;t.fullWidth,n.wrapped&amp;&amp;t.wrapped]}})((({theme:e,ownerState:t})=&gt;re({},e.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},t.label&amp;&amp;{flexDirection:"top"===t.iconPosition||"bottom"===t.iconPosition?"column":"row"},{lineHeight:1.25},t.icon&amp;&amp;t.label&amp;&amp;{minHeight:72,paddingTop:9,paddingBottom:9,[`&amp; &gt; .${pa.iconWrapper}`]:re({},"top"===t.iconPosition&amp;&amp;{marginBottom:6},"bottom"===t.iconPosition&amp;&amp;{marginTop:6},"start"===t.iconPosition&amp;&amp;{marginRight:e.spacing(1)},"end"===t.iconPosition&amp;&amp;{marginLeft:e.spacing(1)})},"inherit"===t.textColor&amp;&amp;{color:"inherit",opacity:.6,[`&amp;.${pa.selected}`]:{opacity:1},[`&amp;.${pa.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity}},"primary"===t.textColor&amp;&amp;{color:(e.vars||e).palette.text.secondary,[`&amp;.${pa.selected}`]:{color:(e.vars||e).palette.primary.main},[`&amp;.${pa.disabled}`]:{color:(e.vars||e).palette.text.disabled}},"secondary"===t.textColor&amp;&amp;{color:(e.vars||e).palette.text.secondary,[`&amp;.${pa.selected}`]:{color:(e.vars||e).palette.secondary.main},[`&amp;.${pa.disabled}`]:{color:(e.vars||e).palette.text.disabled}},t.fullWidth&amp;&amp;{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},t.wrapped&amp;&amp;{fontSize:e.typography.pxToRem(12)}))),ya=r.forwardRef((function(e,t){const n=go({props:e,name:"MuiTab"}),{className:o,disabled:a=!1,disableFocusRipple:i=!1,fullWidth:l,icon:s,iconPosition:u="top",indicator:c,label:f,onChange:d,onClick:p,onFocus:h,selected:m,selectionFollowsFocus:y,textColor:v="inherit",value:g,wrapped:b=!1}=n,w=ne(n,ha),S=re({},n,{disabled:a,disableFocusRipple:i,selected:m,icon:!!s,iconPosition:u,label:!!f,fullWidth:l,textColor:v,wrapped:b}),k=(e=&gt;{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:a,label:i,selected:l,disabled:s}=e;return ie({root:["root",a&amp;&amp;i&amp;&amp;"labelIcon",`textColor${fa(n)}`,r&amp;&amp;"fullWidth",o&amp;&amp;"wrapped",l&amp;&amp;"selected",s&amp;&amp;"disabled"],iconWrapper:["iconWrapper"]},da,t)})(S),x=s&amp;&amp;f&amp;&amp;r.isValidElement(s)?r.cloneElement(s,{className:ae(k.iconWrapper,s.props.className)}):s;return(0,Fo.jsxs)(ma,re({focusRipple:!i,className:ae(k.root,o),ref:t,role:"tab","aria-selected":m,disabled:a,onClick:e=&gt;{!m&amp;&amp;d&amp;&amp;d(e,g),p&amp;&amp;p(e)},onFocus:e=&gt;{y&amp;&amp;!m&amp;&amp;d&amp;&amp;d(e,g),h&amp;&amp;h(e)},ownerState:S,tabIndex:m?0:-1},w,{children:["top"===u||"start"===u?(0,Fo.jsxs)(r.Fragment,{children:[x,f]}):(0,Fo.jsxs)(r.Fragment,{children:[f,x]}),c]}))})),va=["sx"];const ga=["className","component"],ba=so(),wa=function(e={}){const{themeId:t,defaultTheme:n,defaultClassName:o="MuiBox-root",generateClassName:a}=e,i=qt("div",{shouldForwardProp:e=&gt;"theme"!==e&amp;&amp;"sx"!==e&amp;&amp;"as"!==e})(Kn);return r.forwardRef((function(e,r){const l=vo(n),s=function(e){const{sx:t}=e,n=ne(e,va),{systemProps:r,otherProps:o}=(e=&gt;{var t,n;const r={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:qn;return Object.keys(e).forEach((t=&gt;{o[t]?r.systemProps[t]=e[t]:r.otherProps[t]=e[t]})),r})(n);let a;return a=Array.isArray(t)?[r,...t]:"function"==typeof t?(...e)=&gt;{const n=t(...e);return Gt(n)?re({},r,n):r}:re({},r,t),re({},o,{sx:a})}(e),{className:u,component:c="div"}=s,f=ne(s,ga);return(0,Fo.jsx)(i,re({as:c,ref:r,className:ae(u,a?a(o):o),theme:t&amp;&amp;l[t]||l},f))}))}({themeId:co,defaultTheme:ba,defaultClassName:"MuiBox-root",generateClassName:Vo.generate});function Sa(e){if(void 0===e)return{};const t={};return Object.keys(e).filter((t=&gt;!(t.match(/^on[A-Z]/)&amp;&amp;"function"==typeof e[t]))).forEach((n=&gt;{t[n]=e[n]})),t}n(6607);const ka=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];function xa(e){var t;const{elementType:n,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:a=!1}=e,i=ne(e,ka),l=a?{}:function(e,t,n){return"function"==typeof e?e(t,void 0):e}(r,o),{props:s,internalRef:u}=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:o,className:a}=e;if(!t){const e=ae(null==o?void 0:o.className,null==r?void 0:r.className,a,null==n?void 0:n.className),t=re({},null==n?void 0:n.style,null==o?void 0:o.style,null==r?void 0:r.style),i=re({},n,o,r);return e.length&gt;0&amp;&amp;(i.className=e),Object.keys(t).length&gt;0&amp;&amp;(i.style=t),{props:i,internalRef:void 0}}const i=function(e,t=[]){if(void 0===e)return{};const n={};return Object.keys(e).filter((n=&gt;n.match(/^on[A-Z]/)&amp;&amp;"function"==typeof e[n]&amp;&amp;!t.includes(n))).forEach((t=&gt;{n[t]=e[t]})),n}(re({},o,r)),l=Sa(r),s=Sa(o),u=t(i),c=ae(null==u?void 0:u.className,null==n?void 0:n.className,a,null==o?void 0:o.className,null==r?void 0:r.className),f=re({},null==u?void 0:u.style,null==n?void 0:n.style,null==o?void 0:o.style,null==r?void 0:r.style),d=re({},u,n,s,l);return c.length&gt;0&amp;&amp;(d.className=c),Object.keys(f).length&gt;0&amp;&amp;(d.style=f),{props:d,internalRef:u.ref}}(re({},i,{externalSlotProps:l})),c=function(e,t,n){return void 0===e||"string"==typeof e?t:re({},t,{ownerState:re({},t.ownerState,n)})}(n,re({},s,{ref:bo(u,null==l?void 0:l.ref,null==(t=e.additionalProps)?void 0:t.ref)}),o);return c}function Ea(){const e=vo(uo);return e.$$material||e}const Pa=function(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout((()=&gt;{e.apply(this,r)}),t)}return r.clear=()=&gt;{clearTimeout(n)},r};let Ca;function Oa(){if(Ca)return Ca;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),Ca="reverse",e.scrollLeft&gt;0?Ca="default":(e.scrollLeft=1,0===e.scrollLeft&amp;&amp;(Ca="negative")),document.body.removeChild(e),Ca}function Ta(e,t){const n=e.scrollLeft;if("rtl"!==t)return n;switch(Oa()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function _a(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}const La=So;function ja(e){return e&amp;&amp;e.ownerDocument||document}const Na=function(e){return ja(e).defaultView||window},Ma=["onChange"],Ra={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};function Aa(e){return Uo("MuiSvgIcon",e)}Wo("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);const Ia=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],Da=po("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&amp;&amp;t[`color${fa(n.color)}`],t[`fontSize${fa(n.fontSize)}`]]}})((({theme:e,ownerState:t})=&gt;{var n,r,o,a,i,l,s,u,c,f,d,p,h;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:t.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(n=e.transitions)||null==(r=n.create)?void 0:r.call(n,"fill",{duration:null==(o=e.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(a=e.typography)||null==(i=a.pxToRem)?void 0:i.call(a,20))||"1.25rem",medium:(null==(l=e.typography)||null==(s=l.pxToRem)?void 0:s.call(l,24))||"1.5rem",large:(null==(u=e.typography)||null==(c=u.pxToRem)?void 0:c.call(u,35))||"2.1875rem"}[t.fontSize],color:null!=(f=null==(d=(e.vars||e).palette)||null==(d=d[t.color])?void 0:d.main)?f:{action:null==(p=(e.vars||e).palette)||null==(p=p.action)?void 0:p.active,disabled:null==(h=(e.vars||e).palette)||null==(h=h.action)?void 0:h.disabled,inherit:void 0}[t.color]}})),za=r.forwardRef((function(e,t){const n=go({props:e,name:"MuiSvgIcon"}),{children:o,className:a,color:i="inherit",component:l="svg",fontSize:s="medium",htmlColor:u,inheritViewBox:c=!1,titleAccess:f,viewBox:d="0 0 24 24"}=n,p=ne(n,Ia),h=r.isValidElement(o)&amp;&amp;"svg"===o.type,m=re({},n,{color:i,component:l,fontSize:s,instanceFontSize:e.fontSize,inheritViewBox:c,viewBox:d,hasSvgAsChild:h}),y={};c||(y.viewBox=d);const v=(e=&gt;{const{color:t,fontSize:n,classes:r}=e;return ie({root:["root","inherit"!==t&amp;&amp;`color${fa(t)}`,`fontSize${fa(n)}`]},Aa,r)})(m);return(0,Fo.jsxs)(Da,re({as:l,className:ae(v.root,a),focusable:"false",color:u,"aria-hidden":!f||void 0,role:f?"img":void 0,ref:t},y,p,h&amp;&amp;o.props,{ownerState:m,children:[h?o.props.children:o,f?(0,Fo.jsx)("title",{children:f}):null]}))}));za.muiName="SvgIcon";const Ba=za;function Fa(e,t){function n(n,r){return(0,Fo.jsx)(Ba,re({"data-testid":`${t}Icon`,ref:r},n,{children:e}))}return n.muiName=Ba.muiName,r.memo(r.forwardRef(n))}const $a=Fa((0,Fo.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),Va=Fa((0,Fo.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function Ha(e){return Uo("MuiTabScrollButton",e)}const Ua=Wo("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),Wa=["className","slots","slotProps","direction","orientation","disabled"],qa=po(ca,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[t.root,n.orientation&amp;&amp;t[n.orientation]]}})((({ownerState:e})=&gt;re({width:40,flexShrink:0,opacity:.8,[`&amp;.${Ua.disabled}`]:{opacity:0}},"vertical"===e.orientation&amp;&amp;{width:"100%",height:40,"&amp; svg":{transform:`rotate(${e.isRtl?-90:90}deg)`}}))),Ga=r.forwardRef((function(e,t){var n,r;const o=go({props:e,name:"MuiTabScrollButton"}),{className:a,slots:i={},slotProps:l={},direction:s}=o,u=ne(o,Wa),c=re({isRtl:"rtl"===Ea().direction},o),f=(e=&gt;{const{classes:t,orientation:n,disabled:r}=e;return ie({root:["root",n,r&amp;&amp;"disabled"]},Ha,t)})(c),d=null!=(n=i.StartScrollButtonIcon)?n:$a,p=null!=(r=i.EndScrollButtonIcon)?r:Va,h=xa({elementType:d,externalSlotProps:l.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:c}),m=xa({elementType:p,externalSlotProps:l.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:c});return(0,Fo.jsx)(qa,re({component:"div",className:ae(f.root,a),ref:t,role:null,ownerState:c,tabIndex:null},u,{children:"left"===s?(0,Fo.jsx)(d,re({},h)):(0,Fo.jsx)(p,re({},m))}))}));function Ka(e){return Uo("MuiTabs",e)}const Ya=Wo("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),Xa=ja,Qa=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],Za=(e,t)=&gt;e===t?e.firstChild:t&amp;&amp;t.nextElementSibling?t.nextElementSibling:e.firstChild,Ja=(e,t)=&gt;e===t?e.lastChild:t&amp;&amp;t.previousElementSibling?t.previousElementSibling:e.lastChild,ei=(e,t,n)=&gt;{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const t=o.disabled||"true"===o.getAttribute("aria-disabled");if(o.hasAttribute("tabindex")&amp;&amp;!t)return void o.focus();o=n(e,o)}},ti=po("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[{[`&amp; .${Ya.scrollButtons}`]:t.scrollButtons},{[`&amp; .${Ya.scrollButtons}`]:n.scrollButtonsHideMobile&amp;&amp;t.scrollButtonsHideMobile},t.root,n.vertical&amp;&amp;t.vertical]}})((({ownerState:e,theme:t})=&gt;re({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},e.vertical&amp;&amp;{flexDirection:"column"},e.scrollButtonsHideMobile&amp;&amp;{[`&amp; .${Ya.scrollButtons}`]:{[t.breakpoints.down("sm")]:{display:"none"}}}))),ni=po("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[t.scroller,n.fixed&amp;&amp;t.fixed,n.hideScrollbar&amp;&amp;t.hideScrollbar,n.scrollableX&amp;&amp;t.scrollableX,n.scrollableY&amp;&amp;t.scrollableY]}})((({ownerState:e})=&gt;re({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},e.fixed&amp;&amp;{overflowX:"hidden",width:"100%"},e.hideScrollbar&amp;&amp;{scrollbarWidth:"none","&amp;::-webkit-scrollbar":{display:"none"}},e.scrollableX&amp;&amp;{overflowX:"auto",overflowY:"hidden"},e.scrollableY&amp;&amp;{overflowY:"auto",overflowX:"hidden"}))),ri=po("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=&gt;{const{ownerState:n}=e;return[t.flexContainer,n.vertical&amp;&amp;t.flexContainerVertical,n.centered&amp;&amp;t.centered]}})((({ownerState:e})=&gt;re({display:"flex"},e.vertical&amp;&amp;{flexDirection:"column"},e.centered&amp;&amp;{justifyContent:"center"}))),oi=po("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=&gt;t.indicator})((({ownerState:e,theme:t})=&gt;re({position:"absolute",height:2,bottom:0,width:"100%",transition:t.transitions.create()},"primary"===e.indicatorColor&amp;&amp;{backgroundColor:(t.vars||t).palette.primary.main},"secondary"===e.indicatorColor&amp;&amp;{backgroundColor:(t.vars||t).palette.secondary.main},e.vertical&amp;&amp;{height:"100%",width:2,right:0}))),ai=po((function(e){const{onChange:t}=e,n=ne(e,Ma),o=r.useRef(),a=r.useRef(null),i=()=&gt;{o.current=a.current.offsetHeight-a.current.clientHeight};return La((()=&gt;{const e=Pa((()=&gt;{const e=o.current;i(),e!==o.current&amp;&amp;t(o.current)})),n=Na(a.current);return n.addEventListener("resize",e),()=&gt;{e.clear(),n.removeEventListener("resize",e)}}),[t]),r.useEffect((()=&gt;{i(),t(o.current)}),[t]),(0,Fo.jsx)("div",re({style:Ra,ref:a},n))}),{name:"MuiTabs",slot:"ScrollbarSize"})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&amp;::-webkit-scrollbar":{display:"none"}}),ii={},li=r.forwardRef((function(e,t){const n=go({props:e,name:"MuiTabs"}),o=Ea(),a="rtl"===o.direction,{"aria-label":i,"aria-labelledby":l,action:s,centered:u=!1,children:c,className:f,component:d="div",allowScrollButtonsMobile:p=!1,indicatorColor:h="primary",onChange:m,orientation:y="horizontal",ScrollButtonComponent:v=Ga,scrollButtons:g="auto",selectionFollowsFocus:b,slots:w={},slotProps:S={},TabIndicatorProps:k={},TabScrollButtonProps:x={},textColor:E="primary",value:P,variant:C="standard",visibleScrollbar:O=!1}=n,T=ne(n,Qa),_="scrollable"===C,L="vertical"===y,j=L?"scrollTop":"scrollLeft",N=L?"top":"left",M=L?"bottom":"right",R=L?"clientHeight":"clientWidth",A=L?"height":"width",I=re({},n,{component:d,allowScrollButtonsMobile:p,indicatorColor:h,orientation:y,vertical:L,scrollButtons:g,textColor:E,variant:C,visibleScrollbar:O,fixed:!_,hideScrollbar:_&amp;&amp;!O,scrollableX:_&amp;&amp;!L,scrollableY:_&amp;&amp;L,centered:u&amp;&amp;!_,scrollButtonsHideMobile:!p}),D=(e=&gt;{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:a,centered:i,scrollButtonsHideMobile:l,classes:s}=e;return ie({root:["root",t&amp;&amp;"vertical"],scroller:["scroller",n&amp;&amp;"fixed",r&amp;&amp;"hideScrollbar",o&amp;&amp;"scrollableX",a&amp;&amp;"scrollableY"],flexContainer:["flexContainer",t&amp;&amp;"flexContainerVertical",i&amp;&amp;"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",l&amp;&amp;"scrollButtonsHideMobile"],scrollableX:[o&amp;&amp;"scrollableX"],hideScrollbar:[r&amp;&amp;"hideScrollbar"]},Ka,s)})(I),z=xa({elementType:w.StartScrollButtonIcon,externalSlotProps:S.startScrollButtonIcon,ownerState:I}),B=xa({elementType:w.EndScrollButtonIcon,externalSlotProps:S.endScrollButtonIcon,ownerState:I}),[F,$]=r.useState(!1),[V,H]=r.useState(ii),[U,W]=r.useState(!1),[q,G]=r.useState(!1),[K,Y]=r.useState(!1),[X,Q]=r.useState({overflow:"hidden",scrollbarWidth:0}),Z=new Map,J=r.useRef(null),ee=r.useRef(null),te=()=&gt;{const e=J.current;let t,n;if(e){const n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:Ta(e,o.direction),scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}if(e&amp;&amp;!1!==P){const e=ee.current.children;if(e.length&gt;0){const t=e[Z.get(P)];n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},oe=ko((()=&gt;{const{tabsMeta:e,tabMeta:t}=te();let n,r=0;if(L)n="top",t&amp;&amp;e&amp;&amp;(r=t.top-e.top+e.scrollTop);else if(n=a?"right":"left",t&amp;&amp;e){const o=a?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;r=(a?-1:1)*(t[n]-e[n]+o)}const o={[n]:r,[A]:t?t[A]:0};if(isNaN(V[n])||isNaN(V[A]))H(o);else{const e=Math.abs(V[n]-o[n]),t=Math.abs(V[A]-o[A]);(e&gt;=1||t&gt;=1)&amp;&amp;H(o)}})),le=(e,{animation:t=!0}={})=&gt;{t?function(e,t,n,r={},o=(()=&gt;{})){const{ease:a=_a,duration:i=300}=r;let l=null;const s=t[e];let u=!1;const c=r=&gt;{if(u)return void o(new Error("Animation cancelled"));null===l&amp;&amp;(l=r);const f=Math.min(1,(r-l)/i);t[e]=a(f)*(n-s)+s,f&gt;=1?requestAnimationFrame((()=&gt;{o(null)})):requestAnimationFrame(c)};s===n?o(new Error("Element already at target position")):requestAnimationFrame(c)}(j,J.current,e,{duration:o.transitions.duration.standard}):J.current[j]=e},se=e=&gt;{let t=J.current[j];L?t+=e:(t+=e*(a?-1:1),t*=a&amp;&amp;"reverse"===Oa()?-1:1),le(t)},ue=()=&gt;{const e=J.current[R];let t=0;const n=Array.from(ee.current.children);for(let r=0;r&lt;n.length;r+=1){const o=n[r];if(t+o[R]&gt;e){0===r&amp;&amp;(t=e);break}t+=o[R]}return t},ce=()=&gt;{se(-1*ue())},fe=()=&gt;{se(ue())},de=r.useCallback((e=&gt;{Q({overflow:null,scrollbarWidth:e})}),[]),pe=ko((e=&gt;{const{tabsMeta:t,tabMeta:n}=te();if(n&amp;&amp;t)if(n[N]&lt;t[N]){const r=t[j]+(n[N]-t[N]);le(r,{animation:e})}else if(n[M]&gt;t[M]){const r=t[j]+(n[M]-t[M]);le(r,{animation:e})}})),he=ko((()=&gt;{_&amp;&amp;!1!==g&amp;&amp;Y(!K)}));r.useEffect((()=&gt;{const e=Pa((()=&gt;{J.current&amp;&amp;oe()})),t=Na(J.current);let n;return t.addEventListener("resize",e),"undefined"!=typeof ResizeObserver&amp;&amp;(n=new ResizeObserver(e),Array.from(ee.current.children).forEach((e=&gt;{n.observe(e)}))),()=&gt;{e.clear(),t.removeEventListener("resize",e),n&amp;&amp;n.disconnect()}}),[oe]),r.useEffect((()=&gt;{const e=Array.from(ee.current.children),t=e.length;if("undefined"!=typeof IntersectionObserver&amp;&amp;t&gt;0&amp;&amp;_&amp;&amp;!1!==g){const n=e[0],r=e[t-1],o={root:J.current,threshold:.99},a=new IntersectionObserver((e=&gt;{W(!e[0].isIntersecting)}),o);a.observe(n);const i=new IntersectionObserver((e=&gt;{G(!e[0].isIntersecting)}),o);return i.observe(r),()=&gt;{a.disconnect(),i.disconnect()}}}),[_,g,K,null==c?void 0:c.length]),r.useEffect((()=&gt;{$(!0)}),[]),r.useEffect((()=&gt;{oe()})),r.useEffect((()=&gt;{pe(ii!==V)}),[pe,V]),r.useImperativeHandle(s,(()=&gt;({updateIndicator:oe,updateScrollButtons:he})),[oe,he]);const me=(0,Fo.jsx)(oi,re({},k,{className:ae(D.indicator,k.className),ownerState:I,style:re({},V,k.style)}));let ye=0;const ve=r.Children.map(c,(e=&gt;{if(!r.isValidElement(e))return null;const t=void 0===e.props.value?ye:e.props.value;Z.set(t,ye);const n=t===P;return ye+=1,r.cloneElement(e,re({fullWidth:"fullWidth"===C,indicator:n&amp;&amp;!F&amp;&amp;me,selected:n,selectionFollowsFocus:b,onChange:m,textColor:E,value:t},1!==ye||!1!==P||e.props.tabIndex?{}:{tabIndex:0}))})),ge=(()=&gt;{const e={};e.scrollbarSizeListener=_?(0,Fo.jsx)(ai,{onChange:de,className:ae(D.scrollableX,D.hideScrollbar)}):null;const t=_&amp;&amp;("auto"===g&amp;&amp;(U||q)||!0===g);return e.scrollButtonStart=t?(0,Fo.jsx)(v,re({slots:{StartScrollButtonIcon:w.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:z},orientation:y,direction:a?"right":"left",onClick:ce,disabled:!U},x,{className:ae(D.scrollButtons,x.className)})):null,e.scrollButtonEnd=t?(0,Fo.jsx)(v,re({slots:{EndScrollButtonIcon:w.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:B},orientation:y,direction:a?"left":"right",onClick:fe,disabled:!q},x,{className:ae(D.scrollButtons,x.className)})):null,e})();return(0,Fo.jsxs)(ti,re({className:ae(D.root,f),ownerState:I,ref:t,as:d},T,{children:[ge.scrollButtonStart,ge.scrollbarSizeListener,(0,Fo.jsxs)(ni,{className:D.scroller,ownerState:I,style:{overflow:X.overflow,[L?"margin"+(a?"Left":"Right"):"marginBottom"]:O?void 0:-X.scrollbarWidth},ref:J,children:[(0,Fo.jsx)(ri,{"aria-label":i,"aria-labelledby":l,"aria-orientation":"vertical"===y?"vertical":null,className:D.flexContainer,ownerState:I,onKeyDown:e=&gt;{const t=ee.current,n=Xa(t).activeElement;if("tab"!==n.getAttribute("role"))return;let r="horizontal"===y?"ArrowLeft":"ArrowUp",o="horizontal"===y?"ArrowRight":"ArrowDown";switch("horizontal"===y&amp;&amp;a&amp;&amp;(r="ArrowRight",o="ArrowLeft"),e.key){case r:e.preventDefault(),ei(t,n,Ja);break;case o:e.preventDefault(),ei(t,n,Za);break;case"Home":e.preventDefault(),ei(t,null,Za);break;case"End":e.preventDefault(),ei(t,null,Ja)}},ref:ee,role:"tablist",children:ve}),F&amp;&amp;me]}),ge.scrollButtonEnd]}))})),si=li;var ui=["children","value","index"];function ci(){return ci=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},ci.apply(this,arguments)}function fi(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}n(4216);var di=n(755);function pi(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return hi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?hi(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 hi(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var mi=function(e){var t=e.options,n=e.selectedValue,o=e.unselectedValue,a=e.onChange,i=e.isInBasket,l=e.onClick,s=e.loading,u=pi((0,r.useState)(!1),2),c=u[0],f=u[1],d=(0,r.useRef)(null),p=function(e){d.current&amp;&amp;!d.current.contains(e.target)&amp;&amp;f(!1)};(0,r.useEffect)((function(){return document.addEventListener("click",p),function(){return document.removeEventListener("click",p)}}),[]);var h=function(e){a(e),f(!1)};return r.createElement(r.Fragment,null,r.createElement("div",{className:"relative",ref:d},r.createElement("div",{className:"flex h-full items-center border rounded-l-xl text-xs text-left px-10 py-2 cursor-pointer bg-white",onClick:function(e){e.stopPropagation(),e.preventDefault(),f((function(e){return!e}))}},r.createElement("span",{className:"inline-block min-w-[4ch]"},n||(i?"0":o)),r.createElement("span",{className:"material-icons ml-2"},"expand_more")),c&amp;&amp;r.createElement("div",{className:"absolute top-full left-0 w-full border rounded-xl bg-white z-10 shadow-lg"},i&amp;&amp;r.createElement("div",{key:"0",className:"text-left px-6 py-4 hover:bg-babyBlue40 cursor-pointer",onClick:function(e){e.stopPropagation(),e.preventDefault(),h(0)}},"0"),t.map((function(e,t){return r.createElement("div",{key:t,className:"text-left text-sm px-6 py-4 hover:bg-babyBlue40 cursor-pointer",onClick:function(t){t.stopPropagation(),t.preventDefault(),h(e)}},e)})))),r.createElement("button",{onClick:l,className:"button translate3d-0 rounded-none text-xs py-8 px-12 whitespace-nowrap ".concat(i?"bg-green button--default-green":"button--default-blue")},r.createElement("span",{className:"material-icons text-base leading-[0] align-sub ".concat(s&amp;&amp;"animate-spin"),"aria-hidden":"true"},s?"refresh":i&amp;&amp;0==n?"remove_shopping_cart":"shopping_cart")))};const yi=function(e){var t=pi((0,r.useState)(e.props.amountInBasket&gt;0?e.props.amountInBasket:0),2),n=t[0],o=t[1],a=pi((0,r.useState)(!1),2),i=a[0],s=a[1],u=pi((0,r.useState)(e.props.amountInBasket&gt;0),2),c=u[0],f=u[1],d=pi((0,r.useState)(!1),2),p=d[0],h=d[1],m=pi((0,r.useState)(!1),2),y=m[0],v=m[1],g=(0,r.useRef)(null);return(0,r.useRef)(null),(0,r.useEffect)((function(){g.current&amp;&amp;h(g.current.clientHeight+5&lt;g.current.scrollHeight),e.open==e.props.contentId&amp;&amp;(v(!0),document.getElementById(e.open).scrollIntoView({behavior:"smooth"}))}),[]),r.createElement(r.Fragment,null,r.createElement("div",{className:"container h-full flex flex-col p-0",id:e.props.contentId},r.createElement("div",{className:"rounded-xl shadow-lg flex flex-col duration-300 transition-all will-change-transform check-in-viewport"},e.usePageViewsForMaterials?r.createElement("a",{href:e.props.targetUrl},r.createElement("div",{className:"aspect-4/3 rounded-xl bg-babyBlue40 flex justify-center align-center"},r.createElement(l,{className:"aspect-4/3 rounded-xl text-xs h-full w-full object-cover duration-300 transition-all will-change-transform hover:scale-105",src:e.props.highlightImage}))):r.createElement("div",{className:"aspect-4/3 rounded-xl bg-babyBlue40 flex justify-center align-center"},r.createElement(l,{className:"aspect-4/3 rounded-xl text-xs h-full w-full object-cover",src:e.props.highlightImage}))),r.createElement("div",{className:"flex flex-wrap mt-16 basis-40 gap-10"},e.props.orderQuantity&amp;&amp;r.createElement("div",{className:"flex border border-2 rounded-xl ".concat(c?"border-green":"border-blue")},r.createElement(mi,{options:e.props.orderQuantity,selectedValue:n,unselectedValue:e.quantityText,onChange:function(e){var t=parseInt(e);o(t)},isInBasket:c,onClick:function(){var t,r;t=e.props.productIdField,r=n,new Promise((function(n,o){var a=new XMLHttpRequest;0===r?a.open("POST","/api/order/removeBasketItem?lang=".concat(e.props.lang,"&amp;productId=").concat(t),!0):a.open("PUT","/api/order/upsertBasketItem?lang=".concat(e.props.lang,"&amp;productId=").concat(t,"&amp;quantity=").concat(r),!0),a.send(),s(!0),a.onreadystatechange=function(){4===this.readyState&amp;&amp;(200===this.status?(f(r&gt;0),new BroadcastChannel(di.f).postMessage(r),n()):o("Failed to update basket for product ID: ".concat(t)),s(!1))}}))},loading:i})),e.props.fileUrl&amp;&amp;r.createElement("a",{href:e.props.fileUrl,target:"_blank",className:"button button--default-blue flex items-center shrink rounded-xl text-xs py-8 px-12 sm:px-8 md:px-12 whitespace-nowrap"},"PDF ",r.createElement("span",{className:"material-icons text-base ml-6 leading-[0] align-sub","aria-hidden":"true"},"picture_as_pdf"))),r.createElement("div",{className:"py-16"},r.createElement("h4",{className:"font-bold leading-tight mb-6"},e.props.title),r.createElement("h3",{ref:g,className:"leading-tight text-sm ".concat(y?"":"line-clamp-2")},e.props.description),p&amp;&amp;r.createElement("button",{onClick:function(){v((function(t){var n=new URLSearchParams(window.location.search);t?n.delete("open"):n.has("open")?n.set("open",e.props.contentId):n.append("open",e.props.contentId);var r="".concat(window.location.pathname,"?").concat(n.toString());return window.history.replaceState(null,"",r),!t}))},className:"font-eina-semibold text-orionBlue text-xs mt-4"},y?e.closeText+" -":e.viewMoreText+" +"),r.createElement("div",{className:"flex flex-wrap gap-8 text-xs font-source-sans-pro font-light mt-12"},e.props.allTags&amp;&amp;e.props.allTags.map((function(e){return r.createElement("span",{className:"rounded-full px-8 py-5 bg-babyBlue40",key:e.id},e.name)}))))))};var vi=n(3082),gi=n.n(vi);function bi(e){return bi="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},bi(e)}function wi(){wi=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",i=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&amp;&amp;t.prototype instanceof f?t:f,a=Object.create(o.prototype),i=new x(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=w(i,n);if(l){if(l===c)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&amp;&amp;n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===c)continue;return{value:s.arg,done:n.done}}"throw"===s.type&amp;&amp;(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var c={};function f(){}function d(){}function p(){}var h={};l(h,o,(function(){return this}));var m=Object.getPrototypeOf,y=m&amp;&amp;m(m(E([])));y&amp;&amp;y!==t&amp;&amp;n.call(y,o)&amp;&amp;(h=y);var v=p.prototype=f.prototype=Object.create(h);function g(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function r(o,a,i,l){var s=u(e[o],e,a);if("throw"!==s.type){var c=s.arg,f=c.value;return f&amp;&amp;"object"==bi(f)&amp;&amp;n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return r("throw",e,i,l)}))}l(s.arg)}var o;this._invoke=function(e,n){function a(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(a,a):a()}}function w(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&amp;&amp;(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&amp;&amp;(t.method="next",t.arg=void 0),t.delegate=null,c):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function S(e){var t={tryLoc:e[0]};1 in e&amp;&amp;(t.catchLoc=e[1]),2 in e&amp;&amp;(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function E(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,a=function t(){for(;++r&lt;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 a.next=a}}return{next:P}}function P(){return{value:void 0,done:!0}}return d.prototype=p,l(v,"constructor",p),l(p,"constructor",d),d.displayName=l(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&amp;&amp;e.constructor;return!!t&amp;&amp;(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,i,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},g(b.prototype),l(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,o,a){void 0===a&amp;&amp;(a=Promise);var i=new b(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},g(v),l(v,i,"Generator"),l(v,o,(function(){return this})),l(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=E,x.prototype={constructor:x,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(k),!e)for(var t in this)"t"===t.charAt(0)&amp;&amp;n.call(this,t)&amp;&amp;!isNaN(+t.slice(1))&amp;&amp;(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 i.type="throw",i.arg=e,t.next=n,r&amp;&amp;(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o&gt;=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc&lt;=this.prev){var l=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(l&amp;&amp;s){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0);if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r&gt;=0;--r){var o=this.tryEntries[r];if(o.tryLoc&lt;=this.prev&amp;&amp;n.call(o,"finallyLoc")&amp;&amp;this.prev&lt;o.finallyLoc){var a=o;break}}a&amp;&amp;("break"===e||"continue"===e)&amp;&amp;a.tryLoc&lt;=t&amp;&amp;t&lt;=a.finallyLoc&amp;&amp;(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(i)},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&amp;&amp;t&amp;&amp;(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&amp;&amp;(this.arg=void 0),c}},e}function Si(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ki(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Si(Object(n),!0).forEach((function(t){xi(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Si(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function xi(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ei(e,t,n,r,o,a,i){try{var l=e[a](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function Pi(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){Ei(a,r,o,i,l,"next",e)}function l(e){Ei(a,r,o,i,l,"throw",e)}i(void 0)}))}}function Ci(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||Oi(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 Oi(e,t){if(e){if("string"==typeof e)return Ti(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ti(e,t):void 0}}function Ti(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}const _i=function(e){return r.createElement("div",{className:"mb-20"},r.createElement("label",{htmlFor:e.name},e.header,e.required?" (*)":""),e.helpText&amp;&amp;r.createElement("div",{className:"epiform-tooltip-icon"},r.createElement("div",{className:"epiform-tooltip"},r.createElement("button",{className:"absolute md:hidden right-[15px] top-[5px]"},r.createElement("span",{className:"material-icons text-orionBlue text-[2rem]"},"Óóç")),r.createElement("div",null,e.helpText))),r.createElement("input",{type:"text",name:e.name,className:"block w-full border border-black px-8 py-8",onChange:function(t){return e.onChange(t.target.value)},value:e.value,placeholder:e.placeholder,required:e.required}))};function Li(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ji(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ji(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 ji(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var Ni=function(e){var t=e.options,n=e.selectedValue,o=e.unselectedValue,a=e.onChange,i=e.isInBasket,l=e.loading,s=Li((0,r.useState)(!1),2),u=s[0],c=s[1],f=(0,r.useRef)(null),d=function(e){f.current&amp;&amp;!f.current.contains(e.target)&amp;&amp;c(!1)};return(0,r.useEffect)((function(){return document.addEventListener("click",d),function(){return document.removeEventListener("click",d)}}),[]),r.createElement(r.Fragment,null,r.createElement("div",{className:"relative",ref:f},r.createElement("div",{className:"flex h-full items-center border rounded-l-xl text-xs text-left px-10 py-2 cursor-pointer bg-white",onClick:function(e){e.stopPropagation(),e.preventDefault(),c((function(e){return!e}))}},r.createElement("span",{className:"inline-block min-w-[4ch]"},n||(i?"0":o)),r.createElement("span",{className:"material-icons ml-2"},"expand_more")),u&amp;&amp;r.createElement("div",{className:"absolute top-full left-0 w-full border rounded-xl bg-white z-10 shadow-lg"},t.map((function(e,t){return r.createElement("div",{key:t,className:"text-left text-sm px-6 py-4 hover:bg-babyBlue40 cursor-pointer",onClick:function(t){t.stopPropagation(),t.preventDefault(),function(e){a(e),c(!1)}(e)}},e)})))),r.createElement("div",{className:"translate3d-0 rounded-none text-xs py-8 px-12 whitespace-nowrap ".concat(i?"bg-green button--default-green":"button--default-blue")},r.createElement("span",{className:"material-icons text-base leading-[0] align-sub ".concat(l&amp;&amp;"animate-spin"),"aria-hidden":"true"},l?"refresh":i&amp;&amp;0==n?"remove_shopping_cart":"shopping_cart")))};const Mi=function(e){var t=Li((0,r.useState)(e.props.quantity),2),n=t[0],o=t[1];return r.createElement(r.Fragment,null,r.createElement("div",{className:"w-full flex flex-wrap"},r.createElement("div",{className:"self-center w-full basis-full lg:w-3/5 lg:basis-3/5 py-6"},e.props.productName),r.createElement("div",{className:"flex justify-end w-full basis-full lg:w-2/5 lg:basis-2/5 pl-12 py-6 lg:pl-0 lg:py-18"},r.createElement("div",{className:"flex flex-wrap gap-10"},r.createElement("div",null,r.createElement("div",{className:"flex border border-2 rounded-xl border-green"},r.createElement(Ni,{options:e.props.orderableQuantity,selectedValue:n,unselectedValue:0,onChange:function(t){var n=parseInt(t);o(n),e.updateItem(e.props.productId,n)},isInBasket:!0,loading:!1}))),r.createElement("button",{className:"button button--default-red hover:bg-darkRed py-0 px-8 shrink rounded-xl text-aesculapius font-semibold font-source-sans-pro ".concat(e.disabled&amp;&amp;"hidden"),title:e.translations.removeProductButtonText,onClick:function(){return e.removeItem(e.props.productId)}},r.createElement("span",{className:"material-icons text-lg mx-4","aria-hidden":"true"},"delete"))))))},Ri=function(e){return r.createElement("div",{className:"h-full flex items-center p-0 mb-24 ".concat(e.half?"w-full basis-full md:w-1/3 md:basis-1/3":"w-full basis-full")},r.createElement("div",{className:"my-6"},r.createElement("input",{className:"w-20 h-20 mr-10",type:"checkbox",name:e.name,id:e.name,onChange:function(t){e.onChange(t.target.checked)},checked:e.checked})),r.createElement("label",{htmlFor:e.name},e.header,e.required?" (*)":""),e.helpText&amp;&amp;r.createElement("div",{className:"epiform-tooltip-icon"},r.createElement("div",{className:"epiform-tooltip"},r.createElement("button",{className:"absolute md:hidden right-[15px] top-[5px]"},r.createElement("span",{className:"material-icons text-orionBlue text-[2rem]"},"Óóç")),r.createElement("div",null,e.helpText))))},Ai=function(e){if(e.options.length&gt;0)var t=e.options.map((function(e,t){if(e)return r.createElement("option",{key:e.code,value:e.code},e.name)}));return r.createElement("div",{className:"mb-20"},r.createElement("label",{htmlFor:e.name},e.header,e.required?" (*)":""),e.helpText&amp;&amp;r.createElement("div",{className:"epiform-tooltip-icon"},r.createElement("div",{className:"epiform-tooltip"},r.createElement("button",{className:"absolute md:hidden right-[15px] top-[5px]"},r.createElement("span",{className:"material-icons text-orionBlue text-[2rem]"},"Óóç")),r.createElement("div",null,e.helpText))),r.createElement("select",{id:e.name,required:e.required,value:e.value,onChange:function(t){return e.onChange(t.target.value)},className:"w-full",name:e.name},t))},Ii=function(e){return r.createElement("div",{className:"mb-20"},r.createElement("label",{htmlFor:e.name},e.header,e.required?" (*)":""),e.helpText&amp;&amp;r.createElement("div",{className:"epiform-tooltip-icon"},r.createElement("div",{className:"epiform-tooltip"},r.createElement("button",{className:"absolute md:hidden right-[15px] top-[5px]"},r.createElement("span",{className:"material-icons text-orionBlue text-[2rem]"},"Óóç")),r.createElement("div",null,e.helpText))),r.createElement("textarea",{name:e.name,value:e.value,required:e.required,placeholder:e.placeholder,onChange:function(t){return e.onChange(t.target.value)},className:"block w-full border border-black px-8 py-8"}))};function Di(e){return Di="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},Di(e)}function zi(){zi=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",a=r.asyncIterator||"@@asyncIterator",i=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&amp;&amp;t.prototype instanceof f?t:f,a=Object.create(o.prototype),i=new x(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=w(i,n);if(l){if(l===c)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&amp;&amp;n.abrupt("return",n.arg);r="executing";var s=u(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===c)continue;return{value:s.arg,done:n.done}}"throw"===s.type&amp;&amp;(r="completed",n.method="throw",n.arg=s.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var c={};function f(){}function d(){}function p(){}var h={};l(h,o,(function(){return this}));var m=Object.getPrototypeOf,y=m&amp;&amp;m(m(E([])));y&amp;&amp;y!==t&amp;&amp;n.call(y,o)&amp;&amp;(h=y);var v=p.prototype=f.prototype=Object.create(h);function g(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){function r(o,a,i,l){var s=u(e[o],e,a);if("throw"!==s.type){var c=s.arg,f=c.value;return f&amp;&amp;"object"==Di(f)&amp;&amp;n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(f).then((function(e){c.value=e,i(c)}),(function(e){return r("throw",e,i,l)}))}l(s.arg)}var o;this._invoke=function(e,n){function a(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(a,a):a()}}function w(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&amp;&amp;(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return c;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return c}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,c;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&amp;&amp;(t.method="next",t.arg=void 0),t.delegate=null,c):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,c)}function S(e){var t={tryLoc:e[0]};1 in e&amp;&amp;(t.catchLoc=e[1]),2 in e&amp;&amp;(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function k(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(S,this),this.reset(!0)}function E(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,a=function t(){for(;++r&lt;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 a.next=a}}return{next:P}}function P(){return{value:void 0,done:!0}}return d.prototype=p,l(v,"constructor",p),l(p,"constructor",d),d.displayName=l(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&amp;&amp;e.constructor;return!!t&amp;&amp;(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,i,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},g(b.prototype),l(b.prototype,a,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,o,a){void 0===a&amp;&amp;(a=Promise);var i=new b(s(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},g(v),l(v,i,"Generator"),l(v,o,(function(){return this})),l(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=E,x.prototype={constructor:x,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(k),!e)for(var t in this)"t"===t.charAt(0)&amp;&amp;n.call(this,t)&amp;&amp;!isNaN(+t.slice(1))&amp;&amp;(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 i.type="throw",i.arg=e,t.next=n,r&amp;&amp;(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o&gt;=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc&lt;=this.prev){var l=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(l&amp;&amp;s){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0);if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}else if(l){if(this.prev&lt;a.catchLoc)return r(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev&lt;a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r&gt;=0;--r){var o=this.tryEntries[r];if(o.tryLoc&lt;=this.prev&amp;&amp;n.call(o,"finallyLoc")&amp;&amp;this.prev&lt;o.finallyLoc){var a=o;break}}a&amp;&amp;("break"===e||"continue"===e)&amp;&amp;a.tryLoc&lt;=t&amp;&amp;t&lt;=a.finallyLoc&amp;&amp;(a=null);var i=a?a.completion:{};return i.type=e,i.arg=t,a?(this.method="next",this.next=a.finallyLoc,c):this.complete(i)},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&amp;&amp;t&amp;&amp;(this.next=t),c},finish:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),k(n),c}},catch:function(e){for(var t=this.tryEntries.length-1;t&gt;=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;k(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&amp;&amp;(this.arg=void 0),c}},e}function Bi(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Fi(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bi(Object(n),!0).forEach((function(t){$i(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bi(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}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}function Vi(e,t,n,r,o,a,i){try{var l=e[a](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function Hi(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){Vi(a,r,o,i,l,"next",e)}function l(e){Vi(a,r,o,i,l,"throw",e)}i(void 0)}))}}function Ui(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Wi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Wi(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 Wi(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var qi=n(2845),Gi={splitVideoBlock:function(e){var t=j((0,r.useState)(window.innerWidth),2),n=t[0],o=t[1],a=j((0,r.useState)(!1),2),l=a[0],s=a[1],u=(0,r.useRef)();function c(){o(window.innerWidth)}(0,r.useEffect)((function(){return window.addEventListener("resize",c),function(){window.removeEventListener("resize",c)}}),[]);var f=n&lt;=768;return r.createElement("div",{className:"split-video component my-50 md:my-90"},r.createElement("div",{className:"container xl:max-w-screen-xl"},r.createElement("div",{className:"split-highlight overflow-hidden rounded-lg shadow-lg block md:items-center duration-300 transition-all will-change-transform lg:flex lg:hover:-translate-y-10 ".concat(e.showImageOnTheRight?"lg:flex-row-reverse":""),onMouseEnter:function(){var e;f||(s(!0),null===(e=u.current)||void 0===e||e.play())},onMouseLeave:function(){var e;f||(s(!1),null===(e=u.current)||void 0===e||e.pause())}},r.createElement("div",{className:"split-video__video flex-shrink-0 mb-25 lg:h-full lg:mb-0 relative lg:w-1/2"},r.createElement("div",{className:"pb-[56.25%]"},r.createElement("div",{className:"absolute object-cover w-full lg:h-full"},r.createElement(L,{onEnter:function(){var e;f&amp;&amp;(s(!0),null===(e=u.current)||void 0===e||e.play())},onLeave:function(){var e;f&amp;&amp;(s(!1),null===(e=u.current)||void 0===e||e.pause())},topOffset:"40%",bottomOffset:"40%"},r.createElement("div",{className:"relative h-full aspect-video container p-0"},r.createElement(i.Z,{className:"absolute top-0",width:"100%",height:"100%",url:e.videoUrl,muted:!0,controls:!0,playsinline:!0,playing:l})))))),r.createElement("div",{className:"split-video__content flex-grow pb-30 px-20 lg:p-60"},null!=e.heading&amp;&amp;r.createElement("h2",{className:"h3 mt-0"},e.heading),null!=e.intro&amp;&amp;r.createElement("p",{className:"mb-25"},e.intro),null!=e.link&amp;&amp;r.createElement("a",{href:e.link.url,className:"arrow-link group hover:text-orionMiddleBlue"},e.link.text,r.createElement("span",{className:"material-icons transition-transform group-hover:translate-x-5"},"Ó£§"))))))},videoBlock:function(e){var t=u((0,r.useState)(!1),2),n=t[0],o=t[1],a=u((0,r.useState)(!1),2),c=(a[0],a[1]),f=(0,r.useRef)();return(0,r.useEffect)((function(){var e,t;f&amp;&amp;(n?null===(e=f.current)||void 0===e||e.play():null===(t=f.current)||void 0===t||t.pause())})),(0,r.useEffect)((function(){n&amp;&amp;c(!0)}),[n]),r.createElement("div",null,r.createElement("div",{className:"w-full relative overflow-hidden"},r.createElement("div",{className:"absolute aspect-video top-1/2 h-full w-full bg-orionBlue"}),r.createElement("div",{className:"container xl:max-w-screen-xl"},r.createElement("div",{className:"relative h-full aspect-video container p-0"},r.createElement("div",{className:"absolute top-0 z-50 transition duration-500 ease-in-out w-full ".concat(n?"opacity-0 invisible":"opacity-100 visible")},r.createElement(l,s({className:"aspect-video object-cover hidden sm:block w-full"},e.stillImage)),r.createElement(l,s({className:"aspect-video object-cover sm:hidden w-full"},e.mobileStillImage)),r.createElement("button",{className:"play absolute -mt-35 top-1/2 right-1/2 translate-x-1/2",onClick:function(){return o(!0)},"aria-label":"play"})),r.createElement(i.Z,{className:"absolute top-0",width:"100%",height:"100%",url:e.videoUrl,controls:!0,playing:n})))),r.createElement("div",{className:"bg-orionBlue"},r.createElement("div",{className:"container xl:max-w-screen-xl flex flex-col lg:flex-row lg:gap-80"},r.createElement("div",{className:"grow mt-30 lg:mb-100 lg:mt-50 text-white lg:w-7/12"},r.createElement("h3",{className:"h3 mt-0"},e.heading)),r.createElement("div",{className:"grow mb-60 lg:mb-100 lg:mt-50 text-white lg:w-5/12"},e.intro))))},newsroom:function(e){var t,n=q((0,r.useState)(),2),o=n[0],a=n[1],i=q((0,r.useState)({}),2),l=i[0],s=i[1],u=q((0,r.useState)(),2),c=u[0],f=u[1],d=q((0,r.useState)(),2),p=d[0],h=d[1],m=q((0,r.useState)({}),2),y=m[0],v=m[1],g=q((0,r.useState)({}),2),b=g[0],w=g[1],S=q((0,r.useState)({}),2),k=S[0],x=S[1],E=q((0,r.useState)(),2),P=E[0],C=E[1],O=q((0,r.useState)(1),2),T=O[0],_=O[1],L=q((0,r.useState)(!1),2),j=L[0],N=L[1],R=q((0,r.useState)(!1),2),D=R[0],B=R[1],$=q((0,r.useState)(!1),2),H=$[0],G=$[1],K=q((0,r.useState)(!0),2),Y=K[0],X=K[1];function Q(){return Q=V(F().mark((function e(){var t,n,r=arguments;return F().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.length&gt;0&amp;&amp;void 0!==r[0]?r[0]:"",e.next=3,fetch(t,{method:"POST",headers:{accept:"application/json"}});case 3:return n=e.sent,e.abrupt("return",n.json());case 5:case"end":return e.stop()}}),e)}))),Q.apply(this,arguments)}(0,r.useEffect)((function(){}),[]);var Z,J=(0,r.useRef)(null);Z=J,(0,r.useEffect)((function(){function e(e){Z.current&amp;&amp;!Z.current.contains(e.target)&amp;&amp;N(!1)}return document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[Z]);var ee=null==o?void 0:o.map((function(e,t){return r.createElement("button",{key:t,className:"flex-1 sm:flex-none px-8 sm:px-48 py-16 group ".concat(e.selected?"border-b-4 border-orionBlue -mb-1":null),onClick:function(){return function(e){w((function(t){return U(U({},t),{type:e,theme:null,reltype:null,keywords:null,page:null,showKeywords:null})}))}(e.value)}},r.createElement("span",{className:"inline-block transition-all group-hover:-translate-y-4"},e.text))}));if(l&amp;&amp;l.length&gt;0)var te=null==l?void 0:l.map((function(e,t){return r.createElement("li",{key:e.value},r.createElement("button",{className:"dropdown-item text-base text-left py-6 px-4 font-normal block w-full whitespace-nowrap hover:text-blue",onClick:function(){return function(e){N(!1),w((function(t){return U(U({},t),{year:e,page:null})}))}(e.value)},href:"#"},e.text))})),ne=r.createElement("div",{className:"hidden md:flex ml-32 justify-center",ref:J},r.createElement("div",{className:"dropdown relative"},r.createElement("button",{className:"button grow font-eina sm:grow-0 whitespace-nowrap ".concat(j?"button--outline-blue translate3d-0 lock-hover":"button--outline-black"),type:"button",id:"dropdownMenu","data-bs-toggle":"dropdown","aria-expanded":"false",onClick:function(){return N(!j)}},b.year?b.year:l[0].text,r.createElement("span",{className:"material-icons align-bottom ml-5 -mr-5 ".concat(j?"rotate-180":"")},"expand_more")),r.createElement("ul",{className:"shadow-xl min-w-full bg-white absolute z-10 float-left py-2 list-none text-left rounded-lg mt-1 m-0 px-10 py-5 bg-clip-padding ".concat(j?"block":"hidden"),"aria-labelledby":"dropdownMenu"},te)));if(y&amp;&amp;y.length&gt;0)var re=null==y?void 0:y.map((function(e,t){return r.createElement("button",{key:t,className:"button button-small whitespace-nowrap ".concat(e.selected?"button--default-blue":"button--default-light-blue"),onClick:function(){return function(e){if(b.keywords)var t=b.keywords.split("~");else t=[];if(t.includes(e))for(var n=0;n&lt;t.length;n++)t[n]===e&amp;&amp;t.splice(n,1);else t.push(e);w((function(e){return U(U({},e),{keywords:t.join("~"),page:null})}))}(e.value)}},e.text)}));if(k.length&gt;0)var oe=k.map((function(e,t){if(e)return r.createElement(M.Z,{key:e.id,partialVisibility:!0,once:!0},r.createElement(z,{props:e,loading:D}))}));return(0,r.useEffect)((function(){t=Y?window.location.search:"?"+(t=Object.keys(b).map((function(e){if(null!=b[e])return e+"="+b[e]})).filter(Boolean).join("&amp;")),B(!0);var e=window.location.protocol+"//"+window.location.host+window.location.pathname+t;window.history.replaceState(null,null,e),function(){return Q.apply(this,arguments)}(window.location.protocol+"//"+window.location.host+window.location.pathname+t).then((function(e){if(C(e.pagesCount),_(e.page),a(e.typeFilter.options),e.items?x(e.items):x(null),e.yearFilter?s(e.yearFilter.options):s(null),e.themeFilter?f(e.themeFilter):f(null),e.releaseTypeFilter?h(e.releaseTypeFilter):h(null),e.keywordsFilter?v(e.keywordsFilter.options):v(null),B(!1),Y){var t=window.location.search,n=new URLSearchParams(t);w((function(e){return U(U({},e),{type:n.get("type"),theme:n.get("theme"),keywords:n.get("keywords"),reltype:n.get("reltype"),showKeywords:n.get("showKeywords"),year:n.get("year")})}))}X(!1)})),t=Object.keys(b).map((function(e){return e+"="+b[e]})).join("&amp;")}),[b]),r.createElement("div",{className:"mb-64"},r.createElement("div",{className:"flex border-b border-grey mb-20"},ee,ne),c&amp;&amp;r.createElement(I,{props:c,filter:function(e){w((function(t){return U(U({},t),{theme:e,keywords:null,page:null})}))}}),p&amp;&amp;r.createElement(I,{props:p,filter:function(e){w((function(t){return U(U({},t),{reltype:e,keywords:null,page:null})}))}}),b.type&amp;&amp;"Articles"==b.type&amp;&amp;!y&amp;&amp;!D&amp;&amp;r.createElement("div",{className:"text-orionBlue hidden sm:block"},r.createElement("button",{onClick:function(){return w((function(e){return U(U({},e),{showKeywords:"true"})})),void G(!0)}},e.showKeywordsLabel)),y&amp;&amp;y.length&gt;0&amp;&amp;r.createElement("div",{className:"sm:flex flex-wrap gap-10 md:gap-x-20 mb-30 ".concat(H?"flex":"hidden")},re),r.createElement("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-20 lg:gap-30 mt-50"},oe),P&gt;1&amp;&amp;r.createElement("div",{className:"mt-50"},r.createElement(A(),W({breakLabel:"...",nextLabel:r.createElement("span",{className:"material-icons mt-8"},"Óóà"),previousLabel:r.createElement("span",{className:"material-icons mt-8"},"ÓóÑ"),pageRangeDisplayed:3,marginPagesDisplayed:2,pageCount:P,renderOnZeroPageCount:null,containerClassName:"flex inline-flex w-full items-center justify-center text-orionBlue",pageClassName:"px-8 hover:orionMiddleBlue",breakClassName:"",previousClassName:"px-8 hover:text-orionMiddleBlue",nextClassName:"px-8 hover:text-orionMiddleBlue",activeClassName:"font-eina-semibold",forcePage:T-1,onPageChange:function(e){return function(e){document.querySelector(".newsroom-page h1").scrollIntoView({block:"end",behavior:"smooth"}),w((function(t){return U(U({},t),{page:e})}))}(e.selected+1)}},"renderOnZeroPageCount",null))))},search:te,tabsBlock:function(e){var t,n,o=(t=(0,r.useState)(0),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&amp;&amp;e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&amp;&amp;(a.push(r.value),!t||a.length!==t);i=!0);}catch(e){l=!0,o=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw o}}return a}}(t,n)||function(e,t){if(e){if("string"==typeof e)return fi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?fi(e,t):void 0}}(t,n)||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.")}()),a=o[0],i=o[1];function s(e){var t=e.children,n=e.value,o=e.index,a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r&lt;a.length;r++)n=a[r],t.indexOf(n)&gt;=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r&lt;a.length;r++)n=a[r],t.indexOf(n)&gt;=0||Object.prototype.propertyIsEnumerable.call(e,n)&amp;&amp;(o[n]=e[n])}return o}(e,ui);return r.createElement("div",ci({role:"tabpanel",hidden:n!==o,id:"simple-tabpanel-".concat(o),"aria-labelledby":"simple-tab-".concat(o)},a),n===o&amp;&amp;r.createElement(wa,null,t))}return r.createElement(wa,null,r.createElement(si,{className:"",TabIndicatorProps:{style:{backgroundColor:"#006cb6",height:3}},value:a,onChange:function(e,t){i(t)},variant:"scrollable",scrollButtons:!0,allowScrollButtonsMobile:!0,"aria-label":"scrollable force tabs example"},e.items.map((function(e,t){return n=t,o=e.heading,r.createElement(ya,{className:"!max-w-none !min-w-0 !normal-case  !px-15 !py-15 !w-auto !whitespace-nowrap !text-black !text-sm md:!px-30 md:!py-30 md:!text-base hover:!text-orionBlue",label:o,key:n,value:n});var n,o}))),e.items.map((function(e,t){return n=e,o=t,r.createElement(s,{value:a,index:o,key:o},r.createElement("div",{className:"border-t border-gray-300 md:flex md:flex-row-reverse md:gap-80 md:items-center md:pt-60"},null!=n.image?r.createElement("div",{className:"mb-40 md:mb-0 mt-40 md:mt-0 md:w-1/2"},r.createElement(l,ci({className:"aspect-video object-cover w-full"},n.image))):r.createElement("div",{className:"mb-40 md:mb-0 mt-40 md:mt-0 md:w-4/12"}),r.createElement("div",{className:null!=n.image?"md:w-6/12":"md:w-8/12"},r.createElement("div",{dangerouslySetInnerHTML:{__html:n.introHtml},className:"text-content text-content--component"}),null!=n.link&amp;&amp;r.createElement("a",{href:n.link.url,target:n.link.openInNewTab?"_blank":"",className:"button button--outline-blue mt-30"},n.link.text))));var n,o})))},materials:function(e){var t=Ci((0,r.useState)(null),2),n=t[0],o=t[1],a=Ci((0,r.useState)([]),2),i=a[0],l=a[1],s=Ci((0,r.useState)([]),2),u=s[0],c=s[1],f=Ci((0,r.useState)(!1),2),d=f[0],p=f[1],h=Ci((0,r.useState)(),2),m=h[0],y=h[1],v=Ci((0,r.useState)(1),2),g=v[0],b=v[1],w=Ci((0,r.useState)(1),2),S=w[0],k=w[1];function x(){return x=Pi(wi().mark((function e(){var t,n,r=arguments;return wi().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.length&gt;0&amp;&amp;void 0!==r[0]?r[0]:"",e.next=3,fetch(t,{method:"GET",headers:{accept:"application/json"}});case 3:return n=e.sent,e.abrupt("return",n.json());case 5:case"end":return e.stop()}}),e)}))),x.apply(this,arguments)}var E=function(e){if(e)if(u.includes(e)){var t=u.filter((function(t){return t!==e}));c(t),o({tagIds:t.join(),page:1})}else{var n=[].concat(function(e){if(Array.isArray(e))return Ti(e)}(r=u)||function(e){if("undefined"!=typeof Symbol&amp;&amp;null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||Oi(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[e]);c(n),o({tagIds:n.join(),page:1})}else c([]),o({tagIds:"",page:1});var r};return(0,r.useEffect)((function(){var e,t,n,r,a,i,l;t=(e=new URLSearchParams(window.location.search)).get("tagIds"),n=e.get("page"),r=localStorage.getItem("tagIds"),a=localStorage.getItem("page"),i=[],l=1,t?i=t.split(",").map((function(e){return parseInt(e)})):r&amp;&amp;(i=r.split(",").map((function(e){return parseInt(e)}))),n?l=parseInt(n):a&amp;&amp;(l=parseInt(a)),c(i),b(l),o({tagIds:i.join(),page:l}),e.get("open")&amp;&amp;y(e.get("open"))}),[]),(0,r.useEffect)((function(){if(null!==n){void 0!==n.tagIds&amp;&amp;localStorage.setItem("tagIds",n.tagIds),void 0!==n.page&amp;&amp;localStorage.setItem("page",n.page);var t=Object.keys(n).map((function(e){return null!=n[e]?"".concat(e,"=").concat(n[e]):""})).filter(Boolean).join("&amp;"),r=Date.now(),o="/api/material/listMaterials?lang=".concat(e.lang,"&amp;i=").concat(r,"&amp;").concat(t);p(!0),window.history.replaceState(null,null,"?".concat(t)),function(){return x.apply(this,arguments)}(o).then((function(e){l(e.items||[]),k(e.totalPages||1),p(!1)}))}}),[n]),(0,r.useEffect)((function(){var e=function(){var e=new URLSearchParams(window.location.search),t=e.get("tagIds"),n=e.get("page"),r=[],a=1;t&amp;&amp;(r=t.split(",").map((function(e){return parseInt(e)}))),n&amp;&amp;(a=parseInt(n)),c(r),b(a),o({tagIds:r.join(),page:a})};return window.addEventListener("popstate",e),function(){window.removeEventListener("popstate",e)}}),[]),r.createElement("div",{id:"materialsBlock"},r.createElement("div",{className:"px-15 mx-auto md:container xl:max-w-screen-xl mb-35"},r.createElement("h2",{className:"h2 text-center mb-44"},e.heading),e.showTherapyAreaTags&amp;&amp;r.createElement("div",null,r.createElement("h3",{className:"h3 text-center mt-32 mb-24 text-base font-semibold"},e.therapyAreaTagsHeading),r.createElement("div",{className:"flex flex-wrap justify-center gap-12 my-24"},e.therapyAreaTags.map((function(e){return r.createElement("button",{onClick:function(){return E(e.id)},key:e.id,className:"button ".concat(u.includes(e.id)?"button--default-blue":"button--outline-blue")},e.name)})))),e.showTags&amp;&amp;r.createElement("div",null,r.createElement("h3",{className:"h3 text-center mt-32 mb-24 text-base font-semibold"},e.productTagsHeading),r.createElement("div",{className:"flex flex-wrap justify-center gap-12 my-24"},e.tags.map((function(e){return r.createElement("button",{onClick:function(){return E(e.id)},key:e.id,className:"button ".concat(u.includes(e.id)?"button--default-blue":"button--outline-blue")},e.name)})))),e.showTargetGroupTags&amp;&amp;r.createElement("div",null,r.createElement("h3",{className:"h3 text-center mt-32 mb-24 text-base font-semibold"},e.targetGroupTagsHeading),r.createElement("div",{className:"flex flex-wrap justify-center gap-12 my-24"},e.targetGroupTags.map((function(e){return r.createElement("button",{onClick:function(){return E(e.id)},key:e.id,className:"button ".concat(u.includes(e.id)?"button--default-blue":"button--outline-blue")},e.name)}))))),r.createElement("div",{className:"px-15 mx-auto xl:max-w-screen-xl mb-35"},r.createElement("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-x-20 gap-y-40 lg:gap-x-30 lg:gap-y-50 mt-32"},i.map((function(t){return r.createElement(gi(),{key:t.contentId,partialVisibility:!0,intervalDelay:300},(function(n){var o=n.isVisible;return r.createElement(yi,{props:t,loading:d,visible:o,carturl:e.orderFormPageUrl,viewMoreText:e.viewMoreText,closeText:e.closeText,quantityText:e.quantityText,orderableText:e.orderableText,open:m,usePageViewsForMaterials:e.usePageViewsForMaterials})}))}))),S&gt;1&amp;&amp;r.createElement("div",{className:"mt-50"},r.createElement(A(),{breakLabel:"...",nextLabel:r.createElement("span",{className:"material-icons mt-8"},"Óóà"),previousLabel:r.createElement("span",{className:"material-icons mt-8"},"ÓóÑ"),pageRangeDisplayed:3,marginPagesDisplayed:2,pageCount:S,renderOnZeroPageCount:void 0,containerClassName:"flex inline-flex w-full items-center justify-center text-orionBlue",pageClassName:"px-8 hover:orionMiddleBlue",breakClassName:"",previousClassName:"px-8 hover:text-orionMiddleBlue",nextClassName:"px-8 hover:text-orionMiddleBlue",activeClassName:"font-eina-semibold",disabledLinkClassName:"opacity-30 cursor-default",forcePage:g-1,onPageChange:function(e){return t=e.selected+1,document.querySelector("#materialsBlock").scrollIntoView({block:"start",behavior:"smooth"}),b(t),void o((function(e){return ki(ki({},e),{},{page:t})}));var t}})),d&amp;&amp;r.createElement("div",{className:"flex p-20 justify-center"},r.createElement("svg",{className:"animate-spin w-80 h-80",xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px",fill:"#00234A"},r.createElement("path",{d:"M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-155.5t86-127Q252-817 325-848.5T480-880q17 0 28.5 11.5T520-840q0 17-11.5 28.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160q133 0 226.5-93.5T800-480q0-17 11.5-28.5T840-520q17 0 28.5 11.5T880-480q0 82-31.5 155t-86 127.5q-54.5 54.5-127 86T480-80Z"})))))},orderMaterials:function(e){var t,n,o,a,i,l,s,u,c,f,d,p,h=Ui((0,r.useState)({}),2),m=h[0],y=h[1],v=Ui((0,r.useState)(""),2),g=v[0],b=v[1],w=Ui((0,r.useState)(""),2),S=w[0],k=w[1],x={lastName:null!==(t=e.userData.lastName)&amp;&amp;void 0!==t?t:"",firstName:null!==(n=e.userData.firstName)&amp;&amp;void 0!==n?n:"",email:null!==(o=e.userData.loggedInEmail)&amp;&amp;void 0!==o?o:"",jobRole:null!==(a=e.userData.speciality)&amp;&amp;void 0!==a?a:"",company:null!==(i=e.userData.placeOfWork)&amp;&amp;void 0!==i?i:"",section:"",streetAddress:"",postalCode:"",country:null!==(l=e.userData.country)&amp;&amp;void 0!==l?l:"",city:"",region:null!==(s=e.userData.county)&amp;&amp;void 0!==s?s:"",customCheckbox:!1,consent:!1,marketingConsent:!1,message:"",hiddenField:""};e.hiddenField.enabled&amp;&amp;(x.hiddenField=e.hiddenField.value),e.jobRole.enabled&amp;&amp;!e.userData.speciality&amp;&amp;(x.jobRole=null===(d=e.jobRole.values[0])||void 0===d?void 0:d.code),e.region.enabled&amp;&amp;!e.userData.county&amp;&amp;(x.region=null===(p=e.region.values[0])||void 0===p?void 0:p.code);var E=Ui((0,r.useState)(x),2),P=E[0],C=E[1],O=Ui((0,r.useState)(!1),2),T=O[0],_=O[1],L=Ui((0,r.useState)(!1),2),j=L[0],N=L[1],M=Ui((0,r.useState)(!1),2),R=M[0],A=M[1],I=new XMLHttpRequest;function D(){return z.apply(this,arguments)}function z(){return z=Hi(zi().mark((function t(){var n,r,o=arguments;return zi().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=o.length&gt;0&amp;&amp;void 0!==o[0]?o[0]:"",t.next=3,fetch(n+"?lang="+e.lang,{method:"GET",headers:{accept:"application/json"}});case 3:return r=t.sent,t.abrupt("return",r.json());case 5:case"end":return t.stop()}}),t)}))),z.apply(this,arguments)}if((0,r.useEffect)((function(){D("/api/order/getBasketItems").then((function(e){y(e||null),A(!0)}))}),[]),(null===(u=m.items)||void 0===u?void 0:u.length)&gt;0)var B=m.items.map((function(t,n){if(t)return r.createElement(Mi,{key:t.productId,props:t,removeItem:F,updateItem:$,disabled:j,translations:{removeProductButtonText:e.removeProductButtonText,priceText:e.priceText,quantityText:e.quantityText}})}));function F(t){I.open("POST","/api/order/removeBasketItem?lang=".concat(e.lang,"&amp;productId=").concat(t),!0),I.send(),I.onreadystatechange=function(){4==this.readyState&amp;&amp;200==this.status&amp;&amp;D("/api/order/getBasketItems").then((function(e){console.log(e),y(e||null)}))}}function $(t,n){var r=m.items.map((function(e){return e.productId===t?Fi(Fi({},e),{},{quantity:n}):e}));y((function(e){return Fi(Fi({},e),{},{items:r})})),I.open("PUT","/api/order/upsertBasketItem?lang=".concat(e.lang,"&amp;productId=").concat(t,"&amp;quantity=").concat(n),!0),I.send(),I.onreadystatechange=function(){4==this.readyState&amp;&amp;200==this.status&amp;&amp;D("/api/order/getBasketItems").then((function(e){y(e||null)}))}}return r.createElement("div",null,(null===(c=m.items)||void 0===c?void 0:c.length)&gt;0&amp;&amp;!j&amp;&amp;r.createElement(r.Fragment,null,r.createElement("div",{className:"bg-orionDarkBlue p-32 text-white flex justify-center"},r.createElement("div",{className:"text-content text-content-white inline-p m-0"},r.createElement("span",{className:"material-icons inline p-8 text-base rounded-full aspect-square border border-white mr-16 align-sub","aria-hidden":"true"},"arrow_back"),r.createElement("span",{dangerouslySetInnerHTML:{__html:e.backToMaterialListingText}}))),r.createElement("div",{className:"container lg:max-w-screen-lg pt-60"},r.createElement("div",{className:"flex justify-center"},r.createElement("div",{className:"w-2/3"},r.createElement("div",{className:"flex"},r.createElement("h1",{className:"h2 flex-1 mb-12 md:mb-35"},e.heading)),r.createElement("div",{className:"",id:"shoppingCart"},r.createElement("div",{className:"flex flex-wrap divide-y divide-orionDarkBlue border-orionDarkBlue border-t border-b"},B),j?r.createElement("div",{className:"mb-65"},r.createElement("h1",{className:"h2 flex-1 mb-12 md:mb-35"},e.thankYouView.heading),r.createElement("div",{className:"text-content",dangerouslySetInnerHTML:{__html:e.thankYouView.body}}),r.createElement("a",{className:"button button--default-blue",href:e.emptyBasketView.ctaLink.url},e.thankYouView.ctaLink.text)):r.createElement("div",{className:"mb-65"},r.createElement("h3",{className:"h3 mt-44"},e.formHeading),r.createElement("form",null,r.createElement("div",{className:""},e.firstName.enabled&amp;&amp;r.createElement(_i,{header:e.firstName.label,value:P.firstName,helpText:e.firstName.helpText,name:"firstname",placeholder:e.firstName.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{firstName:e})}))},required:e.firstName.required}),e.lastName.enabled&amp;&amp;r.createElement(_i,{header:e.lastName.label,value:P.lastName,helpText:e.lastName.helpText,name:"lastname",placeholder:e.lastName.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{lastName:e})}))},required:e.lastName.required}),e.email.enabled&amp;&amp;r.createElement(_i,{header:e.email.label,value:P.email,helpText:e.email.helpText,name:"email",placeholder:e.email.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{email:e})}))},required:e.email.required}),e.jobRole.enabled&amp;&amp;r.createElement(Ai,{header:e.jobRole.label,value:P.jobRole,helpText:e.jobRole.helpText,name:"jobRole",options:e.jobRole.values,onChange:function(e){return C((function(t){return Fi(Fi({},t),{jobRole:e})}))},required:e.jobRole.required}),e.company.enabled&amp;&amp;r.createElement(_i,{header:e.company.label,value:P.company,helpText:e.company.helpText,name:"company",placeholder:e.company.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{company:e})}))},required:e.company.required}),e.section.enabled&amp;&amp;r.createElement(_i,{header:e.section.label,value:P.section,helpText:e.section.helpText,name:"section",placeholder:e.section.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{section:e})}))},required:e.section.required}),e.streetAddress.enabled&amp;&amp;r.createElement(_i,{header:e.streetAddress.label,value:P.streetAddress,helpText:e.streetAddress.helpText,name:"address",placeholder:e.streetAddress.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{streetAddress:e})}))},required:e.streetAddress.required}),e.postalCode.enabled&amp;&amp;r.createElement(_i,{header:e.postalCode.label,value:P.postalCode,helpText:e.postalCode.helpText,name:"zip",placeholder:e.postalCode.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{postalCode:e})}))},half:!0,required:e.postalCode.required}),e.country.enabled&amp;&amp;r.createElement(_i,{header:e.country.label,value:P.country,helpText:e.country.helpText,name:"country",placeholder:e.country.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{country:e})}))},required:e.country.required}),e.city.enabled&amp;&amp;r.createElement(_i,{header:e.city.label,value:P.city,helpText:e.city.helpText,name:"city",placeholder:e.city.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{city:e})}))},half:!0,required:e.city.required}),e.region.enabled&amp;&amp;r.createElement(Ai,{header:e.region.label,value:P.region,helpText:e.region.helpText,name:"region",options:e.region.values,onChange:function(e){return C((function(t){return Fi(Fi({},t),{region:e})}))},required:e.region.required}),e.customCheckbox.enabled&amp;&amp;r.createElement(Ri,{header:e.customCheckbox.label,checked:P.customCheckbox,helpText:e.customCheckbox.helpText,name:"customCheckbox",onChange:function(e){return C((function(t){return Fi(Fi({},t),{customCheckbox:e})}))},required:e.customCheckbox.required}),e.message.enabled&amp;&amp;r.createElement(Ii,{header:e.message.label,value:P.message,helpText:e.message.helpText,name:"message",placeholder:e.message.placeholder,onChange:function(e){return C((function(t){return Fi(Fi({},t),{message:e})}))},required:e.message.required}),e.consent.enabled&amp;&amp;r.createElement(Ri,{header:e.consent.label,checked:P.consent,helpText:e.consent.helpText,name:"consent",onChange:function(e){return C((function(t){return Fi(Fi({},t),{consent:e})}))},required:e.consent.required}),e.marketingConsent.enabled&amp;&amp;r.createElement(Ri,{header:e.marketingConsent.label,checked:P.marketingConsent,helpText:e.marketingConsent.helpText,name:"marketingConsent",onChange:function(e){return C((function(t){return Fi(Fi({},t),{marketingConsent:e})}))},required:e.marketingConsent.required})),r.createElement("button",{type:"submit",onClick:function(t){t.preventDefault(),_(!0),b(!1),k("");var n=!1;if(Object.keys(P).forEach((function(t){var r=P[t];e[t].required&amp;&amp;("string"==typeof r&amp;&amp;r.trim().length&lt;1?(b(e.validationErrorMessage),n=!0,console.log("- ERROR: ".concat(t," is required but empty"))):"boolean"!=typeof r||r||(b(e.validationErrorMessage),n=!0,console.log("- ERROR: ".concat(t," is required but not checked"))))})),console.log(P),n)_(!1);else{console.log("POST");var r={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(P)};fetch("/api/order/completeOrder?lang="+e.lang,r).then((function(e){var t;e.ok?(t=m.items.map((function(e){return{event:"Materials",material_title:e.productName,material_quantity:e.quantity,order_id:m.id}})),window.dataLayer&amp;&amp;window.dataLayer.push(t),N(!0),I.open("POST","/api/order/clearBasket",!0),I.send(),y({}),document.getElementById("cartProducts").remove()):(console.log("Call to /api/order/completeOrder resulted in error"),e.json().then((function(e){return k(e.errors[0])}))),_(!1)}))}},disabled:T,className:"button button--default-blue my-16"},e.completeOrderButtonText),r.createElement("div",{className:"text-content",dangerouslySetInnerHTML:{__html:e.privacyStatement}})),r.createElement("div",{className:"mt-12 text-alertRed"},r.createElement("div",null,g)),r.createElement("div",{className:"mt-12 text-alertRed"},r.createElement("div",null,S)))))))),0==(null===(f=m.items)||void 0===f?void 0:f.length)&amp;&amp;!j&amp;&amp;r.createElement("div",{className:"container lg:max-w-screen-lg pt-60"},r.createElement("div",{className:"mb-65 ".concat(R?"block":"hidden"," ")},r.createElement("h1",{className:"h2 flex-1 mb-12 md:mb-35"},e.emptyBasketView.heading),r.createElement("div",{className:"text-content",dangerouslySetInnerHTML:{__html:e.emptyBasketView.body}}),r.createElement("a",{className:"button button--default-blue",href:e.emptyBasketView.ctaLink.url},e.emptyBasketView.ctaLink.text))),j&amp;&amp;r.createElement("div",{className:"container lg:max-w-screen-lg pt-60"},r.createElement("div",{className:"mb-65"},r.createElement("h1",{className:"h2 flex-1 mb-12 md:mb-35"},e.thankYouView.heading),r.createElement("div",{className:"text-content",dangerouslySetInnerHTML:{__html:e.thankYouView.body}}),r.createElement("a",{className:"button button--default-blue",href:e.emptyBasketView.ctaLink.url},e.thankYouView.ctaLink.text))))},cartBanner:di.Z,materialAddToCart:qi.default};document.addEventListener("DOMContentLoaded",(function(){Array.from(document.querySelectorAll("[data-react-component]")).forEach((function(e){var t=JSON.parse(e.dataset.props||"{}");t.propertyName=e.dataset.epiPropertyName,(0,a.s)(e).render(r.createElement(Gi[e.dataset.reactComponent],t))}))}))},5223:()=&gt;{function e(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}document.querySelectorAll(".js-custom-file-input").forEach((function(t,n){var r=t.getElementsByTagName("input")[0],o=t.querySelector("[data-custom-text]");o||console.error("No custom label found in custom file input element"),r?r.addEventListener("change",(function(){var t,n=(t=r.files,function(t){if(Array.isArray(t))return e(t)}(t)||function(e){if("undefined"!=typeof Symbol&amp;&amp;null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||function(t,n){if(t){if("string"==typeof t)return e(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&amp;&amp;t.constructor&amp;&amp;(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?e(t,n):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(e){return e.name})).join(", ");if(o){var a=o.getAttribute("data-custom-text");o.innerHTML=n||a}})):console.error("No file input found in custom file input element")}))},1710:()=&gt;{var e,t,n;e=document.querySelectorAll(".check-in-viewport"),t=window.innerHeight/2,(n=function(){for(var n=0;n&lt;e.length;n++)e[n].getBoundingClientRect().top&lt;t&amp;&amp;e[n].classList.add("in-viewport")})(),window.addEventListener("scroll",n)},2695:()=&gt;{document.querySelectorAll("[data-toggle-trigger]").forEach((function(e,t){e.addEventListener("click",(function(){if(event.preventDefault(),e.classList.toggle("is-active"),e.hasAttribute("aria-expanded")){var t="false"===e.getAttribute("aria-expanded");e.setAttribute("aria-expanded",t)}var n=e.getAttribute("data-toggle-trigger"),r=document.querySelector('[data-toggle-target="'.concat(n,'"]'));if(r&amp;&amp;(r.classList.toggle("is-active"),r.hasAttribute("aria-hidden"))){var o="true"!==r.getAttribute("aria-hidden");r.setAttribute("aria-hidden",o)}}))}))},6513:()=&gt;{document.querySelectorAll(".play-video-trigger").forEach((function(e,t){var n=e.querySelector(".play-video-target");e.addEventListener("mouseover",(function(){n.play()})),e.addEventListener("mouseout",(function(){n.pause()}))}))},9996:e=&gt;{"use strict";var t=function(e){return function(e){return!!e&amp;&amp;"object"==typeof e}(e)&amp;&amp;!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===n}(e)}(e)},n="function"==typeof Symbol&amp;&amp;Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&amp;&amp;t.isMergeableObject(e)?l((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function o(e,t,n){return e.concat(t).map((function(e){return r(e,n)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function i(e,t){try{return t in e}catch(e){return!1}}function l(e,n,s){(s=s||{}).arrayMerge=s.arrayMerge||o,s.isMergeableObject=s.isMergeableObject||t,s.cloneUnlessOtherwiseSpecified=r;var u=Array.isArray(n);return u===Array.isArray(e)?u?s.arrayMerge(e,n,s):function(e,t,n){var o={};return n.isMergeableObject(e)&amp;&amp;a(e).forEach((function(t){o[t]=r(e[t],n)})),a(t).forEach((function(a){(function(e,t){return i(e,t)&amp;&amp;!(Object.hasOwnProperty.call(e,t)&amp;&amp;Object.propertyIsEnumerable.call(e,t))})(e,a)||(i(e,a)&amp;&amp;n.isMergeableObject(t[a])?o[a]=function(e,t){if(!t.customMerge)return l;var n=t.customMerge(e);return"function"==typeof n?n:l}(a,n)(e[a],t[a],n):o[a]=r(t[a],n))})),o}(e,n,s):r(n,s)}l.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return l(e,n,t)}),{})};var s=l;e.exports=s},8679:(e,t,n)=&gt;{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,f=Object.getOwnPropertySymbols,d=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=p(n);o&amp;&amp;o!==h&amp;&amp;e(t,o,r)}var i=c(n);f&amp;&amp;(i=i.concat(f(n)));for(var l=s(t),m=s(n),y=0;y&lt;i.length;++y){var v=i[y];if(!(a[v]||r&amp;&amp;r[v]||m&amp;&amp;m[v]||l&amp;&amp;l[v])){var g=d(n,v);try{u(t,v,g)}catch(e){}}}}return t}},9090:e=&gt;{function t(e,t){e.onload=function(){this.onerror=this.onload=null,t(null,e)},e.onerror=function(){this.onerror=this.onload=null,t(new Error("Failed to load "+this.src),e)}}function n(e,t){e.onreadystatechange=function(){"complete"!=this.readyState&amp;&amp;"loaded"!=this.readyState||(this.onreadystatechange=null,t(null,e))}}e.exports=function(e,r,o){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("script");"function"==typeof r&amp;&amp;(o=r,r={}),r=r||{},o=o||function(){},i.type=r.type||"text/javascript",i.charset=r.charset||"utf8",i.async=!("async"in r)||!!r.async,i.src=e,r.attrs&amp;&amp;function(e,t){for(var n in t)e.setAttribute(n,t[n])}(i,r.attrs),r.text&amp;&amp;(i.text=""+r.text),("onload"in i?t:n)(i,o),i.onload||t(i,o),a.appendChild(i)}},3096:(e,t,n)=&gt;{var r="Expected a function",o=/^\s+|\s+$/g,a=/^[-+]0x[0-9a-f]+$/i,i=/^0b[01]+$/i,l=/^0o[0-7]+$/i,s=parseInt,u="object"==typeof n.g&amp;&amp;n.g&amp;&amp;n.g.Object===Object&amp;&amp;n.g,c="object"==typeof self&amp;&amp;self&amp;&amp;self.Object===Object&amp;&amp;self,f=u||c||Function("return this")(),d=Object.prototype.toString,p=Math.max,h=Math.min,m=function(){return f.Date.now()};function y(e){var t=typeof e;return!!e&amp;&amp;("object"==t||"function"==t)}function v(e){if("number"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&amp;&amp;"object"==typeof e}(e)&amp;&amp;"[object Symbol]"==d.call(e)}(e))return NaN;if(y(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=y(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=i.test(e);return n||l.test(e)?s(e.slice(2),n?2:8):a.test(e)?NaN:+e}e.exports=function(e,t,n){var o=!0,a=!0;if("function"!=typeof e)throw new TypeError(r);return y(n)&amp;&amp;(o="leading"in n?!!n.leading:o,a="trailing"in n?!!n.trailing:a),function(e,t,n){var o,a,i,l,s,u,c=0,f=!1,d=!1,g=!0;if("function"!=typeof e)throw new TypeError(r);function b(t){var n=o,r=a;return o=a=void 0,c=t,l=e.apply(r,n)}function w(e){return c=e,s=setTimeout(k,t),f?b(e):l}function S(e){var n=e-u;return void 0===u||n&gt;=t||n&lt;0||d&amp;&amp;e-c&gt;=i}function k(){var e=m();if(S(e))return x(e);s=setTimeout(k,function(e){var n=t-(e-u);return d?h(n,i-(e-c)):n}(e))}function x(e){return s=void 0,g&amp;&amp;o?b(e):(o=a=void 0,l)}function E(){var e=m(),n=S(e);if(o=arguments,a=this,u=e,n){if(void 0===s)return w(u);if(d)return s=setTimeout(k,t),b(u)}return void 0===s&amp;&amp;(s=setTimeout(k,t)),l}return t=v(t)||0,y(n)&amp;&amp;(f=!!n.leading,i=(d="maxWait"in n)?p(v(n.maxWait)||0,t):i,g="trailing"in n?!!n.trailing:g),E.cancel=function(){void 0!==s&amp;&amp;clearTimeout(s),c=0,o=u=a=s=void 0},E.flush=function(){return void 0===s?l:x(m())},E}(e,t,{leading:o,maxWait:t,trailing:a})}},845:(e,t,n)=&gt;{"use strict";n.r(t),n.d(t,{default:()=&gt;a});var r=Number.isNaN||function(e){return"number"==typeof e&amp;&amp;e!=e};function o(e,t){if(e.length!==t.length)return!1;for(var n=0;n&lt;e.length;n++)if(!((o=e[n])===(a=t[n])||r(o)&amp;&amp;r(a)))return!1;var o,a;return!0}const a=function(e,t){var n;void 0===t&amp;&amp;(t=o);var r,a=[],i=!1;return function(){for(var o=[],l=0;l&lt;arguments.length;l++)o[l]=arguments[l];return i&amp;&amp;n===this&amp;&amp;t(o,a)||(r=e.apply(this,o),i=!0,n=this,a=o),r}}},6635:()=&gt;{},7933:()=&gt;{},2703:(e,t,n)=&gt;{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==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:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=&gt;{e.exports=n(2703)()},414:e=&gt;{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=&gt;{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n&lt;arguments.length;n++)t+="&amp;args[]="+encodeURIComponent(arguments[n]);return"Minified React error #"+e+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}var i=new Set,l={};function s(e,t){u(e,t),u(e+"Capture",t)}function u(e,t){for(l[e]=t,e=0;e&lt;t.length;e++)i.add(t[e])}var c=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),f=Object.prototype.hasOwnProperty,d=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,p={},h={};function m(e,t,n,r,o,a,i){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=i}var y={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach((function(e){y[e]=new m(e,0,!1,e,null,!1,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0];y[t]=new m(t,1,!1,e[1],null,!1,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){y[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){y[e]=new m(e,2,!1,e,null,!1,!1)})),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach((function(e){y[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),["checked","multiple","muted","selected"].forEach((function(e){y[e]=new m(e,3,!0,e,null,!1,!1)})),["capture","download"].forEach((function(e){y[e]=new m(e,4,!1,e,null,!1,!1)})),["cols","rows","size","span"].forEach((function(e){y[e]=new m(e,6,!1,e,null,!1,!1)})),["rowSpan","start"].forEach((function(e){y[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\-:]([a-z])/g;function g(e){return e[1].toUpperCase()}function b(e,t,n,r){var o=y.hasOwnProperty(t)?y[t]:null;(null!==o?0!==o.type:r||!(2&lt;t.length)||"o"!==t[0]&amp;&amp;"O"!==t[0]||"n"!==t[1]&amp;&amp;"N"!==t[1])&amp;&amp;(function(e,t,n,r){if(null==t||function(e,t,n,r){if(null!==n&amp;&amp;0===n.type)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return!r&amp;&amp;(null!==n?!n.acceptsBooleans:"data-"!==(e=e.toLowerCase().slice(0,5))&amp;&amp;"aria-"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1&gt;t}return!1}(t,n,o,r)&amp;&amp;(n=null),r||null===o?function(e){return!!f.call(h,e)||!f.call(p,e)&amp;&amp;(d.test(e)?h[e]=!0:(p[e]=!0,!1))}(t)&amp;&amp;(null===n?e.removeAttribute(t):e.setAttribute(t,""+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&amp;&amp;"":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&amp;&amp;!0===n?"":""+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach((function(e){var t=e.replace(v,g);y[t]=new m(t,1,!1,e,null,!1,!1)})),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach((function(e){var t=e.replace(v,g);y[t]=new m(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(v,g);y[t]=new m(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)})),["tabIndex","crossOrigin"].forEach((function(e){y[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),y.xlinkHref=new m("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach((function(e){y[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,S=Symbol.for("react.element"),k=Symbol.for("react.portal"),x=Symbol.for("react.fragment"),E=Symbol.for("react.strict_mode"),P=Symbol.for("react.profiler"),C=Symbol.for("react.provider"),O=Symbol.for("react.context"),T=Symbol.for("react.forward_ref"),_=Symbol.for("react.suspense"),L=Symbol.for("react.suspense_list"),j=Symbol.for("react.memo"),N=Symbol.for("react.lazy");Symbol.for("react.scope"),Symbol.for("react.debug_trace_mode");var M=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden"),Symbol.for("react.cache"),Symbol.for("react.tracing_marker");var R=Symbol.iterator;function A(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=R&amp;&amp;e[R]||e["@@iterator"])?e:null}var I,D=Object.assign;function z(e){if(void 0===I)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);I=t&amp;&amp;t[1]||""}return"\n"+I+e}var B=!1;function F(e,t){if(!e||B)return"";B=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,"props",{set:function(){throw Error()}}),"object"==typeof Reflect&amp;&amp;Reflect.construct){try{Reflect.construct(t,[])}catch(e){var r=e}Reflect.construct(e,[],t)}else{try{t.call()}catch(e){r=e}e.call(t.prototype)}else{try{throw Error()}catch(e){r=e}e()}}catch(t){if(t&amp;&amp;r&amp;&amp;"string"==typeof t.stack){for(var o=t.stack.split("\n"),a=r.stack.split("\n"),i=o.length-1,l=a.length-1;1&lt;=i&amp;&amp;0&lt;=l&amp;&amp;o[i]!==a[l];)l--;for(;1&lt;=i&amp;&amp;0&lt;=l;i--,l--)if(o[i]!==a[l]){if(1!==i||1!==l)do{if(i--,0&gt;--l||o[i]!==a[l]){var s="\n"+o[i].replace(" at new "," at ");return e.displayName&amp;&amp;s.includes("&lt;anonymous&gt;")&amp;&amp;(s=s.replace("&lt;anonymous&gt;",e.displayName)),s}}while(1&lt;=i&amp;&amp;0&lt;=l);break}}}finally{B=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?z(e):""}function $(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return F(e.type,!1);case 11:return F(e.type.render,!1);case 1:return F(e.type,!0);default:return""}}function V(e){if(null==e)return null;if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case x:return"Fragment";case k:return"Portal";case P:return"Profiler";case E:return"StrictMode";case _:return"Suspense";case L:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case O:return(e.displayName||"Context")+".Consumer";case C:return(e._context.displayName||"Context")+".Provider";case T:var t=e.render;return(e=e.displayName)||(e=""!==(e=t.displayName||t.name||"")?"ForwardRef("+e+")":"ForwardRef"),e;case j:return null!==(t=e.displayName||null)?t:V(e.type)||"Memo";case N:t=e._payload,e=e._init;try{return V(e(t))}catch(e){}}return null}function H(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=t.render).displayName||e.name||"",t.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return V(t);case 8:return t===E?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof t)return t.displayName||t.name||null;if("string"==typeof t)return t}return null}function U(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function W(e){var t=e.type;return(e=e.nodeName)&amp;&amp;"input"===e.toLowerCase()&amp;&amp;("checkbox"===t||"radio"===t)}function q(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&amp;&amp;void 0!==n&amp;&amp;"function"==typeof n.get&amp;&amp;"function"==typeof n.set){var o=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function G(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&amp;&amp;(r=W(e)?e.checked?"true":"false":e.value),(e=r)!==n&amp;&amp;(t.setValue(e),!0)}function K(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function Y(e,t){var n=t.checked;return D({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function X(e,t){var n=null==t.defaultValue?"":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=U(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function Q(e,t){null!=(t=t.checked)&amp;&amp;b(e,"checked",t,!1)}function Z(e,t){Q(e,t);var n=U(t.value),r=t.type;if(null!=n)"number"===r?(0===n&amp;&amp;""===e.value||e.value!=n)&amp;&amp;(e.value=""+n):e.value!==""+n&amp;&amp;(e.value=""+n);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");t.hasOwnProperty("value")?ee(e,t.type,n):t.hasOwnProperty("defaultValue")&amp;&amp;ee(e,t.type,U(t.defaultValue)),null==t.checked&amp;&amp;null!=t.defaultChecked&amp;&amp;(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!("submit"!==r&amp;&amp;"reset"!==r||void 0!==t.value&amp;&amp;null!==t.value))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}""!==(n=e.name)&amp;&amp;(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==n&amp;&amp;(e.name=n)}function ee(e,t,n){"number"===t&amp;&amp;K(e.ownerDocument)===e||(null==n?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&amp;&amp;(e.defaultValue=""+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o&lt;n.length;o++)t["$"+n[o]]=!0;for(n=0;n&lt;e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&amp;&amp;(e[n].selected=o),o&amp;&amp;r&amp;&amp;(e[n].defaultSelected=!0)}else{for(n=""+U(n),t=null,o=0;o&lt;e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&amp;&amp;(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&amp;&amp;(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return D({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(te(n)){if(1&lt;n.length)throw Error(a(93));n=n[0]}t=n}null==t&amp;&amp;(t=""),n=t}e._wrapperState={initialValue:U(n)}}function ae(e,t){var n=U(t.value),r=U(t.defaultValue);null!=n&amp;&amp;((n=""+n)!==e.value&amp;&amp;(e.value=n),null==t.defaultValue&amp;&amp;e.defaultValue!==n&amp;&amp;(e.defaultValue=n)),null!=r&amp;&amp;(e.defaultValue=""+r)}function ie(e){var t=e.textContent;t===e._wrapperState.initialValue&amp;&amp;""!==t&amp;&amp;null!==t&amp;&amp;(e.value=t)}function le(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function se(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?le(t):"http://www.w3.org/2000/svg"===e&amp;&amp;"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}var ue,ce,fe=(ce=function(e,t){if("http://www.w3.org/2000/svg"!==e.namespaceURI||"innerHTML"in e)e.innerHTML=t;else{for((ue=ue||document.createElement("div")).innerHTML="&lt;svg&gt;"+t.valueOf().toString()+"&lt;/svg&gt;",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},"undefined"!=typeof MSApp&amp;&amp;MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function de(e,t){if(t){var n=e.firstChild;if(n&amp;&amp;n===e.lastChild&amp;&amp;3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var pe={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},he=["Webkit","ms","Moz","O"];function me(e,t,n){return null==t||"boolean"==typeof t||""===t?"":n||"number"!=typeof t||0===t||pe.hasOwnProperty(e)&amp;&amp;pe[e]?(""+t).trim():t+"px"}function ye(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=me(n,t[n],r);"float"===n&amp;&amp;(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}Object.keys(pe).forEach((function(e){he.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pe[t]=pe[e]}))}));var ve=D({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ge(e,t){if(t){if(ve[e]&amp;&amp;(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if("object"!=typeof t.dangerouslySetInnerHTML||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&amp;&amp;"object"!=typeof t.style)throw Error(a(62))}}function be(e,t){if(-1===e.indexOf("-"))return"string"==typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var we=null;function Se(e){return(e=e.target||e.srcElement||window).correspondingUseElement&amp;&amp;(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var ke=null,xe=null,Ee=null;function Pe(e){if(e=wo(e)){if("function"!=typeof ke)throw Error(a(280));var t=e.stateNode;t&amp;&amp;(t=ko(t),ke(e.stateNode,e.type,t))}}function Ce(e){xe?Ee?Ee.push(e):Ee=[e]:xe=e}function Oe(){if(xe){var e=xe,t=Ee;if(Ee=xe=null,Pe(e),t)for(e=0;e&lt;t.length;e++)Pe(t[e])}}function Te(e,t){return e(t)}function _e(){}var Le=!1;function je(e,t,n){if(Le)return e(t,n);Le=!0;try{return Te(e,t,n)}finally{Le=!1,(null!==xe||null!==Ee)&amp;&amp;(_e(),Oe())}}function Ne(e,t){var n=e.stateNode;if(null===n)return null;var r=ko(n);if(null===r)return null;n=r[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(r=!("button"===(e=e.type)||"input"===e||"select"===e||"textarea"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&amp;&amp;"function"!=typeof n)throw Error(a(231,t,typeof n));return n}var Me=!1;if(c)try{var Re={};Object.defineProperty(Re,"passive",{get:function(){Me=!0}}),window.addEventListener("test",Re,Re),window.removeEventListener("test",Re,Re)}catch(ce){Me=!1}function Ae(e,t,n,r,o,a,i,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(e){this.onError(e)}}var Ie=!1,De=null,ze=!1,Be=null,Fe={onError:function(e){Ie=!0,De=e}};function $e(e,t,n,r,o,a,i,l,s){Ie=!1,De=null,Ae.apply(Fe,arguments)}function Ve(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!=(4098&amp;(t=e).flags)&amp;&amp;(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function He(e){if(13===e.tag){var t=e.memoizedState;if(null===t&amp;&amp;null!==(e=e.alternate)&amp;&amp;(t=e.memoizedState),null!==t)return t.dehydrated}return null}function Ue(e){if(Ve(e)!==e)throw Error(a(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ve(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return Ue(o),e;if(i===r)return Ue(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=i;break}if(s===r){l=!0,r=o,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=o;break}if(s===r){l=!0,r=i,n=o;break}s=s.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e))?qe(e):null}function qe(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=qe(e);if(null!==t)return t;e=e.sibling}return null}var Ge=o.unstable_scheduleCallback,Ke=o.unstable_cancelCallback,Ye=o.unstable_shouldYield,Xe=o.unstable_requestPaint,Qe=o.unstable_now,Ze=o.unstable_getCurrentPriorityLevel,Je=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,at=null,it=Math.clz32?Math.clz32:function(e){return 0==(e&gt;&gt;&gt;=0)?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2,ut=64,ct=4194304;function ft(e){switch(e&amp;-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&amp;e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&amp;e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dt(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,a=e.pingedLanes,i=268435455&amp;n;if(0!==i){var l=i&amp;~o;0!==l?r=ft(l):0!=(a&amp;=i)&amp;&amp;(r=ft(a))}else 0!=(i=n&amp;~o)?r=ft(i):0!==a&amp;&amp;(r=ft(a));if(0===r)return 0;if(0!==t&amp;&amp;t!==r&amp;&amp;0==(t&amp;o)&amp;&amp;((o=r&amp;-r)&gt;=(a=t&amp;-t)||16===o&amp;&amp;0!=(4194240&amp;a)))return t;if(0!=(4&amp;r)&amp;&amp;(r|=16&amp;n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&amp;=r;0&lt;t;)o=1&lt;&lt;(n=31-it(t)),r|=e[n],t&amp;=~o;return r}function pt(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function ht(e){return 0!=(e=-1073741825&amp;e.pendingLanes)?e:1073741824&amp;e?1073741824:0}function mt(){var e=ut;return 0==(4194240&amp;(ut&lt;&lt;=1))&amp;&amp;(ut=64),e}function yt(e){for(var t=[],n=0;31&gt;n;n++)t.push(e);return t}function vt(e,t,n){e.pendingLanes|=t,536870912!==t&amp;&amp;(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-it(t)]=n}function gt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-it(n),o=1&lt;&lt;r;o&amp;t|e[r]&amp;t&amp;&amp;(e[r]|=t),n&amp;=~o}}var bt=0;function wt(e){return 1&lt;(e&amp;=-e)?4&lt;e?0!=(268435455&amp;e)?16:536870912:4:1}var St,kt,xt,Et,Pt,Ct=!1,Ot=[],Tt=null,_t=null,Lt=null,jt=new Map,Nt=new Map,Mt=[],Rt="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");function At(e,t){switch(e){case"focusin":case"focusout":Tt=null;break;case"dragenter":case"dragleave":_t=null;break;case"mouseover":case"mouseout":Lt=null;break;case"pointerover":case"pointerout":jt.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Nt.delete(t.pointerId)}}function It(e,t,n,r,o,a){return null===e||e.nativeEvent!==a?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:a,targetContainers:[o]},null!==t&amp;&amp;null!==(t=wo(t))&amp;&amp;kt(t),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&amp;&amp;-1===t.indexOf(o)&amp;&amp;t.push(o),e)}function Dt(e){var t=bo(e.target);if(null!==t){var n=Ve(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=He(n)))return e.blockedOn=t,void Pt(e.priority,(function(){xt(n)}))}else if(3===t&amp;&amp;n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function zt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0&lt;t.length;){var n=Yt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&amp;&amp;kt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function Bt(e,t,n){zt(e)&amp;&amp;n.delete(t)}function Ft(){Ct=!1,null!==Tt&amp;&amp;zt(Tt)&amp;&amp;(Tt=null),null!==_t&amp;&amp;zt(_t)&amp;&amp;(_t=null),null!==Lt&amp;&amp;zt(Lt)&amp;&amp;(Lt=null),jt.forEach(Bt),Nt.forEach(Bt)}function $t(e,t){e.blockedOn===t&amp;&amp;(e.blockedOn=null,Ct||(Ct=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Ft)))}function Vt(e){function t(t){return $t(t,e)}if(0&lt;Ot.length){$t(Ot[0],e);for(var n=1;n&lt;Ot.length;n++){var r=Ot[n];r.blockedOn===e&amp;&amp;(r.blockedOn=null)}}for(null!==Tt&amp;&amp;$t(Tt,e),null!==_t&amp;&amp;$t(_t,e),null!==Lt&amp;&amp;$t(Lt,e),jt.forEach(t),Nt.forEach(t),n=0;n&lt;Mt.length;n++)(r=Mt[n]).blockedOn===e&amp;&amp;(r.blockedOn=null);for(;0&lt;Mt.length&amp;&amp;null===(n=Mt[0]).blockedOn;)Dt(n),null===n.blockedOn&amp;&amp;Mt.shift()}var Ht=w.ReactCurrentBatchConfig,Ut=!0;function Wt(e,t,n,r){var o=bt,a=Ht.transition;Ht.transition=null;try{bt=1,Gt(e,t,n,r)}finally{bt=o,Ht.transition=a}}function qt(e,t,n,r){var o=bt,a=Ht.transition;Ht.transition=null;try{bt=4,Gt(e,t,n,r)}finally{bt=o,Ht.transition=a}}function Gt(e,t,n,r){if(Ut){var o=Yt(e,t,n,r);if(null===o)Ur(e,t,r,Kt,n),At(e,r);else if(function(e,t,n,r,o){switch(t){case"focusin":return Tt=It(Tt,e,t,n,r,o),!0;case"dragenter":return _t=It(_t,e,t,n,r,o),!0;case"mouseover":return Lt=It(Lt,e,t,n,r,o),!0;case"pointerover":var a=o.pointerId;return jt.set(a,It(jt.get(a)||null,e,t,n,r,o)),!0;case"gotpointercapture":return a=o.pointerId,Nt.set(a,It(Nt.get(a)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(At(e,r),4&amp;t&amp;&amp;-1&lt;Rt.indexOf(e)){for(;null!==o;){var a=wo(o);if(null!==a&amp;&amp;St(a),null===(a=Yt(e,t,n,r))&amp;&amp;Ur(e,t,r,Kt,n),a===o)break;o=a}null!==o&amp;&amp;r.stopPropagation()}else Ur(e,t,r,null,n)}}var Kt=null;function Yt(e,t,n,r){if(Kt=null,null!==(e=bo(e=Se(r))))if(null===(t=Ve(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=He(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&amp;&amp;(e=null);return Kt=e,null}function Xt(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(Ze()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Qt=null,Zt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Zt,r=n.length,o="value"in Qt?Qt.value:Qt.textContent,a=o.length;for(e=0;e&lt;r&amp;&amp;n[e]===o[e];e++);var i=r-e;for(t=1;t&lt;=i&amp;&amp;n[r-t]===o[a-t];t++);return Jt=o.slice(e,1&lt;t?1-t:void 0)}function tn(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&amp;&amp;13===t&amp;&amp;(e=13):e=t,10===e&amp;&amp;(e=13),32&lt;=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,a){for(var i in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=a,this.currentTarget=null,e)e.hasOwnProperty(i)&amp;&amp;(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return D(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&amp;&amp;(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&amp;&amp;(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&amp;&amp;(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&amp;&amp;(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=on(un),fn=D({},un,{view:0,detail:0}),dn=on(fn),pn=D({},fn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Pn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==sn&amp;&amp;(sn&amp;&amp;"mousemove"===e.type?(an=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=an=0,sn=e),an)},movementY:function(e){return"movementY"in e?e.movementY:ln}}),hn=on(pn),mn=on(D({},pn,{dataTransfer:0})),yn=on(D({},fn,{relatedTarget:0})),vn=on(D({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),gn=D({},un,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),bn=on(gn),wn=on(D({},un,{data:0})),Sn={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},kn={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},xn={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=xn[e])&amp;&amp;!!t[e]}function Pn(){return En}var Cn=D({},fn,{key:function(e){if(e.key){var t=Sn[e.key]||e.key;if("Unidentified"!==t)return t}return"keypress"===e.type?13===(e=tn(e))?"Enter":String.fromCharCode(e):"keydown"===e.type||"keyup"===e.type?kn[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Pn,charCode:function(e){return"keypress"===e.type?tn(e):0},keyCode:function(e){return"keydown"===e.type||"keyup"===e.type?e.keyCode:0},which:function(e){return"keypress"===e.type?tn(e):"keydown"===e.type||"keyup"===e.type?e.keyCode:0}}),On=on(Cn),Tn=on(D({},pn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),_n=on(D({},fn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Pn})),Ln=on(D({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),jn=D({},pn,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Nn=on(jn),Mn=[9,13,27,32],Rn=c&amp;&amp;"CompositionEvent"in window,An=null;c&amp;&amp;"documentMode"in document&amp;&amp;(An=document.documentMode);var In=c&amp;&amp;"TextEvent"in window&amp;&amp;!An,Dn=c&amp;&amp;(!Rn||An&amp;&amp;8&lt;An&amp;&amp;11&gt;=An),zn=String.fromCharCode(32),Bn=!1;function Fn(e,t){switch(e){case"keyup":return-1!==Mn.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $n(e){return"object"==typeof(e=e.detail)&amp;&amp;"data"in e?e.data:null}var Vn=!1,Hn={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Un(e){var t=e&amp;&amp;e.nodeName&amp;&amp;e.nodeName.toLowerCase();return"input"===t?!!Hn[e.type]:"textarea"===t}function Wn(e,t,n,r){Ce(r),0&lt;(t=qr(t,"onChange")).length&amp;&amp;(n=new cn("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var qn=null,Gn=null;function Kn(e){zr(e,0)}function Yn(e){if(G(So(e)))return e}function Xn(e,t){if("change"===e)return t}var Qn=!1;if(c){var Zn;if(c){var Jn="oninput"in document;if(!Jn){var er=document.createElement("div");er.setAttribute("oninput","return;"),Jn="function"==typeof er.oninput}Zn=Jn}else Zn=!1;Qn=Zn&amp;&amp;(!document.documentMode||9&lt;document.documentMode)}function tr(){qn&amp;&amp;(qn.detachEvent("onpropertychange",nr),Gn=qn=null)}function nr(e){if("value"===e.propertyName&amp;&amp;Yn(Gn)){var t=[];Wn(t,Gn,e,Se(e)),je(Kn,t)}}function rr(e,t,n){"focusin"===e?(tr(),Gn=n,(qn=t).attachEvent("onpropertychange",nr)):"focusout"===e&amp;&amp;tr()}function or(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)return Yn(Gn)}function ar(e,t){if("click"===e)return Yn(t)}function ir(e,t){if("input"===e||"change"===e)return Yn(t)}var lr="function"==typeof Object.is?Object.is:function(e,t){return e===t&amp;&amp;(0!==e||1/e==1/t)||e!=e&amp;&amp;t!=t};function sr(e,t){if(lr(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r&lt;n.length;r++){var o=n[r];if(!f.call(t,o)||!lr(e[o],t[o]))return!1}return!0}function ur(e){for(;e&amp;&amp;e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e&lt;=t&amp;&amp;n&gt;=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function fr(e,t){return!(!e||!t)&amp;&amp;(e===t||(!e||3!==e.nodeType)&amp;&amp;(t&amp;&amp;3===t.nodeType?fr(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&amp;&amp;!!(16&amp;e.compareDocumentPosition(t))))}function dr(){for(var e=window,t=K();t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(!n)break;t=K((e=t.contentWindow).document)}return t}function pr(e){var t=e&amp;&amp;e.nodeName&amp;&amp;e.nodeName.toLowerCase();return t&amp;&amp;("input"===t&amp;&amp;("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}function hr(e){var t=dr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&amp;&amp;n&amp;&amp;n.ownerDocument&amp;&amp;fr(n.ownerDocument.documentElement,n)){if(null!==r&amp;&amp;pr(n))if(t=r.start,void 0===(e=r.end)&amp;&amp;(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&amp;&amp;t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,a=Math.min(r.start,o);r=void 0===r.end?a:Math.min(r.end,o),!e.extend&amp;&amp;a&gt;r&amp;&amp;(o=r,r=a,a=o),o=cr(n,a);var i=cr(n,r);o&amp;&amp;i&amp;&amp;(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&amp;&amp;((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),a&gt;r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&amp;&amp;t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for("function"==typeof n.focus&amp;&amp;n.focus(),n=0;n&lt;t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var mr=c&amp;&amp;"documentMode"in document&amp;&amp;11&gt;=document.documentMode,yr=null,vr=null,gr=null,br=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==yr||yr!==K(r)||(r="selectionStart"in(r=yr)&amp;&amp;pr(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&amp;&amp;r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},gr&amp;&amp;sr(gr,r)||(gr=r,0&lt;(r=qr(vr,"onSelect")).length&amp;&amp;(t=new cn("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=yr)))}function Sr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var kr={animationend:Sr("Animation","AnimationEnd"),animationiteration:Sr("Animation","AnimationIteration"),animationstart:Sr("Animation","AnimationStart"),transitionend:Sr("Transition","TransitionEnd")},xr={},Er={};function Pr(e){if(xr[e])return xr[e];if(!kr[e])return e;var t,n=kr[e];for(t in n)if(n.hasOwnProperty(t)&amp;&amp;t in Er)return xr[e]=n[t];return e}c&amp;&amp;(Er=document.createElement("div").style,"AnimationEvent"in window||(delete kr.animationend.animation,delete kr.animationiteration.animation,delete kr.animationstart.animation),"TransitionEvent"in window||delete kr.transitionend.transition);var Cr=Pr("animationend"),Or=Pr("animationiteration"),Tr=Pr("animationstart"),_r=Pr("transitionend"),Lr=new Map,jr="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function Nr(e,t){Lr.set(e,t),s(t,[e])}for(var Mr=0;Mr&lt;jr.length;Mr++){var Rr=jr[Mr];Nr(Rr.toLowerCase(),"on"+(Rr[0].toUpperCase()+Rr.slice(1)))}Nr(Cr,"onAnimationEnd"),Nr(Or,"onAnimationIteration"),Nr(Tr,"onAnimationStart"),Nr("dblclick","onDoubleClick"),Nr("focusin","onFocus"),Nr("focusout","onBlur"),Nr(_r,"onTransitionEnd"),u("onMouseEnter",["mouseout","mouseover"]),u("onMouseLeave",["mouseout","mouseover"]),u("onPointerEnter",["pointerout","pointerover"]),u("onPointerLeave",["pointerout","pointerover"]),s("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),s("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),s("onBeforeInput",["compositionend","keypress","textInput","paste"]),s("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),s("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ar="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Ir=new Set("cancel close invalid load scroll toggle".split(" ").concat(Ar));function Dr(e,t,n){var r=e.type||"unknown-event";e.currentTarget=n,function(e,t,n,r,o,i,l,s,u){if($e.apply(this,arguments),Ie){if(!Ie)throw Error(a(198));var c=De;Ie=!1,De=null,ze||(ze=!0,Be=c)}}(r,t,void 0,e),e.currentTarget=null}function zr(e,t){t=0!=(4&amp;t);for(var n=0;n&lt;e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var a=void 0;if(t)for(var i=r.length-1;0&lt;=i;i--){var l=r[i],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==a&amp;&amp;o.isPropagationStopped())break e;Dr(o,l,u),a=s}else for(i=0;i&lt;r.length;i++){if(s=(l=r[i]).instance,u=l.currentTarget,l=l.listener,s!==a&amp;&amp;o.isPropagationStopped())break e;Dr(o,l,u),a=s}}}if(ze)throw e=Be,ze=!1,Be=null,e}function Br(e,t){var n=t[yo];void 0===n&amp;&amp;(n=t[yo]=new Set);var r=e+"__bubble";n.has(r)||(Hr(t,e,2,!1),n.add(r))}function Fr(e,t,n){var r=0;t&amp;&amp;(r|=4),Hr(n,e,r,t)}var $r="_reactListening"+Math.random().toString(36).slice(2);function Vr(e){if(!e[$r]){e[$r]=!0,i.forEach((function(t){"selectionchange"!==t&amp;&amp;(Ir.has(t)||Fr(t,!1,e),Fr(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[$r]||(t[$r]=!0,Fr("selectionchange",!1,t))}}function Hr(e,t,n,r){switch(Xt(t)){case 1:var o=Wt;break;case 4:o=qt;break;default:o=Gt}n=o.bind(null,t,n,e),o=void 0,!Me||"touchstart"!==t&amp;&amp;"touchmove"!==t&amp;&amp;"wheel"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Ur(e,t,n,r,o){var a=r;if(0==(1&amp;t)&amp;&amp;0==(2&amp;t)&amp;&amp;null!==r)e:for(;;){if(null===r)return;var i=r.tag;if(3===i||4===i){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&amp;&amp;l.parentNode===o)break;if(4===i)for(i=r.return;null!==i;){var s=i.tag;if((3===s||4===s)&amp;&amp;((s=i.stateNode.containerInfo)===o||8===s.nodeType&amp;&amp;s.parentNode===o))return;i=i.return}for(;null!==l;){if(null===(i=bo(l)))return;if(5===(s=i.tag)||6===s){r=a=i;continue e}l=l.parentNode}}r=r.return}je((function(){var r=a,o=Se(n),i=[];e:{var l=Lr.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case"keypress":if(0===tn(n))break e;case"keydown":case"keyup":s=On;break;case"focusin":u="focus",s=yn;break;case"focusout":u="blur",s=yn;break;case"beforeblur":case"afterblur":s=yn;break;case"click":if(2===n.button)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":s=hn;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":s=mn;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":s=_n;break;case Cr:case Or:case Tr:s=vn;break;case _r:s=Ln;break;case"scroll":s=dn;break;case"wheel":s=Nn;break;case"copy":case"cut":case"paste":s=bn;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":s=Tn}var c=0!=(4&amp;t),f=!c&amp;&amp;"scroll"===e,d=c?null!==l?l+"Capture":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&amp;&amp;null!==m&amp;&amp;(p=m,null!==d&amp;&amp;null!=(m=Ne(h,d))&amp;&amp;c.push(Wr(h,m,p))),f)break;h=h.return}0&lt;c.length&amp;&amp;(l=new s(l,u,null,n,o),i.push({event:l,listeners:c}))}}if(0==(7&amp;t)){if(s="mouseout"===e||"pointerout"===e,(!(l="mouseover"===e||"pointerover"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!bo(u)&amp;&amp;!u[mo])&amp;&amp;(s||l)&amp;&amp;(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?bo(u):null)&amp;&amp;(u!==(f=Ve(u))||5!==u.tag&amp;&amp;6!==u.tag)&amp;&amp;(u=null)):(s=null,u=r),s!==u)){if(c=hn,m="onMouseLeave",d="onMouseEnter",h="mouse","pointerout"!==e&amp;&amp;"pointerover"!==e||(c=Tn,m="onPointerLeave",d="onPointerEnter",h="pointer"),f=null==s?l:So(s),p=null==u?l:So(u),(l=new c(m,h+"leave",s,n,o)).target=f,l.relatedTarget=p,m=null,bo(o)===r&amp;&amp;((c=new c(d,h+"enter",u,n,o)).target=p,c.relatedTarget=f,m=c),f=m,s&amp;&amp;u)e:{for(d=u,h=0,p=c=s;p;p=Gr(p))h++;for(p=0,m=d;m;m=Gr(m))p++;for(;0&lt;h-p;)c=Gr(c),h--;for(;0&lt;p-h;)d=Gr(d),p--;for(;h--;){if(c===d||null!==d&amp;&amp;c===d.alternate)break e;c=Gr(c),d=Gr(d)}c=null}else c=null;null!==s&amp;&amp;Kr(i,l,s,c,!1),null!==u&amp;&amp;null!==f&amp;&amp;Kr(i,f,u,c,!0)}if("select"===(s=(l=r?So(r):window).nodeName&amp;&amp;l.nodeName.toLowerCase())||"input"===s&amp;&amp;"file"===l.type)var y=Xn;else if(Un(l))if(Qn)y=ir;else{y=or;var v=rr}else(s=l.nodeName)&amp;&amp;"input"===s.toLowerCase()&amp;&amp;("checkbox"===l.type||"radio"===l.type)&amp;&amp;(y=ar);switch(y&amp;&amp;(y=y(e,r))?Wn(i,y,n,o):(v&amp;&amp;v(e,l,r),"focusout"===e&amp;&amp;(v=l._wrapperState)&amp;&amp;v.controlled&amp;&amp;"number"===l.type&amp;&amp;ee(l,"number",l.value)),v=r?So(r):window,e){case"focusin":(Un(v)||"true"===v.contentEditable)&amp;&amp;(yr=v,vr=r,gr=null);break;case"focusout":gr=vr=yr=null;break;case"mousedown":br=!0;break;case"contextmenu":case"mouseup":case"dragend":br=!1,wr(i,n,o);break;case"selectionchange":if(mr)break;case"keydown":case"keyup":wr(i,n,o)}var g;if(Rn)e:{switch(e){case"compositionstart":var b="onCompositionStart";break e;case"compositionend":b="onCompositionEnd";break e;case"compositionupdate":b="onCompositionUpdate";break e}b=void 0}else Vn?Fn(e,n)&amp;&amp;(b="onCompositionEnd"):"keydown"===e&amp;&amp;229===n.keyCode&amp;&amp;(b="onCompositionStart");b&amp;&amp;(Dn&amp;&amp;"ko"!==n.locale&amp;&amp;(Vn||"onCompositionStart"!==b?"onCompositionEnd"===b&amp;&amp;Vn&amp;&amp;(g=en()):(Zt="value"in(Qt=o)?Qt.value:Qt.textContent,Vn=!0)),0&lt;(v=qr(r,b)).length&amp;&amp;(b=new wn(b,e,null,n,o),i.push({event:b,listeners:v}),(g||null!==(g=$n(n)))&amp;&amp;(b.data=g))),(g=In?function(e,t){switch(e){case"compositionend":return $n(t);case"keypress":return 32!==t.which?null:(Bn=!0,zn);case"textInput":return(e=t.data)===zn&amp;&amp;Bn?null:e;default:return null}}(e,n):function(e,t){if(Vn)return"compositionend"===e||!Rn&amp;&amp;Fn(e,t)?(e=en(),Jt=Zt=Qt=null,Vn=!1,e):null;switch(e){case"paste":default:return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&amp;&amp;t.altKey){if(t.char&amp;&amp;1&lt;t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return Dn&amp;&amp;"ko"!==t.locale?null:t.data}}(e,n))&amp;&amp;0&lt;(r=qr(r,"onBeforeInput")).length&amp;&amp;(o=new wn("onBeforeInput","beforeinput",null,n,o),i.push({event:o,listeners:r}),o.data=g)}zr(i,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function qr(e,t){for(var n=t+"Capture",r=[];null!==e;){var o=e,a=o.stateNode;5===o.tag&amp;&amp;null!==a&amp;&amp;(o=a,null!=(a=Ne(e,n))&amp;&amp;r.unshift(Wr(e,a,o)),null!=(a=Ne(e,t))&amp;&amp;r.push(Wr(e,a,o))),e=e.return}return r}function Gr(e){if(null===e)return null;do{e=e.return}while(e&amp;&amp;5!==e.tag);return e||null}function Kr(e,t,n,r,o){for(var a=t._reactName,i=[];null!==n&amp;&amp;n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&amp;&amp;s===r)break;5===l.tag&amp;&amp;null!==u&amp;&amp;(l=u,o?null!=(s=Ne(n,a))&amp;&amp;i.unshift(Wr(n,s,l)):o||null!=(s=Ne(n,a))&amp;&amp;i.push(Wr(n,s,l))),n=n.return}0!==i.length&amp;&amp;e.push({event:t,listeners:i})}var Yr=/\r\n?/g,Xr=/\u0000|\uFFFD/g;function Qr(e){return("string"==typeof e?e:""+e).replace(Yr,"\n").replace(Xr,"")}function Zr(e,t,n){if(t=Qr(t),Qr(e)!==t&amp;&amp;n)throw Error(a(425))}function Jr(){}var eo=null,to=null;function no(e,t){return"textarea"===e||"noscript"===e||"string"==typeof t.children||"number"==typeof t.children||"object"==typeof t.dangerouslySetInnerHTML&amp;&amp;null!==t.dangerouslySetInnerHTML&amp;&amp;null!=t.dangerouslySetInnerHTML.__html}var ro="function"==typeof setTimeout?setTimeout:void 0,oo="function"==typeof clearTimeout?clearTimeout:void 0,ao="function"==typeof Promise?Promise:void 0,io="function"==typeof queueMicrotask?queueMicrotask:void 0!==ao?function(e){return ao.resolve(null).then(e).catch(lo)}:ro;function lo(e){setTimeout((function(){throw e}))}function so(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&amp;&amp;8===o.nodeType)if("/$"===(n=o.data)){if(0===r)return e.removeChild(o),void Vt(t);r--}else"$"!==n&amp;&amp;"$?"!==n&amp;&amp;"$!"!==n||r++;n=o}while(n);Vt(t)}function uo(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t)break;if("/$"===t)return null}}return e}function co(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&amp;&amp;t++}e=e.previousSibling}return null}var fo=Math.random().toString(36).slice(2),po="__reactFiber$"+fo,ho="__reactProps$"+fo,mo="__reactContainer$"+fo,yo="__reactEvents$"+fo,vo="__reactListeners$"+fo,go="__reactHandles$"+fo;function bo(e){var t=e[po];if(t)return t;for(var n=e.parentNode;n;){if(t=n[mo]||n[po]){if(n=t.alternate,null!==t.child||null!==n&amp;&amp;null!==n.child)for(e=co(e);null!==e;){if(n=e[po])return n;e=co(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[po]||e[mo])||5!==e.tag&amp;&amp;6!==e.tag&amp;&amp;13!==e.tag&amp;&amp;3!==e.tag?null:e}function So(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function ko(e){return e[ho]||null}var xo=[],Eo=-1;function Po(e){return{current:e}}function Co(e){0&gt;Eo||(e.current=xo[Eo],xo[Eo]=null,Eo--)}function Oo(e,t){Eo++,xo[Eo]=e.current,e.current=t}var To={},_o=Po(To),Lo=Po(!1),jo=To;function No(e,t){var n=e.type.contextTypes;if(!n)return To;var r=e.stateNode;if(r&amp;&amp;r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&amp;&amp;((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Mo(e){return null!=e.childContextTypes}function Ro(){Co(Lo),Co(_o)}function Ao(e,t,n){if(_o.current!==To)throw Error(a(168));Oo(_o,t),Oo(Lo,n)}function Io(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(a(108,H(e)||"Unknown",o));return D({},n,r)}function Do(e){return e=(e=e.stateNode)&amp;&amp;e.__reactInternalMemoizedMergedChildContext||To,jo=_o.current,Oo(_o,e),Oo(Lo,Lo.current),!0}function zo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=Io(e,t,jo),r.__reactInternalMemoizedMergedChildContext=e,Co(Lo),Co(_o),Oo(_o,e)):Co(Lo),Oo(Lo,n)}var Bo=null,Fo=!1,$o=!1;function Vo(e){null===Bo?Bo=[e]:Bo.push(e)}function Ho(){if(!$o&amp;&amp;null!==Bo){$o=!0;var e=0,t=bt;try{var n=Bo;for(bt=1;e&lt;n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Bo=null,Fo=!1}catch(t){throw null!==Bo&amp;&amp;(Bo=Bo.slice(e+1)),Ge(Je,Ho),t}finally{bt=t,$o=!1}}return null}var Uo=[],Wo=0,qo=null,Go=0,Ko=[],Yo=0,Xo=null,Qo=1,Zo="";function Jo(e,t){Uo[Wo++]=Go,Uo[Wo++]=qo,qo=e,Go=t}function ea(e,t,n){Ko[Yo++]=Qo,Ko[Yo++]=Zo,Ko[Yo++]=Xo,Xo=e;var r=Qo;e=Zo;var o=32-it(r)-1;r&amp;=~(1&lt;&lt;o),n+=1;var a=32-it(t)+o;if(30&lt;a){var i=o-o%5;a=(r&amp;(1&lt;&lt;i)-1).toString(32),r&gt;&gt;=i,o-=i,Qo=1&lt;&lt;32-it(t)+o|n&lt;&lt;o|r,Zo=a+e}else Qo=1&lt;&lt;a|n&lt;&lt;o|r,Zo=e}function ta(e){null!==e.return&amp;&amp;(Jo(e,1),ea(e,1,0))}function na(e){for(;e===qo;)qo=Uo[--Wo],Uo[Wo]=null,Go=Uo[--Wo],Uo[Wo]=null;for(;e===Xo;)Xo=Ko[--Yo],Ko[Yo]=null,Zo=Ko[--Yo],Ko[Yo]=null,Qo=Ko[--Yo],Ko[Yo]=null}var ra=null,oa=null,aa=!1,ia=null;function la(e,t){var n=ju(5,null,null,0);n.elementType="DELETED",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function sa(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&amp;&amp;(e.stateNode=t,ra=e,oa=uo(t.firstChild),!0);case 6:return null!==(t=""===e.pendingProps||3!==t.nodeType?null:t)&amp;&amp;(e.stateNode=t,ra=e,oa=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&amp;&amp;(n=null!==Xo?{id:Qo,overflow:Zo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=ju(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ra=e,oa=null,!0);default:return!1}}function ua(e){return 0!=(1&amp;e.mode)&amp;&amp;0==(128&amp;e.flags)}function ca(e){if(aa){var t=oa;if(t){var n=t;if(!sa(e,t)){if(ua(e))throw Error(a(418));t=uo(n.nextSibling);var r=ra;t&amp;&amp;sa(e,t)?la(r,n):(e.flags=-4097&amp;e.flags|2,aa=!1,ra=e)}}else{if(ua(e))throw Error(a(418));e.flags=-4097&amp;e.flags|2,aa=!1,ra=e}}}function fa(e){for(e=e.return;null!==e&amp;&amp;5!==e.tag&amp;&amp;3!==e.tag&amp;&amp;13!==e.tag;)e=e.return;ra=e}function da(e){if(e!==ra)return!1;if(!aa)return fa(e),aa=!0,!1;var t;if((t=3!==e.tag)&amp;&amp;!(t=5!==e.tag)&amp;&amp;(t="head"!==(t=e.type)&amp;&amp;"body"!==t&amp;&amp;!no(e.type,e.memoizedProps)),t&amp;&amp;(t=oa)){if(ua(e))throw pa(),Error(a(418));for(;t;)la(e,t),t=uo(t.nextSibling)}if(fa(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if("/$"===n){if(0===t){oa=uo(e.nextSibling);break e}t--}else"$"!==n&amp;&amp;"$!"!==n&amp;&amp;"$?"!==n||t++}e=e.nextSibling}oa=null}}else oa=ra?uo(e.stateNode.nextSibling):null;return!0}function pa(){for(var e=oa;e;)e=uo(e.nextSibling)}function ha(){oa=ra=null,aa=!1}function ma(e){null===ia?ia=[e]:ia.push(e)}var ya=w.ReactCurrentBatchConfig;function va(e,t){if(e&amp;&amp;e.defaultProps){for(var n in t=D({},t),e=e.defaultProps)void 0===t[n]&amp;&amp;(t[n]=e[n]);return t}return t}var ga=Po(null),ba=null,wa=null,Sa=null;function ka(){Sa=wa=ba=null}function xa(e){var t=ga.current;Co(ga),e._currentValue=t}function Ea(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&amp;t)!==t?(e.childLanes|=t,null!==r&amp;&amp;(r.childLanes|=t)):null!==r&amp;&amp;(r.childLanes&amp;t)!==t&amp;&amp;(r.childLanes|=t),e===n)break;e=e.return}}function Pa(e,t){ba=e,Sa=wa=null,null!==(e=e.dependencies)&amp;&amp;null!==e.firstContext&amp;&amp;(0!=(e.lanes&amp;t)&amp;&amp;(wl=!0),e.firstContext=null)}function Ca(e){var t=e._currentValue;if(Sa!==e)if(e={context:e,memoizedValue:t,next:null},null===wa){if(null===ba)throw Error(a(308));wa=e,ba.dependencies={lanes:0,firstContext:e}}else wa=wa.next=e;return t}var Oa=null;function Ta(e){null===Oa?Oa=[e]:Oa.push(e)}function _a(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Ta(t)):(n.next=o.next,o.next=n),t.interleaved=n,La(e,r)}function La(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&amp;&amp;(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&amp;&amp;(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var ja=!1;function Na(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ma(e,t){e=e.updateQueue,t.updateQueue===e&amp;&amp;(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ra(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Aa(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&amp;Ts)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,La(e,n)}return null===(o=r.interleaved)?(t.next=t,Ta(r)):(t.next=o.next,o.next=t),r.interleaved=t,La(e,n)}function Ia(e,t,n){if(null!==(t=t.updateQueue)&amp;&amp;(t=t.shared,0!=(4194240&amp;n))){var r=t.lanes;n|=r&amp;=e.pendingLanes,t.lanes=n,gt(e,n)}}function Da(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&amp;&amp;n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function za(e,t,n,r){var o=e.updateQueue;ja=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,u=s.next;s.next=null,null===i?a=u:i.next=u,i=s;var c=e.alternate;null!==c&amp;&amp;(l=(c=c.updateQueue).lastBaseUpdate)!==i&amp;&amp;(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s)}if(null!==a){var f=o.baseState;for(i=0,c=u=s=null,l=a;;){var d=l.lane,p=l.eventTime;if((r&amp;d)===d){null!==c&amp;&amp;(c=c.next={eventTime:p,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var h=e,m=l;switch(d=t,p=n,m.tag){case 1:if("function"==typeof(h=m.payload)){f=h.call(p,f,d);break e}f=h;break e;case 3:h.flags=-65537&amp;h.flags|128;case 0:if(null==(d="function"==typeof(h=m.payload)?h.call(p,f,d):h))break e;f=D({},f,d);break e;case 2:ja=!0}}null!==l.callback&amp;&amp;0!==l.lane&amp;&amp;(e.flags|=64,null===(d=o.effects)?o.effects=[l]:d.push(l))}else p={eventTime:p,lane:d,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=p,s=f):c=c.next=p,i|=d;if(null===(l=l.next)){if(null===(l=o.shared.pending))break;l=(d=l).next,d.next=null,o.lastBaseUpdate=d,o.shared.pending=null}}if(null===c&amp;&amp;(s=f),o.baseState=s,o.firstBaseUpdate=u,o.lastBaseUpdate=c,null!==(t=o.shared.interleaved)){o=t;do{i|=o.lane,o=o.next}while(o!==t)}else null===a&amp;&amp;(o.shared.lanes=0);Is|=i,e.lanes=i,e.memoizedState=f}}function Ba(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t&lt;e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,"function"!=typeof o)throw Error(a(191,o));o.call(r)}}}var Fa=(new r.Component).refs;function $a(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:D({},t,n),e.memoizedState=n,0===e.lanes&amp;&amp;(e.updateQueue.baseState=n)}var Va={isMounted:function(e){return!!(e=e._reactInternals)&amp;&amp;Ve(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=eu(),o=tu(e),a=Ra(r,o);a.payload=t,null!=n&amp;&amp;(a.callback=n),null!==(t=Aa(e,a,o))&amp;&amp;(nu(t,e,o,r),Ia(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=eu(),o=tu(e),a=Ra(r,o);a.tag=1,a.payload=t,null!=n&amp;&amp;(a.callback=n),null!==(t=Aa(e,a,o))&amp;&amp;(nu(t,e,o,r),Ia(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=eu(),r=tu(e),o=Ra(n,r);o.tag=2,null!=t&amp;&amp;(o.callback=t),null!==(t=Aa(e,o,r))&amp;&amp;(nu(t,e,r,n),Ia(t,e,r))}};function Ha(e,t,n,r,o,a,i){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,i):!(t.prototype&amp;&amp;t.prototype.isPureReactComponent&amp;&amp;sr(n,r)&amp;&amp;sr(o,a))}function Ua(e,t,n){var r=!1,o=To,a=t.contextType;return"object"==typeof a&amp;&amp;null!==a?a=Ca(a):(o=Mo(t)?jo:_o.current,a=(r=null!=(r=t.contextTypes))?No(e,o):To),t=new t(n,a),e.memoizedState=null!==t.state&amp;&amp;void 0!==t.state?t.state:null,t.updater=Va,e.stateNode=t,t._reactInternals=e,r&amp;&amp;((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=a),t}function Wa(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&amp;&amp;t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&amp;&amp;t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&amp;&amp;Va.enqueueReplaceState(t,t.state,null)}function qa(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=Fa,Na(e);var a=t.contextType;"object"==typeof a&amp;&amp;null!==a?o.context=Ca(a):(a=Mo(t)?jo:_o.current,o.context=No(e,a)),o.state=e.memoizedState,"function"==typeof(a=t.getDerivedStateFromProps)&amp;&amp;($a(e,t,a,n),o.state=e.memoizedState),"function"==typeof t.getDerivedStateFromProps||"function"==typeof o.getSnapshotBeforeUpdate||"function"!=typeof o.UNSAFE_componentWillMount&amp;&amp;"function"!=typeof o.componentWillMount||(t=o.state,"function"==typeof o.componentWillMount&amp;&amp;o.componentWillMount(),"function"==typeof o.UNSAFE_componentWillMount&amp;&amp;o.UNSAFE_componentWillMount(),t!==o.state&amp;&amp;Va.enqueueReplaceState(o,o.state,null),za(e,n,o,r),o.state=e.memoizedState),"function"==typeof o.componentDidMount&amp;&amp;(e.flags|=4194308)}function Ga(e,t,n){if(null!==(e=n.ref)&amp;&amp;"function"!=typeof e&amp;&amp;"object"!=typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=r,i=""+e;return null!==t&amp;&amp;null!==t.ref&amp;&amp;"function"==typeof t.ref&amp;&amp;t.ref._stringRef===i?t.ref:(t=function(e){var t=o.refs;t===Fa&amp;&amp;(t=o.refs={}),null===e?delete t[i]:t[i]=e},t._stringRef=i,t)}if("string"!=typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Ka(e,t){throw e=Object.prototype.toString.call(t),Error(a(31,"[object Object]"===e?"object with keys {"+Object.keys(t).join(", ")+"}":e))}function Ya(e){return(0,e._init)(e._payload)}function Xa(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Mu(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)&lt;n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&amp;&amp;null===t.alternate&amp;&amp;(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Du(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){var a=n.type;return a===x?f(e,t,n.props.children,r,n.key):null!==t&amp;&amp;(t.elementType===a||"object"==typeof a&amp;&amp;null!==a&amp;&amp;a.$$typeof===N&amp;&amp;Ya(a)===t.type)?((r=o(t,n.props)).ref=Ga(e,t,n),r.return=e,r):((r=Ru(n.type,n.key,n.props,null,e.mode,r)).ref=Ga(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=zu(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function f(e,t,n,r,a){return null===t||7!==t.tag?((t=Au(n,e.mode,r,a)).return=e,t):((t=o(t,n)).return=e,t)}function d(e,t,n){if("string"==typeof t&amp;&amp;""!==t||"number"==typeof t)return(t=Du(""+t,e.mode,n)).return=e,t;if("object"==typeof t&amp;&amp;null!==t){switch(t.$$typeof){case S:return(n=Ru(t.type,t.key,t.props,null,e.mode,n)).ref=Ga(e,null,t),n.return=e,n;case k:return(t=zu(t,e.mode,n)).return=e,t;case N:return d(e,(0,t._init)(t._payload),n)}if(te(t)||A(t))return(t=Au(t,e.mode,n,null)).return=e,t;Ka(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if("string"==typeof n&amp;&amp;""!==n||"number"==typeof n)return null!==o?null:s(e,t,""+n,r);if("object"==typeof n&amp;&amp;null!==n){switch(n.$$typeof){case S:return n.key===o?u(e,t,n,r):null;case k:return n.key===o?c(e,t,n,r):null;case N:return p(e,t,(o=n._init)(n._payload),r)}if(te(n)||A(n))return null!==o?null:f(e,t,n,r,null);Ka(e,n)}return null}function h(e,t,n,r,o){if("string"==typeof r&amp;&amp;""!==r||"number"==typeof r)return s(t,e=e.get(n)||null,""+r,o);if("object"==typeof r&amp;&amp;null!==r){switch(r.$$typeof){case S:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case k:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case N:return h(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||A(r))return f(t,e=e.get(n)||null,r,o,null);Ka(t,r)}return null}function m(o,a,l,s){for(var u=null,c=null,f=a,m=a=0,y=null;null!==f&amp;&amp;m&lt;l.length;m++){f.index&gt;m?(y=f,f=null):y=f.sibling;var v=p(o,f,l[m],s);if(null===v){null===f&amp;&amp;(f=y);break}e&amp;&amp;f&amp;&amp;null===v.alternate&amp;&amp;t(o,f),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v,f=y}if(m===l.length)return n(o,f),aa&amp;&amp;Jo(o,m),u;if(null===f){for(;m&lt;l.length;m++)null!==(f=d(o,l[m],s))&amp;&amp;(a=i(f,a,m),null===c?u=f:c.sibling=f,c=f);return aa&amp;&amp;Jo(o,m),u}for(f=r(o,f);m&lt;l.length;m++)null!==(y=h(f,o,m,l[m],s))&amp;&amp;(e&amp;&amp;null!==y.alternate&amp;&amp;f.delete(null===y.key?m:y.key),a=i(y,a,m),null===c?u=y:c.sibling=y,c=y);return e&amp;&amp;f.forEach((function(e){return t(o,e)})),aa&amp;&amp;Jo(o,m),u}function y(o,l,s,u){var c=A(s);if("function"!=typeof c)throw Error(a(150));if(null==(s=c.call(s)))throw Error(a(151));for(var f=c=null,m=l,y=l=0,v=null,g=s.next();null!==m&amp;&amp;!g.done;y++,g=s.next()){m.index&gt;y?(v=m,m=null):v=m.sibling;var b=p(o,m,g.value,u);if(null===b){null===m&amp;&amp;(m=v);break}e&amp;&amp;m&amp;&amp;null===b.alternate&amp;&amp;t(o,m),l=i(b,l,y),null===f?c=b:f.sibling=b,f=b,m=v}if(g.done)return n(o,m),aa&amp;&amp;Jo(o,y),c;if(null===m){for(;!g.done;y++,g=s.next())null!==(g=d(o,g.value,u))&amp;&amp;(l=i(g,l,y),null===f?c=g:f.sibling=g,f=g);return aa&amp;&amp;Jo(o,y),c}for(m=r(o,m);!g.done;y++,g=s.next())null!==(g=h(m,o,y,g.value,u))&amp;&amp;(e&amp;&amp;null!==g.alternate&amp;&amp;m.delete(null===g.key?y:g.key),l=i(g,l,y),null===f?c=g:f.sibling=g,f=g);return e&amp;&amp;m.forEach((function(e){return t(o,e)})),aa&amp;&amp;Jo(o,y),c}return function e(r,a,i,s){if("object"==typeof i&amp;&amp;null!==i&amp;&amp;i.type===x&amp;&amp;null===i.key&amp;&amp;(i=i.props.children),"object"==typeof i&amp;&amp;null!==i){switch(i.$$typeof){case S:e:{for(var u=i.key,c=a;null!==c;){if(c.key===u){if((u=i.type)===x){if(7===c.tag){n(r,c.sibling),(a=o(c,i.props.children)).return=r,r=a;break e}}else if(c.elementType===u||"object"==typeof u&amp;&amp;null!==u&amp;&amp;u.$$typeof===N&amp;&amp;Ya(u)===c.type){n(r,c.sibling),(a=o(c,i.props)).ref=Ga(r,c,i),a.return=r,r=a;break e}n(r,c);break}t(r,c),c=c.sibling}i.type===x?((a=Au(i.props.children,r.mode,s,i.key)).return=r,r=a):((s=Ru(i.type,i.key,i.props,null,r.mode,s)).ref=Ga(r,a,i),s.return=r,r=s)}return l(r);case k:e:{for(c=i.key;null!==a;){if(a.key===c){if(4===a.tag&amp;&amp;a.stateNode.containerInfo===i.containerInfo&amp;&amp;a.stateNode.implementation===i.implementation){n(r,a.sibling),(a=o(a,i.children||[])).return=r,r=a;break e}n(r,a);break}t(r,a),a=a.sibling}(a=zu(i,r.mode,s)).return=r,r=a}return l(r);case N:return e(r,a,(c=i._init)(i._payload),s)}if(te(i))return m(r,a,i,s);if(A(i))return y(r,a,i,s);Ka(r,i)}return"string"==typeof i&amp;&amp;""!==i||"number"==typeof i?(i=""+i,null!==a&amp;&amp;6===a.tag?(n(r,a.sibling),(a=o(a,i)).return=r,r=a):(n(r,a),(a=Du(i,r.mode,s)).return=r,r=a),l(r)):n(r,a)}}var Qa=Xa(!0),Za=Xa(!1),Ja={},ei=Po(Ja),ti=Po(Ja),ni=Po(Ja);function ri(e){if(e===Ja)throw Error(a(174));return e}function oi(e,t){switch(Oo(ni,t),Oo(ti,e),Oo(ei,Ja),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,"");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Co(ei),Oo(ei,t)}function ai(){Co(ei),Co(ti),Co(ni)}function ii(e){ri(ni.current);var t=ri(ei.current),n=se(t,e.type);t!==n&amp;&amp;(Oo(ti,e),Oo(ei,n))}function li(e){ti.current===e&amp;&amp;(Co(ei),Co(ti))}var si=Po(0);function ui(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&amp;&amp;(null===(n=n.dehydrated)||"$?"===n.data||"$!"===n.data))return t}else if(19===t.tag&amp;&amp;void 0!==t.memoizedProps.revealOrder){if(0!=(128&amp;t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ci=[];function fi(){for(var e=0;e&lt;ci.length;e++)ci[e]._workInProgressVersionPrimary=null;ci.length=0}var di=w.ReactCurrentDispatcher,pi=w.ReactCurrentBatchConfig,hi=0,mi=null,yi=null,vi=null,gi=!1,bi=!1,wi=0,Si=0;function ki(){throw Error(a(321))}function xi(e,t){if(null===t)return!1;for(var n=0;n&lt;t.length&amp;&amp;n&lt;e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Ei(e,t,n,r,o,i){if(hi=i,mi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,di.current=null===e||null===e.memoizedState?ll:sl,e=n(r,o),bi){i=0;do{if(bi=!1,wi=0,25&lt;=i)throw Error(a(301));i+=1,vi=yi=null,t.updateQueue=null,di.current=ul,e=n(r,o)}while(bi)}if(di.current=il,t=null!==yi&amp;&amp;null!==yi.next,hi=0,vi=yi=mi=null,gi=!1,t)throw Error(a(300));return e}function Pi(){var e=0!==wi;return wi=0,e}function Ci(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===vi?mi.memoizedState=vi=e:vi=vi.next=e,vi}function Oi(){if(null===yi){var e=mi.alternate;e=null!==e?e.memoizedState:null}else e=yi.next;var t=null===vi?mi.memoizedState:vi.next;if(null!==t)vi=t,yi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(yi=e).memoizedState,baseState:yi.baseState,baseQueue:yi.baseQueue,queue:yi.queue,next:null},null===vi?mi.memoizedState=vi=e:vi=vi.next=e}return vi}function Ti(e,t){return"function"==typeof t?t(e):t}function _i(e){var t=Oi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=yi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var l=o.next;o.next=i.next,i.next=l}r.baseQueue=o=i,n.pending=null}if(null!==o){i=o.next,r=r.baseState;var s=l=null,u=null,c=i;do{var f=c.lane;if((hi&amp;f)===f)null!==u&amp;&amp;(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var d={lane:f,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=d,l=r):u=u.next=d,mi.lanes|=f,Is|=f}c=c.next}while(null!==c&amp;&amp;c!==i);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(wl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{i=o.lane,mi.lanes|=i,Is|=i,o=o.next}while(o!==e)}else null===o&amp;&amp;(n.lanes=0);return[t.memoizedState,n.dispatch]}function Li(e){var t=Oi(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{i=e(i,l.action),l=l.next}while(l!==o);lr(i,t.memoizedState)||(wl=!0),t.memoizedState=i,null===t.baseQueue&amp;&amp;(t.baseState=i),n.lastRenderedState=i}return[i,r]}function ji(){}function Ni(e,t){var n=mi,r=Oi(),o=t(),i=!lr(r.memoizedState,o);if(i&amp;&amp;(r.memoizedState=o,wl=!0),r=r.queue,Ui(Ai.bind(null,n,r,e),[e]),r.getSnapshot!==t||i||null!==vi&amp;&amp;1&amp;vi.memoizedState.tag){if(n.flags|=2048,Bi(9,Ri.bind(null,n,r,o,t),void 0,null),null===_s)throw Error(a(349));0!=(30&amp;hi)||Mi(n,t,o)}return o}function Mi(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=mi.updateQueue)?(t={lastEffect:null,stores:null},mi.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function Ri(e,t,n,r){t.value=n,t.getSnapshot=r,Ii(t)&amp;&amp;Di(e)}function Ai(e,t,n){return n((function(){Ii(t)&amp;&amp;Di(e)}))}function Ii(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(e){return!0}}function Di(e){var t=La(e,1);null!==t&amp;&amp;nu(t,e,1,-1)}function zi(e){var t=Ci();return"function"==typeof e&amp;&amp;(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ti,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,mi,e),[t.memoizedState,e]}function Bi(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=mi.updateQueue)?(t={lastEffect:null,stores:null},mi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Fi(){return Oi().memoizedState}function $i(e,t,n,r){var o=Ci();mi.flags|=e,o.memoizedState=Bi(1|t,n,void 0,void 0===r?null:r)}function Vi(e,t,n,r){var o=Oi();r=void 0===r?null:r;var a=void 0;if(null!==yi){var i=yi.memoizedState;if(a=i.destroy,null!==r&amp;&amp;xi(r,i.deps))return void(o.memoizedState=Bi(t,n,a,r))}mi.flags|=e,o.memoizedState=Bi(1|t,n,a,r)}function Hi(e,t){return $i(8390656,8,e,t)}function Ui(e,t){return Vi(2048,8,e,t)}function Wi(e,t){return Vi(4,2,e,t)}function qi(e,t){return Vi(4,4,e,t)}function Gi(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ki(e,t,n){return n=null!=n?n.concat([e]):null,Vi(4,4,Gi.bind(null,t,e),n)}function Yi(){}function Xi(e,t){var n=Oi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&amp;&amp;null!==t&amp;&amp;xi(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Qi(e,t){var n=Oi();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&amp;&amp;null!==t&amp;&amp;xi(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Zi(e,t,n){return 0==(21&amp;hi)?(e.baseState&amp;&amp;(e.baseState=!1,wl=!0),e.memoizedState=n):(lr(n,t)||(n=mt(),mi.lanes|=n,Is|=n,e.baseState=!0),t)}function Ji(e,t){var n=bt;bt=0!==n&amp;&amp;4&gt;n?n:4,e(!0);var r=pi.transition;pi.transition={};try{e(!1),t()}finally{bt=n,pi.transition=r}}function el(){return Oi().memoizedState}function tl(e,t,n){var r=tu(e);n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e)?ol(t,n):null!==(n=_a(e,t,n,r))&amp;&amp;(nu(n,e,r,eu()),al(n,t,r))}function nl(e,t,n){var r=tu(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))ol(t,o);else{var a=e.alternate;if(0===e.lanes&amp;&amp;(null===a||0===a.lanes)&amp;&amp;null!==(a=t.lastRenderedReducer))try{var i=t.lastRenderedState,l=a(i,n);if(o.hasEagerState=!0,o.eagerState=l,lr(l,i)){var s=t.interleaved;return null===s?(o.next=o,Ta(t)):(o.next=s.next,s.next=o),void(t.interleaved=o)}}catch(e){}null!==(n=_a(e,t,o,r))&amp;&amp;(nu(n,e,r,o=eu()),al(n,t,r))}}function rl(e){var t=e.alternate;return e===mi||null!==t&amp;&amp;t===mi}function ol(e,t){bi=gi=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function al(e,t,n){if(0!=(4194240&amp;n)){var r=t.lanes;n|=r&amp;=e.pendingLanes,t.lanes=n,gt(e,n)}}var il={readContext:Ca,useCallback:ki,useContext:ki,useEffect:ki,useImperativeHandle:ki,useInsertionEffect:ki,useLayoutEffect:ki,useMemo:ki,useReducer:ki,useRef:ki,useState:ki,useDebugValue:ki,useDeferredValue:ki,useTransition:ki,useMutableSource:ki,useSyncExternalStore:ki,useId:ki,unstable_isNewReconciler:!1},ll={readContext:Ca,useCallback:function(e,t){return Ci().memoizedState=[e,void 0===t?null:t],e},useContext:Ca,useEffect:Hi,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,$i(4194308,4,Gi.bind(null,t,e),n)},useLayoutEffect:function(e,t){return $i(4194308,4,e,t)},useInsertionEffect:function(e,t){return $i(4,2,e,t)},useMemo:function(e,t){var n=Ci();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ci();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,mi,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ci().memoizedState=e},useState:zi,useDebugValue:Yi,useDeferredValue:function(e){return Ci().memoizedState=e},useTransition:function(){var e=zi(!1),t=e[0];return e=Ji.bind(null,e[1]),Ci().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=mi,o=Ci();if(aa){if(void 0===n)throw Error(a(407));n=n()}else{if(n=t(),null===_s)throw Error(a(349));0!=(30&amp;hi)||Mi(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,Hi(Ai.bind(null,r,i,e),[e]),r.flags|=2048,Bi(9,Ri.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Ci(),t=_s.identifierPrefix;if(aa){var n=Zo;t=":"+t+"R"+(n=(Qo&amp;~(1&lt;&lt;32-it(Qo)-1)).toString(32)+n),0&lt;(n=wi++)&amp;&amp;(t+="H"+n.toString(32)),t+=":"}else t=":"+t+"r"+(n=Si++).toString(32)+":";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:Ca,useCallback:Xi,useContext:Ca,useEffect:Ui,useImperativeHandle:Ki,useInsertionEffect:Wi,useLayoutEffect:qi,useMemo:Qi,useReducer:_i,useRef:Fi,useState:function(){return _i(Ti)},useDebugValue:Yi,useDeferredValue:function(e){return Zi(Oi(),yi.memoizedState,e)},useTransition:function(){return[_i(Ti)[0],Oi().memoizedState]},useMutableSource:ji,useSyncExternalStore:Ni,useId:el,unstable_isNewReconciler:!1},ul={readContext:Ca,useCallback:Xi,useContext:Ca,useEffect:Ui,useImperativeHandle:Ki,useInsertionEffect:Wi,useLayoutEffect:qi,useMemo:Qi,useReducer:Li,useRef:Fi,useState:function(){return Li(Ti)},useDebugValue:Yi,useDeferredValue:function(e){var t=Oi();return null===yi?t.memoizedState=e:Zi(t,yi.memoizedState,e)},useTransition:function(){return[Li(Ti)[0],Oi().memoizedState]},useMutableSource:ji,useSyncExternalStore:Ni,useId:el,unstable_isNewReconciler:!1};function cl(e,t){try{var n="",r=t;do{n+=$(r),r=r.return}while(r);var o=n}catch(e){o="\nError generating stack: "+e.message+"\n"+e.stack}return{value:e,source:t,stack:o,digest:null}}function fl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function dl(e,t){try{console.error(t.value)}catch(e){setTimeout((function(){throw e}))}}var pl="function"==typeof WeakMap?WeakMap:Map;function hl(e,t,n){(n=Ra(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Us||(Us=!0,Ws=r),dl(0,t)},n}function ml(e,t,n){(n=Ra(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if("function"==typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){dl(0,t)}}var a=e.stateNode;return null!==a&amp;&amp;"function"==typeof a.componentDidCatch&amp;&amp;(n.callback=function(){dl(0,t),"function"!=typeof r&amp;&amp;(null===qs?qs=new Set([this]):qs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:""})}),n}function yl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new pl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&amp;&amp;(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Pu.bind(null,e,t,n),t.then(e,e))}function vl(e){do{var t;if((t=13===e.tag)&amp;&amp;(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function gl(e,t,n,r,o){return 0==(1&amp;e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&amp;=-52805,1===n.tag&amp;&amp;(null===n.alternate?n.tag=17:((t=Ra(-1,1)).tag=2,Aa(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var bl=w.ReactCurrentOwner,wl=!1;function Sl(e,t,n,r){t.child=null===e?Za(t,null,n,r):Qa(t,e.child,n,r)}function kl(e,t,n,r,o){n=n.render;var a=t.ref;return Pa(t,o),r=Ei(e,t,n,r,a,o),n=Pi(),null===e||wl?(aa&amp;&amp;n&amp;&amp;ta(t),t.flags|=1,Sl(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&amp;=-2053,e.lanes&amp;=~o,Ul(e,t,o))}function xl(e,t,n,r,o){if(null===e){var a=n.type;return"function"!=typeof a||Nu(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Ru(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,El(e,t,a,r,o))}if(a=e.child,0==(e.lanes&amp;o)){var i=a.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(i,r)&amp;&amp;e.ref===t.ref)return Ul(e,t,o)}return t.flags|=1,(e=Mu(a,r)).ref=t.ref,e.return=t,t.child=e}function El(e,t,n,r,o){if(null!==e){var a=e.memoizedProps;if(sr(a,r)&amp;&amp;e.ref===t.ref){if(wl=!1,t.pendingProps=r=a,0==(e.lanes&amp;o))return t.lanes=e.lanes,Ul(e,t,o);0!=(131072&amp;e.flags)&amp;&amp;(wl=!0)}}return Ol(e,t,n,r,o)}function Pl(e,t,n){var r=t.pendingProps,o=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode)if(0==(1&amp;t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},Oo(Ms,Ns),Ns|=n;else{if(0==(1073741824&amp;n))return e=null!==a?a.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,Oo(Ms,Ns),Ns|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==a?a.baseLanes:n,Oo(Ms,Ns),Ns|=r}else null!==a?(r=a.baseLanes|n,t.memoizedState=null):r=n,Oo(Ms,Ns),Ns|=r;return Sl(e,t,o,n),t.child}function Cl(e,t){var n=t.ref;(null===e&amp;&amp;null!==n||null!==e&amp;&amp;e.ref!==n)&amp;&amp;(t.flags|=512,t.flags|=2097152)}function Ol(e,t,n,r,o){var a=Mo(n)?jo:_o.current;return a=No(t,a),Pa(t,o),n=Ei(e,t,n,r,a,o),r=Pi(),null===e||wl?(aa&amp;&amp;r&amp;&amp;ta(t),t.flags|=1,Sl(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&amp;=-2053,e.lanes&amp;=~o,Ul(e,t,o))}function Tl(e,t,n,r,o){if(Mo(n)){var a=!0;Do(t)}else a=!1;if(Pa(t,o),null===t.stateNode)Hl(e,t),Ua(t,n,r),qa(t,n,r,o),r=!0;else if(null===e){var i=t.stateNode,l=t.memoizedProps;i.props=l;var s=i.context,u=n.contextType;u="object"==typeof u&amp;&amp;null!==u?Ca(u):No(t,u=Mo(n)?jo:_o.current);var c=n.getDerivedStateFromProps,f="function"==typeof c||"function"==typeof i.getSnapshotBeforeUpdate;f||"function"!=typeof i.UNSAFE_componentWillReceiveProps&amp;&amp;"function"!=typeof i.componentWillReceiveProps||(l!==r||s!==u)&amp;&amp;Wa(t,i,r,u),ja=!1;var d=t.memoizedState;i.state=d,za(t,r,i,o),s=t.memoizedState,l!==r||d!==s||Lo.current||ja?("function"==typeof c&amp;&amp;($a(t,n,c,r),s=t.memoizedState),(l=ja||Ha(t,n,l,r,d,s,u))?(f||"function"!=typeof i.UNSAFE_componentWillMount&amp;&amp;"function"!=typeof i.componentWillMount||("function"==typeof i.componentWillMount&amp;&amp;i.componentWillMount(),"function"==typeof i.UNSAFE_componentWillMount&amp;&amp;i.UNSAFE_componentWillMount()),"function"==typeof i.componentDidMount&amp;&amp;(t.flags|=4194308)):("function"==typeof i.componentDidMount&amp;&amp;(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),i.props=r,i.state=s,i.context=u,r=l):("function"==typeof i.componentDidMount&amp;&amp;(t.flags|=4194308),r=!1)}else{i=t.stateNode,Ma(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:va(t.type,l),i.props=u,f=t.pendingProps,d=i.context,s="object"==typeof(s=n.contextType)&amp;&amp;null!==s?Ca(s):No(t,s=Mo(n)?jo:_o.current);var p=n.getDerivedStateFromProps;(c="function"==typeof p||"function"==typeof i.getSnapshotBeforeUpdate)||"function"!=typeof i.UNSAFE_componentWillReceiveProps&amp;&amp;"function"!=typeof i.componentWillReceiveProps||(l!==f||d!==s)&amp;&amp;Wa(t,i,r,s),ja=!1,d=t.memoizedState,i.state=d,za(t,r,i,o);var h=t.memoizedState;l!==f||d!==h||Lo.current||ja?("function"==typeof p&amp;&amp;($a(t,n,p,r),h=t.memoizedState),(u=ja||Ha(t,n,u,r,d,h,s)||!1)?(c||"function"!=typeof i.UNSAFE_componentWillUpdate&amp;&amp;"function"!=typeof i.componentWillUpdate||("function"==typeof i.componentWillUpdate&amp;&amp;i.componentWillUpdate(r,h,s),"function"==typeof i.UNSAFE_componentWillUpdate&amp;&amp;i.UNSAFE_componentWillUpdate(r,h,s)),"function"==typeof i.componentDidUpdate&amp;&amp;(t.flags|=4),"function"==typeof i.getSnapshotBeforeUpdate&amp;&amp;(t.flags|=1024)):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&amp;&amp;d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&amp;&amp;d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=h),i.props=r,i.state=h,i.context=s,r=u):("function"!=typeof i.componentDidUpdate||l===e.memoizedProps&amp;&amp;d===e.memoizedState||(t.flags|=4),"function"!=typeof i.getSnapshotBeforeUpdate||l===e.memoizedProps&amp;&amp;d===e.memoizedState||(t.flags|=1024),r=!1)}return _l(e,t,n,r,a,o)}function _l(e,t,n,r,o,a){Cl(e,t);var i=0!=(128&amp;t.flags);if(!r&amp;&amp;!i)return o&amp;&amp;zo(t,n,!1),Ul(e,t,a);r=t.stateNode,bl.current=t;var l=i&amp;&amp;"function"!=typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&amp;&amp;i?(t.child=Qa(t,e.child,null,a),t.child=Qa(t,null,l,a)):Sl(e,t,l,a),t.memoizedState=r.state,o&amp;&amp;zo(t,n,!0),t.child}function Ll(e){var t=e.stateNode;t.pendingContext?Ao(0,t.pendingContext,t.pendingContext!==t.context):t.context&amp;&amp;Ao(0,t.context,!1),oi(e,t.containerInfo)}function jl(e,t,n,r,o){return ha(),ma(o),t.flags|=256,Sl(e,t,n,r),t.child}var Nl,Ml,Rl,Al={dehydrated:null,treeContext:null,retryLane:0};function Il(e){return{baseLanes:e,cachePool:null,transitions:null}}function Dl(e,t,n){var r,o=t.pendingProps,i=si.current,l=!1,s=0!=(128&amp;t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&amp;&amp;0!=(2&amp;i)),r?(l=!0,t.flags&amp;=-129):null!==e&amp;&amp;null===e.memoizedState||(i|=1),Oo(si,1&amp;i),null===e)return ca(t),null!==(e=t.memoizedState)&amp;&amp;null!==(e=e.dehydrated)?(0==(1&amp;t.mode)?t.lanes=1:"$!"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=o.children,e=o.fallback,l?(o=t.mode,l=t.child,s={mode:"hidden",children:s},0==(1&amp;o)&amp;&amp;null!==l?(l.childLanes=0,l.pendingProps=s):l=Iu(s,o,0,null),e=Au(e,o,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Il(n),t.memoizedState=Al,e):zl(t,s));if(null!==(i=e.memoizedState)&amp;&amp;null!==(r=i.dehydrated))return function(e,t,n,r,o,i,l){if(n)return 256&amp;t.flags?(t.flags&amp;=-257,Bl(e,t,l,r=fl(Error(a(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Iu({mode:"visible",children:r.children},o,0,null),(i=Au(i,o,l,null)).flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,0!=(1&amp;t.mode)&amp;&amp;Qa(t,e.child,null,l),t.child.memoizedState=Il(l),t.memoizedState=Al,i);if(0==(1&amp;t.mode))return Bl(e,t,l,null);if("$!"===o.data){if(r=o.nextSibling&amp;&amp;o.nextSibling.dataset)var s=r.dgst;return r=s,Bl(e,t,l,r=fl(i=Error(a(419)),r,void 0))}if(s=0!=(l&amp;e.childLanes),wl||s){if(null!==(r=_s)){switch(l&amp;-l){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!=(o&amp;(r.suspendedLanes|l))?0:o)&amp;&amp;o!==i.retryLane&amp;&amp;(i.retryLane=o,La(e,o),nu(r,e,o,-1))}return mu(),Bl(e,t,l,r=fl(Error(a(421))))}return"$?"===o.data?(t.flags|=128,t.child=e.child,t=Ou.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,oa=uo(o.nextSibling),ra=t,aa=!0,ia=null,null!==e&amp;&amp;(Ko[Yo++]=Qo,Ko[Yo++]=Zo,Ko[Yo++]=Xo,Qo=e.id,Zo=e.overflow,Xo=t),(t=zl(t,r.children)).flags|=4096,t)}(e,t,s,o,r,i,n);if(l){l=o.fallback,s=t.mode,r=(i=e.child).sibling;var u={mode:"hidden",children:o.children};return 0==(1&amp;s)&amp;&amp;t.child!==i?((o=t.child).childLanes=0,o.pendingProps=u,t.deletions=null):(o=Mu(i,u)).subtreeFlags=14680064&amp;i.subtreeFlags,null!==r?l=Mu(r,l):(l=Au(l,s,n,null)).flags|=2,l.return=t,o.return=t,o.sibling=l,t.child=o,o=l,l=t.child,s=null===(s=e.child.memoizedState)?Il(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&amp;~n,t.memoizedState=Al,o}return e=(l=e.child).sibling,o=Mu(l,{mode:"visible",children:o.children}),0==(1&amp;t.mode)&amp;&amp;(o.lanes=n),o.return=t,o.sibling=null,null!==e&amp;&amp;(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function zl(e,t){return(t=Iu({mode:"visible",children:t},e.mode,0,null)).return=e,e.child=t}function Bl(e,t,n,r){return null!==r&amp;&amp;ma(r),Qa(t,e.child,null,n),(e=zl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Fl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&amp;&amp;(r.lanes|=t),Ea(e.return,t,n)}function $l(e,t,n,r,o){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o)}function Vl(e,t,n){var r=t.pendingProps,o=r.revealOrder,a=r.tail;if(Sl(e,t,r.children,n),0!=(2&amp;(r=si.current)))r=1&amp;r|2,t.flags|=128;else{if(null!==e&amp;&amp;0!=(128&amp;e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&amp;&amp;Fl(e,n,t);else if(19===e.tag)Fl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&amp;=1}if(Oo(si,r),0==(1&amp;t.mode))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&amp;&amp;null===ui(e)&amp;&amp;(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),$l(t,!1,o,n,a);break;case"backwards":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&amp;&amp;null===ui(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}$l(t,!0,n,null,a);break;case"together":$l(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hl(e,t){0==(1&amp;t.mode)&amp;&amp;null!==e&amp;&amp;(e.alternate=null,t.alternate=null,t.flags|=2)}function Ul(e,t,n){if(null!==e&amp;&amp;(t.dependencies=e.dependencies),Is|=t.lanes,0==(n&amp;t.childLanes))return null;if(null!==e&amp;&amp;t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Mu(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Mu(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Wl(e,t){if(!aa)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&amp;&amp;(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&amp;&amp;(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ql(e){var t=null!==e.alternate&amp;&amp;e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&amp;o.subtreeFlags,r|=14680064&amp;o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function Gl(e,t,n){var r=t.pendingProps;switch(na(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ql(t),null;case 1:case 17:return Mo(t.type)&amp;&amp;Ro(),ql(t),null;case 3:return r=t.stateNode,ai(),Co(Lo),Co(_o),fi(),r.pendingContext&amp;&amp;(r.context=r.pendingContext,r.pendingContext=null),null!==e&amp;&amp;null!==e.child||(da(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&amp;&amp;0==(256&amp;t.flags)||(t.flags|=1024,null!==ia&amp;&amp;(iu(ia),ia=null))),ql(t),null;case 5:li(t);var o=ri(ni.current);if(n=t.type,null!==e&amp;&amp;null!=t.stateNode)Ml(e,t,n,r),e.ref!==t.ref&amp;&amp;(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(a(166));return ql(t),null}if(e=ri(ei.current),da(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[po]=t,r[ho]=i,e=0!=(1&amp;t.mode),n){case"dialog":Br("cancel",r),Br("close",r);break;case"iframe":case"object":case"embed":Br("load",r);break;case"video":case"audio":for(o=0;o&lt;Ar.length;o++)Br(Ar[o],r);break;case"source":Br("error",r);break;case"img":case"image":case"link":Br("error",r),Br("load",r);break;case"details":Br("toggle",r);break;case"input":X(r,i),Br("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!i.multiple},Br("invalid",r);break;case"textarea":oe(r,i),Br("invalid",r)}for(var s in ge(n,i),o=null,i)if(i.hasOwnProperty(s)){var u=i[s];"children"===s?"string"==typeof u?r.textContent!==u&amp;&amp;(!0!==i.suppressHydrationWarning&amp;&amp;Zr(r.textContent,u,e),o=["children",u]):"number"==typeof u&amp;&amp;r.textContent!==""+u&amp;&amp;(!0!==i.suppressHydrationWarning&amp;&amp;Zr(r.textContent,u,e),o=["children",""+u]):l.hasOwnProperty(s)&amp;&amp;null!=u&amp;&amp;"onScroll"===s&amp;&amp;Br("scroll",r)}switch(n){case"input":q(r),J(r,i,!0);break;case"textarea":q(r),ie(r);break;case"select":case"option":break;default:"function"==typeof i.onClick&amp;&amp;(r.onclick=Jr)}r=o,t.updateQueue=r,null!==r&amp;&amp;(t.flags|=4)}else{s=9===o.nodeType?o:o.ownerDocument,"http://www.w3.org/1999/xhtml"===e&amp;&amp;(e=le(n)),"http://www.w3.org/1999/xhtml"===e?"script"===n?((e=s.createElement("div")).innerHTML="&lt;script&gt;&lt;\/script&gt;",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),"select"===n&amp;&amp;(s=e,r.multiple?s.multiple=!0:r.size&amp;&amp;(s.size=r.size))):e=s.createElementNS(e,n),e[po]=t,e[ho]=r,Nl(e,t),t.stateNode=e;e:{switch(s=be(n,r),n){case"dialog":Br("cancel",e),Br("close",e),o=r;break;case"iframe":case"object":case"embed":Br("load",e),o=r;break;case"video":case"audio":for(o=0;o&lt;Ar.length;o++)Br(Ar[o],e);o=r;break;case"source":Br("error",e),o=r;break;case"img":case"image":case"link":Br("error",e),Br("load",e),o=r;break;case"details":Br("toggle",e),o=r;break;case"input":X(e,r),o=Y(e,r),Br("invalid",e);break;case"option":default:o=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},o=D({},r,{value:void 0}),Br("invalid",e);break;case"textarea":oe(e,r),o=re(e,r),Br("invalid",e)}for(i in ge(n,o),u=o)if(u.hasOwnProperty(i)){var c=u[i];"style"===i?ye(e,c):"dangerouslySetInnerHTML"===i?null!=(c=c?c.__html:void 0)&amp;&amp;fe(e,c):"children"===i?"string"==typeof c?("textarea"!==n||""!==c)&amp;&amp;de(e,c):"number"==typeof c&amp;&amp;de(e,""+c):"suppressContentEditableWarning"!==i&amp;&amp;"suppressHydrationWarning"!==i&amp;&amp;"autoFocus"!==i&amp;&amp;(l.hasOwnProperty(i)?null!=c&amp;&amp;"onScroll"===i&amp;&amp;Br("scroll",e):null!=c&amp;&amp;b(e,i,c,s))}switch(n){case"input":q(e),J(e,r,!1);break;case"textarea":q(e),ie(e);break;case"option":null!=r.value&amp;&amp;e.setAttribute("value",""+U(r.value));break;case"select":e.multiple=!!r.multiple,null!=(i=r.value)?ne(e,!!r.multiple,i,!1):null!=r.defaultValue&amp;&amp;ne(e,!!r.multiple,r.defaultValue,!0);break;default:"function"==typeof o.onClick&amp;&amp;(e.onclick=Jr)}switch(n){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&amp;&amp;(t.flags|=4)}null!==t.ref&amp;&amp;(t.flags|=512,t.flags|=2097152)}return ql(t),null;case 6:if(e&amp;&amp;null!=t.stateNode)Rl(0,t,e.memoizedProps,r);else{if("string"!=typeof r&amp;&amp;null===t.stateNode)throw Error(a(166));if(n=ri(ni.current),ri(ei.current),da(t)){if(r=t.stateNode,n=t.memoizedProps,r[po]=t,(i=r.nodeValue!==n)&amp;&amp;null!==(e=ra))switch(e.tag){case 3:Zr(r.nodeValue,n,0!=(1&amp;e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&amp;&amp;Zr(r.nodeValue,n,0!=(1&amp;e.mode))}i&amp;&amp;(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[po]=t,t.stateNode=r}return ql(t),null;case 13:if(Co(si),r=t.memoizedState,null===e||null!==e.memoizedState&amp;&amp;null!==e.memoizedState.dehydrated){if(aa&amp;&amp;null!==oa&amp;&amp;0!=(1&amp;t.mode)&amp;&amp;0==(128&amp;t.flags))pa(),ha(),t.flags|=98560,i=!1;else if(i=da(t),null!==r&amp;&amp;null!==r.dehydrated){if(null===e){if(!i)throw Error(a(318));if(!(i=null!==(i=t.memoizedState)?i.dehydrated:null))throw Error(a(317));i[po]=t}else ha(),0==(128&amp;t.flags)&amp;&amp;(t.memoizedState=null),t.flags|=4;ql(t),i=!1}else null!==ia&amp;&amp;(iu(ia),ia=null),i=!0;if(!i)return 65536&amp;t.flags?t:null}return 0!=(128&amp;t.flags)?(t.lanes=n,t):((r=null!==r)!=(null!==e&amp;&amp;null!==e.memoizedState)&amp;&amp;r&amp;&amp;(t.child.flags|=8192,0!=(1&amp;t.mode)&amp;&amp;(null===e||0!=(1&amp;si.current)?0===Rs&amp;&amp;(Rs=3):mu())),null!==t.updateQueue&amp;&amp;(t.flags|=4),ql(t),null);case 4:return ai(),null===e&amp;&amp;Vr(t.stateNode.containerInfo),ql(t),null;case 10:return xa(t.type._context),ql(t),null;case 19:if(Co(si),null===(i=t.memoizedState))return ql(t),null;if(r=0!=(128&amp;t.flags),null===(s=i.rendering))if(r)Wl(i,!1);else{if(0!==Rs||null!==e&amp;&amp;0!=(128&amp;e.flags))for(e=t.child;null!==e;){if(null!==(s=ui(e))){for(t.flags|=128,Wl(i,!1),null!==(r=s.updateQueue)&amp;&amp;(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(i=n).flags&amp;=14680066,null===(s=i.alternate)?(i.childLanes=0,i.lanes=e,i.child=null,i.subtreeFlags=0,i.memoizedProps=null,i.memoizedState=null,i.updateQueue=null,i.dependencies=null,i.stateNode=null):(i.childLanes=s.childLanes,i.lanes=s.lanes,i.child=s.child,i.subtreeFlags=0,i.deletions=null,i.memoizedProps=s.memoizedProps,i.memoizedState=s.memoizedState,i.updateQueue=s.updateQueue,i.type=s.type,e=s.dependencies,i.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return Oo(si,1&amp;si.current|2),t.child}e=e.sibling}null!==i.tail&amp;&amp;Qe()&gt;Vs&amp;&amp;(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ui(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&amp;&amp;(t.updateQueue=n,t.flags|=4),Wl(i,!0),null===i.tail&amp;&amp;"hidden"===i.tailMode&amp;&amp;!s.alternate&amp;&amp;!aa)return ql(t),null}else 2*Qe()-i.renderingStartTime&gt;Vs&amp;&amp;1073741824!==n&amp;&amp;(t.flags|=128,r=!0,Wl(i,!1),t.lanes=4194304);i.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=i.last)?n.sibling=s:t.child=s,i.last=s)}return null!==i.tail?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Qe(),t.sibling=null,n=si.current,Oo(si,r?1&amp;n|2:1&amp;n),t):(ql(t),null);case 22:case 23:return fu(),r=null!==t.memoizedState,null!==e&amp;&amp;null!==e.memoizedState!==r&amp;&amp;(t.flags|=8192),r&amp;&amp;0!=(1&amp;t.mode)?0!=(1073741824&amp;Ns)&amp;&amp;(ql(t),6&amp;t.subtreeFlags&amp;&amp;(t.flags|=8192)):ql(t),null;case 24:case 25:return null}throw Error(a(156,t.tag))}function Kl(e,t){switch(na(t),t.tag){case 1:return Mo(t.type)&amp;&amp;Ro(),65536&amp;(e=t.flags)?(t.flags=-65537&amp;e|128,t):null;case 3:return ai(),Co(Lo),Co(_o),fi(),0!=(65536&amp;(e=t.flags))&amp;&amp;0==(128&amp;e)?(t.flags=-65537&amp;e|128,t):null;case 5:return li(t),null;case 13:if(Co(si),null!==(e=t.memoizedState)&amp;&amp;null!==e.dehydrated){if(null===t.alternate)throw Error(a(340));ha()}return 65536&amp;(e=t.flags)?(t.flags=-65537&amp;e|128,t):null;case 19:return Co(si),null;case 4:return ai(),null;case 10:return xa(t.type._context),null;case 22:case 23:return fu(),null;default:return null}}Nl=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&amp;&amp;null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ml=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ri(ei.current);var a,i=null;switch(n){case"input":o=Y(e,o),r=Y(e,r),i=[];break;case"select":o=D({},o,{value:void 0}),r=D({},r,{value:void 0}),i=[];break;case"textarea":o=re(e,o),r=re(e,r),i=[];break;default:"function"!=typeof o.onClick&amp;&amp;"function"==typeof r.onClick&amp;&amp;(e.onclick=Jr)}for(c in ge(n,r),n=null,o)if(!r.hasOwnProperty(c)&amp;&amp;o.hasOwnProperty(c)&amp;&amp;null!=o[c])if("style"===c){var s=o[c];for(a in s)s.hasOwnProperty(a)&amp;&amp;(n||(n={}),n[a]="")}else"dangerouslySetInnerHTML"!==c&amp;&amp;"children"!==c&amp;&amp;"suppressContentEditableWarning"!==c&amp;&amp;"suppressHydrationWarning"!==c&amp;&amp;"autoFocus"!==c&amp;&amp;(l.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=o?o[c]:void 0,r.hasOwnProperty(c)&amp;&amp;u!==s&amp;&amp;(null!=u||null!=s))if("style"===c)if(s){for(a in s)!s.hasOwnProperty(a)||u&amp;&amp;u.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in u)u.hasOwnProperty(a)&amp;&amp;s[a]!==u[a]&amp;&amp;(n||(n={}),n[a]=u[a])}else n||(i||(i=[]),i.push(c,n)),n=u;else"dangerouslySetInnerHTML"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&amp;&amp;s!==u&amp;&amp;(i=i||[]).push(c,u)):"children"===c?"string"!=typeof u&amp;&amp;"number"!=typeof u||(i=i||[]).push(c,""+u):"suppressContentEditableWarning"!==c&amp;&amp;"suppressHydrationWarning"!==c&amp;&amp;(l.hasOwnProperty(c)?(null!=u&amp;&amp;"onScroll"===c&amp;&amp;Br("scroll",e),i||s===u||(i=[])):(i=i||[]).push(c,u))}n&amp;&amp;(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&amp;&amp;(t.flags|=4)}},Rl=function(e,t,n,r){n!==r&amp;&amp;(t.flags|=4)};var Yl=!1,Xl=!1,Ql="function"==typeof WeakSet?WeakSet:Set,Zl=null;function Jl(e,t){var n=e.ref;if(null!==n)if("function"==typeof n)try{n(null)}catch(n){Eu(e,t,n)}else n.current=null}function es(e,t,n){try{n()}catch(n){Eu(e,t,n)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&amp;e)===e){var a=o.destroy;o.destroy=void 0,void 0!==a&amp;&amp;es(t,n,a)}o=o.next}while(o!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&amp;e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,"function"==typeof t?t(e):t.current=e}}function as(e){var t=e.alternate;null!==t&amp;&amp;(e.alternate=null,as(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&amp;&amp;null!==(t=e.stateNode)&amp;&amp;(delete t[po],delete t[ho],delete t[yo],delete t[vo],delete t[go]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function is(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||is(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&amp;&amp;6!==e.tag&amp;&amp;18!==e.tag;){if(2&amp;e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&amp;e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!=(n=n._reactRootContainer)||null!==t.onclick||(t.onclick=Jr));else if(4!==r&amp;&amp;null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&amp;&amp;null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}var cs=null,fs=!1;function ds(e,t,n){for(n=n.child;null!==n;)ps(e,t,n),n=n.sibling}function ps(e,t,n){if(at&amp;&amp;"function"==typeof at.onCommitFiberUnmount)try{at.onCommitFiberUnmount(ot,n)}catch(e){}switch(n.tag){case 5:Xl||Jl(n,t);case 6:var r=cs,o=fs;cs=null,ds(e,t,n),fs=o,null!==(cs=r)&amp;&amp;(fs?(e=cs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cs.removeChild(n.stateNode));break;case 18:null!==cs&amp;&amp;(fs?(e=cs,n=n.stateNode,8===e.nodeType?so(e.parentNode,n):1===e.nodeType&amp;&amp;so(e,n),Vt(e)):so(cs,n.stateNode));break;case 4:r=cs,o=fs,cs=n.stateNode.containerInfo,fs=!0,ds(e,t,n),cs=r,fs=o;break;case 0:case 11:case 14:case 15:if(!Xl&amp;&amp;null!==(r=n.updateQueue)&amp;&amp;null!==(r=r.lastEffect)){o=r=r.next;do{var a=o,i=a.destroy;a=a.tag,void 0!==i&amp;&amp;(0!=(2&amp;a)||0!=(4&amp;a))&amp;&amp;es(n,t,i),o=o.next}while(o!==r)}ds(e,t,n);break;case 1:if(!Xl&amp;&amp;(Jl(n,t),"function"==typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){Eu(n,t,e)}ds(e,t,n);break;case 21:ds(e,t,n);break;case 22:1&amp;n.mode?(Xl=(r=Xl)||null!==n.memoizedState,ds(e,t,n),Xl=r):ds(e,t,n);break;default:ds(e,t,n)}}function hs(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&amp;&amp;(n=e.stateNode=new Ql),t.forEach((function(t){var r=Tu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ms(e,t){var n=t.deletions;if(null!==n)for(var r=0;r&lt;n.length;r++){var o=n[r];try{var i=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:cs=s.stateNode,fs=!1;break e;case 3:case 4:cs=s.stateNode.containerInfo,fs=!0;break e}s=s.return}if(null===cs)throw Error(a(160));ps(i,l,o),cs=null,fs=!1;var u=o.alternate;null!==u&amp;&amp;(u.return=null),o.return=null}catch(e){Eu(o,t,e)}}if(12854&amp;t.subtreeFlags)for(t=t.child;null!==t;)ys(t,e),t=t.sibling}function ys(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ms(t,e),vs(e),4&amp;r){try{ns(3,e,e.return),rs(3,e)}catch(t){Eu(e,e.return,t)}try{ns(5,e,e.return)}catch(t){Eu(e,e.return,t)}}break;case 1:ms(t,e),vs(e),512&amp;r&amp;&amp;null!==n&amp;&amp;Jl(n,n.return);break;case 5:if(ms(t,e),vs(e),512&amp;r&amp;&amp;null!==n&amp;&amp;Jl(n,n.return),32&amp;e.flags){var o=e.stateNode;try{de(o,"")}catch(t){Eu(e,e.return,t)}}if(4&amp;r&amp;&amp;null!=(o=e.stateNode)){var i=e.memoizedProps,l=null!==n?n.memoizedProps:i,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{"input"===s&amp;&amp;"radio"===i.type&amp;&amp;null!=i.name&amp;&amp;Q(o,i),be(s,l);var c=be(s,i);for(l=0;l&lt;u.length;l+=2){var f=u[l],d=u[l+1];"style"===f?ye(o,d):"dangerouslySetInnerHTML"===f?fe(o,d):"children"===f?de(o,d):b(o,f,d,c)}switch(s){case"input":Z(o,i);break;case"textarea":ae(o,i);break;case"select":var p=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!i.multiple;var h=i.value;null!=h?ne(o,!!i.multiple,h,!1):p!==!!i.multiple&amp;&amp;(null!=i.defaultValue?ne(o,!!i.multiple,i.defaultValue,!0):ne(o,!!i.multiple,i.multiple?[]:"",!1))}o[ho]=i}catch(t){Eu(e,e.return,t)}}break;case 6:if(ms(t,e),vs(e),4&amp;r){if(null===e.stateNode)throw Error(a(162));o=e.stateNode,i=e.memoizedProps;try{o.nodeValue=i}catch(t){Eu(e,e.return,t)}}break;case 3:if(ms(t,e),vs(e),4&amp;r&amp;&amp;null!==n&amp;&amp;n.memoizedState.isDehydrated)try{Vt(t.containerInfo)}catch(t){Eu(e,e.return,t)}break;case 4:default:ms(t,e),vs(e);break;case 13:ms(t,e),vs(e),8192&amp;(o=e.child).flags&amp;&amp;(i=null!==o.memoizedState,o.stateNode.isHidden=i,!i||null!==o.alternate&amp;&amp;null!==o.alternate.memoizedState||($s=Qe())),4&amp;r&amp;&amp;hs(e);break;case 22:if(f=null!==n&amp;&amp;null!==n.memoizedState,1&amp;e.mode?(Xl=(c=Xl)||f,ms(t,e),Xl=c):ms(t,e),vs(e),8192&amp;r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&amp;&amp;!f&amp;&amp;0!=(1&amp;e.mode))for(Zl=e,f=e.child;null!==f;){for(d=Zl=f;null!==Zl;){switch(h=(p=Zl).child,p.tag){case 0:case 11:case 14:case 15:ns(4,p,p.return);break;case 1:Jl(p,p.return);var m=p.stateNode;if("function"==typeof m.componentWillUnmount){r=p,n=p.return;try{t=r,m.props=t.memoizedProps,m.state=t.memoizedState,m.componentWillUnmount()}catch(e){Eu(r,n,e)}}break;case 5:Jl(p,p.return);break;case 22:if(null!==p.memoizedState){Ss(d);continue}}null!==h?(h.return=p,Zl=h):Ss(d)}f=f.sibling}e:for(f=null,d=e;;){if(5===d.tag){if(null===f){f=d;try{o=d.stateNode,c?"function"==typeof(i=o.style).setProperty?i.setProperty("display","none","important"):i.display="none":(s=d.stateNode,l=null!=(u=d.memoizedProps.style)&amp;&amp;u.hasOwnProperty("display")?u.display:null,s.style.display=me("display",l))}catch(t){Eu(e,e.return,t)}}}else if(6===d.tag){if(null===f)try{d.stateNode.nodeValue=c?"":d.memoizedProps}catch(t){Eu(e,e.return,t)}}else if((22!==d.tag&amp;&amp;23!==d.tag||null===d.memoizedState||d===e)&amp;&amp;null!==d.child){d.child.return=d,d=d.child;continue}if(d===e)break e;for(;null===d.sibling;){if(null===d.return||d.return===e)break e;f===d&amp;&amp;(f=null),d=d.return}f===d&amp;&amp;(f=null),d.sibling.return=d.return,d=d.sibling}}break;case 19:ms(t,e),vs(e),4&amp;r&amp;&amp;hs(e);case 21:}}function vs(e){var t=e.flags;if(2&amp;t){try{e:{for(var n=e.return;null!==n;){if(is(n)){var r=n;break e}n=n.return}throw Error(a(160))}switch(r.tag){case 5:var o=r.stateNode;32&amp;r.flags&amp;&amp;(de(o,""),r.flags&amp;=-33),us(e,ls(e),o);break;case 3:case 4:var i=r.stateNode.containerInfo;ss(e,ls(e),i);break;default:throw Error(a(161))}}catch(t){Eu(e,e.return,t)}e.flags&amp;=-3}4096&amp;t&amp;&amp;(e.flags&amp;=-4097)}function gs(e,t,n){Zl=e,bs(e,t,n)}function bs(e,t,n){for(var r=0!=(1&amp;e.mode);null!==Zl;){var o=Zl,a=o.child;if(22===o.tag&amp;&amp;r){var i=null!==o.memoizedState||Yl;if(!i){var l=o.alternate,s=null!==l&amp;&amp;null!==l.memoizedState||Xl;l=Yl;var u=Xl;if(Yl=i,(Xl=s)&amp;&amp;!u)for(Zl=o;null!==Zl;)s=(i=Zl).child,22===i.tag&amp;&amp;null!==i.memoizedState?ks(o):null!==s?(s.return=i,Zl=s):ks(o);for(;null!==a;)Zl=a,bs(a,t,n),a=a.sibling;Zl=o,Yl=l,Xl=u}ws(e)}else 0!=(8772&amp;o.subtreeFlags)&amp;&amp;null!==a?(a.return=o,Zl=a):ws(e)}}function ws(e){for(;null!==Zl;){var t=Zl;if(0!=(8772&amp;t.flags)){var n=t.alternate;try{if(0!=(8772&amp;t.flags))switch(t.tag){case 0:case 11:case 15:Xl||rs(5,t);break;case 1:var r=t.stateNode;if(4&amp;t.flags&amp;&amp;!Xl)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:va(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var i=t.updateQueue;null!==i&amp;&amp;Ba(t,i,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Ba(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&amp;&amp;4&amp;t.flags){n=s;var u=t.memoizedProps;switch(t.type){case"button":case"input":case"select":case"textarea":u.autoFocus&amp;&amp;n.focus();break;case"img":u.src&amp;&amp;(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var f=c.memoizedState;if(null!==f){var d=f.dehydrated;null!==d&amp;&amp;Vt(d)}}}break;default:throw Error(a(163))}Xl||512&amp;t.flags&amp;&amp;os(t)}catch(e){Eu(t,t.return,e)}}if(t===e){Zl=null;break}if(null!==(n=t.sibling)){n.return=t.return,Zl=n;break}Zl=t.return}}function Ss(e){for(;null!==Zl;){var t=Zl;if(t===e){Zl=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Zl=n;break}Zl=t.return}}function ks(e){for(;null!==Zl;){var t=Zl;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(e){Eu(t,n,e)}break;case 1:var r=t.stateNode;if("function"==typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(e){Eu(t,o,e)}}var a=t.return;try{os(t)}catch(e){Eu(t,a,e)}break;case 5:var i=t.return;try{os(t)}catch(e){Eu(t,i,e)}}}catch(e){Eu(t,t.return,e)}if(t===e){Zl=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Zl=l;break}Zl=t.return}}var xs,Es=Math.ceil,Ps=w.ReactCurrentDispatcher,Cs=w.ReactCurrentOwner,Os=w.ReactCurrentBatchConfig,Ts=0,_s=null,Ls=null,js=0,Ns=0,Ms=Po(0),Rs=0,As=null,Is=0,Ds=0,zs=0,Bs=null,Fs=null,$s=0,Vs=1/0,Hs=null,Us=!1,Ws=null,qs=null,Gs=!1,Ks=null,Ys=0,Xs=0,Qs=null,Zs=-1,Js=0;function eu(){return 0!=(6&amp;Ts)?Qe():-1!==Zs?Zs:Zs=Qe()}function tu(e){return 0==(1&amp;e.mode)?1:0!=(2&amp;Ts)&amp;&amp;0!==js?js&amp;-js:null!==ya.transition?(0===Js&amp;&amp;(Js=mt()),Js):0!==(e=bt)?e:e=void 0===(e=window.event)?16:Xt(e.type)}function nu(e,t,n,r){if(50&lt;Xs)throw Xs=0,Qs=null,Error(a(185));vt(e,n,r),0!=(2&amp;Ts)&amp;&amp;e===_s||(e===_s&amp;&amp;(0==(2&amp;Ts)&amp;&amp;(Ds|=n),4===Rs&amp;&amp;lu(e,js)),ru(e,r),1===n&amp;&amp;0===Ts&amp;&amp;0==(1&amp;t.mode)&amp;&amp;(Vs=Qe()+500,Fo&amp;&amp;Ho()))}function ru(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=e.pendingLanes;0&lt;a;){var i=31-it(a),l=1&lt;&lt;i,s=o[i];-1===s?0!=(l&amp;n)&amp;&amp;0==(l&amp;r)||(o[i]=pt(l,t)):s&lt;=t&amp;&amp;(e.expiredLanes|=l),a&amp;=~l}}(e,t);var r=dt(e,e===_s?js:0);if(0===r)null!==n&amp;&amp;Ke(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&amp;-r,e.callbackPriority!==t){if(null!=n&amp;&amp;Ke(n),1===t)0===e.tag?function(e){Fo=!0,Vo(e)}(su.bind(null,e)):Vo(su.bind(null,e)),io((function(){0==(6&amp;Ts)&amp;&amp;Ho()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=_u(n,ou.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function ou(e,t){if(Zs=-1,Js=0,0!=(6&amp;Ts))throw Error(a(327));var n=e.callbackNode;if(ku()&amp;&amp;e.callbackNode!==n)return null;var r=dt(e,e===_s?js:0);if(0===r)return null;if(0!=(30&amp;r)||0!=(r&amp;e.expiredLanes)||t)t=yu(e,r);else{t=r;var o=Ts;Ts|=2;var i=hu();for(_s===e&amp;&amp;js===t||(Hs=null,Vs=Qe()+500,du(e,t));;)try{gu();break}catch(t){pu(e,t)}ka(),Ps.current=i,Ts=o,null!==Ls?t=0:(_s=null,js=0,t=Rs)}if(0!==t){if(2===t&amp;&amp;0!==(o=ht(e))&amp;&amp;(r=o,t=au(e,o)),1===t)throw n=As,du(e,0),lu(e,r),ru(e,Qe()),n;if(6===t)lu(e,r);else{if(o=e.current.alternate,0==(30&amp;r)&amp;&amp;!function(e){for(var t=e;;){if(16384&amp;t.flags){var n=t.updateQueue;if(null!==n&amp;&amp;null!==(n=n.stores))for(var r=0;r&lt;n.length;r++){var o=n[r],a=o.getSnapshot;o=o.value;try{if(!lr(a(),o))return!1}catch(e){return!1}}}if(n=t.child,16384&amp;t.subtreeFlags&amp;&amp;null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)&amp;&amp;(2===(t=yu(e,r))&amp;&amp;0!==(i=ht(e))&amp;&amp;(r=i,t=au(e,i)),1===t))throw n=As,du(e,0),lu(e,r),ru(e,Qe()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(a(345));case 2:case 5:Su(e,Fs,Hs);break;case 3:if(lu(e,r),(130023424&amp;r)===r&amp;&amp;10&lt;(t=$s+500-Qe())){if(0!==dt(e,0))break;if(((o=e.suspendedLanes)&amp;r)!==r){eu(),e.pingedLanes|=e.suspendedLanes&amp;o;break}e.timeoutHandle=ro(Su.bind(null,e,Fs,Hs),t);break}Su(e,Fs,Hs);break;case 4:if(lu(e,r),(4194240&amp;r)===r)break;for(t=e.eventTimes,o=-1;0&lt;r;){var l=31-it(r);i=1&lt;&lt;l,(l=t[l])&gt;o&amp;&amp;(o=l),r&amp;=~i}if(r=o,10&lt;(r=(120&gt;(r=Qe()-r)?120:480&gt;r?480:1080&gt;r?1080:1920&gt;r?1920:3e3&gt;r?3e3:4320&gt;r?4320:1960*Es(r/1960))-r)){e.timeoutHandle=ro(Su.bind(null,e,Fs,Hs),r);break}Su(e,Fs,Hs);break;default:throw Error(a(329))}}}return ru(e,Qe()),e.callbackNode===n?ou.bind(null,e):null}function au(e,t){var n=Bs;return e.current.memoizedState.isDehydrated&amp;&amp;(du(e,t).flags|=256),2!==(e=yu(e,t))&amp;&amp;(t=Fs,Fs=n,null!==t&amp;&amp;iu(t)),e}function iu(e){null===Fs?Fs=e:Fs.push.apply(Fs,e)}function lu(e,t){for(t&amp;=~zs,t&amp;=~Ds,e.suspendedLanes|=t,e.pingedLanes&amp;=~t,e=e.expirationTimes;0&lt;t;){var n=31-it(t),r=1&lt;&lt;n;e[n]=-1,t&amp;=~r}}function su(e){if(0!=(6&amp;Ts))throw Error(a(327));ku();var t=dt(e,0);if(0==(1&amp;t))return ru(e,Qe()),null;var n=yu(e,t);if(0!==e.tag&amp;&amp;2===n){var r=ht(e);0!==r&amp;&amp;(t=r,n=au(e,r))}if(1===n)throw n=As,du(e,0),lu(e,t),ru(e,Qe()),n;if(6===n)throw Error(a(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,Su(e,Fs,Hs),ru(e,Qe()),null}function uu(e,t){var n=Ts;Ts|=1;try{return e(t)}finally{0===(Ts=n)&amp;&amp;(Vs=Qe()+500,Fo&amp;&amp;Ho())}}function cu(e){null!==Ks&amp;&amp;0===Ks.tag&amp;&amp;0==(6&amp;Ts)&amp;&amp;ku();var t=Ts;Ts|=1;var n=Os.transition,r=bt;try{if(Os.transition=null,bt=1,e)return e()}finally{bt=r,Os.transition=n,0==(6&amp;(Ts=t))&amp;&amp;Ho()}}function fu(){Ns=Ms.current,Co(Ms)}function du(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&amp;&amp;(e.timeoutHandle=-1,oo(n)),null!==Ls)for(n=Ls.return;null!==n;){var r=n;switch(na(r),r.tag){case 1:null!=(r=r.type.childContextTypes)&amp;&amp;Ro();break;case 3:ai(),Co(Lo),Co(_o),fi();break;case 5:li(r);break;case 4:ai();break;case 13:case 19:Co(si);break;case 10:xa(r.type._context);break;case 22:case 23:fu()}n=n.return}if(_s=e,Ls=e=Mu(e.current,null),js=Ns=t,Rs=0,As=null,zs=Ds=Is=0,Fs=Bs=null,null!==Oa){for(t=0;t&lt;Oa.length;t++)if(null!==(r=(n=Oa[t]).interleaved)){n.interleaved=null;var o=r.next,a=n.pending;if(null!==a){var i=a.next;a.next=o,r.next=i}n.pending=r}Oa=null}return e}function pu(e,t){for(;;){var n=Ls;try{if(ka(),di.current=il,gi){for(var r=mi.memoizedState;null!==r;){var o=r.queue;null!==o&amp;&amp;(o.pending=null),r=r.next}gi=!1}if(hi=0,vi=yi=mi=null,bi=!1,wi=0,Cs.current=null,null===n||null===n.return){Rs=1,As=t,Ls=null;break}e:{var i=e,l=n.return,s=n,u=t;if(t=js,s.flags|=32768,null!==u&amp;&amp;"object"==typeof u&amp;&amp;"function"==typeof u.then){var c=u,f=s,d=f.tag;if(0==(1&amp;f.mode)&amp;&amp;(0===d||11===d||15===d)){var p=f.alternate;p?(f.updateQueue=p.updateQueue,f.memoizedState=p.memoizedState,f.lanes=p.lanes):(f.updateQueue=null,f.memoizedState=null)}var h=vl(l);if(null!==h){h.flags&amp;=-257,gl(h,l,s,0,t),1&amp;h.mode&amp;&amp;yl(i,c,t),u=c;var m=(t=h).updateQueue;if(null===m){var y=new Set;y.add(u),t.updateQueue=y}else m.add(u);break e}if(0==(1&amp;t)){yl(i,c,t),mu();break e}u=Error(a(426))}else if(aa&amp;&amp;1&amp;s.mode){var v=vl(l);if(null!==v){0==(65536&amp;v.flags)&amp;&amp;(v.flags|=256),gl(v,l,s,0,t),ma(cl(u,s));break e}}i=u=cl(u,s),4!==Rs&amp;&amp;(Rs=2),null===Bs?Bs=[i]:Bs.push(i),i=l;do{switch(i.tag){case 3:i.flags|=65536,t&amp;=-t,i.lanes|=t,Da(i,hl(0,u,t));break e;case 1:s=u;var g=i.type,b=i.stateNode;if(0==(128&amp;i.flags)&amp;&amp;("function"==typeof g.getDerivedStateFromError||null!==b&amp;&amp;"function"==typeof b.componentDidCatch&amp;&amp;(null===qs||!qs.has(b)))){i.flags|=65536,t&amp;=-t,i.lanes|=t,Da(i,ml(i,s,t));break e}}i=i.return}while(null!==i)}wu(n)}catch(e){t=e,Ls===n&amp;&amp;null!==n&amp;&amp;(Ls=n=n.return);continue}break}}function hu(){var e=Ps.current;return Ps.current=il,null===e?il:e}function mu(){0!==Rs&amp;&amp;3!==Rs&amp;&amp;2!==Rs||(Rs=4),null===_s||0==(268435455&amp;Is)&amp;&amp;0==(268435455&amp;Ds)||lu(_s,js)}function yu(e,t){var n=Ts;Ts|=2;var r=hu();for(_s===e&amp;&amp;js===t||(Hs=null,du(e,t));;)try{vu();break}catch(t){pu(e,t)}if(ka(),Ts=n,Ps.current=r,null!==Ls)throw Error(a(261));return _s=null,js=0,Rs}function vu(){for(;null!==Ls;)bu(Ls)}function gu(){for(;null!==Ls&amp;&amp;!Ye();)bu(Ls)}function bu(e){var t=xs(e.alternate,e,Ns);e.memoizedProps=e.pendingProps,null===t?wu(e):Ls=t,Cs.current=null}function wu(e){var t=e;do{var n=t.alternate;if(e=t.return,0==(32768&amp;t.flags)){if(null!==(n=Gl(n,t,Ns)))return void(Ls=n)}else{if(null!==(n=Kl(n,t)))return n.flags&amp;=32767,void(Ls=n);if(null===e)return Rs=6,void(Ls=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Ls=t);Ls=t=e}while(null!==t);0===Rs&amp;&amp;(Rs=5)}function Su(e,t,n){var r=bt,o=Os.transition;try{Os.transition=null,bt=1,function(e,t,n,r){do{ku()}while(null!==Ks);if(0!=(6&amp;Ts))throw Error(a(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackPriority=0;var i=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&amp;~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&amp;=t,e.mutableReadLanes&amp;=t,e.entangledLanes&amp;=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0&lt;n;){var o=31-it(n),a=1&lt;&lt;o;t[o]=0,r[o]=-1,e[o]=-1,n&amp;=~a}}(e,i),e===_s&amp;&amp;(Ls=_s=null,js=0),0==(2064&amp;n.subtreeFlags)&amp;&amp;0==(2064&amp;n.flags)||Gs||(Gs=!0,_u(tt,(function(){return ku(),null}))),i=0!=(15990&amp;n.flags),0!=(15990&amp;n.subtreeFlags)||i){i=Os.transition,Os.transition=null;var l=bt;bt=1;var s=Ts;Ts|=4,Cs.current=null,function(e,t){if(eo=Ut,pr(e=dr())){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&amp;&amp;n.defaultView||window).getSelection&amp;&amp;n.getSelection();if(r&amp;&amp;0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch(e){n=null;break e}var l=0,s=-1,u=-1,c=0,f=0,d=e,p=null;t:for(;;){for(var h;d!==n||0!==o&amp;&amp;3!==d.nodeType||(s=l+o),d!==i||0!==r&amp;&amp;3!==d.nodeType||(u=l+r),3===d.nodeType&amp;&amp;(l+=d.nodeValue.length),null!==(h=d.firstChild);)p=d,d=h;for(;;){if(d===e)break t;if(p===n&amp;&amp;++c===o&amp;&amp;(s=l),p===i&amp;&amp;++f===r&amp;&amp;(u=l),null!==(h=d.nextSibling))break;p=(d=p).parentNode}d=h}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Ut=!1,Zl=t;null!==Zl;)if(e=(t=Zl).child,0!=(1028&amp;t.subtreeFlags)&amp;&amp;null!==e)e.return=t,Zl=e;else for(;null!==Zl;){t=Zl;try{var m=t.alternate;if(0!=(1024&amp;t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==m){var y=m.memoizedProps,v=m.memoizedState,g=t.stateNode,b=g.getSnapshotBeforeUpdate(t.elementType===t.type?y:va(t.type,y),v);g.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent="":9===w.nodeType&amp;&amp;w.documentElement&amp;&amp;w.removeChild(w.documentElement);break;default:throw Error(a(163))}}catch(e){Eu(t,t.return,e)}if(null!==(e=t.sibling)){e.return=t.return,Zl=e;break}Zl=t.return}m=ts,ts=!1}(e,n),ys(n,e),hr(to),Ut=!!eo,to=eo=null,e.current=n,gs(n,e,o),Xe(),Ts=s,bt=l,Os.transition=i}else e.current=n;if(Gs&amp;&amp;(Gs=!1,Ks=e,Ys=o),0===(i=e.pendingLanes)&amp;&amp;(qs=null),function(e){if(at&amp;&amp;"function"==typeof at.onCommitFiberRoot)try{at.onCommitFiberRoot(ot,e,void 0,128==(128&amp;e.current.flags))}catch(e){}}(n.stateNode),ru(e,Qe()),null!==t)for(r=e.onRecoverableError,n=0;n&lt;t.length;n++)r((o=t[n]).value,{componentStack:o.stack,digest:o.digest});if(Us)throw Us=!1,e=Ws,Ws=null,e;0!=(1&amp;Ys)&amp;&amp;0!==e.tag&amp;&amp;ku(),0!=(1&amp;(i=e.pendingLanes))?e===Qs?Xs++:(Xs=0,Qs=e):Xs=0,Ho()}(e,t,n,r)}finally{Os.transition=o,bt=r}return null}function ku(){if(null!==Ks){var e=wt(Ys),t=Os.transition,n=bt;try{if(Os.transition=null,bt=16&gt;e?16:e,null===Ks)var r=!1;else{if(e=Ks,Ks=null,Ys=0,0!=(6&amp;Ts))throw Error(a(331));var o=Ts;for(Ts|=4,Zl=e.current;null!==Zl;){var i=Zl,l=i.child;if(0!=(16&amp;Zl.flags)){var s=i.deletions;if(null!==s){for(var u=0;u&lt;s.length;u++){var c=s[u];for(Zl=c;null!==Zl;){var f=Zl;switch(f.tag){case 0:case 11:case 15:ns(8,f,i)}var d=f.child;if(null!==d)d.return=f,Zl=d;else for(;null!==Zl;){var p=(f=Zl).sibling,h=f.return;if(as(f),f===c){Zl=null;break}if(null!==p){p.return=h,Zl=p;break}Zl=h}}}var m=i.alternate;if(null!==m){var y=m.child;if(null!==y){m.child=null;do{var v=y.sibling;y.sibling=null,y=v}while(null!==y)}}Zl=i}}if(0!=(2064&amp;i.subtreeFlags)&amp;&amp;null!==l)l.return=i,Zl=l;else e:for(;null!==Zl;){if(0!=(2048&amp;(i=Zl).flags))switch(i.tag){case 0:case 11:case 15:ns(9,i,i.return)}var g=i.sibling;if(null!==g){g.return=i.return,Zl=g;break e}Zl=i.return}}var b=e.current;for(Zl=b;null!==Zl;){var w=(l=Zl).child;if(0!=(2064&amp;l.subtreeFlags)&amp;&amp;null!==w)w.return=l,Zl=w;else e:for(l=b;null!==Zl;){if(0!=(2048&amp;(s=Zl).flags))try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(e){Eu(s,s.return,e)}if(s===l){Zl=null;break e}var S=s.sibling;if(null!==S){S.return=s.return,Zl=S;break e}Zl=s.return}}if(Ts=o,Ho(),at&amp;&amp;"function"==typeof at.onPostCommitFiberRoot)try{at.onPostCommitFiberRoot(ot,e)}catch(e){}r=!0}return r}finally{bt=n,Os.transition=t}}return!1}function xu(e,t,n){e=Aa(e,t=hl(0,t=cl(n,t),1),1),t=eu(),null!==e&amp;&amp;(vt(e,1,t),ru(e,t))}function Eu(e,t,n){if(3===e.tag)xu(e,e,n);else for(;null!==t;){if(3===t.tag){xu(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&amp;&amp;(null===qs||!qs.has(r))){t=Aa(t,e=ml(t,e=cl(n,e),1),1),e=eu(),null!==t&amp;&amp;(vt(t,1,e),ru(t,e));break}}t=t.return}}function Pu(e,t,n){var r=e.pingCache;null!==r&amp;&amp;r.delete(t),t=eu(),e.pingedLanes|=e.suspendedLanes&amp;n,_s===e&amp;&amp;(js&amp;n)===n&amp;&amp;(4===Rs||3===Rs&amp;&amp;(130023424&amp;js)===js&amp;&amp;500&gt;Qe()-$s?du(e,0):zs|=n),ru(e,t)}function Cu(e,t){0===t&amp;&amp;(0==(1&amp;e.mode)?t=1:(t=ct,0==(130023424&amp;(ct&lt;&lt;=1))&amp;&amp;(ct=4194304)));var n=eu();null!==(e=La(e,t))&amp;&amp;(vt(e,t,n),ru(e,n))}function Ou(e){var t=e.memoizedState,n=0;null!==t&amp;&amp;(n=t.retryLane),Cu(e,n)}function Tu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&amp;&amp;(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}null!==r&amp;&amp;r.delete(t),Cu(e,n)}function _u(e,t){return Ge(e,t)}function Lu(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ju(e,t,n,r){return new Lu(e,t,n,r)}function Nu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Mu(e,t){var n=e.alternate;return null===n?((n=ju(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&amp;e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Ru(e,t,n,r,o,i){var l=2;if(r=e,"function"==typeof e)Nu(e)&amp;&amp;(l=1);else if("string"==typeof e)l=5;else e:switch(e){case x:return Au(n.children,o,i,t);case E:l=8,o|=8;break;case P:return(e=ju(12,n,t,2|o)).elementType=P,e.lanes=i,e;case _:return(e=ju(13,n,t,o)).elementType=_,e.lanes=i,e;case L:return(e=ju(19,n,t,o)).elementType=L,e.lanes=i,e;case M:return Iu(n,o,i,t);default:if("object"==typeof e&amp;&amp;null!==e)switch(e.$$typeof){case C:l=10;break e;case O:l=9;break e;case T:l=11;break e;case j:l=14;break e;case N:l=16,r=null;break e}throw Error(a(130,null==e?e:typeof e,""))}return(t=ju(l,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function Au(e,t,n,r){return(e=ju(7,e,r,t)).lanes=n,e}function Iu(e,t,n,r){return(e=ju(22,e,r,t)).elementType=M,e.lanes=n,e.stateNode={isHidden:!1},e}function Du(e,t,n){return(e=ju(6,e,null,t)).lanes=n,e}function zu(e,t,n){return(t=ju(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Bu(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=yt(0),this.expirationTimes=yt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=yt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Fu(e,t,n,r,o,a,i,l,s){return e=new Bu(e,t,n,l,s),1===t?(t=1,!0===a&amp;&amp;(t|=8)):t=0,a=ju(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Na(a),e}function $u(e,t,n){var r=3&lt;arguments.length&amp;&amp;void 0!==arguments[3]?arguments[3]:null;return{$$typeof:k,key:null==r?null:""+r,children:e,containerInfo:t,implementation:n}}function Vu(e){if(!e)return To;e:{if(Ve(e=e._reactInternals)!==e||1!==e.tag)throw Error(a(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(Mo(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(a(171))}if(1===e.tag){var n=e.type;if(Mo(n))return Io(e,n,t)}return t}function Hu(e,t,n,r,o,a,i,l,s){return(e=Fu(n,r,!0,e,0,a,0,l,s)).context=Vu(null),n=e.current,(a=Ra(r=eu(),o=tu(n))).callback=null!=t?t:null,Aa(n,a,o),e.current.lanes=o,vt(e,o,r),ru(e,r),e}function Uu(e,t,n,r){var o=t.current,a=eu(),i=tu(o);return n=Vu(n),null===t.context?t.context=n:t.pendingContext=n,(t=Ra(a,i)).payload={element:e},null!==(r=void 0===r?null:r)&amp;&amp;(t.callback=r),null!==(e=Aa(o,t,i))&amp;&amp;(nu(e,o,i,a),Ia(e,o,i)),i}function Wu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function qu(e,t){if(null!==(e=e.memoizedState)&amp;&amp;null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&amp;&amp;n&lt;t?n:t}}function Gu(e,t){qu(e,t),(e=e.alternate)&amp;&amp;qu(e,t)}xs=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Lo.current)wl=!0;else{if(0==(e.lanes&amp;n)&amp;&amp;0==(128&amp;t.flags))return wl=!1,function(e,t,n){switch(t.tag){case 3:Ll(t),ha();break;case 5:ii(t);break;case 1:Mo(t.type)&amp;&amp;Do(t);break;case 4:oi(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;Oo(ga,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(Oo(si,1&amp;si.current),t.flags|=128,null):0!=(n&amp;t.child.childLanes)?Dl(e,t,n):(Oo(si,1&amp;si.current),null!==(e=Ul(e,t,n))?e.sibling:null);Oo(si,1&amp;si.current);break;case 19:if(r=0!=(n&amp;t.childLanes),0!=(128&amp;e.flags)){if(r)return Vl(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&amp;&amp;(o.rendering=null,o.tail=null,o.lastEffect=null),Oo(si,si.current),r)break;return null;case 22:case 23:return t.lanes=0,Pl(e,t,n)}return Ul(e,t,n)}(e,t,n);wl=0!=(131072&amp;e.flags)}else wl=!1,aa&amp;&amp;0!=(1048576&amp;t.flags)&amp;&amp;ea(t,Go,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var o=No(t,_o.current);Pa(t,n),o=Ei(null,t,r,e,o,n);var i=Pi();return t.flags|=1,"object"==typeof o&amp;&amp;null!==o&amp;&amp;"function"==typeof o.render&amp;&amp;void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Mo(r)?(i=!0,Do(t)):i=!1,t.memoizedState=null!==o.state&amp;&amp;void 0!==o.state?o.state:null,Na(t),o.updater=Va,t.stateNode=o,o._reactInternals=t,qa(t,r,e,n),t=_l(null,t,r,!0,i,n)):(t.tag=0,aa&amp;&amp;i&amp;&amp;ta(t),Sl(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if("function"==typeof e)return Nu(e)?1:0;if(null!=e){if((e=e.$$typeof)===T)return 11;if(e===j)return 14}return 2}(r),e=va(r,e),o){case 0:t=Ol(null,t,r,e,n);break e;case 1:t=Tl(null,t,r,e,n);break e;case 11:t=kl(null,t,r,e,n);break e;case 14:t=xl(null,t,r,va(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,Ol(e,t,r,o=t.elementType===r?o:va(r,o),n);case 1:return r=t.type,o=t.pendingProps,Tl(e,t,r,o=t.elementType===r?o:va(r,o),n);case 3:e:{if(Ll(t),null===e)throw Error(a(387));r=t.pendingProps,o=(i=t.memoizedState).element,Ma(e,t),za(t,r,null,n);var l=t.memoizedState;if(r=l.element,i.isDehydrated){if(i={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=i,t.memoizedState=i,256&amp;t.flags){t=jl(e,t,r,n,o=cl(Error(a(423)),t));break e}if(r!==o){t=jl(e,t,r,n,o=cl(Error(a(424)),t));break e}for(oa=uo(t.stateNode.containerInfo.firstChild),ra=t,aa=!0,ia=null,n=Za(t,null,r,n),t.child=n;n;)n.flags=-3&amp;n.flags|4096,n=n.sibling}else{if(ha(),r===o){t=Ul(e,t,n);break e}Sl(e,t,r,n)}t=t.child}return t;case 5:return ii(t),null===e&amp;&amp;ca(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,no(r,o)?l=null:null!==i&amp;&amp;no(r,i)&amp;&amp;(t.flags|=32),Cl(e,t),Sl(e,t,l,n),t.child;case 6:return null===e&amp;&amp;ca(t),null;case 13:return Dl(e,t,n);case 4:return oi(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Qa(t,null,r,n):Sl(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,kl(e,t,r,o=t.elementType===r?o:va(r,o),n);case 7:return Sl(e,t,t.pendingProps,n),t.child;case 8:case 12:return Sl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,l=o.value,Oo(ga,r._currentValue),r._currentValue=l,null!==i)if(lr(i.value,l)){if(i.children===o.children&amp;&amp;!Lo.current){t=Ul(e,t,n);break e}}else for(null!==(i=t.child)&amp;&amp;(i.return=t);null!==i;){var s=i.dependencies;if(null!==s){l=i.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===i.tag){(u=Ra(-1,n&amp;-n)).tag=2;var c=i.updateQueue;if(null!==c){var f=(c=c.shared).pending;null===f?u.next=u:(u.next=f.next,f.next=u),c.pending=u}}i.lanes|=n,null!==(u=i.alternate)&amp;&amp;(u.lanes|=n),Ea(i.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===i.tag)l=i.type===t.type?null:i.child;else if(18===i.tag){if(null===(l=i.return))throw Error(a(341));l.lanes|=n,null!==(s=l.alternate)&amp;&amp;(s.lanes|=n),Ea(l,n,t),l=i.sibling}else l=i.child;if(null!==l)l.return=i;else for(l=i;null!==l;){if(l===t){l=null;break}if(null!==(i=l.sibling)){i.return=l.return,l=i;break}l=l.return}i=l}Sl(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Pa(t,n),r=r(o=Ca(o)),t.flags|=1,Sl(e,t,r,n),t.child;case 14:return o=va(r=t.type,t.pendingProps),xl(e,t,r,o=va(r.type,o),n);case 15:return El(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:va(r,o),Hl(e,t),t.tag=1,Mo(r)?(e=!0,Do(t)):e=!1,Pa(t,n),Ua(t,r,o),qa(t,r,o,n),_l(null,t,r,!0,e,n);case 19:return Vl(e,t,n);case 22:return Pl(e,t,n)}throw Error(a(156,t.tag))};var Ku="function"==typeof reportError?reportError:function(e){console.error(e)};function Yu(e){this._internalRoot=e}function Xu(e){this._internalRoot=e}function Qu(e){return!(!e||1!==e.nodeType&amp;&amp;9!==e.nodeType&amp;&amp;11!==e.nodeType)}function Zu(e){return!(!e||1!==e.nodeType&amp;&amp;9!==e.nodeType&amp;&amp;11!==e.nodeType&amp;&amp;(8!==e.nodeType||" react-mount-point-unstable "!==e.nodeValue))}function Ju(){}function ec(e,t,n,r,o){var a=n._reactRootContainer;if(a){var i=a;if("function"==typeof o){var l=o;o=function(){var e=Wu(i);l.call(e)}}Uu(t,i,e,o)}else i=function(e,t,n,r,o){if(o){if("function"==typeof r){var a=r;r=function(){var e=Wu(i);a.call(e)}}var i=Hu(t,r,e,0,null,!1,0,"",Ju);return e._reactRootContainer=i,e[mo]=i.current,Vr(8===e.nodeType?e.parentNode:e),cu(),i}for(;o=e.lastChild;)e.removeChild(o);if("function"==typeof r){var l=r;r=function(){var e=Wu(s);l.call(e)}}var s=Fu(e,0,!1,null,0,!1,0,"",Ju);return e._reactRootContainer=s,e[mo]=s.current,Vr(8===e.nodeType?e.parentNode:e),cu((function(){Uu(t,s,n,r)})),s}(n,t,e,o,r);return Wu(i)}Xu.prototype.render=Yu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(a(409));Uu(e,t,null,null)},Xu.prototype.unmount=Yu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cu((function(){Uu(null,e,null,null)})),t[mo]=null}},Xu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Et();e={blockedOn:null,target:e,priority:t};for(var n=0;n&lt;Mt.length&amp;&amp;0!==t&amp;&amp;t&lt;Mt[n].priority;n++);Mt.splice(n,0,e),0===n&amp;&amp;Dt(e)}},St=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=ft(t.pendingLanes);0!==n&amp;&amp;(gt(t,1|n),ru(t,Qe()),0==(6&amp;Ts)&amp;&amp;(Vs=Qe()+500,Ho()))}break;case 13:cu((function(){var t=La(e,1);if(null!==t){var n=eu();nu(t,e,1,n)}})),Gu(e,1)}},kt=function(e){if(13===e.tag){var t=La(e,134217728);null!==t&amp;&amp;nu(t,e,134217728,eu()),Gu(e,134217728)}},xt=function(e){if(13===e.tag){var t=tu(e),n=La(e,t);null!==n&amp;&amp;nu(n,e,t,eu()),Gu(e,t)}},Et=function(){return bt},Pt=function(e,t){var n=bt;try{return bt=e,t()}finally{bt=n}},ke=function(e,t,n){switch(t){case"input":if(Z(e,n),t=n.name,"radio"===n.type&amp;&amp;null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;t&lt;n.length;t++){var r=n[t];if(r!==e&amp;&amp;r.form===e.form){var o=ko(r);if(!o)throw Error(a(90));G(r),Z(r,o)}}}break;case"textarea":ae(e,n);break;case"select":null!=(t=n.value)&amp;&amp;ne(e,!!n.multiple,t,!1)}},Te=uu,_e=cu;var tc={usingClientEntryPoint:!1,Events:[wo,So,ko,Ce,Oe,uu]},nc={findFiberByHostInstance:bo,bundleType:0,version:"18.2.0",rendererPackageName:"react-dom"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.2.0-next-9e3b772b8-20220608"};if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var oc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!oc.isDisabled&amp;&amp;oc.supportsFiber)try{ot=oc.inject(rc),at=oc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2&lt;arguments.length&amp;&amp;void 0!==arguments[2]?arguments[2]:null;if(!Qu(t))throw Error(a(200));return $u(e,t,null,n)},t.createRoot=function(e,t){if(!Qu(e))throw Error(a(299));var n=!1,r="",o=Ku;return null!=t&amp;&amp;(!0===t.unstable_strictMode&amp;&amp;(n=!0),void 0!==t.identifierPrefix&amp;&amp;(r=t.identifierPrefix),void 0!==t.onRecoverableError&amp;&amp;(o=t.onRecoverableError)),t=Fu(e,1,!1,null,0,n,0,r,o),e[mo]=t.current,Vr(8===e.nodeType?e.parentNode:e),new Yu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw e=Object.keys(e).join(","),Error(a(268,e))}return null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return cu(e)},t.hydrate=function(e,t,n){if(!Zu(t))throw Error(a(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Qu(e))throw Error(a(405));var r=null!=n&amp;&amp;n.hydratedSources||null,o=!1,i="",l=Ku;if(null!=n&amp;&amp;(!0===n.unstable_strictMode&amp;&amp;(o=!0),void 0!==n.identifierPrefix&amp;&amp;(i=n.identifierPrefix),void 0!==n.onRecoverableError&amp;&amp;(l=n.onRecoverableError)),t=Hu(t,null,e,1,null!=n?n:null,o,0,i,l),e[mo]=t.current,Vr(e),r)for(e=0;e&lt;r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Xu(t)},t.render=function(e,t,n){if(!Zu(t))throw Error(a(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Zu(e))throw Error(a(40));return!!e._reactRootContainer&amp;&amp;(cu((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[mo]=null}))})),!0)},t.unstable_batchedUpdates=uu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Zu(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return ec(e,t,n,!1,r)},t.version="18.2.0-next-9e3b772b8-20220608"},745:(e,t,n)=&gt;{"use strict";var r=n(3935);t.s=r.createRoot,r.hydrateRoot},3935:(e,t,n)=&gt;{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&amp;&amp;"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4448)},9590:e=&gt;{var t="undefined"!=typeof Element,n="function"==typeof Map,r="function"==typeof Set,o="function"==typeof ArrayBuffer&amp;&amp;!!ArrayBuffer.isView;function a(e,i){if(e===i)return!0;if(e&amp;&amp;i&amp;&amp;"object"==typeof e&amp;&amp;"object"==typeof i){if(e.constructor!==i.constructor)return!1;var l,s,u,c;if(Array.isArray(e)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(!a(e[s],i[s]))return!1;return!0}if(n&amp;&amp;e instanceof Map&amp;&amp;i instanceof Map){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;for(c=e.entries();!(s=c.next()).done;)if(!a(s.value[1],i.get(s.value[0])))return!1;return!0}if(r&amp;&amp;e instanceof Set&amp;&amp;i instanceof Set){if(e.size!==i.size)return!1;for(c=e.entries();!(s=c.next()).done;)if(!i.has(s.value[0]))return!1;return!0}if(o&amp;&amp;ArrayBuffer.isView(e)&amp;&amp;ArrayBuffer.isView(i)){if((l=e.length)!=i.length)return!1;for(s=l;0!=s--;)if(e[s]!==i[s])return!1;return!0}if(e.constructor===RegExp)return e.source===i.source&amp;&amp;e.flags===i.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===i.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===i.toString();if((l=(u=Object.keys(e)).length)!==Object.keys(i).length)return!1;for(s=l;0!=s--;)if(!Object.prototype.hasOwnProperty.call(i,u[s]))return!1;if(t&amp;&amp;e instanceof Element)return!1;for(s=l;0!=s--;)if(("_owner"!==u[s]&amp;&amp;"__v"!==u[s]&amp;&amp;"__o"!==u[s]||!e.$$typeof)&amp;&amp;!a(e[u[s]],i[u[s]]))return!1;return!0}return e!=e&amp;&amp;i!=i}e.exports=function(e,t){try{return a(e,t)}catch(e){if((e.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw e}}},9921:(e,t)=&gt;{"use strict";var n="function"==typeof Symbol&amp;&amp;Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,l=n?Symbol.for("react.profiler"):60114,s=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,f=n?Symbol.for("react.concurrent_mode"):60111,d=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,h=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,y=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,g=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,w=n?Symbol.for("react.scope"):60119;function S(e){if("object"==typeof e&amp;&amp;null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case f:case a:case l:case i:case p:return e;default:switch(e=e&amp;&amp;e.$$typeof){case u:case d:case y:case m:case s:return e;default:return t}}case o:return t}}}function k(e){return S(e)===f}t.AsyncMode=c,t.ConcurrentMode=f,t.ContextConsumer=u,t.ContextProvider=s,t.Element=r,t.ForwardRef=d,t.Fragment=a,t.Lazy=y,t.Memo=m,t.Portal=o,t.Profiler=l,t.StrictMode=i,t.Suspense=p,t.isAsyncMode=function(e){return k(e)||S(e)===c},t.isConcurrentMode=k,t.isContextConsumer=function(e){return S(e)===u},t.isContextProvider=function(e){return S(e)===s},t.isElement=function(e){return"object"==typeof e&amp;&amp;null!==e&amp;&amp;e.$$typeof===r},t.isForwardRef=function(e){return S(e)===d},t.isFragment=function(e){return S(e)===a},t.isLazy=function(e){return S(e)===y},t.isMemo=function(e){return S(e)===m},t.isPortal=function(e){return S(e)===o},t.isProfiler=function(e){return S(e)===l},t.isStrictMode=function(e){return S(e)===i},t.isSuspense=function(e){return S(e)===p},t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===a||e===f||e===l||e===i||e===p||e===h||"object"==typeof e&amp;&amp;null!==e&amp;&amp;(e.$$typeof===y||e.$$typeof===m||e.$$typeof===s||e.$$typeof===u||e.$$typeof===d||e.$$typeof===g||e.$$typeof===b||e.$$typeof===w||e.$$typeof===v)},t.typeOf=S},9864:(e,t,n)=&gt;{"use strict";e.exports=n(9921)},5915:(e,t,n)=&gt;{"use strict";t.__esModule=!0,t.default=void 0;var r=function(e){if(e&amp;&amp;e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(n(7294)),o=l(n(5697)),a=l(n(3096)),i=l(n(6774));function l(e){return e&amp;&amp;e.__esModule?e:{default:e}}function s(){return s=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},s.apply(this,arguments)}var u=function(e){var t,n;function o(t){var n;return(n=e.call(this,t)||this).isVisible=function(e,t,r){var o=e.top,a=e.left,i=e.bottom,l=e.right,s=e.width,u=e.height,c=n.props,f=c.offset,d=c.partialVisibility;if(o+l+i+a===0)return!1;var p=0-f,h=0-f,m=t+f,y=r+f;return d?o+u&gt;=p&amp;&amp;a+s&gt;=h&amp;&amp;i-u&lt;=y&amp;&amp;l-s&lt;=m:o&gt;=p&amp;&amp;a&gt;=h&amp;&amp;i&lt;=y&amp;&amp;l&lt;=m},n.isComponentVisible=function(){setTimeout((function(){if(n.nodeRef&amp;&amp;n.nodeRef.getBoundingClientRect){var e=document.documentElement,t=n.props.once,r=n.nodeRef.getBoundingClientRect(),o=window.innerWidth||e.clientWidth,a=window.innerHeight||e.clientHeight,i=n.isVisible(r,o,a);i&amp;&amp;t&amp;&amp;n.removeListener(),n.setState({isVisible:i})}}),0)},n.setNodeRef=function(e){return n.nodeRef=e},n.ownProps=Object.keys(o.propTypes),n.state={isVisible:!1},n.throttleCb=(0,a.default)(n.isComponentVisible,n.props.throttleInterval),t.nodeRef&amp;&amp;n.setNodeRef(t.nodeRef),n}n=e,(t=o).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var l=o.prototype;return l.componentDidMount=function(){this.attachListener(),this.isComponentVisible()},l.componentDidUpdate=function(e){(0,i.default)(this.getChildProps(this.props),this.getChildProps(e))||this.isComponentVisible()},l.componentWillUnmount=function(){this.removeListener()},l.attachListener=function(){window.addEventListener("scroll",this.throttleCb),window.addEventListener("resize",this.throttleCb)},l.removeListener=function(){window.removeEventListener("scroll",this.throttleCb),window.removeEventListener("resize",this.throttleCb)},l.getChildProps=function(e){var t=this;void 0===e&amp;&amp;(e=this.props);var n={};return Object.keys(e).forEach((function(r){-1===t.ownProps.indexOf(r)&amp;&amp;(n[r]=e[r])})),n},l.getChildren=function(){var e=this;return"function"==typeof this.props.children?this.props.children(s({},this.getChildProps(),{isVisible:this.state.isVisible})):r.default.Children.map(this.props.children,(function(t){return r.default.cloneElement(t,s({},e.getChildProps(),{isVisible:e.state.isVisible}))}))},l.render=function(){var e=this.props,t=e.className,n=e.style,o=e.nodeRef,a=e.tag,i=s({},t&amp;&amp;{className:t},n&amp;&amp;{style:n});return r.default.createElement(a,s({ref:!o&amp;&amp;this.setNodeRef},i),this.getChildren())},o}(r.PureComponent);t.default=u,u.propTypes={once:o.default.bool,throttleInterval:function(e,t,n){var r=e[t];return!Number.isInteger(r)||r&lt;0?new Error("The "+t+" prop you provided to "+n+" is not a valid integer &gt;= 0."):null},children:o.default.oneOfType([o.default.func,o.default.element,o.default.arrayOf(o.default.element)]),style:o.default.object,className:o.default.string,offset:o.default.number,partialVisibility:o.default.bool,nodeRef:o.default.object,tag:o.default.string},u.defaultProps={once:!1,throttleInterval:150,offset:0,partialVisibility:!1,tag:"div"}},6878:(e,t,n)=&gt;{"use strict";var r;t.Z=void 0;var o=((r=n(5915))&amp;&amp;r.__esModule?r:{default:r}).default;t.Z=o},1358:function(e,t,n){var r;r=e=&gt;(()=&gt;{var t={703:(e,t,n)=&gt;{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==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:a,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=&gt;{e.exports=n(703)()},414:e=&gt;{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},98:t=&gt;{"use strict";t.exports=e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.n=e=&gt;{var t=e&amp;&amp;e.__esModule?()=&gt;e.default:()=&gt;e;return r.d(t,{a:t}),t},r.d=(e,t)=&gt;{for(var n in t)r.o(t,n)&amp;&amp;!r.o(e,n)&amp;&amp;Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=&gt;Object.prototype.hasOwnProperty.call(e,t),r.r=e=&gt;{"undefined"!=typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var o={};return(()=&gt;{"use strict";r.r(o),r.d(o,{default:()=&gt;S});var e=r(98),t=r.n(e),n=r(697),a=r.n(n);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},i.apply(this,arguments)}var l=function(e){var n=e.pageClassName,r=e.pageLinkClassName,o=e.page,a=e.selected,l=e.activeClassName,s=e.activeLinkClassName,u=e.getEventListener,c=e.pageSelectedHandler,f=e.href,d=e.extraAriaContext,p=e.pageLabelBuilder,h=e.rel,m=e.ariaLabel||"Page "+o+(d?" "+d:""),y=null;return a&amp;&amp;(y="page",m=e.ariaLabel||"Page "+o+" is your current page",n=void 0!==n?n+" "+l:l,void 0!==r?void 0!==s&amp;&amp;(r=r+" "+s):r=s),t().createElement("li",{className:n},t().createElement("a",i({rel:h,role:f?void 0:"button",className:r,href:f,tabIndex:a?"-1":"0","aria-label":m,"aria-current":y,onKeyPress:c},u(c)),p(o)))};l.propTypes={pageSelectedHandler:a().func.isRequired,selected:a().bool.isRequired,pageClassName:a().string,pageLinkClassName:a().string,activeClassName:a().string,activeLinkClassName:a().string,extraAriaContext:a().string,href:a().string,ariaLabel:a().string,page:a().number.isRequired,getEventListener:a().func.isRequired,pageLabelBuilder:a().func.isRequired,rel:a().string};const s=l;function u(){return u=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},u.apply(this,arguments)}var c=function(e){var n=e.breakLabel,r=e.breakClassName,o=e.breakLinkClassName,a=e.breakHandler,i=e.getEventListener,l=r||"break";return t().createElement("li",{className:l},t().createElement("a",u({className:o,role:"button",tabIndex:"0",onKeyPress:a},i(a)),n))};c.propTypes={breakLabel:a().oneOfType([a().string,a().node]),breakClassName:a().string,breakLinkClassName:a().string,breakHandler:a().func.isRequired,getEventListener:a().func.isRequired};const f=c;function d(e){var t=arguments.length&gt;1&amp;&amp;void 0!==arguments[1]?arguments[1]:"";return null!=e?e:t}function p(e){return p="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},p(e)}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},h.apply(this,arguments)}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}function y(e,t){if(t&amp;&amp;("object"===p(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return v(e)}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function b(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var w=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&amp;&amp;m(e,t)}(l,e);var n,r,o,a,i=(o=l,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=g(o);if(a){var n=g(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return y(this,e)});function l(e){var n,r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),b(v(n=i.call(this,e)),"handlePreviousPage",(function(e){var t=n.state.selected;n.handleClick(e,null,t&gt;0?t-1:void 0,{isPrevious:!0})})),b(v(n),"handleNextPage",(function(e){var t=n.state.selected,r=n.props.pageCount;n.handleClick(e,null,t&lt;r-1?t+1:void 0,{isNext:!0})})),b(v(n),"handlePageSelected",(function(e,t){if(n.state.selected===e)return n.callActiveCallback(e),void n.handleClick(t,null,void 0,{isActive:!0});n.handleClick(t,null,e)})),b(v(n),"handlePageChange",(function(e){n.state.selected!==e&amp;&amp;(n.setState({selected:e}),n.callCallback(e))})),b(v(n),"getEventListener",(function(e){return b({},n.props.eventListener,e)})),b(v(n),"handleClick",(function(e,t,r){var o=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:{},a=o.isPrevious,i=void 0!==a&amp;&amp;a,l=o.isNext,s=void 0!==l&amp;&amp;l,u=o.isBreak,c=void 0!==u&amp;&amp;u,f=o.isActive,d=void 0!==f&amp;&amp;f;e.preventDefault?e.preventDefault():e.returnValue=!1;var p=n.state.selected,h=n.props.onClick,m=r;if(h){var y=h({index:t,selected:p,nextSelectedPage:r,event:e,isPrevious:i,isNext:s,isBreak:c,isActive:d});if(!1===y)return;Number.isInteger(y)&amp;&amp;(m=y)}void 0!==m&amp;&amp;n.handlePageChange(m)})),b(v(n),"handleBreakClick",(function(e,t){var r=n.state.selected;n.handleClick(t,e,r&lt;e?n.getForwardJump():n.getBackwardJump(),{isBreak:!0})})),b(v(n),"callCallback",(function(e){void 0!==n.props.onPageChange&amp;&amp;"function"==typeof n.props.onPageChange&amp;&amp;n.props.onPageChange({selected:e})})),b(v(n),"callActiveCallback",(function(e){void 0!==n.props.onPageActive&amp;&amp;"function"==typeof n.props.onPageActive&amp;&amp;n.props.onPageActive({selected:e})})),b(v(n),"getElementPageRel",(function(e){var t=n.state.selected,r=n.props,o=r.nextPageRel,a=r.prevPageRel,i=r.selectedPageRel;return t-1===e?a:t===e?i:t+1===e?o:void 0})),b(v(n),"pagination",(function(){var e=[],r=n.props,o=r.pageRangeDisplayed,a=r.pageCount,i=r.marginPagesDisplayed,l=r.breakLabel,s=r.breakClassName,u=r.breakLinkClassName,c=n.state.selected;if(a&lt;=o)for(var d=0;d&lt;a;d++)e.push(n.getPageElement(d));else{var p=o/2,h=o-p;c&gt;a-o/2?p=o-(h=a-c):c&lt;o/2&amp;&amp;(h=o-(p=c));var m,y,v=function(e){return n.getPageElement(e)},g=[];for(m=0;m&lt;a;m++){var b=m+1;b&lt;=i||b&gt;a-i||m&gt;=c-p&amp;&amp;m&lt;=c+(0===c&amp;&amp;o&gt;1?h-1:h)?g.push({type:"page",index:m,display:v(m)}):l&amp;&amp;g.length&gt;0&amp;&amp;g[g.length-1].display!==y&amp;&amp;(o&gt;0||i&gt;0)&amp;&amp;(y=t().createElement(f,{key:m,breakLabel:l,breakClassName:s,breakLinkClassName:u,breakHandler:n.handleBreakClick.bind(null,m),getEventListener:n.getEventListener}),g.push({type:"break",index:m,display:y}))}g.forEach((function(t,n){var r=t;"break"===t.type&amp;&amp;g[n-1]&amp;&amp;"page"===g[n-1].type&amp;&amp;g[n+1]&amp;&amp;"page"===g[n+1].type&amp;&amp;g[n+1].index-g[n-1].index&lt;=2&amp;&amp;(r={type:"page",index:t.index,display:v(t.index)}),e.push(r.display)}))}return e})),void 0!==e.initialPage&amp;&amp;void 0!==e.forcePage&amp;&amp;console.warn("(react-paginate): Both initialPage (".concat(e.initialPage,") and forcePage (").concat(e.forcePage,") props are provided, which is discouraged.")+" Use exclusively forcePage prop for a controlled component.\nSee https://reactjs.org/docs/forms.html#controlled-components"),r=e.initialPage?e.initialPage:e.forcePage?e.forcePage:0,n.state={selected:r},n}return n=l,(r=[{key:"componentDidMount",value:function(){var e=this.props,t=e.initialPage,n=e.disableInitialCallback,r=e.extraAriaContext,o=e.pageCount,a=e.forcePage;void 0===t||n||this.callCallback(t),r&amp;&amp;console.warn("DEPRECATED (react-paginate): The extraAriaContext prop is deprecated. You should now use the ariaLabelBuilder instead."),Number.isInteger(o)||console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(o,"). Did you forget a Math.ceil()?")),void 0!==t&amp;&amp;t&gt;o-1&amp;&amp;console.warn("(react-paginate): The initialPage prop provided is greater than the maximum page index from pageCount prop (".concat(t," &gt; ").concat(o-1,").")),void 0!==a&amp;&amp;a&gt;o-1&amp;&amp;console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(a," &gt; ").concat(o-1,")."))}},{key:"componentDidUpdate",value:function(e){void 0!==this.props.forcePage&amp;&amp;this.props.forcePage!==e.forcePage&amp;&amp;(this.props.forcePage&gt;this.props.pageCount-1&amp;&amp;console.warn("(react-paginate): The forcePage prop provided is greater than the maximum page index from pageCount prop (".concat(this.props.forcePage," &gt; ").concat(this.props.pageCount-1,").")),this.setState({selected:this.props.forcePage})),Number.isInteger(e.pageCount)&amp;&amp;!Number.isInteger(this.props.pageCount)&amp;&amp;console.warn("(react-paginate): The pageCount prop value provided is not an integer (".concat(this.props.pageCount,"). Did you forget a Math.ceil()?"))}},{key:"getForwardJump",value:function(){var e=this.state.selected,t=this.props,n=t.pageCount,r=e+t.pageRangeDisplayed;return r&gt;=n?n-1:r}},{key:"getBackwardJump",value:function(){var e=this.state.selected-this.props.pageRangeDisplayed;return e&lt;0?0:e}},{key:"getElementHref",value:function(e){var t=this.props,n=t.hrefBuilder,r=t.pageCount,o=t.hrefAllControls;if(n)return o||e&gt;=0&amp;&amp;e&lt;r?n(e+1,r,this.state.selected):void 0}},{key:"ariaLabelBuilder",value:function(e){var t=e===this.state.selected;if(this.props.ariaLabelBuilder&amp;&amp;e&gt;=0&amp;&amp;e&lt;this.props.pageCount){var n=this.props.ariaLabelBuilder(e+1,t);return this.props.extraAriaContext&amp;&amp;!t&amp;&amp;(n=n+" "+this.props.extraAriaContext),n}}},{key:"getPageElement",value:function(e){var n=this.state.selected,r=this.props,o=r.pageClassName,a=r.pageLinkClassName,i=r.activeClassName,l=r.activeLinkClassName,u=r.extraAriaContext,c=r.pageLabelBuilder;return t().createElement(s,{key:e,pageSelectedHandler:this.handlePageSelected.bind(null,e),selected:n===e,rel:this.getElementPageRel(e),pageClassName:o,pageLinkClassName:a,activeClassName:i,activeLinkClassName:l,extraAriaContext:u,href:this.getElementHref(e),ariaLabel:this.ariaLabelBuilder(e),page:e+1,pageLabelBuilder:c,getEventListener:this.getEventListener})}},{key:"render",value:function(){var e=this.props.renderOnZeroPageCount;if(0===this.props.pageCount&amp;&amp;void 0!==e)return e?e(this.props):e;var n=this.props,r=n.disabledClassName,o=n.disabledLinkClassName,a=n.pageCount,i=n.className,l=n.containerClassName,s=n.previousLabel,u=n.previousClassName,c=n.previousLinkClassName,f=n.previousAriaLabel,p=n.prevRel,m=n.nextLabel,y=n.nextClassName,v=n.nextLinkClassName,g=n.nextAriaLabel,b=n.nextRel,w=this.state.selected,S=0===w,k=w===a-1,x="".concat(d(u)).concat(S?" ".concat(d(r)):""),E="".concat(d(y)).concat(k?" ".concat(d(r)):""),P="".concat(d(c)).concat(S?" ".concat(d(o)):""),C="".concat(d(v)).concat(k?" ".concat(d(o)):""),O=S?"true":"false",T=k?"true":"false";return t().createElement("ul",{className:i||l,role:"navigation","aria-label":"Pagination"},t().createElement("li",{className:x},t().createElement("a",h({className:P,href:this.getElementHref(w-1),tabIndex:S?"-1":"0",role:"button",onKeyPress:this.handlePreviousPage,"aria-disabled":O,"aria-label":f,rel:p},this.getEventListener(this.handlePreviousPage)),s)),this.pagination(),t().createElement("li",{className:E},t().createElement("a",h({className:C,href:this.getElementHref(w+1),tabIndex:k?"-1":"0",role:"button",onKeyPress:this.handleNextPage,"aria-disabled":T,"aria-label":g,rel:b},this.getEventListener(this.handleNextPage)),m)))}}])&amp;&amp;function(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),l}(e.Component);b(w,"propTypes",{pageCount:a().number.isRequired,pageRangeDisplayed:a().number,marginPagesDisplayed:a().number,previousLabel:a().node,previousAriaLabel:a().string,prevPageRel:a().string,prevRel:a().string,nextLabel:a().node,nextAriaLabel:a().string,nextPageRel:a().string,nextRel:a().string,breakLabel:a().oneOfType([a().string,a().node]),hrefBuilder:a().func,hrefAllControls:a().bool,onPageChange:a().func,onPageActive:a().func,onClick:a().func,initialPage:a().number,forcePage:a().number,disableInitialCallback:a().bool,containerClassName:a().string,className:a().string,pageClassName:a().string,pageLinkClassName:a().string,pageLabelBuilder:a().func,activeClassName:a().string,activeLinkClassName:a().string,previousClassName:a().string,nextClassName:a().string,previousLinkClassName:a().string,nextLinkClassName:a().string,disabledClassName:a().string,disabledLinkClassName:a().string,breakClassName:a().string,breakLinkClassName:a().string,extraAriaContext:a().string,ariaLabelBuilder:a().func,eventListener:a().string,renderOnZeroPageCount:a().func,selectedPageRel:a().string}),b(w,"defaultProps",{pageRangeDisplayed:2,marginPagesDisplayed:3,activeClassName:"selected",previousLabel:"Previous",previousClassName:"previous",previousAriaLabel:"Previous page",prevPageRel:"prev",prevRel:"prev",nextLabel:"Next",nextClassName:"next",nextAriaLabel:"Next page",nextPageRel:"next",nextRel:"next",breakLabel:"...",disabledClassName:"disabled",disableInitialCallback:!1,pageLabelBuilder:function(e){return e},eventListener:"onClick",renderOnZeroPageCount:void 0,selectedPageRel:"canonical",hrefAllControls:!1});const S=w})(),o})(),e.exports=r(n(7294))},722:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o,a=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=u();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),i=(o=n(9590))&amp;&amp;o.__esModule?o:{default:o},l=n(5741),s=n(8045);function u(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return u=function(){return e},e}function c(){return c=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},c.apply(this,arguments)}function f(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&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function h(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?m(e):t}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;p(e,t)}(u,e);var t,n,r,o,l=(r=u,o=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=y(r);if(o){var n=y(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return h(this,e)});function u(){var e;f(this,u);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return v(m(e=l.call.apply(l,[this].concat(n))),"mounted",!1),v(m(e),"isReady",!1),v(m(e),"isPlaying",!1),v(m(e),"isLoading",!0),v(m(e),"loadOnReady",null),v(m(e),"startOnPlay",!0),v(m(e),"seekOnPlay",null),v(m(e),"onDurationCalled",!1),v(m(e),"handlePlayerMount",(function(t){e.player||(e.player=t,e.player.load(e.props.url)),e.progress()})),v(m(e),"getInternalPlayer",(function(t){return e.player?e.player[t]:null})),v(m(e),"progress",(function(){if(e.props.url&amp;&amp;e.player&amp;&amp;e.isReady){var t=e.getCurrentTime()||0,n=e.getSecondsLoaded(),r=e.getDuration();if(r){var o={playedSeconds:t,played:t/r};null!==n&amp;&amp;(o.loadedSeconds=n,o.loaded=n/r),o.playedSeconds===e.prevPlayed&amp;&amp;o.loadedSeconds===e.prevLoaded||e.props.onProgress(o),e.prevPlayed=o.playedSeconds,e.prevLoaded=o.loadedSeconds}}e.progressTimeout=setTimeout(e.progress,e.props.progressFrequency||e.props.progressInterval)})),v(m(e),"handleReady",(function(){if(e.mounted){e.isReady=!0,e.isLoading=!1;var t=e.props,n=t.onReady,r=t.playing,o=t.volume,a=t.muted;n(),a||null===o||e.player.setVolume(o),e.loadOnReady?(e.player.load(e.loadOnReady,!0),e.loadOnReady=null):r&amp;&amp;e.player.play(),e.handleDurationCheck()}})),v(m(e),"handlePlay",(function(){e.isPlaying=!0,e.isLoading=!1;var t=e.props,n=t.onStart,r=t.onPlay,o=t.playbackRate;e.startOnPlay&amp;&amp;(e.player.setPlaybackRate&amp;&amp;1!==o&amp;&amp;e.player.setPlaybackRate(o),n(),e.startOnPlay=!1),r(),e.seekOnPlay&amp;&amp;(e.seekTo(e.seekOnPlay),e.seekOnPlay=null),e.handleDurationCheck()})),v(m(e),"handlePause",(function(t){e.isPlaying=!1,e.isLoading||e.props.onPause(t)})),v(m(e),"handleEnded",(function(){var t=e.props,n=t.activePlayer,r=t.loop,o=t.onEnded;n.loopOnEnded&amp;&amp;r&amp;&amp;e.seekTo(0),r||(e.isPlaying=!1,o())})),v(m(e),"handleError",(function(){var t;e.isLoading=!1,(t=e.props).onError.apply(t,arguments)})),v(m(e),"handleDurationCheck",(function(){clearTimeout(e.durationCheckTimeout);var t=e.getDuration();t?e.onDurationCalled||(e.props.onDuration(t),e.onDurationCalled=!0):e.durationCheckTimeout=setTimeout(e.handleDurationCheck,100)})),v(m(e),"handleLoaded",(function(){e.isLoading=!1})),e}return t=u,n=[{key:"componentDidMount",value:function(){this.mounted=!0}},{key:"componentWillUnmount",value:function(){clearTimeout(this.progressTimeout),clearTimeout(this.durationCheckTimeout),this.isReady&amp;&amp;this.props.stopOnUnmount&amp;&amp;(this.player.stop(),this.player.disablePIP&amp;&amp;this.player.disablePIP()),this.mounted=!1}},{key:"componentDidUpdate",value:function(e){var t=this;if(this.player){var n=this.props,r=n.url,o=n.playing,a=n.volume,l=n.muted,u=n.playbackRate,c=n.pip,f=n.loop,d=n.activePlayer,p=n.disableDeferredLoading;if(!(0,i.default)(e.url,r)){if(this.isLoading&amp;&amp;!d.forceLoad&amp;&amp;!p&amp;&amp;!(0,s.isMediaStream)(r))return console.warn("ReactPlayer: the attempt to load ".concat(r," is being deferred until the player has loaded")),void(this.loadOnReady=r);this.isLoading=!0,this.startOnPlay=!0,this.onDurationCalled=!1,this.player.load(r,this.isReady)}e.playing||!o||this.isPlaying||this.player.play(),e.playing&amp;&amp;!o&amp;&amp;this.isPlaying&amp;&amp;this.player.pause(),!e.pip&amp;&amp;c&amp;&amp;this.player.enablePIP&amp;&amp;this.player.enablePIP(),e.pip&amp;&amp;!c&amp;&amp;this.player.disablePIP&amp;&amp;this.player.disablePIP(),e.volume!==a&amp;&amp;null!==a&amp;&amp;this.player.setVolume(a),e.muted!==l&amp;&amp;(l?this.player.mute():(this.player.unmute(),null!==a&amp;&amp;setTimeout((function(){return t.player.setVolume(a)})))),e.playbackRate!==u&amp;&amp;this.player.setPlaybackRate&amp;&amp;this.player.setPlaybackRate(u),e.loop!==f&amp;&amp;this.player.setLoop&amp;&amp;this.player.setLoop(f)}}},{key:"getDuration",value:function(){return this.isReady?this.player.getDuration():null}},{key:"getCurrentTime",value:function(){return this.isReady?this.player.getCurrentTime():null}},{key:"getSecondsLoaded",value:function(){return this.isReady?this.player.getSecondsLoaded():null}},{key:"seekTo",value:function(e,t){var n=this;if(this.isReady){if(t?"fraction"===t:e&gt;0&amp;&amp;e&lt;1){var r=this.player.getDuration();return r?void this.player.seekTo(r*e):void console.warn("ReactPlayer: could not seek using fraction ‚Äì¬†duration not yet available")}this.player.seekTo(e)}else 0!==e&amp;&amp;(this.seekOnPlay=e,setTimeout((function(){n.seekOnPlay=null}),5e3))}},{key:"render",value:function(){var e=this.props.activePlayer;return e?a.default.createElement(e,c({},this.props,{onMount:this.handlePlayerMount,onReady:this.handleReady,onPlay:this.handlePlay,onPause:this.handlePause,onEnded:this.handleEnded,onLoaded:this.handleLoaded,onError:this.handleError})):null}}],n&amp;&amp;d(t.prototype,n),u}(a.Component);t.default=g,v(g,"displayName","Player"),v(g,"propTypes",l.propTypes),v(g,"defaultProps",l.defaultProps)},3855:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=a();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var l=o?Object.getOwnPropertyDescriptor(e,i):null;l&amp;&amp;(l.get||l.set)?Object.defineProperty(n,i,l):n[i]=e[i]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294));function a(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return a=function(){return e},e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){h(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?d(e):t}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m="64px",y={},v=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;c(e,t)}(v,e);var t,n,r,a,i=(r=v,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=p(r);if(a){var n=p(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return f(this,e)});function v(){var e;s(this,v);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return h(d(e=i.call.apply(i,[this].concat(n))),"mounted",!1),h(d(e),"state",{image:null}),h(d(e),"handleKeyPress",(function(t){"Enter"!==t.key&amp;&amp;" "!==t.key||e.props.onClick()})),e}return t=v,(n=[{key:"componentDidMount",value:function(){this.mounted=!0,this.fetchImage(this.props)}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.url,r=t.light;e.url===n&amp;&amp;e.light===r||this.fetchImage(this.props)}},{key:"componentWillUnmount",value:function(){this.mounted=!1}},{key:"fetchImage",value:function(e){var t=this,n=e.url,r=e.light,a=e.oEmbedUrl;if(!o.default.isValidElement(r))if("string"!=typeof r){if(!y[n])return this.setState({image:null}),window.fetch(a.replace("{url}",n)).then((function(e){return e.json()})).then((function(e){if(e.thumbnail_url&amp;&amp;t.mounted){var r=e.thumbnail_url.replace("height=100","height=480");t.setState({image:r}),y[n]=r}}));this.setState({image:y[n]})}else this.setState({image:r})}},{key:"render",value:function(){var e=this.props,t=e.light,n=e.onClick,r=e.playIcon,a=e.previewTabIndex,i=this.state.image,s=o.default.isValidElement(t),u={display:"flex",alignItems:"center",justifyContent:"center"},c={preview:l({width:"100%",height:"100%",backgroundImage:i&amp;&amp;!s?"url(".concat(i,")"):void 0,backgroundSize:"cover",backgroundPosition:"center",cursor:"pointer"},u),shadow:l({background:"radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)",borderRadius:m,width:m,height:m,position:s?"absolute":void 0},u),playIcon:{borderStyle:"solid",borderWidth:"16px 0 16px 26px",borderColor:"transparent transparent transparent white",marginLeft:"7px"}},f=o.default.createElement("div",{style:c.shadow,className:"react-player__shadow"},o.default.createElement("div",{style:c.playIcon,className:"react-player__play-icon"}));return o.default.createElement("div",{style:c.preview,className:"react-player__preview",onClick:n,tabIndex:a,onKeyPress:this.handleKeyPress},s?t:null,r||f)}}])&amp;&amp;u(t.prototype,n),v}(o.Component);t.default=v},390:(e,t,n)=&gt;{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createReactPlayer=void 0;var r=P(n(7294)),o=c(n(9996)),a=c(n(845)),i=c(n(9590)),l=n(5741),s=n(8045),u=c(n(722));function c(e){return e&amp;&amp;e.__esModule?e:{default:e}}function f(e){return f="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},f(e)}function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function p(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){x(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function h(){return h=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},h.apply(this,arguments)}function m(e){return function(e){if(Array.isArray(e))return y(e)}(e)||function(e){if("undefined"!=typeof Symbol&amp;&amp;Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function b(e,t){return b=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},b(e,t)}function w(e,t){return!t||"object"!==f(t)&amp;&amp;"function"!=typeof t?S(e):t}function S(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function k(e){return k=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},k(e)}function x(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return E=function(){return e},e}function P(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==f(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=E();if(t&amp;&amp;t.has(e))return t.get(e);var n={},r=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&amp;&amp;(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&amp;&amp;t.set(e,n),n}var C=(0,r.lazy)((function(){return Promise.resolve().then((function(){return P(n(3855))}))})),O="undefined"!=typeof window&amp;&amp;window.document,T=void 0!==n.g&amp;&amp;n.g.window&amp;&amp;n.g.window.document,_=Object.keys(l.propTypes),L=O||T?r.Suspense:function(){return null},j=[];t.createReactPlayer=function(e,t){var n,c;return c=n=function(n){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;b(e,t)}(P,n);var c,f,d,y,E=(d=P,y=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=k(d);if(y){var n=k(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return w(this,e)});function P(){var n;v(this,P);for(var i=arguments.length,c=new Array(i),f=0;f&lt;i;f++)c[f]=arguments[f];return x(S(n=E.call.apply(E,[this].concat(c))),"state",{showPreview:!!n.props.light}),x(S(n),"references",{wrapper:function(e){n.wrapper=e},player:function(e){n.player=e}}),x(S(n),"handleClickPreview",(function(e){n.setState({showPreview:!1}),n.props.onClickPreview(e)})),x(S(n),"showPreview",(function(){n.setState({showPreview:!0})})),x(S(n),"getDuration",(function(){return n.player?n.player.getDuration():null})),x(S(n),"getCurrentTime",(function(){return n.player?n.player.getCurrentTime():null})),x(S(n),"getSecondsLoaded",(function(){return n.player?n.player.getSecondsLoaded():null})),x(S(n),"getInternalPlayer",(function(){var e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:"player";return n.player?n.player.getInternalPlayer(e):null})),x(S(n),"seekTo",(function(e,t){if(!n.player)return null;n.player.seekTo(e,t)})),x(S(n),"handleReady",(function(){n.props.onReady(S(n))})),x(S(n),"getActivePlayer",(0,a.default)((function(n){for(var r=0,o=[].concat(j,m(e));r&lt;o.length;r++){var a=o[r];if(a.canPlay(n))return a}return t||null}))),x(S(n),"getConfig",(0,a.default)((function(e,t){var r=n.props.config;return o.default.all([l.defaultProps.config,l.defaultProps.config[t]||{},r,r[t]||{}])}))),x(S(n),"getAttributes",(0,a.default)((function(e){return(0,s.omit)(n.props,_)}))),x(S(n),"renderActivePlayer",(function(e){if(!e)return null;var t=n.getActivePlayer(e);if(!t)return null;var o=n.getConfig(e,t.key);return r.default.createElement(u.default,h({},n.props,{key:t.key,ref:n.references.player,config:o,activePlayer:t.lazyPlayer||t,onReady:n.handleReady}))})),n}return c=P,f=[{key:"shouldComponentUpdate",value:function(e,t){return!(0,i.default)(this.props,e)||!(0,i.default)(this.state,t)}},{key:"componentDidUpdate",value:function(e){var t=this.props.light;!e.light&amp;&amp;t&amp;&amp;this.setState({showPreview:!0}),e.light&amp;&amp;!t&amp;&amp;this.setState({showPreview:!1})}},{key:"renderPreview",value:function(e){if(!e)return null;var t=this.props,n=t.light,o=t.playIcon,a=t.previewTabIndex,i=t.oEmbedUrl;return r.default.createElement(C,{url:e,light:n,playIcon:o,previewTabIndex:a,oEmbedUrl:i,onClick:this.handleClickPreview})}},{key:"render",value:function(){var e=this.props,t=e.url,n=e.style,o=e.width,a=e.height,i=e.fallback,l=e.wrapper,s=this.state.showPreview,u=this.getAttributes(t),c="string"==typeof l?this.references.wrapper:void 0;return r.default.createElement(l,h({ref:c,style:p(p({},n),{},{width:o,height:a})},u),r.default.createElement(L,{fallback:i},s?this.renderPreview(t):this.renderActivePlayer(t)))}}],f&amp;&amp;g(c.prototype,f),P}(r.Component),x(n,"displayName","ReactPlayer"),x(n,"propTypes",l.propTypes),x(n,"defaultProps",l.defaultProps),x(n,"addCustomPlayer",(function(e){j.push(e)})),x(n,"removeCustomPlayers",(function(){j.length=0})),x(n,"canPlay",(function(t){for(var n=0,r=[].concat(j,m(e));n&lt;r.length;n++)if(r[n].canPlay(t))return!0;return!1})),x(n,"canEnablePIP",(function(t){for(var n=0,r=[].concat(j,m(e));n&lt;r.length;n++){var o=r[n];if(o.canEnablePIP&amp;&amp;o.canEnablePIP(t))return!0}return!1})),c}},2004:(e,t,n)=&gt;{"use strict";t.Z=void 0;var r,o=(r=n(6497))&amp;&amp;r.__esModule?r:{default:r},a=n(390),i=o.default[o.default.length-1],l=(0,a.createReactPlayer)(o.default,i);t.Z=l},1776:(e,t,n)=&gt;{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.canPlay=t.FLV_EXTENSIONS=t.DASH_EXTENSIONS=t.HLS_EXTENSIONS=t.VIDEO_EXTENSIONS=t.AUDIO_EXTENSIONS=t.MATCH_URL_KALTURA=t.MATCH_URL_VIDYARD=t.MATCH_URL_MIXCLOUD=t.MATCH_URL_DAILYMOTION=t.MATCH_URL_TWITCH_CHANNEL=t.MATCH_URL_TWITCH_VIDEO=t.MATCH_URL_WISTIA=t.MATCH_URL_STREAMABLE=t.MATCH_URL_FACEBOOK_WATCH=t.MATCH_URL_FACEBOOK=t.MATCH_URL_VIMEO=t.MATCH_URL_SOUNDCLOUD=t.MATCH_URL_YOUTUBE=void 0;var r=n(8045);function o(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var a=/(?:youtu\.be\/|youtube(?:-nocookie)?\.com\/(?:embed\/|v\/|watch\/|watch\?v=|watch\?.+&amp;v=|shorts\/))((\w|-){11})|youtube\.com\/playlist\?list=|youtube\.com\/user\//;t.MATCH_URL_YOUTUBE=a;var i=/(?:soundcloud\.com|snd\.sc)\/[^.]+$/;t.MATCH_URL_SOUNDCLOUD=i;var l=/vimeo\.com\/(?!progressive_redirect).+/;t.MATCH_URL_VIMEO=l;var s=/^https?:\/\/(www\.)?facebook\.com.*\/(video(s)?|watch|story)(\.php?|\/).+$/;t.MATCH_URL_FACEBOOK=s;var u=/^https?:\/\/fb\.watch\/.+$/;t.MATCH_URL_FACEBOOK_WATCH=u;var c=/streamable\.com\/([a-z0-9]+)$/;t.MATCH_URL_STREAMABLE=c;var f=/(?:wistia\.(?:com|net)|wi\.st)\/(?:medias|embed)\/(?:iframe\/)?(.*)$/;t.MATCH_URL_WISTIA=f;var d=/(?:www\.|go\.)?twitch\.tv\/videos\/(\d+)($|\?)/;t.MATCH_URL_TWITCH_VIDEO=d;var p=/(?:www\.|go\.)?twitch\.tv\/([a-zA-Z0-9_]+)($|\?)/;t.MATCH_URL_TWITCH_CHANNEL=p;var h=/^(?:(?:https?):)?(?:\/\/)?(?:www\.)?(?:(?:dailymotion\.com(?:\/embed)?\/video)|dai\.ly)\/([a-zA-Z0-9]+)(?:_[\w_-]+)?$/;t.MATCH_URL_DAILYMOTION=h;var m=/mixcloud\.com\/([^/]+\/[^/]+)/;t.MATCH_URL_MIXCLOUD=m;var y=/vidyard.com\/(?:watch\/)?([a-zA-Z0-9-_]+)/;t.MATCH_URL_VIDYARD=y;var v=/^https?:\/\/[a-zA-Z]+\.kaltura.(com|org)\/p\/([0-9]+)\/sp\/([0-9]+)00\/embedIframeJs\/uiconf_id\/([0-9]+)\/partner_id\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/;t.MATCH_URL_KALTURA=v;var g=/\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\?)/i;t.AUDIO_EXTENSIONS=g;var b=/\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\d+]+)?($|\?)/i;t.VIDEO_EXTENSIONS=b;var w=/\.(m3u8)($|\?)/i;t.HLS_EXTENSIONS=w;var S=/\.(mpd)($|\?)/i;t.DASH_EXTENSIONS=S;var k=/\.(flv)($|\?)/i;t.FLV_EXTENSIONS=k;var x={youtube:function(e){return e instanceof Array?e.every((function(e){return a.test(e)})):a.test(e)},soundcloud:function(e){return i.test(e)&amp;&amp;!g.test(e)},vimeo:function(e){return l.test(e)&amp;&amp;!b.test(e)&amp;&amp;!w.test(e)},facebook:function(e){return s.test(e)||u.test(e)},streamable:function(e){return c.test(e)},wistia:function(e){return f.test(e)},twitch:function(e){return d.test(e)||p.test(e)},dailymotion:function(e){return h.test(e)},mixcloud:function(e){return m.test(e)},vidyard:function(e){return y.test(e)},kaltura:function(e){return v.test(e)},file:function e(t){if(t instanceof Array){var n,a=function(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e))||t&amp;&amp;e&amp;&amp;"number"==typeof e.length){n&amp;&amp;(e=n);var r=0,a=function(){};return{s:a,n:function(){return r&gt;=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return l=e.done,e},e:function(e){s=!0,i=e},f:function(){try{l||null==n.return||n.return()}finally{if(s)throw i}}}}(t);try{for(a.s();!(n=a.n()).done;){var i=n.value;if("string"==typeof i&amp;&amp;e(i))return!0;if(e(i.src))return!0}}catch(e){a.e(e)}finally{a.f()}return!1}return!(!(0,r.isMediaStream)(t)&amp;&amp;!(0,r.isBlobUrl)(t))||g.test(t)||b.test(t)||w.test(t)||S.test(t)||k.test(t)}};t.canPlay=x},6807:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function f(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&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e,t){return p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},p(e,t)}function h(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?m(e):t}function m(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function y(e){return y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},y(e)}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var g=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;p(e,t)}(g,e);var t,n,r,l,s=(r=g,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=y(r);if(l){var n=y(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return h(this,e)});function g(){var e;f(this,g);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return v(m(e=s.call.apply(s,[this].concat(n))),"callPlayer",a.callPlayer),v(m(e),"onDurationChange",(function(){var t=e.getDuration();e.props.onDuration(t)})),v(m(e),"mute",(function(){e.callPlayer("setMuted",!0)})),v(m(e),"unmute",(function(){e.callPlayer("setMuted",!1)})),v(m(e),"ref",(function(t){e.container=t})),e}return t=g,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t,n,r=this,o=this.props,l=o.controls,s=o.config,f=o.onError,d=o.playing,p=(t=e.match(i.MATCH_URL_DAILYMOTION),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){if("undefined"!=typeof Symbol&amp;&amp;Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&amp;&amp;(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(t,n)||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.")}())[1];this.player?this.player.load(p,{start:(0,a.parseStartTime)(e),autoplay:d}):(0,a.getSDK)("https://api.dmcdn.net/all.js","DM","dmAsyncInit",(function(e){return e.player})).then((function(t){if(r.container){var n=t.player;r.player=new n(r.container,{width:"100%",height:"100%",video:p,params:u({controls:l,autoplay:r.props.playing,mute:r.props.muted,start:(0,a.parseStartTime)(e),origin:window.location.origin},s.params),events:{apiready:r.props.onReady,seeked:function(){return r.props.onSeek(r.player.currentTime)},video_end:r.props.onEnded,durationchange:r.onDurationChange,pause:r.props.onPause,playing:r.props.onPlay,waiting:r.props.onBuffer,error:function(e){return f(e)}}})}}),f)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("seek",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"getDuration",value:function(){return this.player.duration||null}},{key:"getCurrentTime",value:function(){return this.player.currentTime}},{key:"getSecondsLoaded",value:function(){return this.player.bufferedTime}},{key:"render",value:function(){var e={width:"100%",height:"100%",display:this.props.display};return o.default.createElement("div",{style:e},o.default.createElement("div",{ref:this.ref}))}}])&amp;&amp;d(t.prototype,n),g}(o.Component);t.default=g,v(g,"displayName","DailyMotion"),v(g,"canPlay",i.canPlay.dailymotion),v(g,"loopOnEnded",!0)},1972:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(){return s=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},s.apply(this,arguments)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(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}var y="https://connect.facebook.net/en_US/sdk.js",v="fbAsyncInit",g="facebook-player-",b=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;f(e,t)}(b,e);var t,n,r,i,l=(r=b,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(r);if(i){var n=h(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return d(this,e)});function b(){var e;u(this,b);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return m(p(e=l.call.apply(l,[this].concat(n))),"callPlayer",a.callPlayer),m(p(e),"playerID",e.props.config.playerId||"".concat(g).concat((0,a.randomString)())),m(p(e),"mute",(function(){e.callPlayer("mute")})),m(p(e),"unmute",(function(){e.callPlayer("unmute")})),e}return t=b,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e,t){var n=this;t?(0,a.getSDK)(y,"FB",v).then((function(e){return e.XFBML.parse()})):(0,a.getSDK)(y,"FB",v).then((function(e){e.init({appId:n.props.config.appId,xfbml:!0,version:n.props.config.version}),e.Event.subscribe("xfbml.render",(function(e){n.props.onLoaded()})),e.Event.subscribe("xfbml.ready",(function(e){"video"===e.type&amp;&amp;e.id===n.playerID&amp;&amp;(n.player=e.instance,n.player.subscribe("startedPlaying",n.props.onPlay),n.player.subscribe("paused",n.props.onPause),n.player.subscribe("finishedPlaying",n.props.onEnded),n.player.subscribe("startedBuffering",n.props.onBuffer),n.player.subscribe("finishedBuffering",n.props.onBufferEnd),n.player.subscribe("error",n.props.onError),n.props.muted?n.callPlayer("mute"):n.callPlayer("unmute"),n.props.onReady(),document.getElementById(n.playerID).querySelector("iframe").style.visibility="visible")}))}))}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("seek",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"getDuration",value:function(){return this.callPlayer("getDuration")}},{key:"getCurrentTime",value:function(){return this.callPlayer("getCurrentPosition")}},{key:"getSecondsLoaded",value:function(){return null}},{key:"render",value:function(){var e=this.props.config.attributes;return o.default.createElement("div",s({style:{width:"100%",height:"100%"},id:this.playerID,className:"fb-video","data-href":this.props.url,"data-autoplay":this.props.playing?"true":"false","data-allowfullscreen":"true","data-controls":this.props.controls?"true":"false"},e))}}])&amp;&amp;c(t.prototype,n),b}(o.Component);t.default=b,m(b,"displayName","Facebook"),m(b,"canPlay",i.canPlay.facebook),m(b,"loopOnEnded",!0)},4926:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(){return s=Object.assign||function(e){for(var t=1;t&lt;arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&amp;&amp;(e[r]=n[r])}return e},s.apply(this,arguments)}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(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}var y="undefined"!=typeof navigator,v=y&amp;&amp;"MacIntel"===navigator.platform&amp;&amp;navigator.maxTouchPoints&gt;1,g=y&amp;&amp;(/iPad|iPhone|iPod/.test(navigator.userAgent)||v)&amp;&amp;!window.MSStream,b=/www\.dropbox\.com\/.+/,w=/https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/,S=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;f(e,t)}(v,e);var t,n,r,l,y=(r=v,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(r);if(l){var n=h(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return d(this,e)});function v(){var e;u(this,v);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return m(p(e=y.call.apply(y,[this].concat(n))),"onReady",(function(){var t;return(t=e.props).onReady.apply(t,arguments)})),m(p(e),"onPlay",(function(){var t;return(t=e.props).onPlay.apply(t,arguments)})),m(p(e),"onBuffer",(function(){var t;return(t=e.props).onBuffer.apply(t,arguments)})),m(p(e),"onBufferEnd",(function(){var t;return(t=e.props).onBufferEnd.apply(t,arguments)})),m(p(e),"onPause",(function(){var t;return(t=e.props).onPause.apply(t,arguments)})),m(p(e),"onEnded",(function(){var t;return(t=e.props).onEnded.apply(t,arguments)})),m(p(e),"onError",(function(){var t;return(t=e.props).onError.apply(t,arguments)})),m(p(e),"onPlayBackRateChange",(function(t){return e.props.onPlaybackRateChange(t.target.playbackRate)})),m(p(e),"onEnablePIP",(function(){var t;return(t=e.props).onEnablePIP.apply(t,arguments)})),m(p(e),"onDisablePIP",(function(t){var n=e.props,r=n.onDisablePIP,o=n.playing;r(t),o&amp;&amp;e.play()})),m(p(e),"onPresentationModeChange",(function(t){if(e.player&amp;&amp;(0,a.supportsWebKitPresentationMode)(e.player)){var n=e.player.webkitPresentationMode;"picture-in-picture"===n?e.onEnablePIP(t):"inline"===n&amp;&amp;e.onDisablePIP(t)}})),m(p(e),"onSeek",(function(t){e.props.onSeek(t.target.currentTime)})),m(p(e),"mute",(function(){e.player.muted=!0})),m(p(e),"unmute",(function(){e.player.muted=!1})),m(p(e),"renderSourceElement",(function(e,t){return"string"==typeof e?o.default.createElement("source",{key:t,src:e}):o.default.createElement("source",s({key:t},e))})),m(p(e),"renderTrack",(function(e,t){return o.default.createElement("track",s({key:t},e))})),m(p(e),"ref",(function(t){e.player&amp;&amp;(e.prevPlayer=e.player),e.player=t})),e}return t=v,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this),this.addListeners(this.player),g&amp;&amp;this.player.load()}},{key:"componentDidUpdate",value:function(e){this.shouldUseAudio(this.props)!==this.shouldUseAudio(e)&amp;&amp;(this.removeListeners(this.prevPlayer,e.url),this.addListeners(this.player)),this.props.url===e.url||(0,a.isMediaStream)(this.props.url)||(this.player.srcObject=null)}},{key:"componentWillUnmount",value:function(){this.player.src="",this.removeListeners(this.player),this.hls&amp;&amp;this.hls.destroy()}},{key:"addListeners",value:function(e){var t=this.props,n=t.url,r=t.playsinline;e.addEventListener("play",this.onPlay),e.addEventListener("waiting",this.onBuffer),e.addEventListener("playing",this.onBufferEnd),e.addEventListener("pause",this.onPause),e.addEventListener("seeked",this.onSeek),e.addEventListener("ended",this.onEnded),e.addEventListener("error",this.onError),e.addEventListener("ratechange",this.onPlayBackRateChange),e.addEventListener("enterpictureinpicture",this.onEnablePIP),e.addEventListener("leavepictureinpicture",this.onDisablePIP),e.addEventListener("webkitpresentationmodechanged",this.onPresentationModeChange),this.shouldUseHLS(n)||e.addEventListener("canplay",this.onReady),r&amp;&amp;(e.setAttribute("playsinline",""),e.setAttribute("webkit-playsinline",""),e.setAttribute("x5-playsinline",""))}},{key:"removeListeners",value:function(e,t){e.removeEventListener("canplay",this.onReady),e.removeEventListener("play",this.onPlay),e.removeEventListener("waiting",this.onBuffer),e.removeEventListener("playing",this.onBufferEnd),e.removeEventListener("pause",this.onPause),e.removeEventListener("seeked",this.onSeek),e.removeEventListener("ended",this.onEnded),e.removeEventListener("error",this.onError),e.removeEventListener("ratechange",this.onPlayBackRateChange),e.removeEventListener("enterpictureinpicture",this.onEnablePIP),e.removeEventListener("leavepictureinpicture",this.onDisablePIP),e.removeEventListener("webkitpresentationmodechanged",this.onPresentationModeChange),this.shouldUseHLS(t)||e.removeEventListener("canplay",this.onReady)}},{key:"shouldUseAudio",value:function(e){return!e.config.forceVideo&amp;&amp;!e.config.attributes.poster&amp;&amp;(i.AUDIO_EXTENSIONS.test(e.url)||e.config.forceAudio)}},{key:"shouldUseHLS",value:function(e){return!!this.props.config.forceHLS||!g&amp;&amp;(i.HLS_EXTENSIONS.test(e)||w.test(e))}},{key:"shouldUseDASH",value:function(e){return i.DASH_EXTENSIONS.test(e)||this.props.config.forceDASH}},{key:"shouldUseFLV",value:function(e){return i.FLV_EXTENSIONS.test(e)||this.props.config.forceFLV}},{key:"load",value:function(e){var t=this,n=this.props.config,r=n.hlsVersion,o=n.hlsOptions,i=n.dashVersion,l=n.flvVersion;if(this.hls&amp;&amp;this.hls.destroy(),this.dash&amp;&amp;this.dash.reset(),this.shouldUseHLS(e)&amp;&amp;(0,a.getSDK)("https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js".replace("VERSION",r),"Hls").then((function(n){if(t.hls=new n(o),t.hls.on(n.Events.MANIFEST_PARSED,(function(){t.props.onReady()})),t.hls.on(n.Events.ERROR,(function(e,r){t.props.onError(e,r,t.hls,n)})),w.test(e)){var r=e.match(w)[1];t.hls.loadSource("https://videodelivery.net/{id}/manifest/video.m3u8".replace("{id}",r))}else t.hls.loadSource(e);t.hls.attachMedia(t.player),t.props.onLoaded()})),this.shouldUseDASH(e)&amp;&amp;(0,a.getSDK)("https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js".replace("VERSION",i),"dashjs").then((function(n){t.dash=n.MediaPlayer().create(),t.dash.initialize(t.player,e,t.props.playing),t.dash.on("error",t.props.onError),parseInt(i)&lt;3?t.dash.getDebug().setLogToBrowserConsole(!1):t.dash.updateSettings({debug:{logLevel:n.Debug.LOG_LEVEL_NONE}}),t.props.onLoaded()})),this.shouldUseFLV(e)&amp;&amp;(0,a.getSDK)("https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js".replace("VERSION",l),"flvjs").then((function(n){t.flv=n.createPlayer({type:"flv",url:e}),t.flv.attachMediaElement(t.player),t.flv.on(n.Events.ERROR,(function(e,r){t.props.onError(e,r,t.flv,n)})),t.flv.load(),t.props.onLoaded()})),e instanceof Array)this.player.load();else if((0,a.isMediaStream)(e))try{this.player.srcObject=e}catch(t){this.player.src=window.URL.createObjectURL(e)}}},{key:"play",value:function(){var e=this.player.play();e&amp;&amp;e.catch(this.props.onError)}},{key:"pause",value:function(){this.player.pause()}},{key:"stop",value:function(){this.player.removeAttribute("src"),this.dash&amp;&amp;this.dash.reset()}},{key:"seekTo",value:function(e){this.player.currentTime=e}},{key:"setVolume",value:function(e){this.player.volume=e}},{key:"enablePIP",value:function(){this.player.requestPictureInPicture&amp;&amp;document.pictureInPictureElement!==this.player?this.player.requestPictureInPicture():(0,a.supportsWebKitPresentationMode)(this.player)&amp;&amp;"picture-in-picture"!==this.player.webkitPresentationMode&amp;&amp;this.player.webkitSetPresentationMode("picture-in-picture")}},{key:"disablePIP",value:function(){document.exitPictureInPicture&amp;&amp;document.pictureInPictureElement===this.player?document.exitPictureInPicture():(0,a.supportsWebKitPresentationMode)(this.player)&amp;&amp;"inline"!==this.player.webkitPresentationMode&amp;&amp;this.player.webkitSetPresentationMode("inline")}},{key:"setPlaybackRate",value:function(e){try{this.player.playbackRate=e}catch(e){this.props.onError(e)}}},{key:"getDuration",value:function(){if(!this.player)return null;var e=this.player,t=e.duration,n=e.seekable;return t===1/0&amp;&amp;n.length&gt;0?n.end(n.length-1):t}},{key:"getCurrentTime",value:function(){return this.player?this.player.currentTime:null}},{key:"getSecondsLoaded",value:function(){if(!this.player)return null;var e=this.player.buffered;if(0===e.length)return 0;var t=e.end(e.length-1),n=this.getDuration();return t&gt;n?n:t}},{key:"getSource",value:function(e){var t=this.shouldUseHLS(e),n=this.shouldUseDASH(e),r=this.shouldUseFLV(e);if(!(e instanceof Array||(0,a.isMediaStream)(e)||t||n||r))return b.test(e)?e.replace("www.dropbox.com","dl.dropboxusercontent.com"):e}},{key:"render",value:function(){var e=this.props,t=e.url,n=e.playing,r=e.loop,a=e.controls,i=e.muted,l=e.config,u=e.width,c=e.height,f=this.shouldUseAudio(this.props)?"audio":"video",d={width:"auto"===u?u:"100%",height:"auto"===c?c:"100%"};return o.default.createElement(f,s({ref:this.ref,src:this.getSource(t),style:d,preload:"auto",autoPlay:n||void 0,controls:a,muted:i,loop:r},l.attributes),t instanceof Array&amp;&amp;t.map(this.renderSourceElement),l.tracks.map(this.renderTrack))}}])&amp;&amp;c(t.prototype,n),v}(o.Component);t.default=S,m(S,"displayName","FilePlayer"),m(S,"canPlay",i.canPlay.file)},3911:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?d(e):t}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;c(e,t)}(m,e);var t,n,r,i,l=(r=m,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=p(r);if(i){var n=p(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return f(this,e)});function m(){var e;s(this,m);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return h(d(e=l.call.apply(l,[this].concat(n))),"callPlayer",a.callPlayer),h(d(e),"duration",null),h(d(e),"currentTime",null),h(d(e),"secondsLoaded",null),h(d(e),"mute",(function(){e.callPlayer("mute")})),h(d(e),"unmute",(function(){e.callPlayer("unmute")})),h(d(e),"ref",(function(t){e.iframe=t})),e}return t=m,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this;(0,a.getSDK)("https://cdn.embed.ly/player-0.1.0.min.js","playerjs").then((function(e){t.iframe&amp;&amp;(t.player=new e.Player(t.iframe),t.player.on("ready",(function(){setTimeout((function(){t.player.isReady=!0,t.player.setLoop(t.props.loop),t.props.muted&amp;&amp;t.player.mute(),t.addListeners(t.player,t.props),t.props.onReady()}),500)})))}),this.props.onError)}},{key:"addListeners",value:function(e,t){var n=this;e.on("play",t.onPlay),e.on("pause",t.onPause),e.on("ended",t.onEnded),e.on("error",t.onError),e.on("timeupdate",(function(e){var t=e.duration,r=e.seconds;n.duration=t,n.currentTime=r}))}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("setCurrentTime",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"setLoop",value:function(e){this.callPlayer("setLoop",e)}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.currentTime}},{key:"getSecondsLoaded",value:function(){return this.secondsLoaded}},{key:"render",value:function(){return o.default.createElement("iframe",{ref:this.ref,src:this.props.url,frameBorder:"0",scrolling:"no",style:{width:"100%",height:"100%"},allow:"encrypted-media; autoplay; fullscreen;",referrerPolicy:"no-referrer-when-downgrade"})}}])&amp;&amp;u(t.prototype,n),m}(o.Component);t.default=m,h(m,"displayName","Kaltura"),h(m,"canPlay",i.canPlay.kaltura)},143:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?h(e):t}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;d(e,t)}(v,e);var t,n,r,l,s=(r=v,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(r);if(l){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return p(this,e)});function v(){var e;c(this,v);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return y(h(e=s.call.apply(s,[this].concat(n))),"callPlayer",a.callPlayer),y(h(e),"duration",null),y(h(e),"currentTime",null),y(h(e),"secondsLoaded",null),y(h(e),"mute",(function(){})),y(h(e),"unmute",(function(){})),y(h(e),"ref",(function(t){e.iframe=t})),e}return t=v,n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this;(0,a.getSDK)("https://widget.mixcloud.com/media/js/widgetApi.js","Mixcloud").then((function(e){t.player=e.PlayerWidget(t.iframe),t.player.ready.then((function(){t.player.events.play.on(t.props.onPlay),t.player.events.pause.on(t.props.onPause),t.player.events.ended.on(t.props.onEnded),t.player.events.error.on(t.props.error),t.player.events.progress.on((function(e,n){t.currentTime=e,t.duration=n})),t.props.onReady()}))}),this.props.onError)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("seek",e)}},{key:"setVolume",value:function(e){}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.currentTime}},{key:"getSecondsLoaded",value:function(){return null}},{key:"render",value:function(){var e=this.props,t=e.url,n=e.config,r=t.match(i.MATCH_URL_MIXCLOUD)[1],l=(0,a.queryString)(u(u({},n.options),{},{feed:"/".concat(r,"/")}));return o.default.createElement("iframe",{key:r,ref:this.ref,style:{width:"100%",height:"100%"},src:"https://www.mixcloud.com/widget/iframe/?".concat(l),frameBorder:"0",allow:"autoplay"})}}],n&amp;&amp;f(t.prototype,n),v}(o.Component);t.default=v,y(v,"displayName","Mixcloud"),y(v,"canPlay",i.canPlay.mixcloud),y(v,"loopOnEnded",!0)},2648:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?h(e):t}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;d(e,t)}(s,e);var t,n,r,i,l=(r=s,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(r);if(i){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return p(this,e)});function s(){var e;c(this,s);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return y(h(e=l.call.apply(l,[this].concat(n))),"callPlayer",a.callPlayer),y(h(e),"duration",null),y(h(e),"currentTime",null),y(h(e),"fractionLoaded",null),y(h(e),"mute",(function(){e.setVolume(0)})),y(h(e),"unmute",(function(){null!==e.props.volume&amp;&amp;e.setVolume(e.props.volume)})),y(h(e),"ref",(function(t){e.iframe=t})),e}return t=s,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e,t){var n=this;(0,a.getSDK)("https://w.soundcloud.com/player/api.js","SC").then((function(r){if(n.iframe){var o=r.Widget.Events,a=o.PLAY,i=o.PLAY_PROGRESS,l=o.PAUSE,s=o.FINISH,c=o.ERROR;t||(n.player=r.Widget(n.iframe),n.player.bind(a,n.props.onPlay),n.player.bind(l,(function(){n.duration-n.currentTime&lt;.05||n.props.onPause()})),n.player.bind(i,(function(e){n.currentTime=e.currentPosition/1e3,n.fractionLoaded=e.loadedProgress})),n.player.bind(s,(function(){return n.props.onEnded()})),n.player.bind(c,(function(e){return n.props.onError(e)}))),n.player.load(e,u(u({},n.props.config.options),{},{callback:function(){n.player.getDuration((function(e){n.duration=e/1e3,n.props.onReady()}))}}))}}))}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("seekTo",1e3*e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",100*e)}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.currentTime}},{key:"getSecondsLoaded",value:function(){return this.fractionLoaded*this.duration}},{key:"render",value:function(){var e={width:"100%",height:"100%",display:this.props.display};return o.default.createElement("iframe",{ref:this.ref,src:"https://w.soundcloud.com/player/?url=".concat(encodeURIComponent(this.props.url)),style:e,frameBorder:0,allow:"autoplay"})}}])&amp;&amp;f(t.prototype,n),s}(o.Component);t.default=v,y(v,"displayName","SoundCloud"),y(v,"canPlay",i.canPlay.soundcloud),y(v,"loopOnEnded",!0)},993:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function c(e,t){return c=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},c(e,t)}function f(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?d(e):t}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function h(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;c(e,t)}(y,e);var t,n,r,l,m=(r=y,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=p(r);if(l){var n=p(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return f(this,e)});function y(){var e;s(this,y);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return h(d(e=m.call.apply(m,[this].concat(n))),"callPlayer",a.callPlayer),h(d(e),"duration",null),h(d(e),"currentTime",null),h(d(e),"secondsLoaded",null),h(d(e),"mute",(function(){e.callPlayer("mute")})),h(d(e),"unmute",(function(){e.callPlayer("unmute")})),h(d(e),"ref",(function(t){e.iframe=t})),e}return t=y,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this;(0,a.getSDK)("https://cdn.embed.ly/player-0.1.0.min.js","playerjs").then((function(e){t.iframe&amp;&amp;(t.player=new e.Player(t.iframe),t.player.setLoop(t.props.loop),t.player.on("ready",t.props.onReady),t.player.on("play",t.props.onPlay),t.player.on("pause",t.props.onPause),t.player.on("seeked",t.props.onSeek),t.player.on("ended",t.props.onEnded),t.player.on("error",t.props.onError),t.player.on("timeupdate",(function(e){var n=e.duration,r=e.seconds;t.duration=n,t.currentTime=r})),t.player.on("buffered",(function(e){var n=e.percent;t.duration&amp;&amp;(t.secondsLoaded=t.duration*n)})),t.props.muted&amp;&amp;t.player.mute())}),this.props.onError)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){}},{key:"seekTo",value:function(e){this.callPlayer("setCurrentTime",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",100*e)}},{key:"setLoop",value:function(e){this.callPlayer("setLoop",e)}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.currentTime}},{key:"getSecondsLoaded",value:function(){return this.secondsLoaded}},{key:"render",value:function(){var e=this.props.url.match(i.MATCH_URL_STREAMABLE)[1];return o.default.createElement("iframe",{ref:this.ref,src:"https://streamable.com/o/".concat(e),frameBorder:"0",scrolling:"no",style:{width:"100%",height:"100%"},allow:"encrypted-media; autoplay; fullscreen;"})}}])&amp;&amp;u(t.prototype,n),y}(o.Component);t.default=m,h(m,"displayName","Streamable"),h(m,"canPlay",i.canPlay.streamable)},9482:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(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}var y="twitch-player-",v=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;f(e,t)}(g,e);var t,n,r,l,v=(r=g,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(r);if(l){var n=h(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return d(this,e)});function g(){var e;u(this,g);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return m(p(e=v.call.apply(v,[this].concat(n))),"callPlayer",a.callPlayer),m(p(e),"playerID",e.props.config.playerId||"".concat(y).concat((0,a.randomString)())),m(p(e),"mute",(function(){e.callPlayer("setMuted",!0)})),m(p(e),"unmute",(function(){e.callPlayer("setMuted",!1)})),e}return t=g,n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e,t){var n=this,r=this.props,o=r.playsinline,l=r.onError,u=r.config,c=r.controls,f=i.MATCH_URL_TWITCH_CHANNEL.test(e),d=f?e.match(i.MATCH_URL_TWITCH_CHANNEL)[1]:e.match(i.MATCH_URL_TWITCH_VIDEO)[1];t?f?this.player.setChannel(d):this.player.setVideo("v"+d):(0,a.getSDK)("https://player.twitch.tv/js/embed/v1.js","Twitch").then((function(t){n.player=new t.Player(n.playerID,function(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({video:f?"":d,channel:f?d:"",height:"100%",width:"100%",playsinline:o,autoplay:n.props.playing,muted:n.props.muted,controls:!!f||c,time:(0,a.parseStartTime)(e)},u.options));var r=t.Player,i=r.READY,l=r.PLAYING,p=r.PAUSE,h=r.ENDED,y=r.ONLINE,v=r.OFFLINE,g=r.SEEK;n.player.addEventListener(i,n.props.onReady),n.player.addEventListener(l,n.props.onPlay),n.player.addEventListener(p,n.props.onPause),n.player.addEventListener(h,n.props.onEnded),n.player.addEventListener(g,n.props.onSeek),n.player.addEventListener(y,n.props.onLoaded),n.player.addEventListener(v,n.props.onLoaded)}),l)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){this.callPlayer("pause")}},{key:"seekTo",value:function(e){this.callPlayer("seek",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"getDuration",value:function(){return this.callPlayer("getDuration")}},{key:"getCurrentTime",value:function(){return this.callPlayer("getCurrentTime")}},{key:"getSecondsLoaded",value:function(){return null}},{key:"render",value:function(){return o.default.createElement("div",{style:{width:"100%",height:"100%"},id:this.playerID})}}],n&amp;&amp;c(t.prototype,n),g}(o.Component);t.default=v,m(v,"displayName","Twitch"),m(v,"canPlay",i.canPlay.twitch),m(v,"loopOnEnded",!0)},6596:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(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}var y=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;f(e,t)}(v,e);var t,n,r,l,y=(r=v,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(r);if(l){var n=h(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return d(this,e)});function v(){var e;u(this,v);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return m(p(e=y.call.apply(y,[this].concat(n))),"callPlayer",a.callPlayer),m(p(e),"mute",(function(){e.setVolume(0)})),m(p(e),"unmute",(function(){null!==e.props.volume&amp;&amp;e.setVolume(e.props.volume)})),m(p(e),"ref",(function(t){e.container=t})),e}return t=v,n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this,n=this.props,r=n.playing,o=n.config,l=n.onError,u=n.onDuration,c=e&amp;&amp;e.match(i.MATCH_URL_VIDYARD)[1];this.player&amp;&amp;this.stop(),(0,a.getSDK)("https://play.vidyard.com/embed/v4.js","VidyardV4","onVidyardAPI").then((function(e){t.container&amp;&amp;(e.api.addReadyListener((function(e,n){t.player||(t.player=n,t.player.on("ready",t.props.onReady),t.player.on("play",t.props.onPlay),t.player.on("pause",t.props.onPause),t.player.on("seek",t.props.onSeek),t.player.on("playerComplete",t.props.onEnded))}),c),e.api.renderPlayer(function(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({uuid:c,container:t.container,autoplay:r?1:0},o.options)),e.api.getPlayerMetadata(c).then((function(e){t.duration=e.length_in_seconds,u(e.length_in_seconds)})))}),l)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){window.VidyardV4.api.destroyPlayer(this.player)}},{key:"seekTo",value:function(e){this.callPlayer("seek",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"setPlaybackRate",value:function(e){this.callPlayer("setPlaybackSpeed",e)}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.callPlayer("currentTime")}},{key:"getSecondsLoaded",value:function(){return null}},{key:"render",value:function(){var e={width:"100%",height:"100%",display:this.props.display};return o.default.createElement("div",{style:e},o.default.createElement("div",{ref:this.ref}))}}],n&amp;&amp;c(t.prototype,n),v}(o.Component);t.default=y,m(y,"displayName","Vidyard"),m(y,"canPlay",i.canPlay.vidyard)},868:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t){return f=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},f(e,t)}function d(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?p(e):t}function p(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(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}var y=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;f(e,t)}(y,e);var t,n,r,i,l=(r=y,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=h(r);if(i){var n=h(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return d(this,e)});function y(){var e;u(this,y);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return m(p(e=l.call.apply(l,[this].concat(n))),"callPlayer",a.callPlayer),m(p(e),"duration",null),m(p(e),"currentTime",null),m(p(e),"secondsLoaded",null),m(p(e),"mute",(function(){e.setVolume(0)})),m(p(e),"unmute",(function(){null!==e.props.volume&amp;&amp;e.setVolume(e.props.volume)})),m(p(e),"ref",(function(t){e.container=t})),e}return t=y,n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this;this.duration=null,(0,a.getSDK)("https://player.vimeo.com/api/player.js","Vimeo").then((function(n){if(t.container){var r=t.props.config,o=r.playerOptions,a=r.title;t.player=new n.Player(t.container,function(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({url:e,autoplay:t.props.playing,muted:t.props.muted,loop:t.props.loop,playsinline:t.props.playsinline,controls:t.props.controls},o)),t.player.ready().then((function(){var e=t.container.querySelector("iframe");e.style.width="100%",e.style.height="100%",a&amp;&amp;(e.title=a)})).catch(t.props.onError),t.player.on("loaded",(function(){t.props.onReady(),t.refreshDuration()})),t.player.on("play",(function(){t.props.onPlay(),t.refreshDuration()})),t.player.on("pause",t.props.onPause),t.player.on("seeked",(function(e){return t.props.onSeek(e.seconds)})),t.player.on("ended",t.props.onEnded),t.player.on("error",t.props.onError),t.player.on("timeupdate",(function(e){var n=e.seconds;t.currentTime=n})),t.player.on("progress",(function(e){var n=e.seconds;t.secondsLoaded=n})),t.player.on("bufferstart",t.props.onBuffer),t.player.on("bufferend",t.props.onBufferEnd),t.player.on("playbackratechange",(function(e){return t.props.onPlaybackRateChange(e.playbackRate)}))}}),this.props.onError)}},{key:"refreshDuration",value:function(){var e=this;this.player.getDuration().then((function(t){e.duration=t}))}},{key:"play",value:function(){var e=this.callPlayer("play");e&amp;&amp;e.catch(this.props.onError)}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){this.callPlayer("unload")}},{key:"seekTo",value:function(e){this.callPlayer("setCurrentTime",e)}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",e)}},{key:"setLoop",value:function(e){this.callPlayer("setLoop",e)}},{key:"setPlaybackRate",value:function(e){this.callPlayer("setPlaybackRate",e)}},{key:"getDuration",value:function(){return this.duration}},{key:"getCurrentTime",value:function(){return this.currentTime}},{key:"getSecondsLoaded",value:function(){return this.secondsLoaded}},{key:"render",value:function(){var e={width:"100%",height:"100%",overflow:"hidden",display:this.props.display};return o.default.createElement("div",{key:this.props.url,ref:this.ref,style:e})}}],n&amp;&amp;c(t.prototype,n),y}(o.Component);t.default=y,m(y,"displayName","Vimeo"),m(y,"canPlay",i.canPlay.vimeo),m(y,"forceLoad",!0)},8018:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){y(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function d(e,t){return d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},d(e,t)}function p(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?h(e):t}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e){return m=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},m(e)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v="wistia-player-",g=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;d(e,t)}(g,e);var t,n,r,l,s=(r=g,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=m(r);if(l){var n=m(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return p(this,e)});function g(){var e;c(this,g);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return y(h(e=s.call.apply(s,[this].concat(n))),"callPlayer",a.callPlayer),y(h(e),"playerID",e.props.config.playerId||"".concat(v).concat((0,a.randomString)())),y(h(e),"onPlay",(function(){var t;return(t=e.props).onPlay.apply(t,arguments)})),y(h(e),"onPause",(function(){var t;return(t=e.props).onPause.apply(t,arguments)})),y(h(e),"onSeek",(function(){var t;return(t=e.props).onSeek.apply(t,arguments)})),y(h(e),"onEnded",(function(){var t;return(t=e.props).onEnded.apply(t,arguments)})),y(h(e),"onPlaybackRateChange",(function(){var t;return(t=e.props).onPlaybackRateChange.apply(t,arguments)})),y(h(e),"mute",(function(){e.callPlayer("mute")})),y(h(e),"unmute",(function(){e.callPlayer("unmute")})),e}return t=g,n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"load",value:function(e){var t=this,n=this.props,r=n.playing,o=n.muted,i=n.controls,l=n.onReady,s=n.config,c=n.onError;(0,a.getSDK)("https://fast.wistia.com/assets/external/E-v1.js","Wistia").then((function(e){s.customControls&amp;&amp;s.customControls.forEach((function(t){return e.defineControl(t)})),window._wq=window._wq||[],window._wq.push({id:t.playerID,options:u({autoPlay:r,silentAutoPlay:"allow",muted:o,controlsVisibleOnLoad:i,fullscreenButton:i,playbar:i,playbackRateControl:i,qualityControl:i,volumeControl:i,settingsControl:i,smallPlayButton:i},s.options),onReady:function(e){t.player=e,t.unbind(),t.player.bind("play",t.onPlay),t.player.bind("pause",t.onPause),t.player.bind("seek",t.onSeek),t.player.bind("end",t.onEnded),t.player.bind("playbackratechange",t.onPlaybackRateChange),l()}})}),c)}},{key:"unbind",value:function(){this.player.unbind("play",this.onPlay),this.player.unbind("pause",this.onPause),this.player.unbind("seek",this.onSeek),this.player.unbind("end",this.onEnded),this.player.unbind("playbackratechange",this.onPlaybackRateChange)}},{key:"play",value:function(){this.callPlayer("play")}},{key:"pause",value:function(){this.callPlayer("pause")}},{key:"stop",value:function(){this.unbind(),this.callPlayer("remove")}},{key:"seekTo",value:function(e){this.callPlayer("time",e)}},{key:"setVolume",value:function(e){this.callPlayer("volume",e)}},{key:"setPlaybackRate",value:function(e){this.callPlayer("playbackRate",e)}},{key:"getDuration",value:function(){return this.callPlayer("duration")}},{key:"getCurrentTime",value:function(){return this.callPlayer("time")}},{key:"getSecondsLoaded",value:function(){return null}},{key:"render",value:function(){var e=this.props.url,t=e&amp;&amp;e.match(i.MATCH_URL_WISTIA)[1],n="wistia_embed wistia_async_".concat(t);return o.default.createElement("div",{id:this.playerID,key:t,className:n,style:{width:"100%",height:"100%"}})}}],n&amp;&amp;f(t.prototype,n),g}(o.Component);t.default=g,y(g,"displayName","Wistia"),y(g,"canPlay",i.canPlay.wistia),y(g,"loopOnEnded",!0)},356:(e,t,n)=&gt;{"use strict";function r(e){return r="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},r(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==r(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},o=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&amp;&amp;(i.get||i.set)?Object.defineProperty(n,a,i):n[a]=e[a]}return n.default=e,t&amp;&amp;t.set(e,n),n}(n(7294)),a=n(8045),i=n(1776);function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&amp;&amp;(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;t&lt;arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){g(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"!=typeof Symbol&amp;&amp;Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&amp;&amp;(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?f(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 f(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function p(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function h(e,t){return h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},h(e,t)}function m(e,t){return!t||"object"!==r(t)&amp;&amp;"function"!=typeof t?y(e):t}function y(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function v(e){return v=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},v(e)}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b=/[?&amp;](?:list|channel)=([a-zA-Z0-9_-]+)/,w=/user\/([a-zA-Z0-9_-]+)\/?/,S=/youtube-nocookie\.com/,k=function(e){!function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;h(e,t)}(f,e);var t,n,r,l,s=(r=f,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=v(r);if(l){var n=v(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return m(this,e)});function f(){var e;d(this,f);for(var t=arguments.length,n=new Array(t),r=0;r&lt;t;r++)n[r]=arguments[r];return g(y(e=s.call.apply(s,[this].concat(n))),"callPlayer",a.callPlayer),g(y(e),"parsePlaylist",(function(t){return t instanceof Array?{listType:"playlist",playlist:t.map(e.getID).join(",")}:b.test(t)?{listType:"playlist",list:c(t.match(b),2)[1].replace(/^UC/,"UU")}:w.test(t)?{listType:"user_uploads",list:c(t.match(w),2)[1]}:{}})),g(y(e),"onStateChange",(function(t){var n=t.data,r=e.props,o=r.onPlay,a=r.onPause,i=r.onBuffer,l=r.onBufferEnd,s=r.onEnded,u=r.onReady,c=r.loop,f=r.config,d=f.playerVars,p=f.onUnstarted,h=window.YT.PlayerState,m=h.UNSTARTED,y=h.PLAYING,v=h.PAUSED,g=h.BUFFERING,b=h.ENDED,w=h.CUED;if(n===m&amp;&amp;p(),n===y&amp;&amp;(o(),l()),n===v&amp;&amp;a(),n===g&amp;&amp;i(),n===b){var S=!!e.callPlayer("getPlaylist");c&amp;&amp;!S&amp;&amp;(d.start?e.seekTo(d.start):e.play()),s()}n===w&amp;&amp;u()})),g(y(e),"mute",(function(){e.callPlayer("mute")})),g(y(e),"unmute",(function(){e.callPlayer("unMute")})),g(y(e),"ref",(function(t){e.container=t})),e}return t=f,(n=[{key:"componentDidMount",value:function(){this.props.onMount&amp;&amp;this.props.onMount(this)}},{key:"getID",value:function(e){return!e||e instanceof Array||b.test(e)?null:e.match(i.MATCH_URL_YOUTUBE)[1]}},{key:"load",value:function(e,t){var n=this,r=this.props,o=r.playing,i=r.muted,l=r.playsinline,s=r.controls,c=r.loop,f=r.config,d=r.onError,p=f.playerVars,h=f.embedOptions,m=this.getID(e);if(t)return b.test(e)||w.test(e)||e instanceof Array?void this.player.loadPlaylist(this.parsePlaylist(e)):void this.player.cueVideoById({videoId:m,startSeconds:(0,a.parseStartTime)(e)||p.start,endSeconds:(0,a.parseEndTime)(e)||p.end});(0,a.getSDK)("https://www.youtube.com/iframe_api","YT","onYouTubeIframeAPIReady",(function(e){return e.loaded})).then((function(t){n.container&amp;&amp;(n.player=new t.Player(n.container,u({width:"100%",height:"100%",videoId:m,playerVars:u(u({autoplay:o?1:0,mute:i?1:0,controls:s?1:0,start:(0,a.parseStartTime)(e),end:(0,a.parseEndTime)(e),origin:window.location.origin,playsinline:l?1:0},n.parsePlaylist(e)),p),events:{onReady:function(){c&amp;&amp;n.player.setLoop(!0),n.props.onReady()},onPlaybackRateChange:function(e){return n.props.onPlaybackRateChange(e.data)},onStateChange:n.onStateChange,onError:function(e){return d(e.data)}},host:S.test(e)?"https://www.youtube-nocookie.com":void 0},h)))}),d),h.events&amp;&amp;console.warn("Using `embedOptions.events` will likely break things. Use ReactPlayer‚Äôs callback props instead, eg onReady, onPlay, onPause")}},{key:"play",value:function(){this.callPlayer("playVideo")}},{key:"pause",value:function(){this.callPlayer("pauseVideo")}},{key:"stop",value:function(){document.body.contains(this.callPlayer("getIframe"))&amp;&amp;this.callPlayer("stopVideo")}},{key:"seekTo",value:function(e){this.callPlayer("seekTo",e),this.props.playing||this.pause()}},{key:"setVolume",value:function(e){this.callPlayer("setVolume",100*e)}},{key:"setPlaybackRate",value:function(e){this.callPlayer("setPlaybackRate",e)}},{key:"setLoop",value:function(e){this.callPlayer("setLoop",e)}},{key:"getDuration",value:function(){return this.callPlayer("getDuration")}},{key:"getCurrentTime",value:function(){return this.callPlayer("getCurrentTime")}},{key:"getSecondsLoaded",value:function(){return this.callPlayer("getVideoLoadedFraction")*this.getDuration()}},{key:"render",value:function(){var e={width:"100%",height:"100%",display:this.props.display};return o.default.createElement("div",{style:e},o.default.createElement("div",{ref:this.ref}))}}])&amp;&amp;p(t.prototype,n),f}(o.Component);t.default=k,g(k,"displayName","YouTube"),g(k,"canPlay",i.canPlay.youtube)},6497:(e,t,n)=&gt;{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(7294),o=n(8045),a=n(1776);function i(e){return i="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},i(e)}function l(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return l=function(){return e},e}function s(e){if(e&amp;&amp;e.__esModule)return e;if(null===e||"object"!==i(e)&amp;&amp;"function"!=typeof e)return{default:e};var t=l();if(t&amp;&amp;t.has(e))return t.get(e);var n={},r=Object.defineProperty&amp;&amp;Object.getOwnPropertyDescriptor;for(var o in e)if(Object.prototype.hasOwnProperty.call(e,o)){var a=r?Object.getOwnPropertyDescriptor(e,o):null;a&amp;&amp;(a.get||a.set)?Object.defineProperty(n,o,a):n[o]=e[o]}return n.default=e,t&amp;&amp;t.set(e,n),n}var u=[{key:"youtube",name:"YouTube",canPlay:a.canPlay.youtube,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(356))}))}))},{key:"soundcloud",name:"SoundCloud",canPlay:a.canPlay.soundcloud,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(2648))}))}))},{key:"vimeo",name:"Vimeo",canPlay:a.canPlay.vimeo,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(868))}))}))},{key:"facebook",name:"Facebook",canPlay:a.canPlay.facebook,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(1972))}))}))},{key:"streamable",name:"Streamable",canPlay:a.canPlay.streamable,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(993))}))}))},{key:"wistia",name:"Wistia",canPlay:a.canPlay.wistia,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(8018))}))}))},{key:"twitch",name:"Twitch",canPlay:a.canPlay.twitch,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(9482))}))}))},{key:"dailymotion",name:"DailyMotion",canPlay:a.canPlay.dailymotion,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(6807))}))}))},{key:"mixcloud",name:"Mixcloud",canPlay:a.canPlay.mixcloud,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(143))}))}))},{key:"vidyard",name:"Vidyard",canPlay:a.canPlay.vidyard,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(6596))}))}))},{key:"kaltura",name:"Kaltura",canPlay:a.canPlay.kaltura,lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(3911))}))}))},{key:"file",name:"FilePlayer",canPlay:a.canPlay.file,canEnablePIP:function(e){return a.canPlay.file(e)&amp;&amp;(document.pictureInPictureEnabled||(0,o.supportsWebKitPresentationMode)())&amp;&amp;!a.AUDIO_EXTENSIONS.test(e)},lazyPlayer:(0,r.lazy)((function(){return Promise.resolve().then((function(){return s(n(4926))}))}))}];t.default=u},5741:(e,t,n)=&gt;{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultProps=t.propTypes=void 0;var r,o=(r=n(5697))&amp;&amp;r.__esModule?r:{default:r},a=o.default.string,i=o.default.bool,l=o.default.number,s=o.default.array,u=o.default.oneOfType,c=o.default.shape,f=o.default.object,d=o.default.func,p=o.default.node,h={url:u([a,s,f]),playing:i,loop:i,controls:i,volume:l,muted:i,playbackRate:l,width:u([a,l]),height:u([a,l]),style:f,progressInterval:l,playsinline:i,pip:i,stopOnUnmount:i,light:u([i,a,f]),playIcon:p,previewTabIndex:l,fallback:p,oEmbedUrl:a,wrapper:u([a,d,c({render:d.isRequired})]),config:c({soundcloud:c({options:f}),youtube:c({playerVars:f,embedOptions:f,onUnstarted:d}),facebook:c({appId:a,version:a,playerId:a,attributes:f}),dailymotion:c({params:f}),vimeo:c({playerOptions:f,title:a}),file:c({attributes:f,tracks:s,forceVideo:i,forceAudio:i,forceHLS:i,forceDASH:i,forceFLV:i,hlsOptions:f,hlsVersion:a,dashVersion:a,flvVersion:a}),wistia:c({options:f,playerId:a,customControls:s}),mixcloud:c({options:f}),twitch:c({options:f,playerId:a}),vidyard:c({options:f})}),onReady:d,onStart:d,onPlay:d,onPause:d,onBuffer:d,onBufferEnd:d,onEnded:d,onError:d,onDuration:d,onSeek:d,onPlaybackRateChange:d,onProgress:d,onClickPreview:d,onEnablePIP:d,onDisablePIP:d};t.propTypes=h;var m=function(){},y={playing:!1,loop:!1,controls:!1,volume:null,muted:!1,playbackRate:1,width:"640px",height:"360px",style:{},progressInterval:1e3,playsinline:!1,pip:!1,stopOnUnmount:!0,light:!1,fallback:null,wrapper:"div",previewTabIndex:0,oEmbedUrl:"https://noembed.com/embed?url={url}",config:{soundcloud:{options:{visual:!0,buying:!1,liking:!1,download:!1,sharing:!1,show_comments:!1,show_playcount:!1}},youtube:{playerVars:{playsinline:1,showinfo:0,rel:0,iv_load_policy:3,modestbranding:1},embedOptions:{},onUnstarted:m},facebook:{appId:"1309697205772819",version:"v3.3",playerId:null,attributes:{}},dailymotion:{params:{api:1,"endscreen-enable":!1}},vimeo:{playerOptions:{autopause:!1,byline:!1,portrait:!1,title:!1},title:null},file:{attributes:{},tracks:[],forceVideo:!1,forceAudio:!1,forceHLS:!1,forceDASH:!1,forceFLV:!1,hlsOptions:{},hlsVersion:"1.1.4",dashVersion:"3.1.3",flvVersion:"1.5.0"},wistia:{options:{},playerId:null,customControls:null},mixcloud:{options:{hide_cover:1}},twitch:{options:{},playerId:null},vidyard:{options:{}}},onReady:m,onStart:m,onPlay:m,onPause:m,onBuffer:m,onBufferEnd:m,onEnded:m,onError:m,onDuration:m,onSeek:m,onPlaybackRateChange:m,onProgress:m,onClickPreview:m,onEnablePIP:m,onDisablePIP:m};t.defaultProps=y},8045:(e,t,n)=&gt;{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseStartTime=function(e){return f(e,l)},t.parseEndTime=function(e){return f(e,s)},t.randomString=function(){return Math.random().toString(36).substr(2,5)},t.queryString=function(e){return Object.keys(e).map((function(t){return"".concat(t,"=").concat(e[t])})).join("&amp;")},t.getSDK=function(e,t){var n=arguments.length&gt;2&amp;&amp;void 0!==arguments[2]?arguments[2]:null,o=arguments.length&gt;3&amp;&amp;void 0!==arguments[3]?arguments[3]:function(){return!0},a=arguments.length&gt;4&amp;&amp;void 0!==arguments[4]?arguments[4]:r.default,i=d(t);return i&amp;&amp;o(i)?Promise.resolve(i):new Promise((function(r,o){if(p[e])p[e].push({resolve:r,reject:o});else{p[e]=[{resolve:r,reject:o}];var i=function(t){p[e].forEach((function(e){return e.resolve(t)}))};if(n){var l=window[n];window[n]=function(){l&amp;&amp;l(),i(d(t))}}a(e,(function(r){r?(p[e].forEach((function(e){return e.reject(r)})),p[e]=null):n||i(d(t))}))}}))},t.getConfig=function(e,t){return(0,o.default)(t.config,e.config)},t.omit=function(e){for(var t,n=arguments.length,r=new Array(n&gt;1?n-1:0),o=1;o&lt;n;o++)r[o-1]=arguments[o];for(var a=(t=[]).concat.apply(t,r),i={},l=Object.keys(e),s=0,u=l;s&lt;u.length;s++){var c=u[s];-1===a.indexOf(c)&amp;&amp;(i[c]=e[c])}return i},t.callPlayer=function(e){var t;if(!this.player||!this.player[e]){var n="ReactPlayer: ".concat(this.constructor.displayName," player could not call %c").concat(e,"%c ‚Äì ");return this.player?this.player[e]||(n+="The method was not available"):n+="The player was not available",console.warn(n,"font-weight: bold",""),null}for(var r=arguments.length,o=new Array(r&gt;1?r-1:0),a=1;a&lt;r;a++)o[a-1]=arguments[a];return(t=this.player)[e].apply(t,o)},t.isMediaStream=function(e){return"undefined"!=typeof window&amp;&amp;void 0!==window.MediaStream&amp;&amp;e instanceof window.MediaStream},t.isBlobUrl=function(e){return/^blob:/.test(e)},t.supportsWebKitPresentationMode=function(){var e=arguments.length&gt;0&amp;&amp;void 0!==arguments[0]?arguments[0]:document.createElement("video"),t=!1===/iPhone|iPod/.test(navigator.userAgent);return e.webkitSupportsPresentationMode&amp;&amp;"function"==typeof e.webkitSetPresentationMode&amp;&amp;t};var r=a(n(9090)),o=a(n(9996));function a(e){return e&amp;&amp;e.__esModule?e:{default:e}}function i(e,t){(null==t||t&gt;e.length)&amp;&amp;(t=e.length);for(var n=0,r=new Array(t);n&lt;t;n++)r[n]=e[n];return r}var l=/[?&amp;#](?:start|t)=([0-9hms]+)/,s=/[?&amp;#]end=([0-9hms]+)/,u=/(\d+)(h|m|s)/g,c=/^\d+$/;function f(e,t){if(!(e instanceof Array)){var n=e.match(t);if(n){var r=n[1];if(r.match(u))return function(e){for(var t,n,r=0,o=u.exec(e);null!==o;){var a=(n=3,function(e){if(Array.isArray(e))return e}(t=o)||function(e,t){if("undefined"!=typeof Symbol&amp;&amp;Symbol.iterator in Object(e)){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=e[Symbol.iterator]();!(r=(i=l.next()).done)&amp;&amp;(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{r||null==l.return||l.return()}finally{if(o)throw a}}return n}}(t,n)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&amp;&amp;e.constructor&amp;&amp;(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?i(e,t):void 0}}(t,n)||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.")}()),l=a[1],s=a[2];"h"===s&amp;&amp;(r+=60*parseInt(l,10)*60),"m"===s&amp;&amp;(r+=60*parseInt(l,10)),"s"===s&amp;&amp;(r+=parseInt(l,10)),o=u.exec(e)}return r}(r);if(c.test(r))return parseInt(r)}}}function d(e){return window[e]?window[e]:window.exports&amp;&amp;window.exports[e]?window.exports[e]:window.module&amp;&amp;window.module.exports&amp;&amp;window.module.exports[e]?window.module.exports[e]:null}var p={}},3082:function(e,t,n){var r;r=function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&amp;t&amp;&amp;(e=n(e)),8&amp;t)return e;if(4&amp;t&amp;&amp;"object"==typeof e&amp;&amp;e&amp;&amp;e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&amp;t&amp;&amp;"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&amp;&amp;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=4)}([function(e,t,n){e.exports=n(5)()},function(t,n){t.exports=e},function(e,n){e.exports=t},function(e,t){e.exports=function(e,t,n){var r=e.direction,o=e.value;switch(r){case"top":return n.top+o&lt;t.top&amp;&amp;n.bottom&gt;t.bottom&amp;&amp;n.left&lt;t.left&amp;&amp;n.right&gt;t.right;case"left":return n.left+o&lt;t.left&amp;&amp;n.bottom&gt;t.bottom&amp;&amp;n.top&lt;t.top&amp;&amp;n.right&gt;t.right;case"bottom":return n.bottom-o&gt;t.bottom&amp;&amp;n.left&lt;t.left&amp;&amp;n.right&gt;t.right&amp;&amp;n.top&lt;t.top;case"right":return n.right-o&gt;t.right&amp;&amp;n.left&lt;t.left&amp;&amp;n.top&lt;t.top&amp;&amp;n.bottom&gt;t.bottom}}},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return v}));var r=n(1),o=n.n(r),a=n(2),i=n.n(a),l=n(0),s=n.n(l),u=n(3),c=n.n(u);function f(e){return f="function"==typeof Symbol&amp;&amp;"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&amp;&amp;"function"==typeof Symbol&amp;&amp;e.constructor===Symbol&amp;&amp;e!==Symbol.prototype?"symbol":typeof e},f(e)}function d(e,t){for(var n=0;n&lt;t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&amp;&amp;(r.writable=!0),Object.defineProperty(e,r.key,r)}}function p(e){return p=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},p(e)}function h(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function m(e,t){return m=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},m(e,t)}function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=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=function(e,t){return!t||"object"!==f(t)&amp;&amp;"function"!=typeof t?h(e):t}(this,p(t).call(this,e)),y(h(n),"getContainer",(function(){return n.props.containment||window})),y(h(n),"addEventListener",(function(e,t,r,o){var a;n.debounceCheck||(n.debounceCheck={});var i=function(){a=null,n.check()},l={target:e,fn:o&gt;-1?function(){a||(a=setTimeout(i,o||0))}:function(){clearTimeout(a),a=setTimeout(i,r||0)},getLastTimeout:function(){return a}};e.addEventListener(t,l.fn),n.debounceCheck[t]=l})),y(h(n),"startWatching",(function(){n.debounceCheck||n.interval||(n.props.intervalCheck&amp;&amp;(n.interval=setInterval(n.check,n.props.intervalDelay)),n.props.scrollCheck&amp;&amp;n.addEventListener(n.getContainer(),"scroll",n.props.scrollDelay,n.props.scrollThrottle),n.props.resizeCheck&amp;&amp;n.addEventListener(window,"resize",n.props.resizeDelay,n.props.resizeThrottle),!n.props.delayedCall&amp;&amp;n.check())})),y(h(n),"stopWatching",(function(){if(n.debounceCheck)for(var e in n.debounceCheck)if(n.debounceCheck.hasOwnProperty(e)){var t=n.debounceCheck[e];clearTimeout(t.getLastTimeout()),t.target.removeEventListener(e,t.fn),n.debounceCheck[e]=null}n.debounceCheck=null,n.interval&amp;&amp;(n.interval=clearInterval(n.interval))})),y(h(n),"check",(function(){var e,t,r=n.node;if(!r)return n.state;if(e=function(e){return void 0===e.width&amp;&amp;(e.width=e.right-e.left),void 0===e.height&amp;&amp;(e.height=e.bottom-e.top),e}(n.roundRectDown(r.getBoundingClientRect())),n.props.containment){var o=n.props.containment.getBoundingClientRect();t={top:o.top,left:o.left,bottom:o.bottom,right:o.right}}else t={top:0,left:0,bottom:window.innerHeight||document.documentElement.clientHeight,right:window.innerWidth||document.documentElement.clientWidth};var a=n.props.offset||{};"object"===f(a)&amp;&amp;(t.top+=a.top||0,t.left+=a.left||0,t.bottom-=a.bottom||0,t.right-=a.right||0);var i={top:e.top&gt;=t.top,left:e.left&gt;=t.left,bottom:e.bottom&lt;=t.bottom,right:e.right&lt;=t.right},l=e.height&gt;0&amp;&amp;e.width&gt;0,s=l&amp;&amp;i.top&amp;&amp;i.left&amp;&amp;i.bottom&amp;&amp;i.right;if(l&amp;&amp;n.props.partialVisibility){var u=e.top&lt;=t.bottom&amp;&amp;e.bottom&gt;=t.top&amp;&amp;e.left&lt;=t.right&amp;&amp;e.right&gt;=t.left;"string"==typeof n.props.partialVisibility&amp;&amp;(u=i[n.props.partialVisibility]),s=n.props.minTopValue?u&amp;&amp;e.top&lt;=t.bottom-n.props.minTopValue:u}"string"==typeof a.direction&amp;&amp;"number"==typeof a.value&amp;&amp;(console.warn("[notice] offset.direction and offset.value have been deprecated. They still work for now, but will be removed in next major version. Please upgrade to the new syntax: { %s: %d }",a.direction,a.value),s=c()(a,e,t));var d=n.state;return n.state.isVisible!==s&amp;&amp;(d={isVisible:s,visibilityRect:i},n.setState(d),n.props.onChange&amp;&amp;n.props.onChange(s)),d})),n.state={isVisible:null,visibilityRect:{}},n}var n,r;return function(e,t){if("function"!=typeof t&amp;&amp;null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&amp;&amp;t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&amp;&amp;m(e,t)}(t,e),n=t,(r=[{key:"componentDidMount",value:function(){this.node=i.a.findDOMNode(this),this.props.active&amp;&amp;this.startWatching()}},{key:"componentWillUnmount",value:function(){this.stopWatching()}},{key:"componentDidUpdate",value:function(e){this.node=i.a.findDOMNode(this),this.props.active&amp;&amp;!e.active?(this.setState({isVisible:null,visibilityRect:{}}),this.startWatching()):this.props.active||this.stopWatching()}},{key:"roundRectDown",value:function(e){return{top:Math.floor(e.top),left:Math.floor(e.left),bottom:Math.floor(e.bottom),right:Math.floor(e.right)}}},{key:"render",value:function(){return this.props.children instanceof Function?this.props.children({isVisible:this.state.isVisible,visibilityRect:this.state.visibilityRect}):o.a.Children.only(this.props.children)}}])&amp;&amp;d(n.prototype,r),t}(o.a.Component);y(v,"defaultProps",{active:!0,partialVisibility:!1,minTopValue:0,scrollCheck:!1,scrollDelay:250,scrollThrottle:-1,resizeCheck:!1,resizeDelay:250,resizeThrottle:-1,intervalCheck:!0,intervalDelay:100,delayedCall:!1,offset:{},containment:null,children:o.a.createElement("span",null)}),y(v,"propTypes",{onChange:s.a.func,active:s.a.bool,partialVisibility:s.a.oneOfType([s.a.bool,s.a.oneOf(["top","right","bottom","left"])]),delayedCall:s.a.bool,offset:s.a.oneOfType([s.a.shape({top:s.a.number,left:s.a.number,bottom:s.a.number,right:s.a.number}),s.a.shape({direction:s.a.oneOf(["top","right","bottom","left"]),value:s.a.number})]),scrollCheck:s.a.bool,scrollDelay:s.a.number,scrollThrottle:s.a.number,resizeCheck:s.a.bool,resizeDelay:s.a.number,resizeThrottle:s.a.number,intervalCheck:s.a.bool,intervalDelay:s.a.number,containment:"undefined"!=typeof window?s.a.instanceOf(window.Element):s.a.any,children:s.a.oneOfType([s.a.element,s.a.func]),minTopValue:s.a.number})},function(e,t,n){"use strict";var r=n(6);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==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,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:a,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"}])},e.exports=r(n(7294),n(3935))},5058:(e,t)=&gt;{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.server_context"),c=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy");Symbol.for("react.offscreen");Symbol.for("react.module.reference"),t.isForwardRef=function(e){return function(e){if("object"==typeof e&amp;&amp;null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case o:case i:case a:case f:case d:return e;default:switch(e=e&amp;&amp;e.$$typeof){case u:case s:case c:case h:case p:case l:return e;default:return t}}case r:return t}}}(e)===c}},5834:(e,t,n)=&gt;{"use strict";e.exports=n(5058)},5251:(e,t,n)=&gt;{"use strict";var r=n(7294),o=Symbol.for("react.element"),a=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,n){var r,s={},u=null,c=null;for(r in void 0!==n&amp;&amp;(u=""+n),void 0!==t.key&amp;&amp;(u=""+t.key),void 0!==t.ref&amp;&amp;(c=t.ref),t)a.call(t,r)&amp;&amp;!l.hasOwnProperty(r)&amp;&amp;(s[r]=t[r]);if(e&amp;&amp;e.defaultProps)for(r in t=e.defaultProps)void 0===s[r]&amp;&amp;(s[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:s,_owner:i.current}}t.jsx=s,t.jsxs=s},2408:(e,t)=&gt;{"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),l=Symbol.for("react.provider"),s=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),f=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),p=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,y={};function v(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}function g(){}function b(e,t,n){this.props=e,this.context=t,this.refs=y,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&amp;&amp;"function"!=typeof e&amp;&amp;null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=v.prototype;var w=b.prototype=new g;w.constructor=b,m(w,v.prototype),w.isPureReactComponent=!0;var S=Array.isArray,k=Object.prototype.hasOwnProperty,x={current:null},E={key:!0,ref:!0,__self:!0,__source:!0};function P(e,t,r){var o,a={},i=null,l=null;if(null!=t)for(o in void 0!==t.ref&amp;&amp;(l=t.ref),void 0!==t.key&amp;&amp;(i=""+t.key),t)k.call(t,o)&amp;&amp;!E.hasOwnProperty(o)&amp;&amp;(a[o]=t[o]);var s=arguments.length-2;if(1===s)a.children=r;else if(1&lt;s){for(var u=Array(s),c=0;c&lt;s;c++)u[c]=arguments[c+2];a.children=u}if(e&amp;&amp;e.defaultProps)for(o in s=e.defaultProps)void 0===a[o]&amp;&amp;(a[o]=s[o]);return{$$typeof:n,type:e,key:i,ref:l,props:a,_owner:x.current}}function C(e){return"object"==typeof e&amp;&amp;null!==e&amp;&amp;e.$$typeof===n}var O=/\/+/g;function T(e,t){return"object"==typeof e&amp;&amp;null!==e&amp;&amp;null!=e.key?function(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,(function(e){return t[e]}))}(""+e.key):t.toString(36)}function _(e,t,o,a,i){var l=typeof e;"undefined"!==l&amp;&amp;"boolean"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case n:case r:s=!0}}if(s)return i=i(s=e),e=""===a?"."+T(s,0):a,S(i)?(o="",null!=e&amp;&amp;(o=e.replace(O,"$&amp;/")+"/"),_(i,t,o,"",(function(e){return e}))):null!=i&amp;&amp;(C(i)&amp;&amp;(i=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(i,o+(!i.key||s&amp;&amp;s.key===i.key?"":(""+i.key).replace(O,"$&amp;/")+"/")+e)),t.push(i)),1;if(s=0,a=""===a?".":a+":",S(e))for(var u=0;u&lt;e.length;u++){var c=a+T(l=e[u],u);s+=_(l,t,o,c,i)}else if(c=function(e){return null===e||"object"!=typeof e?null:"function"==typeof(e=p&amp;&amp;e[p]||e["@@iterator"])?e:null}(e),"function"==typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=_(l=l.value,t,o,c=a+T(l,u++),i);else if("object"===l)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function L(e,t,n){if(null==e)return e;var r=[],o=0;return _(e,r,"","",(function(e){return t.call(n,e,o++)})),r}function j(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&amp;&amp;-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&amp;&amp;-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&amp;&amp;(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var N={current:null},M={transition:null},R={ReactCurrentDispatcher:N,ReactCurrentBatchConfig:M,ReactCurrentOwner:x};t.Children={map:L,forEach:function(e,t,n){L(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return L(e,(function(){t++})),t},toArray:function(e){return L(e,(function(e){return e}))||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},t.Component=v,t.Fragment=o,t.Profiler=i,t.PureComponent=b,t.StrictMode=a,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=R,t.cloneElement=function(e,t,r){if(null==e)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var o=m({},e.props),a=e.key,i=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&amp;&amp;(i=t.ref,l=x.current),void 0!==t.key&amp;&amp;(a=""+t.key),e.type&amp;&amp;e.type.defaultProps)var s=e.type.defaultProps;for(u in t)k.call(t,u)&amp;&amp;!E.hasOwnProperty(u)&amp;&amp;(o[u]=void 0===t[u]&amp;&amp;void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=r;else if(1&lt;u){s=Array(u);for(var c=0;c&lt;u;c++)s[c]=arguments[c+2];o.children=s}return{$$typeof:n,type:e.type,key:a,ref:i,props:o,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=P,t.createFactory=function(e){var t=P.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:j}},t.memo=function(e,t){return{$$typeof:f,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=M.transition;M.transition={};try{e()}finally{M.transition=t}},t.unstable_act=function(){throw Error("act(...) is not supported in production builds of React.")},t.useCallback=function(e,t){return N.current.useCallback(e,t)},t.useContext=function(e){return N.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return N.current.useDeferredValue(e)},t.useEffect=function(e,t){return N.current.useEffect(e,t)},t.useId=function(){return N.current.useId()},t.useImperativeHandle=function(e,t,n){return N.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return N.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return N.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return N.current.useMemo(e,t)},t.useReducer=function(e,t,n){return N.current.useReducer(e,t,n)},t.useRef=function(e){return N.current.useRef(e)},t.useState=function(e){return N.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return N.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return N.current.useTransition()},t.version="18.2.0"},7294:(e,t,n)=&gt;{"use strict";e.exports=n(2408)},5893:(e,t,n)=&gt;{"use strict";e.exports=n(5251)},53:(e,t)=&gt;{"use strict";function n(e,t){var n=e.length;e.push(t);e:for(;0&lt;n;){var r=n-1&gt;&gt;&gt;1,o=e[r];if(!(0&lt;a(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,i=o&gt;&gt;&gt;1;r&lt;i;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0&gt;a(s,n))u&lt;o&amp;&amp;0&gt;a(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u&lt;o&amp;&amp;0&gt;a(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if("object"==typeof performance&amp;&amp;"function"==typeof performance.now){var i=performance;t.unstable_now=function(){return i.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],f=1,d=null,p=3,h=!1,m=!1,y=!1,v="function"==typeof setTimeout?setTimeout:null,g="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)o(c);else{if(!(t.startTime&lt;=e))break;o(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function S(e){if(y=!1,w(e),!m)if(null!==r(u))m=!0,M(k);else{var t=r(c);null!==t&amp;&amp;R(S,t.startTime-e)}}function k(e,n){m=!1,y&amp;&amp;(y=!1,g(C),C=-1),h=!0;var a=p;try{for(w(n),d=r(u);null!==d&amp;&amp;(!(d.expirationTime&gt;n)||e&amp;&amp;!_());){var i=d.callback;if("function"==typeof i){d.callback=null,p=d.priorityLevel;var l=i(d.expirationTime&lt;=n);n=t.unstable_now(),"function"==typeof l?d.callback=l:d===r(u)&amp;&amp;o(u),w(n)}else o(u);d=r(u)}if(null!==d)var s=!0;else{var f=r(c);null!==f&amp;&amp;R(S,f.startTime-n),s=!1}return s}finally{d=null,p=a,h=!1}}"undefined"!=typeof navigator&amp;&amp;void 0!==navigator.scheduling&amp;&amp;void 0!==navigator.scheduling.isInputPending&amp;&amp;navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,E=!1,P=null,C=-1,O=5,T=-1;function _(){return!(t.unstable_now()-T&lt;O)}function L(){if(null!==P){var e=t.unstable_now();T=e;var n=!0;try{n=P(!0,e)}finally{n?x():(E=!1,P=null)}}else E=!1}if("function"==typeof b)x=function(){b(L)};else if("undefined"!=typeof MessageChannel){var j=new MessageChannel,N=j.port2;j.port1.onmessage=L,x=function(){N.postMessage(null)}}else x=function(){v(L,0)};function M(e){P=e,E||(E=!0,x())}function R(e,n){C=v((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||h||(m=!0,M(k))},t.unstable_forceFrameRate=function(e){0&gt;e||125&lt;e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):O=0&lt;e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return p},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(p){case 1:case 2:case 3:var t=3;break;default:t=p}var n=p;p=t;try{return e()}finally{p=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=p;p=e;try{return t()}finally{p=n}},t.unstable_scheduleCallback=function(e,o,a){var i=t.unstable_now();switch(a="object"==typeof a&amp;&amp;null!==a&amp;&amp;"number"==typeof(a=a.delay)&amp;&amp;0&lt;a?i+a:i,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:f++,callback:o,priorityLevel:e,startTime:a,expirationTime:l=a+l,sortIndex:-1},a&gt;i?(e.sortIndex=a,n(c,e),null===r(u)&amp;&amp;e===r(c)&amp;&amp;(y?(g(C),C=-1):y=!0,R(S,a-i))):(e.sortIndex=l,n(u,e),m||h||(m=!0,M(k))),e},t.unstable_shouldYield=_,t.unstable_wrapCallback=function(e){var t=p;return function(){var n=p;p=t;try{return e.apply(this,arguments)}finally{p=n}}}},3840:(e,t,n)=&gt;{"use strict";e.exports=n(53)},6774:e=&gt;{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 a=Object.keys(e),i=Object.keys(t);if(a.length!==i.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s&lt;a.length;s++){var u=a[s];if(!l(u))return!1;var c=e[u],f=t[u];if(!1===(o=n?n.call(r,c,f,u):void 0)||void 0===o&amp;&amp;c!==f)return!1}return!0}},342:(e,t,n)=&gt;{"use strict";n.r(t),n.d(t,{default:()=&gt;l});var r=n(3379),o=n.n(r),a=n(6635),i=n.n(a);o()(i(),{insert:"head",singleton:!1});const l=i().locals||{}},3379:(e,t,n)=&gt;{"use strict";var r,o=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&amp;&amp;n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),a=[];function i(e){for(var t=-1,n=0;n&lt;a.length;n++)if(a[n].identifier===e){t=n;break}return t}function l(e,t){for(var n={},r=[],o=0;o&lt;e.length;o++){var l=e[o],s=t.base?l[0]+t.base:l[0],u=n[s]||0,c="".concat(s," ").concat(u);n[s]=u+1;var f=i(c),d={css:l[1],media:l[2],sourceMap:l[3]};-1!==f?(a[f].references++,a[f].updater(d)):a.push({identifier:c,updater:m(d,t),references:1}),r.push(c)}return r}function s(e){var t=document.createElement("style"),r=e.attributes||{};if(void 0===r.nonce){var a=n.nc;a&amp;&amp;(r.nonce=a)}if(Object.keys(r).forEach((function(e){t.setAttribute(e,r[e])})),"function"==typeof e.insert)e.insert(t);else{var i=o(e.insert||"head");if(!i)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");i.appendChild(t)}return t}var u,c=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function f(e,t,n,r){var o=n?"":r.media?"@media ".concat(r.media," {").concat(r.css,"}"):r.css;if(e.styleSheet)e.styleSheet.cssText=c(t,o);else{var a=document.createTextNode(o),i=e.childNodes;i[t]&amp;&amp;e.removeChild(i[t]),i.length?e.insertBefore(a,i[t]):e.appendChild(a)}}function d(e,t,n){var r=n.css,o=n.media,a=n.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&amp;&amp;"undefined"!=typeof btoa&amp;&amp;(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=r;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(r))}}var p=null,h=0;function m(e,t){var n,r,o;if(t.singleton){var a=h++;n=p||(p=s(t)),r=f.bind(null,n,a,!1),o=f.bind(null,n,a,!0)}else n=s(t),r=d.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return r(e),function(t){if(t){if(t.css===e.css&amp;&amp;t.media===e.media&amp;&amp;t.sourceMap===e.sourceMap)return;r(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=(void 0===r&amp;&amp;(r=Boolean(window&amp;&amp;document&amp;&amp;document.all&amp;&amp;!window.atob)),r));var n=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var r=0;r&lt;n.length;r++){var o=i(n[r]);a[o].references--}for(var s=l(e,t),u=0;u&lt;n.length;u++){var c=i(n[u]);0===a[c].references&amp;&amp;(a[c].updater(),a.splice(c,1))}n=s}}}}},r={};function o(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return n[e].call(a.exports,a,a.exports,o),a.exports}o.n=e=&gt;{var t=e&amp;&amp;e.__esModule?()=&gt;e.default:()=&gt;e;return o.d(t,{a:t}),t},t=Object.getPrototypeOf?e=&gt;Object.getPrototypeOf(e):e=&gt;e.__proto__,o.t=function(n,r){if(1&amp;r&amp;&amp;(n=this(n)),8&amp;r)return n;if("object"==typeof n&amp;&amp;n){if(4&amp;r&amp;&amp;n.__esModule)return n;if(16&amp;r&amp;&amp;"function"==typeof n.then)return n}var a=Object.create(null);o.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var l=2&amp;r&amp;&amp;n;"object"==typeof l&amp;&amp;!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((e=&gt;i[e]=()=&gt;n[e]));return i.default=()=&gt;n,o.d(a,i),a},o.d=(e,t)=&gt;{for(var n in t)o.o(t,n)&amp;&amp;!o.o(e,n)&amp;&amp;Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,t)=&gt;Object.prototype.hasOwnProperty.call(e,t),o.r=e=&gt;{"undefined"!=typeof Symbol&amp;&amp;Symbol.toStringTag&amp;&amp;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0,o(342),o(9588),o(2695),o(6513),o(1710),o(5223),o(540),o(8930),o(4843),o(8582),o(5475),o(2031),o(3756),o(2845),o(4216),o(1794)})();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLElBQUssRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLElBQUssRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUlBLEdBQWEsRUFBRyxFQUFHLElBQUssRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxH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QU8rRixlQUFlb3JFLEVBQVNuNkUsRUFBSyxDQUFFa08sWUFBWSxFQUFNSixJQUFLaWpELEVBQVcvd0QsSUFFMUUsRUNORHdnSSxFQUFvQmo2RixFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmcS9GLFdBQXlCLE9BQU9BLFdBQzNDLElBQ0MsT0FBT3JrSSxNQUFRLElBQUk2TCxTQUFTLGNBQWIsRUFHaEIsQ0FGRSxNQUFPak8sR0FDUixHQUFzQixpQkFBWDRDLE9BQXFCLE9BQU9BLE1BQ3hDLENBQ0EsQ0FQdUIsR0NBeEJ5K0gsRUFBb0J6MEgsRUFBSSxDQUFDakQsRUFBSzBqQyxJQUFVeGpDLE9BQU8wRCxVQUFVNlEsZUFBZTNRLEtBQUs5RCxFQUFLMGpDLEdDQ2xGZzBGLEVBQW9CaDFGLEVBQUsydUMsSUFDSCxvQkFBWDM5RSxRQUEwQkEsT0FBTytpSCxhQUMxQ3YyRyxPQUFPK0YsZUFBZW9yRSxFQUFTMzlFLE9BQU8raUgsWUFBYSxDQUFFMzNHLE1BQU8sV0FFN0RvQixPQUFPK0YsZUFBZW9yRSxFQUFTLGFBQWMsQ0FBRXZ5RSxPQUFPLEdBQU8sRUNMOUQ0NEgsRUFBb0JxRixRQUFLcDRILEVDQXpCcTRILEVBQVEsS0FFUkEsRUFBUSxNQUVSQSxFQUFRLE1BQ1JBLEVBQVEsTUFDUkEsRUFBUSxNQUNSQSxFQUFRLE1BQ1JBLEVBQVEsS0FDUkEsRUFBUSxNQUNSQSxFQUFRLE1BRVJBLEVBQVEsTUFDUkEsRUFBUSxNQUNSQSxFQUFRLE1BQ1JBLEVBQVEsTUFDUkEsRUFBUSxNQUNSQSxFQUFRLE1BQ1JBLEVBQVEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL2NyZWF0ZSBmYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9DYXJ0QmFubmVyL2luZGV4LmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL01hdGVyaWFsQWRkVG9DYXJ0L2luZGV4LmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL01hdGVyaWFsc1BhZ2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9hZHZhbmNlZEhpZ2hsaWdodC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL2VxdWFsV2lkdGguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9ldmVudGJ1cy5qc3giLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9mb3Jtcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL2Z1bGxXaWR0aEhpZ2hsaWdodEJsb2NrLmpzIiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvcGFnZUhlYWRlclV0aWxpdGllcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3NyLXdpbmRvdy9zc3Itd2luZG93LmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvZG9tNy9kb203LmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS91dGlscy9kb20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vdXRpbHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vdXRpbHMvZ2V0LXN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vdXRpbHMvZ2V0LWRldmljZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS91dGlscy9nZXQtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9tb2R1bGVzL3Jlc2l6ZS9yZXNpemUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vbW9kdWxlcy9vYnNlcnZlci9vYnNlcnZlci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvZXZlbnRzLWVtaXR0ZXIuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3VwZGF0ZS9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdXBkYXRlL3VwZGF0ZVNpemUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3VwZGF0ZS91cGRhdGVTbGlkZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3VwZGF0ZS91cGRhdGVBdXRvSGVpZ2h0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS91cGRhdGUvdXBkYXRlU2xpZGVzT2Zmc2V0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS91cGRhdGUvdXBkYXRlU2xpZGVzUHJvZ3Jlc3MuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3VwZGF0ZS91cGRhdGVQcm9ncmVzcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdXBkYXRlL3VwZGF0ZVNsaWRlc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3VwZGF0ZS91cGRhdGVBY3RpdmVJbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdXBkYXRlL3VwZGF0ZUNsaWNrZWRTbGlkZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvc2xpZGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3NsaWRlL3NsaWRlVG8uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3NsaWRlL3NsaWRlVG9Mb29wLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9zbGlkZS9zbGlkZU5leHQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3NsaWRlL3NsaWRlUHJldi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvc2xpZGUvc2xpZGVSZXNldC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvc2xpZGUvc2xpZGVUb0Nsb3Nlc3QuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3NsaWRlL3NsaWRlVG9DbGlja2VkU2xpZGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2xvb3AvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2xvb3AvbG9vcENyZWF0ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvbG9vcC9sb29wRml4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9sb29wL2xvb3BEZXN0cm95LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9ldmVudHMvb25Ub3VjaFN0YXJ0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9ldmVudHMvb25Ub3VjaE1vdmUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2V2ZW50cy9vblRvdWNoRW5kLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9ldmVudHMvb25SZXNpemUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2V2ZW50cy9vbkNsaWNrLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9ldmVudHMvb25TY3JvbGwuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2V2ZW50cy9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvY2xhc3Nlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvY2xhc3Nlcy9hZGRDbGFzc2VzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9jbGFzc2VzL3JlbW92ZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2RlZmF1bHRzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9jb3JlLWNsYXNzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9tb2R1bGFyLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS90cmFuc2xhdGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3RyYW5zbGF0ZS9nZXRUcmFuc2xhdGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3RyYW5zbGF0ZS9zZXRUcmFuc2xhdGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3RyYW5zbGF0ZS9taW5UcmFuc2xhdGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3RyYW5zbGF0ZS9tYXhUcmFuc2xhdGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL3RyYW5zbGF0ZS90cmFuc2xhdGVUby5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdHJhbnNpdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdHJhbnNpdGlvbi9zZXRUcmFuc2l0aW9uLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS90cmFuc2l0aW9uL3RyYW5zaXRpb25TdGFydC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvdHJhbnNpdGlvbi90cmFuc2l0aW9uRW5kLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9ncmFiLWN1cnNvci9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvZ3JhYi1jdXJzb3Ivc2V0R3JhYkN1cnNvci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvZ3JhYi1jdXJzb3IvdW5zZXRHcmFiQ3Vyc29yLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9tYW5pcHVsYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL21hbmlwdWxhdGlvbi9hcHBlbmRTbGlkZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvbWFuaXB1bGF0aW9uL3ByZXBlbmRTbGlkZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvbWFuaXB1bGF0aW9uL2FkZFNsaWRlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9tYW5pcHVsYXRpb24vcmVtb3ZlU2xpZGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL21hbmlwdWxhdGlvbi9yZW1vdmVBbGxTbGlkZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N3aXBlci9lc20vY29tcG9uZW50cy9jb3JlL2JyZWFrcG9pbnRzL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9icmVha3BvaW50cy9zZXRCcmVha3BvaW50LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9icmVha3BvaW50cy9nZXRCcmVha3BvaW50LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9jaGVjay1vdmVyZmxvdy9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL2NvcmUvaW1hZ2VzL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9pbWFnZXMvbG9hZEltYWdlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zd2lwZXIvZXNtL2NvbXBvbmVudHMvY29yZS9pbWFnZXMvcHJlbG9hZEltYWdlcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL2VzbS9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3dpcGVyL3N3aXBlci5taW4uY3NzPzM3YjkiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9yZWxhdGVkQXJ0aWNsZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy90ZXh0Q29udGVudC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL0ltYWdlL2luZGV4LmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL2NvbnNvbGlkYXRlZC1ldmVudHMvbGliL2luZGV4LmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3Qtd2F5cG9pbnQvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9OZXdzcm9vbS9maWx0ZXJzLmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL05ld3Nyb29tL2FydGljbGUuanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvTmV3c3Jvb20vaW5kZXguanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvU2VhcmNoL2luZGV4LmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvY2xzeC9kaXN0L2Nsc3gubWpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9jb21wb3NlQ2xhc3Nlcy9jb21wb3NlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vbWVtb2l6ZS9kaXN0L2Vtb3Rpb24tbWVtb2l6ZS5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL2lzLXByb3AtdmFsaWQvZGlzdC9lbW90aW9uLWlzLXByb3AtdmFsaWQuZXNtLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2hlZXQvZGlzdC9lbW90aW9uLXNoZWV0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL1V0aWxpdHkuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvVG9rZW5pemVyLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zdHlsaXMvc3JjL0VudW0uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvU2VyaWFsaXplci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc3R5bGlzL3NyYy9QYXJzZXIuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L25vZGVfbW9kdWxlcy9AZW1vdGlvbi9jYWNoZS9kaXN0L2Vtb3Rpb24tY2FjaGUuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N0eWxpcy9zcmMvTWlkZGxld2FyZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vaGFzaC9kaXN0L2Vtb3Rpb24taGFzaC5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3JlYWN0L25vZGVfbW9kdWxlcy9AZW1vdGlvbi91bml0bGVzcy9kaXN0L2Vtb3Rpb24tdW5pdGxlc3MuZXNtLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9yZWFjdC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2VyaWFsaXplL2Rpc3QvZW1vdGlvbi1zZXJpYWxpemUuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzL2Rpc3QvZW1vdGlvbi11c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcy5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3N0eWxlZC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vdXRpbHMvZGlzdC9lbW90aW9uLXV0aWxzLmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AZW1vdGlvbi9zdHlsZWQvbm9kZV9tb2R1bGVzL0BlbW90aW9uL3VuaXRsZXNzL2Rpc3QvZW1vdGlvbi11bml0bGVzcy5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3N0eWxlZC9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc2VyaWFsaXplL2Rpc3QvZW1vdGlvbi1zZXJpYWxpemUuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BlbW90aW9uL3N0eWxlZC9iYXNlL2Rpc3QvZW1vdGlvbi1zdHlsZWQtYmFzZS5icm93c2VyLmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vc3R5bGVkL2Rpc3QvZW1vdGlvbi1zdHlsZWQuYnJvd3Nlci5lc20uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3R5bGVkLWVuZ2luZS9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZGVlcG1lcmdlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlVGhlbWUvY3JlYXRlQnJlYWtwb2ludHMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9jcmVhdGVUaGVtZS9zaGFwZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2JyZWFrcG9pbnRzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9mb3JtYXRNdWlFcnJvck1lc3NhZ2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2NhcGl0YWxpemUvY2FwaXRhbGl6ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3N0eWxlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zcGFjaW5nLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vbWVtb2l6ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NvbXBvc2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9ib3JkZXJzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3NzR3JpZC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3BhbGV0dGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zaXppbmcuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS9zdHlsZUZ1bmN0aW9uU3gvZGVmYXVsdFN4Q29uZmlnLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L3N0eWxlRnVuY3Rpb25TeC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZVRoZW1lL2NyZWF0ZVRoZW1lLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vY3JlYXRlVGhlbWUvY3JlYXRlU3BhY2luZy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3Byb3BzVG9DbGFzc0tleS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZVN0eWxlZC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NvbG9yTWFuaXB1bGF0b3IuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvY29sb3JzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvZ3JleS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvcHVycGxlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9yZWQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvY29sb3JzL29yYW5nZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvYmx1ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9jb2xvcnMvbGlnaHRCbHVlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2NvbG9ycy9ncmVlbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlUGFsZXR0ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlVHlwb2dyYXBoeS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvc2hhZG93cy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlVHJhbnNpdGlvbnMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL3pJbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvY3JlYXRlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvc3R5bGVzL2NyZWF0ZU1peGlucy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvZGVmYXVsdFRoZW1lLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9pZGVudGlmaWVyLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3N0eWxlcy9zdHlsZWQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL3Jlc29sdmVQcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3VzZVRoZW1lUHJvcHMvZ2V0VGhlbWVQcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3VzZVRoZW1lV2l0aG91dERlZmF1bHQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvc3lzdGVtL2VzbS91c2VUaGVtZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvdXNlVGhlbWVQcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL3VzZVRoZW1lUHJvcHMvdXNlVGhlbWVQcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRm9ya1JlZi91c2VGb3JrUmVmLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9zZXRSZWYuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRm9ya1JlZi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRW5oYW5jZWRFZmZlY3QvdXNlRW5oYW5jZWRFZmZlY3QuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRXZlbnRDYWxsYmFjay5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vdXNlRXZlbnRDYWxsYmFjay91c2VFdmVudENhbGxiYWNrLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS91c2VJc0ZvY3VzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy91c2VJc0ZvY3VzVmlzaWJsZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC9lc20vdXRpbHMvQ2hpbGRNYXBwaW5nLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwL2VzbS9UcmFuc2l0aW9uR3JvdXAuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQGVtb3Rpb24vcmVhY3QvZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvUmlwcGxlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9DbGFzc05hbWVHZW5lcmF0b3IvQ2xhc3NOYW1lR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9nZW5lcmF0ZVV0aWxpdHlDbGFzcy9nZW5lcmF0ZVV0aWxpdHlDbGFzcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vZ2VuZXJhdGVVdGlsaXR5Q2xhc3Nlcy9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvdG91Y2hSaXBwbGVDbGFzc2VzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvVG91Y2hSaXBwbGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uQmFzZS9idXR0b25CYXNlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL0J1dHRvbkJhc2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvY2FwaXRhbGl6ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UYWIvdGFiQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UYWIvVGFiLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3N5c3RlbS9lc20vc3R5bGVGdW5jdGlvblN4L2V4dGVuZFN4UHJvcC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9zeXN0ZW0vZXNtL2NyZWF0ZUJveC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Cb3gvQm94LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvb21pdEV2ZW50SGFuZGxlcnMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy91c2VTbG90UHJvcHMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9yZXNvbHZlQ29tcG9uZW50UHJvcHMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvYmFzZS91dGlscy9tZXJnZVNsb3RQcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL2V4dHJhY3RFdmVudEhhbmRsZXJzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL2Jhc2UvdXRpbHMvYXBwZW5kT3duZXJTdGF0ZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9iYXNlL3V0aWxzL2lzSG9zdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9zdHlsZXMvdXNlVGhlbWUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL2RlYm91bmNlL2RlYm91bmNlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL3V0aWxzL2VzbS9zY3JvbGxMZWZ0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2ludGVybmFsL2FuaW1hdGUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvdXRpbHMvdXNlRW5oYW5jZWRFZmZlY3QuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvdXRpbHMvZXNtL293bmVyRG9jdW1lbnQvb3duZXJEb2N1bWVudC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC91dGlscy9vd25lcldpbmRvdy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS91dGlscy9lc20vb3duZXJXaW5kb3cvb3duZXJXaW5kb3cuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVGFicy9TY3JvbGxiYXJTaXplLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL1N2Z0ljb24vc3ZnSWNvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvU3ZnSWNvbi9TdmdJY29uLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL2NyZWF0ZVN2Z0ljb24uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvaW50ZXJuYWwvc3ZnLWljb25zL0tleWJvYXJkQXJyb3dMZWZ0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL2ludGVybmFsL3N2Zy1pY29ucy9LZXlib2FyZEFycm93UmlnaHQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVGFiU2Nyb2xsQnV0dG9uL3RhYlNjcm9sbEJ1dHRvbkNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVGFiU2Nyb2xsQnV0dG9uL1RhYlNjcm9sbEJ1dHRvbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9UYWJzL3RhYnNDbGFzc2VzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL3V0aWxzL293bmVyRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvVGFicy9UYWJzLmpzIiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvTWF0ZXJpYWxzL21hdGVyaWFsLmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL01hdGVyaWFscy9pbmRleC5qc3giLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9PcmRlck1hdGVyaWFscy9pbnB1dEZpZWxkLmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL09yZGVyTWF0ZXJpYWxzL3Byb2R1Y3RSb3cuanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvT3JkZXJNYXRlcmlhbHMvaW5wdXRDaGVja2JveC5qc3giLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9PcmRlck1hdGVyaWFscy9pbnB1dERyb3Bkb3duLmpzeCIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9jb21wb25lbnRzL09yZGVyTWF0ZXJpYWxzL2lucHV0VGV4dGFyZWEuanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvT3JkZXJNYXRlcmlhbHMvaW5kZXguanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL3JlYWN0LWluaXQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9TcGxpdFZpZGVvQmxvY2svaW5kZXguanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL2NvbXBvbmVudHMvVmlkZW9CbG9jay9pbmRleC5qc3giLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvanMvY29tcG9uZW50cy9UYWJzQmxvY2svaW5kZXguanN4Iiwid2VicGFjazovL3dlYi8uL1VJL2pzL3NoYXJlZC9jdXN0b21pemFibGUtZmlsZS11cGxvYWQtZWxlbWVudC1oYW5kbGVyLmpzIiwid2VicGFjazovL3dlYi8uL1VJL2pzL3NoYXJlZC9pbi12aWV3cG9ydC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9VSS9qcy9zaGFyZWQvdG9nZ2xlLmpzIiwid2VicGFjazovL3dlYi8uL1VJL2pzL3NoYXJlZC92aWRlby10cmlnZ2VyLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9kZWVwbWVyZ2UvZGlzdC9janMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2Rpc3QvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MuY2pzLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9sb2FkLXNjcmlwdC9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvbG9kYXNoLnRocm90dGxlL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9tZW1vaXplLW9uZS9kaXN0L21lbW9pemUtb25lLmVzbS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2NsaWVudC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1mYXN0LWNvbXBhcmUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LW9uLXNjcmVlbi9saWIvVHJhY2tWaXNpYmlsaXR5LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1vbi1zY3JlZW4vbGliL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wYWdpbmF0ZS9kaXN0L3JlYWN0LXBhZ2luYXRlLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL1BsYXllci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9QcmV2aWV3LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL1JlYWN0UGxheWVyLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL3BhdHRlcm5zLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL3BsYXllcnMvRGFpbHlNb3Rpb24uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXBsYXllci9saWIvcGxheWVycy9GYWNlYm9vay5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wbGF5ZXJzL0ZpbGVQbGF5ZXIuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXBsYXllci9saWIvcGxheWVycy9LYWx0dXJhLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL3BsYXllcnMvTWl4Y2xvdWQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXBsYXllci9saWIvcGxheWVycy9Tb3VuZENsb3VkLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC1wbGF5ZXIvbGliL3BsYXllcnMvU3RyZWFtYWJsZS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wbGF5ZXJzL1R3aXRjaC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wbGF5ZXJzL1ZpZHlhcmQuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXBsYXllci9saWIvcGxheWVycy9WaW1lby5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wbGF5ZXJzL1dpc3RpYS5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wbGF5ZXJzL1lvdVR1YmUuanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0LXBsYXllci9saWIvcGxheWVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi9wcm9wcy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtcGxheWVyL2xpYi91dGlscy5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QtdmlzaWJpbGl0eS1zZW5zb3IvZGlzdC92aXNpYmlsaXR5LXNlbnNvci5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3Qtd2F5cG9pbnQvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3Qtd2F5cG9pbnQvbm9kZV9tb2R1bGVzL3JlYWN0LWlzL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvcmVhY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3JlYWN0L2pzeC1ydW50aW1lLmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zY2hlZHVsZXIvY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLm1pbi5qcyIsIndlYnBhY2s6Ly93ZWIvLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzIiwid2VicGFjazovL3dlYi8uL25vZGVfbW9kdWxlcy9zaGFsbG93ZXF1YWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vd2ViLy4vVUkvY3NzL3N0eWxlcy5zY3NzP2I0MTgiLCJ3ZWJwYWNrOi8vd2ViLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL3dlYi93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vd2ViL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly93ZWIvd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL3dlYi8uL1VJL2pzL2VudHJpZXMvZ2xvYmFsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiA/IChvYmopID0+IChPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSkgOiAob2JqKSA9PiAob2JqLl9fcHJvdG9fXyk7XG52YXIgbGVhZlByb3RvdHlwZXM7XG4vLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuLy8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4vLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8vIG1vZGUgJiAxNjogcmV0dXJuIHZhbHVlIHdoZW4gaXQncyBQcm9taXNlLWxpa2Vcbi8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbl9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG5cdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IHRoaXModmFsdWUpO1xuXHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuXHRpZih0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlKSB7XG5cdFx0aWYoKG1vZGUgJiA0KSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG5cdFx0aWYoKG1vZGUgJiAxNikgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHJldHVybiB2YWx1ZTtcblx0fVxuXHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuXHR2YXIgZGVmID0ge307XG5cdGxlYWZQcm90b3R5cGVzID0gbGVhZlByb3RvdHlwZXMgfHwgW251bGwsIGdldFByb3RvKHt9KSwgZ2V0UHJvdG8oW10pLCBnZXRQcm90byhnZXRQcm90byldO1xuXHRmb3IodmFyIGN1cnJlbnQgPSBtb2RlICYgMiAmJiB2YWx1ZTsgdHlwZW9mIGN1cnJlbnQgPT0gJ29iamVjdCcgJiYgIX5sZWFmUHJvdG90eXBlcy5pbmRleE9mKGN1cnJlbnQpOyBjdXJyZW50ID0gZ2V0UHJvdG8oY3VycmVudCkpIHtcblx0XHRPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdXJyZW50KS5mb3JFYWNoKChrZXkpID0+IChkZWZba2V5XSA9ICgpID0+ICh2YWx1ZVtrZXldKSkpO1xuXHR9XG5cdGRlZlsnZGVmYXVsdCddID0gKCkgPT4gKHZhbHVlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBkZWYpO1xuXHRyZXR1cm4gbnM7XG59OyIsIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0Jzt2YXIgYj1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxjPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksZD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksZT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksZj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksZz1TeW1ib2wuZm9yKFwicmVhY3QucHJvdmlkZXJcIiksaD1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxrPVN5bWJvbC5mb3IoXCJyZWFjdC5zZXJ2ZXJfY29udGV4dFwiKSxsPVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxtPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxuPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLHA9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikscT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5vZmZzY3JlZW5cIiksdTt1PVN5bWJvbC5mb3IoXCJyZWFjdC5tb2R1bGUucmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gdihhKXtpZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXt2YXIgcj1hLiQkdHlwZW9mO3N3aXRjaChyKXtjYXNlIGI6c3dpdGNoKGE9YS50eXBlLGEpe2Nhc2UgZDpjYXNlIGY6Y2FzZSBlOmNhc2UgbTpjYXNlIG46cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIGg6Y2FzZSBsOmNhc2UgcTpjYXNlIHA6Y2FzZSBnOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuIHJ9fWNhc2UgYzpyZXR1cm4gcn19fWV4cG9ydHMuQ29udGV4dENvbnN1bWVyPWg7ZXhwb3J0cy5Db250ZXh0UHJvdmlkZXI9ZztleHBvcnRzLkVsZW1lbnQ9YjtleHBvcnRzLkZvcndhcmRSZWY9bDtleHBvcnRzLkZyYWdtZW50PWQ7ZXhwb3J0cy5MYXp5PXE7ZXhwb3J0cy5NZW1vPXA7ZXhwb3J0cy5Qb3J0YWw9YztleHBvcnRzLlByb2ZpbGVyPWY7ZXhwb3J0cy5TdHJpY3RNb2RlPWU7ZXhwb3J0cy5TdXNwZW5zZT1tO1xuZXhwb3J0cy5TdXNwZW5zZUxpc3Q9bjtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb25jdXJyZW50TW9kZT1mdW5jdGlvbigpe3JldHVybiExfTtleHBvcnRzLmlzQ29udGV4dENvbnN1bWVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09aH07ZXhwb3J0cy5pc0NvbnRleHRQcm92aWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWd9O2V4cG9ydHMuaXNFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1ifTtleHBvcnRzLmlzRm9yd2FyZFJlZj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWx9O2V4cG9ydHMuaXNGcmFnbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWR9O2V4cG9ydHMuaXNMYXp5PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09cX07ZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1wfTtcbmV4cG9ydHMuaXNQb3J0YWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1jfTtleHBvcnRzLmlzUHJvZmlsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1mfTtleHBvcnRzLmlzU3RyaWN0TW9kZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWV9O2V4cG9ydHMuaXNTdXNwZW5zZT1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW19O2V4cG9ydHMuaXNTdXNwZW5zZUxpc3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ufTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1kfHxhPT09Znx8YT09PWV8fGE9PT1tfHxhPT09bnx8YT09PXR8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09cXx8YS4kJHR5cGVvZj09PXB8fGEuJCR0eXBlb2Y9PT1nfHxhLiQkdHlwZW9mPT09aHx8YS4kJHR5cGVvZj09PWx8fGEuJCR0eXBlb2Y9PT11fHx2b2lkIDAhPT1hLmdldE1vZHVsZUlkKT8hMDohMX07ZXhwb3J0cy50eXBlT2Y9djtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IERvY3VtZW50Q2FydEV2ZW50S2V5ID0gXCJvbkNhcnRDaGFuZ2VcIjtcclxuXHJcbmNvbnN0IENhcnRCYW5uZXIgPSAocHJvcHMpID0+IHtcclxuXHJcbiAgICBjb25zdCBbY2FydCwgc2V0Q2FydF0gPSB1c2VTdGF0ZSh7fSk7XHJcblxyXG4gICAgY29uc3QgdXBkYXRlQ2FyZCA9ICgpID0+IHtcclxuICAgICAgICBwb3N0RGF0YShcIi9hcGkvb3JkZXIvZ2V0QmFza2V0SXRlbXM/bGFuZz1cIiArIHByb3BzLmxhbmcpXHJcbiAgICAgICAgICAgIC50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAoZGF0YSA/IHNldENhcnQoZGF0YSkgOiBzZXRDYXJ0KG51bGwpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICB1cGRhdGVDYXJkKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChEb2N1bWVudENhcnRFdmVudEtleSk7XHJcblxyXG4gICAgICAgIGNoYW5uZWwub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgIHVwZGF0ZUNhcmQoKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gKCkgPT4gY2hhbm5lbC5jbG9zZSgpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCA9ICcnKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgJ2FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxSZWFjdC5GcmFnbWVudD5cclxuICAgICAgICAgICAgeyhwcm9wcy50ZXh0ICYmIGNhcnQ/Lml0ZW1zPy5sZW5ndGggPiAwKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLW9yaW9uRGFya0JsdWUgcC0zMiB0ZXh0LXdoaXRlIGZsZXgganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY29udGVudCB0ZXh0LWNvbnRlbnQtd2hpdGUgaW5saW5lLXAgbS0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBpbmxpbmUgcC04IHRleHQtYmFzZSByb3VuZGVkLWZ1bGwgYXNwZWN0LXNxdWFyZSBiZy1jYXJ0UmVkIGJvcmRlciBib3JkZXItY2FydFJlZCBtci0xNiBhbGlnbi1zdWJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCI+c2hvcHBpbmdfY2FydDwvc3Bhbj48c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e19faHRtbDogcHJvcHMudGV4dH19Pjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XHJcbiAgICApXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IENhcnRCYW5uZXIiLCJpbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IHsgZXZlbnRidXMsIGV2ZW50cyB9IGZyb20gXCIuLi9ldmVudGJ1c1wiO1xyXG5pbXBvcnQgeyBEb2N1bWVudENhcnRFdmVudEtleSB9IGZyb20gXCIuLi9DYXJ0QmFubmVyXCI7XHJcblxyXG5jb25zdCBDdXN0b21Ecm9wZG93biA9ICh7IG9wdGlvbnMsIHNlbGVjdGVkVmFsdWUsIHVuc2VsZWN0ZWRWYWx1ZSwgb25DaGFuZ2UsIGlzSW5CYXNrZXQsIG9uQ2xpY2ssIGxvYWRpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gdXNlUmVmKG51bGwpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGRyb3Bkb3duUmVmLmN1cnJlbnQgJiYgIWRyb3Bkb3duUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlT3V0c2lkZUNsaWNrKTtcclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVEcm9wZG93blRvZ2dsZSA9IChlKSA9PiB7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU9wdGlvblNlbGVjdCA9IChvcHRpb24pID0+IHtcclxuICAgICAgICBvbkNoYW5nZShvcHRpb24pO1xyXG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHJlZj17ZHJvcGRvd25SZWZ9PlxyXG4gICAgICAgICAgICAgICAgey8qIFNlbGVjdGVkIFZhbHVlIERpc3BsYXkgKi99XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGJvcmRlciByb3VuZGVkLWwteGwgdGV4dC14cyB0ZXh0LXJpZ2h0IHB4LTEwIHB5LTIgY3Vyc29yLXBvaW50ZXIgYmctd2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZURyb3Bkb3duVG9nZ2xlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1ibG9jayBtaW4tdy1bM2NoXVwiPntzZWxlY3RlZFZhbHVlIHx8IChpc0luQmFza2V0ID8gXCIwXCIgOiB1bnNlbGVjdGVkVmFsdWUpfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBtbC0yXCI+ZXhwYW5kX21vcmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB7LyogRHJvcGRvd24gT3B0aW9ucyAqL31cclxuICAgICAgICAgICAgICAgIHtpc09wZW4gJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIHctZnVsbCBib3JkZXIgcm91bmRlZC14bCBiZy13aGl0ZSB6LTEwIHNoYWRvdy1sZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNJbkJhc2tldCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQtcmlnaHQgcHgtNiBweS0yIGhvdmVyOmJnLWJhYnlCbHVlNDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3B0aW9uU2VsZWN0KDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXJpZ2h0IHB4LTYgcHktMiBob3ZlcjpiZy1iYWJ5Qmx1ZTQwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wdGlvblNlbGVjdChvcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQ2xpY2t9IGNsYXNzTmFtZT17YGJ1dHRvbiB0cmFuc2xhdGUzZC0wIHJvdW5kZWQtbm9uZSB0ZXh0LXhzIHB5LTggcHgtMTIgd2hpdGVzcGFjZS1ub3dyYXAgJHtpc0luQmFza2V0ID8gXCJiZy1ncmVlbiBidXR0b24tLWRlZmF1bHQtZ3JlZW5cIiA6IFwiYnV0dG9uLS1kZWZhdWx0LWJsdWVcIn1gfT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YG1hdGVyaWFsLWljb25zIHRleHQtYmFzZSBsZWFkaW5nLVswXSBhbGlnbi1zdWIgJHtsb2FkaW5nICYmIFwiYW5pbWF0ZS1zcGluXCJ9YH0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e2xvYWRpbmcgPyBcInJlZnJlc2hcIiA6IChpc0luQmFza2V0ICYmIHNlbGVjdGVkVmFsdWUgPT0gMCA/IFwicmVtb3ZlX3Nob3BwaW5nX2NhcnRcIiA6IFwic2hvcHBpbmdfY2FydFwiKX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvPlxyXG4gICAgKTtcclxufTtcclxuXHJcblxyXG5jb25zdCBNYXRlcmlhbEFkZFRvQ2FydCA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgW3NlbGVjdGVkUXVhbnRpdHksIHNldFNlbGVjdGVkUXVhbnRpdHldID0gdXNlU3RhdGUoXHJcbiAgICAgICAgcHJvcHMuYW1vdW50SW5CYXNrZXQgPiAwID8gcHJvcHMuYW1vdW50SW5CYXNrZXQgOiAwXHJcbiAgICApO1xyXG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2lzSW5CYXNrZXQsIHNldElzSW5CYXNrZXRdID0gdXNlU3RhdGUocHJvcHMuYW1vdW50SW5CYXNrZXQgPiAwKTsgLy8gVHJhY2tzIGlmIHRoZSBpdGVtIGlzIGluIHRoZSBiYXNrZXRcclxuICAgIGNvbnN0IHNlbGVjdFJlZiA9IHVzZVJlZihudWxsKTtcclxuXHJcbiAgICBjb25zdCB1cGRhdGVCYXNrZXRJdGVtID0gKGlkLCBxdWFudGl0eSkgPT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB4bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgICAgICAgIGlmIChxdWFudGl0eSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBiYXNrZXRcclxuICAgICAgICAgICAgICAgIHhtbGh0dHAub3BlbihcIlBPU1RcIiwgYC9hcGkvb3JkZXIvcmVtb3ZlQmFza2V0SXRlbT9sYW5nPSR7cHJvcHMubGFuZ30mcHJvZHVjdElkPSR7aWR9YCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBBZGQgb3IgdXBkYXRlIGl0ZW0gaW4gYmFza2V0XHJcbiAgICAgICAgICAgICAgICB4bWxodHRwLm9wZW4oXCJQVVRcIiwgYC9hcGkvb3JkZXIvdXBzZXJ0QmFza2V0SXRlbT9sYW5nPSR7cHJvcHMubGFuZ30mcHJvZHVjdElkPSR7aWR9JnF1YW50aXR5PSR7cXVhbnRpdHl9YCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeG1saHR0cC5zZW5kKCk7XHJcbiAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcblxyXG4gICAgICAgICAgICB4bWxodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgPT09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGF0dXMgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBCYXNrZXQgdXBkYXRlZCBmb3IgcHJvZHVjdCBJRDogJHtpZH1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNJbkJhc2tldChxdWFudGl0eSA+IDApOyAvLyBVcGRhdGUgdGhlIHN0YXRlIGJhc2VkIG9uIHRoZSBxdWFudGl0eVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhbm5lbCA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKERvY3VtZW50Q2FydEV2ZW50S2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbC5wb3N0TWVzc2FnZShxdWFudGl0eSk7IC8vIE5vdGlmeSB0aGUgY2FydCBiYW5uZXIgdG8gdXBkYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50YnVzLnB1Ymxpc2goZXZlbnRzLnByb2R1Y3RBZGRlZFRvQ2FydEV2ZW50LCBxdWFudGl0eSA+IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFJlc29sdmUgdGhlIHByb21pc2VcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYEZhaWxlZCB0byB1cGRhdGUgYmFza2V0IGZvciBwcm9kdWN0IElEOiAke2lkfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlUXVhbnRpdHlDaGFuZ2UgPSAoaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHF1YW50aXR5ID0gcGFyc2VJbnQoaSk7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWRRdWFudGl0eShxdWFudGl0eSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZUFkZFRvQ2FydCA9ICgpID0+IHtcclxuICAgICAgICB1cGRhdGVCYXNrZXRJdGVtKHByb3BzLnByb2R1Y3RJZEZpZWxkLCBzZWxlY3RlZFF1YW50aXR5KVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTEwXCI+XHJcbiAgICAgICAgICAgIHtwcm9wcy5vcmRlclF1YW50aXR5ICYmXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGlubGluZS1mbGV4IGJvcmRlciBib3JkZXItMiByb3VuZGVkLXhsIHNlbGYtc3RhcnQgJHtpc0luQmFza2V0ID8gXCJib3JkZXItZ3JlZW5cIiA6IFwiYm9yZGVyLWJsdWVcIn1gfT5cclxuICAgICAgICAgICAgICAgICAgICA8Q3VzdG9tRHJvcGRvd25cclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz17cHJvcHMub3JkZXJRdWFudGl0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZT17c2VsZWN0ZWRRdWFudGl0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5zZWxlY3RlZFZhbHVlPXtwcm9wcy5xdWFudGl0eVRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVRdWFudGl0eUNoYW5nZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNJbkJhc2tldD17aXNJbkJhc2tldH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkVG9DYXJ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB7cHJvcHMuZmlsZVVybCAmJlxyXG4gICAgICAgICAgICAgICAgPGEgaHJlZj17cHJvcHMuZmlsZVVybH0gdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3NOYW1lPVwiYnV0dG9uIGJ1dHRvbi0tZGVmYXVsdC1ibHVlIGZsZXggaXRlbXMtY2VudGVyIHNocmluayByb3VuZGVkLXhsIHRleHQteHMgcHgtMTIgcHktOCB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIFBERiA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyB0ZXh0LWJhc2UgbWwtNiBsZWFkaW5nLVswXSBhbGlnbi1zdWJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5waWN0dXJlX2FzX3BkZjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTWF0ZXJpYWxBZGRUb0NhcnQ7XHJcbiIsIlxyXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIChldmVudCkgPT4ge1xyXG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpW2RhdGEtYWN0aXZlPVwidHJ1ZVwiXScpLmZvckVhY2goc2VjdGlvbnMgPT4ge1xyXG5cdFx0aWYgKHNlY3Rpb25zLnBhcmVudEVsZW1lbnQpIHtcclxuXHRcdFx0c2VjdGlvbnMucGFyZW50RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwiaGlkZGVuXCIpO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHNlY3Rpb25zLnBhcmVudEVsZW1lbnQucHJldmlvdXNFbGVtZW50U2libGluZykge1xyXG5cdFx0XHRzZWN0aW9ucy5wYXJlbnRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcucXVlcnlTZWxlY3RvcihcIi5tYXRlcmlhbC1pY29uc1wiKS5pbm5lckhUTUwgPSBcInJlbW92ZVwiO1xyXG5cdFx0fVxyXG5cdH0pO1xyXG5cclxuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZGlnaXRhbE1hdGVyaWFsUGFnZSBhc2lkZSBoMicpLmZvckVhY2gobWF0ZXJpYWxBcmVhID0+IHtcclxuXHJcblx0XHRtYXRlcmlhbEFyZWEuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiBoYW5kbGVDbGljayhldmVudCkge1xyXG5cdFx0XHQvL2NvbnNvbGUubG9nKHRoaXMpO1xyXG5cdFx0XHR0aGlzLm5leHRFbGVtZW50U2libGluZy5jbGFzc0xpc3QudG9nZ2xlKFwiaGlkZGVuXCIpO1xyXG5cclxuXHRcdFx0aWYgKHRoaXMucXVlcnlTZWxlY3RvcihcIi5tYXRlcmlhbC1pY29uc1wiKS5pbm5lclRleHQgPT0gXCJyZW1vdmVcIikge1xyXG5cdFx0XHRcdHRoaXMucXVlcnlTZWxlY3RvcihcIi5tYXRlcmlhbC1pY29uc1wiKS5pbm5lckhUTUwgPSBcImFkZFwiO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMucXVlcnlTZWxlY3RvcihcIi5tYXRlcmlhbC1pY29uc1wiKS5pbm5lckhUTUwgPSBcInJlbW92ZVwiO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9KTtcclxuXHJcbn0pOyIsImNvbnN0IHZpZGVvcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZHZhbmNlZC1oaWdobGlnaHQgdmlkZW8nKTtcclxuXHJcbmxldCB0aHJlc2hvbGRzID0gKCkgPT4ge1xyXG4gICAgbGV0IHRocmVzaG9sZHMgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDEuMDsgaSArPSAwLjA1KSB7XHJcbiAgICAgICAgdGhyZXNob2xkcy5wdXNoKGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRocmVzaG9sZHM7XHJcbn1cclxuXHJcbmxldCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50KSA9PiB7XHJcbiAgICBlbnQuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNob3VsZFBsYXlPbmNlID0gaXRlbS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwbGF5LW9uY2UnKTtcclxuICAgICAgICBjb25zdCBoYXNCZWVuUGxheWVkID0gaXRlbS50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwbGF5ZWQnKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0uaW50ZXJzZWN0aW9uUmF0aW8gPiAwLjkgJiYgIShzaG91bGRQbGF5T25jZSAmJiBoYXNCZWVuUGxheWVkKSkge1xyXG4gICAgICAgICAgICBpdGVtLnRhcmdldC5wbGF5KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaXRlbS50YXJnZXQucGF1c2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59LCB7XHJcbiAgICB0aHJlc2hvbGQ6IHRocmVzaG9sZHMoKVxyXG59KTtcclxuXHJcbnZpZGVvcy5mb3JFYWNoKHZpZGVvID0+IHtcclxuICAgIG9ic2VydmVyLm9ic2VydmUodmlkZW8pO1xyXG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcihcImVuZGVkXCIsICgpID0+IHtcclxuICAgICAgICB2aWRlby5jbGFzc0xpc3QuYWRkKCdwbGF5ZWQnKTtcclxuICAgIH0pO1xyXG59KTsiLCJjb25zdCBlcXVhbHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmpzLWVxdWFsLXdcIik7XHJcblxyXG5pZiAoZXF1YWxzKSB7XHJcblx0bGV0IHdpZGVzdCA9IDA7XHJcblxyXG5cdGZvciAoY29uc3QgZXF1YWwgb2YgZXF1YWxzKSB7XHJcblx0XHR3aWRlc3QgPSAod2lkZXN0IDwgZXF1YWwuY2xpZW50V2lkdGgpID8gZXF1YWwuY2xpZW50V2lkdGggOiB3aWRlc3Q7XHJcblx0fVxyXG5cclxuXHRmb3IgKGNvbnN0IGVxdWFsIG9mIGVxdWFscykge1xyXG5cdFx0ZXF1YWwuc3R5bGUubWluV2lkdGggPSB3aWRlc3QgKyBcInB4XCI7XHJcblx0fVxyXG59IiwiLypcclxuKiAgIFNpbXBsZSBldmVudGJ1cyBpbXBsZW1lbnRhdGlvbi4gSW1wbGVtZW50YXRpb24gaXMgc3VmZmljaWVudCBhcyBsb25nIGFzIHNpdGUgZG9lc24ndCBzd2l0Y2ggdG8gU1BBIG1vZGVsLCBcclxuKiAgIHNpbmNlIHRoZSBsaWZlIHRpbWUgb2YgdGhlIGV2ZW50YnVzIG9iamVjdCBpcyBwYWdlIGxpZmV0aW1lIGFuZCBzdWJzY3JpYmVycyBnZXQgY2xlYXJlZCBvbiBwYWdlIHJlZnJlc2ggb3IgbmF2aWdhdGlvbi5cclxuKiAgIGlmIG1vdmluZyB0byBTUEEgbW9kZWwsIG9yIHNvbWUgbW9yZSBhZHZhbmNlZCBmdW5jdGlvbmFsaXR5IGlzIHJlcXVpcmVkLCB0aGVuIGNvbnNpZGVyIHN3aXRjaGluZyB0byByZWR1eCBvciBzb21ldGhpbmcgZWxzZS4gXHJcbiovXHJcbmNsYXNzIEV2ZW50YnVzIHtcclxuICAgIGV2ZW50T2JzZXJ2ZXJzID0ge307XHJcblxyXG4gICAgc3Vic2NyaWJlKGV2ZW50SWQsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcInN1YnNjcmliZVwiKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZXZlbnRPYnNlcnZlcnNbZXZlbnRJZF0pIHtcclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrcyA9IHRoaXMuZXZlbnRPYnNlcnZlcnNbZXZlbnRJZF07XHJcbiAgICAgICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgdGhpcy5ldmVudE9ic2VydmVyc1tldmVudElkXSA9IGNhbGxiYWNrcztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRPYnNlcnZlcnNbZXZlbnRJZF0gPSBbY2FsbGJhY2tdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaXNoKGV2ZW50SWQsIGV2ZW50RGF0YSkge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2coXCJwdWJsaXNoXCIpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5ldmVudE9ic2VydmVyc1tldmVudElkXSkge1xyXG4gICAgICAgICAgICBjb25zdCBvYnNlcnZlcnMgPSB0aGlzLmV2ZW50T2JzZXJ2ZXJzW2V2ZW50SWRdO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgb2JzZXJ2ZXJzLmZvckVhY2goY2FsbGJhY2sgPT4ge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudERhdGEpO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkNvdWxkIG5vdCBjYWxsIGNhbGxiYWNrIGZ1bmN0aW9uIHN1Y2Nlc2Z1bGx5LiBFcnJvciBiZWxvd1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgZXZlbnRidXMgPSBuZXcgRXZlbnRidXMoKTtcclxuXHJcbmNvbnN0IGV2ZW50cyA9IHtcclxuICAgIHByb2R1Y3RBZGRlZFRvQ2FydEV2ZW50OiBcInByb2R1Y3RBZGRlZFRvQ2FydEV2ZW50XCJcclxufTtcclxuXHJcbi8vVGhpcyBpcyB0byBhbGxvdyBwcm9kdWN0IHBhZ2UgdG8gYWNjZXNzIGZ1bmN0aW9uYWxpdHkgdXNpbmcgaW5saW5lIHZhbmlsbGEgSlMuIElmIHByb2R1Y3QgcGFnZSBpcyByZWZhY3RvcmVkIGF0IHNvbWUgcG9pbnQgdG8gdXNlIHJlYWN0LCB0aGVuIHJlbW92ZSB0aGVzZSBsaW5lc1xyXG53aW5kb3cudm1FdmVudGJ1cyA9IGV2ZW50YnVzO1xyXG53aW5kb3cudm1FdmVudGJ1c0V2ZW50cyA9IGV2ZW50cztcclxuXHJcbmV4cG9ydCB7IGV2ZW50YnVzLCBldmVudHMgfTsiLCJjb25zdCBlcGlGb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLkVQaVNlcnZlckZvcm1zJyk7XHJcbmlmIChlcGlGb3JtKSB7XHJcbiAgICBjb25zdCBlcGlGb3JtRWxlbWVudHNJbnB1dCA9IGVwaUZvcm0ucXVlcnlTZWxlY3RvckFsbCgnLkZvcm1fX0VsZW1lbnQgaW5wdXQnKTtcclxuICAgIGNvbnN0IGVwaUZvcm1FbGVtZW50c1RleHRhcmVhID0gZXBpRm9ybS5xdWVyeVNlbGVjdG9yQWxsKCcuRm9ybV9fRWxlbWVudCB0ZXh0YXJlYScpO1xyXG4gICAgY29uc3QgZXBpRm9ybUVsZW1lbnRzQ2hvaWNlID0gZXBpRm9ybS5xdWVyeVNlbGVjdG9yQWxsKCcuRm9ybV9fRWxlbWVudC5Gb3JtQ2hvaWNlJyk7XHJcbiAgICBjb25zdCBlcGlGb3JtRWxlbWVudHNTZWxlY3QgPSBlcGlGb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoJy5Gb3JtX19FbGVtZW50IHNlbGVjdCcpO1xyXG5cclxuXHJcbiAgICAoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChlcGlGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBGaW5kIGVwaXNlcnZlciBpbnB1dHNcclxuICAgICAgICAgICAgICAgIGVwaUZvcm1FbGVtZW50c0lucHV0LmZvckVhY2goZnVuY3Rpb24gKGVwaUZvcm1FbGVtZW50SW5wdXQsIGluZGV4KSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVJbnB1dFR5cGVzID0gWydyYWRpbycsICdjaGVja2JveCddO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGNsdWRlSW5wdXRUeXBlcy5pbmNsdWRlcyhlcGlGb3JtRWxlbWVudElucHV0LnR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGlucHV0IGhhcyB0aXRsZSBhdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXBpRm9ybUVsZW1lbnRJbnB1dC5oYXNBdHRyaWJ1dGUoJ3RpdGxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgZWxlbWVudCBsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcGlGb3JtRWxlbWVudExhYmVsID0gZXBpRm9ybUVsZW1lbnRJbnB1dC5jbG9zZXN0KCcuRm9ybV9fRWxlbWVudCcpLnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgZWxlbWVudCB0aXRsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXBpRm9ybUVsZW1lbnRJbnB1dFRpdGxlID0gZXBpRm9ybUVsZW1lbnRJbnB1dC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgdG9vbHRpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVUb29sVGlwKGVwaUZvcm1FbGVtZW50SW5wdXRUaXRsZSwgZXBpRm9ybUVsZW1lbnRMYWJlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAvLyBGaW5kIGVwaXNlcnZlciB0ZXh0YXJlYVxyXG4gICAgICAgICAgICAgICAgZXBpRm9ybUVsZW1lbnRzVGV4dGFyZWEuZm9yRWFjaChmdW5jdGlvbiAoZXBpRm9ybUVsZW1lbnRUZXh0YXJlYSwgaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiBpbnB1dCBoYXMgdGl0bGUgYXR0cmlidXRlXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVwaUZvcm1FbGVtZW50VGV4dGFyZWEuaGFzQXR0cmlidXRlKCd0aXRsZScpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVwaUZvcm1FbGVtZW50TGFiZWwgPSBlcGlGb3JtRWxlbWVudFRleHRhcmVhLmNsb3Nlc3QoJy5Gb3JtX19FbGVtZW50JykucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVwaUZvcm1FbGVtZW50VGV4dGFyZWFUaXRsZSA9IGVwaUZvcm1FbGVtZW50VGV4dGFyZWEuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVUb29sVGlwKGVwaUZvcm1FbGVtZW50VGV4dGFyZWFUaXRsZSwgZXBpRm9ybUVsZW1lbnRMYWJlbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8gRmluZCBlcGlzZXJ2ZXIgcmFkaW8gYW5kIGNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBlcGlGb3JtRWxlbWVudHNDaG9pY2UuZm9yRWFjaChmdW5jdGlvbiAoZXBpRm9ybUVsZW1lbnRDaG9pY2UsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgaW5wdXQgaGFzIHRpdGxlIGF0dHJpYnV0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcGlGb3JtRWxlbWVudENob2ljZS5oYXNBdHRyaWJ1dGUoJ3RpdGxlJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXBpRm9ybUVsZW1lbnRMYWJlbCA9IGVwaUZvcm1FbGVtZW50Q2hvaWNlLmNsb3Nlc3QoJy5Gb3JtX19FbGVtZW50JykucXVlcnlTZWxlY3RvcignbGVnZW5kJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcGlGb3JtRWxlbWVudENob2ljZVRpdGxlID0gZXBpRm9ybUVsZW1lbnRDaG9pY2UuZ2V0QXR0cmlidXRlKCd0aXRsZScpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVUb29sVGlwKGVwaUZvcm1FbGVtZW50Q2hvaWNlVGl0bGUsIGVwaUZvcm1FbGVtZW50TGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8gRmluZCBlcGlzZXJ2ZXIgc2VsZWN0XHJcbiAgICAgICAgICAgICAgICBlcGlGb3JtRWxlbWVudHNTZWxlY3QuZm9yRWFjaChmdW5jdGlvbiAoZXBpRm9ybUVsZW1lbnRTZWxlY3QsIGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVwaUZvcm1FbGVtZW50U2VsZWN0Lmhhc0F0dHJpYnV0ZSgndGl0bGUnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcGlGb3JtRWxlbWVudExhYmVsID0gZXBpRm9ybUVsZW1lbnRTZWxlY3QuY2xvc2VzdCgnLkZvcm1fX0VsZW1lbnQnKS5xdWVyeVNlbGVjdG9yKCdsYWJlbCcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXBpRm9ybUVsZW1lbnRTZWxlY3RUaXRsZSA9IGVwaUZvcm1FbGVtZW50U2VsZWN0LmdldEF0dHJpYnV0ZSgndGl0bGUnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVG9vbFRpcChlcGlGb3JtRWxlbWVudFNlbGVjdFRpdGxlLCBlcGlGb3JtRWxlbWVudExhYmVsKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSkoKTtcclxuXHJcbiAgICBmdW5jdGlvbiBDcmVhdGVUb29sVGlwKHRpdGxlLCBsYWJlbCkge1xyXG4gICAgICAgIC8vIENyZWF0ZSB0b29sdGlwIGljb25cclxuICAgICAgICBjb25zdCBuZXdUb29sVGlwID0gYDxkaXYgY2xhc3M9XCJlcGlmb3JtLXRvb2x0aXAtaWNvblwiPjxkaXYgY2xhc3M9XCJlcGlmb3JtLXRvb2x0aXBcIj48YnV0dG9uIGNsYXNzPVwiYWJzb2x1dGUgbWQ6aGlkZGVuIHJpZ2h0LVsxNXB4XSB0b3AtWzVweF1cIj48c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHRleHQtb3Jpb25CbHVlIHRleHQtWzJyZW1dXCI+JiN4RTVDRDs8L3NwYW4+PC9idXR0b24+PGRpdj4ke3RpdGxlfTwvZGl2PjwvZGl2PjwvZGl2PmA7XHJcbiAgICAgICAgLy8gYXBwZW5kIHRoZSB0aXRsZSB0byB0aGUgdG9vbHRpcFxyXG4gICAgICAgIGxhYmVsLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgbmV3VG9vbFRpcClcclxuICAgIH1cclxufSIsImlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCkge1xyXG4gICAgY29uc3QgaW5WaWV3cG9ydCA9IChlbGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IGFsbEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlbGVtKTtcclxuICAgICAgICBsZXQgd2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC8gMjtcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbXMgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWxsRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGxldCB2aWV3cG9ydE9mZnNldCA9IGFsbEVsZW1lbnRzW2ldLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHRvcCA9IHZpZXdwb3J0T2Zmc2V0LnRvcDtcclxuICAgICAgICAgICAgICAgIGxldCB2aWRlbyA9IGFsbEVsZW1lbnRzW2ldLnF1ZXJ5U2VsZWN0b3IoXCIucGxheS12aWRlby10YXJnZXRcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAodG9wIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGFsbEVsZW1lbnRzW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ2luLXZpZXdwb3J0Jyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlkZW8ucGF1c2UoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9wIDwgd2luZG93SGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxsRWxlbWVudHNbaV0uY2xhc3NMaXN0LmFkZCgnaW4tdmlld3BvcnQnKTtcclxuICAgICAgICAgICAgICAgICAgICB2aWRlby5wbGF5KCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBhbGxFbGVtZW50c1tpXS5jbGFzc0xpc3QucmVtb3ZlKCdpbi12aWV3cG9ydCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvLnBhdXNlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxlbXMoKTtcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZWxlbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGluVmlld3BvcnQoJy5mdWxsd2lkdGgtaGlnaGxpZ2h0Jyk7XHJcbn0iLCJjb25zdCBib2R5ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImJvZHlcIik7XHJcblxyXG4vKiBMYW5ndWFnZSBtZW51IHRvZ2dsZXIgKi9cclxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCAoZXZlbnQpID0+IHtcclxuXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9iaWxlLW5hdmktdHJpZ2dlcicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gaGFuZGxlQ2xpY2soZXZlbnQpIHtcclxuICAgICAgICBpZiAoYm9keS5jbGFzc0xpc3QuY29udGFpbnMoXCJvdmVyZmxvdy1oaWRkZW5cIikpIHtcclxuICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKFwib3ZlcmZsb3ctaGlkZGVuXCIpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKFwib3ZlcmZsb3ctaGlkZGVuXCIpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vYmlsZS1uYXZpZ2F0aW9uIGRpdicpLmNsYXNzTGlzdC5jb250YWlucyhcImludmlzaWJsZVwiKSkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9iaWxlLW5hdmlnYXRpb24gZGl2JykuY2xhc3NMaXN0LnJlbW92ZShcImludmlzaWJsZVwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2JpbGUtbmF2aWdhdGlvbiBkaXYnKS5jbGFzc0xpc3QuYWRkKFwiaW52aXNpYmxlXCIpO1xyXG4gICAgICAgICAgICB9LCAzMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbW9iaWxlLW5hdmlnYXRpb24gZGl2JykuY2xhc3NMaXN0LnRvZ2dsZShcInRyYW5zbGF0ZS15LTBcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI21vYmlsZS1uYXZpZ2F0aW9uIGRpdicpLmNsYXNzTGlzdC50b2dnbGUoXCJvcGFjaXR5LTEwMFwiKTtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3gtdG9wJykuY2xhc3NMaXN0LnRvZ2dsZShcIi10cmFuc2xhdGUteS04XCIpO1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN4LXRvcCcpLmNsYXNzTGlzdC50b2dnbGUoXCJyb3RhdGUtNDVcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3gtYm90dG9tJykuY2xhc3NMaXN0LnRvZ2dsZShcInRyYW5zbGF0ZS15LThcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3gtYm90dG9tJykuY2xhc3NMaXN0LnRvZ2dsZShcIi1yb3RhdGUtNDVcIik7XHJcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3gtbWlkZGxlJykuY2xhc3NMaXN0LnRvZ2dsZShcIm9wYWNpdHktMFwiKTtcclxuXHJcbiAgICAgICAgbGFuZ3VhZ2VNZW51Q2xvc2UoKTtcclxuICAgICAgICBoZWFkZXJTZWFyY2hDbG9zZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgbW9iaWxlTmF2aUl0ZW0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjbW9iaWxlLW5hdmlnYXRpb24gLm5hdmktbGluaycpO1xyXG4gICAgdmFyIHNsaWRlUG9zID0gMDtcclxuICAgIG1vYmlsZU5hdmlJdGVtLmZvckVhY2gobGluayA9PiB7XHJcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzTGlzdC5jb250YWlucyhcImx2bC0yLWFycm93XCIpKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLmNsYXNzTGlzdC5yZW1vdmUoXCJoaWRkZW5cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgc2xpZGVQb3MgPSBzbGlkZVBvcyAtIDEwMDtcclxuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2JpbGUtbmF2aWdhdGlvbiA+IGRpdicpLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlWChcIiArIHNsaWRlUG9zICsgXCIlKVwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcubW9iaWxlLW5hdmlnYXRpb24tYmFjaycpLmZvckVhY2gobGluayA9PiB7XHJcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2ZW50KSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJoaWRkZW5cIik7XHJcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgMzAwKTtcclxuXHJcbiAgICAgICAgICAgIHNsaWRlUG9zID0gc2xpZGVQb3MgKyAxMDA7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNtb2JpbGUtbmF2aWdhdGlvbiA+IGRpdicpLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlWChcIiArIHNsaWRlUG9zICsgXCIlKVwiO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLyogU2V0IHVzZXIgbGFuZ3VhZ2UgY29va2llIHdoZW4gc2VsZWN0aW5nIGxhbmd1YWdlIGluIGxhbmd1YWdlIG1lbnUgKi9cclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5sYW5ndWFnZS1saW5rJykuZm9yRWFjaChsaW5rID0+IHtcclxuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHtcclxuICAgICAgICAgICAgdmFyIGxhbmd1YWdlID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGFuZ3VhZ2UnKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmIChsYW5ndWFnZSkge1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gXCJVc2VyTGFuZ3VhZ2U9XCIgKyBsYW5ndWFnZSArIFwiOyBwYXRoPS9cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn0pO1xyXG5cclxuLyogSGVhZGVyIHNlYXJjaCB0b2dnbGVyICovXHJcbmNvbnN0IGhlYWRlclNlYXJjaFRvZ2dsZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGFnZS1oZWFkZXJfX3NlYXJjaC10b2dnbGVyJyk7XHJcbmNvbnN0IGhlYWRlclNlYXJjaEZvcm0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGFnZS1oZWFkZXJfX3NlYXJjaC1mb3JtJyk7XHJcblxyXG5pZiAoaGVhZGVyU2VhcmNoVG9nZ2xlciAmJiBoZWFkZXJTZWFyY2hGb3JtKSB7XHJcblxyXG4gICAgY29uc3QgaGVhZGVyU2VhcmNoRm9ybUlucHV0ID0gaGVhZGVyU2VhcmNoRm9ybS5xdWVyeVNlbGVjdG9yKCcucGFnZS1oZWFkZXJfX3NlYXJjaC1pbnB1dCcpXHJcbiAgICBjb25zdCBoZWFkZXJTZWFyY2hGb3JtQ2xvc2UgPSBoZWFkZXJTZWFyY2hGb3JtLnF1ZXJ5U2VsZWN0b3IoXCIucGFnZS1oZWFkZXJfX3NlYXJjaC1mb3JtLWNsb3NlXCIpXHJcbiAgICBjb25zdCBoZWFkZXJTZWFyY2hGb3JtU3VibWl0ID0gaGVhZGVyU2VhcmNoRm9ybS5xdWVyeVNlbGVjdG9yKFwiLnBhZ2UtaGVhZGVyX19zZWFyY2gtYnV0dG9uXCIpXHJcblxyXG4gICAgaGVhZGVyU2VhcmNoVG9nZ2xlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCB0YXJnZXRBcmlhRXhwYW5kZWRTdGF0ZSA9IGhlYWRlclNlYXJjaFRvZ2dsZXIuZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT09ICdmYWxzZScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0QXJpYUhpZGRlblN0YXRlID0gaGVhZGVyU2VhcmNoRm9ybS5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgPT09ICd0cnVlJyA/IGZhbHNlIDogdHJ1ZTtcclxuXHJcbiAgICAgICAgYm9keS5jbGFzc0xpc3QuYWRkKFwib3ZlcmZsb3ctaGlkZGVuXCIpXHJcbiAgICAgICAgaGVhZGVyU2VhcmNoVG9nZ2xlci5jbGFzc0xpc3QudG9nZ2xlKCdpcy1hY3RpdmUnKVxyXG4gICAgICAgIGhlYWRlclNlYXJjaFRvZ2dsZXIuc2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJywgdGFyZ2V0QXJpYUV4cGFuZGVkU3RhdGUpO1xyXG4gICAgICAgIGhlYWRlclNlYXJjaEZvcm0uY2xhc3NMaXN0LnRvZ2dsZSgnaXMtYWN0aXZlJylcclxuICAgICAgICBoZWFkZXJTZWFyY2hGb3JtLnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCB0YXJnZXRBcmlhSGlkZGVuU3RhdGUpO1xyXG4gICAgICAgIGhlYWRlclNlYXJjaEZvcm1JbnB1dC5mb2N1cygpO1xyXG5cclxuICAgICAgICBsYW5ndWFnZU1lbnVDbG9zZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgaGVhZGVyU2VhcmNoRm9ybUNsb3NlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgaGVhZGVyU2VhcmNoQ2xvc2UoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIucGFnZS1oZWFkZXJfX3NlYXJjaC1pbnB1dFwiKS5hZGRFdmVudExpc3RlbmVyKFwia2V5cHJlc3NcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJFbnRlclwiKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIucGFnZS1oZWFkZXJfX3NlYXJjaC1idXR0b25cIikuY2xpY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyByZW1vdmUgZGlzYWJsZSBmcm9tIHNlYXJjaCBidXR0b24gd2hlbiB0ZXh0IGlzIGVudGVyZWQgaW4gaW5wdXQgZmllbGRcclxuICAgIGZ1bmN0aW9uIGNoZWNrVmFsdWUoKSB7XHJcbiAgICAgICAgaWYgKGhlYWRlclNlYXJjaEZvcm1JbnB1dC52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGhlYWRlclNlYXJjaEZvcm1TdWJtaXQuY2xhc3NMaXN0LnJlbW92ZShcInRleHQtZ3JleVwiKTtcclxuICAgICAgICAgICAgaGVhZGVyU2VhcmNoRm9ybVN1Ym1pdC5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGhlYWRlclNlYXJjaEZvcm1TdWJtaXQuY2xhc3NMaXN0LmFkZChcInRleHQtZ3JleVwiKTtcclxuICAgICAgICAgICAgaGVhZGVyU2VhcmNoRm9ybVN1Ym1pdC5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2hlY2tWYWx1ZSgpO1xyXG5cclxuICAgIGhlYWRlclNlYXJjaEZvcm1JbnB1dC5hZGRFdmVudExpc3RlbmVyKFwia2V5dXBcIiwgZnVuY3Rpb24gKGV2dCkge1xyXG4gICAgICAgIGNoZWNrVmFsdWUoKTtcclxuICAgIH0pO1xyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gaGVhZGVyU2VhcmNoQ2xvc2UoKSB7XHJcbiAgICBpZiAoaGVhZGVyU2VhcmNoVG9nZ2xlci5jbGFzc0xpc3QuY29udGFpbnMoXCJpcy1hY3RpdmVcIikpIHtcclxuICAgICAgICBib2R5LmNsYXNzTGlzdC5yZW1vdmUoXCJvdmVyZmxvdy1oaWRkZW5cIilcclxuICAgICAgICBoZWFkZXJTZWFyY2hUb2dnbGVyLmNsYXNzTGlzdC5yZW1vdmUoJ2lzLWFjdGl2ZScpXHJcbiAgICAgICAgaGVhZGVyU2VhcmNoVG9nZ2xlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBmYWxzZSk7XHJcbiAgICAgICAgaGVhZGVyU2VhcmNoRm9ybS5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKVxyXG4gICAgICAgIGhlYWRlclNlYXJjaEZvcm0uc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHRydWUpO1xyXG4gICAgICAgIGhlYWRlclNlYXJjaEZvcm0uY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJylcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXHJcbiAgICB9XHJcbn1cclxuXHJcbi8qIExhbmd1YWdlIG1lbnUgdG9nZ2xlciAqL1xyXG5jb25zdCBsYW5ndWFnZU1lbnVUb2dnbGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxhbmd1YWdlLW1lbnUtdG9nZ2xlcicpO1xyXG5jb25zdCBsYW5ndWFnZU1lbnUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubGFuZ3VhZ2UtbWVudScpO1xyXG5cclxuaWYgKGxhbmd1YWdlTWVudVRvZ2dsZXIpIHtcclxuXHJcbiAgICBjb25zdCBsYW5ndWFnZU1lbnVDbG9zZUJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5sYW5ndWFnZS1tZW51LWNsb3NlJyk7XHJcblxyXG4gICAgbGFuZ3VhZ2VNZW51VG9nZ2xlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBjb25zdCB0YXJnZXRBcmlhRXhwYW5kZWRTdGF0ZSA9IGxhbmd1YWdlTWVudVRvZ2dsZXIuZ2V0QXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykgPT09ICdmYWxzZScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgY29uc3QgdGFyZ2V0QXJpYUhpZGRlblN0YXRlID0gbGFuZ3VhZ2VNZW51LmdldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSA9PT0gJ3RydWUnID8gZmFsc2UgOiB0cnVlO1xyXG5cclxuICAgICAgICBib2R5LmNsYXNzTGlzdC50b2dnbGUoXCJvdmVyZmxvdy1oaWRkZW5cIilcclxuICAgICAgICBsYW5ndWFnZU1lbnVUb2dnbGVyLmNsYXNzTGlzdC50b2dnbGUoJ2lzLWFjdGl2ZScpXHJcbiAgICAgICAgbGFuZ3VhZ2VNZW51VG9nZ2xlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCB0YXJnZXRBcmlhRXhwYW5kZWRTdGF0ZSk7XHJcbiAgICAgICAgbGFuZ3VhZ2VNZW51LmNsYXNzTGlzdC50b2dnbGUoJ2lzLWFjdGl2ZScpXHJcbiAgICAgICAgbGFuZ3VhZ2VNZW51LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCB0YXJnZXRBcmlhSGlkZGVuU3RhdGUpO1xyXG5cclxuICAgICAgICBoZWFkZXJTZWFyY2hDbG9zZSgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGFuZ3VhZ2VNZW51Q2xvc2VCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VNZW51Q2xvc2UoKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBsYW5ndWFnZU1lbnVDbG9zZSgpIHtcclxuICAgIGlmIChsYW5ndWFnZU1lbnVUb2dnbGVyLmNsYXNzTGlzdC5jb250YWlucyhcImlzLWFjdGl2ZVwiKSkge1xyXG4gICAgICAgIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShcIm92ZXJmbG93LWhpZGRlblwiKVxyXG4gICAgICAgIGxhbmd1YWdlTWVudVRvZ2dsZXIuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJylcclxuICAgICAgICBsYW5ndWFnZU1lbnVUb2dnbGVyLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIGZhbHNlKTtcclxuICAgICAgICBsYW5ndWFnZU1lbnUuY2xhc3NMaXN0LnJlbW92ZSgnaXMtYWN0aXZlJylcclxuICAgICAgICBsYW5ndWFnZU1lbnUuc2V0QXR0cmlidXRlKCdhcmlhLWhpZGRlbicsIHRydWUpO1xyXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcclxuICAgIH1cclxufVxyXG5cclxuXHJcbi8qIERlc2t0b3AgbmF2aWdhdGlvbiBoZWlnaHQgZml4ICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4vKiBUaGlyZCBsZXZlbCBob3ZlciBzaG91bGQgaW5jcmVhc2UgdGhlIG1lbnUgaGVpZ2h0ICAgICAgKi9cclxuY29uc3QgdGhpcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLnNlY29uZC1sZXZlbCBsaVwiKTtcclxuXHJcbmZvciAobGV0IGkgPSAwOyBpIDwgdGhpcmQubGVuZ3RoOyBpKyspIHtcclxuICAgIHRoaXJkW2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW92ZXJcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnF1ZXJ5U2VsZWN0b3IoXCIudGhpcmQtbGV2ZWxcIikpIHtcclxuICAgICAgICAgICAgdGhpcy5jbG9zZXN0KFwiLm1lZ2FcIikuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5xdWVyeVNlbGVjdG9yKFwiLnRoaXJkLWxldmVsXCIpLm9mZnNldEhlaWdodCArIDgwICsgXCJweFwiO1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5U2VsZWN0b3IoXCIudGhpcmQtbGV2ZWxcIikuc3R5bGUubWluSGVpZ2h0ID0gdGhpcy5jbG9zZXN0KFwiLnNlY29uZC1sZXZlbFwiKS5vZmZzZXRIZWlnaHQgKyBcInB4XCI7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcmRbaV0uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlb3V0XCIsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB0aGlzLmNsb3Nlc3QoXCIubWVnYVwiKS5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgnbWluLWhlaWdodCcpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcblxyXG4vKiBBZGQgc2tpcCBsaW5rIGFuY2hvciB0byBIMSB0YWcgKi9cclxuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcImgxXCIpLnNldEF0dHJpYnV0ZShcImlkXCIsIFwibWFpbi1jb250ZW50XCIpO1xyXG4iLCIvKipcbiAqIFNTUiBXaW5kb3cgMy4wLjBcbiAqIEJldHRlciBoYW5kbGluZyBmb3Igd2luZG93IG9iamVjdCBpbiBTU1IgZW52aXJvbm1lbnRcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2xpbWl0czR3ZWIvc3NyLXdpbmRvd1xuICpcbiAqIENvcHlyaWdodCAyMDIwLCBWbGFkaW1pciBLaGFybGFtcGlkaVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVFxuICpcbiAqIFJlbGVhc2VkIG9uOiBOb3ZlbWJlciA5LCAyMDIwXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5mdW5jdGlvbiBpc09iamVjdChvYmopIHtcbiAgICByZXR1cm4gKG9iaiAhPT0gbnVsbCAmJlxuICAgICAgICB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAnY29uc3RydWN0b3InIGluIG9iaiAmJlxuICAgICAgICBvYmouY29uc3RydWN0b3IgPT09IE9iamVjdCk7XG59XG5mdW5jdGlvbiBleHRlbmQodGFyZ2V0LCBzcmMpIHtcbiAgICBpZiAodGFyZ2V0ID09PSB2b2lkIDApIHsgdGFyZ2V0ID0ge307IH1cbiAgICBpZiAoc3JjID09PSB2b2lkIDApIHsgc3JjID0ge307IH1cbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldFtrZXldID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIHRhcmdldFtrZXldID0gc3JjW2tleV07XG4gICAgICAgIGVsc2UgaWYgKGlzT2JqZWN0KHNyY1trZXldKSAmJlxuICAgICAgICAgICAgaXNPYmplY3QodGFyZ2V0W2tleV0pICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhzcmNba2V5XSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZXh0ZW5kKHRhcmdldFtrZXldLCBzcmNba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxudmFyIHNzckRvY3VtZW50ID0ge1xuICAgIGJvZHk6IHt9LFxuICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgYWN0aXZlRWxlbWVudDoge1xuICAgICAgICBibHVyOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgIG5vZGVOYW1lOiAnJyxcbiAgICB9LFxuICAgIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9LFxuICAgIGdldEVsZW1lbnRCeUlkOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgY3JlYXRlRXZlbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluaXRFdmVudDogZnVuY3Rpb24gKCkgeyB9LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlRWxlbWVudDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgICAgICBzdHlsZToge30sXG4gICAgICAgICAgICBzZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICAgICAgICAgIGdldEVsZW1lbnRzQnlUYWdOYW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZUVsZW1lbnROUzogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbiAgICBpbXBvcnROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgbG9jYXRpb246IHtcbiAgICAgICAgaGFzaDogJycsXG4gICAgICAgIGhvc3Q6ICcnLFxuICAgICAgICBob3N0bmFtZTogJycsXG4gICAgICAgIGhyZWY6ICcnLFxuICAgICAgICBvcmlnaW46ICcnLFxuICAgICAgICBwYXRobmFtZTogJycsXG4gICAgICAgIHByb3RvY29sOiAnJyxcbiAgICAgICAgc2VhcmNoOiAnJyxcbiAgICB9LFxufTtcbmZ1bmN0aW9uIGdldERvY3VtZW50KCkge1xuICAgIHZhciBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9jdW1lbnQgOiB7fTtcbiAgICBleHRlbmQoZG9jLCBzc3JEb2N1bWVudCk7XG4gICAgcmV0dXJuIGRvYztcbn1cblxudmFyIHNzcldpbmRvdyA9IHtcbiAgICBkb2N1bWVudDogc3NyRG9jdW1lbnQsXG4gICAgbmF2aWdhdG9yOiB7XG4gICAgICAgIHVzZXJBZ2VudDogJycsXG4gICAgfSxcbiAgICBsb2NhdGlvbjoge1xuICAgICAgICBoYXNoOiAnJyxcbiAgICAgICAgaG9zdDogJycsXG4gICAgICAgIGhvc3RuYW1lOiAnJyxcbiAgICAgICAgaHJlZjogJycsXG4gICAgICAgIG9yaWdpbjogJycsXG4gICAgICAgIHBhdGhuYW1lOiAnJyxcbiAgICAgICAgcHJvdG9jb2w6ICcnLFxuICAgICAgICBzZWFyY2g6ICcnLFxuICAgIH0sXG4gICAgaGlzdG9yeToge1xuICAgICAgICByZXBsYWNlU3RhdGU6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICAgICAgcHVzaFN0YXRlOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgIGdvOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgICAgIGJhY2s6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICB9LFxuICAgIEN1c3RvbUV2ZW50OiBmdW5jdGlvbiBDdXN0b21FdmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSxcbiAgICBhZGRFdmVudExpc3RlbmVyOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKCkgeyB9LFxuICAgIGdldENvbXB1dGVkU3R5bGU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFByb3BlcnR5VmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgSW1hZ2U6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICBEYXRlOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgc2NyZWVuOiB7fSxcbiAgICBzZXRUaW1lb3V0OiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgY2xlYXJUaW1lb3V0OiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgbWF0Y2hNZWRpYTogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgfSxcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWU6IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApO1xuICAgIH0sXG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWU6IGZ1bmN0aW9uIChpZCkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY2xlYXJUaW1lb3V0KGlkKTtcbiAgICB9LFxufTtcbmZ1bmN0aW9uIGdldFdpbmRvdygpIHtcbiAgICB2YXIgd2luID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fTtcbiAgICBleHRlbmQod2luLCBzc3JXaW5kb3cpO1xuICAgIHJldHVybiB3aW47XG59XG5cbmV4cG9ydCB7IGV4dGVuZCwgZ2V0RG9jdW1lbnQsIGdldFdpbmRvdywgc3NyRG9jdW1lbnQsIHNzcldpbmRvdyB9O1xuIiwiLyoqXG4gKiBEb203IDMuMC4wXG4gKiBNaW5pbWFsaXN0aWMgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBET00gbWFuaXB1bGF0aW9uLCB3aXRoIGEgalF1ZXJ5LWNvbXBhdGlibGUgQVBJXG4gKiBodHRwczovL2ZyYW1ld29yazcuaW8vZG9jcy9kb203Lmh0bWxcbiAqXG4gKiBDb3B5cmlnaHQgMjAyMCwgVmxhZGltaXIgS2hhcmxhbXBpZGlcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBNSVRcbiAqXG4gKiBSZWxlYXNlZCBvbjogTm92ZW1iZXIgOSwgMjAyMFxuICovXG5pbXBvcnQgeyBnZXRXaW5kb3csIGdldERvY3VtZW50IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcbiAgc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzcztcbn1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHtcbiAgICByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pO1xuICB9O1xuICByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuXG4gIHRyeSB7XG4gICAgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHtcbiAgaWYgKF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSkge1xuICAgIF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDtcbiAgfSBlbHNlIHtcbiAgICBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBfc2V0UHJvdG90eXBlT2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7XG4gIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDtcblxuICBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICAgIGlmIChDbGFzcyA9PT0gbnVsbCB8fCAhX2lzTmF0aXZlRnVuY3Rpb24oQ2xhc3MpKSByZXR1cm4gQ2xhc3M7XG5cbiAgICBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9jYWNoZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKF9jYWNoZS5oYXMoQ2xhc3MpKSByZXR1cm4gX2NhY2hlLmdldChDbGFzcyk7XG5cbiAgICAgIF9jYWNoZS5zZXQoQ2xhc3MsIFdyYXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpO1xuICB9O1xuXG4gIHJldHVybiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKTtcbn1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7XG4gIGlmIChzZWxmID09PSB2b2lkIDApIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIH1cblxuICByZXR1cm4gc2VsZjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbmZ1bmN0aW9uIG1ha2VSZWFjdGl2ZShvYmopIHtcbiAgdmFyIHByb3RvID0gb2JqLl9fcHJvdG9fXztcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwgJ19fcHJvdG9fXycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiBwcm90bztcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICBwcm90by5fX3Byb3RvX18gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xufVxuXG52YXIgRG9tNyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0FycmF5KSB7XG4gIF9pbmhlcml0c0xvb3NlKERvbTcsIF9BcnJheSk7XG5cbiAgZnVuY3Rpb24gRG9tNyhpdGVtcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX0FycmF5LmNhbGwuYXBwbHkoX0FycmF5LCBbdGhpc10uY29uY2F0KGl0ZW1zKSkgfHwgdGhpcztcbiAgICBtYWtlUmVhY3RpdmUoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcykpO1xuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHJldHVybiBEb203O1xufSggLyojX19QVVJFX18qL193cmFwTmF0aXZlU3VwZXIoQXJyYXkpKTtcblxuZnVuY3Rpb24gYXJyYXlGbGF0KGFycikge1xuICBpZiAoYXJyID09PSB2b2lkIDApIHtcbiAgICBhcnIgPSBbXTtcbiAgfVxuXG4gIHZhciByZXMgPSBbXTtcbiAgYXJyLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZWwpKSB7XG4gICAgICByZXMucHVzaC5hcHBseShyZXMsIGFycmF5RmxhdChlbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMucHVzaChlbCk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlcztcbn1cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFyciwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChhcnIsIGNhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGFycmF5VW5pcXVlKGFycikge1xuICB2YXIgdW5pcXVlQXJyYXkgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh1bmlxdWVBcnJheS5pbmRleE9mKGFycltpXSkgPT09IC0xKSB1bmlxdWVBcnJheS5wdXNoKGFycltpXSk7XG4gIH1cblxuICByZXR1cm4gdW5pcXVlQXJyYXk7XG59XG5mdW5jdGlvbiB0b0NhbWVsQ2FzZShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLy0oLikvZywgZnVuY3Rpb24gKG1hdGNoLCBncm91cCkge1xuICAgIHJldHVybiBncm91cC50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcXNhKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmICh0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIFtzZWxlY3Rvcl07XG4gIH1cblxuICB2YXIgYSA9IFtdO1xuICB2YXIgcmVzID0gY29udGV4dC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGEucHVzaChyZXNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIGE7XG59XG5cbmZ1bmN0aW9uICQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICB2YXIgYXJyID0gW107XG5cbiAgaWYgKCFjb250ZXh0ICYmIHNlbGVjdG9yIGluc3RhbmNlb2YgRG9tNykge1xuICAgIHJldHVybiBzZWxlY3RvcjtcbiAgfVxuXG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gbmV3IERvbTcoYXJyKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VsZWN0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGh0bWwgPSBzZWxlY3Rvci50cmltKCk7XG5cbiAgICBpZiAoaHRtbC5pbmRleE9mKCc8JykgPj0gMCAmJiBodG1sLmluZGV4T2YoJz4nKSA+PSAwKSB7XG4gICAgICB2YXIgdG9DcmVhdGUgPSAnZGl2JztcbiAgICAgIGlmIChodG1sLmluZGV4T2YoJzxsaScpID09PSAwKSB0b0NyZWF0ZSA9ICd1bCc7XG4gICAgICBpZiAoaHRtbC5pbmRleE9mKCc8dHInKSA9PT0gMCkgdG9DcmVhdGUgPSAndGJvZHknO1xuICAgICAgaWYgKGh0bWwuaW5kZXhPZignPHRkJykgPT09IDAgfHwgaHRtbC5pbmRleE9mKCc8dGgnKSA9PT0gMCkgdG9DcmVhdGUgPSAndHInO1xuICAgICAgaWYgKGh0bWwuaW5kZXhPZignPHRib2R5JykgPT09IDApIHRvQ3JlYXRlID0gJ3RhYmxlJztcbiAgICAgIGlmIChodG1sLmluZGV4T2YoJzxvcHRpb24nKSA9PT0gMCkgdG9DcmVhdGUgPSAnc2VsZWN0JztcbiAgICAgIHZhciB0ZW1wUGFyZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0b0NyZWF0ZSk7XG4gICAgICB0ZW1wUGFyZW50LmlubmVySFRNTCA9IGh0bWw7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVtcFBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGFyci5wdXNoKHRlbXBQYXJlbnQuY2hpbGROb2Rlc1tpXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyciA9IHFzYShzZWxlY3Rvci50cmltKCksIGNvbnRleHQgfHwgZG9jdW1lbnQpO1xuICAgIH0gLy8gYXJyID0gcXNhKHNlbGVjdG9yLCBkb2N1bWVudCk7XG5cbiAgfSBlbHNlIGlmIChzZWxlY3Rvci5ub2RlVHlwZSB8fCBzZWxlY3RvciA9PT0gd2luZG93IHx8IHNlbGVjdG9yID09PSBkb2N1bWVudCkge1xuICAgIGFyci5wdXNoKHNlbGVjdG9yKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdG9yKSkge1xuICAgIGlmIChzZWxlY3RvciBpbnN0YW5jZW9mIERvbTcpIHJldHVybiBzZWxlY3RvcjtcbiAgICBhcnIgPSBzZWxlY3RvcjtcbiAgfVxuXG4gIHJldHVybiBuZXcgRG9tNyhhcnJheVVuaXF1ZShhcnIpKTtcbn1cblxuJC5mbiA9IERvbTcucHJvdG90eXBlO1xuXG5mdW5jdGlvbiBhZGRDbGFzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzZXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgY2xhc3Nlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBjbGFzc05hbWVzID0gYXJyYXlGbGF0KGNsYXNzZXMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGMuc3BsaXQoJyAnKTtcbiAgfSkpO1xuICB0aGlzLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7XG4gICAgdmFyIF9lbCRjbGFzc0xpc3Q7XG5cbiAgICAoX2VsJGNsYXNzTGlzdCA9IGVsLmNsYXNzTGlzdCkuYWRkLmFwcGx5KF9lbCRjbGFzc0xpc3QsIGNsYXNzTmFtZXMpO1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUNsYXNzKCkge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGNsYXNzZXMgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBjbGFzc2VzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cblxuICB2YXIgY2xhc3NOYW1lcyA9IGFycmF5RmxhdChjbGFzc2VzLm1hcChmdW5jdGlvbiAoYykge1xuICAgIHJldHVybiBjLnNwbGl0KCcgJyk7XG4gIH0pKTtcbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgIHZhciBfZWwkY2xhc3NMaXN0MjtcblxuICAgIChfZWwkY2xhc3NMaXN0MiA9IGVsLmNsYXNzTGlzdCkucmVtb3ZlLmFwcGx5KF9lbCRjbGFzc0xpc3QyLCBjbGFzc05hbWVzKTtcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcygpIHtcbiAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBjbGFzc2VzID0gbmV3IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgY2xhc3Nlc1tfa2V5M10gPSBhcmd1bWVudHNbX2tleTNdO1xuICB9XG5cbiAgdmFyIGNsYXNzTmFtZXMgPSBhcnJheUZsYXQoY2xhc3Nlcy5tYXAoZnVuY3Rpb24gKGMpIHtcbiAgICByZXR1cm4gYy5zcGxpdCgnICcpO1xuICB9KSk7XG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICBjbGFzc05hbWVzLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgICAgZWwuY2xhc3NMaXN0LnRvZ2dsZShjbGFzc05hbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFzQ2xhc3MoKSB7XG4gIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgY2xhc3NlcyA9IG5ldyBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykge1xuICAgIGNsYXNzZXNbX2tleTRdID0gYXJndW1lbnRzW19rZXk0XTtcbiAgfVxuXG4gIHZhciBjbGFzc05hbWVzID0gYXJyYXlGbGF0KGNsYXNzZXMubWFwKGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGMuc3BsaXQoJyAnKTtcbiAgfSkpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIodGhpcywgZnVuY3Rpb24gKGVsKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXMuZmlsdGVyKGZ1bmN0aW9uIChjbGFzc05hbWUpIHtcbiAgICAgIHJldHVybiBlbC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKTtcbiAgICB9KS5sZW5ndGggPiAwO1xuICB9KS5sZW5ndGggPiAwO1xufVxuXG5mdW5jdGlvbiBhdHRyKGF0dHJzLCB2YWx1ZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgYXR0cnMgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gR2V0IGF0dHJcbiAgICBpZiAodGhpc1swXSkgcmV0dXJuIHRoaXNbMF0uZ2V0QXR0cmlidXRlKGF0dHJzKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9IC8vIFNldCBhdHRyc1xuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFN0cmluZ1xuICAgICAgdGhpc1tpXS5zZXRBdHRyaWJ1dGUoYXR0cnMsIHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT2JqZWN0XG4gICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBhdHRycykge1xuICAgICAgICB0aGlzW2ldW2F0dHJOYW1lXSA9IGF0dHJzW2F0dHJOYW1lXTtcbiAgICAgICAgdGhpc1tpXS5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIGF0dHJzW2F0dHJOYW1lXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUF0dHIoYXR0cikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGlzW2ldLnJlbW92ZUF0dHJpYnV0ZShhdHRyKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBwcm9wKHByb3BzLCB2YWx1ZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gR2V0IHByb3BcbiAgICBpZiAodGhpc1swXSkgcmV0dXJuIHRoaXNbMF1bcHJvcHNdO1xuICB9IGVsc2Uge1xuICAgIC8vIFNldCBwcm9wc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgLy8gU3RyaW5nXG4gICAgICAgIHRoaXNbaV1bcHJvcHNdID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgICB0aGlzW2ldW3Byb3BOYW1lXSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGRhdGEoa2V5LCB2YWx1ZSkge1xuICB2YXIgZWw7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBlbCA9IHRoaXNbMF07XG4gICAgaWYgKCFlbCkgcmV0dXJuIHVuZGVmaW5lZDsgLy8gR2V0IHZhbHVlXG5cbiAgICBpZiAoZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZSAmJiBrZXkgaW4gZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZSkge1xuICAgICAgcmV0dXJuIGVsLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2Vba2V5XTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YUtleSA9IGVsLmdldEF0dHJpYnV0ZShcImRhdGEtXCIgKyBrZXkpO1xuXG4gICAgaWYgKGRhdGFLZXkpIHtcbiAgICAgIHJldHVybiBkYXRhS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0gLy8gU2V0IHZhbHVlXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBlbCA9IHRoaXNbaV07XG4gICAgaWYgKCFlbC5kb203RWxlbWVudERhdGFTdG9yYWdlKSBlbC5kb203RWxlbWVudERhdGFTdG9yYWdlID0ge307XG4gICAgZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZVtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlRGF0YShrZXkpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGVsID0gdGhpc1tpXTtcblxuICAgIGlmIChlbC5kb203RWxlbWVudERhdGFTdG9yYWdlICYmIGVsLmRvbTdFbGVtZW50RGF0YVN0b3JhZ2Vba2V5XSkge1xuICAgICAgZWwuZG9tN0VsZW1lbnREYXRhU3RvcmFnZVtrZXldID0gbnVsbDtcbiAgICAgIGRlbGV0ZSBlbC5kb203RWxlbWVudERhdGFTdG9yYWdlW2tleV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGFzZXQoKSB7XG4gIHZhciBlbCA9IHRoaXNbMF07XG4gIGlmICghZWwpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBkYXRhc2V0ID0ge307IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBpZiAoZWwuZGF0YXNldCkge1xuICAgIGZvciAodmFyIGRhdGFLZXkgaW4gZWwuZGF0YXNldCkge1xuICAgICAgZGF0YXNldFtkYXRhS2V5XSA9IGVsLmRhdGFzZXRbZGF0YUtleV07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWwuYXR0cmlidXRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdmFyIF9hdHRyID0gZWwuYXR0cmlidXRlc1tpXTtcblxuICAgICAgaWYgKF9hdHRyLm5hbWUuaW5kZXhPZignZGF0YS0nKSA+PSAwKSB7XG4gICAgICAgIGRhdGFzZXRbdG9DYW1lbENhc2UoX2F0dHIubmFtZS5zcGxpdCgnZGF0YS0nKVsxXSldID0gX2F0dHIudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9yICh2YXIga2V5IGluIGRhdGFzZXQpIHtcbiAgICBpZiAoZGF0YXNldFtrZXldID09PSAnZmFsc2UnKSBkYXRhc2V0W2tleV0gPSBmYWxzZTtlbHNlIGlmIChkYXRhc2V0W2tleV0gPT09ICd0cnVlJykgZGF0YXNldFtrZXldID0gdHJ1ZTtlbHNlIGlmIChwYXJzZUZsb2F0KGRhdGFzZXRba2V5XSkgPT09IGRhdGFzZXRba2V5XSAqIDEpIGRhdGFzZXRba2V5XSAqPSAxO1xuICB9XG5cbiAgcmV0dXJuIGRhdGFzZXQ7XG59XG5cbmZ1bmN0aW9uIHZhbCh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgIC8vIGdldCB2YWx1ZVxuICAgIHZhciBlbCA9IHRoaXNbMF07XG4gICAgaWYgKCFlbCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGlmIChlbC5tdWx0aXBsZSAmJiBlbC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnc2VsZWN0Jykge1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YWx1ZXMucHVzaChlbC5zZWxlY3RlZE9wdGlvbnNbaV0udmFsdWUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHJldHVybiBlbC52YWx1ZTtcbiAgfSAvLyBzZXQgdmFsdWVcblxuXG4gIGZvciAodmFyIF9pID0gMDsgX2kgPCB0aGlzLmxlbmd0aDsgX2kgKz0gMSkge1xuICAgIHZhciBfZWwgPSB0aGlzW19pXTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBfZWwubXVsdGlwbGUgJiYgX2VsLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdzZWxlY3QnKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IF9lbC5vcHRpb25zLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgIF9lbC5vcHRpb25zW2pdLnNlbGVjdGVkID0gdmFsdWUuaW5kZXhPZihfZWwub3B0aW9uc1tqXS52YWx1ZSkgPj0gMDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX2VsLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLnZhbCh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zZm9ybSh0cmFuc2Zvcm0pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhpc1tpXS5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdHJhbnNpdGlvbihkdXJhdGlvbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGlzW2ldLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IHR5cGVvZiBkdXJhdGlvbiAhPT0gJ3N0cmluZycgPyBkdXJhdGlvbiArIFwibXNcIiA6IGR1cmF0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIG9uKCkge1xuICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcbiAgICBhcmdzW19rZXk1XSA9IGFyZ3VtZW50c1tfa2V5NV07XG4gIH1cblxuICB2YXIgZXZlbnRUeXBlID0gYXJnc1swXSxcbiAgICAgIHRhcmdldFNlbGVjdG9yID0gYXJnc1sxXSxcbiAgICAgIGxpc3RlbmVyID0gYXJnc1syXSxcbiAgICAgIGNhcHR1cmUgPSBhcmdzWzNdO1xuXG4gIGlmICh0eXBlb2YgYXJnc1sxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGV2ZW50VHlwZSA9IGFyZ3NbMF07XG4gICAgbGlzdGVuZXIgPSBhcmdzWzFdO1xuICAgIGNhcHR1cmUgPSBhcmdzWzJdO1xuICAgIHRhcmdldFNlbGVjdG9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFjYXB0dXJlKSBjYXB0dXJlID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gaGFuZGxlTGl2ZUV2ZW50KGUpIHtcbiAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQ7XG4gICAgaWYgKCF0YXJnZXQpIHJldHVybjtcbiAgICB2YXIgZXZlbnREYXRhID0gZS50YXJnZXQuZG9tN0V2ZW50RGF0YSB8fCBbXTtcblxuICAgIGlmIChldmVudERhdGEuaW5kZXhPZihlKSA8IDApIHtcbiAgICAgIGV2ZW50RGF0YS51bnNoaWZ0KGUpO1xuICAgIH1cblxuICAgIGlmICgkKHRhcmdldCkuaXModGFyZ2V0U2VsZWN0b3IpKSBsaXN0ZW5lci5hcHBseSh0YXJnZXQsIGV2ZW50RGF0YSk7ZWxzZSB7XG4gICAgICB2YXIgX3BhcmVudHMgPSAkKHRhcmdldCkucGFyZW50cygpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBfcGFyZW50cy5sZW5ndGg7IGsgKz0gMSkge1xuICAgICAgICBpZiAoJChfcGFyZW50c1trXSkuaXModGFyZ2V0U2VsZWN0b3IpKSBsaXN0ZW5lci5hcHBseShfcGFyZW50c1trXSwgZXZlbnREYXRhKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVFdmVudChlKSB7XG4gICAgdmFyIGV2ZW50RGF0YSA9IGUgJiYgZS50YXJnZXQgPyBlLnRhcmdldC5kb203RXZlbnREYXRhIHx8IFtdIDogW107XG5cbiAgICBpZiAoZXZlbnREYXRhLmluZGV4T2YoZSkgPCAwKSB7XG4gICAgICBldmVudERhdGEudW5zaGlmdChlKTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lci5hcHBseSh0aGlzLCBldmVudERhdGEpO1xuICB9XG5cbiAgdmFyIGV2ZW50cyA9IGV2ZW50VHlwZS5zcGxpdCgnICcpO1xuICB2YXIgajtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgZWwgPSB0aGlzW2ldO1xuXG4gICAgaWYgKCF0YXJnZXRTZWxlY3Rvcikge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGV2ZW50cy5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICB2YXIgZXZlbnQgPSBldmVudHNbal07XG4gICAgICAgIGlmICghZWwuZG9tN0xpc3RlbmVycykgZWwuZG9tN0xpc3RlbmVycyA9IHt9O1xuICAgICAgICBpZiAoIWVsLmRvbTdMaXN0ZW5lcnNbZXZlbnRdKSBlbC5kb203TGlzdGVuZXJzW2V2ZW50XSA9IFtdO1xuICAgICAgICBlbC5kb203TGlzdGVuZXJzW2V2ZW50XS5wdXNoKHtcbiAgICAgICAgICBsaXN0ZW5lcjogbGlzdGVuZXIsXG4gICAgICAgICAgcHJveHlMaXN0ZW5lcjogaGFuZGxlRXZlbnRcbiAgICAgICAgfSk7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnQsIGhhbmRsZUV2ZW50LCBjYXB0dXJlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGl2ZSBldmVudHNcbiAgICAgIGZvciAoaiA9IDA7IGogPCBldmVudHMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgdmFyIF9ldmVudCA9IGV2ZW50c1tqXTtcbiAgICAgICAgaWYgKCFlbC5kb203TGl2ZUxpc3RlbmVycykgZWwuZG9tN0xpdmVMaXN0ZW5lcnMgPSB7fTtcbiAgICAgICAgaWYgKCFlbC5kb203TGl2ZUxpc3RlbmVyc1tfZXZlbnRdKSBlbC5kb203TGl2ZUxpc3RlbmVyc1tfZXZlbnRdID0gW107XG5cbiAgICAgICAgZWwuZG9tN0xpdmVMaXN0ZW5lcnNbX2V2ZW50XS5wdXNoKHtcbiAgICAgICAgICBsaXN0ZW5lcjogbGlzdGVuZXIsXG4gICAgICAgICAgcHJveHlMaXN0ZW5lcjogaGFuZGxlTGl2ZUV2ZW50XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoX2V2ZW50LCBoYW5kbGVMaXZlRXZlbnQsIGNhcHR1cmUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBvZmYoKSB7XG4gIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgIGFyZ3NbX2tleTZdID0gYXJndW1lbnRzW19rZXk2XTtcbiAgfVxuXG4gIHZhciBldmVudFR5cGUgPSBhcmdzWzBdLFxuICAgICAgdGFyZ2V0U2VsZWN0b3IgPSBhcmdzWzFdLFxuICAgICAgbGlzdGVuZXIgPSBhcmdzWzJdLFxuICAgICAgY2FwdHVyZSA9IGFyZ3NbM107XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzFdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnRUeXBlID0gYXJnc1swXTtcbiAgICBsaXN0ZW5lciA9IGFyZ3NbMV07XG4gICAgY2FwdHVyZSA9IGFyZ3NbMl07XG4gICAgdGFyZ2V0U2VsZWN0b3IgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWNhcHR1cmUpIGNhcHR1cmUgPSBmYWxzZTtcbiAgdmFyIGV2ZW50cyA9IGV2ZW50VHlwZS5zcGxpdCgnICcpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGV2ZW50ID0gZXZlbnRzW2ldO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICB2YXIgZWwgPSB0aGlzW2pdO1xuICAgICAgdmFyIGhhbmRsZXJzID0gdm9pZCAwO1xuXG4gICAgICBpZiAoIXRhcmdldFNlbGVjdG9yICYmIGVsLmRvbTdMaXN0ZW5lcnMpIHtcbiAgICAgICAgaGFuZGxlcnMgPSBlbC5kb203TGlzdGVuZXJzW2V2ZW50XTtcbiAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U2VsZWN0b3IgJiYgZWwuZG9tN0xpdmVMaXN0ZW5lcnMpIHtcbiAgICAgICAgaGFuZGxlcnMgPSBlbC5kb203TGl2ZUxpc3RlbmVyc1tldmVudF07XG4gICAgICB9XG5cbiAgICAgIGlmIChoYW5kbGVycyAmJiBoYW5kbGVycy5sZW5ndGgpIHtcbiAgICAgICAgZm9yICh2YXIgayA9IGhhbmRsZXJzLmxlbmd0aCAtIDE7IGsgPj0gMDsgayAtPSAxKSB7XG4gICAgICAgICAgdmFyIGhhbmRsZXIgPSBoYW5kbGVyc1trXTtcblxuICAgICAgICAgIGlmIChsaXN0ZW5lciAmJiBoYW5kbGVyLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlci5wcm94eUxpc3RlbmVyLCBjYXB0dXJlKTtcbiAgICAgICAgICAgIGhhbmRsZXJzLnNwbGljZShrLCAxKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxpc3RlbmVyICYmIGhhbmRsZXIubGlzdGVuZXIgJiYgaGFuZGxlci5saXN0ZW5lci5kb203cHJveHkgJiYgaGFuZGxlci5saXN0ZW5lci5kb203cHJveHkgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLnByb3h5TGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKGssIDEpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxpc3RlbmVyKSB7XG4gICAgICAgICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyLnByb3h5TGlzdGVuZXIsIGNhcHR1cmUpO1xuICAgICAgICAgICAgaGFuZGxlcnMuc3BsaWNlKGssIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBvbmNlKCkge1xuICB2YXIgZG9tID0gdGhpcztcblxuICBmb3IgKHZhciBfbGVuNyA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjcpLCBfa2V5NyA9IDA7IF9rZXk3IDwgX2xlbjc7IF9rZXk3KyspIHtcbiAgICBhcmdzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG4gIH1cblxuICB2YXIgZXZlbnROYW1lID0gYXJnc1swXSxcbiAgICAgIHRhcmdldFNlbGVjdG9yID0gYXJnc1sxXSxcbiAgICAgIGxpc3RlbmVyID0gYXJnc1syXSxcbiAgICAgIGNhcHR1cmUgPSBhcmdzWzNdO1xuXG4gIGlmICh0eXBlb2YgYXJnc1sxXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGV2ZW50TmFtZSA9IGFyZ3NbMF07XG4gICAgbGlzdGVuZXIgPSBhcmdzWzFdO1xuICAgIGNhcHR1cmUgPSBhcmdzWzJdO1xuICAgIHRhcmdldFNlbGVjdG9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gb25jZUhhbmRsZXIoKSB7XG4gICAgZm9yICh2YXIgX2xlbjggPSBhcmd1bWVudHMubGVuZ3RoLCBldmVudEFyZ3MgPSBuZXcgQXJyYXkoX2xlbjgpLCBfa2V5OCA9IDA7IF9rZXk4IDwgX2xlbjg7IF9rZXk4KyspIHtcbiAgICAgIGV2ZW50QXJnc1tfa2V5OF0gPSBhcmd1bWVudHNbX2tleThdO1xuICAgIH1cblxuICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGV2ZW50QXJncyk7XG4gICAgZG9tLm9mZihldmVudE5hbWUsIHRhcmdldFNlbGVjdG9yLCBvbmNlSGFuZGxlciwgY2FwdHVyZSk7XG5cbiAgICBpZiAob25jZUhhbmRsZXIuZG9tN3Byb3h5KSB7XG4gICAgICBkZWxldGUgb25jZUhhbmRsZXIuZG9tN3Byb3h5O1xuICAgIH1cbiAgfVxuXG4gIG9uY2VIYW5kbGVyLmRvbTdwcm94eSA9IGxpc3RlbmVyO1xuICByZXR1cm4gZG9tLm9uKGV2ZW50TmFtZSwgdGFyZ2V0U2VsZWN0b3IsIG9uY2VIYW5kbGVyLCBjYXB0dXJlKTtcbn1cblxuZnVuY3Rpb24gdHJpZ2dlcigpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGZvciAodmFyIF9sZW45ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuOSksIF9rZXk5ID0gMDsgX2tleTkgPCBfbGVuOTsgX2tleTkrKykge1xuICAgIGFyZ3NbX2tleTldID0gYXJndW1lbnRzW19rZXk5XTtcbiAgfVxuXG4gIHZhciBldmVudHMgPSBhcmdzWzBdLnNwbGl0KCcgJyk7XG4gIHZhciBldmVudERhdGEgPSBhcmdzWzFdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGV2ZW50ID0gZXZlbnRzW2ldO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICB2YXIgZWwgPSB0aGlzW2pdO1xuXG4gICAgICBpZiAod2luZG93LkN1c3RvbUV2ZW50KSB7XG4gICAgICAgIHZhciBldnQgPSBuZXcgd2luZG93LkN1c3RvbUV2ZW50KGV2ZW50LCB7XG4gICAgICAgICAgZGV0YWlsOiBldmVudERhdGEsXG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBlbC5kb203RXZlbnREYXRhID0gYXJncy5maWx0ZXIoZnVuY3Rpb24gKGRhdGEsIGRhdGFJbmRleCkge1xuICAgICAgICAgIHJldHVybiBkYXRhSW5kZXggPiAwO1xuICAgICAgICB9KTtcbiAgICAgICAgZWwuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgICAgICBlbC5kb203RXZlbnREYXRhID0gW107XG4gICAgICAgIGRlbGV0ZSBlbC5kb203RXZlbnREYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB0cmFuc2l0aW9uRW5kKGNhbGxiYWNrKSB7XG4gIHZhciBkb20gPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIGZpcmVDYWxsQmFjayhlKSB7XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBlKTtcbiAgICBkb20ub2ZmKCd0cmFuc2l0aW9uZW5kJywgZmlyZUNhbGxCYWNrKTtcbiAgfVxuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIGRvbS5vbigndHJhbnNpdGlvbmVuZCcsIGZpcmVDYWxsQmFjayk7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gYW5pbWF0aW9uRW5kKGNhbGxiYWNrKSB7XG4gIHZhciBkb20gPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIGZpcmVDYWxsQmFjayhlKSB7XG4gICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47XG4gICAgY2FsbGJhY2suY2FsbCh0aGlzLCBlKTtcbiAgICBkb20ub2ZmKCdhbmltYXRpb25lbmQnLCBmaXJlQ2FsbEJhY2spO1xuICB9XG5cbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgZG9tLm9uKCdhbmltYXRpb25lbmQnLCBmaXJlQ2FsbEJhY2spO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHdpZHRoKCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG5cbiAgaWYgKHRoaXNbMF0gPT09IHdpbmRvdykge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgfVxuXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmNzcygnd2lkdGgnKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gb3V0ZXJXaWR0aChpbmNsdWRlTWFyZ2lucykge1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGluY2x1ZGVNYXJnaW5zKSB7XG4gICAgICB2YXIgX3N0eWxlcyA9IHRoaXMuc3R5bGVzKCk7XG5cbiAgICAgIHJldHVybiB0aGlzWzBdLm9mZnNldFdpZHRoICsgcGFyc2VGbG9hdChfc3R5bGVzLmdldFByb3BlcnR5VmFsdWUoJ21hcmdpbi1yaWdodCcpKSArIHBhcnNlRmxvYXQoX3N0eWxlcy5nZXRQcm9wZXJ0eVZhbHVlKCdtYXJnaW4tbGVmdCcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1swXS5vZmZzZXRXaWR0aDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBoZWlnaHQoKSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcblxuICBpZiAodGhpc1swXSA9PT0gd2luZG93KSB7XG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodDtcbiAgfVxuXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdCh0aGlzLmNzcygnaGVpZ2h0JykpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIG91dGVySGVpZ2h0KGluY2x1ZGVNYXJnaW5zKSB7XG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoaW5jbHVkZU1hcmdpbnMpIHtcbiAgICAgIHZhciBfc3R5bGVzMiA9IHRoaXMuc3R5bGVzKCk7XG5cbiAgICAgIHJldHVybiB0aGlzWzBdLm9mZnNldEhlaWdodCArIHBhcnNlRmxvYXQoX3N0eWxlczIuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLXRvcCcpKSArIHBhcnNlRmxvYXQoX3N0eWxlczIuZ2V0UHJvcGVydHlWYWx1ZSgnbWFyZ2luLWJvdHRvbScpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1swXS5vZmZzZXRIZWlnaHQ7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KCkge1xuICBpZiAodGhpcy5sZW5ndGggPiAwKSB7XG4gICAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICAgIHZhciBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgdmFyIGVsID0gdGhpc1swXTtcbiAgICB2YXIgYm94ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdmFyIGJvZHkgPSBkb2N1bWVudC5ib2R5O1xuICAgIHZhciBjbGllbnRUb3AgPSBlbC5jbGllbnRUb3AgfHwgYm9keS5jbGllbnRUb3AgfHwgMDtcbiAgICB2YXIgY2xpZW50TGVmdCA9IGVsLmNsaWVudExlZnQgfHwgYm9keS5jbGllbnRMZWZ0IHx8IDA7XG4gICAgdmFyIHNjcm9sbFRvcCA9IGVsID09PSB3aW5kb3cgPyB3aW5kb3cuc2Nyb2xsWSA6IGVsLnNjcm9sbFRvcDtcbiAgICB2YXIgc2Nyb2xsTGVmdCA9IGVsID09PSB3aW5kb3cgPyB3aW5kb3cuc2Nyb2xsWCA6IGVsLnNjcm9sbExlZnQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvcDogYm94LnRvcCArIHNjcm9sbFRvcCAtIGNsaWVudFRvcCxcbiAgICAgIGxlZnQ6IGJveC5sZWZ0ICsgc2Nyb2xsTGVmdCAtIGNsaWVudExlZnRcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGhpZGUoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoaXNbaV0uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzaG93KCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGVsID0gdGhpc1tpXTtcblxuICAgIGlmIChlbC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgIGVsLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICB9XG5cbiAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSB7XG4gICAgICAvLyBTdGlsbCBub3QgdmlzaWJsZVxuICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHN0eWxlcygpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICBpZiAodGhpc1swXSkgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sIG51bGwpO1xuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGNzcyhwcm9wcywgdmFsdWUpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICB2YXIgaTtcblxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmICh0eXBlb2YgcHJvcHMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyAuY3NzKCd3aWR0aCcpXG4gICAgICBpZiAodGhpc1swXSkgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXNbMF0sIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAuY3NzKHsgd2lkdGg6ICcxMDBweCcgfSlcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGZvciAodmFyIF9wcm9wIGluIHByb3BzKSB7XG4gICAgICAgICAgdGhpc1tpXS5zdHlsZVtfcHJvcF0gPSBwcm9wc1tfcHJvcF07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgdHlwZW9mIHByb3BzID09PSAnc3RyaW5nJykge1xuICAgIC8vIC5jc3MoJ3dpZHRoJywgJzEwMHB4JylcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdGhpc1tpXS5zdHlsZVtwcm9wc10gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBlYWNoKGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHJldHVybiB0aGlzO1xuICB0aGlzLmZvckVhY2goZnVuY3Rpb24gKGVsLCBpbmRleCkge1xuICAgIGNhbGxiYWNrLmFwcGx5KGVsLCBbZWwsIGluZGV4XSk7XG4gIH0pO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrKSB7XG4gIHZhciByZXN1bHQgPSBhcnJheUZpbHRlcih0aGlzLCBjYWxsYmFjayk7XG4gIHJldHVybiAkKHJlc3VsdCk7XG59XG5cbmZ1bmN0aW9uIGh0bWwoaHRtbCkge1xuICBpZiAodHlwZW9mIGh0bWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIHRoaXNbMF0gPyB0aGlzWzBdLmlubmVySFRNTCA6IG51bGw7XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGlzW2ldLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gdGV4dCh0ZXh0KSB7XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gdGhpc1swXSA/IHRoaXNbMF0udGV4dENvbnRlbnQudHJpbSgpIDogbnVsbDtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHRoaXNbaV0udGV4dENvbnRlbnQgPSB0ZXh0O1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGlzKHNlbGVjdG9yKSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgdmFyIGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgdmFyIGVsID0gdGhpc1swXTtcbiAgdmFyIGNvbXBhcmVXaXRoO1xuICB2YXIgaTtcbiAgaWYgKCFlbCB8fCB0eXBlb2Ygc2VsZWN0b3IgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoZWwubWF0Y2hlcykgcmV0dXJuIGVsLm1hdGNoZXMoc2VsZWN0b3IpO1xuICAgIGlmIChlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3IpIHJldHVybiBlbC53ZWJraXRNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIGlmIChlbC5tc01hdGNoZXNTZWxlY3RvcikgcmV0dXJuIGVsLm1zTWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICBjb21wYXJlV2l0aCA9ICQoc2VsZWN0b3IpO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IGNvbXBhcmVXaXRoLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAoY29tcGFyZVdpdGhbaV0gPT09IGVsKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoc2VsZWN0b3IgPT09IGRvY3VtZW50KSB7XG4gICAgcmV0dXJuIGVsID09PSBkb2N1bWVudDtcbiAgfVxuXG4gIGlmIChzZWxlY3RvciA9PT0gd2luZG93KSB7XG4gICAgcmV0dXJuIGVsID09PSB3aW5kb3c7XG4gIH1cblxuICBpZiAoc2VsZWN0b3Iubm9kZVR5cGUgfHwgc2VsZWN0b3IgaW5zdGFuY2VvZiBEb203KSB7XG4gICAgY29tcGFyZVdpdGggPSBzZWxlY3Rvci5ub2RlVHlwZSA/IFtzZWxlY3Rvcl0gOiBzZWxlY3RvcjtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBjb21wYXJlV2l0aC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKGNvbXBhcmVXaXRoW2ldID09PSBlbCkgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBpbmRleCgpIHtcbiAgdmFyIGNoaWxkID0gdGhpc1swXTtcbiAgdmFyIGk7XG5cbiAgaWYgKGNoaWxkKSB7XG4gICAgaSA9IDA7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG4gICAgd2hpbGUgKChjaGlsZCA9IGNoaWxkLnByZXZpb3VzU2libGluZykgIT09IG51bGwpIHtcbiAgICAgIGlmIChjaGlsZC5ub2RlVHlwZSA9PT0gMSkgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiBpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXEoaW5kZXgpIHtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiB0aGlzO1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGg7XG5cbiAgaWYgKGluZGV4ID4gbGVuZ3RoIC0gMSkge1xuICAgIHJldHVybiAkKFtdKTtcbiAgfVxuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICB2YXIgcmV0dXJuSW5kZXggPSBsZW5ndGggKyBpbmRleDtcbiAgICBpZiAocmV0dXJuSW5kZXggPCAwKSByZXR1cm4gJChbXSk7XG4gICAgcmV0dXJuICQoW3RoaXNbcmV0dXJuSW5kZXhdXSk7XG4gIH1cblxuICByZXR1cm4gJChbdGhpc1tpbmRleF1dKTtcbn1cblxuZnVuY3Rpb24gYXBwZW5kKCkge1xuICB2YXIgbmV3Q2hpbGQ7XG4gIHZhciBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG5cbiAgZm9yICh2YXIgayA9IDA7IGsgPCBhcmd1bWVudHMubGVuZ3RoOyBrICs9IDEpIHtcbiAgICBuZXdDaGlsZCA9IGsgPCAwIHx8IGFyZ3VtZW50cy5sZW5ndGggPD0gayA/IHVuZGVmaW5lZCA6IGFyZ3VtZW50c1trXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHR5cGVvZiBuZXdDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdmFyIHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgdGVtcERpdi5pbm5lckhUTUwgPSBuZXdDaGlsZDtcblxuICAgICAgICB3aGlsZSAodGVtcERpdi5maXJzdENoaWxkKSB7XG4gICAgICAgICAgdGhpc1tpXS5hcHBlbmRDaGlsZCh0ZW1wRGl2LmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5ld0NoaWxkIGluc3RhbmNlb2YgRG9tNykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5ld0NoaWxkLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgICAgdGhpc1tpXS5hcHBlbmRDaGlsZChuZXdDaGlsZFtqXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXNbaV0uYXBwZW5kQ2hpbGQobmV3Q2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRUbyhwYXJlbnQpIHtcbiAgJChwYXJlbnQpLmFwcGVuZCh0aGlzKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHByZXBlbmQobmV3Q2hpbGQpIHtcbiAgdmFyIGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgdmFyIGk7XG4gIHZhciBqO1xuXG4gIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHR5cGVvZiBuZXdDaGlsZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciB0ZW1wRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB0ZW1wRGl2LmlubmVySFRNTCA9IG5ld0NoaWxkO1xuXG4gICAgICBmb3IgKGogPSB0ZW1wRGl2LmNoaWxkTm9kZXMubGVuZ3RoIC0gMTsgaiA+PSAwOyBqIC09IDEpIHtcbiAgICAgICAgdGhpc1tpXS5pbnNlcnRCZWZvcmUodGVtcERpdi5jaGlsZE5vZGVzW2pdLCB0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobmV3Q2hpbGQgaW5zdGFuY2VvZiBEb203KSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbmV3Q2hpbGQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgdGhpc1tpXS5pbnNlcnRCZWZvcmUobmV3Q2hpbGRbal0sIHRoaXNbaV0uY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXNbaV0uaW5zZXJ0QmVmb3JlKG5ld0NoaWxkLCB0aGlzW2ldLmNoaWxkTm9kZXNbMF0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBwcmVwZW5kVG8ocGFyZW50KSB7XG4gICQocGFyZW50KS5wcmVwZW5kKHRoaXMpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHNlbGVjdG9yKSB7XG4gIHZhciBiZWZvcmUgPSAkKHNlbGVjdG9yKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoYmVmb3JlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgYmVmb3JlWzBdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXNbaV0sIGJlZm9yZVswXSk7XG4gICAgfSBlbHNlIGlmIChiZWZvcmUubGVuZ3RoID4gMSkge1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBiZWZvcmUubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgYmVmb3JlW2pdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXNbaV0uY2xvbmVOb2RlKHRydWUpLCBiZWZvcmVbal0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBZnRlcihzZWxlY3Rvcikge1xuICB2YXIgYWZ0ZXIgPSAkKHNlbGVjdG9yKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoYWZ0ZXIubGVuZ3RoID09PSAxKSB7XG4gICAgICBhZnRlclswXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzW2ldLCBhZnRlclswXS5uZXh0U2libGluZyk7XG4gICAgfSBlbHNlIGlmIChhZnRlci5sZW5ndGggPiAxKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFmdGVyLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgIGFmdGVyW2pdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXNbaV0uY2xvbmVOb2RlKHRydWUpLCBhZnRlcltqXS5uZXh0U2libGluZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG5leHQoc2VsZWN0b3IpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgaWYgKHRoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nICYmICQodGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmcpLmlzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gJChbdGhpc1swXS5uZXh0RWxlbWVudFNpYmxpbmddKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICQoW10pO1xuICAgIH1cblxuICAgIGlmICh0aGlzWzBdLm5leHRFbGVtZW50U2libGluZykgcmV0dXJuICQoW3RoaXNbMF0ubmV4dEVsZW1lbnRTaWJsaW5nXSk7XG4gICAgcmV0dXJuICQoW10pO1xuICB9XG5cbiAgcmV0dXJuICQoW10pO1xufVxuXG5mdW5jdGlvbiBuZXh0QWxsKHNlbGVjdG9yKSB7XG4gIHZhciBuZXh0RWxzID0gW107XG4gIHZhciBlbCA9IHRoaXNbMF07XG4gIGlmICghZWwpIHJldHVybiAkKFtdKTtcblxuICB3aGlsZSAoZWwubmV4dEVsZW1lbnRTaWJsaW5nKSB7XG4gICAgdmFyIF9uZXh0ID0gZWwubmV4dEVsZW1lbnRTaWJsaW5nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmICgkKF9uZXh0KS5pcyhzZWxlY3RvcikpIG5leHRFbHMucHVzaChfbmV4dCk7XG4gICAgfSBlbHNlIG5leHRFbHMucHVzaChfbmV4dCk7XG5cbiAgICBlbCA9IF9uZXh0O1xuICB9XG5cbiAgcmV0dXJuICQobmV4dEVscyk7XG59XG5cbmZ1bmN0aW9uIHByZXYoc2VsZWN0b3IpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHZhciBlbCA9IHRoaXNbMF07XG5cbiAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgIGlmIChlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmICQoZWwucHJldmlvdXNFbGVtZW50U2libGluZykuaXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIHJldHVybiAkKFtlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nXSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAkKFtdKTtcbiAgICB9XG5cbiAgICBpZiAoZWwucHJldmlvdXNFbGVtZW50U2libGluZykgcmV0dXJuICQoW2VsLnByZXZpb3VzRWxlbWVudFNpYmxpbmddKTtcbiAgICByZXR1cm4gJChbXSk7XG4gIH1cblxuICByZXR1cm4gJChbXSk7XG59XG5cbmZ1bmN0aW9uIHByZXZBbGwoc2VsZWN0b3IpIHtcbiAgdmFyIHByZXZFbHMgPSBbXTtcbiAgdmFyIGVsID0gdGhpc1swXTtcbiAgaWYgKCFlbCkgcmV0dXJuICQoW10pO1xuXG4gIHdoaWxlIChlbC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKSB7XG4gICAgdmFyIF9wcmV2ID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZzsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICBpZiAoJChfcHJldikuaXMoc2VsZWN0b3IpKSBwcmV2RWxzLnB1c2goX3ByZXYpO1xuICAgIH0gZWxzZSBwcmV2RWxzLnB1c2goX3ByZXYpO1xuXG4gICAgZWwgPSBfcHJldjtcbiAgfVxuXG4gIHJldHVybiAkKHByZXZFbHMpO1xufVxuXG5mdW5jdGlvbiBzaWJsaW5ncyhzZWxlY3Rvcikge1xuICByZXR1cm4gdGhpcy5uZXh0QWxsKHNlbGVjdG9yKS5hZGQodGhpcy5wcmV2QWxsKHNlbGVjdG9yKSk7XG59XG5cbmZ1bmN0aW9uIHBhcmVudChzZWxlY3Rvcikge1xuICB2YXIgcGFyZW50cyA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHRoaXNbaV0ucGFyZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHNlbGVjdG9yKSB7XG4gICAgICAgIGlmICgkKHRoaXNbaV0ucGFyZW50Tm9kZSkuaXMoc2VsZWN0b3IpKSBwYXJlbnRzLnB1c2godGhpc1tpXS5wYXJlbnROb2RlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmVudHMucHVzaCh0aGlzW2ldLnBhcmVudE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAkKHBhcmVudHMpO1xufVxuXG5mdW5jdGlvbiBwYXJlbnRzKHNlbGVjdG9yKSB7XG4gIHZhciBwYXJlbnRzID0gW107IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgX3BhcmVudCA9IHRoaXNbaV0ucGFyZW50Tm9kZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgd2hpbGUgKF9wYXJlbnQpIHtcbiAgICAgIGlmIChzZWxlY3Rvcikge1xuICAgICAgICBpZiAoJChfcGFyZW50KS5pcyhzZWxlY3RvcikpIHBhcmVudHMucHVzaChfcGFyZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcmVudHMucHVzaChfcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgX3BhcmVudCA9IF9wYXJlbnQucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gJChwYXJlbnRzKTtcbn1cblxuZnVuY3Rpb24gY2xvc2VzdChzZWxlY3Rvcikge1xuICB2YXIgY2xvc2VzdCA9IHRoaXM7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICBpZiAodHlwZW9mIHNlbGVjdG9yID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAkKFtdKTtcbiAgfVxuXG4gIGlmICghY2xvc2VzdC5pcyhzZWxlY3RvcikpIHtcbiAgICBjbG9zZXN0ID0gY2xvc2VzdC5wYXJlbnRzKHNlbGVjdG9yKS5lcSgwKTtcbiAgfVxuXG4gIHJldHVybiBjbG9zZXN0O1xufVxuXG5mdW5jdGlvbiBmaW5kKHNlbGVjdG9yKSB7XG4gIHZhciBmb3VuZEVsZW1lbnRzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGZvdW5kID0gdGhpc1tpXS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcblxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm91bmQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgIGZvdW5kRWxlbWVudHMucHVzaChmb3VuZFtqXSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICQoZm91bmRFbGVtZW50cyk7XG59XG5cbmZ1bmN0aW9uIGNoaWxkcmVuKHNlbGVjdG9yKSB7XG4gIHZhciBjaGlsZHJlbiA9IFtdOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzW2ldLmNoaWxkcmVuO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBjaGlsZE5vZGVzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICBpZiAoIXNlbGVjdG9yIHx8ICQoY2hpbGROb2Rlc1tqXSkuaXMoc2VsZWN0b3IpKSB7XG4gICAgICAgIGNoaWxkcmVuLnB1c2goY2hpbGROb2Rlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICQoY2hpbGRyZW4pO1xufVxuXG5mdW5jdGlvbiByZW1vdmUoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmICh0aGlzW2ldLnBhcmVudE5vZGUpIHRoaXNbaV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzW2ldKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBkZXRhY2goKSB7XG4gIHJldHVybiB0aGlzLnJlbW92ZSgpO1xufVxuXG5mdW5jdGlvbiBhZGQoKSB7XG4gIHZhciBkb20gPSB0aGlzO1xuICB2YXIgaTtcbiAgdmFyIGo7XG5cbiAgZm9yICh2YXIgX2xlbjEwID0gYXJndW1lbnRzLmxlbmd0aCwgZWxzID0gbmV3IEFycmF5KF9sZW4xMCksIF9rZXkxMCA9IDA7IF9rZXkxMCA8IF9sZW4xMDsgX2tleTEwKyspIHtcbiAgICBlbHNbX2tleTEwXSA9IGFyZ3VtZW50c1tfa2V5MTBdO1xuICB9XG5cbiAgZm9yIChpID0gMDsgaSA8IGVscy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHZhciB0b0FkZCA9ICQoZWxzW2ldKTtcblxuICAgIGZvciAoaiA9IDA7IGogPCB0b0FkZC5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgZG9tLnB1c2godG9BZGRbal0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb207XG59XG5cbmZ1bmN0aW9uIGVtcHR5KCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgZWwgPSB0aGlzW2ldO1xuXG4gICAgaWYgKGVsLm5vZGVUeXBlID09PSAxKSB7XG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGVsLmNoaWxkTm9kZXMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgaWYgKGVsLmNoaWxkTm9kZXNbal0ucGFyZW50Tm9kZSkge1xuICAgICAgICAgIGVsLmNoaWxkTm9kZXNbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbC5jaGlsZE5vZGVzW2pdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBlbC50ZXh0Q29udGVudCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBzY3JvbGxUbygpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgbGVmdCA9IGFyZ3NbMF0sXG4gICAgICB0b3AgPSBhcmdzWzFdLFxuICAgICAgZHVyYXRpb24gPSBhcmdzWzJdLFxuICAgICAgZWFzaW5nID0gYXJnc1szXSxcbiAgICAgIGNhbGxiYWNrID0gYXJnc1s0XTtcblxuICBpZiAoYXJncy5sZW5ndGggPT09IDQgJiYgdHlwZW9mIGVhc2luZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZWFzaW5nO1xuICAgIGxlZnQgPSBhcmdzWzBdO1xuICAgIHRvcCA9IGFyZ3NbMV07XG4gICAgZHVyYXRpb24gPSBhcmdzWzJdO1xuICAgIGNhbGxiYWNrID0gYXJnc1szXTtcbiAgICBlYXNpbmcgPSBhcmdzWzRdO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlYXNpbmcgPT09ICd1bmRlZmluZWQnKSBlYXNpbmcgPSAnc3dpbmcnO1xuICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uIGFuaW1hdGUoKSB7XG4gICAgdmFyIGVsID0gdGhpcztcbiAgICB2YXIgY3VycmVudFRvcDtcbiAgICB2YXIgY3VycmVudExlZnQ7XG4gICAgdmFyIG1heFRvcDtcbiAgICB2YXIgbWF4TGVmdDtcbiAgICB2YXIgbmV3VG9wO1xuICAgIHZhciBuZXdMZWZ0O1xuICAgIHZhciBzY3JvbGxUb3A7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblxuICAgIHZhciBzY3JvbGxMZWZ0OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cbiAgICB2YXIgYW5pbWF0ZVRvcCA9IHRvcCA+IDAgfHwgdG9wID09PSAwO1xuICAgIHZhciBhbmltYXRlTGVmdCA9IGxlZnQgPiAwIHx8IGxlZnQgPT09IDA7XG5cbiAgICBpZiAodHlwZW9mIGVhc2luZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGVhc2luZyA9ICdzd2luZyc7XG4gICAgfVxuXG4gICAgaWYgKGFuaW1hdGVUb3ApIHtcbiAgICAgIGN1cnJlbnRUb3AgPSBlbC5zY3JvbGxUb3A7XG5cbiAgICAgIGlmICghZHVyYXRpb24pIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gdG9wO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhbmltYXRlTGVmdCkge1xuICAgICAgY3VycmVudExlZnQgPSBlbC5zY3JvbGxMZWZ0O1xuXG4gICAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICAgIGVsLnNjcm9sbExlZnQgPSBsZWZ0O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghZHVyYXRpb24pIHJldHVybjtcblxuICAgIGlmIChhbmltYXRlVG9wKSB7XG4gICAgICBtYXhUb3AgPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICBuZXdUb3AgPSBNYXRoLm1heChNYXRoLm1pbih0b3AsIG1heFRvcCksIDApO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRlTGVmdCkge1xuICAgICAgbWF4TGVmdCA9IGVsLnNjcm9sbFdpZHRoIC0gZWwub2Zmc2V0V2lkdGg7XG4gICAgICBuZXdMZWZ0ID0gTWF0aC5tYXgoTWF0aC5taW4obGVmdCwgbWF4TGVmdCksIDApO1xuICAgIH1cblxuICAgIHZhciBzdGFydFRpbWUgPSBudWxsO1xuICAgIGlmIChhbmltYXRlVG9wICYmIG5ld1RvcCA9PT0gY3VycmVudFRvcCkgYW5pbWF0ZVRvcCA9IGZhbHNlO1xuICAgIGlmIChhbmltYXRlTGVmdCAmJiBuZXdMZWZ0ID09PSBjdXJyZW50TGVmdCkgYW5pbWF0ZUxlZnQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIHJlbmRlcih0aW1lKSB7XG4gICAgICBpZiAodGltZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0YXJ0VGltZSA9PT0gbnVsbCkge1xuICAgICAgICBzdGFydFRpbWUgPSB0aW1lO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvZ3Jlc3MgPSBNYXRoLm1heChNYXRoLm1pbigodGltZSAtIHN0YXJ0VGltZSkgLyBkdXJhdGlvbiwgMSksIDApO1xuICAgICAgdmFyIGVhc2VQcm9ncmVzcyA9IGVhc2luZyA9PT0gJ2xpbmVhcicgPyBwcm9ncmVzcyA6IDAuNSAtIE1hdGguY29zKHByb2dyZXNzICogTWF0aC5QSSkgLyAyO1xuICAgICAgdmFyIGRvbmU7XG4gICAgICBpZiAoYW5pbWF0ZVRvcCkgc2Nyb2xsVG9wID0gY3VycmVudFRvcCArIGVhc2VQcm9ncmVzcyAqIChuZXdUb3AgLSBjdXJyZW50VG9wKTtcbiAgICAgIGlmIChhbmltYXRlTGVmdCkgc2Nyb2xsTGVmdCA9IGN1cnJlbnRMZWZ0ICsgZWFzZVByb2dyZXNzICogKG5ld0xlZnQgLSBjdXJyZW50TGVmdCk7XG5cbiAgICAgIGlmIChhbmltYXRlVG9wICYmIG5ld1RvcCA+IGN1cnJlbnRUb3AgJiYgc2Nyb2xsVG9wID49IG5ld1RvcCkge1xuICAgICAgICBlbC5zY3JvbGxUb3AgPSBuZXdUb3A7XG4gICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pbWF0ZVRvcCAmJiBuZXdUb3AgPCBjdXJyZW50VG9wICYmIHNjcm9sbFRvcCA8PSBuZXdUb3ApIHtcbiAgICAgICAgZWwuc2Nyb2xsVG9wID0gbmV3VG9wO1xuICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFuaW1hdGVMZWZ0ICYmIG5ld0xlZnQgPiBjdXJyZW50TGVmdCAmJiBzY3JvbGxMZWZ0ID49IG5ld0xlZnQpIHtcbiAgICAgICAgZWwuc2Nyb2xsTGVmdCA9IG5ld0xlZnQ7XG4gICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pbWF0ZUxlZnQgJiYgbmV3TGVmdCA8IGN1cnJlbnRMZWZ0ICYmIHNjcm9sbExlZnQgPD0gbmV3TGVmdCkge1xuICAgICAgICBlbC5zY3JvbGxMZWZ0ID0gbmV3TGVmdDtcbiAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoYW5pbWF0ZVRvcCkgZWwuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgICAgaWYgKGFuaW1hdGVMZWZ0KSBlbC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdDtcbiAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTtcbiAgICB9XG5cbiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlbmRlcik7XG4gIH0pO1xufSAvLyBzY3JvbGxUb3AodG9wLCBkdXJhdGlvbiwgZWFzaW5nLCBjYWxsYmFjaykge1xuXG5cbmZ1bmN0aW9uIHNjcm9sbFRvcCgpIHtcbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgdmFyIHRvcCA9IGFyZ3NbMF0sXG4gICAgICBkdXJhdGlvbiA9IGFyZ3NbMV0sXG4gICAgICBlYXNpbmcgPSBhcmdzWzJdLFxuICAgICAgY2FsbGJhY2sgPSBhcmdzWzNdO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMyAmJiB0eXBlb2YgZWFzaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdG9wID0gYXJnc1swXTtcbiAgICBkdXJhdGlvbiA9IGFyZ3NbMV07XG4gICAgY2FsbGJhY2sgPSBhcmdzWzJdO1xuICAgIGVhc2luZyA9IGFyZ3NbM107XG4gIH1cblxuICB2YXIgZG9tID0gdGhpcztcblxuICBpZiAodHlwZW9mIHRvcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAoZG9tLmxlbmd0aCA+IDApIHJldHVybiBkb21bMF0uc2Nyb2xsVG9wO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRvbS5zY3JvbGxUbyh1bmRlZmluZWQsIHRvcCwgZHVyYXRpb24sIGVhc2luZywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBzY3JvbGxMZWZ0KCkge1xuICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjMpLCBfa2V5MyA9IDA7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcbiAgICBhcmdzW19rZXkzXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gIH1cblxuICB2YXIgbGVmdCA9IGFyZ3NbMF0sXG4gICAgICBkdXJhdGlvbiA9IGFyZ3NbMV0sXG4gICAgICBlYXNpbmcgPSBhcmdzWzJdLFxuICAgICAgY2FsbGJhY2sgPSBhcmdzWzNdO1xuXG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMyAmJiB0eXBlb2YgZWFzaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgbGVmdCA9IGFyZ3NbMF07XG4gICAgZHVyYXRpb24gPSBhcmdzWzFdO1xuICAgIGNhbGxiYWNrID0gYXJnc1syXTtcbiAgICBlYXNpbmcgPSBhcmdzWzNdO1xuICB9XG5cbiAgdmFyIGRvbSA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiBsZWZ0ID09PSAndW5kZWZpbmVkJykge1xuICAgIGlmIChkb20ubGVuZ3RoID4gMCkgcmV0dXJuIGRvbVswXS5zY3JvbGxMZWZ0O1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRvbS5zY3JvbGxUbyhsZWZ0LCB1bmRlZmluZWQsIGR1cmF0aW9uLCBlYXNpbmcsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gYW5pbWF0ZShpbml0aWFsUHJvcHMsIGluaXRpYWxQYXJhbXMpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICB2YXIgZWxzID0gdGhpcztcbiAgdmFyIGEgPSB7XG4gICAgcHJvcHM6IE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxQcm9wcyksXG4gICAgcGFyYW1zOiBPYmplY3QuYXNzaWduKHtcbiAgICAgIGR1cmF0aW9uOiAzMDAsXG4gICAgICBlYXNpbmc6ICdzd2luZycgLy8gb3IgJ2xpbmVhcidcblxuICAgICAgLyogQ2FsbGJhY2tzXG4gICAgICBiZWdpbihlbGVtZW50cylcbiAgICAgIGNvbXBsZXRlKGVsZW1lbnRzKVxuICAgICAgcHJvZ3Jlc3MoZWxlbWVudHMsIGNvbXBsZXRlLCByZW1haW5pbmcsIHN0YXJ0LCB0d2VlblZhbHVlKVxuICAgICAgKi9cblxuICAgIH0sIGluaXRpYWxQYXJhbXMpLFxuICAgIGVsZW1lbnRzOiBlbHMsXG4gICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICBxdWU6IFtdLFxuICAgIGVhc2luZ1Byb2dyZXNzOiBmdW5jdGlvbiBlYXNpbmdQcm9ncmVzcyhlYXNpbmcsIHByb2dyZXNzKSB7XG4gICAgICBpZiAoZWFzaW5nID09PSAnc3dpbmcnKSB7XG4gICAgICAgIHJldHVybiAwLjUgLSBNYXRoLmNvcyhwcm9ncmVzcyAqIE1hdGguUEkpIC8gMjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBlYXNpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGVhc2luZyhwcm9ncmVzcyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm9ncmVzcztcbiAgICB9LFxuICAgIHN0b3A6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICBpZiAoYS5mcmFtZUlkKSB7XG4gICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShhLmZyYW1lSWQpO1xuICAgICAgfVxuXG4gICAgICBhLmFuaW1hdGluZyA9IGZhbHNlO1xuICAgICAgYS5lbGVtZW50cy5lYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGVsO1xuICAgICAgICBkZWxldGUgZWxlbWVudC5kb203QW5pbWF0ZUluc3RhbmNlO1xuICAgICAgfSk7XG4gICAgICBhLnF1ZSA9IFtdO1xuICAgIH0sXG4gICAgZG9uZTogZnVuY3Rpb24gZG9uZShjb21wbGV0ZSkge1xuICAgICAgYS5hbmltYXRpbmcgPSBmYWxzZTtcbiAgICAgIGEuZWxlbWVudHMuZWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgdmFyIGVsZW1lbnQgPSBlbDtcbiAgICAgICAgZGVsZXRlIGVsZW1lbnQuZG9tN0FuaW1hdGVJbnN0YW5jZTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNvbXBsZXRlKSBjb21wbGV0ZShlbHMpO1xuXG4gICAgICBpZiAoYS5xdWUubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgcXVlID0gYS5xdWUuc2hpZnQoKTtcbiAgICAgICAgYS5hbmltYXRlKHF1ZVswXSwgcXVlWzFdKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGFuaW1hdGU6IGZ1bmN0aW9uIGFuaW1hdGUocHJvcHMsIHBhcmFtcykge1xuICAgICAgaWYgKGEuYW5pbWF0aW5nKSB7XG4gICAgICAgIGEucXVlLnB1c2goW3Byb3BzLCBwYXJhbXNdKTtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgICB9XG5cbiAgICAgIHZhciBlbGVtZW50cyA9IFtdOyAvLyBEZWZpbmUgJiBDYWNoZSBJbml0aWFscyAmIFVuaXRzXG5cbiAgICAgIGEuZWxlbWVudHMuZWFjaChmdW5jdGlvbiAoZWwsIGluZGV4KSB7XG4gICAgICAgIHZhciBpbml0aWFsRnVsbFZhbHVlO1xuICAgICAgICB2YXIgaW5pdGlhbFZhbHVlO1xuICAgICAgICB2YXIgdW5pdDtcbiAgICAgICAgdmFyIGZpbmFsVmFsdWU7XG4gICAgICAgIHZhciBmaW5hbEZ1bGxWYWx1ZTtcbiAgICAgICAgaWYgKCFlbC5kb203QW5pbWF0ZUluc3RhbmNlKSBhLmVsZW1lbnRzW2luZGV4XS5kb203QW5pbWF0ZUluc3RhbmNlID0gYTtcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xuICAgICAgICAgIGNvbnRhaW5lcjogZWxcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICAgICAgICBpbml0aWFsRnVsbFZhbHVlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpLmdldFByb3BlcnR5VmFsdWUocHJvcCkucmVwbGFjZSgnLCcsICcuJyk7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlID0gcGFyc2VGbG9hdChpbml0aWFsRnVsbFZhbHVlKTtcbiAgICAgICAgICB1bml0ID0gaW5pdGlhbEZ1bGxWYWx1ZS5yZXBsYWNlKGluaXRpYWxWYWx1ZSwgJycpO1xuICAgICAgICAgIGZpbmFsVmFsdWUgPSBwYXJzZUZsb2F0KHByb3BzW3Byb3BdKTtcbiAgICAgICAgICBmaW5hbEZ1bGxWYWx1ZSA9IHByb3BzW3Byb3BdICsgdW5pdDtcbiAgICAgICAgICBlbGVtZW50c1tpbmRleF1bcHJvcF0gPSB7XG4gICAgICAgICAgICBpbml0aWFsRnVsbFZhbHVlOiBpbml0aWFsRnVsbFZhbHVlLFxuICAgICAgICAgICAgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICAgICAgICB1bml0OiB1bml0LFxuICAgICAgICAgICAgZmluYWxWYWx1ZTogZmluYWxWYWx1ZSxcbiAgICAgICAgICAgIGZpbmFsRnVsbFZhbHVlOiBmaW5hbEZ1bGxWYWx1ZSxcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogaW5pdGlhbFZhbHVlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBzdGFydFRpbWUgPSBudWxsO1xuICAgICAgdmFyIHRpbWU7XG4gICAgICB2YXIgZWxlbWVudHNEb25lID0gMDtcbiAgICAgIHZhciBwcm9wc0RvbmUgPSAwO1xuICAgICAgdmFyIGRvbmU7XG4gICAgICB2YXIgYmVnYW4gPSBmYWxzZTtcbiAgICAgIGEuYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHZhciBwcm9ncmVzcztcbiAgICAgICAgdmFyIGVhc2VQcm9ncmVzczsgLy8gbGV0IGVsO1xuXG4gICAgICAgIGlmICghYmVnYW4pIHtcbiAgICAgICAgICBiZWdhbiA9IHRydWU7XG4gICAgICAgICAgaWYgKHBhcmFtcy5iZWdpbikgcGFyYW1zLmJlZ2luKGVscyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhcnRUaW1lID09PSBudWxsKSB7XG4gICAgICAgICAgc3RhcnRUaW1lID0gdGltZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMucHJvZ3Jlc3MpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICBwYXJhbXMucHJvZ3Jlc3MoZWxzLCBNYXRoLm1heChNYXRoLm1pbigodGltZSAtIHN0YXJ0VGltZSkgLyBwYXJhbXMuZHVyYXRpb24sIDEpLCAwKSwgc3RhcnRUaW1lICsgcGFyYW1zLmR1cmF0aW9uIC0gdGltZSA8IDAgPyAwIDogc3RhcnRUaW1lICsgcGFyYW1zLmR1cmF0aW9uIC0gdGltZSwgc3RhcnRUaW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgICB2YXIgZWwgPSBlbGVtZW50O1xuICAgICAgICAgIGlmIChkb25lIHx8IGVsLmRvbmUpIHJldHVybjtcbiAgICAgICAgICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICAgICAgICAgICAgaWYgKGRvbmUgfHwgZWwuZG9uZSkgcmV0dXJuO1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSBNYXRoLm1heChNYXRoLm1pbigodGltZSAtIHN0YXJ0VGltZSkgLyBwYXJhbXMuZHVyYXRpb24sIDEpLCAwKTtcbiAgICAgICAgICAgIGVhc2VQcm9ncmVzcyA9IGEuZWFzaW5nUHJvZ3Jlc3MocGFyYW1zLmVhc2luZywgcHJvZ3Jlc3MpO1xuICAgICAgICAgICAgdmFyIF9lbCRwcm9wID0gZWxbcHJvcF0sXG4gICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gX2VsJHByb3AuaW5pdGlhbFZhbHVlLFxuICAgICAgICAgICAgICAgIGZpbmFsVmFsdWUgPSBfZWwkcHJvcC5maW5hbFZhbHVlLFxuICAgICAgICAgICAgICAgIHVuaXQgPSBfZWwkcHJvcC51bml0O1xuICAgICAgICAgICAgZWxbcHJvcF0uY3VycmVudFZhbHVlID0gaW5pdGlhbFZhbHVlICsgZWFzZVByb2dyZXNzICogKGZpbmFsVmFsdWUgLSBpbml0aWFsVmFsdWUpO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRWYWx1ZSA9IGVsW3Byb3BdLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKGZpbmFsVmFsdWUgPiBpbml0aWFsVmFsdWUgJiYgY3VycmVudFZhbHVlID49IGZpbmFsVmFsdWUgfHwgZmluYWxWYWx1ZSA8IGluaXRpYWxWYWx1ZSAmJiBjdXJyZW50VmFsdWUgPD0gZmluYWxWYWx1ZSkge1xuICAgICAgICAgICAgICBlbC5jb250YWluZXIuc3R5bGVbcHJvcF0gPSBmaW5hbFZhbHVlICsgdW5pdDtcbiAgICAgICAgICAgICAgcHJvcHNEb25lICs9IDE7XG5cbiAgICAgICAgICAgICAgaWYgKHByb3BzRG9uZSA9PT0gT2JqZWN0LmtleXMocHJvcHMpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGVsLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzRG9uZSArPSAxO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzRG9uZSA9PT0gZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgYS5kb25lKHBhcmFtcy5jb21wbGV0ZSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWwuY29udGFpbmVyLnN0eWxlW3Byb3BdID0gY3VycmVudFZhbHVlICsgdW5pdDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChkb25lKSByZXR1cm47IC8vIFRoZW4gY2FsbFxuXG4gICAgICAgIGEuZnJhbWVJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocmVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgYS5mcmFtZUlkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShyZW5kZXIpO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuICB9O1xuXG4gIGlmIChhLmVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBlbHM7XG4gIH1cblxuICB2YXIgYW5pbWF0ZUluc3RhbmNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYS5lbGVtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChhLmVsZW1lbnRzW2ldLmRvbTdBbmltYXRlSW5zdGFuY2UpIHtcbiAgICAgIGFuaW1hdGVJbnN0YW5jZSA9IGEuZWxlbWVudHNbaV0uZG9tN0FuaW1hdGVJbnN0YW5jZTtcbiAgICB9IGVsc2UgYS5lbGVtZW50c1tpXS5kb203QW5pbWF0ZUluc3RhbmNlID0gYTtcbiAgfVxuXG4gIGlmICghYW5pbWF0ZUluc3RhbmNlKSB7XG4gICAgYW5pbWF0ZUluc3RhbmNlID0gYTtcbiAgfVxuXG4gIGlmIChpbml0aWFsUHJvcHMgPT09ICdzdG9wJykge1xuICAgIGFuaW1hdGVJbnN0YW5jZS5zdG9wKCk7XG4gIH0gZWxzZSB7XG4gICAgYW5pbWF0ZUluc3RhbmNlLmFuaW1hdGUoYS5wcm9wcywgYS5wYXJhbXMpO1xuICB9XG5cbiAgcmV0dXJuIGVscztcbn1cblxuZnVuY3Rpb24gc3RvcCgpIHtcbiAgdmFyIGVscyA9IHRoaXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAoZWxzW2ldLmRvbTdBbmltYXRlSW5zdGFuY2UpIHtcbiAgICAgIGVsc1tpXS5kb203QW5pbWF0ZUluc3RhbmNlLnN0b3AoKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIG5vVHJpZ2dlciA9ICdyZXNpemUgc2Nyb2xsJy5zcGxpdCgnICcpO1xuXG5mdW5jdGlvbiBzaG9ydGN1dChuYW1lKSB7XG4gIGZ1bmN0aW9uIGV2ZW50SGFuZGxlcigpIHtcbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChub1RyaWdnZXIuaW5kZXhPZihuYW1lKSA8IDApIHtcbiAgICAgICAgICBpZiAobmFtZSBpbiB0aGlzW2ldKSB0aGlzW2ldW25hbWVdKCk7ZWxzZSB7XG4gICAgICAgICAgICAkKHRoaXNbaV0pLnRyaWdnZXIobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm9uLmFwcGx5KHRoaXMsIFtuYW1lXS5jb25jYXQoYXJncykpO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50SGFuZGxlcjtcbn1cblxudmFyIGNsaWNrID0gc2hvcnRjdXQoJ2NsaWNrJyk7XG52YXIgYmx1ciA9IHNob3J0Y3V0KCdibHVyJyk7XG52YXIgZm9jdXMgPSBzaG9ydGN1dCgnZm9jdXMnKTtcbnZhciBmb2N1c2luID0gc2hvcnRjdXQoJ2ZvY3VzaW4nKTtcbnZhciBmb2N1c291dCA9IHNob3J0Y3V0KCdmb2N1c291dCcpO1xudmFyIGtleXVwID0gc2hvcnRjdXQoJ2tleXVwJyk7XG52YXIga2V5ZG93biA9IHNob3J0Y3V0KCdrZXlkb3duJyk7XG52YXIga2V5cHJlc3MgPSBzaG9ydGN1dCgna2V5cHJlc3MnKTtcbnZhciBzdWJtaXQgPSBzaG9ydGN1dCgnc3VibWl0Jyk7XG52YXIgY2hhbmdlID0gc2hvcnRjdXQoJ2NoYW5nZScpO1xudmFyIG1vdXNlZG93biA9IHNob3J0Y3V0KCdtb3VzZWRvd24nKTtcbnZhciBtb3VzZW1vdmUgPSBzaG9ydGN1dCgnbW91c2Vtb3ZlJyk7XG52YXIgbW91c2V1cCA9IHNob3J0Y3V0KCdtb3VzZXVwJyk7XG52YXIgbW91c2VlbnRlciA9IHNob3J0Y3V0KCdtb3VzZWVudGVyJyk7XG52YXIgbW91c2VsZWF2ZSA9IHNob3J0Y3V0KCdtb3VzZWxlYXZlJyk7XG52YXIgbW91c2VvdXQgPSBzaG9ydGN1dCgnbW91c2VvdXQnKTtcbnZhciBtb3VzZW92ZXIgPSBzaG9ydGN1dCgnbW91c2VvdmVyJyk7XG52YXIgdG91Y2hzdGFydCA9IHNob3J0Y3V0KCd0b3VjaHN0YXJ0Jyk7XG52YXIgdG91Y2hlbmQgPSBzaG9ydGN1dCgndG91Y2hlbmQnKTtcbnZhciB0b3VjaG1vdmUgPSBzaG9ydGN1dCgndG91Y2htb3ZlJyk7XG52YXIgcmVzaXplID0gc2hvcnRjdXQoJ3Jlc2l6ZScpO1xudmFyIHNjcm9sbCA9IHNob3J0Y3V0KCdzY3JvbGwnKTtcblxuZXhwb3J0IGRlZmF1bHQgJDtcbmV4cG9ydCB7ICQsIGFkZCwgYWRkQ2xhc3MsIGFuaW1hdGUsIGFuaW1hdGlvbkVuZCwgYXBwZW5kLCBhcHBlbmRUbywgYXR0ciwgYmx1ciwgY2hhbmdlLCBjaGlsZHJlbiwgY2xpY2ssIGNsb3Nlc3QsIGNzcywgZGF0YSwgZGF0YXNldCwgZGV0YWNoLCBlYWNoLCBlbXB0eSwgZXEsIGZpbHRlciwgZmluZCwgZm9jdXMsIGZvY3VzaW4sIGZvY3Vzb3V0LCBoYXNDbGFzcywgaGVpZ2h0LCBoaWRlLCBodG1sLCBpbmRleCwgaW5zZXJ0QWZ0ZXIsIGluc2VydEJlZm9yZSwgaXMsIGtleWRvd24sIGtleXByZXNzLCBrZXl1cCwgbW91c2Vkb3duLCBtb3VzZWVudGVyLCBtb3VzZWxlYXZlLCBtb3VzZW1vdmUsIG1vdXNlb3V0LCBtb3VzZW92ZXIsIG1vdXNldXAsIG5leHQsIG5leHRBbGwsIG9mZiwgb2Zmc2V0LCBvbiwgb25jZSwgb3V0ZXJIZWlnaHQsIG91dGVyV2lkdGgsIHBhcmVudCwgcGFyZW50cywgcHJlcGVuZCwgcHJlcGVuZFRvLCBwcmV2LCBwcmV2QWxsLCBwcm9wLCByZW1vdmUsIHJlbW92ZUF0dHIsIHJlbW92ZUNsYXNzLCByZW1vdmVEYXRhLCByZXNpemUsIHNjcm9sbCwgc2Nyb2xsTGVmdCwgc2Nyb2xsVG8sIHNjcm9sbFRvcCwgc2hvdywgc2libGluZ3MsIHN0b3AsIHN0eWxlcywgc3VibWl0LCB0ZXh0LCB0b2dnbGVDbGFzcywgdG91Y2hlbmQsIHRvdWNobW92ZSwgdG91Y2hzdGFydCwgdHJhbnNmb3JtLCB0cmFuc2l0aW9uLCB0cmFuc2l0aW9uRW5kLCB0cmlnZ2VyLCB2YWwsIHZhbHVlLCB3aWR0aCB9O1xuIiwiaW1wb3J0IHsgJCwgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzLCBoYXNDbGFzcywgdG9nZ2xlQ2xhc3MsIGF0dHIsIHJlbW92ZUF0dHIsIHRyYW5zZm9ybSwgdHJhbnNpdGlvbiwgb24sIG9mZiwgdHJpZ2dlciwgdHJhbnNpdGlvbkVuZCwgb3V0ZXJXaWR0aCwgb3V0ZXJIZWlnaHQsIHN0eWxlcywgb2Zmc2V0LCBjc3MsIGVhY2gsIGh0bWwsIHRleHQsIGlzLCBpbmRleCwgZXEsIGFwcGVuZCwgcHJlcGVuZCwgbmV4dCwgbmV4dEFsbCwgcHJldiwgcHJldkFsbCwgcGFyZW50LCBwYXJlbnRzLCBjbG9zZXN0LCBmaW5kLCBjaGlsZHJlbiwgZmlsdGVyLCByZW1vdmUgfSBmcm9tICdkb203JztcbnZhciBNZXRob2RzID0ge1xuICBhZGRDbGFzczogYWRkQ2xhc3MsXG4gIHJlbW92ZUNsYXNzOiByZW1vdmVDbGFzcyxcbiAgaGFzQ2xhc3M6IGhhc0NsYXNzLFxuICB0b2dnbGVDbGFzczogdG9nZ2xlQ2xhc3MsXG4gIGF0dHI6IGF0dHIsXG4gIHJlbW92ZUF0dHI6IHJlbW92ZUF0dHIsXG4gIHRyYW5zZm9ybTogdHJhbnNmb3JtLFxuICB0cmFuc2l0aW9uOiB0cmFuc2l0aW9uLFxuICBvbjogb24sXG4gIG9mZjogb2ZmLFxuICB0cmlnZ2VyOiB0cmlnZ2VyLFxuICB0cmFuc2l0aW9uRW5kOiB0cmFuc2l0aW9uRW5kLFxuICBvdXRlcldpZHRoOiBvdXRlcldpZHRoLFxuICBvdXRlckhlaWdodDogb3V0ZXJIZWlnaHQsXG4gIHN0eWxlczogc3R5bGVzLFxuICBvZmZzZXQ6IG9mZnNldCxcbiAgY3NzOiBjc3MsXG4gIGVhY2g6IGVhY2gsXG4gIGh0bWw6IGh0bWwsXG4gIHRleHQ6IHRleHQsXG4gIGlzOiBpcyxcbiAgaW5kZXg6IGluZGV4LFxuICBlcTogZXEsXG4gIGFwcGVuZDogYXBwZW5kLFxuICBwcmVwZW5kOiBwcmVwZW5kLFxuICBuZXh0OiBuZXh0LFxuICBuZXh0QWxsOiBuZXh0QWxsLFxuICBwcmV2OiBwcmV2LFxuICBwcmV2QWxsOiBwcmV2QWxsLFxuICBwYXJlbnQ6IHBhcmVudCxcbiAgcGFyZW50czogcGFyZW50cyxcbiAgY2xvc2VzdDogY2xvc2VzdCxcbiAgZmluZDogZmluZCxcbiAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICBmaWx0ZXI6IGZpbHRlcixcbiAgcmVtb3ZlOiByZW1vdmVcbn07XG5PYmplY3Qua2V5cyhNZXRob2RzKS5mb3JFYWNoKGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSgkLmZuLCBtZXRob2ROYW1lLCB7XG4gICAgdmFsdWU6IE1ldGhvZHNbbWV0aG9kTmFtZV0sXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0ICQ7IiwiaW1wb3J0IHsgZ2V0RG9jdW1lbnQsIGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuXG5mdW5jdGlvbiBkZWxldGVQcm9wcyhvYmopIHtcbiAgdmFyIG9iamVjdCA9IG9iajtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB0cnkge1xuICAgICAgb2JqZWN0W2tleV0gPSBudWxsO1xuICAgIH0gY2F0Y2ggKGUpIHsvLyBubyBnZXR0ZXIgZm9yIG9iamVjdFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBkZWxldGUgb2JqZWN0W2tleV07XG4gICAgfSBjYXRjaCAoZSkgey8vIHNvbWV0aGluZyBnb3Qgd3JvbmdcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBuZXh0VGljayhjYWxsYmFjaywgZGVsYXkpIHtcbiAgaWYgKGRlbGF5ID09PSB2b2lkIDApIHtcbiAgICBkZWxheSA9IDA7XG4gIH1cblxuICByZXR1cm4gc2V0VGltZW91dChjYWxsYmFjaywgZGVsYXkpO1xufVxuXG5mdW5jdGlvbiBub3coKSB7XG4gIHJldHVybiBEYXRlLm5vdygpO1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsKSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgdmFyIHN0eWxlO1xuXG4gIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSkge1xuICAgIHN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpO1xuICB9XG5cbiAgaWYgKCFzdHlsZSAmJiBlbC5jdXJyZW50U3R5bGUpIHtcbiAgICBzdHlsZSA9IGVsLmN1cnJlbnRTdHlsZTtcbiAgfVxuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IGVsLnN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2xhdGUoZWwsIGF4aXMpIHtcbiAgaWYgKGF4aXMgPT09IHZvaWQgMCkge1xuICAgIGF4aXMgPSAneCc7XG4gIH1cblxuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIHZhciBtYXRyaXg7XG4gIHZhciBjdXJUcmFuc2Zvcm07XG4gIHZhciB0cmFuc2Zvcm1NYXRyaXg7XG4gIHZhciBjdXJTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWwsIG51bGwpO1xuXG4gIGlmICh3aW5kb3cuV2ViS2l0Q1NTTWF0cml4KSB7XG4gICAgY3VyVHJhbnNmb3JtID0gY3VyU3R5bGUudHJhbnNmb3JtIHx8IGN1clN0eWxlLndlYmtpdFRyYW5zZm9ybTtcblxuICAgIGlmIChjdXJUcmFuc2Zvcm0uc3BsaXQoJywnKS5sZW5ndGggPiA2KSB7XG4gICAgICBjdXJUcmFuc2Zvcm0gPSBjdXJUcmFuc2Zvcm0uc3BsaXQoJywgJykubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHJldHVybiBhLnJlcGxhY2UoJywnLCAnLicpO1xuICAgICAgfSkuam9pbignLCAnKTtcbiAgICB9IC8vIFNvbWUgb2xkIHZlcnNpb25zIG9mIFdlYmtpdCBjaG9rZSB3aGVuICdub25lJyBpcyBwYXNzZWQ7IHBhc3NcbiAgICAvLyBlbXB0eSBzdHJpbmcgaW5zdGVhZCBpbiB0aGlzIGNhc2VcblxuXG4gICAgdHJhbnNmb3JtTWF0cml4ID0gbmV3IHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgoY3VyVHJhbnNmb3JtID09PSAnbm9uZScgPyAnJyA6IGN1clRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgdHJhbnNmb3JtTWF0cml4ID0gY3VyU3R5bGUuTW96VHJhbnNmb3JtIHx8IGN1clN0eWxlLk9UcmFuc2Zvcm0gfHwgY3VyU3R5bGUuTXNUcmFuc2Zvcm0gfHwgY3VyU3R5bGUubXNUcmFuc2Zvcm0gfHwgY3VyU3R5bGUudHJhbnNmb3JtIHx8IGN1clN0eWxlLmdldFByb3BlcnR5VmFsdWUoJ3RyYW5zZm9ybScpLnJlcGxhY2UoJ3RyYW5zbGF0ZSgnLCAnbWF0cml4KDEsIDAsIDAsIDEsJyk7XG4gICAgbWF0cml4ID0gdHJhbnNmb3JtTWF0cml4LnRvU3RyaW5nKCkuc3BsaXQoJywnKTtcbiAgfVxuXG4gIGlmIChheGlzID09PSAneCcpIHtcbiAgICAvLyBMYXRlc3QgQ2hyb21lIGFuZCB3ZWJraXRzIEZpeFxuICAgIGlmICh3aW5kb3cuV2ViS2l0Q1NTTWF0cml4KSBjdXJUcmFuc2Zvcm0gPSB0cmFuc2Zvcm1NYXRyaXgubTQxOyAvLyBDcmF6eSBJRTEwIE1hdHJpeFxuICAgIGVsc2UgaWYgKG1hdHJpeC5sZW5ndGggPT09IDE2KSBjdXJUcmFuc2Zvcm0gPSBwYXJzZUZsb2F0KG1hdHJpeFsxMl0pOyAvLyBOb3JtYWwgQnJvd3NlcnNcbiAgICAgIGVsc2UgY3VyVHJhbnNmb3JtID0gcGFyc2VGbG9hdChtYXRyaXhbNF0pO1xuICB9XG5cbiAgaWYgKGF4aXMgPT09ICd5Jykge1xuICAgIC8vIExhdGVzdCBDaHJvbWUgYW5kIHdlYmtpdHMgRml4XG4gICAgaWYgKHdpbmRvdy5XZWJLaXRDU1NNYXRyaXgpIGN1clRyYW5zZm9ybSA9IHRyYW5zZm9ybU1hdHJpeC5tNDI7IC8vIENyYXp5IElFMTAgTWF0cml4XG4gICAgZWxzZSBpZiAobWF0cml4Lmxlbmd0aCA9PT0gMTYpIGN1clRyYW5zZm9ybSA9IHBhcnNlRmxvYXQobWF0cml4WzEzXSk7IC8vIE5vcm1hbCBCcm93c2Vyc1xuICAgICAgZWxzZSBjdXJUcmFuc2Zvcm0gPSBwYXJzZUZsb2F0KG1hdHJpeFs1XSk7XG4gIH1cblxuICByZXR1cm4gY3VyVHJhbnNmb3JtIHx8IDA7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KG8pIHtcbiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBvICE9PSBudWxsICYmIG8uY29uc3RydWN0b3IgJiYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKSA9PT0gJ09iamVjdCc7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZShub2RlKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5IVE1MRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuIG5vZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IDEgfHwgbm9kZS5ub2RlVHlwZSA9PT0gMTEpO1xufVxuXG5mdW5jdGlvbiBleHRlbmQoKSB7XG4gIHZhciB0byA9IE9iamVjdChhcmd1bWVudHMubGVuZ3RoIDw9IDAgPyB1bmRlZmluZWQgOiBhcmd1bWVudHNbMF0pO1xuICB2YXIgbm9FeHRlbmQgPSBbJ19fcHJvdG9fXycsICdjb25zdHJ1Y3RvcicsICdwcm90b3R5cGUnXTtcblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHZhciBuZXh0U291cmNlID0gaSA8IDAgfHwgYXJndW1lbnRzLmxlbmd0aCA8PSBpID8gdW5kZWZpbmVkIDogYXJndW1lbnRzW2ldO1xuXG4gICAgaWYgKG5leHRTb3VyY2UgIT09IHVuZGVmaW5lZCAmJiBuZXh0U291cmNlICE9PSBudWxsICYmICFpc05vZGUobmV4dFNvdXJjZSkpIHtcbiAgICAgIHZhciBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyhPYmplY3QobmV4dFNvdXJjZSkpLmZpbHRlcihmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBub0V4dGVuZC5pbmRleE9mKGtleSkgPCAwO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAodmFyIG5leHRJbmRleCA9IDAsIGxlbiA9IGtleXNBcnJheS5sZW5ndGg7IG5leHRJbmRleCA8IGxlbjsgbmV4dEluZGV4ICs9IDEpIHtcbiAgICAgICAgdmFyIG5leHRLZXkgPSBrZXlzQXJyYXlbbmV4dEluZGV4XTtcbiAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5leHRTb3VyY2UsIG5leHRLZXkpO1xuXG4gICAgICAgIGlmIChkZXNjICE9PSB1bmRlZmluZWQgJiYgZGVzYy5lbnVtZXJhYmxlKSB7XG4gICAgICAgICAgaWYgKGlzT2JqZWN0KHRvW25leHRLZXldKSAmJiBpc09iamVjdChuZXh0U291cmNlW25leHRLZXldKSkge1xuICAgICAgICAgICAgaWYgKG5leHRTb3VyY2VbbmV4dEtleV0uX19zd2lwZXJfXykge1xuICAgICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBleHRlbmQodG9bbmV4dEtleV0sIG5leHRTb3VyY2VbbmV4dEtleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoIWlzT2JqZWN0KHRvW25leHRLZXldKSAmJiBpc09iamVjdChuZXh0U291cmNlW25leHRLZXldKSkge1xuICAgICAgICAgICAgdG9bbmV4dEtleV0gPSB7fTtcblxuICAgICAgICAgICAgaWYgKG5leHRTb3VyY2VbbmV4dEtleV0uX19zd2lwZXJfXykge1xuICAgICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBleHRlbmQodG9bbmV4dEtleV0sIG5leHRTb3VyY2VbbmV4dEtleV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRvO1xufVxuXG5mdW5jdGlvbiBiaW5kTW9kdWxlTWV0aG9kcyhpbnN0YW5jZSwgb2JqKSB7XG4gIE9iamVjdC5rZXlzKG9iaikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGlzT2JqZWN0KG9ialtrZXldKSkge1xuICAgICAgT2JqZWN0LmtleXMob2JqW2tleV0pLmZvckVhY2goZnVuY3Rpb24gKHN1YktleSkge1xuICAgICAgICBpZiAodHlwZW9mIG9ialtrZXldW3N1YktleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvYmpba2V5XVtzdWJLZXldID0gb2JqW2tleV1bc3ViS2V5XS5iaW5kKGluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Vba2V5XSA9IG9ialtrZXldO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xhc3Nlc1RvU2VsZWN0b3IoY2xhc3Nlcykge1xuICBpZiAoY2xhc3NlcyA9PT0gdm9pZCAwKSB7XG4gICAgY2xhc3NlcyA9ICcnO1xuICB9XG5cbiAgcmV0dXJuIFwiLlwiICsgY2xhc3Nlcy50cmltKCkucmVwbGFjZSgvKFtcXC46IVxcL10pL2csICdcXFxcJDEnKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gIC5yZXBsYWNlKC8gL2csICcuJyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRJZk5vdERlZmluZWQoJGNvbnRhaW5lciwgcGFyYW1zLCBjcmVhdGVFbGVtZW50cywgY2hlY2tQcm9wcykge1xuICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuXG4gIGlmIChjcmVhdGVFbGVtZW50cykge1xuICAgIE9iamVjdC5rZXlzKGNoZWNrUHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKCFwYXJhbXNba2V5XSAmJiBwYXJhbXMuYXV0byA9PT0gdHJ1ZSkge1xuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGNoZWNrUHJvcHNba2V5XTtcbiAgICAgICAgJGNvbnRhaW5lci5hcHBlbmQoZWxlbWVudCk7XG4gICAgICAgIHBhcmFtc1trZXldID0gZWxlbWVudDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCB7IGRlbGV0ZVByb3BzLCBuZXh0VGljaywgbm93LCBnZXRUcmFuc2xhdGUsIGlzT2JqZWN0LCBleHRlbmQsIGJpbmRNb2R1bGVNZXRob2RzLCBnZXRDb21wdXRlZFN0eWxlLCBjbGFzc2VzVG9TZWxlY3RvciwgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9OyIsImltcG9ydCB7IGdldFdpbmRvdywgZ2V0RG9jdW1lbnQgfSBmcm9tICdzc3Itd2luZG93JztcbnZhciBzdXBwb3J0O1xuXG5mdW5jdGlvbiBjYWxjU3VwcG9ydCgpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICByZXR1cm4ge1xuICAgIHRvdWNoOiAhISgnb250b3VjaHN0YXJ0JyBpbiB3aW5kb3cgfHwgd2luZG93LkRvY3VtZW50VG91Y2ggJiYgZG9jdW1lbnQgaW5zdGFuY2VvZiB3aW5kb3cuRG9jdW1lbnRUb3VjaCksXG4gICAgcG9pbnRlckV2ZW50czogISF3aW5kb3cuUG9pbnRlckV2ZW50ICYmICdtYXhUb3VjaFBvaW50cycgaW4gd2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID49IDAsXG4gICAgb2JzZXJ2ZXI6IGZ1bmN0aW9uIGNoZWNrT2JzZXJ2ZXIoKSB7XG4gICAgICByZXR1cm4gJ011dGF0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdyB8fCAnV2Via2l0TXV0YXRpb25PYnNlcnZlcicgaW4gd2luZG93O1xuICAgIH0oKSxcbiAgICBwYXNzaXZlTGlzdGVuZXI6IGZ1bmN0aW9uIGNoZWNrUGFzc2l2ZUxpc3RlbmVyKCkge1xuICAgICAgdmFyIHN1cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuXG4gICAgICB0cnkge1xuICAgICAgICB2YXIgb3B0cyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3Bhc3NpdmUnLCB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0UGFzc2l2ZUxpc3RlbmVyJywgbnVsbCwgb3B0cyk7XG4gICAgICB9IGNhdGNoIChlKSB7Ly8gTm8gc3VwcG9ydFxuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3VwcG9ydHNQYXNzaXZlO1xuICAgIH0oKSxcbiAgICBnZXN0dXJlczogZnVuY3Rpb24gY2hlY2tHZXN0dXJlcygpIHtcbiAgICAgIHJldHVybiAnb25nZXN0dXJlc3RhcnQnIGluIHdpbmRvdztcbiAgICB9KClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3VwcG9ydCgpIHtcbiAgaWYgKCFzdXBwb3J0KSB7XG4gICAgc3VwcG9ydCA9IGNhbGNTdXBwb3J0KCk7XG4gIH1cblxuICByZXR1cm4gc3VwcG9ydDtcbn1cblxuZXhwb3J0IHsgZ2V0U3VwcG9ydCB9OyIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0IHsgZ2V0U3VwcG9ydCB9IGZyb20gJy4vZ2V0LXN1cHBvcnQnO1xudmFyIGRldmljZTtcblxuZnVuY3Rpb24gY2FsY0RldmljZShfdGVtcCkge1xuICB2YXIgX3JlZiA9IF90ZW1wID09PSB2b2lkIDAgPyB7fSA6IF90ZW1wLFxuICAgICAgdXNlckFnZW50ID0gX3JlZi51c2VyQWdlbnQ7XG5cbiAgdmFyIHN1cHBvcnQgPSBnZXRTdXBwb3J0KCk7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgdmFyIHBsYXRmb3JtID0gd2luZG93Lm5hdmlnYXRvci5wbGF0Zm9ybTtcbiAgdmFyIHVhID0gdXNlckFnZW50IHx8IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50O1xuICB2YXIgZGV2aWNlID0ge1xuICAgIGlvczogZmFsc2UsXG4gICAgYW5kcm9pZDogZmFsc2VcbiAgfTtcbiAgdmFyIHNjcmVlbldpZHRoID0gd2luZG93LnNjcmVlbi53aWR0aDtcbiAgdmFyIHNjcmVlbkhlaWdodCA9IHdpbmRvdy5zY3JlZW4uaGVpZ2h0O1xuICB2YXIgYW5kcm9pZCA9IHVhLm1hdGNoKC8oQW5kcm9pZCk7P1tcXHNcXC9dKyhbXFxkLl0rKT8vKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gIHZhciBpcGFkID0gdWEubWF0Y2goLyhpUGFkKS4qT1NcXHMoW1xcZF9dKykvKTtcbiAgdmFyIGlwb2QgPSB1YS5tYXRjaCgvKGlQb2QpKC4qT1NcXHMoW1xcZF9dKykpPy8pO1xuICB2YXIgaXBob25lID0gIWlwYWQgJiYgdWEubWF0Y2goLyhpUGhvbmVcXHNPU3xpT1MpXFxzKFtcXGRfXSspLyk7XG4gIHZhciB3aW5kb3dzID0gcGxhdGZvcm0gPT09ICdXaW4zMic7XG4gIHZhciBtYWNvcyA9IHBsYXRmb3JtID09PSAnTWFjSW50ZWwnOyAvLyBpUGFkT3MgMTMgZml4XG5cbiAgdmFyIGlQYWRTY3JlZW5zID0gWycxMDI0eDEzNjYnLCAnMTM2NngxMDI0JywgJzgzNHgxMTk0JywgJzExOTR4ODM0JywgJzgzNHgxMTEyJywgJzExMTJ4ODM0JywgJzc2OHgxMDI0JywgJzEwMjR4NzY4JywgJzgyMHgxMTgwJywgJzExODB4ODIwJywgJzgxMHgxMDgwJywgJzEwODB4ODEwJ107XG5cbiAgaWYgKCFpcGFkICYmIG1hY29zICYmIHN1cHBvcnQudG91Y2ggJiYgaVBhZFNjcmVlbnMuaW5kZXhPZihzY3JlZW5XaWR0aCArIFwieFwiICsgc2NyZWVuSGVpZ2h0KSA+PSAwKSB7XG4gICAgaXBhZCA9IHVhLm1hdGNoKC8oVmVyc2lvbilcXC8oW1xcZC5dKykvKTtcbiAgICBpZiAoIWlwYWQpIGlwYWQgPSBbMCwgMSwgJzEzXzBfMCddO1xuICAgIG1hY29zID0gZmFsc2U7XG4gIH0gLy8gQW5kcm9pZFxuXG5cbiAgaWYgKGFuZHJvaWQgJiYgIXdpbmRvd3MpIHtcbiAgICBkZXZpY2Uub3MgPSAnYW5kcm9pZCc7XG4gICAgZGV2aWNlLmFuZHJvaWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGlwYWQgfHwgaXBob25lIHx8IGlwb2QpIHtcbiAgICBkZXZpY2Uub3MgPSAnaW9zJztcbiAgICBkZXZpY2UuaW9zID0gdHJ1ZTtcbiAgfSAvLyBFeHBvcnQgb2JqZWN0XG5cblxuICByZXR1cm4gZGV2aWNlO1xufVxuXG5mdW5jdGlvbiBnZXREZXZpY2Uob3ZlcnJpZGVzKSB7XG4gIGlmIChvdmVycmlkZXMgPT09IHZvaWQgMCkge1xuICAgIG92ZXJyaWRlcyA9IHt9O1xuICB9XG5cbiAgaWYgKCFkZXZpY2UpIHtcbiAgICBkZXZpY2UgPSBjYWxjRGV2aWNlKG92ZXJyaWRlcyk7XG4gIH1cblxuICByZXR1cm4gZGV2aWNlO1xufVxuXG5leHBvcnQgeyBnZXREZXZpY2UgfTsiLCJpbXBvcnQgeyBnZXRXaW5kb3cgfSBmcm9tICdzc3Itd2luZG93JztcbnZhciBicm93c2VyO1xuXG5mdW5jdGlvbiBjYWxjQnJvd3NlcigpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdygpO1xuXG4gIGZ1bmN0aW9uIGlzU2FmYXJpKCkge1xuICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHVhLmluZGV4T2YoJ3NhZmFyaScpID49IDAgJiYgdWEuaW5kZXhPZignY2hyb21lJykgPCAwICYmIHVhLmluZGV4T2YoJ2FuZHJvaWQnKSA8IDA7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGlzRWRnZTogISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRWRnZS9nKSxcbiAgICBpc1NhZmFyaTogaXNTYWZhcmkoKSxcbiAgICBpc1dlYlZpZXc6IC8oaVBob25lfGlQb2R8aVBhZCkuKkFwcGxlV2ViS2l0KD8hLipTYWZhcmkpL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudClcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0QnJvd3NlcigpIHtcbiAgaWYgKCFicm93c2VyKSB7XG4gICAgYnJvd3NlciA9IGNhbGNCcm93c2VyKCk7XG4gIH1cblxuICByZXR1cm4gYnJvd3Nlcjtcbn1cblxuZXhwb3J0IHsgZ2V0QnJvd3NlciB9OyIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xuXG52YXIgc3VwcG9ydHNSZXNpemVPYnNlcnZlciA9IGZ1bmN0aW9uIHN1cHBvcnRzUmVzaXplT2JzZXJ2ZXIoKSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnO1xufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncmVzaXplJyxcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgZXh0ZW5kKHN3aXBlciwge1xuICAgICAgcmVzaXplOiB7XG4gICAgICAgIG9ic2VydmVyOiBudWxsLFxuICAgICAgICBjcmVhdGVPYnNlcnZlcjogZnVuY3Rpb24gY3JlYXRlT2JzZXJ2ZXIoKSB7XG4gICAgICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCB8fCAhc3dpcGVyLmluaXRpYWxpemVkKSByZXR1cm47XG4gICAgICAgICAgc3dpcGVyLnJlc2l6ZS5vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgICAgICAgdmFyIHdpZHRoID0gc3dpcGVyLndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodCA9IHN3aXBlci5oZWlnaHQ7XG4gICAgICAgICAgICB2YXIgbmV3V2lkdGggPSB3aWR0aDtcbiAgICAgICAgICAgIHZhciBuZXdIZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgICAgdmFyIGNvbnRlbnRCb3hTaXplID0gX3JlZi5jb250ZW50Qm94U2l6ZSxcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0ID0gX3JlZi5jb250ZW50UmVjdCxcbiAgICAgICAgICAgICAgICAgIHRhcmdldCA9IF9yZWYudGFyZ2V0O1xuICAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldCAhPT0gc3dpcGVyLmVsKSByZXR1cm47XG4gICAgICAgICAgICAgIG5ld1dpZHRoID0gY29udGVudFJlY3QgPyBjb250ZW50UmVjdC53aWR0aCA6IChjb250ZW50Qm94U2l6ZVswXSB8fCBjb250ZW50Qm94U2l6ZSkuaW5saW5lU2l6ZTtcbiAgICAgICAgICAgICAgbmV3SGVpZ2h0ID0gY29udGVudFJlY3QgPyBjb250ZW50UmVjdC5oZWlnaHQgOiAoY29udGVudEJveFNpemVbMF0gfHwgY29udGVudEJveFNpemUpLmJsb2NrU2l6ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAobmV3V2lkdGggIT09IHdpZHRoIHx8IG5ld0hlaWdodCAhPT0gaGVpZ2h0KSB7XG4gICAgICAgICAgICAgIHN3aXBlci5yZXNpemUucmVzaXplSGFuZGxlcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHN3aXBlci5yZXNpemUub2JzZXJ2ZXIub2JzZXJ2ZShzd2lwZXIuZWwpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmVPYnNlcnZlcjogZnVuY3Rpb24gcmVtb3ZlT2JzZXJ2ZXIoKSB7XG4gICAgICAgICAgaWYgKHN3aXBlci5yZXNpemUub2JzZXJ2ZXIgJiYgc3dpcGVyLnJlc2l6ZS5vYnNlcnZlci51bm9ic2VydmUgJiYgc3dpcGVyLmVsKSB7XG4gICAgICAgICAgICBzd2lwZXIucmVzaXplLm9ic2VydmVyLnVub2JzZXJ2ZShzd2lwZXIuZWwpO1xuICAgICAgICAgICAgc3dpcGVyLnJlc2l6ZS5vYnNlcnZlciA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICByZXNpemVIYW5kbGVyOiBmdW5jdGlvbiByZXNpemVIYW5kbGVyKCkge1xuICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICAgIHN3aXBlci5lbWl0KCdiZWZvcmVSZXNpemUnKTtcbiAgICAgICAgICBzd2lwZXIuZW1pdCgncmVzaXplJyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9yaWVudGF0aW9uQ2hhbmdlSGFuZGxlcjogZnVuY3Rpb24gb3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKCkge1xuICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQgfHwgIXN3aXBlci5pbml0aWFsaXplZCkgcmV0dXJuO1xuICAgICAgICAgIHN3aXBlci5lbWl0KCdvcmllbnRhdGlvbmNoYW5nZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIG9uOiB7XG4gICAgaW5pdDogZnVuY3Rpb24gaW5pdChzd2lwZXIpIHtcbiAgICAgIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcblxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMucmVzaXplT2JzZXJ2ZXIgJiYgc3VwcG9ydHNSZXNpemVPYnNlcnZlcigpKSB7XG4gICAgICAgIHN3aXBlci5yZXNpemUuY3JlYXRlT2JzZXJ2ZXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSAvLyBFbWl0IHJlc2l6ZVxuXG5cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBzd2lwZXIucmVzaXplLnJlc2l6ZUhhbmRsZXIpOyAvLyBFbWl0IG9yaWVudGF0aW9uY2hhbmdlXG5cbiAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHN3aXBlci5yZXNpemUub3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKTtcbiAgICB9LFxuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koc3dpcGVyKSB7XG4gICAgICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gICAgICBzd2lwZXIucmVzaXplLnJlbW92ZU9ic2VydmVyKCk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgc3dpcGVyLnJlc2l6ZS5yZXNpemVIYW5kbGVyKTtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdvcmllbnRhdGlvbmNoYW5nZScsIHN3aXBlci5yZXNpemUub3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyKTtcbiAgICB9XG4gIH1cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgZ2V0V2luZG93IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgeyBiaW5kTW9kdWxlTWV0aG9kcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbnZhciBPYnNlcnZlciA9IHtcbiAgYXR0YWNoOiBmdW5jdGlvbiBhdHRhY2godGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICB2YXIgT2JzZXJ2ZXJGdW5jID0gd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIgfHwgd2luZG93LldlYmtpdE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgdmFyIG9ic2VydmVyID0gbmV3IE9ic2VydmVyRnVuYyhmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgICAvLyBUaGUgb2JzZXJ2ZXJVcGRhdGUgZXZlbnQgc2hvdWxkIG9ubHkgYmUgdHJpZ2dlcmVkXG4gICAgICAvLyBvbmNlIGRlc3BpdGUgdGhlIG51bWJlciBvZiBtdXRhdGlvbnMuICBBZGRpdGlvbmFsXG4gICAgICAvLyB0cmlnZ2VycyBhcmUgcmVkdW5kYW50IGFuZCBhcmUgdmVyeSBjb3N0bHlcbiAgICAgIGlmIChtdXRhdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHN3aXBlci5lbWl0KCdvYnNlcnZlclVwZGF0ZScsIG11dGF0aW9uc1swXSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyIG9ic2VydmVyVXBkYXRlID0gZnVuY3Rpb24gb2JzZXJ2ZXJVcGRhdGUoKSB7XG4gICAgICAgIHN3aXBlci5lbWl0KCdvYnNlcnZlclVwZGF0ZScsIG11dGF0aW9uc1swXSk7XG4gICAgICB9O1xuXG4gICAgICBpZiAod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSkge1xuICAgICAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9ic2VydmVyVXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KG9ic2VydmVyVXBkYXRlLCAwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCwge1xuICAgICAgYXR0cmlidXRlczogdHlwZW9mIG9wdGlvbnMuYXR0cmlidXRlcyA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucy5hdHRyaWJ1dGVzLFxuICAgICAgY2hpbGRMaXN0OiB0eXBlb2Ygb3B0aW9ucy5jaGlsZExpc3QgPT09ICd1bmRlZmluZWQnID8gdHJ1ZSA6IG9wdGlvbnMuY2hpbGRMaXN0LFxuICAgICAgY2hhcmFjdGVyRGF0YTogdHlwZW9mIG9wdGlvbnMuY2hhcmFjdGVyRGF0YSA9PT0gJ3VuZGVmaW5lZCcgPyB0cnVlIDogb3B0aW9ucy5jaGFyYWN0ZXJEYXRhXG4gICAgfSk7XG4gICAgc3dpcGVyLm9ic2VydmVyLm9ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgfSxcbiAgaW5pdDogZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlci5zdXBwb3J0Lm9ic2VydmVyIHx8ICFzd2lwZXIucGFyYW1zLm9ic2VydmVyKSByZXR1cm47XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5vYnNlcnZlUGFyZW50cykge1xuICAgICAgdmFyIGNvbnRhaW5lclBhcmVudHMgPSBzd2lwZXIuJGVsLnBhcmVudHMoKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb250YWluZXJQYXJlbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHN3aXBlci5vYnNlcnZlci5hdHRhY2goY29udGFpbmVyUGFyZW50c1tpXSk7XG4gICAgICB9XG4gICAgfSAvLyBPYnNlcnZlIGNvbnRhaW5lclxuXG5cbiAgICBzd2lwZXIub2JzZXJ2ZXIuYXR0YWNoKHN3aXBlci4kZWxbMF0sIHtcbiAgICAgIGNoaWxkTGlzdDogc3dpcGVyLnBhcmFtcy5vYnNlcnZlU2xpZGVDaGlsZHJlblxuICAgIH0pOyAvLyBPYnNlcnZlIHdyYXBwZXJcblxuICAgIHN3aXBlci5vYnNlcnZlci5hdHRhY2goc3dpcGVyLiR3cmFwcGVyRWxbMF0sIHtcbiAgICAgIGF0dHJpYnV0ZXM6IGZhbHNlXG4gICAgfSk7XG4gIH0sXG4gIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgc3dpcGVyLm9ic2VydmVyLm9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0pO1xuICAgIHN3aXBlci5vYnNlcnZlci5vYnNlcnZlcnMgPSBbXTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ29ic2VydmVyJyxcbiAgcGFyYW1zOiB7XG4gICAgb2JzZXJ2ZXI6IGZhbHNlLFxuICAgIG9ic2VydmVQYXJlbnRzOiBmYWxzZSxcbiAgICBvYnNlcnZlU2xpZGVDaGlsZHJlbjogZmFsc2VcbiAgfSxcbiAgY3JlYXRlOiBmdW5jdGlvbiBjcmVhdGUoKSB7XG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgYmluZE1vZHVsZU1ldGhvZHMoc3dpcGVyLCB7XG4gICAgICBvYnNlcnZlcjogX2V4dGVuZHMoe30sIE9ic2VydmVyLCB7XG4gICAgICAgIG9ic2VydmVyczogW11cbiAgICAgIH0pXG4gICAgfSk7XG4gIH0sXG4gIG9uOiB7XG4gICAgaW5pdDogZnVuY3Rpb24gaW5pdChzd2lwZXIpIHtcbiAgICAgIHN3aXBlci5vYnNlcnZlci5pbml0KCk7XG4gICAgfSxcbiAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KHN3aXBlcikge1xuICAgICAgc3dpcGVyLm9ic2VydmVyLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cbn07IiwiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb246IGZ1bmN0aW9uIG9uKGV2ZW50cywgaGFuZGxlciwgcHJpb3JpdHkpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcbiAgICB2YXIgbWV0aG9kID0gcHJpb3JpdHkgPyAndW5zaGlmdCcgOiAncHVzaCc7XG4gICAgZXZlbnRzLnNwbGl0KCcgJykuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmICghc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdKSBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0gPSBbXTtcbiAgICAgIHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XVttZXRob2RdKGhhbmRsZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9LFxuICBvbmNlOiBmdW5jdGlvbiBvbmNlKGV2ZW50cywgaGFuZGxlciwgcHJpb3JpdHkpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSByZXR1cm4gc2VsZjtcblxuICAgIGZ1bmN0aW9uIG9uY2VIYW5kbGVyKCkge1xuICAgICAgc2VsZi5vZmYoZXZlbnRzLCBvbmNlSGFuZGxlcik7XG5cbiAgICAgIGlmIChvbmNlSGFuZGxlci5fX2VtaXR0ZXJQcm94eSkge1xuICAgICAgICBkZWxldGUgb25jZUhhbmRsZXIuX19lbWl0dGVyUHJveHk7XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgfVxuXG4gICAgICBoYW5kbGVyLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgIH1cblxuICAgIG9uY2VIYW5kbGVyLl9fZW1pdHRlclByb3h5ID0gaGFuZGxlcjtcbiAgICByZXR1cm4gc2VsZi5vbihldmVudHMsIG9uY2VIYW5kbGVyLCBwcmlvcml0eSk7XG4gIH0sXG4gIG9uQW55OiBmdW5jdGlvbiBvbkFueShoYW5kbGVyLCBwcmlvcml0eSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAodHlwZW9mIGhhbmRsZXIgIT09ICdmdW5jdGlvbicpIHJldHVybiBzZWxmO1xuICAgIHZhciBtZXRob2QgPSBwcmlvcml0eSA/ICd1bnNoaWZ0JyA6ICdwdXNoJztcblxuICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpIDwgMCkge1xuICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnNbbWV0aG9kXShoYW5kbGVyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfSxcbiAgb2ZmQW55OiBmdW5jdGlvbiBvZmZBbnkoaGFuZGxlcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzQW55TGlzdGVuZXJzKSByZXR1cm4gc2VsZjtcbiAgICB2YXIgaW5kZXggPSBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5pbmRleE9mKGhhbmRsZXIpO1xuXG4gICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgIHNlbGYuZXZlbnRzQW55TGlzdGVuZXJzLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG4gIH0sXG4gIG9mZjogZnVuY3Rpb24gb2ZmKGV2ZW50cywgaGFuZGxlcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzKSByZXR1cm4gc2VsZjtcbiAgICBldmVudHMuc3BsaXQoJyAnKS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0gPSBbXTtcbiAgICAgIH0gZWxzZSBpZiAoc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdKSB7XG4gICAgICAgIHNlbGYuZXZlbnRzTGlzdGVuZXJzW2V2ZW50XS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudEhhbmRsZXIsIGluZGV4KSB7XG4gICAgICAgICAgaWYgKGV2ZW50SGFuZGxlciA9PT0gaGFuZGxlciB8fCBldmVudEhhbmRsZXIuX19lbWl0dGVyUHJveHkgJiYgZXZlbnRIYW5kbGVyLl9fZW1pdHRlclByb3h5ID09PSBoYW5kbGVyKSB7XG4gICAgICAgICAgICBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxmO1xuICB9LFxuICBlbWl0OiBmdW5jdGlvbiBlbWl0KCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICBpZiAoIXNlbGYuZXZlbnRzTGlzdGVuZXJzKSByZXR1cm4gc2VsZjtcbiAgICB2YXIgZXZlbnRzO1xuICAgIHZhciBkYXRhO1xuICAgIHZhciBjb250ZXh0O1xuXG4gICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJyB8fCBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG4gICAgICBldmVudHMgPSBhcmdzWzBdO1xuICAgICAgZGF0YSA9IGFyZ3Muc2xpY2UoMSwgYXJncy5sZW5ndGgpO1xuICAgICAgY29udGV4dCA9IHNlbGY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50cyA9IGFyZ3NbMF0uZXZlbnRzO1xuICAgICAgZGF0YSA9IGFyZ3NbMF0uZGF0YTtcbiAgICAgIGNvbnRleHQgPSBhcmdzWzBdLmNvbnRleHQgfHwgc2VsZjtcbiAgICB9XG5cbiAgICBkYXRhLnVuc2hpZnQoY29udGV4dCk7XG4gICAgdmFyIGV2ZW50c0FycmF5ID0gQXJyYXkuaXNBcnJheShldmVudHMpID8gZXZlbnRzIDogZXZlbnRzLnNwbGl0KCcgJyk7XG4gICAgZXZlbnRzQXJyYXkuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIGlmIChzZWxmLmV2ZW50c0FueUxpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0FueUxpc3RlbmVycy5sZW5ndGgpIHtcbiAgICAgICAgc2VsZi5ldmVudHNBbnlMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAoZXZlbnRIYW5kbGVyKSB7XG4gICAgICAgICAgZXZlbnRIYW5kbGVyLmFwcGx5KGNvbnRleHQsIFtldmVudF0uY29uY2F0KGRhdGEpKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWxmLmV2ZW50c0xpc3RlbmVycyAmJiBzZWxmLmV2ZW50c0xpc3RlbmVyc1tldmVudF0pIHtcbiAgICAgICAgc2VsZi5ldmVudHNMaXN0ZW5lcnNbZXZlbnRdLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50SGFuZGxlcikge1xuICAgICAgICAgIGV2ZW50SGFuZGxlci5hcHBseShjb250ZXh0LCBkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHNlbGY7XG4gIH1cbn07IiwiaW1wb3J0IHVwZGF0ZVNpemUgZnJvbSAnLi91cGRhdGVTaXplJztcbmltcG9ydCB1cGRhdGVTbGlkZXMgZnJvbSAnLi91cGRhdGVTbGlkZXMnO1xuaW1wb3J0IHVwZGF0ZUF1dG9IZWlnaHQgZnJvbSAnLi91cGRhdGVBdXRvSGVpZ2h0JztcbmltcG9ydCB1cGRhdGVTbGlkZXNPZmZzZXQgZnJvbSAnLi91cGRhdGVTbGlkZXNPZmZzZXQnO1xuaW1wb3J0IHVwZGF0ZVNsaWRlc1Byb2dyZXNzIGZyb20gJy4vdXBkYXRlU2xpZGVzUHJvZ3Jlc3MnO1xuaW1wb3J0IHVwZGF0ZVByb2dyZXNzIGZyb20gJy4vdXBkYXRlUHJvZ3Jlc3MnO1xuaW1wb3J0IHVwZGF0ZVNsaWRlc0NsYXNzZXMgZnJvbSAnLi91cGRhdGVTbGlkZXNDbGFzc2VzJztcbmltcG9ydCB1cGRhdGVBY3RpdmVJbmRleCBmcm9tICcuL3VwZGF0ZUFjdGl2ZUluZGV4JztcbmltcG9ydCB1cGRhdGVDbGlja2VkU2xpZGUgZnJvbSAnLi91cGRhdGVDbGlja2VkU2xpZGUnO1xuZXhwb3J0IGRlZmF1bHQge1xuICB1cGRhdGVTaXplOiB1cGRhdGVTaXplLFxuICB1cGRhdGVTbGlkZXM6IHVwZGF0ZVNsaWRlcyxcbiAgdXBkYXRlQXV0b0hlaWdodDogdXBkYXRlQXV0b0hlaWdodCxcbiAgdXBkYXRlU2xpZGVzT2Zmc2V0OiB1cGRhdGVTbGlkZXNPZmZzZXQsXG4gIHVwZGF0ZVNsaWRlc1Byb2dyZXNzOiB1cGRhdGVTbGlkZXNQcm9ncmVzcyxcbiAgdXBkYXRlUHJvZ3Jlc3M6IHVwZGF0ZVByb2dyZXNzLFxuICB1cGRhdGVTbGlkZXNDbGFzc2VzOiB1cGRhdGVTbGlkZXNDbGFzc2VzLFxuICB1cGRhdGVBY3RpdmVJbmRleDogdXBkYXRlQWN0aXZlSW5kZXgsXG4gIHVwZGF0ZUNsaWNrZWRTbGlkZTogdXBkYXRlQ2xpY2tlZFNsaWRlXG59OyIsImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVwZGF0ZVNpemUoKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgd2lkdGg7XG4gIHZhciBoZWlnaHQ7XG4gIHZhciAkZWwgPSBzd2lwZXIuJGVsO1xuXG4gIGlmICh0eXBlb2Ygc3dpcGVyLnBhcmFtcy53aWR0aCAhPT0gJ3VuZGVmaW5lZCcgJiYgc3dpcGVyLnBhcmFtcy53aWR0aCAhPT0gbnVsbCkge1xuICAgIHdpZHRoID0gc3dpcGVyLnBhcmFtcy53aWR0aDtcbiAgfSBlbHNlIHtcbiAgICB3aWR0aCA9ICRlbFswXS5jbGllbnRXaWR0aDtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc3dpcGVyLnBhcmFtcy5oZWlnaHQgIT09ICd1bmRlZmluZWQnICYmIHN3aXBlci5wYXJhbXMuaGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgaGVpZ2h0ID0gc3dpcGVyLnBhcmFtcy5oZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgaGVpZ2h0ID0gJGVsWzBdLmNsaWVudEhlaWdodDtcbiAgfVxuXG4gIGlmICh3aWR0aCA9PT0gMCAmJiBzd2lwZXIuaXNIb3Jpem9udGFsKCkgfHwgaGVpZ2h0ID09PSAwICYmIHN3aXBlci5pc1ZlcnRpY2FsKCkpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gU3VidHJhY3QgcGFkZGluZ3NcblxuXG4gIHdpZHRoID0gd2lkdGggLSBwYXJzZUludCgkZWwuY3NzKCdwYWRkaW5nLWxlZnQnKSB8fCAwLCAxMCkgLSBwYXJzZUludCgkZWwuY3NzKCdwYWRkaW5nLXJpZ2h0JykgfHwgMCwgMTApO1xuICBoZWlnaHQgPSBoZWlnaHQgLSBwYXJzZUludCgkZWwuY3NzKCdwYWRkaW5nLXRvcCcpIHx8IDAsIDEwKSAtIHBhcnNlSW50KCRlbC5jc3MoJ3BhZGRpbmctYm90dG9tJykgfHwgMCwgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKHdpZHRoKSkgd2lkdGggPSAwO1xuICBpZiAoTnVtYmVyLmlzTmFOKGhlaWdodCkpIGhlaWdodCA9IDA7XG4gIGV4dGVuZChzd2lwZXIsIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgc2l6ZTogc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gd2lkdGggOiBoZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlU2xpZGVzKCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcblxuICBmdW5jdGlvbiBnZXREaXJlY3Rpb25MYWJlbChwcm9wZXJ0eSkge1xuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICB9IC8vIHByZXR0aWVyLWlnbm9yZVxuXG5cbiAgICByZXR1cm4ge1xuICAgICAgJ3dpZHRoJzogJ2hlaWdodCcsXG4gICAgICAnbWFyZ2luLXRvcCc6ICdtYXJnaW4tbGVmdCcsXG4gICAgICAnbWFyZ2luLWJvdHRvbSAnOiAnbWFyZ2luLXJpZ2h0JyxcbiAgICAgICdtYXJnaW4tbGVmdCc6ICdtYXJnaW4tdG9wJyxcbiAgICAgICdtYXJnaW4tcmlnaHQnOiAnbWFyZ2luLWJvdHRvbScsXG4gICAgICAncGFkZGluZy1sZWZ0JzogJ3BhZGRpbmctdG9wJyxcbiAgICAgICdwYWRkaW5nLXJpZ2h0JzogJ3BhZGRpbmctYm90dG9tJyxcbiAgICAgICdtYXJnaW5SaWdodCc6ICdtYXJnaW5Cb3R0b20nXG4gICAgfVtwcm9wZXJ0eV07XG4gIH1cblxuICBmdW5jdGlvbiBnZXREaXJlY3Rpb25Qcm9wZXJ0eVZhbHVlKG5vZGUsIGxhYmVsKSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQobm9kZS5nZXRQcm9wZXJ0eVZhbHVlKGdldERpcmVjdGlvbkxhYmVsKGxhYmVsKSkgfHwgMCk7XG4gIH1cblxuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgdmFyICR3cmFwcGVyRWwgPSBzd2lwZXIuJHdyYXBwZXJFbCxcbiAgICAgIHN3aXBlclNpemUgPSBzd2lwZXIuc2l6ZSxcbiAgICAgIHJ0bCA9IHN3aXBlci5ydGxUcmFuc2xhdGUsXG4gICAgICB3cm9uZ1JUTCA9IHN3aXBlci53cm9uZ1JUTDtcbiAgdmFyIGlzVmlydHVhbCA9IHN3aXBlci52aXJ0dWFsICYmIHBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIHZhciBwcmV2aW91c1NsaWRlc0xlbmd0aCA9IGlzVmlydHVhbCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgdmFyIHNsaWRlcyA9ICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3MpO1xuICB2YXIgc2xpZGVzTGVuZ3RoID0gaXNWaXJ0dWFsID8gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IHNsaWRlcy5sZW5ndGg7XG4gIHZhciBzbmFwR3JpZCA9IFtdO1xuICB2YXIgc2xpZGVzR3JpZCA9IFtdO1xuICB2YXIgc2xpZGVzU2l6ZXNHcmlkID0gW107XG4gIHZhciBvZmZzZXRCZWZvcmUgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QmVmb3JlO1xuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0QmVmb3JlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb2Zmc2V0QmVmb3JlID0gcGFyYW1zLnNsaWRlc09mZnNldEJlZm9yZS5jYWxsKHN3aXBlcik7XG4gIH1cblxuICB2YXIgb2Zmc2V0QWZ0ZXIgPSBwYXJhbXMuc2xpZGVzT2Zmc2V0QWZ0ZXI7XG5cbiAgaWYgKHR5cGVvZiBvZmZzZXRBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIG9mZnNldEFmdGVyID0gcGFyYW1zLnNsaWRlc09mZnNldEFmdGVyLmNhbGwoc3dpcGVyKTtcbiAgfVxuXG4gIHZhciBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoID0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcbiAgdmFyIHByZXZpb3VzU2xpZGVzR3JpZExlbmd0aCA9IHN3aXBlci5zbGlkZXNHcmlkLmxlbmd0aDtcbiAgdmFyIHNwYWNlQmV0d2VlbiA9IHBhcmFtcy5zcGFjZUJldHdlZW47XG4gIHZhciBzbGlkZVBvc2l0aW9uID0gLW9mZnNldEJlZm9yZTtcbiAgdmFyIHByZXZTbGlkZVNpemUgPSAwO1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIGlmICh0eXBlb2Ygc3dpcGVyU2l6ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAodHlwZW9mIHNwYWNlQmV0d2VlbiA9PT0gJ3N0cmluZycgJiYgc3BhY2VCZXR3ZWVuLmluZGV4T2YoJyUnKSA+PSAwKSB7XG4gICAgc3BhY2VCZXR3ZWVuID0gcGFyc2VGbG9hdChzcGFjZUJldHdlZW4ucmVwbGFjZSgnJScsICcnKSkgLyAxMDAgKiBzd2lwZXJTaXplO1xuICB9XG5cbiAgc3dpcGVyLnZpcnR1YWxTaXplID0gLXNwYWNlQmV0d2VlbjsgLy8gcmVzZXQgbWFyZ2luc1xuXG4gIGlmIChydGwpIHNsaWRlcy5jc3Moe1xuICAgIG1hcmdpbkxlZnQ6ICcnLFxuICAgIG1hcmdpbkJvdHRvbTogJycsXG4gICAgbWFyZ2luVG9wOiAnJ1xuICB9KTtlbHNlIHNsaWRlcy5jc3Moe1xuICAgIG1hcmdpblJpZ2h0OiAnJyxcbiAgICBtYXJnaW5Cb3R0b206ICcnLFxuICAgIG1hcmdpblRvcDogJydcbiAgfSk7XG4gIHZhciBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzO1xuXG4gIGlmIChwYXJhbXMuc2xpZGVzUGVyQ29sdW1uID4gMSkge1xuICAgIGlmIChNYXRoLmZsb29yKHNsaWRlc0xlbmd0aCAvIHBhcmFtcy5zbGlkZXNQZXJDb2x1bW4pID09PSBzbGlkZXNMZW5ndGggLyBzd2lwZXIucGFyYW1zLnNsaWRlc1BlckNvbHVtbikge1xuICAgICAgc2xpZGVzTnVtYmVyRXZlblRvUm93cyA9IHNsaWRlc0xlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgc2xpZGVzTnVtYmVyRXZlblRvUm93cyA9IE1hdGguY2VpbChzbGlkZXNMZW5ndGggLyBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uKSAqIHBhcmFtcy5zbGlkZXNQZXJDb2x1bW47XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ICE9PSAnYXV0bycgJiYgcGFyYW1zLnNsaWRlc1BlckNvbHVtbkZpbGwgPT09ICdyb3cnKSB7XG4gICAgICBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzID0gTWF0aC5tYXgoc2xpZGVzTnVtYmVyRXZlblRvUm93cywgcGFyYW1zLnNsaWRlc1BlclZpZXcgKiBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uKTtcbiAgICB9XG4gIH0gLy8gQ2FsYyBzbGlkZXNcblxuXG4gIHZhciBzbGlkZVNpemU7XG4gIHZhciBzbGlkZXNQZXJDb2x1bW4gPSBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uO1xuICB2YXIgc2xpZGVzUGVyUm93ID0gc2xpZGVzTnVtYmVyRXZlblRvUm93cyAvIHNsaWRlc1BlckNvbHVtbjtcbiAgdmFyIG51bUZ1bGxDb2x1bW5zID0gTWF0aC5mbG9vcihzbGlkZXNMZW5ndGggLyBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWRlc0xlbmd0aDsgaSArPSAxKSB7XG4gICAgc2xpZGVTaXplID0gMDtcbiAgICB2YXIgc2xpZGUgPSBzbGlkZXMuZXEoaSk7XG5cbiAgICBpZiAocGFyYW1zLnNsaWRlc1BlckNvbHVtbiA+IDEpIHtcbiAgICAgIC8vIFNldCBzbGlkZXMgb3JkZXJcbiAgICAgIHZhciBuZXdTbGlkZU9yZGVySW5kZXggPSB2b2lkIDA7XG4gICAgICB2YXIgY29sdW1uID0gdm9pZCAwO1xuICAgICAgdmFyIHJvdyA9IHZvaWQgMDtcblxuICAgICAgaWYgKHBhcmFtcy5zbGlkZXNQZXJDb2x1bW5GaWxsID09PSAncm93JyAmJiBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPiAxKSB7XG4gICAgICAgIHZhciBncm91cEluZGV4ID0gTWF0aC5mbG9vcihpIC8gKHBhcmFtcy5zbGlkZXNQZXJHcm91cCAqIHBhcmFtcy5zbGlkZXNQZXJDb2x1bW4pKTtcbiAgICAgICAgdmFyIHNsaWRlSW5kZXhJbkdyb3VwID0gaSAtIHBhcmFtcy5zbGlkZXNQZXJDb2x1bW4gKiBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgKiBncm91cEluZGV4O1xuICAgICAgICB2YXIgY29sdW1uc0luR3JvdXAgPSBncm91cEluZGV4ID09PSAwID8gcGFyYW1zLnNsaWRlc1Blckdyb3VwIDogTWF0aC5taW4oTWF0aC5jZWlsKChzbGlkZXNMZW5ndGggLSBncm91cEluZGV4ICogc2xpZGVzUGVyQ29sdW1uICogcGFyYW1zLnNsaWRlc1Blckdyb3VwKSAvIHNsaWRlc1BlckNvbHVtbiksIHBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gICAgICAgIHJvdyA9IE1hdGguZmxvb3Ioc2xpZGVJbmRleEluR3JvdXAgLyBjb2x1bW5zSW5Hcm91cCk7XG4gICAgICAgIGNvbHVtbiA9IHNsaWRlSW5kZXhJbkdyb3VwIC0gcm93ICogY29sdW1uc0luR3JvdXAgKyBncm91cEluZGV4ICogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgICAgICBuZXdTbGlkZU9yZGVySW5kZXggPSBjb2x1bW4gKyByb3cgKiBzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzIC8gc2xpZGVzUGVyQ29sdW1uO1xuICAgICAgICBzbGlkZS5jc3Moe1xuICAgICAgICAgICctd2Via2l0LWJveC1vcmRpbmFsLWdyb3VwJzogbmV3U2xpZGVPcmRlckluZGV4LFxuICAgICAgICAgICctbW96LWJveC1vcmRpbmFsLWdyb3VwJzogbmV3U2xpZGVPcmRlckluZGV4LFxuICAgICAgICAgICctbXMtZmxleC1vcmRlcic6IG5ld1NsaWRlT3JkZXJJbmRleCxcbiAgICAgICAgICAnLXdlYmtpdC1vcmRlcic6IG5ld1NsaWRlT3JkZXJJbmRleCxcbiAgICAgICAgICBvcmRlcjogbmV3U2xpZGVPcmRlckluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbXMuc2xpZGVzUGVyQ29sdW1uRmlsbCA9PT0gJ2NvbHVtbicpIHtcbiAgICAgICAgY29sdW1uID0gTWF0aC5mbG9vcihpIC8gc2xpZGVzUGVyQ29sdW1uKTtcbiAgICAgICAgcm93ID0gaSAtIGNvbHVtbiAqIHNsaWRlc1BlckNvbHVtbjtcblxuICAgICAgICBpZiAoY29sdW1uID4gbnVtRnVsbENvbHVtbnMgfHwgY29sdW1uID09PSBudW1GdWxsQ29sdW1ucyAmJiByb3cgPT09IHNsaWRlc1BlckNvbHVtbiAtIDEpIHtcbiAgICAgICAgICByb3cgKz0gMTtcblxuICAgICAgICAgIGlmIChyb3cgPj0gc2xpZGVzUGVyQ29sdW1uKSB7XG4gICAgICAgICAgICByb3cgPSAwO1xuICAgICAgICAgICAgY29sdW1uICs9IDE7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3cgPSBNYXRoLmZsb29yKGkgLyBzbGlkZXNQZXJSb3cpO1xuICAgICAgICBjb2x1bW4gPSBpIC0gcm93ICogc2xpZGVzUGVyUm93O1xuICAgICAgfVxuXG4gICAgICBzbGlkZS5jc3MoZ2V0RGlyZWN0aW9uTGFiZWwoJ21hcmdpbi10b3AnKSwgcm93ICE9PSAwID8gcGFyYW1zLnNwYWNlQmV0d2VlbiAmJiBwYXJhbXMuc3BhY2VCZXR3ZWVuICsgXCJweFwiIDogJycpO1xuICAgIH1cblxuICAgIGlmIChzbGlkZS5jc3MoJ2Rpc3BsYXknKSA9PT0gJ25vbmUnKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXG4gICAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycpIHtcbiAgICAgIHZhciBzbGlkZVN0eWxlcyA9IGdldENvbXB1dGVkU3R5bGUoc2xpZGVbMF0pO1xuICAgICAgdmFyIGN1cnJlbnRUcmFuc2Zvcm0gPSBzbGlkZVswXS5zdHlsZS50cmFuc2Zvcm07XG4gICAgICB2YXIgY3VycmVudFdlYktpdFRyYW5zZm9ybSA9IHNsaWRlWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybTtcblxuICAgICAgaWYgKGN1cnJlbnRUcmFuc2Zvcm0pIHtcbiAgICAgICAgc2xpZGVbMF0uc3R5bGUudHJhbnNmb3JtID0gJ25vbmUnO1xuICAgICAgfVxuXG4gICAgICBpZiAoY3VycmVudFdlYktpdFRyYW5zZm9ybSkge1xuICAgICAgICBzbGlkZVswXS5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAnbm9uZSc7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSB7XG4gICAgICAgIHNsaWRlU2l6ZSA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/IHNsaWRlLm91dGVyV2lkdGgodHJ1ZSkgOiBzbGlkZS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB2YXIgd2lkdGggPSBnZXREaXJlY3Rpb25Qcm9wZXJ0eVZhbHVlKHNsaWRlU3R5bGVzLCAnd2lkdGgnKTtcbiAgICAgICAgdmFyIHBhZGRpbmdMZWZ0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ3BhZGRpbmctbGVmdCcpO1xuICAgICAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ3BhZGRpbmctcmlnaHQnKTtcbiAgICAgICAgdmFyIG1hcmdpbkxlZnQgPSBnZXREaXJlY3Rpb25Qcm9wZXJ0eVZhbHVlKHNsaWRlU3R5bGVzLCAnbWFyZ2luLWxlZnQnKTtcbiAgICAgICAgdmFyIG1hcmdpblJpZ2h0ID0gZ2V0RGlyZWN0aW9uUHJvcGVydHlWYWx1ZShzbGlkZVN0eWxlcywgJ21hcmdpbi1yaWdodCcpO1xuICAgICAgICB2YXIgYm94U2l6aW5nID0gc2xpZGVTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnYm94LXNpemluZycpO1xuXG4gICAgICAgIGlmIChib3hTaXppbmcgJiYgYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCcpIHtcbiAgICAgICAgICBzbGlkZVNpemUgPSB3aWR0aCArIG1hcmdpbkxlZnQgKyBtYXJnaW5SaWdodDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgX3NsaWRlJCA9IHNsaWRlWzBdLFxuICAgICAgICAgICAgICBjbGllbnRXaWR0aCA9IF9zbGlkZSQuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgIG9mZnNldFdpZHRoID0gX3NsaWRlJC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICBzbGlkZVNpemUgPSB3aWR0aCArIHBhZGRpbmdMZWZ0ICsgcGFkZGluZ1JpZ2h0ICsgbWFyZ2luTGVmdCArIG1hcmdpblJpZ2h0ICsgKG9mZnNldFdpZHRoIC0gY2xpZW50V2lkdGgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50VHJhbnNmb3JtKSB7XG4gICAgICAgIHNsaWRlWzBdLnN0eWxlLnRyYW5zZm9ybSA9IGN1cnJlbnRUcmFuc2Zvcm07XG4gICAgICB9XG5cbiAgICAgIGlmIChjdXJyZW50V2ViS2l0VHJhbnNmb3JtKSB7XG4gICAgICAgIHNsaWRlWzBdLnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IGN1cnJlbnRXZWJLaXRUcmFuc2Zvcm07XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVNpemUgPSBNYXRoLmZsb29yKHNsaWRlU2l6ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNsaWRlU2l6ZSA9IChzd2lwZXJTaXplIC0gKHBhcmFtcy5zbGlkZXNQZXJWaWV3IC0gMSkgKiBzcGFjZUJldHdlZW4pIC8gcGFyYW1zLnNsaWRlc1BlclZpZXc7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVTaXplID0gTWF0aC5mbG9vcihzbGlkZVNpemUpO1xuXG4gICAgICBpZiAoc2xpZGVzW2ldKSB7XG4gICAgICAgIHNsaWRlc1tpXS5zdHlsZVtnZXREaXJlY3Rpb25MYWJlbCgnd2lkdGgnKV0gPSBzbGlkZVNpemUgKyBcInB4XCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNsaWRlc1tpXSkge1xuICAgICAgc2xpZGVzW2ldLnN3aXBlclNsaWRlU2l6ZSA9IHNsaWRlU2l6ZTtcbiAgICB9XG5cbiAgICBzbGlkZXNTaXplc0dyaWQucHVzaChzbGlkZVNpemUpO1xuXG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgc2xpZGVQb3NpdGlvbiA9IHNsaWRlUG9zaXRpb24gKyBzbGlkZVNpemUgLyAyICsgcHJldlNsaWRlU2l6ZSAvIDIgKyBzcGFjZUJldHdlZW47XG4gICAgICBpZiAocHJldlNsaWRlU2l6ZSA9PT0gMCAmJiBpICE9PSAwKSBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiAtIHN3aXBlclNpemUgLyAyIC0gc3BhY2VCZXR3ZWVuO1xuICAgICAgaWYgKGkgPT09IDApIHNsaWRlUG9zaXRpb24gPSBzbGlkZVBvc2l0aW9uIC0gc3dpcGVyU2l6ZSAvIDIgLSBzcGFjZUJldHdlZW47XG4gICAgICBpZiAoTWF0aC5hYnMoc2xpZGVQb3NpdGlvbikgPCAxIC8gMTAwMCkgc2xpZGVQb3NpdGlvbiA9IDA7XG4gICAgICBpZiAocGFyYW1zLnJvdW5kTGVuZ3Rocykgc2xpZGVQb3NpdGlvbiA9IE1hdGguZmxvb3Ioc2xpZGVQb3NpdGlvbik7XG4gICAgICBpZiAoaW5kZXggJSBwYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBzbGlkZVBvc2l0aW9uID0gTWF0aC5mbG9vcihzbGlkZVBvc2l0aW9uKTtcbiAgICAgIGlmICgoaW5kZXggLSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgaW5kZXgpKSAlIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXAgPT09IDApIHNuYXBHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZXNHcmlkLnB1c2goc2xpZGVQb3NpdGlvbik7XG4gICAgICBzbGlkZVBvc2l0aW9uID0gc2xpZGVQb3NpdGlvbiArIHNsaWRlU2l6ZSArIHNwYWNlQmV0d2VlbjtcbiAgICB9XG5cbiAgICBzd2lwZXIudmlydHVhbFNpemUgKz0gc2xpZGVTaXplICsgc3BhY2VCZXR3ZWVuO1xuICAgIHByZXZTbGlkZVNpemUgPSBzbGlkZVNpemU7XG4gICAgaW5kZXggKz0gMTtcbiAgfVxuXG4gIHN3aXBlci52aXJ0dWFsU2l6ZSA9IE1hdGgubWF4KHN3aXBlci52aXJ0dWFsU2l6ZSwgc3dpcGVyU2l6ZSkgKyBvZmZzZXRBZnRlcjtcbiAgdmFyIG5ld1NsaWRlc0dyaWQ7XG5cbiAgaWYgKHJ0bCAmJiB3cm9uZ1JUTCAmJiAocGFyYW1zLmVmZmVjdCA9PT0gJ3NsaWRlJyB8fCBwYXJhbXMuZWZmZWN0ID09PSAnY292ZXJmbG93JykpIHtcbiAgICAkd3JhcHBlckVsLmNzcyh7XG4gICAgICB3aWR0aDogc3dpcGVyLnZpcnR1YWxTaXplICsgcGFyYW1zLnNwYWNlQmV0d2VlbiArIFwicHhcIlxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zZXRXcmFwcGVyU2l6ZSkge1xuICAgIHZhciBfJHdyYXBwZXJFbCRjc3M7XG5cbiAgICAkd3JhcHBlckVsLmNzcygoXyR3cmFwcGVyRWwkY3NzID0ge30sIF8kd3JhcHBlckVsJGNzc1tnZXREaXJlY3Rpb25MYWJlbCgnd2lkdGgnKV0gPSBzd2lwZXIudmlydHVhbFNpemUgKyBwYXJhbXMuc3BhY2VCZXR3ZWVuICsgXCJweFwiLCBfJHdyYXBwZXJFbCRjc3MpKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2xpZGVzUGVyQ29sdW1uID4gMSkge1xuICAgIHZhciBfJHdyYXBwZXJFbCRjc3MyO1xuXG4gICAgc3dpcGVyLnZpcnR1YWxTaXplID0gKHNsaWRlU2l6ZSArIHBhcmFtcy5zcGFjZUJldHdlZW4pICogc2xpZGVzTnVtYmVyRXZlblRvUm93cztcbiAgICBzd2lwZXIudmlydHVhbFNpemUgPSBNYXRoLmNlaWwoc3dpcGVyLnZpcnR1YWxTaXplIC8gcGFyYW1zLnNsaWRlc1BlckNvbHVtbikgLSBwYXJhbXMuc3BhY2VCZXR3ZWVuO1xuICAgICR3cmFwcGVyRWwuY3NzKChfJHdyYXBwZXJFbCRjc3MyID0ge30sIF8kd3JhcHBlckVsJGNzczJbZ2V0RGlyZWN0aW9uTGFiZWwoJ3dpZHRoJyldID0gc3dpcGVyLnZpcnR1YWxTaXplICsgcGFyYW1zLnNwYWNlQmV0d2VlbiArIFwicHhcIiwgXyR3cmFwcGVyRWwkY3NzMikpO1xuXG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgbmV3U2xpZGVzR3JpZCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgc25hcEdyaWQubGVuZ3RoOyBfaSArPSAxKSB7XG4gICAgICAgIHZhciBzbGlkZXNHcmlkSXRlbSA9IHNuYXBHcmlkW19pXTtcbiAgICAgICAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHNsaWRlc0dyaWRJdGVtID0gTWF0aC5mbG9vcihzbGlkZXNHcmlkSXRlbSk7XG4gICAgICAgIGlmIChzbmFwR3JpZFtfaV0gPCBzd2lwZXIudmlydHVhbFNpemUgKyBzbmFwR3JpZFswXSkgbmV3U2xpZGVzR3JpZC5wdXNoKHNsaWRlc0dyaWRJdGVtKTtcbiAgICAgIH1cblxuICAgICAgc25hcEdyaWQgPSBuZXdTbGlkZXNHcmlkO1xuICAgIH1cbiAgfSAvLyBSZW1vdmUgbGFzdCBncmlkIGVsZW1lbnRzIGRlcGVuZGluZyBvbiB3aWR0aFxuXG5cbiAgaWYgKCFwYXJhbXMuY2VudGVyZWRTbGlkZXMpIHtcbiAgICBuZXdTbGlkZXNHcmlkID0gW107XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBzbmFwR3JpZC5sZW5ndGg7IF9pMiArPSAxKSB7XG4gICAgICB2YXIgX3NsaWRlc0dyaWRJdGVtID0gc25hcEdyaWRbX2kyXTtcbiAgICAgIGlmIChwYXJhbXMucm91bmRMZW5ndGhzKSBfc2xpZGVzR3JpZEl0ZW0gPSBNYXRoLmZsb29yKF9zbGlkZXNHcmlkSXRlbSk7XG5cbiAgICAgIGlmIChzbmFwR3JpZFtfaTJdIDw9IHN3aXBlci52aXJ0dWFsU2l6ZSAtIHN3aXBlclNpemUpIHtcbiAgICAgICAgbmV3U2xpZGVzR3JpZC5wdXNoKF9zbGlkZXNHcmlkSXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc25hcEdyaWQgPSBuZXdTbGlkZXNHcmlkO1xuXG4gICAgaWYgKE1hdGguZmxvb3Ioc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSkgLSBNYXRoLmZsb29yKHNuYXBHcmlkW3NuYXBHcmlkLmxlbmd0aCAtIDFdKSA+IDEpIHtcbiAgICAgIHNuYXBHcmlkLnB1c2goc3dpcGVyLnZpcnR1YWxTaXplIC0gc3dpcGVyU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNuYXBHcmlkLmxlbmd0aCA9PT0gMCkgc25hcEdyaWQgPSBbMF07XG5cbiAgaWYgKHBhcmFtcy5zcGFjZUJldHdlZW4gIT09IDApIHtcbiAgICB2YXIgX3NsaWRlcyRmaWx0ZXIkY3NzO1xuXG4gICAgdmFyIGtleSA9IHN3aXBlci5pc0hvcml6b250YWwoKSAmJiBydGwgPyAnbWFyZ2luTGVmdCcgOiBnZXREaXJlY3Rpb25MYWJlbCgnbWFyZ2luUmlnaHQnKTtcbiAgICBzbGlkZXMuZmlsdGVyKGZ1bmN0aW9uIChfLCBzbGlkZUluZGV4KSB7XG4gICAgICBpZiAoIXBhcmFtcy5jc3NNb2RlKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgaWYgKHNsaWRlSW5kZXggPT09IHNsaWRlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSkuY3NzKChfc2xpZGVzJGZpbHRlciRjc3MgPSB7fSwgX3NsaWRlcyRmaWx0ZXIkY3NzW2tleV0gPSBzcGFjZUJldHdlZW4gKyBcInB4XCIsIF9zbGlkZXMkZmlsdGVyJGNzcykpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuY2VudGVyZWRTbGlkZXNCb3VuZHMpIHtcbiAgICB2YXIgYWxsU2xpZGVzU2l6ZSA9IDA7XG4gICAgc2xpZGVzU2l6ZXNHcmlkLmZvckVhY2goZnVuY3Rpb24gKHNsaWRlU2l6ZVZhbHVlKSB7XG4gICAgICBhbGxTbGlkZXNTaXplICs9IHNsaWRlU2l6ZVZhbHVlICsgKHBhcmFtcy5zcGFjZUJldHdlZW4gPyBwYXJhbXMuc3BhY2VCZXR3ZWVuIDogMCk7XG4gICAgfSk7XG4gICAgYWxsU2xpZGVzU2l6ZSAtPSBwYXJhbXMuc3BhY2VCZXR3ZWVuO1xuICAgIHZhciBtYXhTbmFwID0gYWxsU2xpZGVzU2l6ZSAtIHN3aXBlclNpemU7XG4gICAgc25hcEdyaWQgPSBzbmFwR3JpZC5tYXAoZnVuY3Rpb24gKHNuYXApIHtcbiAgICAgIGlmIChzbmFwIDwgMCkgcmV0dXJuIC1vZmZzZXRCZWZvcmU7XG4gICAgICBpZiAoc25hcCA+IG1heFNuYXApIHJldHVybiBtYXhTbmFwICsgb2Zmc2V0QWZ0ZXI7XG4gICAgICByZXR1cm4gc25hcDtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY2VudGVySW5zdWZmaWNpZW50U2xpZGVzKSB7XG4gICAgdmFyIF9hbGxTbGlkZXNTaXplID0gMDtcbiAgICBzbGlkZXNTaXplc0dyaWQuZm9yRWFjaChmdW5jdGlvbiAoc2xpZGVTaXplVmFsdWUpIHtcbiAgICAgIF9hbGxTbGlkZXNTaXplICs9IHNsaWRlU2l6ZVZhbHVlICsgKHBhcmFtcy5zcGFjZUJldHdlZW4gPyBwYXJhbXMuc3BhY2VCZXR3ZWVuIDogMCk7XG4gICAgfSk7XG4gICAgX2FsbFNsaWRlc1NpemUgLT0gcGFyYW1zLnNwYWNlQmV0d2VlbjtcblxuICAgIGlmIChfYWxsU2xpZGVzU2l6ZSA8IHN3aXBlclNpemUpIHtcbiAgICAgIHZhciBhbGxTbGlkZXNPZmZzZXQgPSAoc3dpcGVyU2l6ZSAtIF9hbGxTbGlkZXNTaXplKSAvIDI7XG4gICAgICBzbmFwR3JpZC5mb3JFYWNoKGZ1bmN0aW9uIChzbmFwLCBzbmFwSW5kZXgpIHtcbiAgICAgICAgc25hcEdyaWRbc25hcEluZGV4XSA9IHNuYXAgLSBhbGxTbGlkZXNPZmZzZXQ7XG4gICAgICB9KTtcbiAgICAgIHNsaWRlc0dyaWQuZm9yRWFjaChmdW5jdGlvbiAoc25hcCwgc25hcEluZGV4KSB7XG4gICAgICAgIHNsaWRlc0dyaWRbc25hcEluZGV4XSA9IHNuYXAgKyBhbGxTbGlkZXNPZmZzZXQ7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBleHRlbmQoc3dpcGVyLCB7XG4gICAgc2xpZGVzOiBzbGlkZXMsXG4gICAgc25hcEdyaWQ6IHNuYXBHcmlkLFxuICAgIHNsaWRlc0dyaWQ6IHNsaWRlc0dyaWQsXG4gICAgc2xpZGVzU2l6ZXNHcmlkOiBzbGlkZXNTaXplc0dyaWRcbiAgfSk7XG5cbiAgaWYgKHNsaWRlc0xlbmd0aCAhPT0gcHJldmlvdXNTbGlkZXNMZW5ndGgpIHtcbiAgICBzd2lwZXIuZW1pdCgnc2xpZGVzTGVuZ3RoQ2hhbmdlJyk7XG4gIH1cblxuICBpZiAoc25hcEdyaWQubGVuZ3RoICE9PSBwcmV2aW91c1NuYXBHcmlkTGVuZ3RoKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdykgc3dpcGVyLmNoZWNrT3ZlcmZsb3coKTtcbiAgICBzd2lwZXIuZW1pdCgnc25hcEdyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuXG4gIGlmIChzbGlkZXNHcmlkLmxlbmd0aCAhPT0gcHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoKSB7XG4gICAgc3dpcGVyLmVtaXQoJ3NsaWRlc0dyaWRMZW5ndGhDaGFuZ2UnKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyB8fCBwYXJhbXMud2F0Y2hTbGlkZXNWaXNpYmlsaXR5KSB7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc09mZnNldCgpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlQXV0b0hlaWdodChzcGVlZCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIGFjdGl2ZVNsaWRlcyA9IFtdO1xuICB2YXIgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgc3dpcGVyLnBhcmFtcy52aXJ0dWFsLmVuYWJsZWQ7XG4gIHZhciBuZXdIZWlnaHQgPSAwO1xuICB2YXIgaTtcblxuICBpZiAodHlwZW9mIHNwZWVkID09PSAnbnVtYmVyJykge1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKHNwZWVkKTtcbiAgfSBlbHNlIGlmIChzcGVlZCA9PT0gdHJ1ZSkge1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKHN3aXBlci5wYXJhbXMuc3BlZWQpO1xuICB9XG5cbiAgdmFyIGdldFNsaWRlQnlJbmRleCA9IGZ1bmN0aW9uIGdldFNsaWRlQnlJbmRleChpbmRleCkge1xuICAgIGlmIChpc1ZpcnR1YWwpIHtcbiAgICAgIHJldHVybiBzd2lwZXIuc2xpZGVzLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGVsLmdldEF0dHJpYnV0ZSgnZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApID09PSBpbmRleDtcbiAgICAgIH0pWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBzd2lwZXIuc2xpZGVzLmVxKGluZGV4KVswXTtcbiAgfTsgLy8gRmluZCBzbGlkZXMgY3VycmVudGx5IGluIHZpZXdcblxuXG4gIGlmIChzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgIT09ICdhdXRvJyAmJiBzd2lwZXIucGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKSB7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMuY2VudGVyZWRTbGlkZXMpIHtcbiAgICAgIHN3aXBlci52aXNpYmxlU2xpZGVzLmVhY2goZnVuY3Rpb24gKHNsaWRlKSB7XG4gICAgICAgIGFjdGl2ZVNsaWRlcy5wdXNoKHNsaWRlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgTWF0aC5jZWlsKHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyVmlldyk7IGkgKz0gMSkge1xuICAgICAgICB2YXIgaW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXggKyBpO1xuICAgICAgICBpZiAoaW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAmJiAhaXNWaXJ0dWFsKSBicmVhaztcbiAgICAgICAgYWN0aXZlU2xpZGVzLnB1c2goZ2V0U2xpZGVCeUluZGV4KGluZGV4KSk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGFjdGl2ZVNsaWRlcy5wdXNoKGdldFNsaWRlQnlJbmRleChzd2lwZXIuYWN0aXZlSW5kZXgpKTtcbiAgfSAvLyBGaW5kIG5ldyBoZWlnaHQgZnJvbSBoaWdoZXN0IHNsaWRlIGluIHZpZXdcblxuXG4gIGZvciAoaSA9IDA7IGkgPCBhY3RpdmVTbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAodHlwZW9mIGFjdGl2ZVNsaWRlc1tpXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHZhciBoZWlnaHQgPSBhY3RpdmVTbGlkZXNbaV0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgbmV3SGVpZ2h0ID0gaGVpZ2h0ID4gbmV3SGVpZ2h0ID8gaGVpZ2h0IDogbmV3SGVpZ2h0O1xuICAgIH1cbiAgfSAvLyBVcGRhdGUgSGVpZ2h0XG5cblxuICBpZiAobmV3SGVpZ2h0KSBzd2lwZXIuJHdyYXBwZXJFbC5jc3MoJ2hlaWdodCcsIG5ld0hlaWdodCArIFwicHhcIik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlU2xpZGVzT2Zmc2V0KCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHNsaWRlcyA9IHN3aXBlci5zbGlkZXM7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBzbGlkZXNbaV0uc3dpcGVyU2xpZGVPZmZzZXQgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBzbGlkZXNbaV0ub2Zmc2V0TGVmdCA6IHNsaWRlc1tpXS5vZmZzZXRUb3A7XG4gIH1cbn0iLCJpbXBvcnQgJCBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlU2xpZGVzUHJvZ3Jlc3ModHJhbnNsYXRlKSB7XG4gIGlmICh0cmFuc2xhdGUgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZSA9IHRoaXMgJiYgdGhpcy50cmFuc2xhdGUgfHwgMDtcbiAgfVxuXG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgdmFyIHNsaWRlcyA9IHN3aXBlci5zbGlkZXMsXG4gICAgICBydGwgPSBzd2lwZXIucnRsVHJhbnNsYXRlO1xuICBpZiAoc2xpZGVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBpZiAodHlwZW9mIHNsaWRlc1swXS5zd2lwZXJTbGlkZU9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHN3aXBlci51cGRhdGVTbGlkZXNPZmZzZXQoKTtcbiAgdmFyIG9mZnNldENlbnRlciA9IC10cmFuc2xhdGU7XG4gIGlmIChydGwpIG9mZnNldENlbnRlciA9IHRyYW5zbGF0ZTsgLy8gVmlzaWJsZSBTbGlkZXNcblxuICBzbGlkZXMucmVtb3ZlQ2xhc3MocGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzKTtcbiAgc3dpcGVyLnZpc2libGVTbGlkZXNJbmRleGVzID0gW107XG4gIHN3aXBlci52aXNpYmxlU2xpZGVzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICB2YXIgc2xpZGUgPSBzbGlkZXNbaV07XG4gICAgdmFyIHNsaWRlUHJvZ3Jlc3MgPSAob2Zmc2V0Q2VudGVyICsgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcyA/IHN3aXBlci5taW5UcmFuc2xhdGUoKSA6IDApIC0gc2xpZGUuc3dpcGVyU2xpZGVPZmZzZXQpIC8gKHNsaWRlLnN3aXBlclNsaWRlU2l6ZSArIHBhcmFtcy5zcGFjZUJldHdlZW4pO1xuXG4gICAgaWYgKHBhcmFtcy53YXRjaFNsaWRlc1Zpc2liaWxpdHkgfHwgcGFyYW1zLmNlbnRlcmVkU2xpZGVzICYmIHBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgICB2YXIgc2xpZGVCZWZvcmUgPSAtKG9mZnNldENlbnRlciAtIHNsaWRlLnN3aXBlclNsaWRlT2Zmc2V0KTtcbiAgICAgIHZhciBzbGlkZUFmdGVyID0gc2xpZGVCZWZvcmUgKyBzd2lwZXIuc2xpZGVzU2l6ZXNHcmlkW2ldO1xuICAgICAgdmFyIGlzVmlzaWJsZSA9IHNsaWRlQmVmb3JlID49IDAgJiYgc2xpZGVCZWZvcmUgPCBzd2lwZXIuc2l6ZSAtIDEgfHwgc2xpZGVBZnRlciA+IDEgJiYgc2xpZGVBZnRlciA8PSBzd2lwZXIuc2l6ZSB8fCBzbGlkZUJlZm9yZSA8PSAwICYmIHNsaWRlQWZ0ZXIgPj0gc3dpcGVyLnNpemU7XG5cbiAgICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgICAgc3dpcGVyLnZpc2libGVTbGlkZXMucHVzaChzbGlkZSk7XG4gICAgICAgIHN3aXBlci52aXNpYmxlU2xpZGVzSW5kZXhlcy5wdXNoKGkpO1xuICAgICAgICBzbGlkZXMuZXEoaSkuYWRkQ2xhc3MocGFyYW1zLnNsaWRlVmlzaWJsZUNsYXNzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzbGlkZS5wcm9ncmVzcyA9IHJ0bCA/IC1zbGlkZVByb2dyZXNzIDogc2xpZGVQcm9ncmVzcztcbiAgfVxuXG4gIHN3aXBlci52aXNpYmxlU2xpZGVzID0gJChzd2lwZXIudmlzaWJsZVNsaWRlcyk7XG59IiwiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlUHJvZ3Jlc3ModHJhbnNsYXRlKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdHJhbnNsYXRlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBtdWx0aXBsaWVyID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IC0xIDogMTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbiAgICB0cmFuc2xhdGUgPSBzd2lwZXIgJiYgc3dpcGVyLnRyYW5zbGF0ZSAmJiBzd2lwZXIudHJhbnNsYXRlICogbXVsdGlwbGllciB8fCAwO1xuICB9XG5cbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXM7XG4gIHZhciB0cmFuc2xhdGVzRGlmZiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgdmFyIHByb2dyZXNzID0gc3dpcGVyLnByb2dyZXNzLFxuICAgICAgaXNCZWdpbm5pbmcgPSBzd2lwZXIuaXNCZWdpbm5pbmcsXG4gICAgICBpc0VuZCA9IHN3aXBlci5pc0VuZDtcbiAgdmFyIHdhc0JlZ2lubmluZyA9IGlzQmVnaW5uaW5nO1xuICB2YXIgd2FzRW5kID0gaXNFbmQ7XG5cbiAgaWYgKHRyYW5zbGF0ZXNEaWZmID09PSAwKSB7XG4gICAgcHJvZ3Jlc3MgPSAwO1xuICAgIGlzQmVnaW5uaW5nID0gdHJ1ZTtcbiAgICBpc0VuZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgcHJvZ3Jlc3MgPSAodHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSAvIHRyYW5zbGF0ZXNEaWZmO1xuICAgIGlzQmVnaW5uaW5nID0gcHJvZ3Jlc3MgPD0gMDtcbiAgICBpc0VuZCA9IHByb2dyZXNzID49IDE7XG4gIH1cblxuICBleHRlbmQoc3dpcGVyLCB7XG4gICAgcHJvZ3Jlc3M6IHByb2dyZXNzLFxuICAgIGlzQmVnaW5uaW5nOiBpc0JlZ2lubmluZyxcbiAgICBpc0VuZDogaXNFbmRcbiAgfSk7XG4gIGlmIChwYXJhbXMud2F0Y2hTbGlkZXNQcm9ncmVzcyB8fCBwYXJhbXMud2F0Y2hTbGlkZXNWaXNpYmlsaXR5IHx8IHBhcmFtcy5jZW50ZXJlZFNsaWRlcyAmJiBwYXJhbXMuYXV0b0hlaWdodCkgc3dpcGVyLnVwZGF0ZVNsaWRlc1Byb2dyZXNzKHRyYW5zbGF0ZSk7XG5cbiAgaWYgKGlzQmVnaW5uaW5nICYmICF3YXNCZWdpbm5pbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhY2hCZWdpbm5pbmcgdG9FZGdlJyk7XG4gIH1cblxuICBpZiAoaXNFbmQgJiYgIXdhc0VuZCkge1xuICAgIHN3aXBlci5lbWl0KCdyZWFjaEVuZCB0b0VkZ2UnKTtcbiAgfVxuXG4gIGlmICh3YXNCZWdpbm5pbmcgJiYgIWlzQmVnaW5uaW5nIHx8IHdhc0VuZCAmJiAhaXNFbmQpIHtcbiAgICBzd2lwZXIuZW1pdCgnZnJvbUVkZ2UnKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdwcm9ncmVzcycsIHByb2dyZXNzKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVTbGlkZXNDbGFzc2VzKCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHNsaWRlcyA9IHN3aXBlci5zbGlkZXMsXG4gICAgICBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgJHdyYXBwZXJFbCA9IHN3aXBlci4kd3JhcHBlckVsLFxuICAgICAgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXgsXG4gICAgICByZWFsSW5kZXggPSBzd2lwZXIucmVhbEluZGV4O1xuICB2YXIgaXNWaXJ0dWFsID0gc3dpcGVyLnZpcnR1YWwgJiYgcGFyYW1zLnZpcnR1YWwuZW5hYmxlZDtcbiAgc2xpZGVzLnJlbW92ZUNsYXNzKHBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzICsgXCIgXCIgKyBwYXJhbXMuc2xpZGVOZXh0Q2xhc3MgKyBcIiBcIiArIHBhcmFtcy5zbGlkZVByZXZDbGFzcyArIFwiIFwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQWN0aXZlQ2xhc3MgKyBcIiBcIiArIHBhcmFtcy5zbGlkZUR1cGxpY2F0ZU5leHRDbGFzcyArIFwiIFwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlUHJldkNsYXNzKTtcbiAgdmFyIGFjdGl2ZVNsaWRlO1xuXG4gIGlmIChpc1ZpcnR1YWwpIHtcbiAgICBhY3RpdmVTbGlkZSA9IHN3aXBlci4kd3JhcHBlckVsLmZpbmQoXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyArIFwiW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVxcXCJcIiArIGFjdGl2ZUluZGV4ICsgXCJcXFwiXVwiKTtcbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVTbGlkZSA9IHNsaWRlcy5lcShhY3RpdmVJbmRleCk7XG4gIH0gLy8gQWN0aXZlIGNsYXNzZXNcblxuXG4gIGFjdGl2ZVNsaWRlLmFkZENsYXNzKHBhcmFtcy5zbGlkZUFjdGl2ZUNsYXNzKTtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAvLyBEdXBsaWNhdGUgdG8gYWxsIGxvb3BlZCBzbGlkZXNcbiAgICBpZiAoYWN0aXZlU2xpZGUuaGFzQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MpKSB7XG4gICAgICAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIjpub3QoLlwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyBcIilbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XFxcIlwiICsgcmVhbEluZGV4ICsgXCJcXFwiXVwiKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyArIFwiLlwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyBcIltkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cXFwiXCIgKyByZWFsSW5kZXggKyBcIlxcXCJdXCIpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzKTtcbiAgICB9XG4gIH0gLy8gTmV4dCBTbGlkZVxuXG5cbiAgdmFyIG5leHRTbGlkZSA9IGFjdGl2ZVNsaWRlLm5leHRBbGwoXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcykuZXEoMCkuYWRkQ2xhc3MocGFyYW1zLnNsaWRlTmV4dENsYXNzKTtcblxuICBpZiAocGFyYW1zLmxvb3AgJiYgbmV4dFNsaWRlLmxlbmd0aCA9PT0gMCkge1xuICAgIG5leHRTbGlkZSA9IHNsaWRlcy5lcSgwKTtcbiAgICBuZXh0U2xpZGUuYWRkQ2xhc3MocGFyYW1zLnNsaWRlTmV4dENsYXNzKTtcbiAgfSAvLyBQcmV2IFNsaWRlXG5cblxuICB2YXIgcHJldlNsaWRlID0gYWN0aXZlU2xpZGUucHJldkFsbChcIi5cIiArIHBhcmFtcy5zbGlkZUNsYXNzKS5lcSgwKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVQcmV2Q2xhc3MpO1xuXG4gIGlmIChwYXJhbXMubG9vcCAmJiBwcmV2U2xpZGUubGVuZ3RoID09PSAwKSB7XG4gICAgcHJldlNsaWRlID0gc2xpZGVzLmVxKC0xKTtcbiAgICBwcmV2U2xpZGUuYWRkQ2xhc3MocGFyYW1zLnNsaWRlUHJldkNsYXNzKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIC8vIER1cGxpY2F0ZSB0byBhbGwgbG9vcGVkIHNsaWRlc1xuICAgIGlmIChuZXh0U2xpZGUuaGFzQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MpKSB7XG4gICAgICAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIjpub3QoLlwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyBcIilbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XFxcIlwiICsgbmV4dFNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JykgKyBcIlxcXCJdXCIpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZU5leHRDbGFzcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyArIFwiLlwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyBcIltkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cXFwiXCIgKyBuZXh0U2xpZGUuYXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSArIFwiXFxcIl1cIikuYWRkQ2xhc3MocGFyYW1zLnNsaWRlRHVwbGljYXRlTmV4dENsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAocHJldlNsaWRlLmhhc0NsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSkge1xuICAgICAgJHdyYXBwZXJFbC5jaGlsZHJlbihcIi5cIiArIHBhcmFtcy5zbGlkZUNsYXNzICsgXCI6bm90KC5cIiArIHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzICsgXCIpW2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4PVxcXCJcIiArIHByZXZTbGlkZS5hdHRyKCdkYXRhLXN3aXBlci1zbGlkZS1pbmRleCcpICsgXCJcXFwiXVwiKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIi5cIiArIHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzICsgXCJbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XFxcIlwiICsgcHJldlNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JykgKyBcIlxcXCJdXCIpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZVByZXZDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgc3dpcGVyLmVtaXRTbGlkZXNDbGFzc2VzKCk7XG59IiwiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlQWN0aXZlSW5kZXgobmV3QWN0aXZlSW5kZXgpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciB0cmFuc2xhdGUgPSBzd2lwZXIucnRsVHJhbnNsYXRlID8gc3dpcGVyLnRyYW5zbGF0ZSA6IC1zd2lwZXIudHJhbnNsYXRlO1xuICB2YXIgc2xpZGVzR3JpZCA9IHN3aXBlci5zbGlkZXNHcmlkLFxuICAgICAgc25hcEdyaWQgPSBzd2lwZXIuc25hcEdyaWQsXG4gICAgICBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgcHJldmlvdXNJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleCxcbiAgICAgIHByZXZpb3VzUmVhbEluZGV4ID0gc3dpcGVyLnJlYWxJbmRleCxcbiAgICAgIHByZXZpb3VzU25hcEluZGV4ID0gc3dpcGVyLnNuYXBJbmRleDtcbiAgdmFyIGFjdGl2ZUluZGV4ID0gbmV3QWN0aXZlSW5kZXg7XG4gIHZhciBzbmFwSW5kZXg7XG5cbiAgaWYgKHR5cGVvZiBhY3RpdmVJbmRleCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWRlc0dyaWQubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmICh0eXBlb2Ygc2xpZGVzR3JpZFtpICsgMV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0cmFuc2xhdGUgPj0gc2xpZGVzR3JpZFtpXSAmJiB0cmFuc2xhdGUgPCBzbGlkZXNHcmlkW2kgKyAxXSAtIChzbGlkZXNHcmlkW2kgKyAxXSAtIHNsaWRlc0dyaWRbaV0pIC8gMikge1xuICAgICAgICAgIGFjdGl2ZUluZGV4ID0gaTtcbiAgICAgICAgfSBlbHNlIGlmICh0cmFuc2xhdGUgPj0gc2xpZGVzR3JpZFtpXSAmJiB0cmFuc2xhdGUgPCBzbGlkZXNHcmlkW2kgKyAxXSkge1xuICAgICAgICAgIGFjdGl2ZUluZGV4ID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHJhbnNsYXRlID49IHNsaWRlc0dyaWRbaV0pIHtcbiAgICAgICAgYWN0aXZlSW5kZXggPSBpO1xuICAgICAgfVxuICAgIH0gLy8gTm9ybWFsaXplIHNsaWRlSW5kZXhcblxuXG4gICAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgICBpZiAoYWN0aXZlSW5kZXggPCAwIHx8IHR5cGVvZiBhY3RpdmVJbmRleCA9PT0gJ3VuZGVmaW5lZCcpIGFjdGl2ZUluZGV4ID0gMDtcbiAgICB9XG4gIH1cblxuICBpZiAoc25hcEdyaWQuaW5kZXhPZih0cmFuc2xhdGUpID49IDApIHtcbiAgICBzbmFwSW5kZXggPSBzbmFwR3JpZC5pbmRleE9mKHRyYW5zbGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNraXAgPSBNYXRoLm1pbihwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBhY3RpdmVJbmRleCk7XG4gICAgc25hcEluZGV4ID0gc2tpcCArIE1hdGguZmxvb3IoKGFjdGl2ZUluZGV4IC0gc2tpcCkgLyBwYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICB9XG5cbiAgaWYgKHNuYXBJbmRleCA+PSBzbmFwR3JpZC5sZW5ndGgpIHNuYXBJbmRleCA9IHNuYXBHcmlkLmxlbmd0aCAtIDE7XG5cbiAgaWYgKGFjdGl2ZUluZGV4ID09PSBwcmV2aW91c0luZGV4KSB7XG4gICAgaWYgKHNuYXBJbmRleCAhPT0gcHJldmlvdXNTbmFwSW5kZXgpIHtcbiAgICAgIHN3aXBlci5zbmFwSW5kZXggPSBzbmFwSW5kZXg7XG4gICAgICBzd2lwZXIuZW1pdCgnc25hcEluZGV4Q2hhbmdlJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9IC8vIEdldCByZWFsIGluZGV4XG5cblxuICB2YXIgcmVhbEluZGV4ID0gcGFyc2VJbnQoc3dpcGVyLnNsaWRlcy5lcShhY3RpdmVJbmRleCkuYXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSB8fCBhY3RpdmVJbmRleCwgMTApO1xuICBleHRlbmQoc3dpcGVyLCB7XG4gICAgc25hcEluZGV4OiBzbmFwSW5kZXgsXG4gICAgcmVhbEluZGV4OiByZWFsSW5kZXgsXG4gICAgcHJldmlvdXNJbmRleDogcHJldmlvdXNJbmRleCxcbiAgICBhY3RpdmVJbmRleDogYWN0aXZlSW5kZXhcbiAgfSk7XG4gIHN3aXBlci5lbWl0KCdhY3RpdmVJbmRleENoYW5nZScpO1xuICBzd2lwZXIuZW1pdCgnc25hcEluZGV4Q2hhbmdlJyk7XG5cbiAgaWYgKHByZXZpb3VzUmVhbEluZGV4ICE9PSByZWFsSW5kZXgpIHtcbiAgICBzd2lwZXIuZW1pdCgncmVhbEluZGV4Q2hhbmdlJyk7XG4gIH1cblxuICBpZiAoc3dpcGVyLmluaXRpYWxpemVkIHx8IHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0KSB7XG4gICAgc3dpcGVyLmVtaXQoJ3NsaWRlQ2hhbmdlJyk7XG4gIH1cbn0iLCJpbXBvcnQgJCBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXBkYXRlQ2xpY2tlZFNsaWRlKGUpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zO1xuICB2YXIgc2xpZGUgPSAkKGUudGFyZ2V0KS5jbG9zZXN0KFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MpWzBdO1xuICB2YXIgc2xpZGVGb3VuZCA9IGZhbHNlO1xuICB2YXIgc2xpZGVJbmRleDtcblxuICBpZiAoc2xpZGUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN3aXBlci5zbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChzd2lwZXIuc2xpZGVzW2ldID09PSBzbGlkZSkge1xuICAgICAgICBzbGlkZUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzbGlkZSAmJiBzbGlkZUZvdW5kKSB7XG4gICAgc3dpcGVyLmNsaWNrZWRTbGlkZSA9IHNsaWRlO1xuXG4gICAgaWYgKHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkKSB7XG4gICAgICBzd2lwZXIuY2xpY2tlZEluZGV4ID0gcGFyc2VJbnQoJChzbGlkZSkuYXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuY2xpY2tlZEluZGV4ID0gc2xpZGVJbmRleDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLmNsaWNrZWRTbGlkZSA9IHVuZGVmaW5lZDtcbiAgICBzd2lwZXIuY2xpY2tlZEluZGV4ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXJhbXMuc2xpZGVUb0NsaWNrZWRTbGlkZSAmJiBzd2lwZXIuY2xpY2tlZEluZGV4ICE9PSB1bmRlZmluZWQgJiYgc3dpcGVyLmNsaWNrZWRJbmRleCAhPT0gc3dpcGVyLmFjdGl2ZUluZGV4KSB7XG4gICAgc3dpcGVyLnNsaWRlVG9DbGlja2VkU2xpZGUoKTtcbiAgfVxufSIsImltcG9ydCBzbGlkZVRvIGZyb20gJy4vc2xpZGVUbyc7XG5pbXBvcnQgc2xpZGVUb0xvb3AgZnJvbSAnLi9zbGlkZVRvTG9vcCc7XG5pbXBvcnQgc2xpZGVOZXh0IGZyb20gJy4vc2xpZGVOZXh0JztcbmltcG9ydCBzbGlkZVByZXYgZnJvbSAnLi9zbGlkZVByZXYnO1xuaW1wb3J0IHNsaWRlUmVzZXQgZnJvbSAnLi9zbGlkZVJlc2V0JztcbmltcG9ydCBzbGlkZVRvQ2xvc2VzdCBmcm9tICcuL3NsaWRlVG9DbG9zZXN0JztcbmltcG9ydCBzbGlkZVRvQ2xpY2tlZFNsaWRlIGZyb20gJy4vc2xpZGVUb0NsaWNrZWRTbGlkZSc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNsaWRlVG86IHNsaWRlVG8sXG4gIHNsaWRlVG9Mb29wOiBzbGlkZVRvTG9vcCxcbiAgc2xpZGVOZXh0OiBzbGlkZU5leHQsXG4gIHNsaWRlUHJldjogc2xpZGVQcmV2LFxuICBzbGlkZVJlc2V0OiBzbGlkZVJlc2V0LFxuICBzbGlkZVRvQ2xvc2VzdDogc2xpZGVUb0Nsb3Nlc3QsXG4gIHNsaWRlVG9DbGlja2VkU2xpZGU6IHNsaWRlVG9DbGlja2VkU2xpZGVcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVUbyhpbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwsIGluaXRpYWwpIHtcbiAgaWYgKGluZGV4ID09PSB2b2lkIDApIHtcbiAgICBpbmRleCA9IDA7XG4gIH1cblxuICBpZiAoc3BlZWQgPT09IHZvaWQgMCkge1xuICAgIHNwZWVkID0gdGhpcy5wYXJhbXMuc3BlZWQ7XG4gIH1cblxuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBpbmRleCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGluZGV4ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSAnaW5kZXgnIGFyZ3VtZW50IGNhbm5vdCBoYXZlIHR5cGUgb3RoZXIgdGhhbiAnbnVtYmVyJyBvciAnc3RyaW5nJy4gW1wiICsgdHlwZW9mIGluZGV4ICsgXCJdIGdpdmVuLlwiKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5kZXggPT09ICdzdHJpbmcnKSB7XG4gICAgLyoqXG4gICAgICogVGhlIGBpbmRleGAgYXJndW1lbnQgY29udmVydGVkIGZyb20gYHN0cmluZ2AgdG8gYG51bWJlcmAuXG4gICAgICogQHR5cGUge251bWJlcn1cbiAgICAgKi9cbiAgICB2YXIgaW5kZXhBc051bWJlciA9IHBhcnNlSW50KGluZGV4LCAxMCk7XG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgaW5kZXhgIGFyZ3VtZW50IGlzIGEgdmFsaWQgYG51bWJlcmBcbiAgICAgKiBhZnRlciBiZWluZyBjb252ZXJ0ZWQgZnJvbSB0aGUgYHN0cmluZ2AgdHlwZS5cbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cblxuICAgIHZhciBpc1ZhbGlkTnVtYmVyID0gaXNGaW5pdGUoaW5kZXhBc051bWJlcik7XG5cbiAgICBpZiAoIWlzVmFsaWROdW1iZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBwYXNzZWQtaW4gJ2luZGV4JyAoc3RyaW5nKSBjb3VsZG4ndCBiZSBjb252ZXJ0ZWQgdG8gJ251bWJlcicuIFtcIiArIGluZGV4ICsgXCJdIGdpdmVuLlwiKTtcbiAgICB9IC8vIEtub3dpbmcgdGhhdCB0aGUgY29udmVydGVkIGBpbmRleGAgaXMgYSB2YWxpZCBudW1iZXIsXG4gICAgLy8gd2UgY2FuIHVwZGF0ZSB0aGUgb3JpZ2luYWwgYXJndW1lbnQncyB2YWx1ZS5cblxuXG4gICAgaW5kZXggPSBpbmRleEFzTnVtYmVyO1xuICB9XG5cbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBzbGlkZUluZGV4ID0gaW5kZXg7XG4gIGlmIChzbGlkZUluZGV4IDwgMCkgc2xpZGVJbmRleCA9IDA7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgc25hcEdyaWQgPSBzd2lwZXIuc25hcEdyaWQsXG4gICAgICBzbGlkZXNHcmlkID0gc3dpcGVyLnNsaWRlc0dyaWQsXG4gICAgICBwcmV2aW91c0luZGV4ID0gc3dpcGVyLnByZXZpb3VzSW5kZXgsXG4gICAgICBhY3RpdmVJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleCxcbiAgICAgIHJ0bCA9IHN3aXBlci5ydGxUcmFuc2xhdGUsXG4gICAgICB3cmFwcGVyRWwgPSBzd2lwZXIud3JhcHBlckVsLFxuICAgICAgZW5hYmxlZCA9IHN3aXBlci5lbmFibGVkO1xuXG4gIGlmIChzd2lwZXIuYW5pbWF0aW5nICYmIHBhcmFtcy5wcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb24gfHwgIWVuYWJsZWQgJiYgIWludGVybmFsICYmICFpbml0aWFsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHNraXAgPSBNYXRoLm1pbihzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCwgc2xpZGVJbmRleCk7XG4gIHZhciBzbmFwSW5kZXggPSBza2lwICsgTWF0aC5mbG9vcigoc2xpZGVJbmRleCAtIHNraXApIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCk7XG4gIGlmIChzbmFwSW5kZXggPj0gc25hcEdyaWQubGVuZ3RoKSBzbmFwSW5kZXggPSBzbmFwR3JpZC5sZW5ndGggLSAxO1xuXG4gIGlmICgoYWN0aXZlSW5kZXggfHwgcGFyYW1zLmluaXRpYWxTbGlkZSB8fCAwKSA9PT0gKHByZXZpb3VzSW5kZXggfHwgMCkgJiYgcnVuQ2FsbGJhY2tzKSB7XG4gICAgc3dpcGVyLmVtaXQoJ2JlZm9yZVNsaWRlQ2hhbmdlU3RhcnQnKTtcbiAgfVxuXG4gIHZhciB0cmFuc2xhdGUgPSAtc25hcEdyaWRbc25hcEluZGV4XTsgLy8gVXBkYXRlIHByb2dyZXNzXG5cbiAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKHRyYW5zbGF0ZSk7IC8vIE5vcm1hbGl6ZSBzbGlkZUluZGV4XG5cbiAgaWYgKHBhcmFtcy5ub3JtYWxpemVTbGlkZUluZGV4KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICB2YXIgbm9ybWFsaXplZFRyYW5zbGF0ZSA9IC1NYXRoLmZsb29yKHRyYW5zbGF0ZSAqIDEwMCk7XG4gICAgICB2YXIgbm9ybWFsaXplZEdpcmQgPSBNYXRoLmZsb29yKHNsaWRlc0dyaWRbaV0gKiAxMDApO1xuICAgICAgdmFyIG5vcm1hbGl6ZWRHcmlkTmV4dCA9IE1hdGguZmxvb3Ioc2xpZGVzR3JpZFtpICsgMV0gKiAxMDApO1xuXG4gICAgICBpZiAodHlwZW9mIHNsaWRlc0dyaWRbaSArIDFdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBub3JtYWxpemVkR2lyZCAmJiBub3JtYWxpemVkVHJhbnNsYXRlIDwgbm9ybWFsaXplZEdyaWROZXh0IC0gKG5vcm1hbGl6ZWRHcmlkTmV4dCAtIG5vcm1hbGl6ZWRHaXJkKSAvIDIpIHtcbiAgICAgICAgICBzbGlkZUluZGV4ID0gaTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkVHJhbnNsYXRlID49IG5vcm1hbGl6ZWRHaXJkICYmIG5vcm1hbGl6ZWRUcmFuc2xhdGUgPCBub3JtYWxpemVkR3JpZE5leHQpIHtcbiAgICAgICAgICBzbGlkZUluZGV4ID0gaSArIDE7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBub3JtYWxpemVkR2lyZCkge1xuICAgICAgICBzbGlkZUluZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gRGlyZWN0aW9ucyBsb2Nrc1xuXG5cbiAgaWYgKHN3aXBlci5pbml0aWFsaXplZCAmJiBzbGlkZUluZGV4ICE9PSBhY3RpdmVJbmRleCkge1xuICAgIGlmICghc3dpcGVyLmFsbG93U2xpZGVOZXh0ICYmIHRyYW5zbGF0ZSA8IHN3aXBlci50cmFuc2xhdGUgJiYgdHJhbnNsYXRlIDwgc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZVByZXYgJiYgdHJhbnNsYXRlID4gc3dpcGVyLnRyYW5zbGF0ZSAmJiB0cmFuc2xhdGUgPiBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICAgIGlmICgoYWN0aXZlSW5kZXggfHwgMCkgIT09IHNsaWRlSW5kZXgpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB2YXIgZGlyZWN0aW9uO1xuICBpZiAoc2xpZGVJbmRleCA+IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAnbmV4dCc7ZWxzZSBpZiAoc2xpZGVJbmRleCA8IGFjdGl2ZUluZGV4KSBkaXJlY3Rpb24gPSAncHJldic7ZWxzZSBkaXJlY3Rpb24gPSAncmVzZXQnOyAvLyBVcGRhdGUgSW5kZXhcblxuICBpZiAocnRsICYmIC10cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUgfHwgIXJ0bCAmJiB0cmFuc2xhdGUgPT09IHN3aXBlci50cmFuc2xhdGUpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoc2xpZGVJbmRleCk7IC8vIFVwZGF0ZSBIZWlnaHRcblxuICAgIGlmIChwYXJhbXMuYXV0b0hlaWdodCkge1xuICAgICAgc3dpcGVyLnVwZGF0ZUF1dG9IZWlnaHQoKTtcbiAgICB9XG5cbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuXG4gICAgaWYgKHBhcmFtcy5lZmZlY3QgIT09ICdzbGlkZScpIHtcbiAgICAgIHN3aXBlci5zZXRUcmFuc2xhdGUodHJhbnNsYXRlKTtcbiAgICB9XG5cbiAgICBpZiAoZGlyZWN0aW9uICE9PSAncmVzZXQnKSB7XG4gICAgICBzd2lwZXIudHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICAgIHN3aXBlci50cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICB2YXIgaXNIID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpO1xuICAgIHZhciB0ID0gLXRyYW5zbGF0ZTtcblxuICAgIGlmIChydGwpIHtcbiAgICAgIHQgPSB3cmFwcGVyRWwuc2Nyb2xsV2lkdGggLSB3cmFwcGVyRWwub2Zmc2V0V2lkdGggLSB0O1xuICAgIH1cblxuICAgIGlmIChzcGVlZCA9PT0gMCkge1xuICAgICAgd3JhcHBlckVsW2lzSCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgaWYgKHdyYXBwZXJFbC5zY3JvbGxUbykge1xuICAgICAgICB2YXIgX3dyYXBwZXJFbCRzY3JvbGxUbztcblxuICAgICAgICB3cmFwcGVyRWwuc2Nyb2xsVG8oKF93cmFwcGVyRWwkc2Nyb2xsVG8gPSB7fSwgX3dyYXBwZXJFbCRzY3JvbGxUb1tpc0ggPyAnbGVmdCcgOiAndG9wJ10gPSB0LCBfd3JhcHBlckVsJHNjcm9sbFRvLmJlaGF2aW9yID0gJ3Ntb290aCcsIF93cmFwcGVyRWwkc2Nyb2xsVG8pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyYXBwZXJFbFtpc0ggPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSB0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGUpO1xuICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleChzbGlkZUluZGV4KTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIHN3aXBlci5lbWl0KCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCBzcGVlZCwgaW50ZXJuYWwpO1xuICAgIHN3aXBlci50cmFuc2l0aW9uU3RhcnQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuICAgIHN3aXBlci50cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihzcGVlZCk7XG4gICAgc3dpcGVyLnNldFRyYW5zbGF0ZSh0cmFuc2xhdGUpO1xuICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleChzbGlkZUluZGV4KTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIHN3aXBlci5lbWl0KCdiZWZvcmVUcmFuc2l0aW9uU3RhcnQnLCBzcGVlZCwgaW50ZXJuYWwpO1xuICAgIHN3aXBlci50cmFuc2l0aW9uU3RhcnQocnVuQ2FsbGJhY2tzLCBkaXJlY3Rpb24pO1xuXG4gICAgaWYgKCFzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgICBzd2lwZXIuYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgaWYgKCFzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpIHtcbiAgICAgICAgc3dpcGVyLm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kID0gZnVuY3Rpb24gdHJhbnNpdGlvbkVuZChlKSB7XG4gICAgICAgICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgICAgICAgIGlmIChlLnRhcmdldCAhPT0gdGhpcykgcmV0dXJuO1xuICAgICAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IG51bGw7XG4gICAgICAgICAgZGVsZXRlIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZDtcbiAgICAgICAgICBzd2lwZXIudHJhbnNpdGlvbkVuZChydW5DYWxsYmFja3MsIGRpcmVjdGlvbik7XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25TbGlkZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgc3dpcGVyLiR3cmFwcGVyRWxbMF0uYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIHN3aXBlci5vblNsaWRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVUb0xvb3AoaW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChpbmRleCA9PT0gdm9pZCAwKSB7XG4gICAgaW5kZXggPSAwO1xuICB9XG5cbiAgaWYgKHNwZWVkID09PSB2b2lkIDApIHtcbiAgICBzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkO1xuICB9XG5cbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgbmV3SW5kZXggPSBpbmRleDtcblxuICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgbmV3SW5kZXggKz0gc3dpcGVyLmxvb3BlZFNsaWRlcztcbiAgfVxuXG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhuZXdJbmRleCwgc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpO1xufSIsIi8qIGVzbGludCBuby11bnVzZWQtdmFyczogXCJvZmZcIiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVOZXh0KHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKSB7XG4gIGlmIChzcGVlZCA9PT0gdm9pZCAwKSB7XG4gICAgc3BlZWQgPSB0aGlzLnBhcmFtcy5zcGVlZDtcbiAgfVxuXG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cblxuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICBhbmltYXRpbmcgPSBzd2lwZXIuYW5pbWF0aW5nLFxuICAgICAgZW5hYmxlZCA9IHN3aXBlci5lbmFibGVkO1xuICBpZiAoIWVuYWJsZWQpIHJldHVybiBzd2lwZXI7XG4gIHZhciBpbmNyZW1lbnQgPSBzd2lwZXIuYWN0aXZlSW5kZXggPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwID8gMSA6IHBhcmFtcy5zbGlkZXNQZXJHcm91cDtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoYW5pbWF0aW5nICYmIHBhcmFtcy5sb29wUHJldmVudHNTbGlkZSkgcmV0dXJuIGZhbHNlO1xuICAgIHN3aXBlci5sb29wRml4KCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG4gICAgc3dpcGVyLl9jbGllbnRMZWZ0ID0gc3dpcGVyLiR3cmFwcGVyRWxbMF0uY2xpZW50TGVmdDtcbiAgfVxuXG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXggKyBpbmNyZW1lbnQsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbn0iLCIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNsaWRlUHJldihzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCkge1xuICBpZiAoc3BlZWQgPT09IHZvaWQgMCkge1xuICAgIHNwZWVkID0gdGhpcy5wYXJhbXMuc3BlZWQ7XG4gIH1cblxuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgYW5pbWF0aW5nID0gc3dpcGVyLmFuaW1hdGluZyxcbiAgICAgIHNuYXBHcmlkID0gc3dpcGVyLnNuYXBHcmlkLFxuICAgICAgc2xpZGVzR3JpZCA9IHN3aXBlci5zbGlkZXNHcmlkLFxuICAgICAgcnRsVHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSxcbiAgICAgIGVuYWJsZWQgPSBzd2lwZXIuZW5hYmxlZDtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm4gc3dpcGVyO1xuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIGlmIChhbmltYXRpbmcgJiYgcGFyYW1zLmxvb3BQcmV2ZW50c1NsaWRlKSByZXR1cm4gZmFsc2U7XG4gICAgc3dpcGVyLmxvb3BGaXgoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG5cbiAgICBzd2lwZXIuX2NsaWVudExlZnQgPSBzd2lwZXIuJHdyYXBwZXJFbFswXS5jbGllbnRMZWZ0O1xuICB9XG5cbiAgdmFyIHRyYW5zbGF0ZSA9IHJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcblxuICBmdW5jdGlvbiBub3JtYWxpemUodmFsKSB7XG4gICAgaWYgKHZhbCA8IDApIHJldHVybiAtTWF0aC5mbG9vcihNYXRoLmFicyh2YWwpKTtcbiAgICByZXR1cm4gTWF0aC5mbG9vcih2YWwpO1xuICB9XG5cbiAgdmFyIG5vcm1hbGl6ZWRUcmFuc2xhdGUgPSBub3JtYWxpemUodHJhbnNsYXRlKTtcbiAgdmFyIG5vcm1hbGl6ZWRTbmFwR3JpZCA9IHNuYXBHcmlkLm1hcChmdW5jdGlvbiAodmFsKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZSh2YWwpO1xuICB9KTtcbiAgdmFyIHByZXZTbmFwID0gc25hcEdyaWRbbm9ybWFsaXplZFNuYXBHcmlkLmluZGV4T2Yobm9ybWFsaXplZFRyYW5zbGF0ZSkgLSAxXTtcblxuICBpZiAodHlwZW9mIHByZXZTbmFwID09PSAndW5kZWZpbmVkJyAmJiBwYXJhbXMuY3NzTW9kZSkge1xuICAgIHNuYXBHcmlkLmZvckVhY2goZnVuY3Rpb24gKHNuYXApIHtcbiAgICAgIGlmICghcHJldlNuYXAgJiYgbm9ybWFsaXplZFRyYW5zbGF0ZSA+PSBzbmFwKSBwcmV2U25hcCA9IHNuYXA7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgcHJldkluZGV4O1xuXG4gIGlmICh0eXBlb2YgcHJldlNuYXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcHJldkluZGV4ID0gc2xpZGVzR3JpZC5pbmRleE9mKHByZXZTbmFwKTtcbiAgICBpZiAocHJldkluZGV4IDwgMCkgcHJldkluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4IC0gMTtcbiAgfVxuXG4gIHJldHVybiBzd2lwZXIuc2xpZGVUbyhwcmV2SW5kZXgsIHNwZWVkLCBydW5DYWxsYmFja3MsIGludGVybmFsKTtcbn0iLCIvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNsaWRlUmVzZXQoc3BlZWQsIHJ1bkNhbGxiYWNrcywgaW50ZXJuYWwpIHtcbiAgaWYgKHNwZWVkID09PSB2b2lkIDApIHtcbiAgICBzcGVlZCA9IHRoaXMucGFyYW1zLnNwZWVkO1xuICB9XG5cbiAgaWYgKHJ1bkNhbGxiYWNrcyA9PT0gdm9pZCAwKSB7XG4gICAgcnVuQ2FsbGJhY2tzID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICByZXR1cm4gc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59IiwiLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzbGlkZVRvQ2xvc2VzdChzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCwgdGhyZXNob2xkKSB7XG4gIGlmIChzcGVlZCA9PT0gdm9pZCAwKSB7XG4gICAgc3BlZWQgPSB0aGlzLnBhcmFtcy5zcGVlZDtcbiAgfVxuXG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cblxuICBpZiAodGhyZXNob2xkID09PSB2b2lkIDApIHtcbiAgICB0aHJlc2hvbGQgPSAwLjU7XG4gIH1cblxuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIGluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4O1xuICB2YXIgc2tpcCA9IE1hdGgubWluKHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwLCBpbmRleCk7XG4gIHZhciBzbmFwSW5kZXggPSBza2lwICsgTWF0aC5mbG9vcigoaW5kZXggLSBza2lwKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApO1xuICB2YXIgdHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSA/IHN3aXBlci50cmFuc2xhdGUgOiAtc3dpcGVyLnRyYW5zbGF0ZTtcblxuICBpZiAodHJhbnNsYXRlID49IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdKSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdHJhbnNsYXRlIGlzIG9uIG9yIGFmdGVyIHRoZSBjdXJyZW50IHNuYXAgaW5kZXgsIHNvIHRoZSBjaG9pY2VcbiAgICAvLyBpcyBiZXR3ZWVuIHRoZSBjdXJyZW50IGluZGV4IGFuZCB0aGUgb25lIGFmdGVyIGl0LlxuICAgIHZhciBjdXJyZW50U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXhdO1xuICAgIHZhciBuZXh0U25hcCA9IHN3aXBlci5zbmFwR3JpZFtzbmFwSW5kZXggKyAxXTtcblxuICAgIGlmICh0cmFuc2xhdGUgLSBjdXJyZW50U25hcCA+IChuZXh0U25hcCAtIGN1cnJlbnRTbmFwKSAqIHRocmVzaG9sZCkge1xuICAgICAgaW5kZXggKz0gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gVGhlIGN1cnJlbnQgdHJhbnNsYXRlIGlzIGJlZm9yZSB0aGUgY3VycmVudCBzbmFwIGluZGV4LCBzbyB0aGUgY2hvaWNlXG4gICAgLy8gaXMgYmV0d2VlbiB0aGUgY3VycmVudCBpbmRleCBhbmQgdGhlIG9uZSBiZWZvcmUgaXQuXG4gICAgdmFyIHByZXZTbmFwID0gc3dpcGVyLnNuYXBHcmlkW3NuYXBJbmRleCAtIDFdO1xuICAgIHZhciBfY3VycmVudFNuYXAgPSBzd2lwZXIuc25hcEdyaWRbc25hcEluZGV4XTtcblxuICAgIGlmICh0cmFuc2xhdGUgLSBwcmV2U25hcCA8PSAoX2N1cnJlbnRTbmFwIC0gcHJldlNuYXApICogdGhyZXNob2xkKSB7XG4gICAgICBpbmRleCAtPSBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuICAgIH1cbiAgfVxuXG4gIGluZGV4ID0gTWF0aC5tYXgoaW5kZXgsIDApO1xuICBpbmRleCA9IE1hdGgubWluKGluZGV4LCBzd2lwZXIuc2xpZGVzR3JpZC5sZW5ndGggLSAxKTtcbiAgcmV0dXJuIHN3aXBlci5zbGlkZVRvKGluZGV4LCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCBpbnRlcm5hbCk7XG59IiwiaW1wb3J0ICQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2xpZGVUb0NsaWNrZWRTbGlkZSgpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgJHdyYXBwZXJFbCA9IHN3aXBlci4kd3JhcHBlckVsO1xuICB2YXIgc2xpZGVzUGVyVmlldyA9IHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgPyBzd2lwZXIuc2xpZGVzUGVyVmlld0R5bmFtaWMoKSA6IHBhcmFtcy5zbGlkZXNQZXJWaWV3O1xuICB2YXIgc2xpZGVUb0luZGV4ID0gc3dpcGVyLmNsaWNrZWRJbmRleDtcbiAgdmFyIHJlYWxJbmRleDtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBpZiAoc3dpcGVyLmFuaW1hdGluZykgcmV0dXJuO1xuICAgIHJlYWxJbmRleCA9IHBhcnNlSW50KCQoc3dpcGVyLmNsaWNrZWRTbGlkZSkuYXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKSwgMTApO1xuXG4gICAgaWYgKHBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgICAgaWYgKHNsaWRlVG9JbmRleCA8IHN3aXBlci5sb29wZWRTbGlkZXMgLSBzbGlkZXNQZXJWaWV3IC8gMiB8fCBzbGlkZVRvSW5kZXggPiBzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIHN3aXBlci5sb29wZWRTbGlkZXMgKyBzbGlkZXNQZXJWaWV3IC8gMikge1xuICAgICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgICAgICBzbGlkZVRvSW5kZXggPSAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIltkYXRhLXN3aXBlci1zbGlkZS1pbmRleD1cXFwiXCIgKyByZWFsSW5kZXggKyBcIlxcXCJdOm5vdCguXCIgKyBwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcyArIFwiKVwiKS5lcSgwKS5pbmRleCgpO1xuICAgICAgICBuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc2xpZGVUb0luZGV4ID4gc3dpcGVyLnNsaWRlcy5sZW5ndGggLSBzbGlkZXNQZXJWaWV3KSB7XG4gICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgICAgc2xpZGVUb0luZGV4ID0gJHdyYXBwZXJFbC5jaGlsZHJlbihcIi5cIiArIHBhcmFtcy5zbGlkZUNsYXNzICsgXCJbZGF0YS1zd2lwZXItc2xpZGUtaW5kZXg9XFxcIlwiICsgcmVhbEluZGV4ICsgXCJcXFwiXTpub3QoLlwiICsgcGFyYW1zLnNsaWRlRHVwbGljYXRlQ2xhc3MgKyBcIilcIikuZXEoMCkuaW5kZXgoKTtcbiAgICAgIG5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc2xpZGVUb0luZGV4KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhzbGlkZVRvSW5kZXgpO1xuICB9XG59IiwiaW1wb3J0IGxvb3BDcmVhdGUgZnJvbSAnLi9sb29wQ3JlYXRlJztcbmltcG9ydCBsb29wRml4IGZyb20gJy4vbG9vcEZpeCc7XG5pbXBvcnQgbG9vcERlc3Ryb3kgZnJvbSAnLi9sb29wRGVzdHJveSc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvb3BDcmVhdGU6IGxvb3BDcmVhdGUsXG4gIGxvb3BGaXg6IGxvb3BGaXgsXG4gIGxvb3BEZXN0cm95OiBsb29wRGVzdHJveVxufTsiLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvb3BDcmVhdGUoKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcyxcbiAgICAgICR3cmFwcGVyRWwgPSBzd2lwZXIuJHdyYXBwZXJFbDsgLy8gUmVtb3ZlIGR1cGxpY2F0ZWQgc2xpZGVzXG5cbiAgJHdyYXBwZXJFbC5jaGlsZHJlbihcIi5cIiArIHBhcmFtcy5zbGlkZUNsYXNzICsgXCIuXCIgKyBwYXJhbXMuc2xpZGVEdXBsaWNhdGVDbGFzcykucmVtb3ZlKCk7XG4gIHZhciBzbGlkZXMgPSAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MpO1xuXG4gIGlmIChwYXJhbXMubG9vcEZpbGxHcm91cFdpdGhCbGFuaykge1xuICAgIHZhciBibGFua1NsaWRlc051bSA9IHBhcmFtcy5zbGlkZXNQZXJHcm91cCAtIHNsaWRlcy5sZW5ndGggJSBwYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG5cbiAgICBpZiAoYmxhbmtTbGlkZXNOdW0gIT09IHBhcmFtcy5zbGlkZXNQZXJHcm91cCkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBibGFua1NsaWRlc051bTsgaSArPSAxKSB7XG4gICAgICAgIHZhciBibGFua05vZGUgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKS5hZGRDbGFzcyhwYXJhbXMuc2xpZGVDbGFzcyArIFwiIFwiICsgcGFyYW1zLnNsaWRlQmxhbmtDbGFzcyk7XG4gICAgICAgICR3cmFwcGVyRWwuYXBwZW5kKGJsYW5rTm9kZSk7XG4gICAgICB9XG5cbiAgICAgIHNsaWRlcyA9ICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgJiYgIXBhcmFtcy5sb29wZWRTbGlkZXMpIHBhcmFtcy5sb29wZWRTbGlkZXMgPSBzbGlkZXMubGVuZ3RoO1xuICBzd2lwZXIubG9vcGVkU2xpZGVzID0gTWF0aC5jZWlsKHBhcnNlRmxvYXQocGFyYW1zLmxvb3BlZFNsaWRlcyB8fCBwYXJhbXMuc2xpZGVzUGVyVmlldywgMTApKTtcbiAgc3dpcGVyLmxvb3BlZFNsaWRlcyArPSBwYXJhbXMubG9vcEFkZGl0aW9uYWxTbGlkZXM7XG5cbiAgaWYgKHN3aXBlci5sb29wZWRTbGlkZXMgPiBzbGlkZXMubGVuZ3RoKSB7XG4gICAgc3dpcGVyLmxvb3BlZFNsaWRlcyA9IHNsaWRlcy5sZW5ndGg7XG4gIH1cblxuICB2YXIgcHJlcGVuZFNsaWRlcyA9IFtdO1xuICB2YXIgYXBwZW5kU2xpZGVzID0gW107XG4gIHNsaWRlcy5lYWNoKGZ1bmN0aW9uIChlbCwgaW5kZXgpIHtcbiAgICB2YXIgc2xpZGUgPSAkKGVsKTtcblxuICAgIGlmIChpbmRleCA8IHN3aXBlci5sb29wZWRTbGlkZXMpIHtcbiAgICAgIGFwcGVuZFNsaWRlcy5wdXNoKGVsKTtcbiAgICB9XG5cbiAgICBpZiAoaW5kZXggPCBzbGlkZXMubGVuZ3RoICYmIGluZGV4ID49IHNsaWRlcy5sZW5ndGggLSBzd2lwZXIubG9vcGVkU2xpZGVzKSB7XG4gICAgICBwcmVwZW5kU2xpZGVzLnB1c2goZWwpO1xuICAgIH1cblxuICAgIHNsaWRlLmF0dHIoJ2RhdGEtc3dpcGVyLXNsaWRlLWluZGV4JywgaW5kZXgpO1xuICB9KTtcblxuICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXBwZW5kU2xpZGVzLmxlbmd0aDsgX2kgKz0gMSkge1xuICAgICR3cmFwcGVyRWwuYXBwZW5kKCQoYXBwZW5kU2xpZGVzW19pXS5jbG9uZU5vZGUodHJ1ZSkpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSk7XG4gIH1cblxuICBmb3IgKHZhciBfaTIgPSBwcmVwZW5kU2xpZGVzLmxlbmd0aCAtIDE7IF9pMiA+PSAwOyBfaTIgLT0gMSkge1xuICAgICR3cmFwcGVyRWwucHJlcGVuZCgkKHByZXBlbmRTbGlkZXNbX2kyXS5jbG9uZU5vZGUodHJ1ZSkpLmFkZENsYXNzKHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzKSk7XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsb29wRml4KCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgc3dpcGVyLmVtaXQoJ2JlZm9yZUxvb3BGaXgnKTtcbiAgdmFyIGFjdGl2ZUluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4LFxuICAgICAgc2xpZGVzID0gc3dpcGVyLnNsaWRlcyxcbiAgICAgIGxvb3BlZFNsaWRlcyA9IHN3aXBlci5sb29wZWRTbGlkZXMsXG4gICAgICBhbGxvd1NsaWRlUHJldiA9IHN3aXBlci5hbGxvd1NsaWRlUHJldixcbiAgICAgIGFsbG93U2xpZGVOZXh0ID0gc3dpcGVyLmFsbG93U2xpZGVOZXh0LFxuICAgICAgc25hcEdyaWQgPSBzd2lwZXIuc25hcEdyaWQsXG4gICAgICBydGwgPSBzd2lwZXIucnRsVHJhbnNsYXRlO1xuICB2YXIgbmV3SW5kZXg7XG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IHRydWU7XG4gIHZhciBzbmFwVHJhbnNsYXRlID0gLXNuYXBHcmlkW2FjdGl2ZUluZGV4XTtcbiAgdmFyIGRpZmYgPSBzbmFwVHJhbnNsYXRlIC0gc3dpcGVyLmdldFRyYW5zbGF0ZSgpOyAvLyBGaXggRm9yIE5lZ2F0aXZlIE92ZXJzbGlkaW5nXG5cbiAgaWYgKGFjdGl2ZUluZGV4IDwgbG9vcGVkU2xpZGVzKSB7XG4gICAgbmV3SW5kZXggPSBzbGlkZXMubGVuZ3RoIC0gbG9vcGVkU2xpZGVzICogMyArIGFjdGl2ZUluZGV4O1xuICAgIG5ld0luZGV4ICs9IGxvb3BlZFNsaWRlcztcbiAgICB2YXIgc2xpZGVDaGFuZ2VkID0gc3dpcGVyLnNsaWRlVG8obmV3SW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcblxuICAgIGlmIChzbGlkZUNoYW5nZWQgJiYgZGlmZiAhPT0gMCkge1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZSgocnRsID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlKSAtIGRpZmYpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChhY3RpdmVJbmRleCA+PSBzbGlkZXMubGVuZ3RoIC0gbG9vcGVkU2xpZGVzKSB7XG4gICAgLy8gRml4IEZvciBQb3NpdGl2ZSBPdmVyc2xpZGluZ1xuICAgIG5ld0luZGV4ID0gLXNsaWRlcy5sZW5ndGggKyBhY3RpdmVJbmRleCArIGxvb3BlZFNsaWRlcztcbiAgICBuZXdJbmRleCArPSBsb29wZWRTbGlkZXM7XG5cbiAgICB2YXIgX3NsaWRlQ2hhbmdlZCA9IHN3aXBlci5zbGlkZVRvKG5ld0luZGV4LCAwLCBmYWxzZSwgdHJ1ZSk7XG5cbiAgICBpZiAoX3NsaWRlQ2hhbmdlZCAmJiBkaWZmICE9PSAwKSB7XG4gICAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKChydGwgPyAtc3dpcGVyLnRyYW5zbGF0ZSA6IHN3aXBlci50cmFuc2xhdGUpIC0gZGlmZik7XG4gICAgfVxuICB9XG5cbiAgc3dpcGVyLmFsbG93U2xpZGVQcmV2ID0gYWxsb3dTbGlkZVByZXY7XG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IGFsbG93U2xpZGVOZXh0O1xuICBzd2lwZXIuZW1pdCgnbG9vcEZpeCcpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvb3BEZXN0cm95KCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyICR3cmFwcGVyRWwgPSBzd2lwZXIuJHdyYXBwZXJFbCxcbiAgICAgIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICBzbGlkZXMgPSBzd2lwZXIuc2xpZGVzO1xuICAkd3JhcHBlckVsLmNoaWxkcmVuKFwiLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIi5cIiArIHBhcmFtcy5zbGlkZUR1cGxpY2F0ZUNsYXNzICsgXCIsLlwiICsgcGFyYW1zLnNsaWRlQ2xhc3MgKyBcIi5cIiArIHBhcmFtcy5zbGlkZUJsYW5rQ2xhc3MpLnJlbW92ZSgpO1xuICBzbGlkZXMucmVtb3ZlQXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbn0iLCJpbXBvcnQgeyBnZXRXaW5kb3csIGdldERvY3VtZW50IH0gZnJvbSAnc3NyLXdpbmRvdyc7XG5pbXBvcnQgJCBmcm9tICcuLi8uLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgZXh0ZW5kLCBub3cgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlscyc7IC8vIE1vZGlmaWVkIGZyb20gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTQ1MjA1NTQvY3VzdG9tLWVsZW1lbnQtZ2V0cm9vdG5vZGUtY2xvc2VzdC1mdW5jdGlvbi1jcm9zc2luZy1tdWx0aXBsZS1wYXJlbnQtc2hhZG93ZFxuXG5mdW5jdGlvbiBjbG9zZXN0RWxlbWVudChzZWxlY3RvciwgYmFzZSkge1xuICBpZiAoYmFzZSA9PT0gdm9pZCAwKSB7XG4gICAgYmFzZSA9IHRoaXM7XG4gIH1cblxuICBmdW5jdGlvbiBfX2Nsb3Nlc3RGcm9tKGVsKSB7XG4gICAgaWYgKCFlbCB8fCBlbCA9PT0gZ2V0RG9jdW1lbnQoKSB8fCBlbCA9PT0gZ2V0V2luZG93KCkpIHJldHVybiBudWxsO1xuICAgIGlmIChlbC5hc3NpZ25lZFNsb3QpIGVsID0gZWwuYXNzaWduZWRTbG90O1xuICAgIHZhciBmb3VuZCA9IGVsLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgIHJldHVybiBmb3VuZCB8fCBfX2Nsb3Nlc3RGcm9tKGVsLmdldFJvb3ROb2RlKCkuaG9zdCk7XG4gIH1cblxuICByZXR1cm4gX19jbG9zZXN0RnJvbShiYXNlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KGV2ZW50KSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgZG9jdW1lbnQgPSBnZXREb2N1bWVudCgpO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIHZhciBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICB0b3VjaGVzID0gc3dpcGVyLnRvdWNoZXMsXG4gICAgICBlbmFibGVkID0gc3dpcGVyLmVuYWJsZWQ7XG4gIGlmICghZW5hYmxlZCkgcmV0dXJuO1xuXG4gIGlmIChzd2lwZXIuYW5pbWF0aW5nICYmIHBhcmFtcy5wcmV2ZW50SW50ZXJhY3Rpb25PblRyYW5zaXRpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgZSA9IGV2ZW50O1xuICBpZiAoZS5vcmlnaW5hbEV2ZW50KSBlID0gZS5vcmlnaW5hbEV2ZW50O1xuICB2YXIgJHRhcmdldEVsID0gJChlLnRhcmdldCk7XG5cbiAgaWYgKHBhcmFtcy50b3VjaEV2ZW50c1RhcmdldCA9PT0gJ3dyYXBwZXInKSB7XG4gICAgaWYgKCEkdGFyZ2V0RWwuY2xvc2VzdChzd2lwZXIud3JhcHBlckVsKS5sZW5ndGgpIHJldHVybjtcbiAgfVxuXG4gIGRhdGEuaXNUb3VjaEV2ZW50ID0gZS50eXBlID09PSAndG91Y2hzdGFydCc7XG4gIGlmICghZGF0YS5pc1RvdWNoRXZlbnQgJiYgJ3doaWNoJyBpbiBlICYmIGUud2hpY2ggPT09IDMpIHJldHVybjtcbiAgaWYgKCFkYXRhLmlzVG91Y2hFdmVudCAmJiAnYnV0dG9uJyBpbiBlICYmIGUuYnV0dG9uID4gMCkgcmV0dXJuO1xuICBpZiAoZGF0YS5pc1RvdWNoZWQgJiYgZGF0YS5pc01vdmVkKSByZXR1cm47IC8vIGNoYW5nZSB0YXJnZXQgZWwgZm9yIHNoYWRvdyByb290IGNvbXBvbmVudFxuXG4gIHZhciBzd2lwaW5nQ2xhc3NIYXNWYWx1ZSA9ICEhcGFyYW1zLm5vU3dpcGluZ0NsYXNzICYmIHBhcmFtcy5ub1N3aXBpbmdDbGFzcyAhPT0gJyc7XG5cbiAgaWYgKHN3aXBpbmdDbGFzc0hhc1ZhbHVlICYmIGUudGFyZ2V0ICYmIGUudGFyZ2V0LnNoYWRvd1Jvb3QgJiYgZXZlbnQucGF0aCAmJiBldmVudC5wYXRoWzBdKSB7XG4gICAgJHRhcmdldEVsID0gJChldmVudC5wYXRoWzBdKTtcbiAgfVxuXG4gIHZhciBub1N3aXBpbmdTZWxlY3RvciA9IHBhcmFtcy5ub1N3aXBpbmdTZWxlY3RvciA/IHBhcmFtcy5ub1N3aXBpbmdTZWxlY3RvciA6IFwiLlwiICsgcGFyYW1zLm5vU3dpcGluZ0NsYXNzO1xuICB2YXIgaXNUYXJnZXRTaGFkb3cgPSAhIShlLnRhcmdldCAmJiBlLnRhcmdldC5zaGFkb3dSb290KTsgLy8gdXNlIGNsb3Nlc3RFbGVtZW50IGZvciBzaGFkb3cgcm9vdCBlbGVtZW50IHRvIGdldCB0aGUgYWN0dWFsIGNsb3Nlc3QgZm9yIG5lc3RlZCBzaGFkb3cgcm9vdCBlbGVtZW50XG5cbiAgaWYgKHBhcmFtcy5ub1N3aXBpbmcgJiYgKGlzVGFyZ2V0U2hhZG93ID8gY2xvc2VzdEVsZW1lbnQobm9Td2lwaW5nU2VsZWN0b3IsIGUudGFyZ2V0KSA6ICR0YXJnZXRFbC5jbG9zZXN0KG5vU3dpcGluZ1NlbGVjdG9yKVswXSkpIHtcbiAgICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5zd2lwZUhhbmRsZXIpIHtcbiAgICBpZiAoISR0YXJnZXRFbC5jbG9zZXN0KHBhcmFtcy5zd2lwZUhhbmRsZXIpWzBdKSByZXR1cm47XG4gIH1cblxuICB0b3VjaGVzLmN1cnJlbnRYID0gZS50eXBlID09PSAndG91Y2hzdGFydCcgPyBlLnRhcmdldFRvdWNoZXNbMF0ucGFnZVggOiBlLnBhZ2VYO1xuICB0b3VjaGVzLmN1cnJlbnRZID0gZS50eXBlID09PSAndG91Y2hzdGFydCcgPyBlLnRhcmdldFRvdWNoZXNbMF0ucGFnZVkgOiBlLnBhZ2VZO1xuICB2YXIgc3RhcnRYID0gdG91Y2hlcy5jdXJyZW50WDtcbiAgdmFyIHN0YXJ0WSA9IHRvdWNoZXMuY3VycmVudFk7IC8vIERvIE5PVCBzdGFydCBpZiBpT1MgZWRnZSBzd2lwZSBpcyBkZXRlY3RlZC4gT3RoZXJ3aXNlIGlPUyBhcHAgY2Fubm90IHN3aXBlLXRvLWdvLWJhY2sgYW55bW9yZVxuXG4gIHZhciBlZGdlU3dpcGVEZXRlY3Rpb24gPSBwYXJhbXMuZWRnZVN3aXBlRGV0ZWN0aW9uIHx8IHBhcmFtcy5pT1NFZGdlU3dpcGVEZXRlY3Rpb247XG4gIHZhciBlZGdlU3dpcGVUaHJlc2hvbGQgPSBwYXJhbXMuZWRnZVN3aXBlVGhyZXNob2xkIHx8IHBhcmFtcy5pT1NFZGdlU3dpcGVUaHJlc2hvbGQ7XG5cbiAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiAmJiAoc3RhcnRYIDw9IGVkZ2VTd2lwZVRocmVzaG9sZCB8fCBzdGFydFggPj0gd2luZG93LmlubmVyV2lkdGggLSBlZGdlU3dpcGVUaHJlc2hvbGQpKSB7XG4gICAgaWYgKGVkZ2VTd2lwZURldGVjdGlvbiA9PT0gJ3ByZXZlbnQnKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgZXh0ZW5kKGRhdGEsIHtcbiAgICBpc1RvdWNoZWQ6IHRydWUsXG4gICAgaXNNb3ZlZDogZmFsc2UsXG4gICAgYWxsb3dUb3VjaENhbGxiYWNrczogdHJ1ZSxcbiAgICBpc1Njcm9sbGluZzogdW5kZWZpbmVkLFxuICAgIHN0YXJ0TW92aW5nOiB1bmRlZmluZWRcbiAgfSk7XG4gIHRvdWNoZXMuc3RhcnRYID0gc3RhcnRYO1xuICB0b3VjaGVzLnN0YXJ0WSA9IHN0YXJ0WTtcbiAgZGF0YS50b3VjaFN0YXJ0VGltZSA9IG5vdygpO1xuICBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gIHN3aXBlci51cGRhdGVTaXplKCk7XG4gIHN3aXBlci5zd2lwZURpcmVjdGlvbiA9IHVuZGVmaW5lZDtcbiAgaWYgKHBhcmFtcy50aHJlc2hvbGQgPiAwKSBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSA9IGZhbHNlO1xuXG4gIGlmIChlLnR5cGUgIT09ICd0b3VjaHN0YXJ0Jykge1xuICAgIHZhciBwcmV2ZW50RGVmYXVsdCA9IHRydWU7XG4gICAgaWYgKCR0YXJnZXRFbC5pcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSkgcHJldmVudERlZmF1bHQgPSBmYWxzZTtcblxuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmICQoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkuaXMoZGF0YS5mb2N1c2FibGVFbGVtZW50cykgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gJHRhcmdldEVsWzBdKSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkUHJldmVudERlZmF1bHQgPSBwcmV2ZW50RGVmYXVsdCAmJiBzd2lwZXIuYWxsb3dUb3VjaE1vdmUgJiYgcGFyYW1zLnRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDtcblxuICAgIGlmICgocGFyYW1zLnRvdWNoU3RhcnRGb3JjZVByZXZlbnREZWZhdWx0IHx8IHNob3VsZFByZXZlbnREZWZhdWx0KSAmJiAhJHRhcmdldEVsWzBdLmlzQ29udGVudEVkaXRhYmxlKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ3RvdWNoU3RhcnQnLCBlKTtcbn0iLCJpbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGV4dGVuZCwgbm93IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25Ub3VjaE1vdmUoZXZlbnQpIHtcbiAgdmFyIGRvY3VtZW50ID0gZ2V0RG9jdW1lbnQoKTtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBkYXRhID0gc3dpcGVyLnRvdWNoRXZlbnRzRGF0YTtcbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICB0b3VjaGVzID0gc3dpcGVyLnRvdWNoZXMsXG4gICAgICBydGwgPSBzd2lwZXIucnRsVHJhbnNsYXRlLFxuICAgICAgZW5hYmxlZCA9IHN3aXBlci5lbmFibGVkO1xuICBpZiAoIWVuYWJsZWQpIHJldHVybjtcbiAgdmFyIGUgPSBldmVudDtcbiAgaWYgKGUub3JpZ2luYWxFdmVudCkgZSA9IGUub3JpZ2luYWxFdmVudDtcblxuICBpZiAoIWRhdGEuaXNUb3VjaGVkKSB7XG4gICAgaWYgKGRhdGEuc3RhcnRNb3ZpbmcgJiYgZGF0YS5pc1Njcm9sbGluZykge1xuICAgICAgc3dpcGVyLmVtaXQoJ3RvdWNoTW92ZU9wcG9zaXRlJywgZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGRhdGEuaXNUb3VjaEV2ZW50ICYmIGUudHlwZSAhPT0gJ3RvdWNobW92ZScpIHJldHVybjtcbiAgdmFyIHRhcmdldFRvdWNoID0gZS50eXBlID09PSAndG91Y2htb3ZlJyAmJiBlLnRhcmdldFRvdWNoZXMgJiYgKGUudGFyZ2V0VG91Y2hlc1swXSB8fCBlLmNoYW5nZWRUb3VjaGVzWzBdKTtcbiAgdmFyIHBhZ2VYID0gZS50eXBlID09PSAndG91Y2htb3ZlJyA/IHRhcmdldFRvdWNoLnBhZ2VYIDogZS5wYWdlWDtcbiAgdmFyIHBhZ2VZID0gZS50eXBlID09PSAndG91Y2htb3ZlJyA/IHRhcmdldFRvdWNoLnBhZ2VZIDogZS5wYWdlWTtcblxuICBpZiAoZS5wcmV2ZW50ZWRCeU5lc3RlZFN3aXBlcikge1xuICAgIHRvdWNoZXMuc3RhcnRYID0gcGFnZVg7XG4gICAgdG91Y2hlcy5zdGFydFkgPSBwYWdlWTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIXN3aXBlci5hbGxvd1RvdWNoTW92ZSkge1xuICAgIC8vIGlzTW92ZWQgPSB0cnVlO1xuICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG5cbiAgICBpZiAoZGF0YS5pc1RvdWNoZWQpIHtcbiAgICAgIGV4dGVuZCh0b3VjaGVzLCB7XG4gICAgICAgIHN0YXJ0WDogcGFnZVgsXG4gICAgICAgIHN0YXJ0WTogcGFnZVksXG4gICAgICAgIGN1cnJlbnRYOiBwYWdlWCxcbiAgICAgICAgY3VycmVudFk6IHBhZ2VZXG4gICAgICB9KTtcbiAgICAgIGRhdGEudG91Y2hTdGFydFRpbWUgPSBub3coKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZGF0YS5pc1RvdWNoRXZlbnQgJiYgcGFyYW1zLnRvdWNoUmVsZWFzZU9uRWRnZXMgJiYgIXBhcmFtcy5sb29wKSB7XG4gICAgaWYgKHN3aXBlci5pc1ZlcnRpY2FsKCkpIHtcbiAgICAgIC8vIFZlcnRpY2FsXG4gICAgICBpZiAocGFnZVkgPCB0b3VjaGVzLnN0YXJ0WSAmJiBzd2lwZXIudHJhbnNsYXRlIDw9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSB8fCBwYWdlWSA+IHRvdWNoZXMuc3RhcnRZICYmIHN3aXBlci50cmFuc2xhdGUgPj0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICAgIGRhdGEuaXNUb3VjaGVkID0gZmFsc2U7XG4gICAgICAgIGRhdGEuaXNNb3ZlZCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYWdlWCA8IHRvdWNoZXMuc3RhcnRYICYmIHN3aXBlci50cmFuc2xhdGUgPD0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIHx8IHBhZ2VYID4gdG91Y2hlcy5zdGFydFggJiYgc3dpcGVyLnRyYW5zbGF0ZSA+PSBzd2lwZXIubWluVHJhbnNsYXRlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoZGF0YS5pc1RvdWNoRXZlbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgIGlmIChlLnRhcmdldCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiAkKGUudGFyZ2V0KS5pcyhkYXRhLmZvY3VzYWJsZUVsZW1lbnRzKSkge1xuICAgICAgZGF0YS5pc01vdmVkID0gdHJ1ZTtcbiAgICAgIHN3aXBlci5hbGxvd0NsaWNrID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaE1vdmUnLCBlKTtcbiAgfVxuXG4gIGlmIChlLnRhcmdldFRvdWNoZXMgJiYgZS50YXJnZXRUb3VjaGVzLmxlbmd0aCA+IDEpIHJldHVybjtcbiAgdG91Y2hlcy5jdXJyZW50WCA9IHBhZ2VYO1xuICB0b3VjaGVzLmN1cnJlbnRZID0gcGFnZVk7XG4gIHZhciBkaWZmWCA9IHRvdWNoZXMuY3VycmVudFggLSB0b3VjaGVzLnN0YXJ0WDtcbiAgdmFyIGRpZmZZID0gdG91Y2hlcy5jdXJyZW50WSAtIHRvdWNoZXMuc3RhcnRZO1xuICBpZiAoc3dpcGVyLnBhcmFtcy50aHJlc2hvbGQgJiYgTWF0aC5zcXJ0KE1hdGgucG93KGRpZmZYLCAyKSArIE1hdGgucG93KGRpZmZZLCAyKSkgPCBzd2lwZXIucGFyYW1zLnRocmVzaG9sZCkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgZGF0YS5pc1Njcm9sbGluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgdG91Y2hBbmdsZTtcblxuICAgIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkgJiYgdG91Y2hlcy5jdXJyZW50WSA9PT0gdG91Y2hlcy5zdGFydFkgfHwgc3dpcGVyLmlzVmVydGljYWwoKSAmJiB0b3VjaGVzLmN1cnJlbnRYID09PSB0b3VjaGVzLnN0YXJ0WCkge1xuICAgICAgZGF0YS5pc1Njcm9sbGluZyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgIGlmIChkaWZmWCAqIGRpZmZYICsgZGlmZlkgKiBkaWZmWSA+PSAyNSkge1xuICAgICAgICB0b3VjaEFuZ2xlID0gTWF0aC5hdGFuMihNYXRoLmFicyhkaWZmWSksIE1hdGguYWJzKGRpZmZYKSkgKiAxODAgLyBNYXRoLlBJO1xuICAgICAgICBkYXRhLmlzU2Nyb2xsaW5nID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gdG91Y2hBbmdsZSA+IHBhcmFtcy50b3VjaEFuZ2xlIDogOTAgLSB0b3VjaEFuZ2xlID4gcGFyYW1zLnRvdWNoQW5nbGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuaXNTY3JvbGxpbmcpIHtcbiAgICBzd2lwZXIuZW1pdCgndG91Y2hNb3ZlT3Bwb3NpdGUnLCBlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YS5zdGFydE1vdmluZyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAodG91Y2hlcy5jdXJyZW50WCAhPT0gdG91Y2hlcy5zdGFydFggfHwgdG91Y2hlcy5jdXJyZW50WSAhPT0gdG91Y2hlcy5zdGFydFkpIHtcbiAgICAgIGRhdGEuc3RhcnRNb3ZpbmcgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChkYXRhLmlzU2Nyb2xsaW5nKSB7XG4gICAgZGF0YS5pc1RvdWNoZWQgPSBmYWxzZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIWRhdGEuc3RhcnRNb3ZpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBzd2lwZXIuYWxsb3dDbGljayA9IGZhbHNlO1xuXG4gIGlmICghcGFyYW1zLmNzc01vZGUgJiYgZS5jYW5jZWxhYmxlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy50b3VjaE1vdmVTdG9wUHJvcGFnYXRpb24gJiYgIXBhcmFtcy5uZXN0ZWQpIHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgaWYgKCFkYXRhLmlzTW92ZWQpIHtcbiAgICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5sb29wRml4KCk7XG4gICAgfVxuXG4gICAgZGF0YS5zdGFydFRyYW5zbGF0ZSA9IHN3aXBlci5nZXRUcmFuc2xhdGUoKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbigwKTtcblxuICAgIGlmIChzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgICBzd2lwZXIuJHdyYXBwZXJFbC50cmlnZ2VyKCd3ZWJraXRUcmFuc2l0aW9uRW5kIHRyYW5zaXRpb25lbmQnKTtcbiAgICB9XG5cbiAgICBkYXRhLmFsbG93TW9tZW50dW1Cb3VuY2UgPSBmYWxzZTsgLy8gR3JhYiBDdXJzb3JcblxuICAgIGlmIChwYXJhbXMuZ3JhYkN1cnNvciAmJiAoc3dpcGVyLmFsbG93U2xpZGVOZXh0ID09PSB0cnVlIHx8IHN3aXBlci5hbGxvd1NsaWRlUHJldiA9PT0gdHJ1ZSkpIHtcbiAgICAgIHN3aXBlci5zZXRHcmFiQ3Vyc29yKHRydWUpO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCdzbGlkZXJGaXJzdE1vdmUnLCBlKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdzbGlkZXJNb3ZlJywgZSk7XG4gIGRhdGEuaXNNb3ZlZCA9IHRydWU7XG4gIHZhciBkaWZmID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gZGlmZlggOiBkaWZmWTtcbiAgdG91Y2hlcy5kaWZmID0gZGlmZjtcbiAgZGlmZiAqPSBwYXJhbXMudG91Y2hSYXRpbztcbiAgaWYgKHJ0bCkgZGlmZiA9IC1kaWZmO1xuICBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPSBkaWZmID4gMCA/ICdwcmV2JyA6ICduZXh0JztcbiAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGlmZiArIGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIHZhciBkaXNhYmxlUGFyZW50U3dpcGVyID0gdHJ1ZTtcbiAgdmFyIHJlc2lzdGFuY2VSYXRpbyA9IHBhcmFtcy5yZXNpc3RhbmNlUmF0aW87XG5cbiAgaWYgKHBhcmFtcy50b3VjaFJlbGVhc2VPbkVkZ2VzKSB7XG4gICAgcmVzaXN0YW5jZVJhdGlvID0gMDtcbiAgfVxuXG4gIGlmIChkaWZmID4gMCAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPiBzd2lwZXIubWluVHJhbnNsYXRlKCkpIHtcbiAgICBkaXNhYmxlUGFyZW50U3dpcGVyID0gZmFsc2U7XG4gICAgaWYgKHBhcmFtcy5yZXNpc3RhbmNlKSBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBzd2lwZXIubWluVHJhbnNsYXRlKCkgLSAxICsgTWF0aC5wb3coLXN3aXBlci5taW5UcmFuc2xhdGUoKSArIGRhdGEuc3RhcnRUcmFuc2xhdGUgKyBkaWZmLCByZXNpc3RhbmNlUmF0aW8pO1xuICB9IGVsc2UgaWYgKGRpZmYgPCAwICYmIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA8IHN3aXBlci5tYXhUcmFuc2xhdGUoKSkge1xuICAgIGRpc2FibGVQYXJlbnRTd2lwZXIgPSBmYWxzZTtcbiAgICBpZiAocGFyYW1zLnJlc2lzdGFuY2UpIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKSArIDEgLSBNYXRoLnBvdyhzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBkYXRhLnN0YXJ0VHJhbnNsYXRlIC0gZGlmZiwgcmVzaXN0YW5jZVJhdGlvKTtcbiAgfVxuXG4gIGlmIChkaXNhYmxlUGFyZW50U3dpcGVyKSB7XG4gICAgZS5wcmV2ZW50ZWRCeU5lc3RlZFN3aXBlciA9IHRydWU7XG4gIH0gLy8gRGlyZWN0aW9ucyBsb2Nrc1xuXG5cbiAgaWYgKCFzd2lwZXIuYWxsb3dTbGlkZU5leHQgJiYgc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAnbmV4dCcgJiYgZGF0YS5jdXJyZW50VHJhbnNsYXRlIDwgZGF0YS5zdGFydFRyYW5zbGF0ZSkge1xuICAgIGRhdGEuY3VycmVudFRyYW5zbGF0ZSA9IGRhdGEuc3RhcnRUcmFuc2xhdGU7XG4gIH1cblxuICBpZiAoIXN3aXBlci5hbGxvd1NsaWRlUHJldiAmJiBzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICdwcmV2JyAmJiBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPiBkYXRhLnN0YXJ0VHJhbnNsYXRlKSB7XG4gICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgfVxuXG4gIGlmICghc3dpcGVyLmFsbG93U2xpZGVQcmV2ICYmICFzd2lwZXIuYWxsb3dTbGlkZU5leHQpIHtcbiAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICB9IC8vIFRocmVzaG9sZFxuXG5cbiAgaWYgKHBhcmFtcy50aHJlc2hvbGQgPiAwKSB7XG4gICAgaWYgKE1hdGguYWJzKGRpZmYpID4gcGFyYW1zLnRocmVzaG9sZCB8fCBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSkge1xuICAgICAgaWYgKCFkYXRhLmFsbG93VGhyZXNob2xkTW92ZSkge1xuICAgICAgICBkYXRhLmFsbG93VGhyZXNob2xkTW92ZSA9IHRydWU7XG4gICAgICAgIHRvdWNoZXMuc3RhcnRYID0gdG91Y2hlcy5jdXJyZW50WDtcbiAgICAgICAgdG91Y2hlcy5zdGFydFkgPSB0b3VjaGVzLmN1cnJlbnRZO1xuICAgICAgICBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPSBkYXRhLnN0YXJ0VHJhbnNsYXRlO1xuICAgICAgICB0b3VjaGVzLmRpZmYgPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyB0b3VjaGVzLmN1cnJlbnRYIC0gdG91Y2hlcy5zdGFydFggOiB0b3VjaGVzLmN1cnJlbnRZIC0gdG91Y2hlcy5zdGFydFk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGF0YS5jdXJyZW50VHJhbnNsYXRlID0gZGF0YS5zdGFydFRyYW5zbGF0ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAoIXBhcmFtcy5mb2xsb3dGaW5nZXIgfHwgcGFyYW1zLmNzc01vZGUpIHJldHVybjsgLy8gVXBkYXRlIGFjdGl2ZSBpbmRleCBpbiBmcmVlIG1vZGVcblxuICBpZiAocGFyYW1zLmZyZWVNb2RlIHx8IHBhcmFtcy53YXRjaFNsaWRlc1Byb2dyZXNzIHx8IHBhcmFtcy53YXRjaFNsaWRlc1Zpc2liaWxpdHkpIHtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5mcmVlTW9kZSkge1xuICAgIC8vIFZlbG9jaXR5XG4gICAgaWYgKGRhdGEudmVsb2NpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGRhdGEudmVsb2NpdGllcy5wdXNoKHtcbiAgICAgICAgcG9zaXRpb246IHRvdWNoZXNbc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8gJ3N0YXJ0WCcgOiAnc3RhcnRZJ10sXG4gICAgICAgIHRpbWU6IGRhdGEudG91Y2hTdGFydFRpbWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGRhdGEudmVsb2NpdGllcy5wdXNoKHtcbiAgICAgIHBvc2l0aW9uOiB0b3VjaGVzW3N3aXBlci5pc0hvcml6b250YWwoKSA/ICdjdXJyZW50WCcgOiAnY3VycmVudFknXSxcbiAgICAgIHRpbWU6IG5vdygpXG4gICAgfSk7XG4gIH0gLy8gVXBkYXRlIHByb2dyZXNzXG5cblxuICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoZGF0YS5jdXJyZW50VHJhbnNsYXRlKTsgLy8gVXBkYXRlIHRyYW5zbGF0ZVxuXG4gIHN3aXBlci5zZXRUcmFuc2xhdGUoZGF0YS5jdXJyZW50VHJhbnNsYXRlKTtcbn0iLCJpbXBvcnQgeyBub3csIG5leHRUaWNrIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25Ub3VjaEVuZChldmVudCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIGRhdGEgPSBzd2lwZXIudG91Y2hFdmVudHNEYXRhO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcyxcbiAgICAgIHRvdWNoZXMgPSBzd2lwZXIudG91Y2hlcyxcbiAgICAgIHJ0bCA9IHN3aXBlci5ydGxUcmFuc2xhdGUsXG4gICAgICAkd3JhcHBlckVsID0gc3dpcGVyLiR3cmFwcGVyRWwsXG4gICAgICBzbGlkZXNHcmlkID0gc3dpcGVyLnNsaWRlc0dyaWQsXG4gICAgICBzbmFwR3JpZCA9IHN3aXBlci5zbmFwR3JpZCxcbiAgICAgIGVuYWJsZWQgPSBzd2lwZXIuZW5hYmxlZDtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIHZhciBlID0gZXZlbnQ7XG4gIGlmIChlLm9yaWdpbmFsRXZlbnQpIGUgPSBlLm9yaWdpbmFsRXZlbnQ7XG5cbiAgaWYgKGRhdGEuYWxsb3dUb3VjaENhbGxiYWNrcykge1xuICAgIHN3aXBlci5lbWl0KCd0b3VjaEVuZCcsIGUpO1xuICB9XG5cbiAgZGF0YS5hbGxvd1RvdWNoQ2FsbGJhY2tzID0gZmFsc2U7XG5cbiAgaWYgKCFkYXRhLmlzVG91Y2hlZCkge1xuICAgIGlmIChkYXRhLmlzTW92ZWQgJiYgcGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci5zZXRHcmFiQ3Vyc29yKGZhbHNlKTtcbiAgICB9XG5cbiAgICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgICBkYXRhLnN0YXJ0TW92aW5nID0gZmFsc2U7XG4gICAgcmV0dXJuO1xuICB9IC8vIFJldHVybiBHcmFiIEN1cnNvclxuXG5cbiAgaWYgKHBhcmFtcy5ncmFiQ3Vyc29yICYmIGRhdGEuaXNNb3ZlZCAmJiBkYXRhLmlzVG91Y2hlZCAmJiAoc3dpcGVyLmFsbG93U2xpZGVOZXh0ID09PSB0cnVlIHx8IHN3aXBlci5hbGxvd1NsaWRlUHJldiA9PT0gdHJ1ZSkpIHtcbiAgICBzd2lwZXIuc2V0R3JhYkN1cnNvcihmYWxzZSk7XG4gIH0gLy8gVGltZSBkaWZmXG5cblxuICB2YXIgdG91Y2hFbmRUaW1lID0gbm93KCk7XG4gIHZhciB0aW1lRGlmZiA9IHRvdWNoRW5kVGltZSAtIGRhdGEudG91Y2hTdGFydFRpbWU7IC8vIFRhcCwgZG91YmxlVGFwLCBDbGlja1xuXG4gIGlmIChzd2lwZXIuYWxsb3dDbGljaykge1xuICAgIHN3aXBlci51cGRhdGVDbGlja2VkU2xpZGUoZSk7XG4gICAgc3dpcGVyLmVtaXQoJ3RhcCBjbGljaycsIGUpO1xuXG4gICAgaWYgKHRpbWVEaWZmIDwgMzAwICYmIHRvdWNoRW5kVGltZSAtIGRhdGEubGFzdENsaWNrVGltZSA8IDMwMCkge1xuICAgICAgc3dpcGVyLmVtaXQoJ2RvdWJsZVRhcCBkb3VibGVDbGljaycsIGUpO1xuICAgIH1cbiAgfVxuXG4gIGRhdGEubGFzdENsaWNrVGltZSA9IG5vdygpO1xuICBuZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzd2lwZXIuZGVzdHJveWVkKSBzd2lwZXIuYWxsb3dDbGljayA9IHRydWU7XG4gIH0pO1xuXG4gIGlmICghZGF0YS5pc1RvdWNoZWQgfHwgIWRhdGEuaXNNb3ZlZCB8fCAhc3dpcGVyLnN3aXBlRGlyZWN0aW9uIHx8IHRvdWNoZXMuZGlmZiA9PT0gMCB8fCBkYXRhLmN1cnJlbnRUcmFuc2xhdGUgPT09IGRhdGEuc3RhcnRUcmFuc2xhdGUpIHtcbiAgICBkYXRhLmlzVG91Y2hlZCA9IGZhbHNlO1xuICAgIGRhdGEuaXNNb3ZlZCA9IGZhbHNlO1xuICAgIGRhdGEuc3RhcnRNb3ZpbmcgPSBmYWxzZTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkYXRhLmlzVG91Y2hlZCA9IGZhbHNlO1xuICBkYXRhLmlzTW92ZWQgPSBmYWxzZTtcbiAgZGF0YS5zdGFydE1vdmluZyA9IGZhbHNlO1xuICB2YXIgY3VycmVudFBvcztcblxuICBpZiAocGFyYW1zLmZvbGxvd0Zpbmdlcikge1xuICAgIGN1cnJlbnRQb3MgPSBydGwgPyBzd2lwZXIudHJhbnNsYXRlIDogLXN3aXBlci50cmFuc2xhdGU7XG4gIH0gZWxzZSB7XG4gICAgY3VycmVudFBvcyA9IC1kYXRhLmN1cnJlbnRUcmFuc2xhdGU7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGFyYW1zLmZyZWVNb2RlKSB7XG4gICAgaWYgKGN1cnJlbnRQb3MgPCAtc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50UG9zID4gLXN3aXBlci5tYXhUcmFuc2xhdGUoKSkge1xuICAgICAgaWYgKHN3aXBlci5zbGlkZXMubGVuZ3RoIDwgc25hcEdyaWQubGVuZ3RoKSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKHNuYXBHcmlkLmxlbmd0aCAtIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLnNsaWRlcy5sZW5ndGggLSAxKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMuZnJlZU1vZGVNb21lbnR1bSkge1xuICAgICAgaWYgKGRhdGEudmVsb2NpdGllcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHZhciBsYXN0TW92ZUV2ZW50ID0gZGF0YS52ZWxvY2l0aWVzLnBvcCgpO1xuICAgICAgICB2YXIgdmVsb2NpdHlFdmVudCA9IGRhdGEudmVsb2NpdGllcy5wb3AoKTtcbiAgICAgICAgdmFyIGRpc3RhbmNlID0gbGFzdE1vdmVFdmVudC5wb3NpdGlvbiAtIHZlbG9jaXR5RXZlbnQucG9zaXRpb247XG4gICAgICAgIHZhciB0aW1lID0gbGFzdE1vdmVFdmVudC50aW1lIC0gdmVsb2NpdHlFdmVudC50aW1lO1xuICAgICAgICBzd2lwZXIudmVsb2NpdHkgPSBkaXN0YW5jZSAvIHRpbWU7XG4gICAgICAgIHN3aXBlci52ZWxvY2l0eSAvPSAyO1xuXG4gICAgICAgIGlmIChNYXRoLmFicyhzd2lwZXIudmVsb2NpdHkpIDwgcGFyYW1zLmZyZWVNb2RlTWluaW11bVZlbG9jaXR5KSB7XG4gICAgICAgICAgc3dpcGVyLnZlbG9jaXR5ID0gMDtcbiAgICAgICAgfSAvLyB0aGlzIGltcGxpZXMgdGhhdCB0aGUgdXNlciBzdG9wcGVkIG1vdmluZyBhIGZpbmdlciB0aGVuIHJlbGVhc2VkLlxuICAgICAgICAvLyBUaGVyZSB3b3VsZCBiZSBubyBldmVudHMgd2l0aCBkaXN0YW5jZSB6ZXJvLCBzbyB0aGUgbGFzdCBldmVudCBpcyBzdGFsZS5cblxuXG4gICAgICAgIGlmICh0aW1lID4gMTUwIHx8IG5vdygpIC0gbGFzdE1vdmVFdmVudC50aW1lID4gMzAwKSB7XG4gICAgICAgICAgc3dpcGVyLnZlbG9jaXR5ID0gMDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpcGVyLnZlbG9jaXR5ID0gMDtcbiAgICAgIH1cblxuICAgICAgc3dpcGVyLnZlbG9jaXR5ICo9IHBhcmFtcy5mcmVlTW9kZU1vbWVudHVtVmVsb2NpdHlSYXRpbztcbiAgICAgIGRhdGEudmVsb2NpdGllcy5sZW5ndGggPSAwO1xuICAgICAgdmFyIG1vbWVudHVtRHVyYXRpb24gPSAxMDAwICogcGFyYW1zLmZyZWVNb2RlTW9tZW50dW1SYXRpbztcbiAgICAgIHZhciBtb21lbnR1bURpc3RhbmNlID0gc3dpcGVyLnZlbG9jaXR5ICogbW9tZW50dW1EdXJhdGlvbjtcbiAgICAgIHZhciBuZXdQb3NpdGlvbiA9IHN3aXBlci50cmFuc2xhdGUgKyBtb21lbnR1bURpc3RhbmNlO1xuICAgICAgaWYgKHJ0bCkgbmV3UG9zaXRpb24gPSAtbmV3UG9zaXRpb247XG4gICAgICB2YXIgZG9Cb3VuY2UgPSBmYWxzZTtcbiAgICAgIHZhciBhZnRlckJvdW5jZVBvc2l0aW9uO1xuICAgICAgdmFyIGJvdW5jZUFtb3VudCA9IE1hdGguYWJzKHN3aXBlci52ZWxvY2l0eSkgKiAyMCAqIHBhcmFtcy5mcmVlTW9kZU1vbWVudHVtQm91bmNlUmF0aW87XG4gICAgICB2YXIgbmVlZHNMb29wRml4O1xuXG4gICAgICBpZiAobmV3UG9zaXRpb24gPCBzd2lwZXIubWF4VHJhbnNsYXRlKCkpIHtcbiAgICAgICAgaWYgKHBhcmFtcy5mcmVlTW9kZU1vbWVudHVtQm91bmNlKSB7XG4gICAgICAgICAgaWYgKG5ld1Bvc2l0aW9uICsgc3dpcGVyLm1heFRyYW5zbGF0ZSgpIDwgLWJvdW5jZUFtb3VudCkge1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBib3VuY2VBbW91bnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWZ0ZXJCb3VuY2VQb3NpdGlvbiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgICAgICAgICBkb0JvdW5jZSA9IHRydWU7XG4gICAgICAgICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5tYXhUcmFuc2xhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMubG9vcCAmJiBwYXJhbXMuY2VudGVyZWRTbGlkZXMpIG5lZWRzTG9vcEZpeCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKG5ld1Bvc2l0aW9uID4gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSB7XG4gICAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGVNb21lbnR1bUJvdW5jZSkge1xuICAgICAgICAgIGlmIChuZXdQb3NpdGlvbiAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSA+IGJvdW5jZUFtb3VudCkge1xuICAgICAgICAgICAgbmV3UG9zaXRpb24gPSBzd2lwZXIubWluVHJhbnNsYXRlKCkgKyBib3VuY2VBbW91bnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWZ0ZXJCb3VuY2VQb3NpdGlvbiA9IHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgICAgICAgICBkb0JvdW5jZSA9IHRydWU7XG4gICAgICAgICAgZGF0YS5hbGxvd01vbWVudHVtQm91bmNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdQb3NpdGlvbiA9IHN3aXBlci5taW5UcmFuc2xhdGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMubG9vcCAmJiBwYXJhbXMuY2VudGVyZWRTbGlkZXMpIG5lZWRzTG9vcEZpeCA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtcy5mcmVlTW9kZVN0aWNreSkge1xuICAgICAgICB2YXIgbmV4dFNsaWRlO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc25hcEdyaWQubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgICBpZiAoc25hcEdyaWRbal0gPiAtbmV3UG9zaXRpb24pIHtcbiAgICAgICAgICAgIG5leHRTbGlkZSA9IGo7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoTWF0aC5hYnMoc25hcEdyaWRbbmV4dFNsaWRlXSAtIG5ld1Bvc2l0aW9uKSA8IE1hdGguYWJzKHNuYXBHcmlkW25leHRTbGlkZSAtIDFdIC0gbmV3UG9zaXRpb24pIHx8IHN3aXBlci5zd2lwZURpcmVjdGlvbiA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgbmV3UG9zaXRpb24gPSBzbmFwR3JpZFtuZXh0U2xpZGVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1Bvc2l0aW9uID0gc25hcEdyaWRbbmV4dFNsaWRlIC0gMV07XG4gICAgICAgIH1cblxuICAgICAgICBuZXdQb3NpdGlvbiA9IC1uZXdQb3NpdGlvbjtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZWRzTG9vcEZpeCkge1xuICAgICAgICBzd2lwZXIub25jZSgndHJhbnNpdGlvbkVuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzd2lwZXIubG9vcEZpeCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8gRml4IGR1cmF0aW9uXG5cblxuICAgICAgaWYgKHN3aXBlci52ZWxvY2l0eSAhPT0gMCkge1xuICAgICAgICBpZiAocnRsKSB7XG4gICAgICAgICAgbW9tZW50dW1EdXJhdGlvbiA9IE1hdGguYWJzKCgtbmV3UG9zaXRpb24gLSBzd2lwZXIudHJhbnNsYXRlKSAvIHN3aXBlci52ZWxvY2l0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbW9tZW50dW1EdXJhdGlvbiA9IE1hdGguYWJzKChuZXdQb3NpdGlvbiAtIHN3aXBlci50cmFuc2xhdGUpIC8gc3dpcGVyLnZlbG9jaXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGVTdGlja3kpIHtcbiAgICAgICAgICAvLyBJZiBmcmVlTW9kZVN0aWNreSBpcyBhY3RpdmUgYW5kIHRoZSB1c2VyIGVuZHMgYSBzd2lwZSB3aXRoIGEgc2xvdy12ZWxvY2l0eVxuICAgICAgICAgIC8vIGV2ZW50LCB0aGVuIGR1cmF0aW9ucyBjYW4gYmUgMjArIHNlY29uZHMgdG8gc2xpZGUgb25lIChvciB6ZXJvISkgc2xpZGVzLlxuICAgICAgICAgIC8vIEl0J3MgZWFzeSB0byBzZWUgdGhpcyB3aGVuIHNpbXVsYXRpbmcgdG91Y2ggd2l0aCBtb3VzZSBldmVudHMuIFRvIGZpeCB0aGlzLFxuICAgICAgICAgIC8vIGxpbWl0IHNpbmdsZS1zbGlkZSBzd2lwZXMgdG8gdGhlIGRlZmF1bHQgc2xpZGUgZHVyYXRpb24uIFRoaXMgYWxzbyBoYXMgdGhlXG4gICAgICAgICAgLy8gbmljZSBzaWRlIGVmZmVjdCBvZiBtYXRjaGluZyBzbGlkZSBzcGVlZCBpZiB0aGUgdXNlciBzdG9wcGVkIG1vdmluZyBiZWZvcmVcbiAgICAgICAgICAvLyBsaWZ0aW5nIGZpbmdlciBvciBtb3VzZSB2cy4gbW92aW5nIHNsb3dseSBiZWZvcmUgbGlmdGluZyB0aGUgZmluZ2VyL21vdXNlLlxuICAgICAgICAgIC8vIEZvciBmYXN0ZXIgc3dpcGVzLCBhbHNvIGFwcGx5IGxpbWl0cyAoYWxiZWl0IGhpZ2hlciBvbmVzKS5cbiAgICAgICAgICB2YXIgbW92ZURpc3RhbmNlID0gTWF0aC5hYnMoKHJ0bCA/IC1uZXdQb3NpdGlvbiA6IG5ld1Bvc2l0aW9uKSAtIHN3aXBlci50cmFuc2xhdGUpO1xuICAgICAgICAgIHZhciBjdXJyZW50U2xpZGVTaXplID0gc3dpcGVyLnNsaWRlc1NpemVzR3JpZFtzd2lwZXIuYWN0aXZlSW5kZXhdO1xuXG4gICAgICAgICAgaWYgKG1vdmVEaXN0YW5jZSA8IGN1cnJlbnRTbGlkZVNpemUpIHtcbiAgICAgICAgICAgIG1vbWVudHVtRHVyYXRpb24gPSBwYXJhbXMuc3BlZWQ7XG4gICAgICAgICAgfSBlbHNlIGlmIChtb3ZlRGlzdGFuY2UgPCAyICogY3VycmVudFNsaWRlU2l6ZSkge1xuICAgICAgICAgICAgbW9tZW50dW1EdXJhdGlvbiA9IHBhcmFtcy5zcGVlZCAqIDEuNTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbW9tZW50dW1EdXJhdGlvbiA9IHBhcmFtcy5zcGVlZCAqIDIuNTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zLmZyZWVNb2RlU3RpY2t5KSB7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvQ2xvc2VzdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJhbXMuZnJlZU1vZGVNb21lbnR1bUJvdW5jZSAmJiBkb0JvdW5jZSkge1xuICAgICAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoYWZ0ZXJCb3VuY2VQb3NpdGlvbik7XG4gICAgICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKG1vbWVudHVtRHVyYXRpb24pO1xuICAgICAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25TdGFydCh0cnVlLCBzd2lwZXIuc3dpcGVEaXJlY3Rpb24pO1xuICAgICAgICBzd2lwZXIuYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgJHdyYXBwZXJFbC50cmFuc2l0aW9uRW5kKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkIHx8ICFkYXRhLmFsbG93TW9tZW50dW1Cb3VuY2UpIHJldHVybjtcbiAgICAgICAgICBzd2lwZXIuZW1pdCgnbW9tZW50dW1Cb3VuY2UnKTtcbiAgICAgICAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbihwYXJhbXMuc3BlZWQpO1xuICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShhZnRlckJvdW5jZVBvc2l0aW9uKTtcbiAgICAgICAgICAgICR3cmFwcGVyRWwudHJhbnNpdGlvbkVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25FbmQoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sIDApO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoc3dpcGVyLnZlbG9jaXR5KSB7XG4gICAgICAgIHN3aXBlci51cGRhdGVQcm9ncmVzcyhuZXdQb3NpdGlvbik7XG4gICAgICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKG1vbWVudHVtRHVyYXRpb24pO1xuICAgICAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgc3dpcGVyLnRyYW5zaXRpb25TdGFydCh0cnVlLCBzd2lwZXIuc3dpcGVEaXJlY3Rpb24pO1xuXG4gICAgICAgIGlmICghc3dpcGVyLmFuaW1hdGluZykge1xuICAgICAgICAgIHN3aXBlci5hbmltYXRpbmcgPSB0cnVlO1xuICAgICAgICAgICR3cmFwcGVyRWwudHJhbnNpdGlvbkVuZChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIXN3aXBlciB8fCBzd2lwZXIuZGVzdHJveWVkKSByZXR1cm47XG4gICAgICAgICAgICBzd2lwZXIudHJhbnNpdGlvbkVuZCgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2lwZXIuZW1pdCgnX2ZyZWVNb2RlTm9Nb21lbnR1bVJlbGVhc2UnKTtcbiAgICAgICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKG5ld1Bvc2l0aW9uKTtcbiAgICAgIH1cblxuICAgICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1zLmZyZWVNb2RlU3RpY2t5KSB7XG4gICAgICBzd2lwZXIuc2xpZGVUb0Nsb3Nlc3QoKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKHBhcmFtcy5mcmVlTW9kZSkge1xuICAgICAgc3dpcGVyLmVtaXQoJ19mcmVlTW9kZU5vTW9tZW50dW1SZWxlYXNlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFwYXJhbXMuZnJlZU1vZGVNb21lbnR1bSB8fCB0aW1lRGlmZiA+PSBwYXJhbXMubG9uZ1N3aXBlc01zKSB7XG4gICAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MoKTtcbiAgICAgIHN3aXBlci51cGRhdGVBY3RpdmVJbmRleCgpO1xuICAgICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH0gLy8gRmluZCBjdXJyZW50IHNsaWRlXG5cblxuICB2YXIgc3RvcEluZGV4ID0gMDtcbiAgdmFyIGdyb3VwU2l6ZSA9IHN3aXBlci5zbGlkZXNTaXplc0dyaWRbMF07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXNHcmlkLmxlbmd0aDsgaSArPSBpIDwgcGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCA/IDEgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXApIHtcbiAgICB2YXIgX2luY3JlbWVudCA9IGkgPCBwYXJhbXMuc2xpZGVzUGVyR3JvdXBTa2lwIC0gMSA/IDEgOiBwYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG5cbiAgICBpZiAodHlwZW9mIHNsaWRlc0dyaWRbaSArIF9pbmNyZW1lbnRdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaWYgKGN1cnJlbnRQb3MgPj0gc2xpZGVzR3JpZFtpXSAmJiBjdXJyZW50UG9zIDwgc2xpZGVzR3JpZFtpICsgX2luY3JlbWVudF0pIHtcbiAgICAgICAgc3RvcEluZGV4ID0gaTtcbiAgICAgICAgZ3JvdXBTaXplID0gc2xpZGVzR3JpZFtpICsgX2luY3JlbWVudF0gLSBzbGlkZXNHcmlkW2ldO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3VycmVudFBvcyA+PSBzbGlkZXNHcmlkW2ldKSB7XG4gICAgICBzdG9wSW5kZXggPSBpO1xuICAgICAgZ3JvdXBTaXplID0gc2xpZGVzR3JpZFtzbGlkZXNHcmlkLmxlbmd0aCAtIDFdIC0gc2xpZGVzR3JpZFtzbGlkZXNHcmlkLmxlbmd0aCAtIDJdO1xuICAgIH1cbiAgfSAvLyBGaW5kIGN1cnJlbnQgc2xpZGUgc2l6ZVxuXG5cbiAgdmFyIHJhdGlvID0gKGN1cnJlbnRQb3MgLSBzbGlkZXNHcmlkW3N0b3BJbmRleF0pIC8gZ3JvdXBTaXplO1xuICB2YXIgaW5jcmVtZW50ID0gc3RvcEluZGV4IDwgcGFyYW1zLnNsaWRlc1Blckdyb3VwU2tpcCAtIDEgPyAxIDogcGFyYW1zLnNsaWRlc1Blckdyb3VwO1xuXG4gIGlmICh0aW1lRGlmZiA+IHBhcmFtcy5sb25nU3dpcGVzTXMpIHtcbiAgICAvLyBMb25nIHRvdWNoZXNcbiAgICBpZiAoIXBhcmFtcy5sb25nU3dpcGVzKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgaWYgKHJhdGlvID49IHBhcmFtcy5sb25nU3dpcGVzUmF0aW8pIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7ZWxzZSBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXgpO1xuICAgIH1cblxuICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICdwcmV2Jykge1xuICAgICAgaWYgKHJhdGlvID4gMSAtIHBhcmFtcy5sb25nU3dpcGVzUmF0aW8pIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7ZWxzZSBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXgpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBTaG9ydCBzd2lwZXNcbiAgICBpZiAoIXBhcmFtcy5zaG9ydFN3aXBlcykge1xuICAgICAgc3dpcGVyLnNsaWRlVG8oc3dpcGVyLmFjdGl2ZUluZGV4KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaXNOYXZCdXR0b25UYXJnZXQgPSBzd2lwZXIubmF2aWdhdGlvbiAmJiAoZS50YXJnZXQgPT09IHN3aXBlci5uYXZpZ2F0aW9uLm5leHRFbCB8fCBlLnRhcmdldCA9PT0gc3dpcGVyLm5hdmlnYXRpb24ucHJldkVsKTtcblxuICAgIGlmICghaXNOYXZCdXR0b25UYXJnZXQpIHtcbiAgICAgIGlmIChzd2lwZXIuc3dpcGVEaXJlY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgICBzd2lwZXIuc2xpZGVUbyhzdG9wSW5kZXggKyBpbmNyZW1lbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3dpcGVyLnN3aXBlRGlyZWN0aW9uID09PSAncHJldicpIHtcbiAgICAgICAgc3dpcGVyLnNsaWRlVG8oc3RvcEluZGV4KTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGUudGFyZ2V0ID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwpIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCArIGluY3JlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN0b3BJbmRleCk7XG4gICAgfVxuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25SZXNpemUoKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcyxcbiAgICAgIGVsID0gc3dpcGVyLmVsO1xuICBpZiAoZWwgJiYgZWwub2Zmc2V0V2lkdGggPT09IDApIHJldHVybjsgLy8gQnJlYWtwb2ludHNcblxuICBpZiAocGFyYW1zLmJyZWFrcG9pbnRzKSB7XG4gICAgc3dpcGVyLnNldEJyZWFrcG9pbnQoKTtcbiAgfSAvLyBTYXZlIGxvY2tzXG5cblxuICB2YXIgYWxsb3dTbGlkZU5leHQgPSBzd2lwZXIuYWxsb3dTbGlkZU5leHQsXG4gICAgICBhbGxvd1NsaWRlUHJldiA9IHN3aXBlci5hbGxvd1NsaWRlUHJldixcbiAgICAgIHNuYXBHcmlkID0gc3dpcGVyLnNuYXBHcmlkOyAvLyBEaXNhYmxlIGxvY2tzIG9uIHJlc2l6ZVxuXG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9IHRydWU7XG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IHRydWU7XG4gIHN3aXBlci51cGRhdGVTaXplKCk7XG4gIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcbiAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcblxuICBpZiAoKHBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgfHwgcGFyYW1zLnNsaWRlc1BlclZpZXcgPiAxKSAmJiBzd2lwZXIuaXNFbmQgJiYgIXN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5jZW50ZXJlZFNsaWRlcykge1xuICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMSwgMCwgZmFsc2UsIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5hY3RpdmVJbmRleCwgMCwgZmFsc2UsIHRydWUpO1xuICB9XG5cbiAgaWYgKHN3aXBlci5hdXRvcGxheSAmJiBzd2lwZXIuYXV0b3BsYXkucnVubmluZyAmJiBzd2lwZXIuYXV0b3BsYXkucGF1c2VkKSB7XG4gICAgc3dpcGVyLmF1dG9wbGF5LnJ1bigpO1xuICB9IC8vIFJldHVybiBsb2NrcyBhZnRlciByZXNpemVcblxuXG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9IGFsbG93U2xpZGVQcmV2O1xuICBzd2lwZXIuYWxsb3dTbGlkZU5leHQgPSBhbGxvd1NsaWRlTmV4dDtcblxuICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHNuYXBHcmlkICE9PSBzd2lwZXIuc25hcEdyaWQpIHtcbiAgICBzd2lwZXIuY2hlY2tPdmVyZmxvdygpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb25DbGljayhlKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG5cbiAgaWYgKCFzd2lwZXIuYWxsb3dDbGljaykge1xuICAgIGlmIChzd2lwZXIucGFyYW1zLnByZXZlbnRDbGlja3MpIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLnByZXZlbnRDbGlja3NQcm9wYWdhdGlvbiAmJiBzd2lwZXIuYW5pbWF0aW5nKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvblNjcm9sbCgpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciB3cmFwcGVyRWwgPSBzd2lwZXIud3JhcHBlckVsLFxuICAgICAgcnRsVHJhbnNsYXRlID0gc3dpcGVyLnJ0bFRyYW5zbGF0ZSxcbiAgICAgIGVuYWJsZWQgPSBzd2lwZXIuZW5hYmxlZDtcbiAgaWYgKCFlbmFibGVkKSByZXR1cm47XG4gIHN3aXBlci5wcmV2aW91c1RyYW5zbGF0ZSA9IHN3aXBlci50cmFuc2xhdGU7XG5cbiAgaWYgKHN3aXBlci5pc0hvcml6b250YWwoKSkge1xuICAgIGlmIChydGxUcmFuc2xhdGUpIHtcbiAgICAgIHN3aXBlci50cmFuc2xhdGUgPSB3cmFwcGVyRWwuc2Nyb2xsV2lkdGggLSB3cmFwcGVyRWwub2Zmc2V0V2lkdGggLSB3cmFwcGVyRWwuc2Nyb2xsTGVmdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpcGVyLnRyYW5zbGF0ZSA9IC13cmFwcGVyRWwuc2Nyb2xsTGVmdDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnRyYW5zbGF0ZSA9IC13cmFwcGVyRWwuc2Nyb2xsVG9wO1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXG5cbiAgaWYgKHN3aXBlci50cmFuc2xhdGUgPT09IC0wKSBzd2lwZXIudHJhbnNsYXRlID0gMDtcbiAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gIHN3aXBlci51cGRhdGVTbGlkZXNDbGFzc2VzKCk7XG4gIHZhciBuZXdQcm9ncmVzcztcbiAgdmFyIHRyYW5zbGF0ZXNEaWZmID0gc3dpcGVyLm1heFRyYW5zbGF0ZSgpIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuXG4gIGlmICh0cmFuc2xhdGVzRGlmZiA9PT0gMCkge1xuICAgIG5ld1Byb2dyZXNzID0gMDtcbiAgfSBlbHNlIHtcbiAgICBuZXdQcm9ncmVzcyA9IChzd2lwZXIudHJhbnNsYXRlIC0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpKSAvIHRyYW5zbGF0ZXNEaWZmO1xuICB9XG5cbiAgaWYgKG5ld1Byb2dyZXNzICE9PSBzd2lwZXIucHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MocnRsVHJhbnNsYXRlID8gLXN3aXBlci50cmFuc2xhdGUgOiBzd2lwZXIudHJhbnNsYXRlKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2xhdGUnLCBzd2lwZXIudHJhbnNsYXRlLCBmYWxzZSk7XG59IiwiaW1wb3J0IHsgZ2V0RG9jdW1lbnQgfSBmcm9tICdzc3Itd2luZG93JztcbmltcG9ydCBvblRvdWNoU3RhcnQgZnJvbSAnLi9vblRvdWNoU3RhcnQnO1xuaW1wb3J0IG9uVG91Y2hNb3ZlIGZyb20gJy4vb25Ub3VjaE1vdmUnO1xuaW1wb3J0IG9uVG91Y2hFbmQgZnJvbSAnLi9vblRvdWNoRW5kJztcbmltcG9ydCBvblJlc2l6ZSBmcm9tICcuL29uUmVzaXplJztcbmltcG9ydCBvbkNsaWNrIGZyb20gJy4vb25DbGljayc7XG5pbXBvcnQgb25TY3JvbGwgZnJvbSAnLi9vblNjcm9sbCc7XG52YXIgZHVtbXlFdmVudEF0dGFjaGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGR1bW15RXZlbnRMaXN0ZW5lcigpIHt9XG5cbmZ1bmN0aW9uIGF0dGFjaEV2ZW50cygpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgdG91Y2hFdmVudHMgPSBzd2lwZXIudG91Y2hFdmVudHMsXG4gICAgICBlbCA9IHN3aXBlci5lbCxcbiAgICAgIHdyYXBwZXJFbCA9IHN3aXBlci53cmFwcGVyRWwsXG4gICAgICBkZXZpY2UgPSBzd2lwZXIuZGV2aWNlLFxuICAgICAgc3VwcG9ydCA9IHN3aXBlci5zdXBwb3J0O1xuICBzd2lwZXIub25Ub3VjaFN0YXJ0ID0gb25Ub3VjaFN0YXJ0LmJpbmQoc3dpcGVyKTtcbiAgc3dpcGVyLm9uVG91Y2hNb3ZlID0gb25Ub3VjaE1vdmUuYmluZChzd2lwZXIpO1xuICBzd2lwZXIub25Ub3VjaEVuZCA9IG9uVG91Y2hFbmQuYmluZChzd2lwZXIpO1xuXG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHN3aXBlci5vblNjcm9sbCA9IG9uU2Nyb2xsLmJpbmQoc3dpcGVyKTtcbiAgfVxuXG4gIHN3aXBlci5vbkNsaWNrID0gb25DbGljay5iaW5kKHN3aXBlcik7XG4gIHZhciBjYXB0dXJlID0gISFwYXJhbXMubmVzdGVkOyAvLyBUb3VjaCBFdmVudHNcblxuICBpZiAoIXN1cHBvcnQudG91Y2ggJiYgc3VwcG9ydC5wb2ludGVyRXZlbnRzKSB7XG4gICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5zdGFydCwgc3dpcGVyLm9uVG91Y2hTdGFydCwgZmFsc2UpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIodG91Y2hFdmVudHMubW92ZSwgc3dpcGVyLm9uVG91Y2hNb3ZlLCBjYXB0dXJlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKHRvdWNoRXZlbnRzLmVuZCwgc3dpcGVyLm9uVG91Y2hFbmQsIGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3VwcG9ydC50b3VjaCkge1xuICAgICAgdmFyIHBhc3NpdmVMaXN0ZW5lciA9IHRvdWNoRXZlbnRzLnN0YXJ0ID09PSAndG91Y2hzdGFydCcgJiYgc3VwcG9ydC5wYXNzaXZlTGlzdGVuZXIgJiYgcGFyYW1zLnBhc3NpdmVMaXN0ZW5lcnMgPyB7XG4gICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgICB9IDogZmFsc2U7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKHRvdWNoRXZlbnRzLnN0YXJ0LCBzd2lwZXIub25Ub3VjaFN0YXJ0LCBwYXNzaXZlTGlzdGVuZXIpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5tb3ZlLCBzd2lwZXIub25Ub3VjaE1vdmUsIHN1cHBvcnQucGFzc2l2ZUxpc3RlbmVyID8ge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgICAgY2FwdHVyZTogY2FwdHVyZVxuICAgICAgfSA6IGNhcHR1cmUpO1xuICAgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5lbmQsIHN3aXBlci5vblRvdWNoRW5kLCBwYXNzaXZlTGlzdGVuZXIpO1xuXG4gICAgICBpZiAodG91Y2hFdmVudHMuY2FuY2VsKSB7XG4gICAgICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIodG91Y2hFdmVudHMuY2FuY2VsLCBzd2lwZXIub25Ub3VjaEVuZCwgcGFzc2l2ZUxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkdW1teUV2ZW50QXR0YWNoZWQpIHtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGR1bW15RXZlbnRMaXN0ZW5lcik7XG4gICAgICAgIGR1bW15RXZlbnRBdHRhY2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy5zaW11bGF0ZVRvdWNoICYmICFkZXZpY2UuaW9zICYmICFkZXZpY2UuYW5kcm9pZCB8fCBwYXJhbXMuc2ltdWxhdGVUb3VjaCAmJiAhc3VwcG9ydC50b3VjaCAmJiBkZXZpY2UuaW9zKSB7XG4gICAgICBlbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBzd2lwZXIub25Ub3VjaFN0YXJ0LCBmYWxzZSk7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBzd2lwZXIub25Ub3VjaE1vdmUsIGNhcHR1cmUpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHN3aXBlci5vblRvdWNoRW5kLCBmYWxzZSk7XG4gICAgfVxuICB9IC8vIFByZXZlbnQgTGlua3MgQ2xpY2tzXG5cblxuICBpZiAocGFyYW1zLnByZXZlbnRDbGlja3MgfHwgcGFyYW1zLnByZXZlbnRDbGlja3NQcm9wYWdhdGlvbikge1xuICAgIGVsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgc3dpcGVyLm9uQ2xpY2ssIHRydWUpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSB7XG4gICAgd3JhcHBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHN3aXBlci5vblNjcm9sbCk7XG4gIH0gLy8gUmVzaXplIGhhbmRsZXJcblxuXG4gIGlmIChwYXJhbXMudXBkYXRlT25XaW5kb3dSZXNpemUpIHtcbiAgICBzd2lwZXIub24oZGV2aWNlLmlvcyB8fCBkZXZpY2UuYW5kcm9pZCA/ICdyZXNpemUgb3JpZW50YXRpb25jaGFuZ2Ugb2JzZXJ2ZXJVcGRhdGUnIDogJ3Jlc2l6ZSBvYnNlcnZlclVwZGF0ZScsIG9uUmVzaXplLCB0cnVlKTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIub24oJ29ic2VydmVyVXBkYXRlJywgb25SZXNpemUsIHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRldGFjaEV2ZW50cygpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgdG91Y2hFdmVudHMgPSBzd2lwZXIudG91Y2hFdmVudHMsXG4gICAgICBlbCA9IHN3aXBlci5lbCxcbiAgICAgIHdyYXBwZXJFbCA9IHN3aXBlci53cmFwcGVyRWwsXG4gICAgICBkZXZpY2UgPSBzd2lwZXIuZGV2aWNlLFxuICAgICAgc3VwcG9ydCA9IHN3aXBlci5zdXBwb3J0O1xuICB2YXIgY2FwdHVyZSA9ICEhcGFyYW1zLm5lc3RlZDsgLy8gVG91Y2ggRXZlbnRzXG5cbiAgaWYgKCFzdXBwb3J0LnRvdWNoICYmIHN1cHBvcnQucG9pbnRlckV2ZW50cykge1xuICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodG91Y2hFdmVudHMuc3RhcnQsIHN3aXBlci5vblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKHRvdWNoRXZlbnRzLm1vdmUsIHN3aXBlci5vblRvdWNoTW92ZSwgY2FwdHVyZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5lbmQsIHN3aXBlci5vblRvdWNoRW5kLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN1cHBvcnQudG91Y2gpIHtcbiAgICAgIHZhciBwYXNzaXZlTGlzdGVuZXIgPSB0b3VjaEV2ZW50cy5zdGFydCA9PT0gJ29uVG91Y2hTdGFydCcgJiYgc3VwcG9ydC5wYXNzaXZlTGlzdGVuZXIgJiYgcGFyYW1zLnBhc3NpdmVMaXN0ZW5lcnMgPyB7XG4gICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgIGNhcHR1cmU6IGZhbHNlXG4gICAgICB9IDogZmFsc2U7XG4gICAgICBlbC5yZW1vdmVFdmVudExpc3RlbmVyKHRvdWNoRXZlbnRzLnN0YXJ0LCBzd2lwZXIub25Ub3VjaFN0YXJ0LCBwYXNzaXZlTGlzdGVuZXIpO1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5tb3ZlLCBzd2lwZXIub25Ub3VjaE1vdmUsIGNhcHR1cmUpO1xuICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcih0b3VjaEV2ZW50cy5lbmQsIHN3aXBlci5vblRvdWNoRW5kLCBwYXNzaXZlTGlzdGVuZXIpO1xuXG4gICAgICBpZiAodG91Y2hFdmVudHMuY2FuY2VsKSB7XG4gICAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIodG91Y2hFdmVudHMuY2FuY2VsLCBzd2lwZXIub25Ub3VjaEVuZCwgcGFzc2l2ZUxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnNpbXVsYXRlVG91Y2ggJiYgIWRldmljZS5pb3MgJiYgIWRldmljZS5hbmRyb2lkIHx8IHBhcmFtcy5zaW11bGF0ZVRvdWNoICYmICFzdXBwb3J0LnRvdWNoICYmIGRldmljZS5pb3MpIHtcbiAgICAgIGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHN3aXBlci5vblRvdWNoU3RhcnQsIGZhbHNlKTtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHN3aXBlci5vblRvdWNoTW92ZSwgY2FwdHVyZSk7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgc3dpcGVyLm9uVG91Y2hFbmQsIGZhbHNlKTtcbiAgICB9XG4gIH0gLy8gUHJldmVudCBMaW5rcyBDbGlja3NcblxuXG4gIGlmIChwYXJhbXMucHJldmVudENsaWNrcyB8fCBwYXJhbXMucHJldmVudENsaWNrc1Byb3BhZ2F0aW9uKSB7XG4gICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzd2lwZXIub25DbGljaywgdHJ1ZSk7XG4gIH1cblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICB3cmFwcGVyRWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgc3dpcGVyLm9uU2Nyb2xsKTtcbiAgfSAvLyBSZXNpemUgaGFuZGxlclxuXG5cbiAgc3dpcGVyLm9mZihkZXZpY2UuaW9zIHx8IGRldmljZS5hbmRyb2lkID8gJ3Jlc2l6ZSBvcmllbnRhdGlvbmNoYW5nZSBvYnNlcnZlclVwZGF0ZScgOiAncmVzaXplIG9ic2VydmVyVXBkYXRlJywgb25SZXNpemUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGF0dGFjaEV2ZW50czogYXR0YWNoRXZlbnRzLFxuICBkZXRhY2hFdmVudHM6IGRldGFjaEV2ZW50c1xufTsiLCJpbXBvcnQgYWRkQ2xhc3NlcyBmcm9tICcuL2FkZENsYXNzZXMnO1xuaW1wb3J0IHJlbW92ZUNsYXNzZXMgZnJvbSAnLi9yZW1vdmVDbGFzc2VzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgYWRkQ2xhc3NlczogYWRkQ2xhc3NlcyxcbiAgcmVtb3ZlQ2xhc3NlczogcmVtb3ZlQ2xhc3Nlc1xufTsiLCJmdW5jdGlvbiBwcmVwYXJlQ2xhc3NlcyhlbnRyaWVzLCBwcmVmaXgpIHtcbiAgdmFyIHJlc3VsdENsYXNzZXMgPSBbXTtcbiAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0Jykge1xuICAgICAgT2JqZWN0LmtleXMoaXRlbSkuZm9yRWFjaChmdW5jdGlvbiAoY2xhc3NOYW1lcykge1xuICAgICAgICBpZiAoaXRlbVtjbGFzc05hbWVzXSkge1xuICAgICAgICAgIHJlc3VsdENsYXNzZXMucHVzaChwcmVmaXggKyBjbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlc3VsdENsYXNzZXMucHVzaChwcmVmaXggKyBpdGVtKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0Q2xhc3Nlcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYWRkQ2xhc3NlcygpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBjbGFzc05hbWVzID0gc3dpcGVyLmNsYXNzTmFtZXMsXG4gICAgICBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgcnRsID0gc3dpcGVyLnJ0bCxcbiAgICAgICRlbCA9IHN3aXBlci4kZWwsXG4gICAgICBkZXZpY2UgPSBzd2lwZXIuZGV2aWNlLFxuICAgICAgc3VwcG9ydCA9IHN3aXBlci5zdXBwb3J0OyAvLyBwcmV0dGllci1pZ25vcmVcblxuICB2YXIgc3VmZml4ZXMgPSBwcmVwYXJlQ2xhc3NlcyhbJ2luaXRpYWxpemVkJywgcGFyYW1zLmRpcmVjdGlvbiwge1xuICAgICdwb2ludGVyLWV2ZW50cyc6IHN1cHBvcnQucG9pbnRlckV2ZW50cyAmJiAhc3VwcG9ydC50b3VjaFxuICB9LCB7XG4gICAgJ2ZyZWUtbW9kZSc6IHBhcmFtcy5mcmVlTW9kZVxuICB9LCB7XG4gICAgJ2F1dG9oZWlnaHQnOiBwYXJhbXMuYXV0b0hlaWdodFxuICB9LCB7XG4gICAgJ3J0bCc6IHJ0bFxuICB9LCB7XG4gICAgJ211bHRpcm93JzogcGFyYW1zLnNsaWRlc1BlckNvbHVtbiA+IDFcbiAgfSwge1xuICAgICdtdWx0aXJvdy1jb2x1bW4nOiBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uID4gMSAmJiBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uRmlsbCA9PT0gJ2NvbHVtbidcbiAgfSwge1xuICAgICdhbmRyb2lkJzogZGV2aWNlLmFuZHJvaWRcbiAgfSwge1xuICAgICdpb3MnOiBkZXZpY2UuaW9zXG4gIH0sIHtcbiAgICAnY3NzLW1vZGUnOiBwYXJhbXMuY3NzTW9kZVxuICB9XSwgcGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpO1xuICBjbGFzc05hbWVzLnB1c2guYXBwbHkoY2xhc3NOYW1lcywgc3VmZml4ZXMpO1xuICAkZWwuYWRkQ2xhc3MoW10uY29uY2F0KGNsYXNzTmFtZXMpLmpvaW4oJyAnKSk7XG4gIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZUNsYXNzZXMoKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgJGVsID0gc3dpcGVyLiRlbCxcbiAgICAgIGNsYXNzTmFtZXMgPSBzd2lwZXIuY2xhc3NOYW1lcztcbiAgJGVsLnJlbW92ZUNsYXNzKGNsYXNzTmFtZXMuam9pbignICcpKTtcbiAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG59IiwiZXhwb3J0IGRlZmF1bHQge1xuICBpbml0OiB0cnVlLFxuICBkaXJlY3Rpb246ICdob3Jpem9udGFsJyxcbiAgdG91Y2hFdmVudHNUYXJnZXQ6ICdjb250YWluZXInLFxuICBpbml0aWFsU2xpZGU6IDAsXG4gIHNwZWVkOiAzMDAsXG4gIGNzc01vZGU6IGZhbHNlLFxuICB1cGRhdGVPbldpbmRvd1Jlc2l6ZTogdHJ1ZSxcbiAgcmVzaXplT2JzZXJ2ZXI6IGZhbHNlLFxuICBuZXN0ZWQ6IGZhbHNlLFxuICBjcmVhdGVFbGVtZW50czogZmFsc2UsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIGZvY3VzYWJsZUVsZW1lbnRzOiAnaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCB0ZXh0YXJlYSwgYnV0dG9uLCB2aWRlbywgbGFiZWwnLFxuICAvLyBPdmVycmlkZXNcbiAgd2lkdGg6IG51bGwsXG4gIGhlaWdodDogbnVsbCxcbiAgLy9cbiAgcHJldmVudEludGVyYWN0aW9uT25UcmFuc2l0aW9uOiBmYWxzZSxcbiAgLy8gc3NyXG4gIHVzZXJBZ2VudDogbnVsbCxcbiAgdXJsOiBudWxsLFxuICAvLyBUbyBzdXBwb3J0IGlPUydzIHN3aXBlLXRvLWdvLWJhY2sgZ2VzdHVyZSAod2hlbiBiZWluZyB1c2VkIGluLWFwcCkuXG4gIGVkZ2VTd2lwZURldGVjdGlvbjogZmFsc2UsXG4gIGVkZ2VTd2lwZVRocmVzaG9sZDogMjAsXG4gIC8vIEZyZWUgbW9kZVxuICBmcmVlTW9kZTogZmFsc2UsXG4gIGZyZWVNb2RlTW9tZW50dW06IHRydWUsXG4gIGZyZWVNb2RlTW9tZW50dW1SYXRpbzogMSxcbiAgZnJlZU1vZGVNb21lbnR1bUJvdW5jZTogdHJ1ZSxcbiAgZnJlZU1vZGVNb21lbnR1bUJvdW5jZVJhdGlvOiAxLFxuICBmcmVlTW9kZU1vbWVudHVtVmVsb2NpdHlSYXRpbzogMSxcbiAgZnJlZU1vZGVTdGlja3k6IGZhbHNlLFxuICBmcmVlTW9kZU1pbmltdW1WZWxvY2l0eTogMC4wMixcbiAgLy8gQXV0b2hlaWdodFxuICBhdXRvSGVpZ2h0OiBmYWxzZSxcbiAgLy8gU2V0IHdyYXBwZXIgd2lkdGhcbiAgc2V0V3JhcHBlclNpemU6IGZhbHNlLFxuICAvLyBWaXJ0dWFsIFRyYW5zbGF0ZVxuICB2aXJ0dWFsVHJhbnNsYXRlOiBmYWxzZSxcbiAgLy8gRWZmZWN0c1xuICBlZmZlY3Q6ICdzbGlkZScsXG4gIC8vICdzbGlkZScgb3IgJ2ZhZGUnIG9yICdjdWJlJyBvciAnY292ZXJmbG93JyBvciAnZmxpcCdcbiAgLy8gQnJlYWtwb2ludHNcbiAgYnJlYWtwb2ludHM6IHVuZGVmaW5lZCxcbiAgYnJlYWtwb2ludHNCYXNlOiAnd2luZG93JyxcbiAgLy8gU2xpZGVzIGdyaWRcbiAgc3BhY2VCZXR3ZWVuOiAwLFxuICBzbGlkZXNQZXJWaWV3OiAxLFxuICBzbGlkZXNQZXJDb2x1bW46IDEsXG4gIHNsaWRlc1BlckNvbHVtbkZpbGw6ICdjb2x1bW4nLFxuICBzbGlkZXNQZXJHcm91cDogMSxcbiAgc2xpZGVzUGVyR3JvdXBTa2lwOiAwLFxuICBjZW50ZXJlZFNsaWRlczogZmFsc2UsXG4gIGNlbnRlcmVkU2xpZGVzQm91bmRzOiBmYWxzZSxcbiAgc2xpZGVzT2Zmc2V0QmVmb3JlOiAwLFxuICAvLyBpbiBweFxuICBzbGlkZXNPZmZzZXRBZnRlcjogMCxcbiAgLy8gaW4gcHhcbiAgbm9ybWFsaXplU2xpZGVJbmRleDogdHJ1ZSxcbiAgY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiBmYWxzZSxcbiAgLy8gRGlzYWJsZSBzd2lwZXIgYW5kIGhpZGUgbmF2aWdhdGlvbiB3aGVuIGNvbnRhaW5lciBub3Qgb3ZlcmZsb3dcbiAgd2F0Y2hPdmVyZmxvdzogZmFsc2UsXG4gIC8vIFJvdW5kIGxlbmd0aFxuICByb3VuZExlbmd0aHM6IGZhbHNlLFxuICAvLyBUb3VjaGVzXG4gIHRvdWNoUmF0aW86IDEsXG4gIHRvdWNoQW5nbGU6IDQ1LFxuICBzaW11bGF0ZVRvdWNoOiB0cnVlLFxuICBzaG9ydFN3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlczogdHJ1ZSxcbiAgbG9uZ1N3aXBlc1JhdGlvOiAwLjUsXG4gIGxvbmdTd2lwZXNNczogMzAwLFxuICBmb2xsb3dGaW5nZXI6IHRydWUsXG4gIGFsbG93VG91Y2hNb3ZlOiB0cnVlLFxuICB0aHJlc2hvbGQ6IDAsXG4gIHRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbjogZmFsc2UsXG4gIHRvdWNoU3RhcnRQcmV2ZW50RGVmYXVsdDogdHJ1ZSxcbiAgdG91Y2hTdGFydEZvcmNlUHJldmVudERlZmF1bHQ6IGZhbHNlLFxuICB0b3VjaFJlbGVhc2VPbkVkZ2VzOiBmYWxzZSxcbiAgLy8gVW5pcXVlIE5hdmlnYXRpb24gRWxlbWVudHNcbiAgdW5pcXVlTmF2RWxlbWVudHM6IHRydWUsXG4gIC8vIFJlc2lzdGFuY2VcbiAgcmVzaXN0YW5jZTogdHJ1ZSxcbiAgcmVzaXN0YW5jZVJhdGlvOiAwLjg1LFxuICAvLyBQcm9ncmVzc1xuICB3YXRjaFNsaWRlc1Byb2dyZXNzOiBmYWxzZSxcbiAgd2F0Y2hTbGlkZXNWaXNpYmlsaXR5OiBmYWxzZSxcbiAgLy8gQ3Vyc29yXG4gIGdyYWJDdXJzb3I6IGZhbHNlLFxuICAvLyBDbGlja3NcbiAgcHJldmVudENsaWNrczogdHJ1ZSxcbiAgcHJldmVudENsaWNrc1Byb3BhZ2F0aW9uOiB0cnVlLFxuICBzbGlkZVRvQ2xpY2tlZFNsaWRlOiBmYWxzZSxcbiAgLy8gSW1hZ2VzXG4gIHByZWxvYWRJbWFnZXM6IHRydWUsXG4gIHVwZGF0ZU9uSW1hZ2VzUmVhZHk6IHRydWUsXG4gIC8vIGxvb3BcbiAgbG9vcDogZmFsc2UsXG4gIGxvb3BBZGRpdGlvbmFsU2xpZGVzOiAwLFxuICBsb29wZWRTbGlkZXM6IG51bGwsXG4gIGxvb3BGaWxsR3JvdXBXaXRoQmxhbms6IGZhbHNlLFxuICBsb29wUHJldmVudHNTbGlkZTogdHJ1ZSxcbiAgLy8gU3dpcGluZy9ubyBzd2lwaW5nXG4gIGFsbG93U2xpZGVQcmV2OiB0cnVlLFxuICBhbGxvd1NsaWRlTmV4dDogdHJ1ZSxcbiAgc3dpcGVIYW5kbGVyOiBudWxsLFxuICAvLyAnLnN3aXBlLWhhbmRsZXInLFxuICBub1N3aXBpbmc6IHRydWUsXG4gIG5vU3dpcGluZ0NsYXNzOiAnc3dpcGVyLW5vLXN3aXBpbmcnLFxuICBub1N3aXBpbmdTZWxlY3RvcjogbnVsbCxcbiAgLy8gUGFzc2l2ZSBMaXN0ZW5lcnNcbiAgcGFzc2l2ZUxpc3RlbmVyczogdHJ1ZSxcbiAgLy8gTlNcbiAgY29udGFpbmVyTW9kaWZpZXJDbGFzczogJ3N3aXBlci1jb250YWluZXItJyxcbiAgLy8gTkVXXG4gIHNsaWRlQ2xhc3M6ICdzd2lwZXItc2xpZGUnLFxuICBzbGlkZUJsYW5rQ2xhc3M6ICdzd2lwZXItc2xpZGUtaW52aXNpYmxlLWJsYW5rJyxcbiAgc2xpZGVBY3RpdmVDbGFzczogJ3N3aXBlci1zbGlkZS1hY3RpdmUnLFxuICBzbGlkZUR1cGxpY2F0ZUFjdGl2ZUNsYXNzOiAnc3dpcGVyLXNsaWRlLWR1cGxpY2F0ZS1hY3RpdmUnLFxuICBzbGlkZVZpc2libGVDbGFzczogJ3N3aXBlci1zbGlkZS12aXNpYmxlJyxcbiAgc2xpZGVEdXBsaWNhdGVDbGFzczogJ3N3aXBlci1zbGlkZS1kdXBsaWNhdGUnLFxuICBzbGlkZU5leHRDbGFzczogJ3N3aXBlci1zbGlkZS1uZXh0JyxcbiAgc2xpZGVEdXBsaWNhdGVOZXh0Q2xhc3M6ICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLW5leHQnLFxuICBzbGlkZVByZXZDbGFzczogJ3N3aXBlci1zbGlkZS1wcmV2JyxcbiAgc2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3M6ICdzd2lwZXItc2xpZGUtZHVwbGljYXRlLXByZXYnLFxuICB3cmFwcGVyQ2xhc3M6ICdzd2lwZXItd3JhcHBlcicsXG4gIC8vIENhbGxiYWNrc1xuICBydW5DYWxsYmFja3NPbkluaXQ6IHRydWUsXG4gIC8vIEludGVybmFsc1xuICBfZW1pdENsYXNzZXM6IGZhbHNlXG59OyIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuLyogZXNsaW50IG5vLXBhcmFtLXJlYXNzaWduOiBcIm9mZlwiICovXG5pbXBvcnQgeyBnZXREb2N1bWVudCB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGV4dGVuZCwgbm93LCBkZWxldGVQcm9wcyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmltcG9ydCB7IGdldFN1cHBvcnQgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtc3VwcG9ydCc7XG5pbXBvcnQgeyBnZXREZXZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtZGV2aWNlJztcbmltcG9ydCB7IGdldEJyb3dzZXIgfSBmcm9tICcuLi8uLi91dGlscy9nZXQtYnJvd3Nlcic7XG5pbXBvcnQgUmVzaXplIGZyb20gJy4uLy4uL21vZHVsZXMvcmVzaXplL3Jlc2l6ZSc7XG5pbXBvcnQgT2JzZXJ2ZXIgZnJvbSAnLi4vLi4vbW9kdWxlcy9vYnNlcnZlci9vYnNlcnZlcic7XG5pbXBvcnQgbW9kdWxhciBmcm9tICcuL21vZHVsYXInO1xuaW1wb3J0IGV2ZW50c0VtaXR0ZXIgZnJvbSAnLi9ldmVudHMtZW1pdHRlcic7XG5pbXBvcnQgdXBkYXRlIGZyb20gJy4vdXBkYXRlL2luZGV4JztcbmltcG9ydCB0cmFuc2xhdGUgZnJvbSAnLi90cmFuc2xhdGUvaW5kZXgnO1xuaW1wb3J0IHRyYW5zaXRpb24gZnJvbSAnLi90cmFuc2l0aW9uL2luZGV4JztcbmltcG9ydCBzbGlkZSBmcm9tICcuL3NsaWRlL2luZGV4JztcbmltcG9ydCBsb29wIGZyb20gJy4vbG9vcC9pbmRleCc7XG5pbXBvcnQgZ3JhYkN1cnNvciBmcm9tICcuL2dyYWItY3Vyc29yL2luZGV4JztcbmltcG9ydCBtYW5pcHVsYXRpb24gZnJvbSAnLi9tYW5pcHVsYXRpb24vaW5kZXgnO1xuaW1wb3J0IGV2ZW50cyBmcm9tICcuL2V2ZW50cy9pbmRleCc7XG5pbXBvcnQgYnJlYWtwb2ludHMgZnJvbSAnLi9icmVha3BvaW50cy9pbmRleCc7XG5pbXBvcnQgY2xhc3NlcyBmcm9tICcuL2NsYXNzZXMvaW5kZXgnO1xuaW1wb3J0IGltYWdlcyBmcm9tICcuL2ltYWdlcy9pbmRleCc7XG5pbXBvcnQgY2hlY2tPdmVyZmxvdyBmcm9tICcuL2NoZWNrLW92ZXJmbG93L2luZGV4JztcbmltcG9ydCBkZWZhdWx0cyBmcm9tICcuL2RlZmF1bHRzJztcbnZhciBwcm90b3R5cGVzID0ge1xuICBtb2R1bGFyOiBtb2R1bGFyLFxuICBldmVudHNFbWl0dGVyOiBldmVudHNFbWl0dGVyLFxuICB1cGRhdGU6IHVwZGF0ZSxcbiAgdHJhbnNsYXRlOiB0cmFuc2xhdGUsXG4gIHRyYW5zaXRpb246IHRyYW5zaXRpb24sXG4gIHNsaWRlOiBzbGlkZSxcbiAgbG9vcDogbG9vcCxcbiAgZ3JhYkN1cnNvcjogZ3JhYkN1cnNvcixcbiAgbWFuaXB1bGF0aW9uOiBtYW5pcHVsYXRpb24sXG4gIGV2ZW50czogZXZlbnRzLFxuICBicmVha3BvaW50czogYnJlYWtwb2ludHMsXG4gIGNoZWNrT3ZlcmZsb3c6IGNoZWNrT3ZlcmZsb3csXG4gIGNsYXNzZXM6IGNsYXNzZXMsXG4gIGltYWdlczogaW1hZ2VzXG59O1xudmFyIGV4dGVuZGVkRGVmYXVsdHMgPSB7fTtcblxudmFyIFN3aXBlciA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIFN3aXBlcigpIHtcbiAgICB2YXIgZWw7XG4gICAgdmFyIHBhcmFtcztcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgYXJnc1swXS5jb25zdHJ1Y3RvciAmJiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJnc1swXSkuc2xpY2UoOCwgLTEpID09PSAnT2JqZWN0Jykge1xuICAgICAgcGFyYW1zID0gYXJnc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgZWwgPSBhcmdzWzBdO1xuICAgICAgcGFyYW1zID0gYXJnc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoIXBhcmFtcykgcGFyYW1zID0ge307XG4gICAgcGFyYW1zID0gZXh0ZW5kKHt9LCBwYXJhbXMpO1xuICAgIGlmIChlbCAmJiAhcGFyYW1zLmVsKSBwYXJhbXMuZWwgPSBlbDtcblxuICAgIGlmIChwYXJhbXMuZWwgJiYgJChwYXJhbXMuZWwpLmxlbmd0aCA+IDEpIHtcbiAgICAgIHZhciBzd2lwZXJzID0gW107XG4gICAgICAkKHBhcmFtcy5lbCkuZWFjaChmdW5jdGlvbiAoY29udGFpbmVyRWwpIHtcbiAgICAgICAgdmFyIG5ld1BhcmFtcyA9IGV4dGVuZCh7fSwgcGFyYW1zLCB7XG4gICAgICAgICAgZWw6IGNvbnRhaW5lckVsXG4gICAgICAgIH0pO1xuICAgICAgICBzd2lwZXJzLnB1c2gobmV3IFN3aXBlcihuZXdQYXJhbXMpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN3aXBlcnM7XG4gICAgfSAvLyBTd2lwZXIgSW5zdGFuY2VcblxuXG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgc3dpcGVyLl9fc3dpcGVyX18gPSB0cnVlO1xuICAgIHN3aXBlci5zdXBwb3J0ID0gZ2V0U3VwcG9ydCgpO1xuICAgIHN3aXBlci5kZXZpY2UgPSBnZXREZXZpY2Uoe1xuICAgICAgdXNlckFnZW50OiBwYXJhbXMudXNlckFnZW50XG4gICAgfSk7XG4gICAgc3dpcGVyLmJyb3dzZXIgPSBnZXRCcm93c2VyKCk7XG4gICAgc3dpcGVyLmV2ZW50c0xpc3RlbmVycyA9IHt9O1xuICAgIHN3aXBlci5ldmVudHNBbnlMaXN0ZW5lcnMgPSBbXTtcblxuICAgIGlmICh0eXBlb2Ygc3dpcGVyLm1vZHVsZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBzd2lwZXIubW9kdWxlcyA9IHt9O1xuICAgIH1cblxuICAgIE9iamVjdC5rZXlzKHN3aXBlci5tb2R1bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChtb2R1bGVOYW1lKSB7XG4gICAgICB2YXIgbW9kdWxlID0gc3dpcGVyLm1vZHVsZXNbbW9kdWxlTmFtZV07XG5cbiAgICAgIGlmIChtb2R1bGUucGFyYW1zKSB7XG4gICAgICAgIHZhciBtb2R1bGVQYXJhbU5hbWUgPSBPYmplY3Qua2V5cyhtb2R1bGUucGFyYW1zKVswXTtcbiAgICAgICAgdmFyIG1vZHVsZVBhcmFtcyA9IG1vZHVsZS5wYXJhbXNbbW9kdWxlUGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiBtb2R1bGVQYXJhbXMgIT09ICdvYmplY3QnIHx8IG1vZHVsZVBhcmFtcyA9PT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChbJ25hdmlnYXRpb24nLCAncGFnaW5hdGlvbicsICdzY3JvbGxiYXInXS5pbmRleE9mKG1vZHVsZVBhcmFtTmFtZSkgPj0gMCAmJiBwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID0ge1xuICAgICAgICAgICAgYXV0bzogdHJ1ZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIShtb2R1bGVQYXJhbU5hbWUgaW4gcGFyYW1zICYmICdlbmFibGVkJyBpbiBtb2R1bGVQYXJhbXMpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdID09PSB0cnVlKSB7XG4gICAgICAgICAgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPSB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPT09ICdvYmplY3QnICYmICEoJ2VuYWJsZWQnIGluIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdKSkge1xuICAgICAgICAgIHBhcmFtc1ttb2R1bGVQYXJhbU5hbWVdLmVuYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFwYXJhbXNbbW9kdWxlUGFyYW1OYW1lXSkgcGFyYW1zW21vZHVsZVBhcmFtTmFtZV0gPSB7XG4gICAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTsgLy8gRXh0ZW5kIGRlZmF1bHRzIHdpdGggbW9kdWxlcyBwYXJhbXNcblxuICAgIHZhciBzd2lwZXJQYXJhbXMgPSBleHRlbmQoe30sIGRlZmF1bHRzKTtcbiAgICBzd2lwZXIudXNlUGFyYW1zKHN3aXBlclBhcmFtcyk7IC8vIEV4dGVuZCBkZWZhdWx0cyB3aXRoIHBhc3NlZCBwYXJhbXNcblxuICAgIHN3aXBlci5wYXJhbXMgPSBleHRlbmQoe30sIHN3aXBlclBhcmFtcywgZXh0ZW5kZWREZWZhdWx0cywgcGFyYW1zKTtcbiAgICBzd2lwZXIub3JpZ2luYWxQYXJhbXMgPSBleHRlbmQoe30sIHN3aXBlci5wYXJhbXMpO1xuICAgIHN3aXBlci5wYXNzZWRQYXJhbXMgPSBleHRlbmQoe30sIHBhcmFtcyk7IC8vIGFkZCBldmVudCBsaXN0ZW5lcnNcblxuICAgIGlmIChzd2lwZXIucGFyYW1zICYmIHN3aXBlci5wYXJhbXMub24pIHtcbiAgICAgIE9iamVjdC5rZXlzKHN3aXBlci5wYXJhbXMub24pLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgICBzd2lwZXIub24oZXZlbnROYW1lLCBzd2lwZXIucGFyYW1zLm9uW2V2ZW50TmFtZV0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMgJiYgc3dpcGVyLnBhcmFtcy5vbkFueSkge1xuICAgICAgc3dpcGVyLm9uQW55KHN3aXBlci5wYXJhbXMub25BbnkpO1xuICAgIH0gLy8gU2F2ZSBEb20gbGliXG5cblxuICAgIHN3aXBlci4kID0gJDsgLy8gRXh0ZW5kIFN3aXBlclxuXG4gICAgZXh0ZW5kKHN3aXBlciwge1xuICAgICAgZW5hYmxlZDogc3dpcGVyLnBhcmFtcy5lbmFibGVkLFxuICAgICAgZWw6IGVsLFxuICAgICAgLy8gQ2xhc3Nlc1xuICAgICAgY2xhc3NOYW1lczogW10sXG4gICAgICAvLyBTbGlkZXNcbiAgICAgIHNsaWRlczogJCgpLFxuICAgICAgc2xpZGVzR3JpZDogW10sXG4gICAgICBzbmFwR3JpZDogW10sXG4gICAgICBzbGlkZXNTaXplc0dyaWQ6IFtdLFxuICAgICAgLy8gaXNEaXJlY3Rpb25cbiAgICAgIGlzSG9yaXpvbnRhbDogZnVuY3Rpb24gaXNIb3Jpem9udGFsKCkge1xuICAgICAgICByZXR1cm4gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJztcbiAgICAgIH0sXG4gICAgICBpc1ZlcnRpY2FsOiBmdW5jdGlvbiBpc1ZlcnRpY2FsKCkge1xuICAgICAgICByZXR1cm4gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCc7XG4gICAgICB9LFxuICAgICAgLy8gSW5kZXhlc1xuICAgICAgYWN0aXZlSW5kZXg6IDAsXG4gICAgICByZWFsSW5kZXg6IDAsXG4gICAgICAvL1xuICAgICAgaXNCZWdpbm5pbmc6IHRydWUsXG4gICAgICBpc0VuZDogZmFsc2UsXG4gICAgICAvLyBQcm9wc1xuICAgICAgdHJhbnNsYXRlOiAwLFxuICAgICAgcHJldmlvdXNUcmFuc2xhdGU6IDAsXG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHZlbG9jaXR5OiAwLFxuICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgIC8vIExvY2tzXG4gICAgICBhbGxvd1NsaWRlTmV4dDogc3dpcGVyLnBhcmFtcy5hbGxvd1NsaWRlTmV4dCxcbiAgICAgIGFsbG93U2xpZGVQcmV2OiBzd2lwZXIucGFyYW1zLmFsbG93U2xpZGVQcmV2LFxuICAgICAgLy8gVG91Y2ggRXZlbnRzXG4gICAgICB0b3VjaEV2ZW50czogZnVuY3Rpb24gdG91Y2hFdmVudHMoKSB7XG4gICAgICAgIHZhciB0b3VjaCA9IFsndG91Y2hzdGFydCcsICd0b3VjaG1vdmUnLCAndG91Y2hlbmQnLCAndG91Y2hjYW5jZWwnXTtcbiAgICAgICAgdmFyIGRlc2t0b3AgPSBbJ21vdXNlZG93bicsICdtb3VzZW1vdmUnLCAnbW91c2V1cCddO1xuXG4gICAgICAgIGlmIChzd2lwZXIuc3VwcG9ydC5wb2ludGVyRXZlbnRzKSB7XG4gICAgICAgICAgZGVza3RvcCA9IFsncG9pbnRlcmRvd24nLCAncG9pbnRlcm1vdmUnLCAncG9pbnRlcnVwJ107XG4gICAgICAgIH1cblxuICAgICAgICBzd2lwZXIudG91Y2hFdmVudHNUb3VjaCA9IHtcbiAgICAgICAgICBzdGFydDogdG91Y2hbMF0sXG4gICAgICAgICAgbW92ZTogdG91Y2hbMV0sXG4gICAgICAgICAgZW5kOiB0b3VjaFsyXSxcbiAgICAgICAgICBjYW5jZWw6IHRvdWNoWzNdXG4gICAgICAgIH07XG4gICAgICAgIHN3aXBlci50b3VjaEV2ZW50c0Rlc2t0b3AgPSB7XG4gICAgICAgICAgc3RhcnQ6IGRlc2t0b3BbMF0sXG4gICAgICAgICAgbW92ZTogZGVza3RvcFsxXSxcbiAgICAgICAgICBlbmQ6IGRlc2t0b3BbMl1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHN3aXBlci5zdXBwb3J0LnRvdWNoIHx8ICFzd2lwZXIucGFyYW1zLnNpbXVsYXRlVG91Y2ggPyBzd2lwZXIudG91Y2hFdmVudHNUb3VjaCA6IHN3aXBlci50b3VjaEV2ZW50c0Rlc2t0b3A7XG4gICAgICB9KCksXG4gICAgICB0b3VjaEV2ZW50c0RhdGE6IHtcbiAgICAgICAgaXNUb3VjaGVkOiB1bmRlZmluZWQsXG4gICAgICAgIGlzTW92ZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgYWxsb3dUb3VjaENhbGxiYWNrczogdW5kZWZpbmVkLFxuICAgICAgICB0b3VjaFN0YXJ0VGltZTogdW5kZWZpbmVkLFxuICAgICAgICBpc1Njcm9sbGluZzogdW5kZWZpbmVkLFxuICAgICAgICBjdXJyZW50VHJhbnNsYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0VHJhbnNsYXRlOiB1bmRlZmluZWQsXG4gICAgICAgIGFsbG93VGhyZXNob2xkTW92ZTogdW5kZWZpbmVkLFxuICAgICAgICAvLyBGb3JtIGVsZW1lbnRzIHRvIG1hdGNoXG4gICAgICAgIGZvY3VzYWJsZUVsZW1lbnRzOiBzd2lwZXIucGFyYW1zLmZvY3VzYWJsZUVsZW1lbnRzLFxuICAgICAgICAvLyBMYXN0IGNsaWNrIHRpbWVcbiAgICAgICAgbGFzdENsaWNrVGltZTogbm93KCksXG4gICAgICAgIGNsaWNrVGltZW91dDogdW5kZWZpbmVkLFxuICAgICAgICAvLyBWZWxvY2l0aWVzXG4gICAgICAgIHZlbG9jaXRpZXM6IFtdLFxuICAgICAgICBhbGxvd01vbWVudHVtQm91bmNlOiB1bmRlZmluZWQsXG4gICAgICAgIGlzVG91Y2hFdmVudDogdW5kZWZpbmVkLFxuICAgICAgICBzdGFydE1vdmluZzogdW5kZWZpbmVkXG4gICAgICB9LFxuICAgICAgLy8gQ2xpY2tzXG4gICAgICBhbGxvd0NsaWNrOiB0cnVlLFxuICAgICAgLy8gVG91Y2hlc1xuICAgICAgYWxsb3dUb3VjaE1vdmU6IHN3aXBlci5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsXG4gICAgICB0b3VjaGVzOiB7XG4gICAgICAgIHN0YXJ0WDogMCxcbiAgICAgICAgc3RhcnRZOiAwLFxuICAgICAgICBjdXJyZW50WDogMCxcbiAgICAgICAgY3VycmVudFk6IDAsXG4gICAgICAgIGRpZmY6IDBcbiAgICAgIH0sXG4gICAgICAvLyBJbWFnZXNcbiAgICAgIGltYWdlc1RvTG9hZDogW10sXG4gICAgICBpbWFnZXNMb2FkZWQ6IDBcbiAgICB9KTsgLy8gSW5zdGFsbCBNb2R1bGVzXG5cbiAgICBzd2lwZXIudXNlTW9kdWxlcygpO1xuICAgIHN3aXBlci5lbWl0KCdfc3dpcGVyJyk7IC8vIEluaXRcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmluaXQpIHtcbiAgICAgIHN3aXBlci5pbml0KCk7XG4gICAgfSAvLyBSZXR1cm4gYXBwIGluc3RhbmNlXG5cblxuICAgIHJldHVybiBzd2lwZXI7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gU3dpcGVyLnByb3RvdHlwZTtcblxuICBfcHJvdG8uZW5hYmxlID0gZnVuY3Rpb24gZW5hYmxlKCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuZW5hYmxlZCkgcmV0dXJuO1xuICAgIHN3aXBlci5lbmFibGVkID0gdHJ1ZTtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci5zZXRHcmFiQ3Vyc29yKCk7XG4gICAgfVxuXG4gICAgc3dpcGVyLmVtaXQoJ2VuYWJsZScpO1xuICB9O1xuXG4gIF9wcm90by5kaXNhYmxlID0gZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSByZXR1cm47XG4gICAgc3dpcGVyLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLmdyYWJDdXJzb3IpIHtcbiAgICAgIHN3aXBlci51bnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgnZGlzYWJsZScpO1xuICB9O1xuXG4gIF9wcm90by5zZXRQcm9ncmVzcyA9IGZ1bmN0aW9uIHNldFByb2dyZXNzKHByb2dyZXNzLCBzcGVlZCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgocHJvZ3Jlc3MsIDApLCAxKTtcbiAgICB2YXIgbWluID0gc3dpcGVyLm1pblRyYW5zbGF0ZSgpO1xuICAgIHZhciBtYXggPSBzd2lwZXIubWF4VHJhbnNsYXRlKCk7XG4gICAgdmFyIGN1cnJlbnQgPSAobWF4IC0gbWluKSAqIHByb2dyZXNzICsgbWluO1xuICAgIHN3aXBlci50cmFuc2xhdGVUbyhjdXJyZW50LCB0eXBlb2Ygc3BlZWQgPT09ICd1bmRlZmluZWQnID8gMCA6IHNwZWVkKTtcbiAgICBzd2lwZXIudXBkYXRlQWN0aXZlSW5kZXgoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICB9O1xuXG4gIF9wcm90by5lbWl0Q29udGFpbmVyQ2xhc3NlcyA9IGZ1bmN0aW9uIGVtaXRDb250YWluZXJDbGFzc2VzKCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIGlmICghc3dpcGVyLnBhcmFtcy5fZW1pdENsYXNzZXMgfHwgIXN3aXBlci5lbCkgcmV0dXJuO1xuICAgIHZhciBjbGFzc2VzID0gc3dpcGVyLmVsLmNsYXNzTmFtZS5zcGxpdCgnICcpLmZpbHRlcihmdW5jdGlvbiAoY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lLmluZGV4T2YoJ3N3aXBlci1jb250YWluZXInKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MpID09PSAwO1xuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdfY29udGFpbmVyQ2xhc3NlcycsIGNsYXNzZXMuam9pbignICcpKTtcbiAgfTtcblxuICBfcHJvdG8uZ2V0U2xpZGVDbGFzc2VzID0gZnVuY3Rpb24gZ2V0U2xpZGVDbGFzc2VzKHNsaWRlRWwpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICByZXR1cm4gc2xpZGVFbC5jbGFzc05hbWUuc3BsaXQoJyAnKS5maWx0ZXIoZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZS5pbmRleE9mKCdzd2lwZXItc2xpZGUnKSA9PT0gMCB8fCBjbGFzc05hbWUuaW5kZXhPZihzd2lwZXIucGFyYW1zLnNsaWRlQ2xhc3MpID09PSAwO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfTtcblxuICBfcHJvdG8uZW1pdFNsaWRlc0NsYXNzZXMgPSBmdW5jdGlvbiBlbWl0U2xpZGVzQ2xhc3NlcygpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoIXN3aXBlci5wYXJhbXMuX2VtaXRDbGFzc2VzIHx8ICFzd2lwZXIuZWwpIHJldHVybjtcbiAgICB2YXIgdXBkYXRlcyA9IFtdO1xuICAgIHN3aXBlci5zbGlkZXMuZWFjaChmdW5jdGlvbiAoc2xpZGVFbCkge1xuICAgICAgdmFyIGNsYXNzTmFtZXMgPSBzd2lwZXIuZ2V0U2xpZGVDbGFzc2VzKHNsaWRlRWwpO1xuICAgICAgdXBkYXRlcy5wdXNoKHtcbiAgICAgICAgc2xpZGVFbDogc2xpZGVFbCxcbiAgICAgICAgY2xhc3NOYW1lczogY2xhc3NOYW1lc1xuICAgICAgfSk7XG4gICAgICBzd2lwZXIuZW1pdCgnX3NsaWRlQ2xhc3MnLCBzbGlkZUVsLCBjbGFzc05hbWVzKTtcbiAgICB9KTtcbiAgICBzd2lwZXIuZW1pdCgnX3NsaWRlQ2xhc3NlcycsIHVwZGF0ZXMpO1xuICB9O1xuXG4gIF9wcm90by5zbGlkZXNQZXJWaWV3RHluYW1pYyA9IGZ1bmN0aW9uIHNsaWRlc1BlclZpZXdEeW5hbWljKCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgICBzbGlkZXMgPSBzd2lwZXIuc2xpZGVzLFxuICAgICAgICBzbGlkZXNHcmlkID0gc3dpcGVyLnNsaWRlc0dyaWQsXG4gICAgICAgIHN3aXBlclNpemUgPSBzd2lwZXIuc2l6ZSxcbiAgICAgICAgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gICAgdmFyIHNwdiA9IDE7XG5cbiAgICBpZiAocGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICB2YXIgc2xpZGVTaXplID0gc2xpZGVzW2FjdGl2ZUluZGV4XS5zd2lwZXJTbGlkZVNpemU7XG4gICAgICB2YXIgYnJlYWtMb29wO1xuXG4gICAgICBmb3IgKHZhciBpID0gYWN0aXZlSW5kZXggKyAxOyBpIDwgc2xpZGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbaV0gJiYgIWJyZWFrTG9vcCkge1xuICAgICAgICAgIHNsaWRlU2l6ZSArPSBzbGlkZXNbaV0uc3dpcGVyU2xpZGVTaXplO1xuICAgICAgICAgIHNwdiArPSAxO1xuICAgICAgICAgIGlmIChzbGlkZVNpemUgPiBzd2lwZXJTaXplKSBicmVha0xvb3AgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIF9pID0gYWN0aXZlSW5kZXggLSAxOyBfaSA+PSAwOyBfaSAtPSAxKSB7XG4gICAgICAgIGlmIChzbGlkZXNbX2ldICYmICFicmVha0xvb3ApIHtcbiAgICAgICAgICBzbGlkZVNpemUgKz0gc2xpZGVzW19pXS5zd2lwZXJTbGlkZVNpemU7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgICAgaWYgKHNsaWRlU2l6ZSA+IHN3aXBlclNpemUpIGJyZWFrTG9vcCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgX2kyID0gYWN0aXZlSW5kZXggKyAxOyBfaTIgPCBzbGlkZXMubGVuZ3RoOyBfaTIgKz0gMSkge1xuICAgICAgICBpZiAoc2xpZGVzR3JpZFtfaTJdIC0gc2xpZGVzR3JpZFthY3RpdmVJbmRleF0gPCBzd2lwZXJTaXplKSB7XG4gICAgICAgICAgc3B2ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3B2O1xuICB9O1xuXG4gIF9wcm90by51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgaWYgKCFzd2lwZXIgfHwgc3dpcGVyLmRlc3Ryb3llZCkgcmV0dXJuO1xuICAgIHZhciBzbmFwR3JpZCA9IHN3aXBlci5zbmFwR3JpZCxcbiAgICAgICAgcGFyYW1zID0gc3dpcGVyLnBhcmFtczsgLy8gQnJlYWtwb2ludHNcblxuICAgIGlmIChwYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICAgIHN3aXBlci5zZXRCcmVha3BvaW50KCk7XG4gICAgfVxuXG4gICAgc3dpcGVyLnVwZGF0ZVNpemUoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgc3dpcGVyLnVwZGF0ZVByb2dyZXNzKCk7XG4gICAgc3dpcGVyLnVwZGF0ZVNsaWRlc0NsYXNzZXMoKTtcblxuICAgIGZ1bmN0aW9uIHNldFRyYW5zbGF0ZSgpIHtcbiAgICAgIHZhciB0cmFuc2xhdGVWYWx1ZSA9IHN3aXBlci5ydGxUcmFuc2xhdGUgPyBzd2lwZXIudHJhbnNsYXRlICogLTEgOiBzd2lwZXIudHJhbnNsYXRlO1xuICAgICAgdmFyIG5ld1RyYW5zbGF0ZSA9IE1hdGgubWluKE1hdGgubWF4KHRyYW5zbGF0ZVZhbHVlLCBzd2lwZXIubWF4VHJhbnNsYXRlKCkpLCBzd2lwZXIubWluVHJhbnNsYXRlKCkpO1xuICAgICAgc3dpcGVyLnNldFRyYW5zbGF0ZShuZXdUcmFuc2xhdGUpO1xuICAgICAgc3dpcGVyLnVwZGF0ZUFjdGl2ZUluZGV4KCk7XG4gICAgICBzd2lwZXIudXBkYXRlU2xpZGVzQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIHZhciB0cmFuc2xhdGVkO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUpIHtcbiAgICAgIHNldFRyYW5zbGF0ZSgpO1xuXG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgICAgIHN3aXBlci51cGRhdGVBdXRvSGVpZ2h0KCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICgoc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID09PSAnYXV0bycgfHwgc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJWaWV3ID4gMSkgJiYgc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmNlbnRlcmVkU2xpZGVzKSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuc2xpZGVzLmxlbmd0aCAtIDEsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zbGF0ZWQgPSBzd2lwZXIuc2xpZGVUbyhzd2lwZXIuYWN0aXZlSW5kZXgsIDAsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCF0cmFuc2xhdGVkKSB7XG4gICAgICAgIHNldFRyYW5zbGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzbmFwR3JpZCAhPT0gc3dpcGVyLnNuYXBHcmlkKSB7XG4gICAgICBzd2lwZXIuY2hlY2tPdmVyZmxvdygpO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCd1cGRhdGUnKTtcbiAgfTtcblxuICBfcHJvdG8uY2hhbmdlRGlyZWN0aW9uID0gZnVuY3Rpb24gY2hhbmdlRGlyZWN0aW9uKG5ld0RpcmVjdGlvbiwgbmVlZFVwZGF0ZSkge1xuICAgIGlmIChuZWVkVXBkYXRlID09PSB2b2lkIDApIHtcbiAgICAgIG5lZWRVcGRhdGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBjdXJyZW50RGlyZWN0aW9uID0gc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb247XG5cbiAgICBpZiAoIW5ld0RpcmVjdGlvbikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBuZXdEaXJlY3Rpb24gPSBjdXJyZW50RGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICAgIH1cblxuICAgIGlmIChuZXdEaXJlY3Rpb24gPT09IGN1cnJlbnREaXJlY3Rpb24gfHwgbmV3RGlyZWN0aW9uICE9PSAnaG9yaXpvbnRhbCcgJiYgbmV3RGlyZWN0aW9uICE9PSAndmVydGljYWwnKSB7XG4gICAgICByZXR1cm4gc3dpcGVyO1xuICAgIH1cblxuICAgIHN3aXBlci4kZWwucmVtb3ZlQ2xhc3MoXCJcIiArIHN3aXBlci5wYXJhbXMuY29udGFpbmVyTW9kaWZpZXJDbGFzcyArIGN1cnJlbnREaXJlY3Rpb24pLmFkZENsYXNzKFwiXCIgKyBzd2lwZXIucGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyBuZXdEaXJlY3Rpb24pO1xuICAgIHN3aXBlci5lbWl0Q29udGFpbmVyQ2xhc3NlcygpO1xuICAgIHN3aXBlci5wYXJhbXMuZGlyZWN0aW9uID0gbmV3RGlyZWN0aW9uO1xuICAgIHN3aXBlci5zbGlkZXMuZWFjaChmdW5jdGlvbiAoc2xpZGVFbCkge1xuICAgICAgaWYgKG5ld0RpcmVjdGlvbiA9PT0gJ3ZlcnRpY2FsJykge1xuICAgICAgICBzbGlkZUVsLnN0eWxlLndpZHRoID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGlkZUVsLnN0eWxlLmhlaWdodCA9ICcnO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHN3aXBlci5lbWl0KCdjaGFuZ2VEaXJlY3Rpb24nKTtcbiAgICBpZiAobmVlZFVwZGF0ZSkgc3dpcGVyLnVwZGF0ZSgpO1xuICAgIHJldHVybiBzd2lwZXI7XG4gIH07XG5cbiAgX3Byb3RvLm1vdW50ID0gZnVuY3Rpb24gbW91bnQoZWwpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBpZiAoc3dpcGVyLm1vdW50ZWQpIHJldHVybiB0cnVlOyAvLyBGaW5kIGVsXG5cbiAgICB2YXIgJGVsID0gJChlbCB8fCBzd2lwZXIucGFyYW1zLmVsKTtcbiAgICBlbCA9ICRlbFswXTtcblxuICAgIGlmICghZWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBlbC5zd2lwZXIgPSBzd2lwZXI7XG5cbiAgICB2YXIgZ2V0V3JhcHBlclNlbGVjdG9yID0gZnVuY3Rpb24gZ2V0V3JhcHBlclNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIFwiLlwiICsgKHN3aXBlci5wYXJhbXMud3JhcHBlckNsYXNzIHx8ICcnKS50cmltKCkuc3BsaXQoJyAnKS5qb2luKCcuJyk7XG4gICAgfTtcblxuICAgIHZhciBnZXRXcmFwcGVyID0gZnVuY3Rpb24gZ2V0V3JhcHBlcigpIHtcbiAgICAgIGlmIChlbCAmJiBlbC5zaGFkb3dSb290ICYmIGVsLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcikge1xuICAgICAgICB2YXIgcmVzID0gJChlbC5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoZ2V0V3JhcHBlclNlbGVjdG9yKCkpKTsgLy8gQ2hpbGRyZW4gbmVlZHMgdG8gcmV0dXJuIHNsb3QgaXRlbXNcblxuICAgICAgICByZXMuY2hpbGRyZW4gPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgICAgIHJldHVybiAkZWwuY2hpbGRyZW4ob3B0aW9ucyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICRlbC5jaGlsZHJlbihnZXRXcmFwcGVyU2VsZWN0b3IoKSk7XG4gICAgfTsgLy8gRmluZCBXcmFwcGVyXG5cblxuICAgIHZhciAkd3JhcHBlckVsID0gZ2V0V3JhcHBlcigpO1xuXG4gICAgaWYgKCR3cmFwcGVyRWwubGVuZ3RoID09PSAwICYmIHN3aXBlci5wYXJhbXMuY3JlYXRlRWxlbWVudHMpIHtcbiAgICAgIHZhciBkb2N1bWVudCA9IGdldERvY3VtZW50KCk7XG4gICAgICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgJHdyYXBwZXJFbCA9ICQod3JhcHBlcik7XG4gICAgICB3cmFwcGVyLmNsYXNzTmFtZSA9IHN3aXBlci5wYXJhbXMud3JhcHBlckNsYXNzO1xuICAgICAgJGVsLmFwcGVuZCh3cmFwcGVyKTtcbiAgICAgICRlbC5jaGlsZHJlbihcIi5cIiArIHN3aXBlci5wYXJhbXMuc2xpZGVDbGFzcykuZWFjaChmdW5jdGlvbiAoc2xpZGVFbCkge1xuICAgICAgICAkd3JhcHBlckVsLmFwcGVuZChzbGlkZUVsKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGV4dGVuZChzd2lwZXIsIHtcbiAgICAgICRlbDogJGVsLFxuICAgICAgZWw6IGVsLFxuICAgICAgJHdyYXBwZXJFbDogJHdyYXBwZXJFbCxcbiAgICAgIHdyYXBwZXJFbDogJHdyYXBwZXJFbFswXSxcbiAgICAgIG1vdW50ZWQ6IHRydWUsXG4gICAgICAvLyBSVExcbiAgICAgIHJ0bDogZWwuZGlyLnRvTG93ZXJDYXNlKCkgPT09ICdydGwnIHx8ICRlbC5jc3MoJ2RpcmVjdGlvbicpID09PSAncnRsJyxcbiAgICAgIHJ0bFRyYW5zbGF0ZTogc3dpcGVyLnBhcmFtcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJyAmJiAoZWwuZGlyLnRvTG93ZXJDYXNlKCkgPT09ICdydGwnIHx8ICRlbC5jc3MoJ2RpcmVjdGlvbicpID09PSAncnRsJyksXG4gICAgICB3cm9uZ1JUTDogJHdyYXBwZXJFbC5jc3MoJ2Rpc3BsYXknKSA9PT0gJy13ZWJraXQtYm94J1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIF9wcm90by5pbml0ID0gZnVuY3Rpb24gaW5pdChlbCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIGlmIChzd2lwZXIuaW5pdGlhbGl6ZWQpIHJldHVybiBzd2lwZXI7XG4gICAgdmFyIG1vdW50ZWQgPSBzd2lwZXIubW91bnQoZWwpO1xuICAgIGlmIChtb3VudGVkID09PSBmYWxzZSkgcmV0dXJuIHN3aXBlcjtcbiAgICBzd2lwZXIuZW1pdCgnYmVmb3JlSW5pdCcpOyAvLyBTZXQgYnJlYWtwb2ludFxuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHMpIHtcbiAgICAgIHN3aXBlci5zZXRCcmVha3BvaW50KCk7XG4gICAgfSAvLyBBZGQgQ2xhc3Nlc1xuXG5cbiAgICBzd2lwZXIuYWRkQ2xhc3NlcygpOyAvLyBDcmVhdGUgbG9vcFxuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgICB9IC8vIFVwZGF0ZSBzaXplXG5cblxuICAgIHN3aXBlci51cGRhdGVTaXplKCk7IC8vIFVwZGF0ZSBzbGlkZXNcblxuICAgIHN3aXBlci51cGRhdGVTbGlkZXMoKTtcblxuICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cpIHtcbiAgICAgIHN3aXBlci5jaGVja092ZXJmbG93KCk7XG4gICAgfSAvLyBTZXQgR3JhYiBDdXJzb3JcblxuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMuZ3JhYkN1cnNvciAmJiBzd2lwZXIuZW5hYmxlZCkge1xuICAgICAgc3dpcGVyLnNldEdyYWJDdXJzb3IoKTtcbiAgICB9XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5wcmVsb2FkSW1hZ2VzKSB7XG4gICAgICBzd2lwZXIucHJlbG9hZEltYWdlcygpO1xuICAgIH0gLy8gU2xpZGUgVG8gSW5pdGlhbCBTbGlkZVxuXG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy5sb29wKSB7XG4gICAgICBzd2lwZXIuc2xpZGVUbyhzd2lwZXIucGFyYW1zLmluaXRpYWxTbGlkZSArIHN3aXBlci5sb29wZWRTbGlkZXMsIDAsIHN3aXBlci5wYXJhbXMucnVuQ2FsbGJhY2tzT25Jbml0LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5zbGlkZVRvKHN3aXBlci5wYXJhbXMuaW5pdGlhbFNsaWRlLCAwLCBzd2lwZXIucGFyYW1zLnJ1bkNhbGxiYWNrc09uSW5pdCwgZmFsc2UsIHRydWUpO1xuICAgIH0gLy8gQXR0YWNoIGV2ZW50c1xuXG5cbiAgICBzd2lwZXIuYXR0YWNoRXZlbnRzKCk7IC8vIEluaXQgRmxhZ1xuXG4gICAgc3dpcGVyLmluaXRpYWxpemVkID0gdHJ1ZTsgLy8gRW1pdFxuXG4gICAgc3dpcGVyLmVtaXQoJ2luaXQnKTtcbiAgICBzd2lwZXIuZW1pdCgnYWZ0ZXJJbml0Jyk7XG4gICAgcmV0dXJuIHN3aXBlcjtcbiAgfTtcblxuICBfcHJvdG8uZGVzdHJveSA9IGZ1bmN0aW9uIGRlc3Ryb3koZGVsZXRlSW5zdGFuY2UsIGNsZWFuU3R5bGVzKSB7XG4gICAgaWYgKGRlbGV0ZUluc3RhbmNlID09PSB2b2lkIDApIHtcbiAgICAgIGRlbGV0ZUluc3RhbmNlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY2xlYW5TdHlsZXMgPT09IHZvaWQgMCkge1xuICAgICAgY2xlYW5TdHlsZXMgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgICAkZWwgPSBzd2lwZXIuJGVsLFxuICAgICAgICAkd3JhcHBlckVsID0gc3dpcGVyLiR3cmFwcGVyRWwsXG4gICAgICAgIHNsaWRlcyA9IHN3aXBlci5zbGlkZXM7XG5cbiAgICBpZiAodHlwZW9mIHN3aXBlci5wYXJhbXMgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlci5kZXN0cm95ZWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCdiZWZvcmVEZXN0cm95Jyk7IC8vIEluaXQgRmxhZ1xuXG4gICAgc3dpcGVyLmluaXRpYWxpemVkID0gZmFsc2U7IC8vIERldGFjaCBldmVudHNcblxuICAgIHN3aXBlci5kZXRhY2hFdmVudHMoKTsgLy8gRGVzdHJveSBsb29wXG5cbiAgICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICAgIHN3aXBlci5sb29wRGVzdHJveSgpO1xuICAgIH0gLy8gQ2xlYW51cCBzdHlsZXNcblxuXG4gICAgaWYgKGNsZWFuU3R5bGVzKSB7XG4gICAgICBzd2lwZXIucmVtb3ZlQ2xhc3NlcygpO1xuICAgICAgJGVsLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG4gICAgICAkd3JhcHBlckVsLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG5cbiAgICAgIGlmIChzbGlkZXMgJiYgc2xpZGVzLmxlbmd0aCkge1xuICAgICAgICBzbGlkZXMucmVtb3ZlQ2xhc3MoW3BhcmFtcy5zbGlkZVZpc2libGVDbGFzcywgcGFyYW1zLnNsaWRlQWN0aXZlQ2xhc3MsIHBhcmFtcy5zbGlkZU5leHRDbGFzcywgcGFyYW1zLnNsaWRlUHJldkNsYXNzXS5qb2luKCcgJykpLnJlbW92ZUF0dHIoJ3N0eWxlJykucmVtb3ZlQXR0cignZGF0YS1zd2lwZXItc2xpZGUtaW5kZXgnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdCgnZGVzdHJveScpOyAvLyBEZXRhY2ggZW1pdHRlciBldmVudHNcblxuICAgIE9iamVjdC5rZXlzKHN3aXBlci5ldmVudHNMaXN0ZW5lcnMpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50TmFtZSkge1xuICAgICAgc3dpcGVyLm9mZihldmVudE5hbWUpO1xuICAgIH0pO1xuXG4gICAgaWYgKGRlbGV0ZUluc3RhbmNlICE9PSBmYWxzZSkge1xuICAgICAgc3dpcGVyLiRlbFswXS5zd2lwZXIgPSBudWxsO1xuICAgICAgZGVsZXRlUHJvcHMoc3dpcGVyKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBTd2lwZXIuZXh0ZW5kRGVmYXVsdHMgPSBmdW5jdGlvbiBleHRlbmREZWZhdWx0cyhuZXdEZWZhdWx0cykge1xuICAgIGV4dGVuZChleHRlbmRlZERlZmF1bHRzLCBuZXdEZWZhdWx0cyk7XG4gIH07XG5cbiAgU3dpcGVyLmluc3RhbGxNb2R1bGUgPSBmdW5jdGlvbiBpbnN0YWxsTW9kdWxlKG1vZHVsZSkge1xuICAgIGlmICghU3dpcGVyLnByb3RvdHlwZS5tb2R1bGVzKSBTd2lwZXIucHJvdG90eXBlLm1vZHVsZXMgPSB7fTtcbiAgICB2YXIgbmFtZSA9IG1vZHVsZS5uYW1lIHx8IE9iamVjdC5rZXlzKFN3aXBlci5wcm90b3R5cGUubW9kdWxlcykubGVuZ3RoICsgXCJfXCIgKyBub3coKTtcbiAgICBTd2lwZXIucHJvdG90eXBlLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGU7XG4gIH07XG5cbiAgU3dpcGVyLnVzZSA9IGZ1bmN0aW9uIHVzZShtb2R1bGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2R1bGUpKSB7XG4gICAgICBtb2R1bGUuZm9yRWFjaChmdW5jdGlvbiAobSkge1xuICAgICAgICByZXR1cm4gU3dpcGVyLmluc3RhbGxNb2R1bGUobSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBTd2lwZXI7XG4gICAgfVxuXG4gICAgU3dpcGVyLmluc3RhbGxNb2R1bGUobW9kdWxlKTtcbiAgICByZXR1cm4gU3dpcGVyO1xuICB9O1xuXG4gIF9jcmVhdGVDbGFzcyhTd2lwZXIsIG51bGwsIFt7XG4gICAga2V5OiBcImV4dGVuZGVkRGVmYXVsdHNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiBleHRlbmRlZERlZmF1bHRzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkZWZhdWx0c1wiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBTd2lwZXI7XG59KCk7XG5cbk9iamVjdC5rZXlzKHByb3RvdHlwZXMpLmZvckVhY2goZnVuY3Rpb24gKHByb3RvdHlwZUdyb3VwKSB7XG4gIE9iamVjdC5rZXlzKHByb3RvdHlwZXNbcHJvdG90eXBlR3JvdXBdKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm90b01ldGhvZCkge1xuICAgIFN3aXBlci5wcm90b3R5cGVbcHJvdG9NZXRob2RdID0gcHJvdG90eXBlc1twcm90b3R5cGVHcm91cF1bcHJvdG9NZXRob2RdO1xuICB9KTtcbn0pO1xuU3dpcGVyLnVzZShbUmVzaXplLCBPYnNlcnZlcl0pO1xuZXhwb3J0IGRlZmF1bHQgU3dpcGVyOyIsImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdXNlUGFyYW1zOiBmdW5jdGlvbiB1c2VQYXJhbXMoaW5zdGFuY2VQYXJhbXMpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xuICAgIGlmICghaW5zdGFuY2UubW9kdWxlcykgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGluc3RhbmNlLm1vZHVsZXMpLmZvckVhY2goZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHtcbiAgICAgIHZhciBtb2R1bGUgPSBpbnN0YW5jZS5tb2R1bGVzW21vZHVsZU5hbWVdOyAvLyBFeHRlbmQgcGFyYW1zXG5cbiAgICAgIGlmIChtb2R1bGUucGFyYW1zKSB7XG4gICAgICAgIGV4dGVuZChpbnN0YW5jZVBhcmFtcywgbW9kdWxlLnBhcmFtcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIHVzZU1vZHVsZXM6IGZ1bmN0aW9uIHVzZU1vZHVsZXMobW9kdWxlc1BhcmFtcykge1xuICAgIGlmIChtb2R1bGVzUGFyYW1zID09PSB2b2lkIDApIHtcbiAgICAgIG1vZHVsZXNQYXJhbXMgPSB7fTtcbiAgICB9XG5cbiAgICB2YXIgaW5zdGFuY2UgPSB0aGlzO1xuICAgIGlmICghaW5zdGFuY2UubW9kdWxlcykgcmV0dXJuO1xuICAgIE9iamVjdC5rZXlzKGluc3RhbmNlLm1vZHVsZXMpLmZvckVhY2goZnVuY3Rpb24gKG1vZHVsZU5hbWUpIHtcbiAgICAgIHZhciBtb2R1bGUgPSBpbnN0YW5jZS5tb2R1bGVzW21vZHVsZU5hbWVdO1xuICAgICAgdmFyIG1vZHVsZVBhcmFtcyA9IG1vZHVsZXNQYXJhbXNbbW9kdWxlTmFtZV0gfHwge307IC8vIEFkZCBldmVudCBsaXN0ZW5lcnNcblxuICAgICAgaWYgKG1vZHVsZS5vbiAmJiBpbnN0YW5jZS5vbikge1xuICAgICAgICBPYmplY3Qua2V5cyhtb2R1bGUub24pLmZvckVhY2goZnVuY3Rpb24gKG1vZHVsZUV2ZW50TmFtZSkge1xuICAgICAgICAgIGluc3RhbmNlLm9uKG1vZHVsZUV2ZW50TmFtZSwgbW9kdWxlLm9uW21vZHVsZUV2ZW50TmFtZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gLy8gTW9kdWxlIGNyZWF0ZSBjYWxsYmFja1xuXG5cbiAgICAgIGlmIChtb2R1bGUuY3JlYXRlKSB7XG4gICAgICAgIG1vZHVsZS5jcmVhdGUuYmluZChpbnN0YW5jZSkobW9kdWxlUGFyYW1zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTsiLCJpbXBvcnQgZ2V0VHJhbnNsYXRlIGZyb20gJy4vZ2V0VHJhbnNsYXRlJztcbmltcG9ydCBzZXRUcmFuc2xhdGUgZnJvbSAnLi9zZXRUcmFuc2xhdGUnO1xuaW1wb3J0IG1pblRyYW5zbGF0ZSBmcm9tICcuL21pblRyYW5zbGF0ZSc7XG5pbXBvcnQgbWF4VHJhbnNsYXRlIGZyb20gJy4vbWF4VHJhbnNsYXRlJztcbmltcG9ydCB0cmFuc2xhdGVUbyBmcm9tICcuL3RyYW5zbGF0ZVRvJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0VHJhbnNsYXRlOiBnZXRUcmFuc2xhdGUsXG4gIHNldFRyYW5zbGF0ZTogc2V0VHJhbnNsYXRlLFxuICBtaW5UcmFuc2xhdGU6IG1pblRyYW5zbGF0ZSxcbiAgbWF4VHJhbnNsYXRlOiBtYXhUcmFuc2xhdGUsXG4gIHRyYW5zbGF0ZVRvOiB0cmFuc2xhdGVUb1xufTsiLCJpbXBvcnQgeyBnZXRUcmFuc2xhdGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTd2lwZXJUcmFuc2xhdGUoYXhpcykge1xuICBpZiAoYXhpcyA9PT0gdm9pZCAwKSB7XG4gICAgYXhpcyA9IHRoaXMuaXNIb3Jpem9udGFsKCkgPyAneCcgOiAneSc7XG4gIH1cblxuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICBydGwgPSBzd2lwZXIucnRsVHJhbnNsYXRlLFxuICAgICAgdHJhbnNsYXRlID0gc3dpcGVyLnRyYW5zbGF0ZSxcbiAgICAgICR3cmFwcGVyRWwgPSBzd2lwZXIuJHdyYXBwZXJFbDtcblxuICBpZiAocGFyYW1zLnZpcnR1YWxUcmFuc2xhdGUpIHtcbiAgICByZXR1cm4gcnRsID8gLXRyYW5zbGF0ZSA6IHRyYW5zbGF0ZTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHJldHVybiB0cmFuc2xhdGU7XG4gIH1cblxuICB2YXIgY3VycmVudFRyYW5zbGF0ZSA9IGdldFRyYW5zbGF0ZSgkd3JhcHBlckVsWzBdLCBheGlzKTtcbiAgaWYgKHJ0bCkgY3VycmVudFRyYW5zbGF0ZSA9IC1jdXJyZW50VHJhbnNsYXRlO1xuICByZXR1cm4gY3VycmVudFRyYW5zbGF0ZSB8fCAwO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFRyYW5zbGF0ZSh0cmFuc2xhdGUsIGJ5Q29udHJvbGxlcikge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHJ0bCA9IHN3aXBlci5ydGxUcmFuc2xhdGUsXG4gICAgICBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgJHdyYXBwZXJFbCA9IHN3aXBlci4kd3JhcHBlckVsLFxuICAgICAgd3JhcHBlckVsID0gc3dpcGVyLndyYXBwZXJFbCxcbiAgICAgIHByb2dyZXNzID0gc3dpcGVyLnByb2dyZXNzO1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDtcbiAgdmFyIHogPSAwO1xuXG4gIGlmIChzd2lwZXIuaXNIb3Jpem9udGFsKCkpIHtcbiAgICB4ID0gcnRsID8gLXRyYW5zbGF0ZSA6IHRyYW5zbGF0ZTtcbiAgfSBlbHNlIHtcbiAgICB5ID0gdHJhbnNsYXRlO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5yb3VuZExlbmd0aHMpIHtcbiAgICB4ID0gTWF0aC5mbG9vcih4KTtcbiAgICB5ID0gTWF0aC5mbG9vcih5KTtcbiAgfVxuXG4gIGlmIChwYXJhbXMuY3NzTW9kZSkge1xuICAgIHdyYXBwZXJFbFtzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnc2Nyb2xsTGVmdCcgOiAnc2Nyb2xsVG9wJ10gPSBzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAteCA6IC15O1xuICB9IGVsc2UgaWYgKCFwYXJhbXMudmlydHVhbFRyYW5zbGF0ZSkge1xuICAgICR3cmFwcGVyRWwudHJhbnNmb3JtKFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgXCIgKyB6ICsgXCJweClcIik7XG4gIH1cblxuICBzd2lwZXIucHJldmlvdXNUcmFuc2xhdGUgPSBzd2lwZXIudHJhbnNsYXRlO1xuICBzd2lwZXIudHJhbnNsYXRlID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpID8geCA6IHk7IC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gdXBkYXRlIHByb2dyZXNzXG5cbiAgdmFyIG5ld1Byb2dyZXNzO1xuICB2YXIgdHJhbnNsYXRlc0RpZmYgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCkgLSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG5cbiAgaWYgKHRyYW5zbGF0ZXNEaWZmID09PSAwKSB7XG4gICAgbmV3UHJvZ3Jlc3MgPSAwO1xuICB9IGVsc2Uge1xuICAgIG5ld1Byb2dyZXNzID0gKHRyYW5zbGF0ZSAtIHN3aXBlci5taW5UcmFuc2xhdGUoKSkgLyB0cmFuc2xhdGVzRGlmZjtcbiAgfVxuXG4gIGlmIChuZXdQcm9ncmVzcyAhPT0gcHJvZ3Jlc3MpIHtcbiAgICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3ModHJhbnNsYXRlKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2xhdGUnLCBzd2lwZXIudHJhbnNsYXRlLCBieUNvbnRyb2xsZXIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1pblRyYW5zbGF0ZSgpIHtcbiAgcmV0dXJuIC10aGlzLnNuYXBHcmlkWzBdO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1heFRyYW5zbGF0ZSgpIHtcbiAgcmV0dXJuIC10aGlzLnNuYXBHcmlkW3RoaXMuc25hcEdyaWQubGVuZ3RoIC0gMV07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNsYXRlVG8odHJhbnNsYXRlLCBzcGVlZCwgcnVuQ2FsbGJhY2tzLCB0cmFuc2xhdGVCb3VuZHMsIGludGVybmFsKSB7XG4gIGlmICh0cmFuc2xhdGUgPT09IHZvaWQgMCkge1xuICAgIHRyYW5zbGF0ZSA9IDA7XG4gIH1cblxuICBpZiAoc3BlZWQgPT09IHZvaWQgMCkge1xuICAgIHNwZWVkID0gdGhpcy5wYXJhbXMuc3BlZWQ7XG4gIH1cblxuICBpZiAocnVuQ2FsbGJhY2tzID09PSB2b2lkIDApIHtcbiAgICBydW5DYWxsYmFja3MgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHRyYW5zbGF0ZUJvdW5kcyA9PT0gdm9pZCAwKSB7XG4gICAgdHJhbnNsYXRlQm91bmRzID0gdHJ1ZTtcbiAgfVxuXG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcyxcbiAgICAgIHdyYXBwZXJFbCA9IHN3aXBlci53cmFwcGVyRWw7XG5cbiAgaWYgKHN3aXBlci5hbmltYXRpbmcgJiYgcGFyYW1zLnByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBtaW5UcmFuc2xhdGUgPSBzd2lwZXIubWluVHJhbnNsYXRlKCk7XG4gIHZhciBtYXhUcmFuc2xhdGUgPSBzd2lwZXIubWF4VHJhbnNsYXRlKCk7XG4gIHZhciBuZXdUcmFuc2xhdGU7XG4gIGlmICh0cmFuc2xhdGVCb3VuZHMgJiYgdHJhbnNsYXRlID4gbWluVHJhbnNsYXRlKSBuZXdUcmFuc2xhdGUgPSBtaW5UcmFuc2xhdGU7ZWxzZSBpZiAodHJhbnNsYXRlQm91bmRzICYmIHRyYW5zbGF0ZSA8IG1heFRyYW5zbGF0ZSkgbmV3VHJhbnNsYXRlID0gbWF4VHJhbnNsYXRlO2Vsc2UgbmV3VHJhbnNsYXRlID0gdHJhbnNsYXRlOyAvLyBVcGRhdGUgcHJvZ3Jlc3NcblxuICBzd2lwZXIudXBkYXRlUHJvZ3Jlc3MobmV3VHJhbnNsYXRlKTtcblxuICBpZiAocGFyYW1zLmNzc01vZGUpIHtcbiAgICB2YXIgaXNIID0gc3dpcGVyLmlzSG9yaXpvbnRhbCgpO1xuXG4gICAgaWYgKHNwZWVkID09PSAwKSB7XG4gICAgICB3cmFwcGVyRWxbaXNIID8gJ3Njcm9sbExlZnQnIDogJ3Njcm9sbFRvcCddID0gLW5ld1RyYW5zbGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBpZiAod3JhcHBlckVsLnNjcm9sbFRvKSB7XG4gICAgICAgIHZhciBfd3JhcHBlckVsJHNjcm9sbFRvO1xuXG4gICAgICAgIHdyYXBwZXJFbC5zY3JvbGxUbygoX3dyYXBwZXJFbCRzY3JvbGxUbyA9IHt9LCBfd3JhcHBlckVsJHNjcm9sbFRvW2lzSCA/ICdsZWZ0JyA6ICd0b3AnXSA9IC1uZXdUcmFuc2xhdGUsIF93cmFwcGVyRWwkc2Nyb2xsVG8uYmVoYXZpb3IgPSAnc21vb3RoJywgX3dyYXBwZXJFbCRzY3JvbGxUbykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JhcHBlckVsW2lzSCA/ICdzY3JvbGxMZWZ0JyA6ICdzY3JvbGxUb3AnXSA9IC1uZXdUcmFuc2xhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoc3BlZWQgPT09IDApIHtcbiAgICBzd2lwZXIuc2V0VHJhbnNpdGlvbigwKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1RyYW5zbGF0ZSk7XG5cbiAgICBpZiAocnVuQ2FsbGJhY2tzKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jywgc3BlZWQsIGludGVybmFsKTtcbiAgICAgIHN3aXBlci5lbWl0KCd0cmFuc2l0aW9uRW5kJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN3aXBlci5zZXRUcmFuc2l0aW9uKHNwZWVkKTtcbiAgICBzd2lwZXIuc2V0VHJhbnNsYXRlKG5ld1RyYW5zbGF0ZSk7XG5cbiAgICBpZiAocnVuQ2FsbGJhY2tzKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnYmVmb3JlVHJhbnNpdGlvblN0YXJ0Jywgc3BlZWQsIGludGVybmFsKTtcbiAgICAgIHN3aXBlci5lbWl0KCd0cmFuc2l0aW9uU3RhcnQnKTtcbiAgICB9XG5cbiAgICBpZiAoIXN3aXBlci5hbmltYXRpbmcpIHtcbiAgICAgIHN3aXBlci5hbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgICBpZiAoIXN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpIHtcbiAgICAgICAgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCA9IGZ1bmN0aW9uIHRyYW5zaXRpb25FbmQoZSkge1xuICAgICAgICAgIGlmICghc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IHRoaXMpIHJldHVybjtcbiAgICAgICAgICBzd2lwZXIuJHdyYXBwZXJFbFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCd0cmFuc2l0aW9uZW5kJywgc3dpcGVyLm9uVHJhbnNsYXRlVG9XcmFwcGVyVHJhbnNpdGlvbkVuZCk7XG4gICAgICAgICAgc3dpcGVyLiR3cmFwcGVyRWxbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2Via2l0VHJhbnNpdGlvbkVuZCcsIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQpO1xuICAgICAgICAgIHN3aXBlci5vblRyYW5zbGF0ZVRvV3JhcHBlclRyYW5zaXRpb25FbmQgPSBudWxsO1xuICAgICAgICAgIGRlbGV0ZSBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kO1xuXG4gICAgICAgICAgaWYgKHJ1bkNhbGxiYWNrcykge1xuICAgICAgICAgICAgc3dpcGVyLmVtaXQoJ3RyYW5zaXRpb25FbmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ3RyYW5zaXRpb25lbmQnLCBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICAgIHN3aXBlci4kd3JhcHBlckVsWzBdLmFkZEV2ZW50TGlzdGVuZXIoJ3dlYmtpdFRyYW5zaXRpb25FbmQnLCBzd2lwZXIub25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn0iLCJpbXBvcnQgc2V0VHJhbnNpdGlvbiBmcm9tICcuL3NldFRyYW5zaXRpb24nO1xuaW1wb3J0IHRyYW5zaXRpb25TdGFydCBmcm9tICcuL3RyYW5zaXRpb25TdGFydCc7XG5pbXBvcnQgdHJhbnNpdGlvbkVuZCBmcm9tICcuL3RyYW5zaXRpb25FbmQnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXRUcmFuc2l0aW9uOiBzZXRUcmFuc2l0aW9uLFxuICB0cmFuc2l0aW9uU3RhcnQ6IHRyYW5zaXRpb25TdGFydCxcbiAgdHJhbnNpdGlvbkVuZDogdHJhbnNpdGlvbkVuZFxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzZXRUcmFuc2l0aW9uKGR1cmF0aW9uLCBieUNvbnRyb2xsZXIpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG5cbiAgaWYgKCFzd2lwZXIucGFyYW1zLmNzc01vZGUpIHtcbiAgICBzd2lwZXIuJHdyYXBwZXJFbC50cmFuc2l0aW9uKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHN3aXBlci5lbWl0KCdzZXRUcmFuc2l0aW9uJywgZHVyYXRpb24sIGJ5Q29udHJvbGxlcik7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdHJhbnNpdGlvblN0YXJ0KHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cblxuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIGFjdGl2ZUluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4LFxuICAgICAgcGFyYW1zID0gc3dpcGVyLnBhcmFtcyxcbiAgICAgIHByZXZpb3VzSW5kZXggPSBzd2lwZXIucHJldmlvdXNJbmRleDtcbiAgaWYgKHBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG5cbiAgaWYgKHBhcmFtcy5hdXRvSGVpZ2h0KSB7XG4gICAgc3dpcGVyLnVwZGF0ZUF1dG9IZWlnaHQoKTtcbiAgfVxuXG4gIHZhciBkaXIgPSBkaXJlY3Rpb247XG5cbiAgaWYgKCFkaXIpIHtcbiAgICBpZiAoYWN0aXZlSW5kZXggPiBwcmV2aW91c0luZGV4KSBkaXIgPSAnbmV4dCc7ZWxzZSBpZiAoYWN0aXZlSW5kZXggPCBwcmV2aW91c0luZGV4KSBkaXIgPSAncHJldic7ZWxzZSBkaXIgPSAncmVzZXQnO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ3RyYW5zaXRpb25TdGFydCcpO1xuXG4gIGlmIChydW5DYWxsYmFja3MgJiYgYWN0aXZlSW5kZXggIT09IHByZXZpb3VzSW5kZXgpIHtcbiAgICBpZiAoZGlyID09PSAncmVzZXQnKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnc2xpZGVSZXNldFRyYW5zaXRpb25TdGFydCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXBlci5lbWl0KCdzbGlkZUNoYW5nZVRyYW5zaXRpb25TdGFydCcpO1xuXG4gICAgaWYgKGRpciA9PT0gJ25leHQnKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnc2xpZGVOZXh0VHJhbnNpdGlvblN0YXJ0Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5lbWl0KCdzbGlkZVByZXZUcmFuc2l0aW9uU3RhcnQnKTtcbiAgICB9XG4gIH1cbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0cmFuc2l0aW9uRW5kKHJ1bkNhbGxiYWNrcywgZGlyZWN0aW9uKSB7XG4gIGlmIChydW5DYWxsYmFja3MgPT09IHZvaWQgMCkge1xuICAgIHJ1bkNhbGxiYWNrcyA9IHRydWU7XG4gIH1cblxuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIGFjdGl2ZUluZGV4ID0gc3dpcGVyLmFjdGl2ZUluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleCA9IHN3aXBlci5wcmV2aW91c0luZGV4LFxuICAgICAgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgc3dpcGVyLmFuaW1hdGluZyA9IGZhbHNlO1xuICBpZiAocGFyYW1zLmNzc01vZGUpIHJldHVybjtcbiAgc3dpcGVyLnNldFRyYW5zaXRpb24oMCk7XG4gIHZhciBkaXIgPSBkaXJlY3Rpb247XG5cbiAgaWYgKCFkaXIpIHtcbiAgICBpZiAoYWN0aXZlSW5kZXggPiBwcmV2aW91c0luZGV4KSBkaXIgPSAnbmV4dCc7ZWxzZSBpZiAoYWN0aXZlSW5kZXggPCBwcmV2aW91c0luZGV4KSBkaXIgPSAncHJldic7ZWxzZSBkaXIgPSAncmVzZXQnO1xuICB9XG5cbiAgc3dpcGVyLmVtaXQoJ3RyYW5zaXRpb25FbmQnKTtcblxuICBpZiAocnVuQ2FsbGJhY2tzICYmIGFjdGl2ZUluZGV4ICE9PSBwcmV2aW91c0luZGV4KSB7XG4gICAgaWYgKGRpciA9PT0gJ3Jlc2V0Jykge1xuICAgICAgc3dpcGVyLmVtaXQoJ3NsaWRlUmVzZXRUcmFuc2l0aW9uRW5kJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpcGVyLmVtaXQoJ3NsaWRlQ2hhbmdlVHJhbnNpdGlvbkVuZCcpO1xuXG4gICAgaWYgKGRpciA9PT0gJ25leHQnKSB7XG4gICAgICBzd2lwZXIuZW1pdCgnc2xpZGVOZXh0VHJhbnNpdGlvbkVuZCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2lwZXIuZW1pdCgnc2xpZGVQcmV2VHJhbnNpdGlvbkVuZCcpO1xuICAgIH1cbiAgfVxufSIsImltcG9ydCBzZXRHcmFiQ3Vyc29yIGZyb20gJy4vc2V0R3JhYkN1cnNvcic7XG5pbXBvcnQgdW5zZXRHcmFiQ3Vyc29yIGZyb20gJy4vdW5zZXRHcmFiQ3Vyc29yJztcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0R3JhYkN1cnNvcjogc2V0R3JhYkN1cnNvcixcbiAgdW5zZXRHcmFiQ3Vyc29yOiB1bnNldEdyYWJDdXJzb3Jcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0R3JhYkN1cnNvcihtb3ZpbmcpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIGlmIChzd2lwZXIuc3VwcG9ydC50b3VjaCB8fCAhc3dpcGVyLnBhcmFtcy5zaW11bGF0ZVRvdWNoIHx8IHN3aXBlci5wYXJhbXMud2F0Y2hPdmVyZmxvdyAmJiBzd2lwZXIuaXNMb2NrZWQgfHwgc3dpcGVyLnBhcmFtcy5jc3NNb2RlKSByZXR1cm47XG4gIHZhciBlbCA9IHN3aXBlci5lbDtcbiAgZWwuc3R5bGUuY3Vyc29yID0gJ21vdmUnO1xuICBlbC5zdHlsZS5jdXJzb3IgPSBtb3ZpbmcgPyAnLXdlYmtpdC1ncmFiYmluZycgOiAnLXdlYmtpdC1ncmFiJztcbiAgZWwuc3R5bGUuY3Vyc29yID0gbW92aW5nID8gJy1tb3otZ3JhYmJpbicgOiAnLW1vei1ncmFiJztcbiAgZWwuc3R5bGUuY3Vyc29yID0gbW92aW5nID8gJ2dyYWJiaW5nJyA6ICdncmFiJztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1bnNldEdyYWJDdXJzb3IoKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuXG4gIGlmIChzd2lwZXIuc3VwcG9ydC50b3VjaCB8fCBzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc3dpcGVyLmlzTG9ja2VkIHx8IHN3aXBlci5wYXJhbXMuY3NzTW9kZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN3aXBlci5lbC5zdHlsZS5jdXJzb3IgPSAnJztcbn0iLCJpbXBvcnQgYXBwZW5kU2xpZGUgZnJvbSAnLi9hcHBlbmRTbGlkZSc7XG5pbXBvcnQgcHJlcGVuZFNsaWRlIGZyb20gJy4vcHJlcGVuZFNsaWRlJztcbmltcG9ydCBhZGRTbGlkZSBmcm9tICcuL2FkZFNsaWRlJztcbmltcG9ydCByZW1vdmVTbGlkZSBmcm9tICcuL3JlbW92ZVNsaWRlJztcbmltcG9ydCByZW1vdmVBbGxTbGlkZXMgZnJvbSAnLi9yZW1vdmVBbGxTbGlkZXMnO1xuZXhwb3J0IGRlZmF1bHQge1xuICBhcHBlbmRTbGlkZTogYXBwZW5kU2xpZGUsXG4gIHByZXBlbmRTbGlkZTogcHJlcGVuZFNsaWRlLFxuICBhZGRTbGlkZTogYWRkU2xpZGUsXG4gIHJlbW92ZVNsaWRlOiByZW1vdmVTbGlkZSxcbiAgcmVtb3ZlQWxsU2xpZGVzOiByZW1vdmVBbGxTbGlkZXNcbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBwZW5kU2xpZGUoc2xpZGVzKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgJHdyYXBwZXJFbCA9IHN3aXBlci4kd3JhcHBlckVsLFxuICAgICAgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2xpZGVzID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBzbGlkZXMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNsaWRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHNsaWRlc1tpXSkgJHdyYXBwZXJFbC5hcHBlbmQoc2xpZGVzW2ldKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgJHdyYXBwZXJFbC5hcHBlbmQoc2xpZGVzKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5sb29wQ3JlYXRlKCk7XG4gIH1cblxuICBpZiAoIShwYXJhbXMub2JzZXJ2ZXIgJiYgc3dpcGVyLnN1cHBvcnQub2JzZXJ2ZXIpKSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJlcGVuZFNsaWRlKHNsaWRlcykge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICAkd3JhcHBlckVsID0gc3dpcGVyLiR3cmFwcGVyRWwsXG4gICAgICBhY3RpdmVJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleDtcblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIubG9vcERlc3Ryb3koKTtcbiAgfVxuXG4gIHZhciBuZXdBY3RpdmVJbmRleCA9IGFjdGl2ZUluZGV4ICsgMTtcblxuICBpZiAodHlwZW9mIHNsaWRlcyA9PT0gJ29iamVjdCcgJiYgJ2xlbmd0aCcgaW4gc2xpZGVzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChzbGlkZXNbaV0pICR3cmFwcGVyRWwucHJlcGVuZChzbGlkZXNbaV0pO1xuICAgIH1cblxuICAgIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXggKyBzbGlkZXMubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgICR3cmFwcGVyRWwucHJlcGVuZChzbGlkZXMpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuXG4gIGlmICghKHBhcmFtcy5vYnNlcnZlciAmJiBzd2lwZXIuc3VwcG9ydC5vYnNlcnZlcikpIHtcbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBzd2lwZXIuc2xpZGVUbyhuZXdBY3RpdmVJbmRleCwgMCwgZmFsc2UpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFkZFNsaWRlKGluZGV4LCBzbGlkZXMpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciAkd3JhcHBlckVsID0gc3dpcGVyLiR3cmFwcGVyRWwsXG4gICAgICBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gIHZhciBhY3RpdmVJbmRleEJ1ZmZlciA9IGFjdGl2ZUluZGV4O1xuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIGFjdGl2ZUluZGV4QnVmZmVyIC09IHN3aXBlci5sb29wZWRTbGlkZXM7XG4gICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gICAgc3dpcGVyLnNsaWRlcyA9ICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyk7XG4gIH1cblxuICB2YXIgYmFzZUxlbmd0aCA9IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuXG4gIGlmIChpbmRleCA8PSAwKSB7XG4gICAgc3dpcGVyLnByZXBlbmRTbGlkZShzbGlkZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChpbmRleCA+PSBiYXNlTGVuZ3RoKSB7XG4gICAgc3dpcGVyLmFwcGVuZFNsaWRlKHNsaWRlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXIgPiBpbmRleCA/IGFjdGl2ZUluZGV4QnVmZmVyICsgMSA6IGFjdGl2ZUluZGV4QnVmZmVyO1xuICB2YXIgc2xpZGVzQnVmZmVyID0gW107XG5cbiAgZm9yICh2YXIgaSA9IGJhc2VMZW5ndGggLSAxOyBpID49IGluZGV4OyBpIC09IDEpIHtcbiAgICB2YXIgY3VycmVudFNsaWRlID0gc3dpcGVyLnNsaWRlcy5lcShpKTtcbiAgICBjdXJyZW50U2xpZGUucmVtb3ZlKCk7XG4gICAgc2xpZGVzQnVmZmVyLnVuc2hpZnQoY3VycmVudFNsaWRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2xpZGVzID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBzbGlkZXMpIHtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgc2xpZGVzLmxlbmd0aDsgX2kgKz0gMSkge1xuICAgICAgaWYgKHNsaWRlc1tfaV0pICR3cmFwcGVyRWwuYXBwZW5kKHNsaWRlc1tfaV0pO1xuICAgIH1cblxuICAgIG5ld0FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXhCdWZmZXIgPiBpbmRleCA/IGFjdGl2ZUluZGV4QnVmZmVyICsgc2xpZGVzLmxlbmd0aCA6IGFjdGl2ZUluZGV4QnVmZmVyO1xuICB9IGVsc2Uge1xuICAgICR3cmFwcGVyRWwuYXBwZW5kKHNsaWRlcyk7XG4gIH1cblxuICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBzbGlkZXNCdWZmZXIubGVuZ3RoOyBfaTIgKz0gMSkge1xuICAgICR3cmFwcGVyRWwuYXBwZW5kKHNsaWRlc0J1ZmZlcltfaTJdKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIHN3aXBlci5sb29wQ3JlYXRlKCk7XG4gIH1cblxuICBpZiAoIShwYXJhbXMub2JzZXJ2ZXIgJiYgc3dpcGVyLnN1cHBvcnQub2JzZXJ2ZXIpKSB7XG4gICAgc3dpcGVyLnVwZGF0ZSgpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXggKyBzd2lwZXIubG9vcGVkU2xpZGVzLCAwLCBmYWxzZSk7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLnNsaWRlVG8obmV3QWN0aXZlSW5kZXgsIDAsIGZhbHNlKTtcbiAgfVxufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlbW92ZVNsaWRlKHNsaWRlc0luZGV4ZXMpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLFxuICAgICAgJHdyYXBwZXJFbCA9IHN3aXBlci4kd3JhcHBlckVsLFxuICAgICAgYWN0aXZlSW5kZXggPSBzd2lwZXIuYWN0aXZlSW5kZXg7XG4gIHZhciBhY3RpdmVJbmRleEJ1ZmZlciA9IGFjdGl2ZUluZGV4O1xuXG4gIGlmIChwYXJhbXMubG9vcCkge1xuICAgIGFjdGl2ZUluZGV4QnVmZmVyIC09IHN3aXBlci5sb29wZWRTbGlkZXM7XG4gICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gICAgc3dpcGVyLnNsaWRlcyA9ICR3cmFwcGVyRWwuY2hpbGRyZW4oXCIuXCIgKyBwYXJhbXMuc2xpZGVDbGFzcyk7XG4gIH1cblxuICB2YXIgbmV3QWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleEJ1ZmZlcjtcbiAgdmFyIGluZGV4VG9SZW1vdmU7XG5cbiAgaWYgKHR5cGVvZiBzbGlkZXNJbmRleGVzID09PSAnb2JqZWN0JyAmJiAnbGVuZ3RoJyBpbiBzbGlkZXNJbmRleGVzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGlkZXNJbmRleGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpbmRleFRvUmVtb3ZlID0gc2xpZGVzSW5kZXhlc1tpXTtcbiAgICAgIGlmIChzd2lwZXIuc2xpZGVzW2luZGV4VG9SZW1vdmVdKSBzd2lwZXIuc2xpZGVzLmVxKGluZGV4VG9SZW1vdmUpLnJlbW92ZSgpO1xuICAgICAgaWYgKGluZGV4VG9SZW1vdmUgPCBuZXdBY3RpdmVJbmRleCkgbmV3QWN0aXZlSW5kZXggLT0gMTtcbiAgICB9XG5cbiAgICBuZXdBY3RpdmVJbmRleCA9IE1hdGgubWF4KG5ld0FjdGl2ZUluZGV4LCAwKTtcbiAgfSBlbHNlIHtcbiAgICBpbmRleFRvUmVtb3ZlID0gc2xpZGVzSW5kZXhlcztcbiAgICBpZiAoc3dpcGVyLnNsaWRlc1tpbmRleFRvUmVtb3ZlXSkgc3dpcGVyLnNsaWRlcy5lcShpbmRleFRvUmVtb3ZlKS5yZW1vdmUoKTtcbiAgICBpZiAoaW5kZXhUb1JlbW92ZSA8IG5ld0FjdGl2ZUluZGV4KSBuZXdBY3RpdmVJbmRleCAtPSAxO1xuICAgIG5ld0FjdGl2ZUluZGV4ID0gTWF0aC5tYXgobmV3QWN0aXZlSW5kZXgsIDApO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sb29wKSB7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgfVxuXG4gIGlmICghKHBhcmFtcy5vYnNlcnZlciAmJiBzd2lwZXIuc3VwcG9ydC5vYnNlcnZlcikpIHtcbiAgICBzd2lwZXIudXBkYXRlKCk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxvb3ApIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhuZXdBY3RpdmVJbmRleCArIHN3aXBlci5sb29wZWRTbGlkZXMsIDAsIGZhbHNlKTtcbiAgfSBlbHNlIHtcbiAgICBzd2lwZXIuc2xpZGVUbyhuZXdBY3RpdmVJbmRleCwgMCwgZmFsc2UpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVtb3ZlQWxsU2xpZGVzKCkge1xuICB2YXIgc3dpcGVyID0gdGhpcztcbiAgdmFyIHNsaWRlc0luZGV4ZXMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN3aXBlci5zbGlkZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBzbGlkZXNJbmRleGVzLnB1c2goaSk7XG4gIH1cblxuICBzd2lwZXIucmVtb3ZlU2xpZGUoc2xpZGVzSW5kZXhlcyk7XG59IiwiaW1wb3J0IHNldEJyZWFrcG9pbnQgZnJvbSAnLi9zZXRCcmVha3BvaW50JztcbmltcG9ydCBnZXRCcmVha3BvaW50IGZyb20gJy4vZ2V0QnJlYWtwb2ludCc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldEJyZWFrcG9pbnQ6IHNldEJyZWFrcG9pbnQsXG4gIGdldEJyZWFrcG9pbnQ6IGdldEJyZWFrcG9pbnRcbn07IiwiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2V0QnJlYWtwb2ludCgpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHZhciBhY3RpdmVJbmRleCA9IHN3aXBlci5hY3RpdmVJbmRleCxcbiAgICAgIGluaXRpYWxpemVkID0gc3dpcGVyLmluaXRpYWxpemVkLFxuICAgICAgX3N3aXBlciRsb29wZWRTbGlkZXMgPSBzd2lwZXIubG9vcGVkU2xpZGVzLFxuICAgICAgbG9vcGVkU2xpZGVzID0gX3N3aXBlciRsb29wZWRTbGlkZXMgPT09IHZvaWQgMCA/IDAgOiBfc3dpcGVyJGxvb3BlZFNsaWRlcyxcbiAgICAgIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMsXG4gICAgICAkZWwgPSBzd2lwZXIuJGVsO1xuICB2YXIgYnJlYWtwb2ludHMgPSBwYXJhbXMuYnJlYWtwb2ludHM7XG4gIGlmICghYnJlYWtwb2ludHMgfHwgYnJlYWtwb2ludHMgJiYgT2JqZWN0LmtleXMoYnJlYWtwb2ludHMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOyAvLyBHZXQgYnJlYWtwb2ludCBmb3Igd2luZG93IHdpZHRoIGFuZCB1cGRhdGUgcGFyYW1ldGVyc1xuXG4gIHZhciBicmVha3BvaW50ID0gc3dpcGVyLmdldEJyZWFrcG9pbnQoYnJlYWtwb2ludHMsIHN3aXBlci5wYXJhbXMuYnJlYWtwb2ludHNCYXNlLCBzd2lwZXIuZWwpO1xuICBpZiAoIWJyZWFrcG9pbnQgfHwgc3dpcGVyLmN1cnJlbnRCcmVha3BvaW50ID09PSBicmVha3BvaW50KSByZXR1cm47XG4gIHZhciBicmVha3BvaW50T25seVBhcmFtcyA9IGJyZWFrcG9pbnQgaW4gYnJlYWtwb2ludHMgPyBicmVha3BvaW50c1ticmVha3BvaW50XSA6IHVuZGVmaW5lZDtcblxuICBpZiAoYnJlYWtwb2ludE9ubHlQYXJhbXMpIHtcbiAgICBbJ3NsaWRlc1BlclZpZXcnLCAnc3BhY2VCZXR3ZWVuJywgJ3NsaWRlc1Blckdyb3VwJywgJ3NsaWRlc1Blckdyb3VwU2tpcCcsICdzbGlkZXNQZXJDb2x1bW4nXS5mb3JFYWNoKGZ1bmN0aW9uIChwYXJhbSkge1xuICAgICAgdmFyIHBhcmFtVmFsdWUgPSBicmVha3BvaW50T25seVBhcmFtc1twYXJhbV07XG4gICAgICBpZiAodHlwZW9mIHBhcmFtVmFsdWUgPT09ICd1bmRlZmluZWQnKSByZXR1cm47XG5cbiAgICAgIGlmIChwYXJhbSA9PT0gJ3NsaWRlc1BlclZpZXcnICYmIChwYXJhbVZhbHVlID09PSAnQVVUTycgfHwgcGFyYW1WYWx1ZSA9PT0gJ2F1dG8nKSkge1xuICAgICAgICBicmVha3BvaW50T25seVBhcmFtc1twYXJhbV0gPSAnYXV0byc7XG4gICAgICB9IGVsc2UgaWYgKHBhcmFtID09PSAnc2xpZGVzUGVyVmlldycpIHtcbiAgICAgICAgYnJlYWtwb2ludE9ubHlQYXJhbXNbcGFyYW1dID0gcGFyc2VGbG9hdChwYXJhbVZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrcG9pbnRPbmx5UGFyYW1zW3BhcmFtXSA9IHBhcnNlSW50KHBhcmFtVmFsdWUsIDEwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHZhciBicmVha3BvaW50UGFyYW1zID0gYnJlYWtwb2ludE9ubHlQYXJhbXMgfHwgc3dpcGVyLm9yaWdpbmFsUGFyYW1zO1xuICB2YXIgd2FzTXVsdGlSb3cgPSBwYXJhbXMuc2xpZGVzUGVyQ29sdW1uID4gMTtcbiAgdmFyIGlzTXVsdGlSb3cgPSBicmVha3BvaW50UGFyYW1zLnNsaWRlc1BlckNvbHVtbiA+IDE7XG4gIHZhciB3YXNFbmFibGVkID0gcGFyYW1zLmVuYWJsZWQ7XG5cbiAgaWYgKHdhc011bHRpUm93ICYmICFpc011bHRpUm93KSB7XG4gICAgJGVsLnJlbW92ZUNsYXNzKHBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzICsgXCJtdWx0aXJvdyBcIiArIHBhcmFtcy5jb250YWluZXJNb2RpZmllckNsYXNzICsgXCJtdWx0aXJvdy1jb2x1bW5cIik7XG4gICAgc3dpcGVyLmVtaXRDb250YWluZXJDbGFzc2VzKCk7XG4gIH0gZWxzZSBpZiAoIXdhc011bHRpUm93ICYmIGlzTXVsdGlSb3cpIHtcbiAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyBcIm11bHRpcm93XCIpO1xuXG4gICAgaWYgKGJyZWFrcG9pbnRQYXJhbXMuc2xpZGVzUGVyQ29sdW1uRmlsbCAmJiBicmVha3BvaW50UGFyYW1zLnNsaWRlc1BlckNvbHVtbkZpbGwgPT09ICdjb2x1bW4nIHx8ICFicmVha3BvaW50UGFyYW1zLnNsaWRlc1BlckNvbHVtbkZpbGwgJiYgcGFyYW1zLnNsaWRlc1BlckNvbHVtbkZpbGwgPT09ICdjb2x1bW4nKSB7XG4gICAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLmNvbnRhaW5lck1vZGlmaWVyQ2xhc3MgKyBcIm11bHRpcm93LWNvbHVtblwiKTtcbiAgICB9XG5cbiAgICBzd2lwZXIuZW1pdENvbnRhaW5lckNsYXNzZXMoKTtcbiAgfVxuXG4gIHZhciBkaXJlY3Rpb25DaGFuZ2VkID0gYnJlYWtwb2ludFBhcmFtcy5kaXJlY3Rpb24gJiYgYnJlYWtwb2ludFBhcmFtcy5kaXJlY3Rpb24gIT09IHBhcmFtcy5kaXJlY3Rpb247XG4gIHZhciBuZWVkc1JlTG9vcCA9IHBhcmFtcy5sb29wICYmIChicmVha3BvaW50UGFyYW1zLnNsaWRlc1BlclZpZXcgIT09IHBhcmFtcy5zbGlkZXNQZXJWaWV3IHx8IGRpcmVjdGlvbkNoYW5nZWQpO1xuXG4gIGlmIChkaXJlY3Rpb25DaGFuZ2VkICYmIGluaXRpYWxpemVkKSB7XG4gICAgc3dpcGVyLmNoYW5nZURpcmVjdGlvbigpO1xuICB9XG5cbiAgZXh0ZW5kKHN3aXBlci5wYXJhbXMsIGJyZWFrcG9pbnRQYXJhbXMpO1xuICB2YXIgaXNFbmFibGVkID0gc3dpcGVyLnBhcmFtcy5lbmFibGVkO1xuICBleHRlbmQoc3dpcGVyLCB7XG4gICAgYWxsb3dUb3VjaE1vdmU6IHN3aXBlci5wYXJhbXMuYWxsb3dUb3VjaE1vdmUsXG4gICAgYWxsb3dTbGlkZU5leHQ6IHN3aXBlci5wYXJhbXMuYWxsb3dTbGlkZU5leHQsXG4gICAgYWxsb3dTbGlkZVByZXY6IHN3aXBlci5wYXJhbXMuYWxsb3dTbGlkZVByZXZcbiAgfSk7XG5cbiAgaWYgKHdhc0VuYWJsZWQgJiYgIWlzRW5hYmxlZCkge1xuICAgIHN3aXBlci5kaXNhYmxlKCk7XG4gIH0gZWxzZSBpZiAoIXdhc0VuYWJsZWQgJiYgaXNFbmFibGVkKSB7XG4gICAgc3dpcGVyLmVuYWJsZSgpO1xuICB9XG5cbiAgc3dpcGVyLmN1cnJlbnRCcmVha3BvaW50ID0gYnJlYWtwb2ludDtcbiAgc3dpcGVyLmVtaXQoJ19iZWZvcmVCcmVha3BvaW50JywgYnJlYWtwb2ludFBhcmFtcyk7XG5cbiAgaWYgKG5lZWRzUmVMb29wICYmIGluaXRpYWxpemVkKSB7XG4gICAgc3dpcGVyLmxvb3BEZXN0cm95KCk7XG4gICAgc3dpcGVyLmxvb3BDcmVhdGUoKTtcbiAgICBzd2lwZXIudXBkYXRlU2xpZGVzKCk7XG4gICAgc3dpcGVyLnNsaWRlVG8oYWN0aXZlSW5kZXggLSBsb29wZWRTbGlkZXMgKyBzd2lwZXIubG9vcGVkU2xpZGVzLCAwLCBmYWxzZSk7XG4gIH1cblxuICBzd2lwZXIuZW1pdCgnYnJlYWtwb2ludCcsIGJyZWFrcG9pbnRQYXJhbXMpO1xufSIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0QnJlYWtwb2ludChicmVha3BvaW50cywgYmFzZSwgY29udGFpbmVyRWwpIHtcbiAgaWYgKGJhc2UgPT09IHZvaWQgMCkge1xuICAgIGJhc2UgPSAnd2luZG93JztcbiAgfVxuXG4gIGlmICghYnJlYWtwb2ludHMgfHwgYmFzZSA9PT0gJ2NvbnRhaW5lcicgJiYgIWNvbnRhaW5lckVsKSByZXR1cm4gdW5kZWZpbmVkO1xuICB2YXIgYnJlYWtwb2ludCA9IGZhbHNlO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KCk7XG4gIHZhciBjdXJyZW50SGVpZ2h0ID0gYmFzZSA9PT0gJ3dpbmRvdycgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiBjb250YWluZXJFbC5jbGllbnRIZWlnaHQ7XG4gIHZhciBwb2ludHMgPSBPYmplY3Qua2V5cyhicmVha3BvaW50cykubWFwKGZ1bmN0aW9uIChwb2ludCkge1xuICAgIGlmICh0eXBlb2YgcG9pbnQgPT09ICdzdHJpbmcnICYmIHBvaW50LmluZGV4T2YoJ0AnKSA9PT0gMCkge1xuICAgICAgdmFyIG1pblJhdGlvID0gcGFyc2VGbG9hdChwb2ludC5zdWJzdHIoMSkpO1xuICAgICAgdmFyIHZhbHVlID0gY3VycmVudEhlaWdodCAqIG1pblJhdGlvO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBwb2ludDogcG9pbnRcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiBwb2ludCxcbiAgICAgIHBvaW50OiBwb2ludFxuICAgIH07XG4gIH0pO1xuICBwb2ludHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBwYXJzZUludChhLnZhbHVlLCAxMCkgLSBwYXJzZUludChiLnZhbHVlLCAxMCk7XG4gIH0pO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgdmFyIF9wb2ludHMkaSA9IHBvaW50c1tpXSxcbiAgICAgICAgcG9pbnQgPSBfcG9pbnRzJGkucG9pbnQsXG4gICAgICAgIHZhbHVlID0gX3BvaW50cyRpLnZhbHVlO1xuXG4gICAgaWYgKGJhc2UgPT09ICd3aW5kb3cnKSB7XG4gICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEoXCIobWluLXdpZHRoOiBcIiArIHZhbHVlICsgXCJweClcIikubWF0Y2hlcykge1xuICAgICAgICBicmVha3BvaW50ID0gcG9pbnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWx1ZSA8PSBjb250YWluZXJFbC5jbGllbnRXaWR0aCkge1xuICAgICAgYnJlYWtwb2ludCA9IHBvaW50O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBicmVha3BvaW50IHx8ICdtYXgnO1xufSIsImZ1bmN0aW9uIGNoZWNrT3ZlcmZsb3coKSB7XG4gIHZhciBzd2lwZXIgPSB0aGlzO1xuICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcztcbiAgdmFyIHdhc0xvY2tlZCA9IHN3aXBlci5pc0xvY2tlZDtcbiAgdmFyIGxhc3RTbGlkZVBvc2l0aW9uID0gc3dpcGVyLnNsaWRlcy5sZW5ndGggPiAwICYmIHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgKyBwYXJhbXMuc3BhY2VCZXR3ZWVuICogKHN3aXBlci5zbGlkZXMubGVuZ3RoIC0gMSkgKyBzd2lwZXIuc2xpZGVzWzBdLm9mZnNldFdpZHRoICogc3dpcGVyLnNsaWRlcy5sZW5ndGg7XG5cbiAgaWYgKHBhcmFtcy5zbGlkZXNPZmZzZXRCZWZvcmUgJiYgcGFyYW1zLnNsaWRlc09mZnNldEFmdGVyICYmIGxhc3RTbGlkZVBvc2l0aW9uKSB7XG4gICAgc3dpcGVyLmlzTG9ja2VkID0gbGFzdFNsaWRlUG9zaXRpb24gPD0gc3dpcGVyLnNpemU7XG4gIH0gZWxzZSB7XG4gICAgc3dpcGVyLmlzTG9ja2VkID0gc3dpcGVyLnNuYXBHcmlkLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIHN3aXBlci5hbGxvd1NsaWRlTmV4dCA9ICFzd2lwZXIuaXNMb2NrZWQ7XG4gIHN3aXBlci5hbGxvd1NsaWRlUHJldiA9ICFzd2lwZXIuaXNMb2NrZWQ7IC8vIGV2ZW50c1xuXG4gIGlmICh3YXNMb2NrZWQgIT09IHN3aXBlci5pc0xvY2tlZCkgc3dpcGVyLmVtaXQoc3dpcGVyLmlzTG9ja2VkID8gJ2xvY2snIDogJ3VubG9jaycpO1xuXG4gIGlmICh3YXNMb2NrZWQgJiYgd2FzTG9ja2VkICE9PSBzd2lwZXIuaXNMb2NrZWQpIHtcbiAgICBzd2lwZXIuaXNFbmQgPSBmYWxzZTtcbiAgICBpZiAoc3dpcGVyLm5hdmlnYXRpb24pIHN3aXBlci5uYXZpZ2F0aW9uLnVwZGF0ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hlY2tPdmVyZmxvdzogY2hlY2tPdmVyZmxvd1xufTsiLCJpbXBvcnQgbG9hZEltYWdlIGZyb20gJy4vbG9hZEltYWdlJztcbmltcG9ydCBwcmVsb2FkSW1hZ2VzIGZyb20gJy4vcHJlbG9hZEltYWdlcyc7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGxvYWRJbWFnZTogbG9hZEltYWdlLFxuICBwcmVsb2FkSW1hZ2VzOiBwcmVsb2FkSW1hZ2VzXG59OyIsImltcG9ydCB7IGdldFdpbmRvdyB9IGZyb20gJ3Nzci13aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnLi4vLi4vLi4vdXRpbHMvZG9tJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxvYWRJbWFnZShpbWFnZUVsLCBzcmMsIHNyY3NldCwgc2l6ZXMsIGNoZWNrRm9yQ29tcGxldGUsIGNhbGxiYWNrKSB7XG4gIHZhciB3aW5kb3cgPSBnZXRXaW5kb3coKTtcbiAgdmFyIGltYWdlO1xuXG4gIGZ1bmN0aW9uIG9uUmVhZHkoKSB7XG4gICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICB9XG5cbiAgdmFyIGlzUGljdHVyZSA9ICQoaW1hZ2VFbCkucGFyZW50KCdwaWN0dXJlJylbMF07XG5cbiAgaWYgKCFpc1BpY3R1cmUgJiYgKCFpbWFnZUVsLmNvbXBsZXRlIHx8ICFjaGVja0ZvckNvbXBsZXRlKSkge1xuICAgIGlmIChzcmMpIHtcbiAgICAgIGltYWdlID0gbmV3IHdpbmRvdy5JbWFnZSgpO1xuICAgICAgaW1hZ2Uub25sb2FkID0gb25SZWFkeTtcbiAgICAgIGltYWdlLm9uZXJyb3IgPSBvblJlYWR5O1xuXG4gICAgICBpZiAoc2l6ZXMpIHtcbiAgICAgICAgaW1hZ2Uuc2l6ZXMgPSBzaXplcztcbiAgICAgIH1cblxuICAgICAgaWYgKHNyY3NldCkge1xuICAgICAgICBpbWFnZS5zcmNzZXQgPSBzcmNzZXQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgaW1hZ2Uuc3JjID0gc3JjO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvblJlYWR5KCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGltYWdlIGFscmVhZHkgbG9hZGVkLi4uXG4gICAgb25SZWFkeSgpO1xuICB9XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcHJlbG9hZEltYWdlcygpIHtcbiAgdmFyIHN3aXBlciA9IHRoaXM7XG4gIHN3aXBlci5pbWFnZXNUb0xvYWQgPSBzd2lwZXIuJGVsLmZpbmQoJ2ltZycpO1xuXG4gIGZ1bmN0aW9uIG9uUmVhZHkoKSB7XG4gICAgaWYgKHR5cGVvZiBzd2lwZXIgPT09ICd1bmRlZmluZWQnIHx8IHN3aXBlciA9PT0gbnVsbCB8fCAhc3dpcGVyIHx8IHN3aXBlci5kZXN0cm95ZWQpIHJldHVybjtcbiAgICBpZiAoc3dpcGVyLmltYWdlc0xvYWRlZCAhPT0gdW5kZWZpbmVkKSBzd2lwZXIuaW1hZ2VzTG9hZGVkICs9IDE7XG5cbiAgICBpZiAoc3dpcGVyLmltYWdlc0xvYWRlZCA9PT0gc3dpcGVyLmltYWdlc1RvTG9hZC5sZW5ndGgpIHtcbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnVwZGF0ZU9uSW1hZ2VzUmVhZHkpIHN3aXBlci51cGRhdGUoKTtcbiAgICAgIHN3aXBlci5lbWl0KCdpbWFnZXNSZWFkeScpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3dpcGVyLmltYWdlc1RvTG9hZC5sZW5ndGg7IGkgKz0gMSkge1xuICAgIHZhciBpbWFnZUVsID0gc3dpcGVyLmltYWdlc1RvTG9hZFtpXTtcbiAgICBzd2lwZXIubG9hZEltYWdlKGltYWdlRWwsIGltYWdlRWwuY3VycmVudFNyYyB8fCBpbWFnZUVsLmdldEF0dHJpYnV0ZSgnc3JjJyksIGltYWdlRWwuc3Jjc2V0IHx8IGltYWdlRWwuZ2V0QXR0cmlidXRlKCdzcmNzZXQnKSwgaW1hZ2VFbC5zaXplcyB8fCBpbWFnZUVsLmdldEF0dHJpYnV0ZSgnc2l6ZXMnKSwgdHJ1ZSwgb25SZWFkeSk7XG4gIH1cbn0iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgJCBmcm9tICcuLi8uLi91dGlscy9kb20nO1xuaW1wb3J0IHsgZXh0ZW5kLCBiaW5kTW9kdWxlTWV0aG9kcywgY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWxzJztcbnZhciBOYXZpZ2F0aW9uID0ge1xuICB0b2dnbGVFbDogZnVuY3Rpb24gdG9nZ2xlRWwoJGVsLCBkaXNhYmxlZCkge1xuICAgICRlbFtkaXNhYmxlZCA/ICdhZGRDbGFzcycgOiAncmVtb3ZlQ2xhc3MnXSh0aGlzLnBhcmFtcy5uYXZpZ2F0aW9uLmRpc2FibGVkQ2xhc3MpO1xuICAgIGlmICgkZWxbMF0gJiYgJGVsWzBdLnRhZ05hbWUgPT09ICdCVVRUT04nKSAkZWxbMF0uZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfSxcbiAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gICAgLy8gVXBkYXRlIE5hdmlnYXRpb24gQnV0dG9uc1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLm5hdmlnYXRpb247XG4gICAgdmFyIHRvZ2dsZUVsID0gc3dpcGVyLm5hdmlnYXRpb24udG9nZ2xlRWw7XG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkgcmV0dXJuO1xuICAgIHZhciBfc3dpcGVyJG5hdmlnYXRpb24gPSBzd2lwZXIubmF2aWdhdGlvbixcbiAgICAgICAgJG5leHRFbCA9IF9zd2lwZXIkbmF2aWdhdGlvbi4kbmV4dEVsLFxuICAgICAgICAkcHJldkVsID0gX3N3aXBlciRuYXZpZ2F0aW9uLiRwcmV2RWw7XG5cbiAgICBpZiAoJHByZXZFbCAmJiAkcHJldkVsLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmIChzd2lwZXIuaXNCZWdpbm5pbmcpIHtcbiAgICAgICAgdG9nZ2xlRWwoJHByZXZFbCwgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2dnbGVFbCgkcHJldkVsLCBmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLndhdGNoT3ZlcmZsb3cgJiYgc3dpcGVyLmVuYWJsZWQpIHtcbiAgICAgICAgJHByZXZFbFtzd2lwZXIuaXNMb2NrZWQgPyAnYWRkQ2xhc3MnIDogJ3JlbW92ZUNsYXNzJ10ocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCRuZXh0RWwgJiYgJG5leHRFbC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoc3dpcGVyLmlzRW5kKSB7XG4gICAgICAgIHRvZ2dsZUVsKCRuZXh0RWwsIHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdG9nZ2xlRWwoJG5leHRFbCwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICAgICRuZXh0RWxbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgb25QcmV2Q2xpY2s6IGZ1bmN0aW9uIG9uUHJldkNsaWNrKGUpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgaWYgKHN3aXBlci5pc0JlZ2lubmluZyAmJiAhc3dpcGVyLnBhcmFtcy5sb29wKSByZXR1cm47XG4gICAgc3dpcGVyLnNsaWRlUHJldigpO1xuICB9LFxuICBvbk5leHRDbGljazogZnVuY3Rpb24gb25OZXh0Q2xpY2soZSkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoc3dpcGVyLmlzRW5kICYmICFzd2lwZXIucGFyYW1zLmxvb3ApIHJldHVybjtcbiAgICBzd2lwZXIuc2xpZGVOZXh0KCk7XG4gIH0sXG4gIGluaXQ6IGZ1bmN0aW9uIGluaXQoKSB7XG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbjtcbiAgICBzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24gPSBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkKHN3aXBlci4kZWwsIHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbiwgc3dpcGVyLnBhcmFtcy5jcmVhdGVFbGVtZW50cywge1xuICAgICAgbmV4dEVsOiAnc3dpcGVyLWJ1dHRvbi1uZXh0JyxcbiAgICAgIHByZXZFbDogJ3N3aXBlci1idXR0b24tcHJldidcbiAgICB9KTtcbiAgICBpZiAoIShwYXJhbXMubmV4dEVsIHx8IHBhcmFtcy5wcmV2RWwpKSByZXR1cm47XG4gICAgdmFyICRuZXh0RWw7XG4gICAgdmFyICRwcmV2RWw7XG5cbiAgICBpZiAocGFyYW1zLm5leHRFbCkge1xuICAgICAgJG5leHRFbCA9ICQocGFyYW1zLm5leHRFbCk7XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnVuaXF1ZU5hdkVsZW1lbnRzICYmIHR5cGVvZiBwYXJhbXMubmV4dEVsID09PSAnc3RyaW5nJyAmJiAkbmV4dEVsLmxlbmd0aCA+IDEgJiYgc3dpcGVyLiRlbC5maW5kKHBhcmFtcy5uZXh0RWwpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAkbmV4dEVsID0gc3dpcGVyLiRlbC5maW5kKHBhcmFtcy5uZXh0RWwpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMucHJldkVsKSB7XG4gICAgICAkcHJldkVsID0gJChwYXJhbXMucHJldkVsKTtcblxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgdHlwZW9mIHBhcmFtcy5wcmV2RWwgPT09ICdzdHJpbmcnICYmICRwcmV2RWwubGVuZ3RoID4gMSAmJiBzd2lwZXIuJGVsLmZpbmQocGFyYW1zLnByZXZFbCkubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICRwcmV2RWwgPSBzd2lwZXIuJGVsLmZpbmQocGFyYW1zLnByZXZFbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCRuZXh0RWwgJiYgJG5leHRFbC5sZW5ndGggPiAwKSB7XG4gICAgICAkbmV4dEVsLm9uKCdjbGljaycsIHN3aXBlci5uYXZpZ2F0aW9uLm9uTmV4dENsaWNrKTtcbiAgICB9XG5cbiAgICBpZiAoJHByZXZFbCAmJiAkcHJldkVsLmxlbmd0aCA+IDApIHtcbiAgICAgICRwcmV2RWwub24oJ2NsaWNrJywgc3dpcGVyLm5hdmlnYXRpb24ub25QcmV2Q2xpY2spO1xuICAgIH1cblxuICAgIGV4dGVuZChzd2lwZXIubmF2aWdhdGlvbiwge1xuICAgICAgJG5leHRFbDogJG5leHRFbCxcbiAgICAgIG5leHRFbDogJG5leHRFbCAmJiAkbmV4dEVsWzBdLFxuICAgICAgJHByZXZFbDogJHByZXZFbCxcbiAgICAgIHByZXZFbDogJHByZXZFbCAmJiAkcHJldkVsWzBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSB7XG4gICAgICBpZiAoJG5leHRFbCkgJG5leHRFbC5hZGRDbGFzcyhwYXJhbXMubG9ja0NsYXNzKTtcbiAgICAgIGlmICgkcHJldkVsKSAkcHJldkVsLmFkZENsYXNzKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgIH1cbiAgfSxcbiAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICB2YXIgX3N3aXBlciRuYXZpZ2F0aW9uMiA9IHN3aXBlci5uYXZpZ2F0aW9uLFxuICAgICAgICAkbmV4dEVsID0gX3N3aXBlciRuYXZpZ2F0aW9uMi4kbmV4dEVsLFxuICAgICAgICAkcHJldkVsID0gX3N3aXBlciRuYXZpZ2F0aW9uMi4kcHJldkVsO1xuXG4gICAgaWYgKCRuZXh0RWwgJiYgJG5leHRFbC5sZW5ndGgpIHtcbiAgICAgICRuZXh0RWwub2ZmKCdjbGljaycsIHN3aXBlci5uYXZpZ2F0aW9uLm9uTmV4dENsaWNrKTtcbiAgICAgICRuZXh0RWwucmVtb3ZlQ2xhc3Moc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmRpc2FibGVkQ2xhc3MpO1xuICAgIH1cblxuICAgIGlmICgkcHJldkVsICYmICRwcmV2RWwubGVuZ3RoKSB7XG4gICAgICAkcHJldkVsLm9mZignY2xpY2snLCBzd2lwZXIubmF2aWdhdGlvbi5vblByZXZDbGljayk7XG4gICAgICAkcHJldkVsLnJlbW92ZUNsYXNzKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5kaXNhYmxlZENsYXNzKTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICduYXZpZ2F0aW9uJyxcbiAgcGFyYW1zOiB7XG4gICAgbmF2aWdhdGlvbjoge1xuICAgICAgbmV4dEVsOiBudWxsLFxuICAgICAgcHJldkVsOiBudWxsLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgZGlzYWJsZWRDbGFzczogJ3N3aXBlci1idXR0b24tZGlzYWJsZWQnLFxuICAgICAgaGlkZGVuQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWhpZGRlbicsXG4gICAgICBsb2NrQ2xhc3M6ICdzd2lwZXItYnV0dG9uLWxvY2snXG4gICAgfVxuICB9LFxuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBiaW5kTW9kdWxlTWV0aG9kcyhzd2lwZXIsIHtcbiAgICAgIG5hdmlnYXRpb246IF9leHRlbmRzKHt9LCBOYXZpZ2F0aW9uKVxuICAgIH0pO1xuICB9LFxuICBvbjoge1xuICAgIGluaXQ6IGZ1bmN0aW9uIGluaXQoc3dpcGVyKSB7XG4gICAgICBzd2lwZXIubmF2aWdhdGlvbi5pbml0KCk7XG4gICAgICBzd2lwZXIubmF2aWdhdGlvbi51cGRhdGUoKTtcbiAgICB9LFxuICAgIHRvRWRnZTogZnVuY3Rpb24gdG9FZGdlKHN3aXBlcikge1xuICAgICAgc3dpcGVyLm5hdmlnYXRpb24udXBkYXRlKCk7XG4gICAgfSxcbiAgICBmcm9tRWRnZTogZnVuY3Rpb24gZnJvbUVkZ2Uoc3dpcGVyKSB7XG4gICAgICBzd2lwZXIubmF2aWdhdGlvbi51cGRhdGUoKTtcbiAgICB9LFxuICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koc3dpcGVyKSB7XG4gICAgICBzd2lwZXIubmF2aWdhdGlvbi5kZXN0cm95KCk7XG4gICAgfSxcbiAgICAnZW5hYmxlIGRpc2FibGUnOiBmdW5jdGlvbiBlbmFibGVEaXNhYmxlKHN3aXBlcikge1xuICAgICAgdmFyIF9zd2lwZXIkbmF2aWdhdGlvbjMgPSBzd2lwZXIubmF2aWdhdGlvbixcbiAgICAgICAgICAkbmV4dEVsID0gX3N3aXBlciRuYXZpZ2F0aW9uMy4kbmV4dEVsLFxuICAgICAgICAgICRwcmV2RWwgPSBfc3dpcGVyJG5hdmlnYXRpb24zLiRwcmV2RWw7XG5cbiAgICAgIGlmICgkbmV4dEVsKSB7XG4gICAgICAgICRuZXh0RWxbc3dpcGVyLmVuYWJsZWQgPyAncmVtb3ZlQ2xhc3MnIDogJ2FkZENsYXNzJ10oc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmxvY2tDbGFzcyk7XG4gICAgICB9XG5cbiAgICAgIGlmICgkcHJldkVsKSB7XG4gICAgICAgICRwcmV2RWxbc3dpcGVyLmVuYWJsZWQgPyAncmVtb3ZlQ2xhc3MnIDogJ2FkZENsYXNzJ10oc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmxvY2tDbGFzcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjbGljazogZnVuY3Rpb24gY2xpY2soc3dpcGVyLCBlKSB7XG4gICAgICB2YXIgX3N3aXBlciRuYXZpZ2F0aW9uNCA9IHN3aXBlci5uYXZpZ2F0aW9uLFxuICAgICAgICAgICRuZXh0RWwgPSBfc3dpcGVyJG5hdmlnYXRpb240LiRuZXh0RWwsXG4gICAgICAgICAgJHByZXZFbCA9IF9zd2lwZXIkbmF2aWdhdGlvbjQuJHByZXZFbDtcbiAgICAgIHZhciB0YXJnZXRFbCA9IGUudGFyZ2V0O1xuXG4gICAgICBpZiAoc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGVPbkNsaWNrICYmICEkKHRhcmdldEVsKS5pcygkcHJldkVsKSAmJiAhJCh0YXJnZXRFbCkuaXMoJG5leHRFbCkpIHtcbiAgICAgICAgaWYgKHN3aXBlci5wYWdpbmF0aW9uICYmIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbiAmJiBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uY2xpY2thYmxlICYmIChzd2lwZXIucGFnaW5hdGlvbi5lbCA9PT0gdGFyZ2V0RWwgfHwgc3dpcGVyLnBhZ2luYXRpb24uZWwuY29udGFpbnModGFyZ2V0RWwpKSkgcmV0dXJuO1xuICAgICAgICB2YXIgaXNIaWRkZW47XG5cbiAgICAgICAgaWYgKCRuZXh0RWwpIHtcbiAgICAgICAgICBpc0hpZGRlbiA9ICRuZXh0RWwuaGFzQ2xhc3Moc3dpcGVyLnBhcmFtcy5uYXZpZ2F0aW9uLmhpZGRlbkNsYXNzKTtcbiAgICAgICAgfSBlbHNlIGlmICgkcHJldkVsKSB7XG4gICAgICAgICAgaXNIaWRkZW4gPSAkcHJldkVsLmhhc0NsYXNzKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNIaWRkZW4gPT09IHRydWUpIHtcbiAgICAgICAgICBzd2lwZXIuZW1pdCgnbmF2aWdhdGlvblNob3cnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2lwZXIuZW1pdCgnbmF2aWdhdGlvbkhpZGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgkbmV4dEVsKSB7XG4gICAgICAgICAgJG5leHRFbC50b2dnbGVDbGFzcyhzd2lwZXIucGFyYW1zLm5hdmlnYXRpb24uaGlkZGVuQ2xhc3MpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCRwcmV2RWwpIHtcbiAgICAgICAgICAkcHJldkVsLnRvZ2dsZUNsYXNzKHN3aXBlci5wYXJhbXMubmF2aWdhdGlvbi5oaWRkZW5DbGFzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0ICQgZnJvbSAnLi4vLi4vdXRpbHMvZG9tJztcbmltcG9ydCB7IGV4dGVuZCwgYmluZE1vZHVsZU1ldGhvZHMsIGNsYXNzZXNUb1NlbGVjdG9yLCBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkIH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xudmFyIFBhZ2luYXRpb24gPSB7XG4gIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgIC8vIFJlbmRlciB8fCBVcGRhdGUgUGFnaW5hdGlvbiBidWxsZXRzL2l0ZW1zXG4gICAgdmFyIHN3aXBlciA9IHRoaXM7XG4gICAgdmFyIHJ0bCA9IHN3aXBlci5ydGw7XG4gICAgdmFyIHBhcmFtcyA9IHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbjtcbiAgICBpZiAoIXBhcmFtcy5lbCB8fCAhc3dpcGVyLnBhZ2luYXRpb24uZWwgfHwgIXN3aXBlci5wYWdpbmF0aW9uLiRlbCB8fCBzd2lwZXIucGFnaW5hdGlvbi4kZWwubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdmFyIHNsaWRlc0xlbmd0aCA9IHN3aXBlci52aXJ0dWFsICYmIHN3aXBlci5wYXJhbXMudmlydHVhbC5lbmFibGVkID8gc3dpcGVyLnZpcnR1YWwuc2xpZGVzLmxlbmd0aCA6IHN3aXBlci5zbGlkZXMubGVuZ3RoO1xuICAgIHZhciAkZWwgPSBzd2lwZXIucGFnaW5hdGlvbi4kZWw7IC8vIEN1cnJlbnQvVG90YWxcblxuICAgIHZhciBjdXJyZW50O1xuICAgIHZhciB0b3RhbCA9IHN3aXBlci5wYXJhbXMubG9vcCA/IE1hdGguY2VpbCgoc2xpZGVzTGVuZ3RoIC0gc3dpcGVyLmxvb3BlZFNsaWRlcyAqIDIpIC8gc3dpcGVyLnBhcmFtcy5zbGlkZXNQZXJHcm91cCkgOiBzd2lwZXIuc25hcEdyaWQubGVuZ3RoO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgY3VycmVudCA9IE1hdGguY2VpbCgoc3dpcGVyLmFjdGl2ZUluZGV4IC0gc3dpcGVyLmxvb3BlZFNsaWRlcykgLyBzd2lwZXIucGFyYW1zLnNsaWRlc1Blckdyb3VwKTtcblxuICAgICAgaWYgKGN1cnJlbnQgPiBzbGlkZXNMZW5ndGggLSAxIC0gc3dpcGVyLmxvb3BlZFNsaWRlcyAqIDIpIHtcbiAgICAgICAgY3VycmVudCAtPSBzbGlkZXNMZW5ndGggLSBzd2lwZXIubG9vcGVkU2xpZGVzICogMjtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnQgPiB0b3RhbCAtIDEpIGN1cnJlbnQgLT0gdG90YWw7XG4gICAgICBpZiAoY3VycmVudCA8IDAgJiYgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uVHlwZSAhPT0gJ2J1bGxldHMnKSBjdXJyZW50ID0gdG90YWwgKyBjdXJyZW50O1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHN3aXBlci5zbmFwSW5kZXggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjdXJyZW50ID0gc3dpcGVyLnNuYXBJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VycmVudCA9IHN3aXBlci5hY3RpdmVJbmRleCB8fCAwO1xuICAgIH0gLy8gVHlwZXNcblxuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnYnVsbGV0cycgJiYgc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cyAmJiBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBidWxsZXRzID0gc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0cztcbiAgICAgIHZhciBmaXJzdEluZGV4O1xuICAgICAgdmFyIGxhc3RJbmRleDtcbiAgICAgIHZhciBtaWRJbmRleDtcblxuICAgICAgaWYgKHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgICBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRTaXplID0gYnVsbGV0cy5lcSgwKVtzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnb3V0ZXJXaWR0aCcgOiAnb3V0ZXJIZWlnaHQnXSh0cnVlKTtcbiAgICAgICAgJGVsLmNzcyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyAnd2lkdGgnIDogJ2hlaWdodCcsIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldFNpemUgKiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyArIDQpICsgXCJweFwiKTtcblxuICAgICAgICBpZiAocGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyA+IDEgJiYgc3dpcGVyLnByZXZpb3VzSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHN3aXBlci5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleCArPSBjdXJyZW50IC0gc3dpcGVyLnByZXZpb3VzSW5kZXg7XG5cbiAgICAgICAgICBpZiAoc3dpcGVyLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4ID4gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyAtIDEpIHtcbiAgICAgICAgICAgIHN3aXBlci5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleCA9IHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHMgLSAxO1xuICAgICAgICAgIH0gZWxzZSBpZiAoc3dpcGVyLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4IDwgMCkge1xuICAgICAgICAgICAgc3dpcGVyLnBhZ2luYXRpb24uZHluYW1pY0J1bGxldEluZGV4ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmaXJzdEluZGV4ID0gY3VycmVudCAtIHN3aXBlci5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleDtcbiAgICAgICAgbGFzdEluZGV4ID0gZmlyc3RJbmRleCArIChNYXRoLm1pbihidWxsZXRzLmxlbmd0aCwgcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cykgLSAxKTtcbiAgICAgICAgbWlkSW5kZXggPSAobGFzdEluZGV4ICsgZmlyc3RJbmRleCkgLyAyO1xuICAgICAgfVxuXG4gICAgICBidWxsZXRzLnJlbW92ZUNsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiIFwiICsgcGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzICsgXCItbmV4dCBcIiArIHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLW5leHQtbmV4dCBcIiArIHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLXByZXYgXCIgKyBwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1wcmV2LXByZXYgXCIgKyBwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1tYWluXCIpO1xuXG4gICAgICBpZiAoJGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgYnVsbGV0cy5lYWNoKGZ1bmN0aW9uIChidWxsZXQpIHtcbiAgICAgICAgICB2YXIgJGJ1bGxldCA9ICQoYnVsbGV0KTtcbiAgICAgICAgICB2YXIgYnVsbGV0SW5kZXggPSAkYnVsbGV0LmluZGV4KCk7XG5cbiAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGN1cnJlbnQpIHtcbiAgICAgICAgICAgICRidWxsZXQuYWRkQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPj0gZmlyc3RJbmRleCAmJiBidWxsZXRJbmRleCA8PSBsYXN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgJGJ1bGxldC5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1tYWluXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGZpcnN0SW5kZXgpIHtcbiAgICAgICAgICAgICAgJGJ1bGxldC5wcmV2KCkuYWRkQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzICsgXCItcHJldlwiKS5wcmV2KCkuYWRkQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzICsgXCItcHJldi1wcmV2XCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYnVsbGV0SW5kZXggPT09IGxhc3RJbmRleCkge1xuICAgICAgICAgICAgICAkYnVsbGV0Lm5leHQoKS5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1uZXh0XCIpLm5leHQoKS5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1uZXh0LW5leHRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciAkYnVsbGV0ID0gYnVsbGV0cy5lcShjdXJyZW50KTtcbiAgICAgICAgdmFyIGJ1bGxldEluZGV4ID0gJGJ1bGxldC5pbmRleCgpO1xuICAgICAgICAkYnVsbGV0LmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgICAgIHZhciAkZmlyc3REaXNwbGF5ZWRCdWxsZXQgPSBidWxsZXRzLmVxKGZpcnN0SW5kZXgpO1xuICAgICAgICAgIHZhciAkbGFzdERpc3BsYXllZEJ1bGxldCA9IGJ1bGxldHMuZXEobGFzdEluZGV4KTtcblxuICAgICAgICAgIGZvciAodmFyIGkgPSBmaXJzdEluZGV4OyBpIDw9IGxhc3RJbmRleDsgaSArPSAxKSB7XG4gICAgICAgICAgICBidWxsZXRzLmVxKGkpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLW1haW5cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICAgICAgaWYgKGJ1bGxldEluZGV4ID49IGJ1bGxldHMubGVuZ3RoIC0gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cykge1xuICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IHBhcmFtcy5keW5hbWljTWFpbkJ1bGxldHM7IF9pID49IDA7IF9pIC09IDEpIHtcbiAgICAgICAgICAgICAgICBidWxsZXRzLmVxKGJ1bGxldHMubGVuZ3RoIC0gX2kpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLW1haW5cIik7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBidWxsZXRzLmVxKGJ1bGxldHMubGVuZ3RoIC0gcGFyYW1zLmR5bmFtaWNNYWluQnVsbGV0cyAtIDEpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLXByZXZcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAkZmlyc3REaXNwbGF5ZWRCdWxsZXQucHJldigpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLXByZXZcIikucHJldigpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLXByZXYtcHJldlwiKTtcbiAgICAgICAgICAgICAgJGxhc3REaXNwbGF5ZWRCdWxsZXQubmV4dCgpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLW5leHRcIikubmV4dCgpLmFkZENsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyArIFwiLW5leHQtbmV4dFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgJGZpcnN0RGlzcGxheWVkQnVsbGV0LnByZXYoKS5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1wcmV2XCIpLnByZXYoKS5hZGRDbGFzcyhwYXJhbXMuYnVsbGV0QWN0aXZlQ2xhc3MgKyBcIi1wcmV2LXByZXZcIik7XG4gICAgICAgICAgICAkbGFzdERpc3BsYXllZEJ1bGxldC5uZXh0KCkuYWRkQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzICsgXCItbmV4dFwiKS5uZXh0KCkuYWRkQ2xhc3MocGFyYW1zLmJ1bGxldEFjdGl2ZUNsYXNzICsgXCItbmV4dC1uZXh0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zLmR5bmFtaWNCdWxsZXRzKSB7XG4gICAgICAgIHZhciBkeW5hbWljQnVsbGV0c0xlbmd0aCA9IE1hdGgubWluKGJ1bGxldHMubGVuZ3RoLCBwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzICsgNCk7XG4gICAgICAgIHZhciBidWxsZXRzT2Zmc2V0ID0gKHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldFNpemUgKiBkeW5hbWljQnVsbGV0c0xlbmd0aCAtIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldFNpemUpIC8gMiAtIG1pZEluZGV4ICogc3dpcGVyLnBhZ2luYXRpb24uYnVsbGV0U2l6ZTtcbiAgICAgICAgdmFyIG9mZnNldFByb3AgPSBydGwgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgICAgICBidWxsZXRzLmNzcyhzd2lwZXIuaXNIb3Jpem9udGFsKCkgPyBvZmZzZXRQcm9wIDogJ3RvcCcsIGJ1bGxldHNPZmZzZXQgKyBcInB4XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2ZyYWN0aW9uJykge1xuICAgICAgJGVsLmZpbmQoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLmN1cnJlbnRDbGFzcykpLnRleHQocGFyYW1zLmZvcm1hdEZyYWN0aW9uQ3VycmVudChjdXJyZW50ICsgMSkpO1xuICAgICAgJGVsLmZpbmQoY2xhc3Nlc1RvU2VsZWN0b3IocGFyYW1zLnRvdGFsQ2xhc3MpKS50ZXh0KHBhcmFtcy5mb3JtYXRGcmFjdGlvblRvdGFsKHRvdGFsKSk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAncHJvZ3Jlc3NiYXInKSB7XG4gICAgICB2YXIgcHJvZ3Jlc3NiYXJEaXJlY3Rpb247XG5cbiAgICAgIGlmIChwYXJhbXMucHJvZ3Jlc3NiYXJPcHBvc2l0ZSkge1xuICAgICAgICBwcm9ncmVzc2JhckRpcmVjdGlvbiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9ncmVzc2JhckRpcmVjdGlvbiA9IHN3aXBlci5pc0hvcml6b250YWwoKSA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCc7XG4gICAgICB9XG5cbiAgICAgIHZhciBzY2FsZSA9IChjdXJyZW50ICsgMSkgLyB0b3RhbDtcbiAgICAgIHZhciBzY2FsZVggPSAxO1xuICAgICAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgICAgIGlmIChwcm9ncmVzc2JhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XG4gICAgICAgIHNjYWxlWCA9IHNjYWxlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2NhbGVZID0gc2NhbGU7XG4gICAgICB9XG5cbiAgICAgICRlbC5maW5kKGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5wcm9ncmVzc2JhckZpbGxDbGFzcykpLnRyYW5zZm9ybShcInRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZVgoXCIgKyBzY2FsZVggKyBcIikgc2NhbGVZKFwiICsgc2NhbGVZICsgXCIpXCIpLnRyYW5zaXRpb24oc3dpcGVyLnBhcmFtcy5zcGVlZCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnY3VzdG9tJyAmJiBwYXJhbXMucmVuZGVyQ3VzdG9tKSB7XG4gICAgICAkZWwuaHRtbChwYXJhbXMucmVuZGVyQ3VzdG9tKHN3aXBlciwgY3VycmVudCArIDEsIHRvdGFsKSk7XG4gICAgICBzd2lwZXIuZW1pdCgncGFnaW5hdGlvblJlbmRlcicsICRlbFswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXBlci5lbWl0KCdwYWdpbmF0aW9uVXBkYXRlJywgJGVsWzBdKTtcbiAgICB9XG5cbiAgICBpZiAoc3dpcGVyLnBhcmFtcy53YXRjaE92ZXJmbG93ICYmIHN3aXBlci5lbmFibGVkKSB7XG4gICAgICAkZWxbc3dpcGVyLmlzTG9ja2VkID8gJ2FkZENsYXNzJyA6ICdyZW1vdmVDbGFzcyddKHBhcmFtcy5sb2NrQ2xhc3MpO1xuICAgIH1cbiAgfSxcbiAgcmVuZGVyOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgLy8gUmVuZGVyIENvbnRhaW5lclxuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKCFwYXJhbXMuZWwgfHwgIXN3aXBlci5wYWdpbmF0aW9uLmVsIHx8ICFzd2lwZXIucGFnaW5hdGlvbi4kZWwgfHwgc3dpcGVyLnBhZ2luYXRpb24uJGVsLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciBzbGlkZXNMZW5ndGggPSBzd2lwZXIudmlydHVhbCAmJiBzd2lwZXIucGFyYW1zLnZpcnR1YWwuZW5hYmxlZCA/IHN3aXBlci52aXJ0dWFsLnNsaWRlcy5sZW5ndGggOiBzd2lwZXIuc2xpZGVzLmxlbmd0aDtcbiAgICB2YXIgJGVsID0gc3dpcGVyLnBhZ2luYXRpb24uJGVsO1xuICAgIHZhciBwYWdpbmF0aW9uSFRNTCA9ICcnO1xuXG4gICAgaWYgKHBhcmFtcy50eXBlID09PSAnYnVsbGV0cycpIHtcbiAgICAgIHZhciBudW1iZXJPZkJ1bGxldHMgPSBzd2lwZXIucGFyYW1zLmxvb3AgPyBNYXRoLmNlaWwoKHNsaWRlc0xlbmd0aCAtIHN3aXBlci5sb29wZWRTbGlkZXMgKiAyKSAvIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXApIDogc3dpcGVyLnNuYXBHcmlkLmxlbmd0aDtcblxuICAgICAgaWYgKHN3aXBlci5wYXJhbXMuZnJlZU1vZGUgJiYgIXN3aXBlci5wYXJhbXMubG9vcCAmJiBudW1iZXJPZkJ1bGxldHMgPiBzbGlkZXNMZW5ndGgpIHtcbiAgICAgICAgbnVtYmVyT2ZCdWxsZXRzID0gc2xpZGVzTGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bWJlck9mQnVsbGV0czsgaSArPSAxKSB7XG4gICAgICAgIGlmIChwYXJhbXMucmVuZGVyQnVsbGV0KSB7XG4gICAgICAgICAgcGFnaW5hdGlvbkhUTUwgKz0gcGFyYW1zLnJlbmRlckJ1bGxldC5jYWxsKHN3aXBlciwgaSwgcGFyYW1zLmJ1bGxldENsYXNzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYWdpbmF0aW9uSFRNTCArPSBcIjxcIiArIHBhcmFtcy5idWxsZXRFbGVtZW50ICsgXCIgY2xhc3M9XFxcIlwiICsgcGFyYW1zLmJ1bGxldENsYXNzICsgXCJcXFwiPjwvXCIgKyBwYXJhbXMuYnVsbGV0RWxlbWVudCArIFwiPlwiO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRlbC5odG1sKHBhZ2luYXRpb25IVE1MKTtcbiAgICAgIHN3aXBlci5wYWdpbmF0aW9uLmJ1bGxldHMgPSAkZWwuZmluZChjbGFzc2VzVG9TZWxlY3RvcihwYXJhbXMuYnVsbGV0Q2xhc3MpKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdmcmFjdGlvbicpIHtcbiAgICAgIGlmIChwYXJhbXMucmVuZGVyRnJhY3Rpb24pIHtcbiAgICAgICAgcGFnaW5hdGlvbkhUTUwgPSBwYXJhbXMucmVuZGVyRnJhY3Rpb24uY2FsbChzd2lwZXIsIHBhcmFtcy5jdXJyZW50Q2xhc3MsIHBhcmFtcy50b3RhbENsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gXCI8c3BhbiBjbGFzcz1cXFwiXCIgKyBwYXJhbXMuY3VycmVudENsYXNzICsgXCJcXFwiPjwvc3Bhbj5cIiArICcgLyAnICsgKFwiPHNwYW4gY2xhc3M9XFxcIlwiICsgcGFyYW1zLnRvdGFsQ2xhc3MgKyBcIlxcXCI+PC9zcGFuPlwiKTtcbiAgICAgIH1cblxuICAgICAgJGVsLmh0bWwocGFnaW5hdGlvbkhUTUwpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ3Byb2dyZXNzYmFyJykge1xuICAgICAgaWYgKHBhcmFtcy5yZW5kZXJQcm9ncmVzc2Jhcikge1xuICAgICAgICBwYWdpbmF0aW9uSFRNTCA9IHBhcmFtcy5yZW5kZXJQcm9ncmVzc2Jhci5jYWxsKHN3aXBlciwgcGFyYW1zLnByb2dyZXNzYmFyRmlsbENsYXNzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhZ2luYXRpb25IVE1MID0gXCI8c3BhbiBjbGFzcz1cXFwiXCIgKyBwYXJhbXMucHJvZ3Jlc3NiYXJGaWxsQ2xhc3MgKyBcIlxcXCI+PC9zcGFuPlwiO1xuICAgICAgfVxuXG4gICAgICAkZWwuaHRtbChwYWdpbmF0aW9uSFRNTCk7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtcy50eXBlICE9PSAnY3VzdG9tJykge1xuICAgICAgc3dpcGVyLmVtaXQoJ3BhZ2luYXRpb25SZW5kZXInLCBzd2lwZXIucGFnaW5hdGlvbi4kZWxbMF0pO1xuICAgIH1cbiAgfSxcbiAgaW5pdDogZnVuY3Rpb24gaW5pdCgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24gPSBjcmVhdGVFbGVtZW50SWZOb3REZWZpbmVkKHN3aXBlci4kZWwsIHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbiwgc3dpcGVyLnBhcmFtcy5jcmVhdGVFbGVtZW50cywge1xuICAgICAgZWw6ICdzd2lwZXItcGFnaW5hdGlvbidcbiAgICB9KTtcbiAgICB2YXIgcGFyYW1zID0gc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uO1xuICAgIGlmICghcGFyYW1zLmVsKSByZXR1cm47XG4gICAgdmFyICRlbCA9ICQocGFyYW1zLmVsKTtcbiAgICBpZiAoJGVsLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgaWYgKHN3aXBlci5wYXJhbXMudW5pcXVlTmF2RWxlbWVudHMgJiYgdHlwZW9mIHBhcmFtcy5lbCA9PT0gJ3N0cmluZycgJiYgJGVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICRlbCA9IHN3aXBlci4kZWwuZmluZChwYXJhbXMuZWwpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHBhcmFtcy5jbGlja2FibGUpIHtcbiAgICAgICRlbC5hZGRDbGFzcyhwYXJhbXMuY2xpY2thYmxlQ2xhc3MpO1xuICAgIH1cblxuICAgICRlbC5hZGRDbGFzcyhwYXJhbXMubW9kaWZpZXJDbGFzcyArIHBhcmFtcy50eXBlKTtcblxuICAgIGlmIChwYXJhbXMudHlwZSA9PT0gJ2J1bGxldHMnICYmIHBhcmFtcy5keW5hbWljQnVsbGV0cykge1xuICAgICAgJGVsLmFkZENsYXNzKFwiXCIgKyBwYXJhbXMubW9kaWZpZXJDbGFzcyArIHBhcmFtcy50eXBlICsgXCItZHluYW1pY1wiKTtcbiAgICAgIHN3aXBlci5wYWdpbmF0aW9uLmR5bmFtaWNCdWxsZXRJbmRleCA9IDA7XG5cbiAgICAgIGlmIChwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzIDwgMSkge1xuICAgICAgICBwYXJhbXMuZHluYW1pY01haW5CdWxsZXRzID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLnR5cGUgPT09ICdwcm9ncmVzc2JhcicgJiYgcGFyYW1zLnByb2dyZXNzYmFyT3Bwb3NpdGUpIHtcbiAgICAgICRlbC5hZGRDbGFzcyhwYXJhbXMucHJvZ3Jlc3NiYXJPcHBvc2l0ZUNsYXNzKTtcbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmNsaWNrYWJsZSkge1xuICAgICAgJGVsLm9uKCdjbGljaycsIGNsYXNzZXNUb1NlbGVjdG9yKHBhcmFtcy5idWxsZXRDbGFzcyksIGZ1bmN0aW9uIG9uQ2xpY2soZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciBpbmRleCA9ICQodGhpcykuaW5kZXgoKSAqIHN3aXBlci5wYXJhbXMuc2xpZGVzUGVyR3JvdXA7XG4gICAgICAgIGlmIChzd2lwZXIucGFyYW1zLmxvb3ApIGluZGV4ICs9IHN3aXBlci5sb29wZWRTbGlkZXM7XG4gICAgICAgIHN3aXBlci5zbGlkZVRvKGluZGV4KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGV4dGVuZChzd2lwZXIucGFnaW5hdGlvbiwge1xuICAgICAgJGVsOiAkZWwsXG4gICAgICBlbDogJGVsWzBdXG4gICAgfSk7XG5cbiAgICBpZiAoIXN3aXBlci5lbmFibGVkKSB7XG4gICAgICAkZWwuYWRkQ2xhc3MocGFyYW1zLmxvY2tDbGFzcyk7XG4gICAgfVxuICB9LFxuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIHZhciBzd2lwZXIgPSB0aGlzO1xuICAgIHZhciBwYXJhbXMgPSBzd2lwZXIucGFyYW1zLnBhZ2luYXRpb247XG4gICAgaWYgKCFwYXJhbXMuZWwgfHwgIXN3aXBlci5wYWdpbmF0aW9uLmVsIHx8ICFzd2lwZXIucGFnaW5hdGlvbi4kZWwgfHwgc3dpcGVyLnBhZ2luYXRpb24uJGVsLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciAkZWwgPSBzd2lwZXIucGFnaW5hdGlvbi4kZWw7XG4gICAgJGVsLnJlbW92ZUNsYXNzKHBhcmFtcy5oaWRkZW5DbGFzcyk7XG4gICAgJGVsLnJlbW92ZUNsYXNzKHBhcmFtcy5tb2RpZmllckNsYXNzICsgcGFyYW1zLnR5cGUpO1xuICAgIGlmIChzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzKSBzd2lwZXIucGFnaW5hdGlvbi5idWxsZXRzLnJlbW92ZUNsYXNzKHBhcmFtcy5idWxsZXRBY3RpdmVDbGFzcyk7XG5cbiAgICBpZiAocGFyYW1zLmNsaWNrYWJsZSkge1xuICAgICAgJGVsLm9mZignY2xpY2snLCBjbGFzc2VzVG9TZWxlY3RvcihwYXJhbXMuYnVsbGV0Q2xhc3MpKTtcbiAgICB9XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwYWdpbmF0aW9uJyxcbiAgcGFyYW1zOiB7XG4gICAgcGFnaW5hdGlvbjoge1xuICAgICAgZWw6IG51bGwsXG4gICAgICBidWxsZXRFbGVtZW50OiAnc3BhbicsXG4gICAgICBjbGlja2FibGU6IGZhbHNlLFxuICAgICAgaGlkZU9uQ2xpY2s6IGZhbHNlLFxuICAgICAgcmVuZGVyQnVsbGV0OiBudWxsLFxuICAgICAgcmVuZGVyUHJvZ3Jlc3NiYXI6IG51bGwsXG4gICAgICByZW5kZXJGcmFjdGlvbjogbnVsbCxcbiAgICAgIHJlbmRlckN1c3RvbTogbnVsbCxcbiAgICAgIHByb2dyZXNzYmFyT3Bwb3NpdGU6IGZhbHNlLFxuICAgICAgdHlwZTogJ2J1bGxldHMnLFxuICAgICAgLy8gJ2J1bGxldHMnIG9yICdwcm9ncmVzc2Jhcicgb3IgJ2ZyYWN0aW9uJyBvciAnY3VzdG9tJ1xuICAgICAgZHluYW1pY0J1bGxldHM6IGZhbHNlLFxuICAgICAgZHluYW1pY01haW5CdWxsZXRzOiAxLFxuICAgICAgZm9ybWF0RnJhY3Rpb25DdXJyZW50OiBmdW5jdGlvbiBmb3JtYXRGcmFjdGlvbkN1cnJlbnQobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBudW1iZXI7XG4gICAgICB9LFxuICAgICAgZm9ybWF0RnJhY3Rpb25Ub3RhbDogZnVuY3Rpb24gZm9ybWF0RnJhY3Rpb25Ub3RhbChudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICAgIH0sXG4gICAgICBidWxsZXRDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLWJ1bGxldCcsXG4gICAgICBidWxsZXRBY3RpdmVDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLWJ1bGxldC1hY3RpdmUnLFxuICAgICAgbW9kaWZpZXJDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLScsXG4gICAgICAvLyBORVdcbiAgICAgIGN1cnJlbnRDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLWN1cnJlbnQnLFxuICAgICAgdG90YWxDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLXRvdGFsJyxcbiAgICAgIGhpZGRlbkNsYXNzOiAnc3dpcGVyLXBhZ2luYXRpb24taGlkZGVuJyxcbiAgICAgIHByb2dyZXNzYmFyRmlsbENsYXNzOiAnc3dpcGVyLXBhZ2luYXRpb24tcHJvZ3Jlc3NiYXItZmlsbCcsXG4gICAgICBwcm9ncmVzc2Jhck9wcG9zaXRlQ2xhc3M6ICdzd2lwZXItcGFnaW5hdGlvbi1wcm9ncmVzc2Jhci1vcHBvc2l0ZScsXG4gICAgICBjbGlja2FibGVDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLWNsaWNrYWJsZScsXG4gICAgICAvLyBORVdcbiAgICAgIGxvY2tDbGFzczogJ3N3aXBlci1wYWdpbmF0aW9uLWxvY2snXG4gICAgfVxuICB9LFxuICBjcmVhdGU6IGZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgICB2YXIgc3dpcGVyID0gdGhpcztcbiAgICBiaW5kTW9kdWxlTWV0aG9kcyhzd2lwZXIsIHtcbiAgICAgIHBhZ2luYXRpb246IF9leHRlbmRzKHtcbiAgICAgICAgZHluYW1pY0J1bGxldEluZGV4OiAwXG4gICAgICB9LCBQYWdpbmF0aW9uKVxuICAgIH0pO1xuICB9LFxuICBvbjoge1xuICAgIGluaXQ6IGZ1bmN0aW9uIGluaXQoc3dpcGVyKSB7XG4gICAgICBzd2lwZXIucGFnaW5hdGlvbi5pbml0KCk7XG4gICAgICBzd2lwZXIucGFnaW5hdGlvbi5yZW5kZXIoKTtcbiAgICAgIHN3aXBlci5wYWdpbmF0aW9uLnVwZGF0ZSgpO1xuICAgIH0sXG4gICAgYWN0aXZlSW5kZXhDaGFuZ2U6IGZ1bmN0aW9uIGFjdGl2ZUluZGV4Q2hhbmdlKHN3aXBlcikge1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXIucGFnaW5hdGlvbi51cGRhdGUoKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN3aXBlci5zbmFwSW5kZXggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHN3aXBlci5wYWdpbmF0aW9uLnVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH0sXG4gICAgc25hcEluZGV4Q2hhbmdlOiBmdW5jdGlvbiBzbmFwSW5kZXhDaGFuZ2Uoc3dpcGVyKSB7XG4gICAgICBpZiAoIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXIucGFnaW5hdGlvbi51cGRhdGUoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNsaWRlc0xlbmd0aENoYW5nZTogZnVuY3Rpb24gc2xpZGVzTGVuZ3RoQ2hhbmdlKHN3aXBlcikge1xuICAgICAgaWYgKHN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXIucGFnaW5hdGlvbi5yZW5kZXIoKTtcbiAgICAgICAgc3dpcGVyLnBhZ2luYXRpb24udXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzbmFwR3JpZExlbmd0aENoYW5nZTogZnVuY3Rpb24gc25hcEdyaWRMZW5ndGhDaGFuZ2Uoc3dpcGVyKSB7XG4gICAgICBpZiAoIXN3aXBlci5wYXJhbXMubG9vcCkge1xuICAgICAgICBzd2lwZXIucGFnaW5hdGlvbi5yZW5kZXIoKTtcbiAgICAgICAgc3dpcGVyLnBhZ2luYXRpb24udXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KHN3aXBlcikge1xuICAgICAgc3dpcGVyLnBhZ2luYXRpb24uZGVzdHJveSgpO1xuICAgIH0sXG4gICAgJ2VuYWJsZSBkaXNhYmxlJzogZnVuY3Rpb24gZW5hYmxlRGlzYWJsZShzd2lwZXIpIHtcbiAgICAgIHZhciAkZWwgPSBzd2lwZXIucGFnaW5hdGlvbi4kZWw7XG5cbiAgICAgIGlmICgkZWwpIHtcbiAgICAgICAgJGVsW3N3aXBlci5lbmFibGVkID8gJ3JlbW92ZUNsYXNzJyA6ICdhZGRDbGFzcyddKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5sb2NrQ2xhc3MpO1xuICAgICAgfVxuICAgIH0sXG4gICAgY2xpY2s6IGZ1bmN0aW9uIGNsaWNrKHN3aXBlciwgZSkge1xuICAgICAgdmFyIHRhcmdldEVsID0gZS50YXJnZXQ7XG5cbiAgICAgIGlmIChzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uZWwgJiYgc3dpcGVyLnBhcmFtcy5wYWdpbmF0aW9uLmhpZGVPbkNsaWNrICYmIHN3aXBlci5wYWdpbmF0aW9uLiRlbC5sZW5ndGggPiAwICYmICEkKHRhcmdldEVsKS5oYXNDbGFzcyhzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uYnVsbGV0Q2xhc3MpKSB7XG4gICAgICAgIGlmIChzd2lwZXIubmF2aWdhdGlvbiAmJiAoc3dpcGVyLm5hdmlnYXRpb24ubmV4dEVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5uZXh0RWwgfHwgc3dpcGVyLm5hdmlnYXRpb24ucHJldkVsICYmIHRhcmdldEVsID09PSBzd2lwZXIubmF2aWdhdGlvbi5wcmV2RWwpKSByZXR1cm47XG4gICAgICAgIHZhciBpc0hpZGRlbiA9IHN3aXBlci5wYWdpbmF0aW9uLiRlbC5oYXNDbGFzcyhzd2lwZXIucGFyYW1zLnBhZ2luYXRpb24uaGlkZGVuQ2xhc3MpO1xuXG4gICAgICAgIGlmIChpc0hpZGRlbiA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHN3aXBlci5lbWl0KCdwYWdpbmF0aW9uU2hvdycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXBlci5lbWl0KCdwYWdpbmF0aW9uSGlkZScpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpcGVyLnBhZ2luYXRpb24uJGVsLnRvZ2dsZUNsYXNzKHN3aXBlci5wYXJhbXMucGFnaW5hdGlvbi5oaWRkZW5DbGFzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59OyIsImltcG9ydCBhcGkgZnJvbSBcIiEuLi9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vZGlzdC9sb2FkZXIuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzFdIS4uL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMV0udXNlWzJdIS4uL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVszXSEuL3N3aXBlci5taW4uY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiaW1wb3J0IFN3aXBlciwgeyBOYXZpZ2F0aW9uLCBQYWdpbmF0aW9uIH0gZnJvbSAnc3dpcGVyJztcclxuaW1wb3J0ICdzd2lwZXIvc3dpcGVyLm1pbi5jc3MnO1xyXG5cclxuU3dpcGVyLnVzZShbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbl0pO1xyXG5cclxuY29uc3Qgc3dpcGVyUmVsYXRlZEFydGljbGVzID0gbmV3IFN3aXBlcignLnJlbGF0ZWQtYXJ0aWNsZXNfX3N3aXBlcicsIHtcclxuXHRtb2R1bGVzOiBbTmF2aWdhdGlvbiwgUGFnaW5hdGlvbl0sXHJcblx0c2xpZGVzUGVyVmlldzogMS4xLFxyXG5cdHNwYWNlQmV0d2VlbjogMzAsXHJcblx0bmF2aWdhdGlvbjoge1xyXG5cdFx0bmV4dEVsOiAnLnN3aXBlci1idXR0b24tbmV4dCcsXHJcblx0XHRwcmV2RWw6ICcuc3dpcGVyLWJ1dHRvbi1wcmV2JyxcclxuXHRcdGRpc2FibGVkQ2xhc3M6ICdoaWRkZW4nXHJcblx0fSxcclxuXHRicmVha3BvaW50czoge1xyXG5cdFx0NjQwOiB7XHJcblx0XHRcdHNsaWRlc1BlclZpZXc6IDIuMVxyXG5cdFx0fSxcclxuXHRcdDEwMjQ6IHtcclxuXHRcdFx0c2xpZGVzUGVyVmlldzogM1xyXG5cdFx0fVxyXG5cdH1cclxufSk7XHJcblxyXG5jb25zdCBzd2lwZXJSZWxhdGVkQXJ0aWNsZXNCaWcgPSBuZXcgU3dpcGVyKCcucmVsYXRlZC1hcnRpY2xlc19fc3dpcGVyLS1iaWcnLCB7XHJcblx0bW9kdWxlczogW05hdmlnYXRpb24sIFBhZ2luYXRpb25dLFxyXG5cdHNsaWRlc1BlclZpZXc6IDEuMSxcclxuXHRzcGFjZUJldHdlZW46IDMwLFxyXG5cdG5hdmlnYXRpb246IHtcclxuXHRcdG5leHRFbDogJy5zd2lwZXItYnV0dG9uLW5leHQnLFxyXG5cdFx0cHJldkVsOiAnLnN3aXBlci1idXR0b24tcHJldicsXHJcblx0XHRkaXNhYmxlZENsYXNzOiAnaGlkZGVuJ1xyXG5cdH0sXHJcblx0YnJlYWtwb2ludHM6IHtcclxuXHRcdDY0MDoge1xyXG5cdFx0XHRzbGlkZXNQZXJWaWV3OiAyLjFcclxuXHRcdH0sXHJcblx0XHQxMDI0OiB7XHJcblx0XHRcdHNsaWRlc1BlclZpZXc6IDJcclxuXHRcdH1cclxuXHR9XHJcbn0pOyIsImNvbnN0IHR4dENvbnRlbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnRleHQtY29udGVudFwiKTtcclxuY29uc3QgdHh0Q29udGVudFRhYmxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi50ZXh0LWNvbnRlbnQgdGFibGVcIik7XHJcblxyXG5pZiAodHh0Q29udGVudCkge1xyXG5cclxuICAgIC8vIFdyYXAgdGFibGVzIGluIGRpdiB3aXRoIG92ZXJmbG93LXgtYXV0byBjbGFzc1xyXG4gICAgZnVuY3Rpb24gd3JhcChlbCwgd3JhcHBlcikge1xyXG4gICAgICAgIGVsLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGVsKTtcclxuICAgICAgICB3cmFwcGVyLmFwcGVuZENoaWxkKGVsKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIGRpdi5jbGFzc05hbWUgPSBcIm92ZXJmbG93LXgtYXV0b1wiO1xyXG5cclxuICAgIGlmICh0eHRDb250ZW50VGFibGUpIHtcclxuICAgICAgICB3cmFwKHR4dENvbnRlbnQucXVlcnlTZWxlY3RvcigndGFibGUnKSwgZGl2KTtcclxuICAgIH1cclxuXHJcblxyXG59IiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuXHJcbmNvbnN0IEltYWdlID0gKHsgY2xhc3NOYW1lLCBzcmMsIGFsdCwgc291cmNlcywgc2l6ZXMgfSkgPT4ge1xyXG4gIGlmIChzb3VyY2VzICYmIHNpemVzKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8aW1nXHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XHJcbiAgICAgICAgc3JjPXtzcmN9XHJcbiAgICAgICAgYWx0PXthbHR9XHJcbiAgICAgICAgc3JjU2V0PXtzb3VyY2VzLmpvaW4oJywnKX1cclxuICAgICAgICBzaXplcz17c2l6ZXN9XHJcbiAgICAgIC8+XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIDxpbWcgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHNyYz17c3JjfSBhbHQ9e2FsdH0gLz47XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcclxuIiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuICByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApO1xufSIsImltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuICBzZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59IiwidmFyIENBTl9VU0VfRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxuLy8gQWRhcHRlZCBmcm9tIE1vZGVybml6clxuLy8gaHR0cHM6Ly9naXRodWIuY29tL01vZGVybml6ci9Nb2Rlcm5penIvYmxvYi9hY2IzZjBkOS9mZWF0dXJlLWRldGVjdHMvZG9tL3Bhc3NpdmVldmVudGxpc3RlbmVycy5qcyNMMjYtTDM3XG5mdW5jdGlvbiB0ZXN0UGFzc2l2ZUV2ZW50TGlzdGVuZXJzKCkge1xuICBpZiAoIUNBTl9VU0VfRE9NKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciB8fCAhd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIgfHwgIU9iamVjdC5kZWZpbmVQcm9wZXJ0eSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBzdXBwb3J0c1Bhc3NpdmVPcHRpb24gPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgb3B0cyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3Bhc3NpdmUnLCB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ2V0dGVyLXJldHVyblxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmVPcHRpb24gPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldDtcbiAgICAgIH0oKVxuICAgIH0pO1xuICAgIHZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydCcsIG5vb3AsIG9wdHMpO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0UGFzc2l2ZUV2ZW50U3VwcG9ydCcsIG5vb3AsIG9wdHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gZG8gbm90aGluZ1xuICB9XG5cbiAgcmV0dXJuIHN1cHBvcnRzUGFzc2l2ZU9wdGlvbjtcbn1cblxudmFyIG1lbW9pemVkID0gdm9pZCAwO1xuXG5mdW5jdGlvbiBjYW5Vc2VQYXNzaXZlRXZlbnRMaXN0ZW5lcnMoKSB7XG4gIGlmIChtZW1vaXplZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWVtb2l6ZWQgPSB0ZXN0UGFzc2l2ZUV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cbiAgcmV0dXJuIG1lbW9pemVkO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFdmVudE9wdGlvbnMoZXZlbnRPcHRpb25zKSB7XG4gIGlmICghZXZlbnRPcHRpb25zKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICghY2FuVXNlUGFzc2l2ZUV2ZW50TGlzdGVuZXJzKCkpIHtcbiAgICAvLyBJZiB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBwYXNzaXZlIG9wdGlvbiwgdGhlbiBpdCBpcyBleHBlY3RpbmdcbiAgICAvLyBhIGJvb2xlYW4gZm9yIHRoZSBvcHRpb25zIGFyZ3VtZW50IHRvIHNwZWNpZnkgd2hldGhlciBpdCBzaG91bGQgdXNlXG4gICAgLy8gY2FwdHVyZSBvciBub3QuIEluIG1vcmUgbW9kZXJuIGJyb3dzZXJzLCB0aGlzIGlzIHBhc3NlZCB2aWEgdGhlIGBjYXB0dXJlYFxuICAgIC8vIG9wdGlvbiwgc28gbGV0J3MganVzdCBob2lzdCB0aGF0IHZhbHVlIHVwLlxuICAgIHJldHVybiAhIWV2ZW50T3B0aW9ucy5jYXB0dXJlO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50T3B0aW9ucztcbn1cblxuLyogZXNsaW50LWRpc2FibGUgbm8tYml0d2lzZSAqL1xuXG4vKipcbiAqIEdlbmVyYXRlIGEgdW5pcXVlIGtleSBmb3IgYW55IHNldCBvZiBldmVudCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIGV2ZW50T3B0aW9uc0tleShub3JtYWxpemVkRXZlbnRPcHRpb25zKSB7XG4gIGlmICghbm9ybWFsaXplZEV2ZW50T3B0aW9ucykge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gSWYgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBwYXNzaXZlIGV2ZW50IGxpc3RlbmVycywgdGhlIG5vcm1hbGl6ZWRcbiAgLy8gZXZlbnQgb3B0aW9ucyB3aWxsIGJlIGEgYm9vbGVhbi5cbiAgaWYgKG5vcm1hbGl6ZWRFdmVudE9wdGlvbnMgPT09IHRydWUpIHtcbiAgICByZXR1cm4gMTAwO1xuICB9XG5cbiAgLy8gQXQgdGhpcyBwb2ludCwgdGhlIGJyb3dzZXIgc3VwcG9ydHMgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMsIHNvIHdlIGV4cGVjdFxuICAvLyB0aGUgZXZlbnQgb3B0aW9ucyB0byBiZSBhbiBvYmplY3Qgd2l0aCBwb3NzaWJsZSBwcm9wZXJ0aWVzIG9mIGNhcHR1cmUsXG4gIC8vIHBhc3NpdmUsIGFuZCBvbmNlLlxuICAvL1xuICAvLyBXZSB3YW50IHRvIGNvbnNpc3RlbnRseSByZXR1cm4gdGhlIHNhbWUgdmFsdWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIG9mXG4gIC8vIHRoZXNlIHByb3BlcnRpZXMsIHNvIGxldCdzIHVzZSBiaW5hcnkgbWF0aHMgdG8gYXNzaWduIGVhY2ggcHJvcGVydHkgdG8gYVxuICAvLyBiaXQsIGFuZCB0aGVuIGFkZCB0aG9zZSB0b2dldGhlciAod2l0aCBhbiBvZmZzZXQgdG8gYWNjb3VudCBmb3IgdGhlXG4gIC8vIGJvb2xlYW5zIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBmdW5jdGlvbikuXG4gIHZhciBjYXB0dXJlID0gbm9ybWFsaXplZEV2ZW50T3B0aW9ucy5jYXB0dXJlIDw8IDA7XG4gIHZhciBwYXNzaXZlID0gbm9ybWFsaXplZEV2ZW50T3B0aW9ucy5wYXNzaXZlIDw8IDE7XG4gIHZhciBvbmNlID0gbm9ybWFsaXplZEV2ZW50T3B0aW9ucy5vbmNlIDw8IDI7XG4gIHJldHVybiBjYXB0dXJlICsgcGFzc2l2ZSArIG9uY2U7XG59XG5cbmZ1bmN0aW9uIGVuc3VyZUNhbk11dGF0ZU5leHRFdmVudEhhbmRsZXJzKGV2ZW50SGFuZGxlcnMpIHtcbiAgaWYgKGV2ZW50SGFuZGxlcnMuaGFuZGxlcnMgPT09IGV2ZW50SGFuZGxlcnMubmV4dEhhbmRsZXJzKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgZXZlbnRIYW5kbGVycy5uZXh0SGFuZGxlcnMgPSBldmVudEhhbmRsZXJzLmhhbmRsZXJzLnNsaWNlKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVGFyZ2V0RXZlbnRIYW5kbGVycyh0YXJnZXQpIHtcbiAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gIHRoaXMuZXZlbnRzID0ge307XG59XG5cblRhcmdldEV2ZW50SGFuZGxlcnMucHJvdG90eXBlLmdldEV2ZW50SGFuZGxlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGdldEV2ZW50SGFuZGxlcnMoZXZlbnROYW1lLCBvcHRpb25zKSB7XG4gICAgdmFyIGtleSA9IFN0cmluZyhldmVudE5hbWUpICsgJyAnICsgU3RyaW5nKGV2ZW50T3B0aW9uc0tleShvcHRpb25zKSk7XG5cbiAgICBpZiAoIXRoaXMuZXZlbnRzW2tleV0pIHtcbiAgICAgIHRoaXMuZXZlbnRzW2tleV0gPSB7XG4gICAgICAgIGhhbmRsZXJzOiBbXSxcbiAgICAgICAgaGFuZGxlRXZlbnQ6IHVuZGVmaW5lZFxuICAgICAgfTtcbiAgICAgIHRoaXMuZXZlbnRzW2tleV0ubmV4dEhhbmRsZXJzID0gdGhpcy5ldmVudHNba2V5XS5oYW5kbGVycztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5ldmVudHNba2V5XTtcbiAgfVxuXG4gIHJldHVybiBnZXRFdmVudEhhbmRsZXJzO1xufSgpO1xuXG5UYXJnZXRFdmVudEhhbmRsZXJzLnByb3RvdHlwZS5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnROYW1lLCBvcHRpb25zLCBldmVudCkge1xuICAgIHZhciBldmVudEhhbmRsZXJzID0gdGhpcy5nZXRFdmVudEhhbmRsZXJzKGV2ZW50TmFtZSwgb3B0aW9ucyk7XG4gICAgZXZlbnRIYW5kbGVycy5oYW5kbGVycyA9IGV2ZW50SGFuZGxlcnMubmV4dEhhbmRsZXJzO1xuICAgIGV2ZW50SGFuZGxlcnMuaGFuZGxlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlcikge1xuICAgICAgaWYgKGhhbmRsZXIpIHtcbiAgICAgICAgLy8gV2UgbmVlZCB0byBjaGVjayBmb3IgcHJlc2VuY2UgaGVyZSBiZWNhdXNlIGEgaGFuZGxlciBmdW5jdGlvbiBtYXlcbiAgICAgICAgLy8gY2F1c2UgbGF0ZXIgaGFuZGxlcnMgdG8gZ2V0IHJlbW92ZWQuIFRoaXMgY2FuIGhhcHBlbiBpZiB5b3UgZm9yXG4gICAgICAgIC8vIGluc3RhbmNlIGhhdmUgYSB3YXlwb2ludCB0aGF0IHVubW91bnRzIGFub3RoZXIgd2F5cG9pbnQgYXMgcGFydCBvZiBhblxuICAgICAgICAvLyBvbkVudGVyL29uTGVhdmUgaGFuZGxlci5cbiAgICAgICAgaGFuZGxlcihldmVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gaGFuZGxlRXZlbnQ7XG59KCk7XG5cblRhcmdldEV2ZW50SGFuZGxlcnMucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gYWRkKGV2ZW50TmFtZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgLy8gb3B0aW9ucyBoYXMgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQgYXQgdGhpcyBwb2ludC5cbiAgICB2YXIgZXZlbnRIYW5kbGVycyA9IHRoaXMuZ2V0RXZlbnRIYW5kbGVycyhldmVudE5hbWUsIG9wdGlvbnMpO1xuXG4gICAgZW5zdXJlQ2FuTXV0YXRlTmV4dEV2ZW50SGFuZGxlcnMoZXZlbnRIYW5kbGVycyk7XG5cbiAgICBpZiAoZXZlbnRIYW5kbGVycy5uZXh0SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICBldmVudEhhbmRsZXJzLmhhbmRsZUV2ZW50ID0gdGhpcy5oYW5kbGVFdmVudC5iaW5kKHRoaXMsIGV2ZW50TmFtZSwgb3B0aW9ucyk7XG5cbiAgICAgIHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBldmVudEhhbmRsZXJzLmhhbmRsZUV2ZW50LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBldmVudEhhbmRsZXJzLm5leHRIYW5kbGVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIHZhciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuICAgIHZhciB1bnN1YnNjcmliZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlzU3Vic2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICAgIGVuc3VyZUNhbk11dGF0ZU5leHRFdmVudEhhbmRsZXJzKGV2ZW50SGFuZGxlcnMpO1xuICAgICAgICB2YXIgaW5kZXggPSBldmVudEhhbmRsZXJzLm5leHRIYW5kbGVycy5pbmRleE9mKGxpc3RlbmVyKTtcbiAgICAgICAgZXZlbnRIYW5kbGVycy5uZXh0SGFuZGxlcnMuc3BsaWNlKGluZGV4LCAxKTtcblxuICAgICAgICBpZiAoZXZlbnRIYW5kbGVycy5uZXh0SGFuZGxlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gQWxsIGV2ZW50IGhhbmRsZXJzIGhhdmUgYmVlbiByZW1vdmVkLCBzbyB3ZSB3YW50IHRvIHJlbW92ZSB0aGUgZXZlbnRcbiAgICAgICAgICAvLyBsaXN0ZW5lciBmcm9tIHRoZSB0YXJnZXQgbm9kZS5cblxuICAgICAgICAgIGlmIChfdGhpcy50YXJnZXQpIHtcbiAgICAgICAgICAgIC8vIFRoZXJlIGNhbiBiZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSB0YXJnZXQgbWF5IG5vIGxvbmdlciBleGlzdFxuICAgICAgICAgICAgLy8gd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCwgZS5nLiB3aGVuIGEgUmVhY3QgY29tcG9uZW50IGlzXG4gICAgICAgICAgICAvLyB1bm1vdW50aW5nLiBHdWFyZGluZyBhZ2FpbnN0IHRoaXMgcHJldmVudHMgdGhlIGZvbGxvd2luZyBlcnJvcjpcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgIENhbm5vdCByZWFkIHByb3BlcnR5ICdyZW1vdmVFdmVudExpc3RlbmVyJyBvZiB1bmRlZmluZWRcbiAgICAgICAgICAgIF90aGlzLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVycy5oYW5kbGVFdmVudCwgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXZlbnRIYW5kbGVycy5oYW5kbGVFdmVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gICAgfSgpO1xuICAgIHJldHVybiB1bnN1YnNjcmliZTtcbiAgfVxuXG4gIHJldHVybiBhZGQ7XG59KCk7XG5cbnZhciBFVkVOVF9IQU5ETEVSU19LRVkgPSAnX19jb25zb2xpZGF0ZWRfZXZlbnRzX2hhbmRsZXJzX18nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L3ByZWZlci1kZWZhdWx0LWV4cG9ydFxuZnVuY3Rpb24gYWRkRXZlbnRMaXN0ZW5lcih0YXJnZXQsIGV2ZW50TmFtZSwgbGlzdGVuZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCF0YXJnZXRbRVZFTlRfSEFORExFUlNfS0VZXSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIHRhcmdldFtFVkVOVF9IQU5ETEVSU19LRVldID0gbmV3IFRhcmdldEV2ZW50SGFuZGxlcnModGFyZ2V0KTtcbiAgfVxuICB2YXIgbm9ybWFsaXplZEV2ZW50T3B0aW9ucyA9IG5vcm1hbGl6ZUV2ZW50T3B0aW9ucyhvcHRpb25zKTtcbiAgcmV0dXJuIHRhcmdldFtFVkVOVF9IQU5ETEVSU19LRVldLmFkZChldmVudE5hbWUsIGxpc3RlbmVyLCBub3JtYWxpemVkRXZlbnRPcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgYWRkRXZlbnRMaXN0ZW5lciB9O1xuIiwiaW1wb3J0IF9pbmhlcml0c0xvb3NlIGZyb20gJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzTG9vc2UnO1xuaW1wb3J0IHsgYWRkRXZlbnRMaXN0ZW5lciB9IGZyb20gJ2NvbnNvbGlkYXRlZC1ldmVudHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZvcndhcmRSZWYgfSBmcm9tICdyZWFjdC1pcyc7XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gcGFyc2UgdGhlIG9mZnNldCBwcm92aWRlZCBhcyBhIHByb3AgYXMgYSBwZXJjZW50YWdlLiBGb3JcbiAqIGluc3RhbmNlLCBpZiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIHByb3ZpZGVkIHdpdGggdGhlIHN0cmluZyBcIjIwJVwiIGFzXG4gKiBhIHZhbHVlIG9mIG9uZSBvZiB0aGUgb2Zmc2V0IHByb3BzLiBJZiB0aGUgdmFsdWUgbWF0Y2hlcywgdGhlbiBpdCByZXR1cm5zXG4gKiBhIG51bWVyaWMgdmVyc2lvbiBvZiB0aGUgcHJvcC4gRm9yIGluc3RhbmNlLCBcIjIwJVwiIHdvdWxkIGJlY29tZSBgMC4yYC5cbiAqIElmIGBzdHJgIGlzbid0IGEgcGVyY2VudGFnZSwgdGhlbiBgdW5kZWZpbmVkYCB3aWxsIGJlIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIHZhbHVlIG9mIGFuIG9mZnNldCBwcm9wIHRvIGJlIGNvbnZlcnRlZCB0byBhXG4gKiAgIG51bWJlci5cbiAqIEByZXR1cm4ge251bWJlcnx1bmRlZmluZWR9IFRoZSBudW1lcmljIHZlcnNpb24gb2YgYHN0cmAuIFVuZGVmaW5lZCBpZiBgc3RyYFxuICogICB3YXMgbm90IGEgcGVyY2VudGFnZS5cbiAqL1xuZnVuY3Rpb24gcGFyc2VPZmZzZXRBc1BlcmNlbnRhZ2Uoc3RyKSB7XG4gIGlmIChzdHIuc2xpY2UoLTEpID09PSAnJScpIHtcbiAgICByZXR1cm4gcGFyc2VGbG9hdChzdHIuc2xpY2UoMCwgLTEpKSAvIDEwMDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gcGFyc2UgdGhlIG9mZnNldCBwcm92aWRlZCBhcyBhIHByb3AgYXMgYSBwaXhlbCB2YWx1ZS4gSWZcbiAqIHBhcnNpbmcgZmFpbHMsIHRoZW4gYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuIFRocmVlIGV4YW1wbGVzIG9mIHZhbHVlcyB0aGF0XG4gKiB3aWxsIGJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgYXJlOlxuICogYDIwYFxuICogXCIyMHB4XCJcbiAqIFwiMjBcIlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gc3RyIEEgc3RyaW5nIG9mIHRoZSBmb3JtIFwie251bWJlcn1cIiBvciBcIntudW1iZXJ9cHhcIixcbiAqICAgb3IganVzdCBhIG51bWJlci5cbiAqIEByZXR1cm4ge251bWJlcnx1bmRlZmluZWR9IFRoZSBudW1lcmljIHZlcnNpb24gb2YgYHN0cmAuIFVuZGVmaW5lZCBpZiBgc3RyYFxuICogICB3YXMgbmVpdGhlciBhIG51bWJlciBub3Igc3RyaW5nIGVuZGluZyBpbiBcInB4XCIuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlT2Zmc2V0QXNQaXhlbHMoc3RyKSB7XG4gIGlmICghaXNOYU4ocGFyc2VGbG9hdChzdHIpKSAmJiBpc0Zpbml0ZShzdHIpKSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTtcbiAgfVxuXG4gIGlmIChzdHIuc2xpY2UoLTIpID09PSAncHgnKSB7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyLnNsaWNlKDAsIC0yKSk7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge251bWJlcn0gY29udGV4dEhlaWdodFxuICogQHJldHVybiB7bnVtYmVyfSBBIG51bWJlciByZXByZXNlbnRpbmcgYG9mZnNldGAgY29udmVydGVkIGludG8gcGl4ZWxzLlxuICovXG5cbmZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRQaXhlbHMob2Zmc2V0LCBjb250ZXh0SGVpZ2h0KSB7XG4gIHZhciBwaXhlbE9mZnNldCA9IHBhcnNlT2Zmc2V0QXNQaXhlbHMob2Zmc2V0KTtcblxuICBpZiAodHlwZW9mIHBpeGVsT2Zmc2V0ID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBwaXhlbE9mZnNldDtcbiAgfVxuXG4gIHZhciBwZXJjZW50T2Zmc2V0ID0gcGFyc2VPZmZzZXRBc1BlcmNlbnRhZ2Uob2Zmc2V0KTtcblxuICBpZiAodHlwZW9mIHBlcmNlbnRPZmZzZXQgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHBlcmNlbnRPZmZzZXQgKiBjb250ZXh0SGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxudmFyIEFCT1ZFID0gJ2Fib3ZlJztcbnZhciBJTlNJREUgPSAnaW5zaWRlJztcbnZhciBCRUxPVyA9ICdiZWxvdyc7XG52YXIgSU5WSVNJQkxFID0gJ2ludmlzaWJsZSc7XG5cbmZ1bmN0aW9uIGRlYnVnTG9nKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBfY29uc29sZTtcblxuICAgIChfY29uc29sZSA9IGNvbnNvbGUpLmxvZy5hcHBseShfY29uc29sZSwgYXJndW1lbnRzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG5cbiAgfVxufVxuXG4vKipcbiAqIFdoZW4gYW4gZWxlbWVudCdzIHR5cGUgaXMgYSBzdHJpbmcsIGl0IHJlcHJlc2VudHMgYSBET00gbm9kZSB3aXRoIHRoYXQgdGFnIG5hbWVcbiAqIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Jsb2cvMjAxNS8xMi8xOC9yZWFjdC1jb21wb25lbnRzLWVsZW1lbnRzLWFuZC1pbnN0YW5jZXMuaHRtbCNkb20tZWxlbWVudHNcbiAqXG4gKiBAcGFyYW0ge1JlYWN0LmVsZW1lbnR9IENvbXBvbmVudFxuICogQHJldHVybiB7Ym9vbH0gV2hldGhlciB0aGUgY29tcG9uZW50IGlzIGEgRE9NIEVsZW1lbnRcbiAqL1xuZnVuY3Rpb24gaXNET01FbGVtZW50KENvbXBvbmVudCkge1xuICByZXR1cm4gdHlwZW9mIENvbXBvbmVudC50eXBlID09PSAnc3RyaW5nJztcbn1cblxudmFyIGVycm9yTWVzc2FnZSA9ICc8V2F5cG9pbnQ+IG5lZWRzIGEgRE9NIGVsZW1lbnQgdG8gY29tcHV0ZSBib3VuZGFyaWVzLiBUaGUgY2hpbGQgeW91IHBhc3NlZCBpcyBuZWl0aGVyIGEgJyArICdET00gZWxlbWVudCAoZS5nLiA8ZGl2Pikgbm9yIGRvZXMgaXQgdXNlIHRoZSBpbm5lclJlZiBwcm9wLlxcblxcbicgKyAnU2VlIGh0dHBzOi8vZ29vLmdsL0xyQk5ndyBmb3IgbW9yZSBpbmZvLic7XG4vKipcbiAqIFJhaXNlIGFuIGVycm9yIGlmIFwiY2hpbGRyZW5cIiBpcyBub3QgYSBET00gRWxlbWVudCBhbmQgdGhlcmUgaXMgbm8gcmVmIHByb3ZpZGVkIHRvIFdheXBvaW50XG4gKlxuICogQHBhcmFtIHs/UmVhY3QuZWxlbWVudH0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7P0hUTUxFbGVtZW50fSByZWZcbiAqIEByZXR1cm4ge3VuZGVmaW5lZH1cbiAqL1xuXG5mdW5jdGlvbiBlbnN1cmVSZWZJc1Byb3ZpZGVkQnlDaGlsZChjaGlsZHJlbiwgcmVmKSB7XG4gIGlmIChjaGlsZHJlbiAmJiAhaXNET01FbGVtZW50KGNoaWxkcmVuKSAmJiAhcmVmKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gYm91bmRzIEFuIG9iamVjdCB3aXRoIGJvdW5kcyBkYXRhIGZvciB0aGUgd2F5cG9pbnQgYW5kXG4gKiAgIHNjcm9sbGFibGUgcGFyZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSB3YXlwb2ludCBpbiByZWxhdGlvbiB0byB0aGVcbiAqICAgdmlzaWJsZSBwb3J0aW9uIG9mIHRoZSBzY3JvbGxhYmxlIHBhcmVudC4gT25lIG9mIHRoZSBjb25zdGFudHMgYEFCT1ZFYCxcbiAqICAgYEJFTE9XYCwgYElOU0lERWAgb3IgYElOVklTSUJMRWAuXG4gKi9cblxuZnVuY3Rpb24gZ2V0Q3VycmVudFBvc2l0aW9uKGJvdW5kcykge1xuICBpZiAoYm91bmRzLnZpZXdwb3J0Qm90dG9tIC0gYm91bmRzLnZpZXdwb3J0VG9wID09PSAwKSB7XG4gICAgcmV0dXJuIElOVklTSUJMRTtcbiAgfSAvLyB0b3AgaXMgd2l0aGluIHRoZSB2aWV3cG9ydFxuXG5cbiAgaWYgKGJvdW5kcy52aWV3cG9ydFRvcCA8PSBib3VuZHMud2F5cG9pbnRUb3AgJiYgYm91bmRzLndheXBvaW50VG9wIDw9IGJvdW5kcy52aWV3cG9ydEJvdHRvbSkge1xuICAgIHJldHVybiBJTlNJREU7XG4gIH0gLy8gYm90dG9tIGlzIHdpdGhpbiB0aGUgdmlld3BvcnRcblxuXG4gIGlmIChib3VuZHMudmlld3BvcnRUb3AgPD0gYm91bmRzLndheXBvaW50Qm90dG9tICYmIGJvdW5kcy53YXlwb2ludEJvdHRvbSA8PSBib3VuZHMudmlld3BvcnRCb3R0b20pIHtcbiAgICByZXR1cm4gSU5TSURFO1xuICB9IC8vIHRvcCBpcyBhYm92ZSB0aGUgdmlld3BvcnQgYW5kIGJvdHRvbSBpcyBiZWxvdyB0aGUgdmlld3BvcnRcblxuXG4gIGlmIChib3VuZHMud2F5cG9pbnRUb3AgPD0gYm91bmRzLnZpZXdwb3J0VG9wICYmIGJvdW5kcy52aWV3cG9ydEJvdHRvbSA8PSBib3VuZHMud2F5cG9pbnRCb3R0b20pIHtcbiAgICByZXR1cm4gSU5TSURFO1xuICB9XG5cbiAgaWYgKGJvdW5kcy52aWV3cG9ydEJvdHRvbSA8IGJvdW5kcy53YXlwb2ludFRvcCkge1xuICAgIHJldHVybiBCRUxPVztcbiAgfVxuXG4gIGlmIChib3VuZHMud2F5cG9pbnRUb3AgPCBib3VuZHMudmlld3BvcnRUb3ApIHtcbiAgICByZXR1cm4gQUJPVkU7XG4gIH1cblxuICByZXR1cm4gSU5WSVNJQkxFO1xufVxuXG52YXIgdGltZW91dDtcbnZhciB0aW1lb3V0UXVldWUgPSBbXTtcbmZ1bmN0aW9uIG9uTmV4dFRpY2soY2IpIHtcbiAgdGltZW91dFF1ZXVlLnB1c2goY2IpO1xuXG4gIGlmICghdGltZW91dCkge1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHRpbWVvdXQgPSBudWxsOyAvLyBEcmFpbiB0aGUgdGltZW91dFF1ZXVlXG5cbiAgICAgIHZhciBpdGVtOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uZC1hc3NpZ25cblxuICAgICAgd2hpbGUgKGl0ZW0gPSB0aW1lb3V0UXVldWUuc2hpZnQoKSkge1xuICAgICAgICBpdGVtKCk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgIGlmICghaXNTdWJzY3JpYmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG4gICAgdmFyIGluZGV4ID0gdGltZW91dFF1ZXVlLmluZGV4T2YoY2IpO1xuXG4gICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRpbWVvdXRRdWV1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgaWYgKCF0aW1lb3V0UXVldWUubGVuZ3RoICYmIHRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVNjcm9sbGFibGVBbmNlc3RvclByb3Aoc2Nyb2xsYWJsZUFuY2VzdG9yKSB7XG4gIC8vIFdoZW4gV2F5cG9pbnQgaXMgcmVuZGVyZWQgb24gdGhlIHNlcnZlciwgYHdpbmRvd2AgaXMgbm90IGF2YWlsYWJsZS5cbiAgLy8gVG8gbWFrZSBXYXlwb2ludCBlYXNpZXIgdG8gd29yayB3aXRoLCB3ZSBhbGxvdyB0aGlzIHRvIGJlIHNwZWNpZmllZCBpblxuICAvLyBzdHJpbmcgZm9ybSBhbmQgc2FmZWx5IGNvbnZlcnQgdG8gYHdpbmRvd2AgaGVyZS5cbiAgaWYgKHNjcm9sbGFibGVBbmNlc3RvciA9PT0gJ3dpbmRvdycpIHtcbiAgICByZXR1cm4gZ2xvYmFsLndpbmRvdztcbiAgfVxuXG4gIHJldHVybiBzY3JvbGxhYmxlQW5jZXN0b3I7XG59XG5cbnZhciBoYXNXaW5kb3cgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJztcbnZhciBkZWZhdWx0UHJvcHMgPSB7XG4gIGRlYnVnOiBmYWxzZSxcbiAgc2Nyb2xsYWJsZUFuY2VzdG9yOiB1bmRlZmluZWQsXG4gIGNoaWxkcmVuOiB1bmRlZmluZWQsXG4gIHRvcE9mZnNldDogJzBweCcsXG4gIGJvdHRvbU9mZnNldDogJzBweCcsXG4gIGhvcml6b250YWw6IGZhbHNlLFxuICBvbkVudGVyOiBmdW5jdGlvbiBvbkVudGVyKCkge30sXG4gIG9uTGVhdmU6IGZ1bmN0aW9uIG9uTGVhdmUoKSB7fSxcbiAgb25Qb3NpdGlvbkNoYW5nZTogZnVuY3Rpb24gb25Qb3NpdGlvbkNoYW5nZSgpIHt9LFxuICBmaXJlT25SYXBpZFNjcm9sbDogdHJ1ZVxufTsgLy8gQ2FsbHMgYSBmdW5jdGlvbiB3aGVuIHlvdSBzY3JvbGwgdG8gdGhlIGVsZW1lbnQuXG5cbnZhciBXYXlwb2ludCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JFB1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoV2F5cG9pbnQsIF9SZWFjdCRQdXJlQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBXYXlwb2ludChwcm9wcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JFB1cmVDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcykgfHwgdGhpcztcblxuICAgIF90aGlzLnJlZkVsZW1lbnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgX3RoaXMuX3JlZiA9IGU7XG4gICAgfTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBXYXlwb2ludC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBpZiAoIWhhc1dpbmRvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gdGhpcy5fcmVmIG1heSBvY2Nhc2lvbmFsbHkgbm90IGJlIHNldCBhdCB0aGlzIHRpbWUuIFRvIGhlbHAgZW5zdXJlIHRoYXRcbiAgICAvLyB0aGlzIHdvcmtzIHNtb290aGx5IGFuZCB0byBhdm9pZCBsYXlvdXQgdGhyYXNoaW5nLCB3ZSB3YW50IHRvIGRlbGF5IHRoZVxuICAgIC8vIGluaXRpYWwgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IHRpY2suXG5cblxuICAgIHRoaXMuY2FuY2VsT25OZXh0VGljayA9IG9uTmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLmNhbmNlbE9uTmV4dFRpY2sgPSBudWxsO1xuICAgICAgdmFyIF90aGlzMiRwcm9wcyA9IF90aGlzMi5wcm9wcyxcbiAgICAgICAgICBjaGlsZHJlbiA9IF90aGlzMiRwcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICBkZWJ1ZyA9IF90aGlzMiRwcm9wcy5kZWJ1ZzsgLy8gQmVyb2ZlIGRvaW5nIGFueXRoaW5nLCB3ZSB3YW50IHRvIGNoZWNrIHRoYXQgdGhpcy5fcmVmIGlzIGF2YWxpYWJsZSBpbiBXYXlwb2ludFxuXG4gICAgICBlbnN1cmVSZWZJc1Byb3ZpZGVkQnlDaGlsZChjaGlsZHJlbiwgX3RoaXMyLl9yZWYpO1xuICAgICAgX3RoaXMyLl9oYW5kbGVTY3JvbGwgPSBfdGhpczIuX2hhbmRsZVNjcm9sbC5iaW5kKF90aGlzMik7XG4gICAgICBfdGhpczIuc2Nyb2xsYWJsZUFuY2VzdG9yID0gX3RoaXMyLl9maW5kU2Nyb2xsYWJsZUFuY2VzdG9yKCk7XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRlYnVnKSB7XG4gICAgICAgIGRlYnVnTG9nKCdzY3JvbGxhYmxlQW5jZXN0b3InLCBfdGhpczIuc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMyLnNjcm9sbEV2ZW50TGlzdGVuZXJVbnN1YnNjcmliZSA9IGFkZEV2ZW50TGlzdGVuZXIoX3RoaXMyLnNjcm9sbGFibGVBbmNlc3RvciwgJ3Njcm9sbCcsIF90aGlzMi5faGFuZGxlU2Nyb2xsLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgICAgX3RoaXMyLnJlc2l6ZUV2ZW50TGlzdGVuZXJVbnN1YnNjcmliZSA9IGFkZEV2ZW50TGlzdGVuZXIod2luZG93LCAncmVzaXplJywgX3RoaXMyLl9oYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgcGFzc2l2ZTogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIF90aGlzMi5faGFuZGxlU2Nyb2xsKG51bGwpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICBpZiAoIWhhc1dpbmRvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5zY3JvbGxhYmxlQW5jZXN0b3IpIHtcbiAgICAgIC8vIFRoZSBXYXlwb2ludCBoYXMgbm90IHlldCBpbml0aWFsaXplZC5cbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFRoZSBlbGVtZW50IG1heSBoYXZlIG1vdmVkLCBzbyB3ZSBuZWVkIHRvIHJlY29tcHV0ZSBpdHMgcG9zaXRpb24gb24gdGhlXG4gICAgLy8gcGFnZS4gVGhpcyBoYXBwZW5zIHZpYSBoYW5kbGVTY3JvbGwgaW4gYSB3YXkgdGhhdCBmb3JjZXMgbGF5b3V0IHRvIGJlXG4gICAgLy8gY29tcHV0ZWQuXG4gICAgLy9cbiAgICAvLyBXZSB3YW50IHRoaXMgdG8gYmUgZGVmZXJyZWQgdG8gYXZvaWQgZm9yY2luZyBsYXlvdXQgZHVyaW5nIHJlbmRlciwgd2hpY2hcbiAgICAvLyBjYXVzZXMgbGF5b3V0IHRocmFzaGluZy4gQW5kLCBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhpcyB3b3JrIGVucXVldWVkLCB3ZVxuICAgIC8vIGNhbiBqdXN0IHdhaXQgZm9yIHRoYXQgdG8gaGFwcGVuIGluc3RlYWQgb2YgZW5xdWV1ZWluZyBhZ2Fpbi5cblxuXG4gICAgaWYgKHRoaXMuY2FuY2VsT25OZXh0VGljaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2FuY2VsT25OZXh0VGljayA9IG9uTmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMzLmNhbmNlbE9uTmV4dFRpY2sgPSBudWxsO1xuXG4gICAgICBfdGhpczMuX2hhbmRsZVNjcm9sbChudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8uY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBpZiAoIWhhc1dpbmRvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNjcm9sbEV2ZW50TGlzdGVuZXJVbnN1YnNjcmliZSkge1xuICAgICAgdGhpcy5zY3JvbGxFdmVudExpc3RlbmVyVW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZXNpemVFdmVudExpc3RlbmVyVW5zdWJzY3JpYmUpIHtcbiAgICAgIHRoaXMucmVzaXplRXZlbnRMaXN0ZW5lclVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY2FuY2VsT25OZXh0VGljaykge1xuICAgICAgdGhpcy5jYW5jZWxPbk5leHRUaWNrKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBUcmF2ZXJzZXMgdXAgdGhlIERPTSB0byBmaW5kIGFuIGFuY2VzdG9yIGNvbnRhaW5lciB3aGljaCBoYXMgYW4gb3ZlcmZsb3dcbiAgICogc3R5bGUgdGhhdCBhbGxvd3MgZm9yIHNjcm9sbGluZy5cbiAgICpcbiAgICogQHJldHVybiB7T2JqZWN0fSB0aGUgY2xvc2VzdCBhbmNlc3RvciBlbGVtZW50IHdpdGggYW4gb3ZlcmZsb3cgc3R5bGUgdGhhdFxuICAgKiAgIGFsbG93cyBmb3Igc2Nyb2xsaW5nLiBJZiBub25lIGlzIGZvdW5kLCB0aGUgYHdpbmRvd2Agb2JqZWN0IGlzIHJldHVybmVkXG4gICAqICAgYXMgYSBmYWxsYmFjay5cbiAgICovXG4gIDtcblxuICBfcHJvdG8uX2ZpbmRTY3JvbGxhYmxlQW5jZXN0b3IgPSBmdW5jdGlvbiBfZmluZFNjcm9sbGFibGVBbmNlc3RvcigpIHtcbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBob3Jpem9udGFsID0gX3RoaXMkcHJvcHMuaG9yaXpvbnRhbCxcbiAgICAgICAgc2Nyb2xsYWJsZUFuY2VzdG9yID0gX3RoaXMkcHJvcHMuc2Nyb2xsYWJsZUFuY2VzdG9yO1xuXG4gICAgaWYgKHNjcm9sbGFibGVBbmNlc3Rvcikge1xuICAgICAgcmV0dXJuIHJlc29sdmVTY3JvbGxhYmxlQW5jZXN0b3JQcm9wKHNjcm9sbGFibGVBbmNlc3Rvcik7XG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSB0aGlzLl9yZWY7XG5cbiAgICB3aGlsZSAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXG4gICAgICBpZiAobm9kZSA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgICAvLyBXZSd2ZSByZWFjaGVkIGFsbCB0aGUgd2F5IHRvIHRoZSByb290IG5vZGUuXG4gICAgICAgIHJldHVybiB3aW5kb3c7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKG5vZGUpO1xuICAgICAgdmFyIG92ZXJmbG93RGlyZWMgPSBob3Jpem9udGFsID8gc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnb3ZlcmZsb3cteCcpIDogc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSgnb3ZlcmZsb3cteScpO1xuICAgICAgdmFyIG92ZXJmbG93ID0gb3ZlcmZsb3dEaXJlYyB8fCBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdvdmVyZmxvdycpO1xuXG4gICAgICBpZiAob3ZlcmZsb3cgPT09ICdhdXRvJyB8fCBvdmVyZmxvdyA9PT0gJ3Njcm9sbCcgfHwgb3ZlcmZsb3cgPT09ICdvdmVybGF5Jykge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cbiAgICB9IC8vIEEgc2Nyb2xsYWJsZSBhbmNlc3RvciBlbGVtZW50IHdhcyBub3QgZm91bmQsIHdoaWNoIG1lYW5zIHRoYXQgd2UgbmVlZCB0b1xuICAgIC8vIGRvIHN0dWZmIG9uIHdpbmRvdy5cblxuXG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuICAvKipcbiAgICogQHBhcmFtIHtPYmplY3R9IGV2ZW50IHRoZSBuYXRpdmUgc2Nyb2xsIGV2ZW50IGNvbWluZyBmcm9tIHRoZSBzY3JvbGxhYmxlXG4gICAqICAgYW5jZXN0b3IsIG9yIHJlc2l6ZSBldmVudCBjb21pbmcgZnJvbSB0aGUgd2luZG93LiBXaWxsIGJlIHVuZGVmaW5lZCBpZlxuICAgKiAgIGNhbGxlZCBieSBhIFJlYWN0IGxpZmVjeWxlIG1ldGhvZFxuICAgKi9cbiAgO1xuXG4gIF9wcm90by5faGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gX2hhbmRsZVNjcm9sbChldmVudCkge1xuICAgIGlmICghdGhpcy5fcmVmKSB7XG4gICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHdlIGVuZCB1cCBoZXJlIGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdW5tb3VudGVkLlxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBib3VuZHMgPSB0aGlzLl9nZXRCb3VuZHMoKTtcblxuICAgIHZhciBjdXJyZW50UG9zaXRpb24gPSBnZXRDdXJyZW50UG9zaXRpb24oYm91bmRzKTtcbiAgICB2YXIgcHJldmlvdXNQb3NpdGlvbiA9IHRoaXMuX3ByZXZpb3VzUG9zaXRpb247XG4gICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGRlYnVnID0gX3RoaXMkcHJvcHMyLmRlYnVnLFxuICAgICAgICBvblBvc2l0aW9uQ2hhbmdlID0gX3RoaXMkcHJvcHMyLm9uUG9zaXRpb25DaGFuZ2UsXG4gICAgICAgIG9uRW50ZXIgPSBfdGhpcyRwcm9wczIub25FbnRlcixcbiAgICAgICAgb25MZWF2ZSA9IF90aGlzJHByb3BzMi5vbkxlYXZlLFxuICAgICAgICBmaXJlT25SYXBpZFNjcm9sbCA9IF90aGlzJHByb3BzMi5maXJlT25SYXBpZFNjcm9sbDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGRlYnVnKSB7XG4gICAgICBkZWJ1Z0xvZygnY3VycmVudFBvc2l0aW9uJywgY3VycmVudFBvc2l0aW9uKTtcbiAgICAgIGRlYnVnTG9nKCdwcmV2aW91c1Bvc2l0aW9uJywgcHJldmlvdXNQb3NpdGlvbik7XG4gICAgfSAvLyBTYXZlIHByZXZpb3VzIHBvc2l0aW9uIGFzIGVhcmx5IGFzIHBvc3NpYmxlIHRvIHByZXZlbnQgY3ljbGVzXG5cblxuICAgIHRoaXMuX3ByZXZpb3VzUG9zaXRpb24gPSBjdXJyZW50UG9zaXRpb247XG5cbiAgICBpZiAocHJldmlvdXNQb3NpdGlvbiA9PT0gY3VycmVudFBvc2l0aW9uKSB7XG4gICAgICAvLyBObyBjaGFuZ2Ugc2luY2UgbGFzdCB0cmlnZ2VyXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGNhbGxiYWNrQXJnID0ge1xuICAgICAgY3VycmVudFBvc2l0aW9uOiBjdXJyZW50UG9zaXRpb24sXG4gICAgICBwcmV2aW91c1Bvc2l0aW9uOiBwcmV2aW91c1Bvc2l0aW9uLFxuICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgd2F5cG9pbnRUb3A6IGJvdW5kcy53YXlwb2ludFRvcCxcbiAgICAgIHdheXBvaW50Qm90dG9tOiBib3VuZHMud2F5cG9pbnRCb3R0b20sXG4gICAgICB2aWV3cG9ydFRvcDogYm91bmRzLnZpZXdwb3J0VG9wLFxuICAgICAgdmlld3BvcnRCb3R0b206IGJvdW5kcy52aWV3cG9ydEJvdHRvbVxuICAgIH07XG4gICAgb25Qb3NpdGlvbkNoYW5nZS5jYWxsKHRoaXMsIGNhbGxiYWNrQXJnKTtcblxuICAgIGlmIChjdXJyZW50UG9zaXRpb24gPT09IElOU0lERSkge1xuICAgICAgb25FbnRlci5jYWxsKHRoaXMsIGNhbGxiYWNrQXJnKTtcbiAgICB9IGVsc2UgaWYgKHByZXZpb3VzUG9zaXRpb24gPT09IElOU0lERSkge1xuICAgICAgb25MZWF2ZS5jYWxsKHRoaXMsIGNhbGxiYWNrQXJnKTtcbiAgICB9XG5cbiAgICB2YXIgaXNSYXBpZFNjcm9sbERvd24gPSBwcmV2aW91c1Bvc2l0aW9uID09PSBCRUxPVyAmJiBjdXJyZW50UG9zaXRpb24gPT09IEFCT1ZFO1xuICAgIHZhciBpc1JhcGlkU2Nyb2xsVXAgPSBwcmV2aW91c1Bvc2l0aW9uID09PSBBQk9WRSAmJiBjdXJyZW50UG9zaXRpb24gPT09IEJFTE9XO1xuXG4gICAgaWYgKGZpcmVPblJhcGlkU2Nyb2xsICYmIChpc1JhcGlkU2Nyb2xsRG93biB8fCBpc1JhcGlkU2Nyb2xsVXApKSB7XG4gICAgICAvLyBJZiB0aGUgc2Nyb2xsIGV2ZW50IGlzbid0IGZpcmVkIG9mdGVuIGVub3VnaCB0byBvY2N1ciB3aGlsZSB0aGVcbiAgICAgIC8vIHdheXBvaW50IHdhcyB2aXNpYmxlLCB3ZSB0cmlnZ2VyIGJvdGggY2FsbGJhY2tzIGFueXdheS5cbiAgICAgIG9uRW50ZXIuY2FsbCh0aGlzLCB7XG4gICAgICAgIGN1cnJlbnRQb3NpdGlvbjogSU5TSURFLFxuICAgICAgICBwcmV2aW91c1Bvc2l0aW9uOiBwcmV2aW91c1Bvc2l0aW9uLFxuICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgIHdheXBvaW50VG9wOiBib3VuZHMud2F5cG9pbnRUb3AsXG4gICAgICAgIHdheXBvaW50Qm90dG9tOiBib3VuZHMud2F5cG9pbnRCb3R0b20sXG4gICAgICAgIHZpZXdwb3J0VG9wOiBib3VuZHMudmlld3BvcnRUb3AsXG4gICAgICAgIHZpZXdwb3J0Qm90dG9tOiBib3VuZHMudmlld3BvcnRCb3R0b21cbiAgICAgIH0pO1xuICAgICAgb25MZWF2ZS5jYWxsKHRoaXMsIHtcbiAgICAgICAgY3VycmVudFBvc2l0aW9uOiBjdXJyZW50UG9zaXRpb24sXG4gICAgICAgIHByZXZpb3VzUG9zaXRpb246IElOU0lERSxcbiAgICAgICAgZXZlbnQ6IGV2ZW50LFxuICAgICAgICB3YXlwb2ludFRvcDogYm91bmRzLndheXBvaW50VG9wLFxuICAgICAgICB3YXlwb2ludEJvdHRvbTogYm91bmRzLndheXBvaW50Qm90dG9tLFxuICAgICAgICB2aWV3cG9ydFRvcDogYm91bmRzLnZpZXdwb3J0VG9wLFxuICAgICAgICB2aWV3cG9ydEJvdHRvbTogYm91bmRzLnZpZXdwb3J0Qm90dG9tXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLl9nZXRCb3VuZHMgPSBmdW5jdGlvbiBfZ2V0Qm91bmRzKCkge1xuICAgIHZhciBfdGhpcyRwcm9wczMgPSB0aGlzLnByb3BzLFxuICAgICAgICBob3Jpem9udGFsID0gX3RoaXMkcHJvcHMzLmhvcml6b250YWwsXG4gICAgICAgIGRlYnVnID0gX3RoaXMkcHJvcHMzLmRlYnVnO1xuXG4gICAgdmFyIF90aGlzJF9yZWYkZ2V0Qm91bmRpbiA9IHRoaXMuX3JlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgICAgbGVmdCA9IF90aGlzJF9yZWYkZ2V0Qm91bmRpbi5sZWZ0LFxuICAgICAgICB0b3AgPSBfdGhpcyRfcmVmJGdldEJvdW5kaW4udG9wLFxuICAgICAgICByaWdodCA9IF90aGlzJF9yZWYkZ2V0Qm91bmRpbi5yaWdodCxcbiAgICAgICAgYm90dG9tID0gX3RoaXMkX3JlZiRnZXRCb3VuZGluLmJvdHRvbTtcblxuICAgIHZhciB3YXlwb2ludFRvcCA9IGhvcml6b250YWwgPyBsZWZ0IDogdG9wO1xuICAgIHZhciB3YXlwb2ludEJvdHRvbSA9IGhvcml6b250YWwgPyByaWdodCA6IGJvdHRvbTtcbiAgICB2YXIgY29udGV4dEhlaWdodDtcbiAgICB2YXIgY29udGV4dFNjcm9sbFRvcDtcblxuICAgIGlmICh0aGlzLnNjcm9sbGFibGVBbmNlc3RvciA9PT0gd2luZG93KSB7XG4gICAgICBjb250ZXh0SGVpZ2h0ID0gaG9yaXpvbnRhbCA/IHdpbmRvdy5pbm5lcldpZHRoIDogd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgY29udGV4dFNjcm9sbFRvcCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRleHRIZWlnaHQgPSBob3Jpem9udGFsID8gdGhpcy5zY3JvbGxhYmxlQW5jZXN0b3Iub2Zmc2V0V2lkdGggOiB0aGlzLnNjcm9sbGFibGVBbmNlc3Rvci5vZmZzZXRIZWlnaHQ7XG4gICAgICBjb250ZXh0U2Nyb2xsVG9wID0gaG9yaXpvbnRhbCA/IHRoaXMuc2Nyb2xsYWJsZUFuY2VzdG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgOiB0aGlzLnNjcm9sbGFibGVBbmNlc3Rvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgZGVidWcpIHtcbiAgICAgIGRlYnVnTG9nKCd3YXlwb2ludCB0b3AnLCB3YXlwb2ludFRvcCk7XG4gICAgICBkZWJ1Z0xvZygnd2F5cG9pbnQgYm90dG9tJywgd2F5cG9pbnRCb3R0b20pO1xuICAgICAgZGVidWdMb2coJ3Njcm9sbGFibGVBbmNlc3RvciBoZWlnaHQnLCBjb250ZXh0SGVpZ2h0KTtcbiAgICAgIGRlYnVnTG9nKCdzY3JvbGxhYmxlQW5jZXN0b3Igc2Nyb2xsVG9wJywgY29udGV4dFNjcm9sbFRvcCk7XG4gICAgfVxuXG4gICAgdmFyIF90aGlzJHByb3BzNCA9IHRoaXMucHJvcHMsXG4gICAgICAgIGJvdHRvbU9mZnNldCA9IF90aGlzJHByb3BzNC5ib3R0b21PZmZzZXQsXG4gICAgICAgIHRvcE9mZnNldCA9IF90aGlzJHByb3BzNC50b3BPZmZzZXQ7XG4gICAgdmFyIHRvcE9mZnNldFB4ID0gY29tcHV0ZU9mZnNldFBpeGVscyh0b3BPZmZzZXQsIGNvbnRleHRIZWlnaHQpO1xuICAgIHZhciBib3R0b21PZmZzZXRQeCA9IGNvbXB1dGVPZmZzZXRQaXhlbHMoYm90dG9tT2Zmc2V0LCBjb250ZXh0SGVpZ2h0KTtcbiAgICB2YXIgY29udGV4dEJvdHRvbSA9IGNvbnRleHRTY3JvbGxUb3AgKyBjb250ZXh0SGVpZ2h0O1xuICAgIHJldHVybiB7XG4gICAgICB3YXlwb2ludFRvcDogd2F5cG9pbnRUb3AsXG4gICAgICB3YXlwb2ludEJvdHRvbTogd2F5cG9pbnRCb3R0b20sXG4gICAgICB2aWV3cG9ydFRvcDogY29udGV4dFNjcm9sbFRvcCArIHRvcE9mZnNldFB4LFxuICAgICAgdmlld3BvcnRCb3R0b206IGNvbnRleHRCb3R0b20gLSBib3R0b21PZmZzZXRQeFxuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIDtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHZhciBfdGhpczQgPSB0aGlzO1xuXG4gICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcblxuICAgIGlmICghY2hpbGRyZW4pIHtcbiAgICAgIC8vIFdlIG5lZWQgYW4gZWxlbWVudCB0aGF0IHdlIGNhbiBsb2NhdGUgaW4gdGhlIERPTSB0byBkZXRlcm1pbmUgd2hlcmUgaXQgaXNcbiAgICAgIC8vIHJlbmRlcmVkIHJlbGF0aXZlIHRvIHRoZSB0b3Agb2YgaXRzIGNvbnRleHQuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICAgICAgcmVmOiB0aGlzLnJlZkVsZW1lbnQsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgZm9udFNpemU6IDBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGlzRE9NRWxlbWVudChjaGlsZHJlbikgfHwgaXNGb3J3YXJkUmVmKGNoaWxkcmVuKSkge1xuICAgICAgdmFyIHJlZiA9IGZ1bmN0aW9uIHJlZihub2RlKSB7XG4gICAgICAgIF90aGlzNC5yZWZFbGVtZW50KG5vZGUpO1xuXG4gICAgICAgIGlmIChjaGlsZHJlbi5yZWYpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkcmVuLnJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2hpbGRyZW4ucmVmKG5vZGUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZHJlbi5yZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZHJlbiwge1xuICAgICAgICByZWY6IHJlZlxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jbG9uZUVsZW1lbnQoY2hpbGRyZW4sIHtcbiAgICAgIGlubmVyUmVmOiB0aGlzLnJlZkVsZW1lbnRcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gV2F5cG9pbnQ7XG59KFJlYWN0LlB1cmVDb21wb25lbnQpO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBXYXlwb2ludC5wcm9wVHlwZXMgPSB7XG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5lbGVtZW50LFxuICAgIGRlYnVnOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBvbkVudGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkxlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvblBvc2l0aW9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaXJlT25SYXBpZFNjcm9sbDogUHJvcFR5cGVzLmJvb2wsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2ZvcmJpZC1wcm9wLXR5cGVzXG4gICAgc2Nyb2xsYWJsZUFuY2VzdG9yOiBQcm9wVHlwZXMuYW55LFxuICAgIGhvcml6b250YWw6IFByb3BUeXBlcy5ib29sLFxuICAgIC8vIGB0b3BPZmZzZXRgIGNhbiBlaXRoZXIgYmUgYSBudW1iZXIsIGluIHdoaWNoIGNhc2UgaXRzIGEgZGlzdGFuY2UgZnJvbSB0aGVcbiAgICAvLyB0b3Agb2YgdGhlIGNvbnRhaW5lciBpbiBwaXhlbHMsIG9yIGEgc3RyaW5nIHZhbHVlLiBWYWxpZCBzdHJpbmcgdmFsdWVzIGFyZVxuICAgIC8vIG9mIHRoZSBmb3JtIFwiMjBweFwiLCB3aGljaCBpcyBwYXJzZWQgYXMgcGl4ZWxzLCBvciBcIjIwJVwiLCB3aGljaCBpcyBwYXJzZWRcbiAgICAvLyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGhlaWdodCBvZiB0aGUgY29udGFpbmluZyBlbGVtZW50LlxuICAgIC8vIEZvciBpbnN0YW5jZSwgaWYgeW91IHBhc3MgXCItMjAlXCIsIGFuZCB0aGUgY29udGFpbmluZyBlbGVtZW50IGlzIDEwMHB4IHRhbGwsXG4gICAgLy8gdGhlbiB0aGUgd2F5cG9pbnQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiBpdCBoYXMgYmVlbiBzY3JvbGxlZCAyMHB4IGJleW9uZFxuICAgIC8vIHRoZSB0b3Agb2YgdGhlIGNvbnRhaW5pbmcgZWxlbWVudC5cbiAgICB0b3BPZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKSxcbiAgICAvLyBgYm90dG9tT2Zmc2V0YCBjYW4gZWl0aGVyIGJlIGEgbnVtYmVyLCBpbiB3aGljaCBjYXNlIGl0cyBhIGRpc3RhbmNlIGZyb20gdGhlXG4gICAgLy8gYm90dG9tIG9mIHRoZSBjb250YWluZXIgaW4gcGl4ZWxzLCBvciBhIHN0cmluZyB2YWx1ZS4gVmFsaWQgc3RyaW5nIHZhbHVlcyBhcmVcbiAgICAvLyBvZiB0aGUgZm9ybSBcIjIwcHhcIiwgd2hpY2ggaXMgcGFyc2VkIGFzIHBpeGVscywgb3IgXCIyMCVcIiwgd2hpY2ggaXMgcGFyc2VkXG4gICAgLy8gYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBoZWlnaHQgb2YgdGhlIGNvbnRhaW5pbmcgZWxlbWVudC5cbiAgICAvLyBGb3IgaW5zdGFuY2UsIGlmIHlvdSBwYXNzIFwiMjAlXCIsIGFuZCB0aGUgY29udGFpbmluZyBlbGVtZW50IGlzIDEwMHB4IHRhbGwsXG4gICAgLy8gdGhlbiB0aGUgd2F5cG9pbnQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiBpdCBoYXMgYmVlbiBzY3JvbGxlZCAyMHB4IGJleW9uZFxuICAgIC8vIHRoZSBib3R0b20gb2YgdGhlIGNvbnRhaW5pbmcgZWxlbWVudC5cbiAgICAvLyBTaW1pbGFyIHRvIGB0b3BPZmZzZXRgLCBidXQgZm9yIHRoZSBib3R0b20gb2YgdGhlIGNvbnRhaW5lci5cbiAgICBib3R0b21PZmZzZXQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5udW1iZXJdKVxuICB9O1xufVxuXG5XYXlwb2ludC5hYm92ZSA9IEFCT1ZFO1xuV2F5cG9pbnQuYmVsb3cgPSBCRUxPVztcbldheXBvaW50Lmluc2lkZSA9IElOU0lERTtcbldheXBvaW50LmludmlzaWJsZSA9IElOVklTSUJMRTtcbldheXBvaW50LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbldheXBvaW50LmRpc3BsYXlOYW1lID0gJ1dheXBvaW50JztcblxuZXhwb3J0IHsgV2F5cG9pbnQgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcblxyXG5cclxuY29uc3QgRmlsdGVycyA9IChwcm9wcykgPT4ge1xyXG5cclxuICAgIGZ1bmN0aW9uIGNoZWNrU2VsZWN0ZWQob2JqKSB7XHJcbiAgICAgICAgZm9yICh2YXIgaSBpbiBvYmopIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBvYmpbaV0pIHtcclxuICAgICAgICAgICAgICAgIGlmIChvYmpbaV1bal0gPT0gdHJ1ZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LW5vd3JhcCBzbTpmbGV4LXdyYXAgb3ZlcmZsb3cteC1hdXRvIGdhcC0xMCBtZDpnYXAteC0yMCBweS0xMCBtYi0yMFwiPlxyXG4gICAgICAgICAgICB7cHJvcHMucHJvcHMub3B0aW9ucy5tYXAoKGl0ZW0pID0+IChcclxuICAgICAgICAgICAgICAgIDxidXR0b24ga2V5PXtpdGVtLnZhbHVlfSBjbGFzc05hbWU9e2BidXR0b24gd2hpdGVzcGFjZS1ub3dyYXAgJHtpdGVtLnNlbGVjdGVkID8gJ2J1dHRvbi0tZGVmYXVsdC1ibHVlJyA6ICdidXR0b24tLW91dGxpbmUtYmx1ZSd9YH0gb25DbGljaz17KCkgPT4gcHJvcHMuZmlsdGVyKGl0ZW0udmFsdWUpfT57aXRlbS50ZXh0fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICApKX1cclxuXHJcbiAgICAgICAgICAgIHtjaGVja1NlbGVjdGVkKHByb3BzLnByb3BzLm9wdGlvbnMpICYmIDxidXR0b24gY2xhc3NOYW1lPVwiZm9udC1laW5hIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciB0ZXh0LWJhc2UgcHgtMTAgcHktMTUgdGV4dC1jZW50ZXIgdHJhbnNpdGlvbi1hbGwgdGV4dC1vcmlvbkJsdWUgaG92ZXI6LXRyYW5zbGF0ZS15LTJcIiBvbkNsaWNrPXsoKSA9PiBwcm9wcy5maWx0ZXIobnVsbCl9Pntwcm9wcy5wcm9wcy5jbGVhckxhYmVsfTxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIG1sLTQgbXQtM1wiPiYjeEU1Q0Q7PC9zcGFuPjwvYnV0dG9uPiB9XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgKVxyXG4gICAgXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnMiLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vSW1hZ2UnO1xyXG5cclxuXHJcbmNvbnN0IEFydGljbGUgPSAoaXRlbSkgPT4ge1xyXG4gICAgcmV0dXJuIChcclxuXHRcdDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIGgtZnVsbCBwLTBcIj5cclxuXHRcdFx0PGEgaHJlZj17aXRlbS5wcm9wcy51cmx9IGNsYXNzTmFtZT17YGdyb3VwIHJvdW5kZWQteGwgaC1mdWxsIHNoYWRvdy1sZyBtZDpob3ZlcjpzaGFkb3ctMnhsIGZsZXggZmxleC1jb2wgZHVyYXRpb24tMzAwIHRyYW5zaXRpb24tYWxsIHdpbGwtY2hhbmdlLXRyYW5zZm9ybSBtZDpob3ZlcjotdHJhbnNsYXRlLXktMTAgY2hlY2staW4tdmlld3BvcnQgJHtpdGVtLmxvYWRpbmcgJiYgJ29wYWNpdHktMzAnfSAgJHtpdGVtLmlzVmlzaWJsZSA/ICdvcGFjaXR5LTEwMCcgOiAnb3BhY2l0eS0wIG1kOnRyYW5zbGF0ZS15LTMwJ31gfT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImFzcGVjdC12aWRlbyByb3VuZGVkLXQteGwgYmctYmFieUJsdWU0MFwiPlxyXG5cdFx0XHRcdFx0PEltYWdlIGNsYXNzTmFtZT1cImFzcGVjdC12aWRlbyByb3VuZGVkLXQteGwgdGV4dC14cyBoLWZ1bGwgdy1mdWxsIG9iamVjdC1jb3ZlclwiIHsuLi5pdGVtLnByb3BzLmltYWdlfSAvPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInAtMTZcIj5cclxuXHRcdFx0XHRcdDxoNCBjbGFzc05hbWU9XCJmb250LWVpbmEtc2VtaWJvbGQgbGVhZGluZy10aWdodCBsaW5lLWNsYW1wLTJcIj57aXRlbS5wcm9wcy5oZWFkaW5nfTwvaDQ+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInRleHQtbWQgZm9udC1laW5hLWxpZ2h0IG10LTEyXCI+e2l0ZW0ucHJvcHMucHVibGlzaERhdGV9IHtpdGVtLnByb3BzLnRhZ308L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9hPlxyXG5cdFx0PC9kaXY+XHJcbiAgICApXHJcbiAgICBcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgQXJ0aWNsZSIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBUcmFja1Zpc2liaWxpdHkgZnJvbSAncmVhY3Qtb24tc2NyZWVuJztcclxuaW1wb3J0IFJlYWN0UGFnaW5hdGUgZnJvbSAncmVhY3QtcGFnaW5hdGUnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vSW1hZ2UnO1xyXG5pbXBvcnQgRmlsdGVycyBmcm9tICcuL2ZpbHRlcnMnO1xyXG5pbXBvcnQgQXJ0aWNsZSBmcm9tICcuL2FydGljbGUnO1xyXG5cclxuY29uc3QgTmV3c3Jvb20gPSAocHJvcHMpID0+IHtcclxuXHRjb25zdCBbdHlwZXMsIHNldFR5cGVzXSA9IHVzZVN0YXRlKCk7XHJcblx0Y29uc3QgW3llYXJzLCBzZXRZZWFyc10gPSB1c2VTdGF0ZSh7fSk7XHJcblx0Y29uc3QgW3RoZW1lcywgc2V0VGhlbWVzXSA9IHVzZVN0YXRlKCk7XHJcblx0Y29uc3QgW3JlbGVhc2V0eXBlcywgc2V0UmVsZWFzZXR5cGVzXSA9IHVzZVN0YXRlKCk7XHJcblx0Y29uc3QgW2tleXdvcmRzLCBzZXRLZXl3b3Jkc10gPSB1c2VTdGF0ZSh7fSk7XHJcblxyXG5cdGNvbnN0IFtmaWx0ZXJzLCBzZXRGaWx0ZXJzXSA9IHVzZVN0YXRlKHt9KTtcclxuXHRjb25zdCBbYXJ0aWNsZXMsIHNldEFydGljbGVzXSA9IHVzZVN0YXRlKHt9KTtcclxuXHJcblx0dmFyIGZpbHRlcnNTdHJpbmc7XHJcblxyXG5cdGNvbnN0IFtwYWdlY291bnQsIHNldFBhZ2Vjb3VudF0gPSB1c2VTdGF0ZSgpO1xyXG5cdGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IHVzZVN0YXRlKDEpO1xyXG5cclxuXHRjb25zdCBbeWVhckZpbHRlck9wZW4sIHNldHllYXJGaWx0ZXJPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHRjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG5cdGNvbnN0IFtrZXl3b3Jkc1Zpc2libGUsIHNldEtleXdvcmRzVmlzaWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblx0Y29uc3QgW2ZpcnN0TG9hZCwgc2V0Rmlyc3RMb2FkXSA9IHVzZVN0YXRlKHRydWUpO1xyXG5cclxuXHJcblx0dXNlRWZmZWN0KCgpID0+IHtcclxuXHJcblx0fSwgW10pO1xyXG5cclxuXHRmdW5jdGlvbiBoYW5kbGVQYWdlQ2hhbmdlKHBhZ2UpIHtcclxuXHRcdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIubmV3c3Jvb20tcGFnZSBoMVwiKS5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnZW5kJywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG5cclxuXHRcdHNldEZpbHRlcnMoZmlsdGVycyA9PiAoe1xyXG5cdFx0XHQuLi5maWx0ZXJzLFxyXG5cdFx0XHQuLi57IFwicGFnZVwiOiBwYWdlIH1cclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCA9ICcnKSB7XHJcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xyXG5cdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0aGVhZGVyczoge1xyXG5cdFx0XHRcdCdhY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbidcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRyZXR1cm4gcmVzcG9uc2UuanNvbigpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdXNlT3V0c2lkZUNsaWNrKHJlZikge1xyXG5cdFx0dXNlRWZmZWN0KCgpID0+IHtcclxuXHRcdFx0LyoqXHJcblx0XHRcdCAqIEFsZXJ0IGlmIGNsaWNrZWQgb24gb3V0c2lkZSBvZiBlbGVtZW50XHJcblx0XHRcdCAqL1xyXG5cdFx0XHRmdW5jdGlvbiBoYW5kbGVDbGlja091dHNpZGUoZXZlbnQpIHtcclxuXHRcdFx0XHRpZiAocmVmLmN1cnJlbnQgJiYgIXJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuXHRcdFx0XHRcdHNldHllYXJGaWx0ZXJPcGVuKGZhbHNlKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0Ly8gQmluZCB0aGUgZXZlbnQgbGlzdGVuZXJcclxuXHRcdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCBoYW5kbGVDbGlja091dHNpZGUpO1xyXG5cdFx0XHRyZXR1cm4gKCkgPT4ge1xyXG5cdFx0XHRcdC8vIFVuYmluZCB0aGUgZXZlbnQgbGlzdGVuZXIgb24gY2xlYW4gdXBcclxuXHRcdFx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XHJcblx0XHRcdH07XHJcblx0XHR9LCBbcmVmXSk7XHJcblx0fVxyXG5cclxuXHRjb25zdCB3cmFwcGVyUmVmID0gdXNlUmVmKG51bGwpO1xyXG5cdHVzZU91dHNpZGVDbGljayh3cmFwcGVyUmVmKTtcclxuXHJcblx0Y29uc3QgdHlwZUNsaWNrID0gKGV2ZW50KSA9PiB7XHJcblx0XHRzZXRGaWx0ZXJzKGZpbHRlcnMgPT4gKHtcclxuXHRcdFx0Li4uZmlsdGVycyxcclxuXHRcdFx0Li4ueyBcInR5cGVcIjogZXZlbnQsIFwidGhlbWVcIjogbnVsbCwgXCJyZWx0eXBlXCI6IG51bGwsIFwia2V5d29yZHNcIjogbnVsbCwgXCJwYWdlXCI6IG51bGwsIFwic2hvd0tleXdvcmRzXCI6IG51bGwgfVxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0Y29uc3QgeWVhckNsaWNrID0gKGV2ZW50KSA9PiB7XHJcblx0XHRzZXR5ZWFyRmlsdGVyT3BlbihmYWxzZSk7XHJcblxyXG5cdFx0c2V0RmlsdGVycyhmaWx0ZXJzID0+ICh7XHJcblx0XHRcdC4uLmZpbHRlcnMsXHJcblx0XHRcdC4uLnsgXCJ5ZWFyXCI6IGV2ZW50LCBcInBhZ2VcIjogbnVsbCB9XHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHRjb25zdCB0aGVtZUNsaWNrID0gKGV2ZW50KSA9PiB7XHJcblx0XHRzZXRGaWx0ZXJzKGZpbHRlcnMgPT4gKHtcclxuXHRcdFx0Li4uZmlsdGVycyxcclxuXHRcdFx0Li4ueyBcInRoZW1lXCI6IGV2ZW50LCBcImtleXdvcmRzXCI6IG51bGwsIFwicGFnZVwiOiBudWxsIH1cclxuXHRcdH0pKTtcclxuXHR9XHJcblxyXG5cdGNvbnN0IHJlbGVhc2V0eXBlQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuXHRcdHNldEZpbHRlcnMoZmlsdGVycyA9PiAoe1xyXG5cdFx0XHQuLi5maWx0ZXJzLFxyXG5cdFx0XHQuLi57IFwicmVsdHlwZVwiOiBldmVudCwgXCJrZXl3b3Jkc1wiOiBudWxsLCBcInBhZ2VcIjogbnVsbCB9XHJcblx0XHR9KSk7XHJcblx0fVxyXG5cclxuXHRjb25zdCBrZXl3b3JkQ2xpY2sgPSAoZXZlbnQpID0+IHtcclxuXHRcdGlmIChmaWx0ZXJzLmtleXdvcmRzKSB7XHJcblx0XHRcdHZhciBrZXl3b3JkcyA9IGZpbHRlcnMua2V5d29yZHMuc3BsaXQoXCJ+XCIpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHZhciBrZXl3b3JkcyA9IFtdO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChrZXl3b3Jkcy5pbmNsdWRlcyhldmVudCkpIHtcclxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBrZXl3b3Jkcy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGlmIChrZXl3b3Jkc1tpXSA9PT0gZXZlbnQpIHtcclxuXHRcdFx0XHRcdGtleXdvcmRzLnNwbGljZShpLCAxKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2Uge1xyXG5cdFx0XHRrZXl3b3Jkcy5wdXNoKGV2ZW50KTtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRGaWx0ZXJzKGZpbHRlcnMgPT4gKHtcclxuXHRcdFx0Li4uZmlsdGVycyxcclxuXHRcdFx0Li4ueyBcImtleXdvcmRzXCI6IGtleXdvcmRzLmpvaW4oJ34nKSwgXCJwYWdlXCI6IG51bGwgfVxyXG5cdFx0fSkpO1xyXG5cdH1cclxuXHJcblx0Y29uc3Qgc2hvd0tleXdvcmRzID0gKGV2ZW50KSA9PiB7XHJcblx0XHRzZXRGaWx0ZXJzKGZpbHRlcnMgPT4gKHtcclxuXHRcdFx0Li4uZmlsdGVycyxcclxuXHRcdFx0Li4ueyBcInNob3dLZXl3b3Jkc1wiOiBcInRydWVcIiB9XHJcblx0XHR9KSk7XHJcblx0XHRzZXRLZXl3b3Jkc1Zpc2libGUodHJ1ZSk7XHJcblx0fVxyXG5cclxuXHR2YXIgdHlwZXNIdG1sID0gdHlwZXM/Lm1hcCgoaXRlbSwgaSkgPT4ge1xyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0PGJ1dHRvbiBrZXk9e2l9IGNsYXNzTmFtZT17YGZsZXgtMSBzbTpmbGV4LW5vbmUgcHgtOCBzbTpweC00OCBweS0xNiBncm91cCAke2l0ZW0uc2VsZWN0ZWQgPyAnYm9yZGVyLWItNCBib3JkZXItb3Jpb25CbHVlIC1tYi0xJyA6IG51bGx9YH0gb25DbGljaz17KCkgPT4gdHlwZUNsaWNrKGl0ZW0udmFsdWUpfT48c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgdHJhbnNpdGlvbi1hbGwgZ3JvdXAtaG92ZXI6LXRyYW5zbGF0ZS15LTRcIj57aXRlbS50ZXh0fTwvc3Bhbj48L2J1dHRvbj5cclxuXHRcdClcclxuXHR9KTtcclxuXHJcblx0aWYgKHllYXJzICYmIHllYXJzLmxlbmd0aCA+IDApIHtcclxuXHRcdHZhciB5ZWFyc0h0bWwgPSB5ZWFycz8ubWFwKChpdGVtLCBpKSA9PiB7XHJcblx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0PGxpIGtleT17aXRlbS52YWx1ZX0+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzTmFtZT1cImRyb3Bkb3duLWl0ZW0gdGV4dC1iYXNlIHRleHQtbGVmdCBweS02IHB4LTQgZm9udC1ub3JtYWwgYmxvY2sgdy1mdWxsIHdoaXRlc3BhY2Utbm93cmFwIGhvdmVyOnRleHQtYmx1ZVwiIG9uQ2xpY2s9eygpID0+IHllYXJDbGljayhpdGVtLnZhbHVlKX0gaHJlZj1cIiNcIj57aXRlbS50ZXh0fTwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvbGk+XHJcblx0XHRcdClcclxuXHRcdH0pO1xyXG5cclxuXHRcdHZhciB5ZWFyRmlsdGVySHRtbCA9IDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmZsZXggbWwtMzIganVzdGlmeS1jZW50ZXJcIiByZWY9e3dyYXBwZXJSZWZ9PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImRyb3Bkb3duIHJlbGF0aXZlXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiBjbGFzc05hbWU9e2BidXR0b24gZ3JvdyBmb250LWVpbmEgc206Z3Jvdy0wIHdoaXRlc3BhY2Utbm93cmFwICR7eWVhckZpbHRlck9wZW4gPyBcImJ1dHRvbi0tb3V0bGluZS1ibHVlIHRyYW5zbGF0ZTNkLTAgbG9jay1ob3ZlclwiIDogXCJidXR0b24tLW91dGxpbmUtYmxhY2tcIn1gfSB0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdGlkPVwiZHJvcGRvd25NZW51XCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIG9uQ2xpY2s9eygpID0+IHNldHllYXJGaWx0ZXJPcGVuKCF5ZWFyRmlsdGVyT3Blbil9PlxyXG5cdFx0XHRcdFx0e2ZpbHRlcnMueWVhciA/IGZpbHRlcnMueWVhciA6IHllYXJzWzBdLnRleHR9PHNwYW4gY2xhc3NOYW1lPXtgbWF0ZXJpYWwtaWNvbnMgYWxpZ24tYm90dG9tIG1sLTUgLW1yLTUgJHt5ZWFyRmlsdGVyT3BlbiA/IFwicm90YXRlLTE4MFwiIDogXCJcIn1gfT5leHBhbmRfbW9yZTwvc3Bhbj5cclxuXHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHQ8dWwgY2xhc3NOYW1lPXtgc2hhZG93LXhsIG1pbi13LWZ1bGwgYmctd2hpdGUgYWJzb2x1dGUgei0xMCBmbG9hdC1sZWZ0IHB5LTIgbGlzdC1ub25lIHRleHQtbGVmdCByb3VuZGVkLWxnIG10LTEgbS0wIHB4LTEwIHB5LTUgYmctY2xpcC1wYWRkaW5nICR7eWVhckZpbHRlck9wZW4gPyBcImJsb2NrXCIgOiBcImhpZGRlblwifWB9XHJcblx0XHRcdFx0XHRhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bk1lbnVcIlxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdHt5ZWFyc0h0bWx9XHJcblx0XHRcdFx0PC91bD5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHR9XHJcblxyXG5cdGlmIChrZXl3b3JkcyAmJiBrZXl3b3Jkcy5sZW5ndGggPiAwKSB7XHJcblx0XHR2YXIga2V5d29yZHNIdG1sID0ga2V5d29yZHM/Lm1hcCgoaXRlbSwgaSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gKFxyXG5cdFx0XHRcdDxidXR0b24ga2V5PXtpfSBjbGFzc05hbWU9e2BidXR0b24gYnV0dG9uLXNtYWxsIHdoaXRlc3BhY2Utbm93cmFwICR7aXRlbS5zZWxlY3RlZCA/ICdidXR0b24tLWRlZmF1bHQtYmx1ZScgOiAnYnV0dG9uLS1kZWZhdWx0LWxpZ2h0LWJsdWUnfWB9IG9uQ2xpY2s9eygpID0+IGtleXdvcmRDbGljayhpdGVtLnZhbHVlKX0+e2l0ZW0udGV4dH08L2J1dHRvbj5cclxuXHRcdFx0KVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRpZiAoYXJ0aWNsZXMubGVuZ3RoID4gMCkge1xyXG5cdFx0dmFyIGFydGljbGVzSHRtbCA9IGFydGljbGVzLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHQ8VHJhY2tWaXNpYmlsaXR5IGtleT17aXRlbS5pZH0gcGFydGlhbFZpc2liaWxpdHkgb25jZT5cclxuXHRcdFx0XHRcdFx0PEFydGljbGUgcHJvcHM9e2l0ZW19IGxvYWRpbmc9e2xvYWRpbmd9IC8+XHJcblx0XHRcdFx0XHQ8L1RyYWNrVmlzaWJpbGl0eT5cclxuXHRcdFx0XHQpXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dXNlRWZmZWN0KCgpID0+IHtcclxuXHJcblx0XHRpZiAoZmlyc3RMb2FkKSB7XHJcblx0XHRcdGZpbHRlcnNTdHJpbmcgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdGZpbHRlcnNTdHJpbmcgPSBPYmplY3Qua2V5cyhmaWx0ZXJzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xyXG5cdFx0XHRcdGlmIChmaWx0ZXJzW2tleV0gIT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGtleSArICc9JyArIGZpbHRlcnNba2V5XVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyYnKTtcclxuXHRcdFx0ZmlsdGVyc1N0cmluZyA9IFwiP1wiICsgZmlsdGVyc1N0cmluZztcclxuXHRcdH1cclxuXHJcblx0XHRzZXRMb2FkaW5nKHRydWUpO1xyXG5cclxuXHRcdGNvbnN0IG5ld1VSTCA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIGZpbHRlcnNTdHJpbmc7XHJcblx0XHR3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgbnVsbCwgbmV3VVJMKTtcclxuXHJcblx0XHRwb3N0RGF0YSh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBmaWx0ZXJzU3RyaW5nKVxyXG5cdFx0XHQudGhlbigoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdHNldFBhZ2Vjb3VudChkYXRhLnBhZ2VzQ291bnQpO1xyXG5cdFx0XHRcdHNldFBhZ2UoZGF0YS5wYWdlKTtcclxuXHRcdFx0XHRzZXRUeXBlcyhkYXRhLnR5cGVGaWx0ZXIub3B0aW9ucyk7XHJcblx0XHRcdFx0KGRhdGEuaXRlbXMgPyBzZXRBcnRpY2xlcyhkYXRhLml0ZW1zKSA6IHNldEFydGljbGVzKG51bGwpKTtcclxuXHRcdFx0XHQoZGF0YS55ZWFyRmlsdGVyID8gc2V0WWVhcnMoZGF0YS55ZWFyRmlsdGVyLm9wdGlvbnMpIDogc2V0WWVhcnMobnVsbCkpO1xyXG5cdFx0XHRcdChkYXRhLnRoZW1lRmlsdGVyID8gc2V0VGhlbWVzKGRhdGEudGhlbWVGaWx0ZXIpIDogc2V0VGhlbWVzKG51bGwpKTtcclxuXHRcdFx0XHQoZGF0YS5yZWxlYXNlVHlwZUZpbHRlciA/IHNldFJlbGVhc2V0eXBlcyhkYXRhLnJlbGVhc2VUeXBlRmlsdGVyKSA6IHNldFJlbGVhc2V0eXBlcyhudWxsKSk7XHJcblx0XHRcdFx0KGRhdGEua2V5d29yZHNGaWx0ZXIgPyBzZXRLZXl3b3JkcyhkYXRhLmtleXdvcmRzRmlsdGVyLm9wdGlvbnMpIDogc2V0S2V5d29yZHMobnVsbCkpO1xyXG5cdFx0XHRcdHNldExvYWRpbmcoZmFsc2UpO1xyXG5cclxuXHRcdFx0XHRpZiAoZmlyc3RMb2FkKSB7XHJcblx0XHRcdFx0XHRjb25zdCBxdWVyeVN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2g7XHJcblx0XHRcdFx0XHRjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHF1ZXJ5U3RyaW5nKTtcclxuXHJcblx0XHRcdFx0XHRzZXRGaWx0ZXJzKGZpbHRlcnMgPT4gKHtcclxuXHRcdFx0XHRcdFx0Li4uZmlsdGVycyxcclxuXHRcdFx0XHRcdFx0Li4ueyBcInR5cGVcIjogdXJsUGFyYW1zLmdldCgndHlwZScpLCBcInRoZW1lXCI6IHVybFBhcmFtcy5nZXQoJ3RoZW1lJyksIFwia2V5d29yZHNcIjogdXJsUGFyYW1zLmdldCgna2V5d29yZHMnKSwgXCJyZWx0eXBlXCI6IHVybFBhcmFtcy5nZXQoJ3JlbHR5cGUnKSwgXCJzaG93S2V5d29yZHNcIjogdXJsUGFyYW1zLmdldCgnc2hvd0tleXdvcmRzJyksIFwieWVhclwiOiB1cmxQYXJhbXMuZ2V0KCd5ZWFyJykgfVxyXG5cdFx0XHRcdFx0fSkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRzZXRGaXJzdExvYWQoZmFsc2UpO1xyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRmaWx0ZXJzU3RyaW5nID0gT2JqZWN0LmtleXMoZmlsdGVycykubWFwKGZ1bmN0aW9uIChrZXkpIHtcclxuXHRcdFx0cmV0dXJuIGtleSArICc9JyArIGZpbHRlcnNba2V5XVxyXG5cdFx0fSkuam9pbignJicpO1xyXG5cclxuXHR9LCBbZmlsdGVyc10pXHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm1iLTY0XCI+XHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBib3JkZXItYiBib3JkZXItZ3JleSBtYi0yMFwiPlxyXG5cdFx0XHRcdHt0eXBlc0h0bWx9XHJcblx0XHRcdFx0e3llYXJGaWx0ZXJIdG1sfVxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdHt0aGVtZXMgJiYgPEZpbHRlcnMgcHJvcHM9e3RoZW1lc30gZmlsdGVyPXt0aGVtZUNsaWNrfSAvPn1cclxuXHRcdFx0e3JlbGVhc2V0eXBlcyAmJiA8RmlsdGVycyBwcm9wcz17cmVsZWFzZXR5cGVzfSBmaWx0ZXI9e3JlbGVhc2V0eXBlQ2xpY2t9IC8+fVxyXG5cclxuXHJcblx0XHRcdHsoKGZpbHRlcnMudHlwZSAmJiBmaWx0ZXJzLnR5cGUgPT0gJ0FydGljbGVzJykgJiYgKCFrZXl3b3JkcykpICYmICFsb2FkaW5nICYmIChcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YHRleHQtb3Jpb25CbHVlIGhpZGRlbiBzbTpibG9ja2B9PjxidXR0b24gb25DbGljaz17KCkgPT4gc2hvd0tleXdvcmRzKG51bGwpfT57cHJvcHMuc2hvd0tleXdvcmRzTGFiZWx9PC9idXR0b24+PC9kaXY+XHJcblx0XHRcdCl9XHJcblxyXG5cdFx0XHR7KGtleXdvcmRzICYmIGtleXdvcmRzLmxlbmd0aCA+IDApICYmIChcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YHNtOmZsZXggZmxleC13cmFwIGdhcC0xMCBtZDpnYXAteC0yMCBtYi0zMCAke2tleXdvcmRzVmlzaWJsZSA/IFwiZmxleFwiIDogXCJoaWRkZW5cIn1gfT5cclxuXHRcdFx0XHRcdHtrZXl3b3Jkc0h0bWx9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdCl9XHJcblxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbWQ6Z3JpZC1jb2xzLTMgZ2FwLTIwIGxnOmdhcC0zMCBtdC01MFwiPlxyXG5cdFx0XHRcdHthcnRpY2xlc0h0bWx9XHJcblx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0e3BhZ2Vjb3VudCA+IDEgJiZcclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm10LTUwXCI+XHJcblx0XHRcdFx0XHQ8UmVhY3RQYWdpbmF0ZVxyXG5cdFx0XHRcdFx0XHRicmVha0xhYmVsPVwiLi4uXCJcclxuXHRcdFx0XHRcdFx0bmV4dExhYmVsPXs8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBtdC04XCI+JiN4RTVDODs8L3NwYW4+fVxyXG5cdFx0XHRcdFx0XHRwcmV2aW91c0xhYmVsPXs8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBtdC04XCI+JiN4RTVDNDs8L3NwYW4+fVxyXG5cdFx0XHRcdFx0XHRwYWdlUmFuZ2VEaXNwbGF5ZWQ9ezN9XHJcblx0XHRcdFx0XHRcdG1hcmdpblBhZ2VzRGlzcGxheWVkPXsyfVxyXG5cdFx0XHRcdFx0XHRwYWdlQ291bnQ9e3BhZ2Vjb3VudH1cclxuXHRcdFx0XHRcdFx0cmVuZGVyT25aZXJvUGFnZUNvdW50PXtudWxsfVxyXG5cdFx0XHRcdFx0XHRjb250YWluZXJDbGFzc05hbWU9e1wiZmxleCBpbmxpbmUtZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtb3Jpb25CbHVlXCJ9XHJcblx0XHRcdFx0XHRcdHBhZ2VDbGFzc05hbWU9e1wicHgtOCBob3Zlcjpvcmlvbk1pZGRsZUJsdWVcIn1cclxuXHRcdFx0XHRcdFx0YnJlYWtDbGFzc05hbWU9e1wiXCJ9XHJcblx0XHRcdFx0XHRcdHByZXZpb3VzQ2xhc3NOYW1lPXtcInB4LTggaG92ZXI6dGV4dC1vcmlvbk1pZGRsZUJsdWVcIn1cclxuXHRcdFx0XHRcdFx0bmV4dENsYXNzTmFtZT17XCJweC04IGhvdmVyOnRleHQtb3Jpb25NaWRkbGVCbHVlXCJ9XHJcblx0XHRcdFx0XHRcdGFjdGl2ZUNsYXNzTmFtZT17XCJmb250LWVpbmEtc2VtaWJvbGRcIn1cclxuXHRcdFx0XHRcdFx0Zm9yY2VQYWdlPXtwYWdlIC0gMX1cclxuXHRcdFx0XHRcdFx0b25QYWdlQ2hhbmdlPXsocGFnZSkgPT4gaGFuZGxlUGFnZUNoYW5nZShwYWdlLnNlbGVjdGVkICsgMSl9XHJcblx0XHRcdFx0XHRcdHJlbmRlck9uWmVyb1BhZ2VDb3VudD17bnVsbH1cclxuXHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdH1cclxuXHRcdDwvZGl2PlxyXG5cdClcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE5ld3Nyb29tIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IFJlYWN0UGFnaW5hdGUgZnJvbSAncmVhY3QtcGFnaW5hdGUnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vSW1hZ2UnO1xyXG5cclxuXHJcbmNsYXNzIHNlYXJjaCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XHJcblx0Y29uc3RydWN0b3IocHJvcHMpIHtcclxuXHRcdHN1cGVyKHByb3BzKTtcclxuXHRcdHRoaXMuc3RhdGUgPSB7IHZhbHVlOiAodGhpcy5wcm9wcy5mb3JtLnF1ZXJ5ID09PSB1bmRlZmluZWQgPyBcIlwiIDogdGhpcy5wcm9wcy5mb3JtLnF1ZXJ5KSB9O1xyXG5cdFx0dGhpcy5zdGF0ZS5yZXN1bHRzID0gdGhpcy5wcm9wcy5yZXN1bHRzO1xyXG5cdFx0dGhpcy5zdGF0ZS5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHR0aGlzLnN0YXRlLnBhZ2UgPSB0aGlzLnByb3BzLnJlc3VsdHMucGFnZTtcclxuXHJcblx0XHR0aGlzLmhhbmRsZUNoYW5nZSA9IHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcyk7XHJcblx0XHR0aGlzLmhhbmRsZVN1Ym1pdCA9IHRoaXMuaGFuZGxlU3VibWl0LmJpbmQodGhpcyk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVDaGFuZ2UoZXZlbnQpIHtcclxuXHRcdHRoaXMuc2V0U3RhdGUoeyB2YWx1ZTogZXZlbnQudGFyZ2V0LnZhbHVlIH0pO1xyXG5cdH1cclxuXHJcblx0aGFuZGxlUGFnZUNoYW5nZShwYWdlKSB7XHJcblx0XHR0aGlzLnNldFN0YXRlKHsgcGFnZTogcGFnZSB9KTtcclxuXHRcdHRoaXMuZG9TZWFyY2gocGFnZSk7XHJcblx0XHR3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zZWFyY2gtcGFnZScpLm9mZnNldFRvcCArIDUwLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVTdWJtaXQoZXZlbnQpIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHR0aGlzLnNldFN0YXRlKHsgcGFnZTogMSB9KTtcclxuXHRcdHRoaXMuZG9TZWFyY2goMSk7XHJcblx0fVxyXG5cclxuXHRkb1NlYXJjaChwYWdlKSB7XHJcblx0XHR0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuXHJcblx0XHRmZXRjaCh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBcIj9xPVwiICsgKHRoaXMuc3RhdGUudmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiB0aGlzLnN0YXRlLnZhbHVlKSArIFwiJnBhZ2U9XCIgKyAocGFnZSA/IHBhZ2UgOiB0aGlzLnN0YXRlLnBhZ2UpLCB7XHJcblx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdFx0J2FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ1xyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdFx0XHQudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxyXG5cdFx0XHQudGhlbigoanNvbikgPT4ge1xyXG5cdFx0XHRcdHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBudWxsLCB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyAnLy8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyAoKHRoaXMuc3RhdGUudmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnN0YXRlLnZhbHVlID09IFwiXCIpID8gXCJcIiA6IFwiP3E9XCIgKyB0aGlzLnN0YXRlLnZhbHVlKSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyByZXN1bHRzOiBqc29uIH0pO1xyXG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuXHRcdFx0fSlcclxuXHR9XHJcblxyXG5cdHJlbmRlcigpIHtcclxuXHRcdHZhciByZXN1bHRzID0gdGhpcy5zdGF0ZS5yZXN1bHRzLmhpdHMubWFwKChpdGVtKSA9PlxyXG5cdFx0XHQ8YSBocmVmPXtpdGVtLnVybH0ga2V5PXtpdGVtLmlkfSBjbGFzc05hbWU9e2BzZWFyY2gtcmVzdWx0IGJsb2NrIG1kOmZsZXggbWItNTAgb3ZlcmZsb3ctaGlkZGVuIHJvdW5kZWQteGwgc2hhZG93LXhsIGR1cmF0aW9uLTMwMCB0cmFuc2l0aW9uLWFsbCB3aWxsLWNoYW5nZS10cmFuc2Zvcm0gbWQ6aG92ZXI6LXRyYW5zbGF0ZS15LTEwICR7dGhpcy5zdGF0ZS5sb2FkaW5nICYmICdvcGFjaXR5LTIwJ31gfSB0YXJnZXQ9XCJfYmxhbmtcIj5cclxuXHRcdFx0XHR7aXRlbS5waWN0dXJlID8gPGRpdiBjbGFzc05hbWU9e2BmbGV4LXNocmluay0wIHctZnVsbCBtZDp3LVsyNjBweF0gJHtpdGVtLmlzRXh0ZXJuYWwgPyBcImFzcGVjdC1kb3VibGUtdmlkZW9cIiA6IFwiYXNwZWN0LXZpZGVvXCJ9IGB9PjxJbWFnZSBjbGFzc05hbWU9e2B3LWZ1bGwgaC1mdWxsICR7aXRlbS5pc0V4dGVybmFsID8gXCJvYmplY3QtY29udGFpbiBweC0zMFwiIDogXCJvYmplY3QtY292ZXJcIn1gfSAgey4uLml0ZW0ucGljdHVyZX0gLz48L2Rpdj4gOiBudWxsfVxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwicHgtMjUgcHktMjBcIj5cclxuXHRcdFx0XHRcdDxoMiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGl0ZW0uaGVhZGluZyB9fSBjbGFzc05hbWU9XCJoNCBtdC0wIG1iLTEwIGxpbmUtY2xhbXAtMlwiPjwvaDI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImZvbnQtZWluYS1saWdodCB0ZXh0LW1kXCI+XHJcblx0XHRcdFx0XHRcdHtpdGVtLnB1Ymxpc2hEYXRlfSB7aXRlbS50YWcgJiYgaXRlbS50YWcubmFtZX1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGl0ZW0uZXhjZXJwdCB9fSBjbGFzc05hbWU9XCJtdC0xMCBsaW5lLWNsYW1wLTMgbWQ6bGluZS1jbGFtcC0yXCI+PC9kaXY+XHJcblx0XHRcdFx0XHR7aXRlbS5pc0V4dGVybmFsICYmIDxkaXYgY2xhc3NOYW1lPVwiaDQgbWItMCBtdC0xMCB0ZXh0LW9yaW9uQmx1ZVwiPntpdGVtLmxpbmtUZXh0fSA8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBhbGlnbi1ib3R0b21cIj5vcGVuX2luX25ldzwvc3Bhbj48L2Rpdj59XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvYT5cclxuXHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuIChcclxuXHRcdFx0PGRpdj5cclxuXHRcdFx0XHQ8Zm9ybSBvblN1Ym1pdD17dGhpcy5oYW5kbGVTdWJtaXR9PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJwdC01MFwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBtYXgtdy1zY3JlZW4tbGcgdGV4dC1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aDEgY2xhc3NOYW1lPVwiaDNcIj57dGhpcy5wcm9wcy5mb3JtLmhlYWRpbmd9PC9oMT5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibXgtMTVcIj5cclxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBmbGV4IG1heC13LXNjcmVlbi1sZyBwLTAgcmVsYXRpdmUgcm91bmRlZC1mdWxsIHNoYWRvdy1sZ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJzZWFyY2hcIiBuYW1lPVwicVwiIHZhbHVlPXt0aGlzLnN0YXRlLnZhbHVlfSBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5mb3JtLnBsYWNlaG9sZGVyfSBvbkNoYW5nZT17dGhpcy5oYW5kbGVDaGFuZ2V9IGNsYXNzTmFtZT1cInBhZ2UtaGVhZGVyX19zZWFyY2gtaW5wdXQgYmctd2hpdGUgYmxvY2sgb3V0bGluZS1ub25lIHB5LTE1IHBsLTMwIHByLTE1IHJvdW5kZWQtbC1mdWxsIHctZnVsbFwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzc05hbWU9XCJhcnJvdy1saW5rIGJnLXdoaXRlIHByLTMwIHJvdW5kZWQtci1mdWxsIHRleHQteHhsXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cInNyLW9ubHlcIj48L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIHRyYW5zaXRpb24tdHJhbnNmb3JtIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTFcIj4mI3hFOEU0Ozwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZm9ybT5cclxuXHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJzZWFyY2gtcmVzdWx0cyBjb250YWluZXIgbWF4LXctc2NyZWVuLWxnXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInB0LTE1IHBiLTUwIHB4LTE1IHRleHQtcm9jayB0ZXh0LXhzXCI+e3RoaXMuc3RhdGUucmVzdWx0cy50b3RhbENvdW50fSB7dGhpcy5wcm9wcy5mb3JtLnJlc3VsdHNMYWJlbH08L2Rpdj5cclxuXHRcdFx0XHRcdHtyZXN1bHRzfVxyXG5cclxuXHRcdFx0XHRcdHt0aGlzLnN0YXRlLnJlc3VsdHMucGFnZXNDb3VudCA+IDEgJiZcclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJteS01MFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxSZWFjdFBhZ2luYXRlXHJcblx0XHRcdFx0XHRcdFx0XHRicmVha0xhYmVsPVwiLi4uXCJcclxuXHRcdFx0XHRcdFx0XHRcdG5leHRMYWJlbD17PHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvbnMgbXQtOFwiPiYjeEU1Qzg7PC9zcGFuPn1cclxuXHRcdFx0XHRcdFx0XHRcdHByZXZpb3VzTGFiZWw9ezxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIG10LThcIj4mI3hFNUM0Ozwvc3Bhbj59XHJcblx0XHRcdFx0XHRcdFx0XHRwYWdlUmFuZ2VEaXNwbGF5ZWQ9ezN9XHJcblx0XHRcdFx0XHRcdFx0XHRtYXJnaW5QYWdlc0Rpc3BsYXllZD17Mn1cclxuXHRcdFx0XHRcdFx0XHRcdHBhZ2VDb3VudD17dGhpcy5zdGF0ZS5yZXN1bHRzLnBhZ2VzQ291bnR9XHJcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXJPblplcm9QYWdlQ291bnQ9e251bGx9XHJcblx0XHRcdFx0XHRcdFx0XHRjb250YWluZXJDbGFzc05hbWU9e1wiZmxleCBpbmxpbmUtZmxleCB3LWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtb3Jpb25CbHVlXCJ9XHJcblx0XHRcdFx0XHRcdFx0XHRwYWdlQ2xhc3NOYW1lPXtcInB4LTggaG92ZXI6b3Jpb25NaWRkbGVCbHVlXCJ9XHJcblx0XHRcdFx0XHRcdFx0XHRwcmV2aW91c0NsYXNzTmFtZT17XCJweC04IGhvdmVyOnRleHQtb3Jpb25NaWRkbGVCbHVlXCJ9XHJcblx0XHRcdFx0XHRcdFx0XHRuZXh0Q2xhc3NOYW1lPXtcInB4LTggaG92ZXI6dGV4dC1vcmlvbk1pZGRsZUJsdWVcIn1cclxuXHRcdFx0XHRcdFx0XHRcdGFjdGl2ZUNsYXNzTmFtZT17XCJmb250LWVpbmEtc2VtaWJvbGRcIn1cclxuXHRcdFx0XHRcdFx0XHRcdG9uUGFnZUNoYW5nZT17KHBhZ2UpID0+IHRoaXMuaGFuZGxlUGFnZUNoYW5nZShwYWdlLnNlbGVjdGVkICsgMSl9XHJcblx0XHRcdFx0XHRcdFx0XHRyZW5kZXJPblplcm9QYWdlQ291bnQ9e251bGx9XHJcblx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0KTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHNlYXJjaCIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIga2V5LCBpO1xuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG4gIHJldHVybiB0YXJnZXQ7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiA/IE9iamVjdC5hc3NpZ24uYmluZCgpIDogZnVuY3Rpb24gKHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldO1xuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59IiwiZnVuY3Rpb24gcihlKXt2YXIgdCxmLG49XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2YgZXx8XCJudW1iZXJcIj09dHlwZW9mIGUpbis9ZTtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWlmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyllW3RdJiYoZj1yKGVbdF0pKSYmKG4mJihuKz1cIiBcIiksbis9Zik7ZWxzZSBmb3IodCBpbiBlKWVbdF0mJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBmdW5jdGlvbiBjbHN4KCl7Zm9yKHZhciBlLHQsZj0wLG49XCJcIjtmPGFyZ3VtZW50cy5sZW5ndGg7KShlPWFyZ3VtZW50c1tmKytdKSYmKHQ9cihlKSkmJihuJiYobis9XCIgXCIpLG4rPXQpO3JldHVybiBufWV4cG9ydCBkZWZhdWx0IGNsc3g7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFV0aWxpdHlDbGFzcywgY2xhc3NlcyA9IHVuZGVmaW5lZCkge1xuICBjb25zdCBvdXRwdXQgPSB7fTtcbiAgT2JqZWN0LmtleXMoc2xvdHMpLmZvckVhY2goXG4gIC8vIGBPYmplY3Qua2V5cyhzbG90cylgIGNhbid0IGJlIHdpZGVyIHRoYW4gYFRgIGJlY2F1c2Ugd2UgaW5mZXIgYFRgIGZyb20gYHNsb3RzYC5cbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvcHVsbC8xMjI1MyNpc3N1ZWNvbW1lbnQtMjYzMTMyMjA4XG4gIHNsb3QgPT4ge1xuICAgIG91dHB1dFtzbG90XSA9IHNsb3RzW3Nsb3RdLnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdXRpbGl0eUNsYXNzID0gZ2V0VXRpbGl0eUNsYXNzKGtleSk7XG4gICAgICAgIGlmICh1dGlsaXR5Q2xhc3MgIT09ICcnKSB7XG4gICAgICAgICAgYWNjLnB1c2godXRpbGl0eUNsYXNzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2xhc3NlcyAmJiBjbGFzc2VzW2tleV0pIHtcbiAgICAgICAgICBhY2MucHVzaChjbGFzc2VzW2tleV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKS5qb2luKCcgJyk7XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufSIsImZ1bmN0aW9uIG1lbW9pemUoZm4pIHtcbiAgdmFyIGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICBpZiAoY2FjaGVbYXJnXSA9PT0gdW5kZWZpbmVkKSBjYWNoZVthcmddID0gZm4oYXJnKTtcbiAgICByZXR1cm4gY2FjaGVbYXJnXTtcbiAgfTtcbn1cblxuZXhwb3J0IHsgbWVtb2l6ZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIHJlYWN0UHJvcHNSZWdleCA9IC9eKChjaGlsZHJlbnxkYW5nZXJvdXNseVNldElubmVySFRNTHxrZXl8cmVmfGF1dG9Gb2N1c3xkZWZhdWx0VmFsdWV8ZGVmYXVsdENoZWNrZWR8aW5uZXJIVE1MfHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ3xzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8dmFsdWVMaW5rfGFiYnJ8YWNjZXB0fGFjY2VwdENoYXJzZXR8YWNjZXNzS2V5fGFjdGlvbnxhbGxvd3xhbGxvd1VzZXJNZWRpYXxhbGxvd1BheW1lbnRSZXF1ZXN0fGFsbG93RnVsbFNjcmVlbnxhbGxvd1RyYW5zcGFyZW5jeXxhbHR8YXN5bmN8YXV0b0NvbXBsZXRlfGF1dG9QbGF5fGNhcHR1cmV8Y2VsbFBhZGRpbmd8Y2VsbFNwYWNpbmd8Y2hhbGxlbmdlfGNoYXJTZXR8Y2hlY2tlZHxjaXRlfGNsYXNzSUR8Y2xhc3NOYW1lfGNvbHN8Y29sU3Bhbnxjb250ZW50fGNvbnRlbnRFZGl0YWJsZXxjb250ZXh0TWVudXxjb250cm9sc3xjb250cm9sc0xpc3R8Y29vcmRzfGNyb3NzT3JpZ2lufGRhdGF8ZGF0ZVRpbWV8ZGVjb2Rpbmd8ZGVmYXVsdHxkZWZlcnxkaXJ8ZGlzYWJsZWR8ZGlzYWJsZVBpY3R1cmVJblBpY3R1cmV8ZG93bmxvYWR8ZHJhZ2dhYmxlfGVuY1R5cGV8ZW50ZXJLZXlIaW50fGZvcm18Zm9ybUFjdGlvbnxmb3JtRW5jVHlwZXxmb3JtTWV0aG9kfGZvcm1Ob1ZhbGlkYXRlfGZvcm1UYXJnZXR8ZnJhbWVCb3JkZXJ8aGVhZGVyc3xoZWlnaHR8aGlkZGVufGhpZ2h8aHJlZnxocmVmTGFuZ3xodG1sRm9yfGh0dHBFcXVpdnxpZHxpbnB1dE1vZGV8aW50ZWdyaXR5fGlzfGtleVBhcmFtc3xrZXlUeXBlfGtpbmR8bGFiZWx8bGFuZ3xsaXN0fGxvYWRpbmd8bG9vcHxsb3d8bWFyZ2luSGVpZ2h0fG1hcmdpbldpZHRofG1heHxtYXhMZW5ndGh8bWVkaWF8bWVkaWFHcm91cHxtZXRob2R8bWlufG1pbkxlbmd0aHxtdWx0aXBsZXxtdXRlZHxuYW1lfG5vbmNlfG5vVmFsaWRhdGV8b3BlbnxvcHRpbXVtfHBhdHRlcm58cGxhY2Vob2xkZXJ8cGxheXNJbmxpbmV8cG9zdGVyfHByZWxvYWR8cHJvZmlsZXxyYWRpb0dyb3VwfHJlYWRPbmx5fHJlZmVycmVyUG9saWN5fHJlbHxyZXF1aXJlZHxyZXZlcnNlZHxyb2xlfHJvd3N8cm93U3BhbnxzYW5kYm94fHNjb3BlfHNjb3BlZHxzY3JvbGxpbmd8c2VhbWxlc3N8c2VsZWN0ZWR8c2hhcGV8c2l6ZXxzaXplc3xzbG90fHNwYW58c3BlbGxDaGVja3xzcmN8c3JjRG9jfHNyY0xhbmd8c3JjU2V0fHN0YXJ0fHN0ZXB8c3R5bGV8c3VtbWFyeXx0YWJJbmRleHx0YXJnZXR8dGl0bGV8dHJhbnNsYXRlfHR5cGV8dXNlTWFwfHZhbHVlfHdpZHRofHdtb2RlfHdyYXB8YWJvdXR8ZGF0YXR5cGV8aW5saXN0fHByZWZpeHxwcm9wZXJ0eXxyZXNvdXJjZXx0eXBlb2Z8dm9jYWJ8YXV0b0NhcGl0YWxpemV8YXV0b0NvcnJlY3R8YXV0b1NhdmV8Y29sb3J8aW5jcmVtZW50YWx8ZmFsbGJhY2t8aW5lcnR8aXRlbVByb3B8aXRlbVNjb3BlfGl0ZW1UeXBlfGl0ZW1JRHxpdGVtUmVmfG9ufG9wdGlvbnxyZXN1bHRzfHNlY3VyaXR5fHVuc2VsZWN0YWJsZXxhY2NlbnRIZWlnaHR8YWNjdW11bGF0ZXxhZGRpdGl2ZXxhbGlnbm1lbnRCYXNlbGluZXxhbGxvd1Jlb3JkZXJ8YWxwaGFiZXRpY3xhbXBsaXR1ZGV8YXJhYmljRm9ybXxhc2NlbnR8YXR0cmlidXRlTmFtZXxhdHRyaWJ1dGVUeXBlfGF1dG9SZXZlcnNlfGF6aW11dGh8YmFzZUZyZXF1ZW5jeXxiYXNlbGluZVNoaWZ0fGJhc2VQcm9maWxlfGJib3h8YmVnaW58Ymlhc3xieXxjYWxjTW9kZXxjYXBIZWlnaHR8Y2xpcHxjbGlwUGF0aFVuaXRzfGNsaXBQYXRofGNsaXBSdWxlfGNvbG9ySW50ZXJwb2xhdGlvbnxjb2xvckludGVycG9sYXRpb25GaWx0ZXJzfGNvbG9yUHJvZmlsZXxjb2xvclJlbmRlcmluZ3xjb250ZW50U2NyaXB0VHlwZXxjb250ZW50U3R5bGVUeXBlfGN1cnNvcnxjeHxjeXxkfGRlY2VsZXJhdGV8ZGVzY2VudHxkaWZmdXNlQ29uc3RhbnR8ZGlyZWN0aW9ufGRpc3BsYXl8ZGl2aXNvcnxkb21pbmFudEJhc2VsaW5lfGR1cnxkeHxkeXxlZGdlTW9kZXxlbGV2YXRpb258ZW5hYmxlQmFja2dyb3VuZHxlbmR8ZXhwb25lbnR8ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZHxmaWxsfGZpbGxPcGFjaXR5fGZpbGxSdWxlfGZpbHRlcnxmaWx0ZXJSZXN8ZmlsdGVyVW5pdHN8Zmxvb2RDb2xvcnxmbG9vZE9wYWNpdHl8Zm9jdXNhYmxlfGZvbnRGYW1pbHl8Zm9udFNpemV8Zm9udFNpemVBZGp1c3R8Zm9udFN0cmV0Y2h8Zm9udFN0eWxlfGZvbnRWYXJpYW50fGZvbnRXZWlnaHR8Zm9ybWF0fGZyb218ZnJ8Znh8Znl8ZzF8ZzJ8Z2x5cGhOYW1lfGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsfGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbHxnbHlwaFJlZnxncmFkaWVudFRyYW5zZm9ybXxncmFkaWVudFVuaXRzfGhhbmdpbmd8aG9yaXpBZHZYfGhvcml6T3JpZ2luWHxpZGVvZ3JhcGhpY3xpbWFnZVJlbmRlcmluZ3xpbnxpbjJ8aW50ZXJjZXB0fGt8azF8azJ8azN8azR8a2VybmVsTWF0cml4fGtlcm5lbFVuaXRMZW5ndGh8a2VybmluZ3xrZXlQb2ludHN8a2V5U3BsaW5lc3xrZXlUaW1lc3xsZW5ndGhBZGp1c3R8bGV0dGVyU3BhY2luZ3xsaWdodGluZ0NvbG9yfGxpbWl0aW5nQ29uZUFuZ2xlfGxvY2FsfG1hcmtlckVuZHxtYXJrZXJNaWR8bWFya2VyU3RhcnR8bWFya2VySGVpZ2h0fG1hcmtlclVuaXRzfG1hcmtlcldpZHRofG1hc2t8bWFza0NvbnRlbnRVbml0c3xtYXNrVW5pdHN8bWF0aGVtYXRpY2FsfG1vZGV8bnVtT2N0YXZlc3xvZmZzZXR8b3BhY2l0eXxvcGVyYXRvcnxvcmRlcnxvcmllbnR8b3JpZW50YXRpb258b3JpZ2lufG92ZXJmbG93fG92ZXJsaW5lUG9zaXRpb258b3ZlcmxpbmVUaGlja25lc3N8cGFub3NlMXxwYWludE9yZGVyfHBhdGhMZW5ndGh8cGF0dGVybkNvbnRlbnRVbml0c3xwYXR0ZXJuVHJhbnNmb3JtfHBhdHRlcm5Vbml0c3xwb2ludGVyRXZlbnRzfHBvaW50c3xwb2ludHNBdFh8cG9pbnRzQXRZfHBvaW50c0F0WnxwcmVzZXJ2ZUFscGhhfHByZXNlcnZlQXNwZWN0UmF0aW98cHJpbWl0aXZlVW5pdHN8cnxyYWRpdXN8cmVmWHxyZWZZfHJlbmRlcmluZ0ludGVudHxyZXBlYXRDb3VudHxyZXBlYXREdXJ8cmVxdWlyZWRFeHRlbnNpb25zfHJlcXVpcmVkRmVhdHVyZXN8cmVzdGFydHxyZXN1bHR8cm90YXRlfHJ4fHJ5fHNjYWxlfHNlZWR8c2hhcGVSZW5kZXJpbmd8c2xvcGV8c3BhY2luZ3xzcGVjdWxhckNvbnN0YW50fHNwZWN1bGFyRXhwb25lbnR8c3BlZWR8c3ByZWFkTWV0aG9kfHN0YXJ0T2Zmc2V0fHN0ZERldmlhdGlvbnxzdGVtaHxzdGVtdnxzdGl0Y2hUaWxlc3xzdG9wQ29sb3J8c3RvcE9wYWNpdHl8c3RyaWtldGhyb3VnaFBvc2l0aW9ufHN0cmlrZXRocm91Z2hUaGlja25lc3N8c3RyaW5nfHN0cm9rZXxzdHJva2VEYXNoYXJyYXl8c3Ryb2tlRGFzaG9mZnNldHxzdHJva2VMaW5lY2FwfHN0cm9rZUxpbmVqb2lufHN0cm9rZU1pdGVybGltaXR8c3Ryb2tlT3BhY2l0eXxzdHJva2VXaWR0aHxzdXJmYWNlU2NhbGV8c3lzdGVtTGFuZ3VhZ2V8dGFibGVWYWx1ZXN8dGFyZ2V0WHx0YXJnZXRZfHRleHRBbmNob3J8dGV4dERlY29yYXRpb258dGV4dFJlbmRlcmluZ3x0ZXh0TGVuZ3RofHRvfHRyYW5zZm9ybXx1MXx1Mnx1bmRlcmxpbmVQb3NpdGlvbnx1bmRlcmxpbmVUaGlja25lc3N8dW5pY29kZXx1bmljb2RlQmlkaXx1bmljb2RlUmFuZ2V8dW5pdHNQZXJFbXx2QWxwaGFiZXRpY3x2SGFuZ2luZ3x2SWRlb2dyYXBoaWN8dk1hdGhlbWF0aWNhbHx2YWx1ZXN8dmVjdG9yRWZmZWN0fHZlcnNpb258dmVydEFkdll8dmVydE9yaWdpblh8dmVydE9yaWdpbll8dmlld0JveHx2aWV3VGFyZ2V0fHZpc2liaWxpdHl8d2lkdGhzfHdvcmRTcGFjaW5nfHdyaXRpbmdNb2RlfHh8eEhlaWdodHx4MXx4Mnx4Q2hhbm5lbFNlbGVjdG9yfHhsaW5rQWN0dWF0ZXx4bGlua0FyY3JvbGV8eGxpbmtIcmVmfHhsaW5rUm9sZXx4bGlua1Nob3d8eGxpbmtUaXRsZXx4bGlua1R5cGV8eG1sQmFzZXx4bWxuc3x4bWxuc1hsaW5rfHhtbExhbmd8eG1sU3BhY2V8eXx5MXx5Mnx5Q2hhbm5lbFNlbGVjdG9yfHp8em9vbUFuZFBhbnxmb3J8Y2xhc3N8YXV0b2ZvY3VzKXwoKFtEZF1bQWFdW1R0XVtBYV18W0FhXVtScl1bSWldW0FhXXx4KS0uKikpJC87IC8vIGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNWJmZWU2OGE0Y2Q3ZTYwMDllZjYxZDIzXG5cbnZhciBpc1Byb3BWYWxpZCA9IC8qICNfX1BVUkVfXyAqL21lbW9pemUoZnVuY3Rpb24gKHByb3ApIHtcbiAgcmV0dXJuIHJlYWN0UHJvcHNSZWdleC50ZXN0KHByb3ApIHx8IHByb3AuY2hhckNvZGVBdCgwKSA9PT0gMTExXG4gIC8qIG8gKi9cbiAgJiYgcHJvcC5jaGFyQ29kZUF0KDEpID09PSAxMTBcbiAgLyogbiAqL1xuICAmJiBwcm9wLmNoYXJDb2RlQXQoMikgPCA5MTtcbn1cbi8qIForMSAqL1xuKTtcblxuZXhwb3J0IHsgaXNQcm9wVmFsaWQgYXMgZGVmYXVsdCB9O1xuIiwiLypcblxuQmFzZWQgb2ZmIGdsYW1vcidzIFN0eWxlU2hlZXQsIHRoYW5rcyBTdW5pbCDinaTvuI9cblxuaGlnaCBwZXJmb3JtYW5jZSBTdHlsZVNoZWV0IGZvciBjc3MtaW4tanMgc3lzdGVtc1xuXG4tIHVzZXMgbXVsdGlwbGUgc3R5bGUgdGFncyBiZWhpbmQgdGhlIHNjZW5lcyBmb3IgbWlsbGlvbnMgb2YgcnVsZXNcbi0gdXNlcyBgaW5zZXJ0UnVsZWAgZm9yIGFwcGVuZGluZyBpbiBwcm9kdWN0aW9uIGZvciAqbXVjaCogZmFzdGVyIHBlcmZvcm1hbmNlXG5cbi8vIHVzYWdlXG5cbmltcG9ydCB7IFN0eWxlU2hlZXQgfSBmcm9tICdAZW1vdGlvbi9zaGVldCdcblxubGV0IHN0eWxlU2hlZXQgPSBuZXcgU3R5bGVTaGVldCh7IGtleTogJycsIGNvbnRhaW5lcjogZG9jdW1lbnQuaGVhZCB9KVxuXG5zdHlsZVNoZWV0Lmluc2VydCgnI2JveCB7IGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgfScpXG4tIGFwcGVuZHMgYSBjc3MgcnVsZSBpbnRvIHRoZSBzdHlsZXNoZWV0XG5cbnN0eWxlU2hlZXQuZmx1c2goKVxuLSBlbXB0aWVzIHRoZSBzdHlsZXNoZWV0IG9mIGFsbCBpdHMgY29udGVudHNcblxuKi9cbi8vICRGbG93Rml4TWVcbmZ1bmN0aW9uIHNoZWV0Rm9yVGFnKHRhZykge1xuICBpZiAodGFnLnNoZWV0KSB7XG4gICAgLy8gJEZsb3dGaXhNZVxuICAgIHJldHVybiB0YWcuc2hlZXQ7XG4gIH0gLy8gdGhpcyB3ZWlyZG5lc3MgYnJvdWdodCB0byB5b3UgYnkgZmlyZWZveFxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLm93bmVyTm9kZSA9PT0gdGFnKSB7XG4gICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICByZXR1cm4gZG9jdW1lbnQuc3R5bGVTaGVldHNbaV07XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciB0YWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB0YWcuc2V0QXR0cmlidXRlKCdkYXRhLWVtb3Rpb24nLCBvcHRpb25zLmtleSk7XG5cbiAgaWYgKG9wdGlvbnMubm9uY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHRhZy5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgb3B0aW9ucy5ub25jZSk7XG4gIH1cblxuICB0YWcuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpKTtcbiAgdGFnLnNldEF0dHJpYnV0ZSgnZGF0YS1zJywgJycpO1xuICByZXR1cm4gdGFnO1xufVxuXG52YXIgU3R5bGVTaGVldCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIC8vIFVzaW5nIE5vZGUgaW5zdGVhZCBvZiBIVE1MRWxlbWVudCBzaW5jZSBjb250YWluZXIgbWF5IGJlIGEgU2hhZG93Um9vdFxuICBmdW5jdGlvbiBTdHlsZVNoZWV0KG9wdGlvbnMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5faW5zZXJ0VGFnID0gZnVuY3Rpb24gKHRhZykge1xuICAgICAgdmFyIGJlZm9yZTtcblxuICAgICAgaWYgKF90aGlzLnRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmIChfdGhpcy5pbnNlcnRpb25Qb2ludCkge1xuICAgICAgICAgIGJlZm9yZSA9IF90aGlzLmluc2VydGlvblBvaW50Lm5leHRTaWJsaW5nO1xuICAgICAgICB9IGVsc2UgaWYgKF90aGlzLnByZXBlbmQpIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5jb250YWluZXIuZmlyc3RDaGlsZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiZWZvcmUgPSBfdGhpcy5iZWZvcmU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJlZm9yZSA9IF90aGlzLnRhZ3NbX3RoaXMudGFncy5sZW5ndGggLSAxXS5uZXh0U2libGluZztcbiAgICAgIH1cblxuICAgICAgX3RoaXMuY29udGFpbmVyLmluc2VydEJlZm9yZSh0YWcsIGJlZm9yZSk7XG5cbiAgICAgIF90aGlzLnRhZ3MucHVzaCh0YWcpO1xuICAgIH07XG5cbiAgICB0aGlzLmlzU3BlZWR5ID0gb3B0aW9ucy5zcGVlZHkgPT09IHVuZGVmaW5lZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgOiBvcHRpb25zLnNwZWVkeTtcbiAgICB0aGlzLnRhZ3MgPSBbXTtcbiAgICB0aGlzLmN0ciA9IDA7XG4gICAgdGhpcy5ub25jZSA9IG9wdGlvbnMubm9uY2U7IC8vIGtleSBpcyB0aGUgdmFsdWUgb2YgdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUsIGl0J3MgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQgc2hlZXRzXG5cbiAgICB0aGlzLmtleSA9IG9wdGlvbnMua2V5O1xuICAgIHRoaXMuY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXI7XG4gICAgdGhpcy5wcmVwZW5kID0gb3B0aW9ucy5wcmVwZW5kO1xuICAgIHRoaXMuaW5zZXJ0aW9uUG9pbnQgPSBvcHRpb25zLmluc2VydGlvblBvaW50O1xuICAgIHRoaXMuYmVmb3JlID0gbnVsbDtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBTdHlsZVNoZWV0LnByb3RvdHlwZTtcblxuICBfcHJvdG8uaHlkcmF0ZSA9IGZ1bmN0aW9uIGh5ZHJhdGUobm9kZXMpIHtcbiAgICBub2Rlcy5mb3JFYWNoKHRoaXMuX2luc2VydFRhZyk7XG4gIH07XG5cbiAgX3Byb3RvLmluc2VydCA9IGZ1bmN0aW9uIGluc2VydChydWxlKSB7XG4gICAgLy8gdGhlIG1heCBsZW5ndGggaXMgaG93IG1hbnkgcnVsZXMgd2UgaGF2ZSBwZXIgc3R5bGUgdGFnLCBpdCdzIDY1MDAwIGluIHNwZWVkeSBtb2RlXG4gICAgLy8gaXQncyAxIGluIGRldiBiZWNhdXNlIHdlIGluc2VydCBzb3VyY2UgbWFwcyB0aGF0IG1hcCBhIHNpbmdsZSBydWxlIHRvIGEgbG9jYXRpb25cbiAgICAvLyBhbmQgeW91IGNhbiBvbmx5IGhhdmUgb25lIHNvdXJjZSBtYXAgcGVyIHN0eWxlIHRhZ1xuICAgIGlmICh0aGlzLmN0ciAlICh0aGlzLmlzU3BlZWR5ID8gNjUwMDAgOiAxKSA9PT0gMCkge1xuICAgICAgdGhpcy5faW5zZXJ0VGFnKGNyZWF0ZVN0eWxlRWxlbWVudCh0aGlzKSk7XG4gICAgfVxuXG4gICAgdmFyIHRhZyA9IHRoaXMudGFnc1t0aGlzLnRhZ3MubGVuZ3RoIC0gMV07XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGlzSW1wb3J0UnVsZSA9IHJ1bGUuY2hhckNvZGVBdCgwKSA9PT0gNjQgJiYgcnVsZS5jaGFyQ29kZUF0KDEpID09PSAxMDU7XG5cbiAgICAgIGlmIChpc0ltcG9ydFJ1bGUgJiYgdGhpcy5fYWxyZWFkeUluc2VydGVkT3JkZXJJbnNlbnNpdGl2ZVJ1bGUpIHtcbiAgICAgICAgLy8gdGhpcyB3b3VsZCBvbmx5IGNhdXNlIHByb2JsZW0gaW4gc3BlZWR5IG1vZGVcbiAgICAgICAgLy8gYnV0IHdlIGRvbid0IHdhbnQgZW5hYmxpbmcgc3BlZWR5IHRvIGFmZmVjdCB0aGUgb2JzZXJ2YWJsZSBiZWhhdmlvclxuICAgICAgICAvLyBzbyB3ZSByZXBvcnQgdGhpcyBlcnJvciBhdCBhbGwgdGltZXNcbiAgICAgICAgY29uc29sZS5lcnJvcihcIllvdSdyZSBhdHRlbXB0aW5nIHRvIGluc2VydCB0aGUgZm9sbG93aW5nIHJ1bGU6XFxuXCIgKyBydWxlICsgJ1xcblxcbmBAaW1wb3J0YCBydWxlcyBtdXN0IGJlIGJlZm9yZSBhbGwgb3RoZXIgdHlwZXMgb2YgcnVsZXMgaW4gYSBzdHlsZXNoZWV0IGJ1dCBvdGhlciBydWxlcyBoYXZlIGFscmVhZHkgYmVlbiBpbnNlcnRlZC4gUGxlYXNlIGVuc3VyZSB0aGF0IGBAaW1wb3J0YCBydWxlcyBhcmUgYmVmb3JlIGFsbCBvdGhlciBydWxlcy4nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2FscmVhZHlJbnNlcnRlZE9yZGVySW5zZW5zaXRpdmVSdWxlID0gdGhpcy5fYWxyZWFkeUluc2VydGVkT3JkZXJJbnNlbnNpdGl2ZVJ1bGUgfHwgIWlzSW1wb3J0UnVsZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NwZWVkeSkge1xuICAgICAgdmFyIHNoZWV0ID0gc2hlZXRGb3JUYWcodGFnKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgdWx0cmFmYXN0IHZlcnNpb24sIHdvcmtzIGFjcm9zcyBicm93c2Vyc1xuICAgICAgICAvLyB0aGUgYmlnIGRyYXdiYWNrIGlzIHRoYXQgdGhlIGNzcyB3b24ndCBiZSBlZGl0YWJsZSBpbiBkZXZ0b29sc1xuICAgICAgICBzaGVldC5pbnNlcnRSdWxlKHJ1bGUsIHNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICEvOigtbW96LXBsYWNlaG9sZGVyfC1tb3otZm9jdXMtaW5uZXJ8LW1vei1mb2N1c3Jpbmd8LW1zLWlucHV0LXBsYWNlaG9sZGVyfC1tb3otcmVhZC13cml0ZXwtbW96LXJlYWQtb25seXwtbXMtY2xlYXJ8LW1zLWV4cGFuZHwtbXMtcmV2ZWFsKXsvLnRlc3QocnVsZSkpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlcmUgd2FzIGEgcHJvYmxlbSBpbnNlcnRpbmcgdGhlIGZvbGxvd2luZyBydWxlOiBcXFwiXCIgKyBydWxlICsgXCJcXFwiXCIsIGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShydWxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5jdHIrKztcbiAgfTtcblxuICBfcHJvdG8uZmx1c2ggPSBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgdGhpcy50YWdzLmZvckVhY2goZnVuY3Rpb24gKHRhZykge1xuICAgICAgcmV0dXJuIHRhZy5wYXJlbnROb2RlICYmIHRhZy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRhZyk7XG4gICAgfSk7XG4gICAgdGhpcy50YWdzID0gW107XG4gICAgdGhpcy5jdHIgPSAwO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRoaXMuX2FscmVhZHlJbnNlcnRlZE9yZGVySW5zZW5zaXRpdmVSdWxlID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBTdHlsZVNoZWV0O1xufSgpO1xuXG5leHBvcnQgeyBTdHlsZVNoZWV0IH07XG4iLCIvKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgdmFyIGFicyA9IE1hdGguYWJzXG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCB2YXIgZnJvbSA9IFN0cmluZy5mcm9tQ2hhckNvZGVcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH1cbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IHZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNoICh2YWx1ZSwgbGVuZ3RoKSB7XG5cdHJldHVybiBjaGFyYXQodmFsdWUsIDApIF4gNDUgPyAoKCgoKCgobGVuZ3RoIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAwKSkgPDwgMikgXiBjaGFyYXQodmFsdWUsIDEpKSA8PCAyKSBeIGNoYXJhdCh2YWx1ZSwgMikpIDw8IDIpIF4gY2hhcmF0KHZhbHVlLCAzKSA6IDBcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyaW0gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS50cmltKClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7UmVnRXhwfSBwYXR0ZXJuXG4gKiBAcmV0dXJuIHtzdHJpbmc/fVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2ggKHZhbHVlLCBwYXR0ZXJuKSB7XG5cdHJldHVybiAodmFsdWUgPSBwYXR0ZXJuLmV4ZWModmFsdWUpKSA/IHZhbHVlWzBdIDogdmFsdWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7KHN0cmluZ3xSZWdFeHApfSBwYXR0ZXJuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVwbGFjZW1lbnRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2UgKHZhbHVlLCBwYXR0ZXJuLCByZXBsYWNlbWVudCkge1xuXHRyZXR1cm4gdmFsdWUucmVwbGFjZShwYXR0ZXJuLCByZXBsYWNlbWVudClcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4b2YgKHZhbHVlLCBzZWFyY2gpIHtcblx0cmV0dXJuIHZhbHVlLmluZGV4T2Yoc2VhcmNoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyYXQgKHZhbHVlLCBpbmRleCkge1xuXHRyZXR1cm4gdmFsdWUuY2hhckNvZGVBdChpbmRleCkgfCAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gYmVnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0ciAodmFsdWUsIGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHZhbHVlLnNsaWNlKGJlZ2luLCBlbmQpXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJsZW4gKHZhbHVlKSB7XG5cdHJldHVybiB2YWx1ZS5sZW5ndGhcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2FueVtdfSB2YWx1ZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2l6ZW9mICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUubGVuZ3RoXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcGFyYW0ge2FueVtdfSBhcnJheVxuICogQHJldHVybiB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kICh2YWx1ZSwgYXJyYXkpIHtcblx0cmV0dXJuIGFycmF5LnB1c2godmFsdWUpLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGFycmF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tYmluZSAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdHJldHVybiBhcnJheS5tYXAoY2FsbGJhY2spLmpvaW4oJycpXG59XG4iLCJpbXBvcnQge2Zyb20sIHRyaW0sIGNoYXJhdCwgc3RybGVuLCBzdWJzdHIsIGFwcGVuZCwgYXNzaWdufSBmcm9tICcuL1V0aWxpdHkuanMnXG5cbmV4cG9ydCB2YXIgbGluZSA9IDFcbmV4cG9ydCB2YXIgY29sdW1uID0gMVxuZXhwb3J0IHZhciBsZW5ndGggPSAwXG5leHBvcnQgdmFyIHBvc2l0aW9uID0gMFxuZXhwb3J0IHZhciBjaGFyYWN0ZXIgPSAwXG5leHBvcnQgdmFyIGNoYXJhY3RlcnMgPSAnJ1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3QgfCBudWxsfSByb290XG4gKiBAcGFyYW0ge29iamVjdCB8IG51bGx9IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7c3RyaW5nW10gfCBzdHJpbmd9IHByb3BzXG4gKiBAcGFyYW0ge29iamVjdFtdIHwgc3RyaW5nfSBjaGlsZHJlblxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9kZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgdHlwZSwgcHJvcHMsIGNoaWxkcmVuLCBsZW5ndGgpIHtcblx0cmV0dXJuIHt2YWx1ZTogdmFsdWUsIHJvb3Q6IHJvb3QsIHBhcmVudDogcGFyZW50LCB0eXBlOiB0eXBlLCBwcm9wczogcHJvcHMsIGNoaWxkcmVuOiBjaGlsZHJlbiwgbGluZTogbGluZSwgY29sdW1uOiBjb2x1bW4sIGxlbmd0aDogbGVuZ3RoLCByZXR1cm46ICcnfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkgKHJvb3QsIHByb3BzKSB7XG5cdHJldHVybiBhc3NpZ24obm9kZSgnJywgbnVsbCwgbnVsbCwgJycsIG51bGwsIG51bGwsIDApLCByb290LCB7bGVuZ3RoOiAtcm9vdC5sZW5ndGh9LCBwcm9wcylcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFyICgpIHtcblx0cmV0dXJuIGNoYXJhY3RlclxufVxuXG4vKipcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXYgKCkge1xuXHRjaGFyYWN0ZXIgPSBwb3NpdGlvbiA+IDAgPyBjaGFyYXQoY2hhcmFjdGVycywgLS1wb3NpdGlvbikgOiAwXG5cblx0aWYgKGNvbHVtbi0tLCBjaGFyYWN0ZXIgPT09IDEwKVxuXHRcdGNvbHVtbiA9IDEsIGxpbmUtLVxuXG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuZXh0ICgpIHtcblx0Y2hhcmFjdGVyID0gcG9zaXRpb24gPCBsZW5ndGggPyBjaGFyYXQoY2hhcmFjdGVycywgcG9zaXRpb24rKykgOiAwXG5cblx0aWYgKGNvbHVtbisrLCBjaGFyYWN0ZXIgPT09IDEwKVxuXHRcdGNvbHVtbiA9IDEsIGxpbmUrK1xuXG5cdHJldHVybiBjaGFyYWN0ZXJcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwZWVrICgpIHtcblx0cmV0dXJuIGNoYXJhdChjaGFyYWN0ZXJzLCBwb3NpdGlvbilcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXJldCAoKSB7XG5cdHJldHVybiBwb3NpdGlvblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBiZWdpblxuICogQHBhcmFtIHtudW1iZXJ9IGVuZFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2xpY2UgKGJlZ2luLCBlbmQpIHtcblx0cmV0dXJuIHN1YnN0cihjaGFyYWN0ZXJzLCBiZWdpbiwgZW5kKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbiAodHlwZSkge1xuXHRzd2l0Y2ggKHR5cGUpIHtcblx0XHQvLyBcXDAgXFx0IFxcbiBcXHIgXFxzIHdoaXRlc3BhY2UgdG9rZW5cblx0XHRjYXNlIDA6IGNhc2UgOTogY2FzZSAxMDogY2FzZSAxMzogY2FzZSAzMjpcblx0XHRcdHJldHVybiA1XG5cdFx0Ly8gISArICwgLyA+IEAgfiBpc29sYXRlIHRva2VuXG5cdFx0Y2FzZSAzMzogY2FzZSA0MzogY2FzZSA0NDogY2FzZSA0NzogY2FzZSA2MjogY2FzZSA2NDogY2FzZSAxMjY6XG5cdFx0Ly8gOyB7IH0gYnJlYWtwb2ludCB0b2tlblxuXHRcdGNhc2UgNTk6IGNhc2UgMTIzOiBjYXNlIDEyNTpcblx0XHRcdHJldHVybiA0XG5cdFx0Ly8gOiBhY2NvbXBhbmllZCB0b2tlblxuXHRcdGNhc2UgNTg6XG5cdFx0XHRyZXR1cm4gM1xuXHRcdC8vIFwiICcgKCBbIG9wZW5pbmcgZGVsaW1pdCB0b2tlblxuXHRcdGNhc2UgMzQ6IGNhc2UgMzk6IGNhc2UgNDA6IGNhc2UgOTE6XG5cdFx0XHRyZXR1cm4gMlxuXHRcdC8vICkgXSBjbG9zaW5nIGRlbGltaXQgdG9rZW5cblx0XHRjYXNlIDQxOiBjYXNlIDkzOlxuXHRcdFx0cmV0dXJuIDFcblx0fVxuXG5cdHJldHVybiAwXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJuIHthbnlbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG9jICh2YWx1ZSkge1xuXHRyZXR1cm4gbGluZSA9IGNvbHVtbiA9IDEsIGxlbmd0aCA9IHN0cmxlbihjaGFyYWN0ZXJzID0gdmFsdWUpLCBwb3NpdGlvbiA9IDAsIFtdXG59XG5cbi8qKlxuICogQHBhcmFtIHthbnl9IHZhbHVlXG4gKiBAcmV0dXJuIHthbnl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWFsbG9jICh2YWx1ZSkge1xuXHRyZXR1cm4gY2hhcmFjdGVycyA9ICcnLCB2YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ICh0eXBlKSB7XG5cdHJldHVybiB0cmltKHNsaWNlKHBvc2l0aW9uIC0gMSwgZGVsaW1pdGVyKHR5cGUgPT09IDkxID8gdHlwZSArIDIgOiB0eXBlID09PSA0MCA/IHR5cGUgKyAxIDogdHlwZSkpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nW119XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbml6ZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2ModG9rZW5pemVyKGFsbG9jKHZhbHVlKSkpXG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IHR5cGVcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdoaXRlc3BhY2UgKHR5cGUpIHtcblx0d2hpbGUgKGNoYXJhY3RlciA9IHBlZWsoKSlcblx0XHRpZiAoY2hhcmFjdGVyIDwgMzMpXG5cdFx0XHRuZXh0KClcblx0XHRlbHNlXG5cdFx0XHRicmVha1xuXG5cdHJldHVybiB0b2tlbih0eXBlKSA+IDIgfHwgdG9rZW4oY2hhcmFjdGVyKSA+IDMgPyAnJyA6ICcgJ1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nW119IGNoaWxkcmVuXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRva2VuaXplciAoY2hpbGRyZW4pIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHRzd2l0Y2ggKHRva2VuKGNoYXJhY3RlcikpIHtcblx0XHRcdGNhc2UgMDogYXBwZW5kKGlkZW50aWZpZXIocG9zaXRpb24gLSAxKSwgY2hpbGRyZW4pXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRjYXNlIDI6IGFwcGVuZChkZWxpbWl0KGNoYXJhY3RlciksIGNoaWxkcmVuKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0ZGVmYXVsdDogYXBwZW5kKGZyb20oY2hhcmFjdGVyKSwgY2hpbGRyZW4pXG5cdFx0fVxuXG5cdHJldHVybiBjaGlsZHJlblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtudW1iZXJ9IGNvdW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGluZyAoaW5kZXgsIGNvdW50KSB7XG5cdHdoaWxlICgtLWNvdW50ICYmIG5leHQoKSlcblx0XHQvLyBub3QgMC05IEEtRiBhLWZcblx0XHRpZiAoY2hhcmFjdGVyIDwgNDggfHwgY2hhcmFjdGVyID4gMTAyIHx8IChjaGFyYWN0ZXIgPiA1NyAmJiBjaGFyYWN0ZXIgPCA2NSkgfHwgKGNoYXJhY3RlciA+IDcwICYmIGNoYXJhY3RlciA8IDk3KSlcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuIHNsaWNlKGluZGV4LCBjYXJldCgpICsgKGNvdW50IDwgNiAmJiBwZWVrKCkgPT0gMzIgJiYgbmV4dCgpID09IDMyKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gdHlwZVxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVsaW1pdGVyICh0eXBlKSB7XG5cdHdoaWxlIChuZXh0KCkpXG5cdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdC8vIF0gKSBcIiAnXG5cdFx0XHRjYXNlIHR5cGU6XG5cdFx0XHRcdHJldHVybiBwb3NpdGlvblxuXHRcdFx0Ly8gXCIgJ1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTpcblx0XHRcdFx0aWYgKHR5cGUgIT09IDM0ICYmIHR5cGUgIT09IDM5KVxuXHRcdFx0XHRcdGRlbGltaXRlcihjaGFyYWN0ZXIpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyAoXG5cdFx0XHRjYXNlIDQwOlxuXHRcdFx0XHRpZiAodHlwZSA9PT0gNDEpXG5cdFx0XHRcdFx0ZGVsaW1pdGVyKHR5cGUpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0bmV4dCgpXG5cdFx0XHRcdGJyZWFrXG5cdFx0fVxuXG5cdHJldHVybiBwb3NpdGlvblxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0eXBlXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbW1lbnRlciAodHlwZSwgaW5kZXgpIHtcblx0d2hpbGUgKG5leHQoKSlcblx0XHQvLyAvL1xuXHRcdGlmICh0eXBlICsgY2hhcmFjdGVyID09PSA0NyArIDEwKVxuXHRcdFx0YnJlYWtcblx0XHQvLyAvKlxuXHRcdGVsc2UgaWYgKHR5cGUgKyBjaGFyYWN0ZXIgPT09IDQyICsgNDIgJiYgcGVlaygpID09PSA0Nylcblx0XHRcdGJyZWFrXG5cblx0cmV0dXJuICcvKicgKyBzbGljZShpbmRleCwgcG9zaXRpb24gLSAxKSArICcqJyArIGZyb20odHlwZSA9PT0gNDcgPyB0eXBlIDogbmV4dCgpKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZmllciAoaW5kZXgpIHtcblx0d2hpbGUgKCF0b2tlbihwZWVrKCkpKVxuXHRcdG5leHQoKVxuXG5cdHJldHVybiBzbGljZShpbmRleCwgcG9zaXRpb24pXG59XG4iLCJleHBvcnQgdmFyIE1TID0gJy1tcy0nXG5leHBvcnQgdmFyIE1PWiA9ICctbW96LSdcbmV4cG9ydCB2YXIgV0VCS0lUID0gJy13ZWJraXQtJ1xuXG5leHBvcnQgdmFyIENPTU1FTlQgPSAnY29tbSdcbmV4cG9ydCB2YXIgUlVMRVNFVCA9ICdydWxlJ1xuZXhwb3J0IHZhciBERUNMQVJBVElPTiA9ICdkZWNsJ1xuXG5leHBvcnQgdmFyIFBBR0UgPSAnQHBhZ2UnXG5leHBvcnQgdmFyIE1FRElBID0gJ0BtZWRpYSdcbmV4cG9ydCB2YXIgSU1QT1JUID0gJ0BpbXBvcnQnXG5leHBvcnQgdmFyIENIQVJTRVQgPSAnQGNoYXJzZXQnXG5leHBvcnQgdmFyIFZJRVdQT1JUID0gJ0B2aWV3cG9ydCdcbmV4cG9ydCB2YXIgU1VQUE9SVFMgPSAnQHN1cHBvcnRzJ1xuZXhwb3J0IHZhciBET0NVTUVOVCA9ICdAZG9jdW1lbnQnXG5leHBvcnQgdmFyIE5BTUVTUEFDRSA9ICdAbmFtZXNwYWNlJ1xuZXhwb3J0IHZhciBLRVlGUkFNRVMgPSAnQGtleWZyYW1lcydcbmV4cG9ydCB2YXIgRk9OVF9GQUNFID0gJ0Bmb250LWZhY2UnXG5leHBvcnQgdmFyIENPVU5URVJfU1RZTEUgPSAnQGNvdW50ZXItc3R5bGUnXG5leHBvcnQgdmFyIEZPTlRfRkVBVFVSRV9WQUxVRVMgPSAnQGZvbnQtZmVhdHVyZS12YWx1ZXMnXG5leHBvcnQgdmFyIExBWUVSID0gJ0BsYXllcidcbiIsImltcG9ydCB7SU1QT1JULCBMQVlFUiwgQ09NTUVOVCwgUlVMRVNFVCwgREVDTEFSQVRJT04sIEtFWUZSQU1FU30gZnJvbSAnLi9FbnVtLmpzJ1xuaW1wb3J0IHtzdHJsZW4sIHNpemVvZn0gZnJvbSAnLi9VdGlsaXR5LmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFja1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplIChjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0dmFyIG91dHB1dCA9ICcnXG5cdHZhciBsZW5ndGggPSBzaXplb2YoY2hpbGRyZW4pXG5cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcblx0XHRvdXRwdXQgKz0gY2FsbGJhY2soY2hpbGRyZW5baV0sIGksIGNoaWxkcmVuLCBjYWxsYmFjaykgfHwgJydcblxuXHRyZXR1cm4gb3V0cHV0XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtvYmplY3RbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnkgKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIExBWUVSOiBpZiAoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGgpIGJyZWFrXG5cdFx0Y2FzZSBJTVBPUlQ6IGNhc2UgREVDTEFSQVRJT046IHJldHVybiBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQucmV0dXJuIHx8IGVsZW1lbnQudmFsdWVcblx0XHRjYXNlIENPTU1FTlQ6IHJldHVybiAnJ1xuXHRcdGNhc2UgS0VZRlJBTUVTOiByZXR1cm4gZWxlbWVudC5yZXR1cm4gPSBlbGVtZW50LnZhbHVlICsgJ3snICsgc2VyaWFsaXplKGVsZW1lbnQuY2hpbGRyZW4sIGNhbGxiYWNrKSArICd9J1xuXHRcdGNhc2UgUlVMRVNFVDogZWxlbWVudC52YWx1ZSA9IGVsZW1lbnQucHJvcHMuam9pbignLCcpXG5cdH1cblxuXHRyZXR1cm4gc3RybGVuKGNoaWxkcmVuID0gc2VyaWFsaXplKGVsZW1lbnQuY2hpbGRyZW4sIGNhbGxiYWNrKSkgPyBlbGVtZW50LnJldHVybiA9IGVsZW1lbnQudmFsdWUgKyAneycgKyBjaGlsZHJlbiArICd9JyA6ICcnXG59XG4iLCJpbXBvcnQge0NPTU1FTlQsIFJVTEVTRVQsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge2FicywgY2hhcmF0LCB0cmltLCBmcm9tLCBzaXplb2YsIHN0cmxlbiwgc3Vic3RyLCBhcHBlbmQsIHJlcGxhY2UsIGluZGV4b2Z9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7bm9kZSwgY2hhciwgcHJldiwgbmV4dCwgcGVlaywgY2FyZXQsIGFsbG9jLCBkZWFsbG9jLCBkZWxpbWl0LCB3aGl0ZXNwYWNlLCBlc2NhcGluZywgaWRlbnRpZmllciwgY29tbWVudGVyfSBmcm9tICcuL1Rva2VuaXplci5qcydcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEByZXR1cm4ge29iamVjdFtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZSAodmFsdWUpIHtcblx0cmV0dXJuIGRlYWxsb2MocGFyc2UoJycsIG51bGwsIG51bGwsIG51bGwsIFsnJ10sIHZhbHVlID0gYWxsb2ModmFsdWUpLCAwLCBbMF0sIHZhbHVlKSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7b2JqZWN0fSByb290XG4gKiBAcGFyYW0ge29iamVjdD99IHBhcmVudFxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZVxuICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXNcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzZXRzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwc2V1ZG9cbiAqIEBwYXJhbSB7bnVtYmVyW119IHBvaW50c1xuICogQHBhcmFtIHtzdHJpbmdbXX0gZGVjbGFyYXRpb25zXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZSAodmFsdWUsIHJvb3QsIHBhcmVudCwgcnVsZSwgcnVsZXMsIHJ1bGVzZXRzLCBwc2V1ZG8sIHBvaW50cywgZGVjbGFyYXRpb25zKSB7XG5cdHZhciBpbmRleCA9IDBcblx0dmFyIG9mZnNldCA9IDBcblx0dmFyIGxlbmd0aCA9IHBzZXVkb1xuXHR2YXIgYXRydWxlID0gMFxuXHR2YXIgcHJvcGVydHkgPSAwXG5cdHZhciBwcmV2aW91cyA9IDBcblx0dmFyIHZhcmlhYmxlID0gMVxuXHR2YXIgc2Nhbm5pbmcgPSAxXG5cdHZhciBhbXBlcnNhbmQgPSAxXG5cdHZhciBjaGFyYWN0ZXIgPSAwXG5cdHZhciB0eXBlID0gJydcblx0dmFyIHByb3BzID0gcnVsZXNcblx0dmFyIGNoaWxkcmVuID0gcnVsZXNldHNcblx0dmFyIHJlZmVyZW5jZSA9IHJ1bGVcblx0dmFyIGNoYXJhY3RlcnMgPSB0eXBlXG5cblx0d2hpbGUgKHNjYW5uaW5nKVxuXHRcdHN3aXRjaCAocHJldmlvdXMgPSBjaGFyYWN0ZXIsIGNoYXJhY3RlciA9IG5leHQoKSkge1xuXHRcdFx0Ly8gKFxuXHRcdFx0Y2FzZSA0MDpcblx0XHRcdFx0aWYgKHByZXZpb3VzICE9IDEwOCAmJiBjaGFyYXQoY2hhcmFjdGVycywgbGVuZ3RoIC0gMSkgPT0gNTgpIHtcblx0XHRcdFx0XHRpZiAoaW5kZXhvZihjaGFyYWN0ZXJzICs9IHJlcGxhY2UoZGVsaW1pdChjaGFyYWN0ZXIpLCAnJicsICcmXFxmJyksICcmXFxmJykgIT0gLTEpXG5cdFx0XHRcdFx0XHRhbXBlcnNhbmQgPSAtMVxuXHRcdFx0XHRcdGJyZWFrXG5cdFx0XHRcdH1cblx0XHRcdC8vIFwiICcgW1xuXHRcdFx0Y2FzZSAzNDogY2FzZSAzOTogY2FzZSA5MTpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBkZWxpbWl0KGNoYXJhY3Rlcilcblx0XHRcdFx0YnJlYWtcblx0XHRcdC8vIFxcdCBcXG4gXFxyIFxcc1xuXHRcdFx0Y2FzZSA5OiBjYXNlIDEwOiBjYXNlIDEzOiBjYXNlIDMyOlxuXHRcdFx0XHRjaGFyYWN0ZXJzICs9IHdoaXRlc3BhY2UocHJldmlvdXMpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyBcXFxuXHRcdFx0Y2FzZSA5Mjpcblx0XHRcdFx0Y2hhcmFjdGVycyArPSBlc2NhcGluZyhjYXJldCgpIC0gMSwgNylcblx0XHRcdFx0Y29udGludWVcblx0XHRcdC8vIC9cblx0XHRcdGNhc2UgNDc6XG5cdFx0XHRcdHN3aXRjaCAocGVlaygpKSB7XG5cdFx0XHRcdFx0Y2FzZSA0MjogY2FzZSA0Nzpcblx0XHRcdFx0XHRcdGFwcGVuZChjb21tZW50KGNvbW1lbnRlcihuZXh0KCksIGNhcmV0KCkpLCByb290LCBwYXJlbnQpLCBkZWNsYXJhdGlvbnMpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRjaGFyYWN0ZXJzICs9ICcvJ1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrXG5cdFx0XHQvLyB7XG5cdFx0XHRjYXNlIDEyMyAqIHZhcmlhYmxlOlxuXHRcdFx0XHRwb2ludHNbaW5kZXgrK10gPSBzdHJsZW4oY2hhcmFjdGVycykgKiBhbXBlcnNhbmRcblx0XHRcdC8vIH0gOyBcXDBcblx0XHRcdGNhc2UgMTI1ICogdmFyaWFibGU6IGNhc2UgNTk6IGNhc2UgMDpcblx0XHRcdFx0c3dpdGNoIChjaGFyYWN0ZXIpIHtcblx0XHRcdFx0XHQvLyBcXDAgfVxuXHRcdFx0XHRcdGNhc2UgMDogY2FzZSAxMjU6IHNjYW5uaW5nID0gMFxuXHRcdFx0XHRcdC8vIDtcblx0XHRcdFx0XHRjYXNlIDU5ICsgb2Zmc2V0OiBpZiAoYW1wZXJzYW5kID09IC0xKSBjaGFyYWN0ZXJzID0gcmVwbGFjZShjaGFyYWN0ZXJzLCAvXFxmL2csICcnKVxuXHRcdFx0XHRcdFx0aWYgKHByb3BlcnR5ID4gMCAmJiAoc3RybGVuKGNoYXJhY3RlcnMpIC0gbGVuZ3RoKSlcblx0XHRcdFx0XHRcdFx0YXBwZW5kKHByb3BlcnR5ID4gMzIgPyBkZWNsYXJhdGlvbihjaGFyYWN0ZXJzICsgJzsnLCBydWxlLCBwYXJlbnQsIGxlbmd0aCAtIDEpIDogZGVjbGFyYXRpb24ocmVwbGFjZShjaGFyYWN0ZXJzLCAnICcsICcnKSArICc7JywgcnVsZSwgcGFyZW50LCBsZW5ndGggLSAyKSwgZGVjbGFyYXRpb25zKVxuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyBAIDtcblx0XHRcdFx0XHRjYXNlIDU5OiBjaGFyYWN0ZXJzICs9ICc7J1xuXHRcdFx0XHRcdC8vIHsgcnVsZS9hdC1ydWxlXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdGFwcGVuZChyZWZlcmVuY2UgPSBydWxlc2V0KGNoYXJhY3RlcnMsIHJvb3QsIHBhcmVudCwgaW5kZXgsIG9mZnNldCwgcnVsZXMsIHBvaW50cywgdHlwZSwgcHJvcHMgPSBbXSwgY2hpbGRyZW4gPSBbXSwgbGVuZ3RoKSwgcnVsZXNldHMpXG5cblx0XHRcdFx0XHRcdGlmIChjaGFyYWN0ZXIgPT09IDEyMylcblx0XHRcdFx0XHRcdFx0aWYgKG9mZnNldCA9PT0gMClcblx0XHRcdFx0XHRcdFx0XHRwYXJzZShjaGFyYWN0ZXJzLCByb290LCByZWZlcmVuY2UsIHJlZmVyZW5jZSwgcHJvcHMsIHJ1bGVzZXRzLCBsZW5ndGgsIHBvaW50cywgY2hpbGRyZW4pXG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGF0cnVsZSA9PT0gOTkgJiYgY2hhcmF0KGNoYXJhY3RlcnMsIDMpID09PSAxMTAgPyAxMDAgOiBhdHJ1bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGQgbCBtIHNcblx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgMTAwOiBjYXNlIDEwODogY2FzZSAxMDk6IGNhc2UgMTE1OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJzZSh2YWx1ZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIHJ1bGUgJiYgYXBwZW5kKHJ1bGVzZXQodmFsdWUsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCAwLCAwLCBydWxlcywgcG9pbnRzLCB0eXBlLCBydWxlcywgcHJvcHMgPSBbXSwgbGVuZ3RoKSwgY2hpbGRyZW4pLCBydWxlcywgY2hpbGRyZW4sIGxlbmd0aCwgcG9pbnRzLCBydWxlID8gcHJvcHMgOiBjaGlsZHJlbilcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHBhcnNlKGNoYXJhY3RlcnMsIHJlZmVyZW5jZSwgcmVmZXJlbmNlLCByZWZlcmVuY2UsIFsnJ10sIGNoaWxkcmVuLCAwLCBwb2ludHMsIGNoaWxkcmVuKVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGluZGV4ID0gb2Zmc2V0ID0gcHJvcGVydHkgPSAwLCB2YXJpYWJsZSA9IGFtcGVyc2FuZCA9IDEsIHR5cGUgPSBjaGFyYWN0ZXJzID0gJycsIGxlbmd0aCA9IHBzZXVkb1xuXHRcdFx0XHRicmVha1xuXHRcdFx0Ly8gOlxuXHRcdFx0Y2FzZSA1ODpcblx0XHRcdFx0bGVuZ3RoID0gMSArIHN0cmxlbihjaGFyYWN0ZXJzKSwgcHJvcGVydHkgPSBwcmV2aW91c1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYgKHZhcmlhYmxlIDwgMSlcblx0XHRcdFx0XHRpZiAoY2hhcmFjdGVyID09IDEyMylcblx0XHRcdFx0XHRcdC0tdmFyaWFibGVcblx0XHRcdFx0XHRlbHNlIGlmIChjaGFyYWN0ZXIgPT0gMTI1ICYmIHZhcmlhYmxlKysgPT0gMCAmJiBwcmV2KCkgPT0gMTI1KVxuXHRcdFx0XHRcdFx0Y29udGludWVcblxuXHRcdFx0XHRzd2l0Y2ggKGNoYXJhY3RlcnMgKz0gZnJvbShjaGFyYWN0ZXIpLCBjaGFyYWN0ZXIgKiB2YXJpYWJsZSkge1xuXHRcdFx0XHRcdC8vICZcblx0XHRcdFx0XHRjYXNlIDM4OlxuXHRcdFx0XHRcdFx0YW1wZXJzYW5kID0gb2Zmc2V0ID4gMCA/IDEgOiAoY2hhcmFjdGVycyArPSAnXFxmJywgLTEpXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vICxcblx0XHRcdFx0XHRjYXNlIDQ0OlxuXHRcdFx0XHRcdFx0cG9pbnRzW2luZGV4KytdID0gKHN0cmxlbihjaGFyYWN0ZXJzKSAtIDEpICogYW1wZXJzYW5kLCBhbXBlcnNhbmQgPSAxXG5cdFx0XHRcdFx0XHRicmVha1xuXHRcdFx0XHRcdC8vIEBcblx0XHRcdFx0XHRjYXNlIDY0OlxuXHRcdFx0XHRcdFx0Ly8gLVxuXHRcdFx0XHRcdFx0aWYgKHBlZWsoKSA9PT0gNDUpXG5cdFx0XHRcdFx0XHRcdGNoYXJhY3RlcnMgKz0gZGVsaW1pdChuZXh0KCkpXG5cblx0XHRcdFx0XHRcdGF0cnVsZSA9IHBlZWsoKSwgb2Zmc2V0ID0gbGVuZ3RoID0gc3RybGVuKHR5cGUgPSBjaGFyYWN0ZXJzICs9IGlkZW50aWZpZXIoY2FyZXQoKSkpLCBjaGFyYWN0ZXIrK1xuXHRcdFx0XHRcdFx0YnJlYWtcblx0XHRcdFx0XHQvLyAtXG5cdFx0XHRcdFx0Y2FzZSA0NTpcblx0XHRcdFx0XHRcdGlmIChwcmV2aW91cyA9PT0gNDUgJiYgc3RybGVuKGNoYXJhY3RlcnMpID09IDIpXG5cdFx0XHRcdFx0XHRcdHZhcmlhYmxlID0gMFxuXHRcdFx0XHR9XG5cdFx0fVxuXG5cdHJldHVybiBydWxlc2V0c1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEBwYXJhbSB7c3RyaW5nW119IHJ1bGVzXG4gKiBAcGFyYW0ge251bWJlcltdfSBwb2ludHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBwcm9wc1xuICogQHBhcmFtIHtzdHJpbmdbXX0gY2hpbGRyZW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bGVzZXQgKHZhbHVlLCByb290LCBwYXJlbnQsIGluZGV4LCBvZmZzZXQsIHJ1bGVzLCBwb2ludHMsIHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKSB7XG5cdHZhciBwb3N0ID0gb2Zmc2V0IC0gMVxuXHR2YXIgcnVsZSA9IG9mZnNldCA9PT0gMCA/IHJ1bGVzIDogWycnXVxuXHR2YXIgc2l6ZSA9IHNpemVvZihydWxlKVxuXG5cdGZvciAodmFyIGkgPSAwLCBqID0gMCwgayA9IDA7IGkgPCBpbmRleDsgKytpKVxuXHRcdGZvciAodmFyIHggPSAwLCB5ID0gc3Vic3RyKHZhbHVlLCBwb3N0ICsgMSwgcG9zdCA9IGFicyhqID0gcG9pbnRzW2ldKSksIHogPSB2YWx1ZTsgeCA8IHNpemU7ICsreClcblx0XHRcdGlmICh6ID0gdHJpbShqID4gMCA/IHJ1bGVbeF0gKyAnICcgKyB5IDogcmVwbGFjZSh5LCAvJlxcZi9nLCBydWxlW3hdKSkpXG5cdFx0XHRcdHByb3BzW2srK10gPSB6XG5cblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgb2Zmc2V0ID09PSAwID8gUlVMRVNFVCA6IHR5cGUsIHByb3BzLCBjaGlsZHJlbiwgbGVuZ3RoKVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtvYmplY3R9IHJvb3RcbiAqIEBwYXJhbSB7b2JqZWN0P30gcGFyZW50XG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21tZW50ICh2YWx1ZSwgcm9vdCwgcGFyZW50KSB7XG5cdHJldHVybiBub2RlKHZhbHVlLCByb290LCBwYXJlbnQsIENPTU1FTlQsIGZyb20oY2hhcigpKSwgc3Vic3RyKHZhbHVlLCAyLCAtMiksIDApXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge29iamVjdH0gcm9vdFxuICogQHBhcmFtIHtvYmplY3Q/fSBwYXJlbnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGhcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uICh2YWx1ZSwgcm9vdCwgcGFyZW50LCBsZW5ndGgpIHtcblx0cmV0dXJuIG5vZGUodmFsdWUsIHJvb3QsIHBhcmVudCwgREVDTEFSQVRJT04sIHN1YnN0cih2YWx1ZSwgMCwgbGVuZ3RoKSwgc3Vic3RyKHZhbHVlLCBsZW5ndGggKyAxLCAtMSksIGxlbmd0aClcbn1cbiIsImltcG9ydCB7IFN0eWxlU2hlZXQgfSBmcm9tICdAZW1vdGlvbi9zaGVldCc7XG5pbXBvcnQgeyBkZWFsbG9jLCBhbGxvYywgbmV4dCwgdG9rZW4sIGZyb20sIHBlZWssIGRlbGltaXQsIHNsaWNlLCBwb3NpdGlvbiwgUlVMRVNFVCwgY29tYmluZSwgbWF0Y2gsIHNlcmlhbGl6ZSwgY29weSwgcmVwbGFjZSwgV0VCS0lULCBNT1osIE1TLCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OLCBoYXNoLCBjaGFyYXQsIHN0cmxlbiwgaW5kZXhvZiwgc3RyaW5naWZ5LCBDT01NRU5ULCBydWxlc2hlZXQsIG1pZGRsZXdhcmUsIGNvbXBpbGUgfSBmcm9tICdzdHlsaXMnO1xuaW1wb3J0ICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyA9IGZ1bmN0aW9uIGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhiZWdpbiwgcG9pbnRzLCBpbmRleCkge1xuICB2YXIgcHJldmlvdXMgPSAwO1xuICB2YXIgY2hhcmFjdGVyID0gMDtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHByZXZpb3VzID0gY2hhcmFjdGVyO1xuICAgIGNoYXJhY3RlciA9IHBlZWsoKTsgLy8gJlxcZlxuXG4gICAgaWYgKHByZXZpb3VzID09PSAzOCAmJiBjaGFyYWN0ZXIgPT09IDEyKSB7XG4gICAgICBwb2ludHNbaW5kZXhdID0gMTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4oY2hhcmFjdGVyKSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgbmV4dCgpO1xuICB9XG5cbiAgcmV0dXJuIHNsaWNlKGJlZ2luLCBwb3NpdGlvbik7XG59O1xuXG52YXIgdG9SdWxlcyA9IGZ1bmN0aW9uIHRvUnVsZXMocGFyc2VkLCBwb2ludHMpIHtcbiAgLy8gcHJldGVuZCB3ZSd2ZSBzdGFydGVkIHdpdGggYSBjb21tYVxuICB2YXIgaW5kZXggPSAtMTtcbiAgdmFyIGNoYXJhY3RlciA9IDQ0O1xuXG4gIGRvIHtcbiAgICBzd2l0Y2ggKHRva2VuKGNoYXJhY3RlcikpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgLy8gJlxcZlxuICAgICAgICBpZiAoY2hhcmFjdGVyID09PSAzOCAmJiBwZWVrKCkgPT09IDEyKSB7XG4gICAgICAgICAgLy8gdGhpcyBpcyBub3QgMTAwJSBjb3JyZWN0LCB3ZSBkb24ndCBhY2NvdW50IGZvciBsaXRlcmFsIHNlcXVlbmNlcyBoZXJlIC0gbGlrZSBmb3IgZXhhbXBsZSBxdW90ZWQgc3RyaW5nc1xuICAgICAgICAgIC8vIHN0eWxpcyBpbnNlcnRzIFxcZiBhZnRlciAmIHRvIGtub3cgd2hlbiAmIHdoZXJlIGl0IHNob3VsZCByZXBsYWNlIHRoaXMgc2VxdWVuY2Ugd2l0aCB0aGUgY29udGV4dCBzZWxlY3RvclxuICAgICAgICAgIC8vIGFuZCB3aGVuIGl0IHNob3VsZCBqdXN0IGNvbmNhdGVuYXRlIHRoZSBvdXRlciBhbmQgaW5uZXIgc2VsZWN0b3JzXG4gICAgICAgICAgLy8gaXQncyB2ZXJ5IHVubGlrZWx5IGZvciB0aGlzIHNlcXVlbmNlIHRvIGFjdHVhbGx5IGFwcGVhciBpbiBhIGRpZmZlcmVudCBjb250ZXh0LCBzbyB3ZSBqdXN0IGxldmVyYWdlIHRoaXMgZmFjdCBoZXJlXG4gICAgICAgICAgcG9pbnRzW2luZGV4XSA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGlkZW50aWZpZXJXaXRoUG9pbnRUcmFja2luZyhwb3NpdGlvbiAtIDEsIHBvaW50cywgaW5kZXgpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAyOlxuICAgICAgICBwYXJzZWRbaW5kZXhdICs9IGRlbGltaXQoY2hhcmFjdGVyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgNDpcbiAgICAgICAgLy8gY29tbWFcbiAgICAgICAgaWYgKGNoYXJhY3RlciA9PT0gNDQpIHtcbiAgICAgICAgICAvLyBjb2xvblxuICAgICAgICAgIHBhcnNlZFsrK2luZGV4XSA9IHBlZWsoKSA9PT0gNTggPyAnJlxcZicgOiAnJztcbiAgICAgICAgICBwb2ludHNbaW5kZXhdID0gcGFyc2VkW2luZGV4XS5sZW5ndGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgLy8gZmFsbHRocm91Z2hcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcGFyc2VkW2luZGV4XSArPSBmcm9tKGNoYXJhY3Rlcik7XG4gICAgfVxuICB9IHdoaWxlIChjaGFyYWN0ZXIgPSBuZXh0KCkpO1xuXG4gIHJldHVybiBwYXJzZWQ7XG59O1xuXG52YXIgZ2V0UnVsZXMgPSBmdW5jdGlvbiBnZXRSdWxlcyh2YWx1ZSwgcG9pbnRzKSB7XG4gIHJldHVybiBkZWFsbG9jKHRvUnVsZXMoYWxsb2ModmFsdWUpLCBwb2ludHMpKTtcbn07IC8vIFdlYWtTZXQgd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSwgYnV0IG9ubHkgV2Vha01hcCBpcyBzdXBwb3J0ZWQgaW4gSUUxMVxuXG5cbnZhciBmaXhlZEVsZW1lbnRzID0gLyogI19fUFVSRV9fICovbmV3IFdlYWtNYXAoKTtcbnZhciBjb21wYXQgPSBmdW5jdGlvbiBjb21wYXQoZWxlbWVudCkge1xuICBpZiAoZWxlbWVudC50eXBlICE9PSAncnVsZScgfHwgIWVsZW1lbnQucGFyZW50IHx8IC8vIHBvc2l0aXZlIC5sZW5ndGggaW5kaWNhdGVzIHRoYXQgdGhpcyBydWxlIGNvbnRhaW5zIHBzZXVkb1xuICAvLyBuZWdhdGl2ZSAubGVuZ3RoIGluZGljYXRlcyB0aGF0IHRoaXMgcnVsZSBoYXMgYmVlbiBhbHJlYWR5IHByZWZpeGVkXG4gIGVsZW1lbnQubGVuZ3RoIDwgMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciB2YWx1ZSA9IGVsZW1lbnQudmFsdWUsXG4gICAgICBwYXJlbnQgPSBlbGVtZW50LnBhcmVudDtcbiAgdmFyIGlzSW1wbGljaXRSdWxlID0gZWxlbWVudC5jb2x1bW4gPT09IHBhcmVudC5jb2x1bW4gJiYgZWxlbWVudC5saW5lID09PSBwYXJlbnQubGluZTtcblxuICB3aGlsZSAocGFyZW50LnR5cGUgIT09ICdydWxlJykge1xuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgaWYgKCFwYXJlbnQpIHJldHVybjtcbiAgfSAvLyBzaG9ydC1jaXJjdWl0IGZvciB0aGUgc2ltcGxlc3QgY2FzZVxuXG5cbiAgaWYgKGVsZW1lbnQucHJvcHMubGVuZ3RoID09PSAxICYmIHZhbHVlLmNoYXJDb2RlQXQoMCkgIT09IDU4XG4gIC8qIGNvbG9uICovXG4gICYmICFmaXhlZEVsZW1lbnRzLmdldChwYXJlbnQpKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGlmIHRoaXMgaXMgYW4gaW1wbGljaXRseSBpbnNlcnRlZCBydWxlICh0aGUgb25lIGVhZ2VybHkgaW5zZXJ0ZWQgYXQgdGhlIGVhY2ggbmV3IG5lc3RlZCBsZXZlbClcbiAgLy8gdGhlbiB0aGUgcHJvcHMgaGFzIGFscmVhZHkgYmVlbiBtYW5pcHVsYXRlZCBiZWZvcmVoYW5kIGFzIHRoZXkgdGhhdCBhcnJheSBpcyBzaGFyZWQgYmV0d2VlbiBpdCBhbmQgaXRzIFwicnVsZSBwYXJlbnRcIlxuXG5cbiAgaWYgKGlzSW1wbGljaXRSdWxlKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZml4ZWRFbGVtZW50cy5zZXQoZWxlbWVudCwgdHJ1ZSk7XG4gIHZhciBwb2ludHMgPSBbXTtcbiAgdmFyIHJ1bGVzID0gZ2V0UnVsZXModmFsdWUsIHBvaW50cyk7XG4gIHZhciBwYXJlbnRSdWxlcyA9IHBhcmVudC5wcm9wcztcblxuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGFyZW50UnVsZXMubGVuZ3RoOyBqKyssIGsrKykge1xuICAgICAgZWxlbWVudC5wcm9wc1trXSA9IHBvaW50c1tpXSA/IHJ1bGVzW2ldLnJlcGxhY2UoLyZcXGYvZywgcGFyZW50UnVsZXNbal0pIDogcGFyZW50UnVsZXNbal0gKyBcIiBcIiArIHJ1bGVzW2ldO1xuICAgIH1cbiAgfVxufTtcbnZhciByZW1vdmVMYWJlbCA9IGZ1bmN0aW9uIHJlbW92ZUxhYmVsKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gJ2RlY2wnKSB7XG4gICAgdmFyIHZhbHVlID0gZWxlbWVudC52YWx1ZTtcblxuICAgIGlmICggLy8gY2hhcmNvZGUgZm9yIGxcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDApID09PSAxMDggJiYgLy8gY2hhcmNvZGUgZm9yIGJcbiAgICB2YWx1ZS5jaGFyQ29kZUF0KDIpID09PSA5OCkge1xuICAgICAgLy8gdGhpcyBpZ25vcmVzIGxhYmVsXG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gJyc7XG4gICAgICBlbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuICB9XG59O1xudmFyIGlnbm9yZUZsYWcgPSAnZW1vdGlvbi1kaXNhYmxlLXNlcnZlci1yZW5kZXJpbmctdW5zYWZlLXNlbGVjdG9yLXdhcm5pbmctcGxlYXNlLWRvLW5vdC11c2UtdGhpcy10aGUtd2FybmluZy1leGlzdHMtZm9yLWEtcmVhc29uJztcblxudmFyIGlzSWdub3JpbmdDb21tZW50ID0gZnVuY3Rpb24gaXNJZ25vcmluZ0NvbW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gZWxlbWVudC50eXBlID09PSAnY29tbScgJiYgZWxlbWVudC5jaGlsZHJlbi5pbmRleE9mKGlnbm9yZUZsYWcpID4gLTE7XG59O1xuXG52YXIgY3JlYXRlVW5zYWZlU2VsZWN0b3JzQWxhcm0gPSBmdW5jdGlvbiBjcmVhdGVVbnNhZmVTZWxlY3RvcnNBbGFybShjYWNoZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbikge1xuICAgIGlmIChlbGVtZW50LnR5cGUgIT09ICdydWxlJyB8fCBjYWNoZS5jb21wYXQpIHJldHVybjtcbiAgICB2YXIgdW5zYWZlUHNldWRvQ2xhc3NlcyA9IGVsZW1lbnQudmFsdWUubWF0Y2goLyg6Zmlyc3R8Om50aHw6bnRoLWxhc3QpLWNoaWxkL2cpO1xuXG4gICAgaWYgKHVuc2FmZVBzZXVkb0NsYXNzZXMpIHtcbiAgICAgIHZhciBpc05lc3RlZCA9ICEhZWxlbWVudC5wYXJlbnQ7IC8vIGluIG5lc3RlZCBydWxlcyBjb21tZW50cyBiZWNvbWUgY2hpbGRyZW4gb2YgdGhlIFwiYXV0by1pbnNlcnRlZFwiIHJ1bGUgYW5kIHRoYXQncyBhbHdheXMgdGhlIGBlbGVtZW50LnBhcmVudGBcbiAgICAgIC8vXG4gICAgICAvLyBjb25zaWRlcmluZyB0aGlzIGlucHV0OlxuICAgICAgLy8gLmEge1xuICAgICAgLy8gICAuYiAvKiBjb21tICovIHt9XG4gICAgICAvLyAgIGNvbG9yOiBob3RwaW5rO1xuICAgICAgLy8gfVxuICAgICAgLy8gd2UgZ2V0IG91dHB1dCBjb3JyZXNwb25kaW5nIHRvIHRoaXM6XG4gICAgICAvLyAuYSB7XG4gICAgICAvLyAgICYge1xuICAgICAgLy8gICAgIC8qIGNvbW0gKi9cbiAgICAgIC8vICAgICBjb2xvcjogaG90cGluaztcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICAuYiB7fVxuICAgICAgLy8gfVxuXG4gICAgICB2YXIgY29tbWVudENvbnRhaW5lciA9IGlzTmVzdGVkID8gZWxlbWVudC5wYXJlbnQuY2hpbGRyZW4gOiAvLyBnbG9iYWwgcnVsZSBhdCB0aGUgcm9vdCBsZXZlbFxuICAgICAgY2hpbGRyZW47XG5cbiAgICAgIGZvciAodmFyIGkgPSBjb21tZW50Q29udGFpbmVyLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHZhciBub2RlID0gY29tbWVudENvbnRhaW5lcltpXTtcblxuICAgICAgICBpZiAobm9kZS5saW5lIDwgZWxlbWVudC5saW5lKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gLy8gaXQgaXMgcXVpdGUgd2VpcmQgYnV0IGNvbW1lbnRzIGFyZSAqdXN1YWxseSogcHV0IGF0IGBjb2x1bW46IGVsZW1lbnQuY29sdW1uIC0gMWBcbiAgICAgICAgLy8gc28gd2Ugc2VlayAqZnJvbSB0aGUgZW5kKiBmb3IgdGhlIG5vZGUgdGhhdCBpcyBlYXJsaWVyIHRoYW4gdGhlIHJ1bGUncyBgZWxlbWVudGAgYW5kIGNoZWNrIHRoYXRcbiAgICAgICAgLy8gdGhpcyB3aWxsIGFsc28gbWF0Y2ggaW5wdXRzIGxpa2UgdGhpczpcbiAgICAgICAgLy8gLmEge1xuICAgICAgICAvLyAgIC8qIGNvbW0gKi9cbiAgICAgICAgLy8gICAuYiB7fVxuICAgICAgICAvLyB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGJ1dCB0aGF0IGlzIGZpbmVcbiAgICAgICAgLy9cbiAgICAgICAgLy8gaXQgd291bGQgYmUgdGhlIGVhc2llc3QgdG8gY2hhbmdlIHRoZSBwbGFjZW1lbnQgb2YgdGhlIGNvbW1lbnQgdG8gYmUgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBydWxlOlxuICAgICAgICAvLyAuYSB7XG4gICAgICAgIC8vICAgLmIgeyAvKiBjb21tICovIH1cbiAgICAgICAgLy8gfVxuICAgICAgICAvLyB3aXRoIHN1Y2ggaW5wdXRzIHdlIHdvdWxkbid0IGhhdmUgdG8gc2VhcmNoIGZvciB0aGUgY29tbWVudCBhdCBhbGxcbiAgICAgICAgLy8gVE9ETzogY29uc2lkZXIgY2hhbmdpbmcgdGhpcyBjb21tZW50IHBsYWNlbWVudCBpbiB0aGUgbmV4dCBtYWpvciB2ZXJzaW9uXG5cblxuICAgICAgICBpZiAobm9kZS5jb2x1bW4gPCBlbGVtZW50LmNvbHVtbikge1xuICAgICAgICAgIGlmIChpc0lnbm9yaW5nQ29tbWVudChub2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVuc2FmZVBzZXVkb0NsYXNzZXMuZm9yRWFjaChmdW5jdGlvbiAodW5zYWZlUHNldWRvQ2xhc3MpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlRoZSBwc2V1ZG8gY2xhc3MgXFxcIlwiICsgdW5zYWZlUHNldWRvQ2xhc3MgKyBcIlxcXCIgaXMgcG90ZW50aWFsbHkgdW5zYWZlIHdoZW4gZG9pbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLiBUcnkgY2hhbmdpbmcgaXQgdG8gXFxcIlwiICsgdW5zYWZlUHNldWRvQ2xhc3Muc3BsaXQoJy1jaGlsZCcpWzBdICsgXCItb2YtdHlwZVxcXCIuXCIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufTtcblxudmFyIGlzSW1wb3J0UnVsZSA9IGZ1bmN0aW9uIGlzSW1wb3J0UnVsZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50LnR5cGUuY2hhckNvZGVBdCgxKSA9PT0gMTA1ICYmIGVsZW1lbnQudHlwZS5jaGFyQ29kZUF0KDApID09PSA2NDtcbn07XG5cbnZhciBpc1ByZXBlbmRlZFdpdGhSZWd1bGFyUnVsZXMgPSBmdW5jdGlvbiBpc1ByZXBlbmRlZFdpdGhSZWd1bGFyUnVsZXMoaW5kZXgsIGNoaWxkcmVuKSB7XG4gIGZvciAodmFyIGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKCFpc0ltcG9ydFJ1bGUoY2hpbGRyZW5baV0pKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59OyAvLyB1c2UgdGhpcyB0byByZW1vdmUgaW5jb3JyZWN0IGVsZW1lbnRzIGZyb20gZnVydGhlciBwcm9jZXNzaW5nXG4vLyBzbyB0aGV5IGRvbid0IGdldCBoYW5kZWQgdG8gdGhlIGBzaGVldGAgKG9yIGFueXRoaW5nIGVsc2UpXG4vLyBhcyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gYWRkaXRpb25hbCBsb2dzIHdoaWNoIGluIHR1cm4gY291bGQgYmUgb3ZlcmhlbG1pbmcgdG8gdGhlIHVzZXJcblxuXG52YXIgbnVsbGlmeUVsZW1lbnQgPSBmdW5jdGlvbiBudWxsaWZ5RWxlbWVudChlbGVtZW50KSB7XG4gIGVsZW1lbnQudHlwZSA9ICcnO1xuICBlbGVtZW50LnZhbHVlID0gJyc7XG4gIGVsZW1lbnRbXCJyZXR1cm5cIl0gPSAnJztcbiAgZWxlbWVudC5jaGlsZHJlbiA9ICcnO1xuICBlbGVtZW50LnByb3BzID0gJyc7XG59O1xuXG52YXIgaW5jb3JyZWN0SW1wb3J0QWxhcm0gPSBmdW5jdGlvbiBpbmNvcnJlY3RJbXBvcnRBbGFybShlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4pIHtcbiAgaWYgKCFpc0ltcG9ydFJ1bGUoZWxlbWVudCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoZWxlbWVudC5wYXJlbnQpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiYEBpbXBvcnRgIHJ1bGVzIGNhbid0IGJlIG5lc3RlZCBpbnNpZGUgb3RoZXIgcnVsZXMuIFBsZWFzZSBtb3ZlIGl0IHRvIHRoZSB0b3AgbGV2ZWwgYW5kIHB1dCBpdCBiZWZvcmUgcmVndWxhciBydWxlcy4gS2VlcCBpbiBtaW5kIHRoYXQgdGhleSBjYW4gb25seSBiZSB1c2VkIHdpdGhpbiBnbG9iYWwgc3R5bGVzLlwiKTtcbiAgICBudWxsaWZ5RWxlbWVudChlbGVtZW50KTtcbiAgfSBlbHNlIGlmIChpc1ByZXBlbmRlZFdpdGhSZWd1bGFyUnVsZXMoaW5kZXgsIGNoaWxkcmVuKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJgQGltcG9ydGAgcnVsZXMgY2FuJ3QgYmUgYWZ0ZXIgb3RoZXIgcnVsZXMuIFBsZWFzZSBwdXQgeW91ciBgQGltcG9ydGAgcnVsZXMgYmVmb3JlIHlvdXIgb3RoZXIgcnVsZXMuXCIpO1xuICAgIG51bGxpZnlFbGVtZW50KGVsZW1lbnQpO1xuICB9XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1mYWxsdGhyb3VnaCAqL1xuXG5mdW5jdGlvbiBwcmVmaXgodmFsdWUsIGxlbmd0aCkge1xuICBzd2l0Y2ggKGhhc2godmFsdWUsIGxlbmd0aCkpIHtcbiAgICAvLyBjb2xvci1hZGp1c3RcbiAgICBjYXNlIDUxMDM6XG4gICAgICByZXR1cm4gV0VCS0lUICsgJ3ByaW50LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFuaW1hdGlvbiwgYW5pbWF0aW9uLShkZWxheXxkaXJlY3Rpb258ZHVyYXRpb258ZmlsbC1tb2RlfGl0ZXJhdGlvbi1jb3VudHxuYW1lfHBsYXktc3RhdGV8dGltaW5nLWZ1bmN0aW9uKVxuXG4gICAgY2FzZSA1NzM3OlxuICAgIGNhc2UgNDIwMTpcbiAgICBjYXNlIDMxNzc6XG4gICAgY2FzZSAzNDMzOlxuICAgIGNhc2UgMTY0MTpcbiAgICBjYXNlIDQ0NTc6XG4gICAgY2FzZSAyOTIxOiAvLyB0ZXh0LWRlY29yYXRpb24sIGZpbHRlciwgY2xpcC1wYXRoLCBiYWNrZmFjZS12aXNpYmlsaXR5LCBjb2x1bW4sIGJveC1kZWNvcmF0aW9uLWJyZWFrXG5cbiAgICBjYXNlIDU1NzI6XG4gICAgY2FzZSA2MzU2OlxuICAgIGNhc2UgNTg0NDpcbiAgICBjYXNlIDMxOTE6XG4gICAgY2FzZSA2NjQ1OlxuICAgIGNhc2UgMzAwNTogLy8gbWFzaywgbWFzay1pbWFnZSwgbWFzay0obW9kZXxjbGlwfHNpemUpLCBtYXNrLShyZXBlYXR8b3JpZ2luKSwgbWFzay1wb3NpdGlvbiwgbWFzay1jb21wb3NpdGUsXG5cbiAgICBjYXNlIDYzOTE6XG4gICAgY2FzZSA1ODc5OlxuICAgIGNhc2UgNTYyMzpcbiAgICBjYXNlIDYxMzU6XG4gICAgY2FzZSA0NTk5OlxuICAgIGNhc2UgNDg1NTogLy8gYmFja2dyb3VuZC1jbGlwLCBjb2x1bW5zLCBjb2x1bW4tKGNvdW50fGZpbGx8Z2FwfHJ1bGV8cnVsZS1jb2xvcnxydWxlLXN0eWxlfHJ1bGUtd2lkdGh8c3Bhbnx3aWR0aClcblxuICAgIGNhc2UgNDIxNTpcbiAgICBjYXNlIDYzODk6XG4gICAgY2FzZSA1MTA5OlxuICAgIGNhc2UgNTM2NTpcbiAgICBjYXNlIDU2MjE6XG4gICAgY2FzZSAzODI5OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgdmFsdWU7XG4gICAgLy8gYXBwZWFyYW5jZSwgdXNlci1zZWxlY3QsIHRyYW5zZm9ybSwgaHlwaGVucywgdGV4dC1zaXplLWFkanVzdFxuXG4gICAgY2FzZSA1MzQ5OlxuICAgIGNhc2UgNDI0NjpcbiAgICBjYXNlIDQ4MTA6XG4gICAgY2FzZSA2OTY4OlxuICAgIGNhc2UgMjc1NjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1PWiArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGZsZXgsIGZsZXgtZGlyZWN0aW9uXG5cbiAgICBjYXNlIDY4Mjg6XG4gICAgY2FzZSA0MjY4OlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIG9yZGVyXG5cbiAgICBjYXNlIDYxNjU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LScgKyB2YWx1ZSArIHZhbHVlO1xuICAgIC8vIGFsaWduLWl0ZW1zXG5cbiAgICBjYXNlIDUxODc6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyByZXBsYWNlKHZhbHVlLCAvKFxcdyspLisoOlteXSspLywgV0VCS0lUICsgJ2JveC0kMSQyJyArIE1TICsgJ2ZsZXgtJDEkMicpICsgdmFsdWU7XG4gICAgLy8gYWxpZ24tc2VsZlxuXG4gICAgY2FzZSA1NDQzOlxuICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyAnZmxleC1pdGVtLScgKyByZXBsYWNlKHZhbHVlLCAvZmxleC18LXNlbGYvLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBhbGlnbi1jb250ZW50XG5cbiAgICBjYXNlIDQ2NzU6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArICdmbGV4LWxpbmUtcGFjaycgKyByZXBsYWNlKHZhbHVlLCAvYWxpZ24tY29udGVudHxmbGV4LXwtc2VsZi8sICcnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtc2hyaW5rXG5cbiAgICBjYXNlIDU1NDg6XG4gICAgICByZXR1cm4gV0VCS0lUICsgdmFsdWUgKyBNUyArIHJlcGxhY2UodmFsdWUsICdzaHJpbmsnLCAnbmVnYXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIGZsZXgtYmFzaXNcblxuICAgIGNhc2UgNTI5MjpcbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2Jhc2lzJywgJ3ByZWZlcnJlZC1zaXplJykgKyB2YWx1ZTtcbiAgICAvLyBmbGV4LWdyb3dcblxuICAgIGNhc2UgNjA2MDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyAnYm94LScgKyByZXBsYWNlKHZhbHVlLCAnLWdyb3cnLCAnJykgKyBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgJ2dyb3cnLCAncG9zaXRpdmUnKSArIHZhbHVlO1xuICAgIC8vIHRyYW5zaXRpb25cblxuICAgIGNhc2UgNDU1NDpcbiAgICAgIHJldHVybiBXRUJLSVQgKyByZXBsYWNlKHZhbHVlLCAvKFteLV0pKHRyYW5zZm9ybSkvZywgJyQxJyArIFdFQktJVCArICckMicpICsgdmFsdWU7XG4gICAgLy8gY3Vyc29yXG5cbiAgICBjYXNlIDYxODc6XG4gICAgICByZXR1cm4gcmVwbGFjZShyZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oem9vbS18Z3JhYikvLCBXRUJLSVQgKyAnJDEnKSwgLyhpbWFnZS1zZXQpLywgV0VCS0lUICsgJyQxJyksIHZhbHVlLCAnJykgKyB2YWx1ZTtcbiAgICAvLyBiYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kLWltYWdlXG5cbiAgICBjYXNlIDU0OTU6XG4gICAgY2FzZSAzOTU5OlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oaW1hZ2Utc2V0XFwoW15dKikvLCBXRUJLSVQgKyAnJDEnICsgJyRgJDEnKTtcbiAgICAvLyBqdXN0aWZ5LWNvbnRlbnRcblxuICAgIGNhc2UgNDk2ODpcbiAgICAgIHJldHVybiByZXBsYWNlKHJlcGxhY2UodmFsdWUsIC8oLis6KShmbGV4LSk/KC4qKS8sIFdFQktJVCArICdib3gtcGFjazokMycgKyBNUyArICdmbGV4LXBhY2s6JDMnKSwgL3MuKy1iW147XSsvLCAnanVzdGlmeScpICsgV0VCS0lUICsgdmFsdWUgKyB2YWx1ZTtcbiAgICAvLyAobWFyZ2lufHBhZGRpbmcpLWlubGluZS0oc3RhcnR8ZW5kKVxuXG4gICAgY2FzZSA0MDk1OlxuICAgIGNhc2UgMzU4MzpcbiAgICBjYXNlIDQwNjg6XG4gICAgY2FzZSAyNTMyOlxuICAgICAgcmV0dXJuIHJlcGxhY2UodmFsdWUsIC8oLispLWlubGluZSguKykvLCBXRUJLSVQgKyAnJDEkMicpICsgdmFsdWU7XG4gICAgLy8gKG1pbnxtYXgpPyh3aWR0aHxoZWlnaHR8aW5saW5lLXNpemV8YmxvY2stc2l6ZSlcblxuICAgIGNhc2UgODExNjpcbiAgICBjYXNlIDcwNTk6XG4gICAgY2FzZSA1NzUzOlxuICAgIGNhc2UgNTUzNTpcbiAgICBjYXNlIDU0NDU6XG4gICAgY2FzZSA1NzAxOlxuICAgIGNhc2UgNDkzMzpcbiAgICBjYXNlIDQ2Nzc6XG4gICAgY2FzZSA1NTMzOlxuICAgIGNhc2UgNTc4OTpcbiAgICBjYXNlIDUwMjE6XG4gICAgY2FzZSA0NzY1OlxuICAgICAgLy8gc3RyZXRjaCwgbWF4LWNvbnRlbnQsIG1pbi1jb250ZW50LCBmaWxsLWF2YWlsYWJsZVxuICAgICAgaWYgKHN0cmxlbih2YWx1ZSkgLSAxIC0gbGVuZ3RoID4gNikgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDEpKSB7XG4gICAgICAgIC8vIChtKWF4LWNvbnRlbnQsIChtKWluLWNvbnRlbnRcbiAgICAgICAgY2FzZSAxMDk6XG4gICAgICAgICAgLy8gLVxuICAgICAgICAgIGlmIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDQpICE9PSA0NSkgYnJlYWs7XG4gICAgICAgIC8vIChmKWlsbC1hdmFpbGFibGUsIChmKWl0LWNvbnRlbnRcblxuICAgICAgICBjYXNlIDEwMjpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKC4rKS0oW15dKykvLCAnJDEnICsgV0VCS0lUICsgJyQyLSQzJyArICckMScgKyBNT1ogKyAoY2hhcmF0KHZhbHVlLCBsZW5ndGggKyAzKSA9PSAxMDggPyAnJDMnIDogJyQyLSQzJykpICsgdmFsdWU7XG4gICAgICAgIC8vIChzKXRyZXRjaFxuXG4gICAgICAgIGNhc2UgMTE1OlxuICAgICAgICAgIHJldHVybiB+aW5kZXhvZih2YWx1ZSwgJ3N0cmV0Y2gnKSA/IHByZWZpeChyZXBsYWNlKHZhbHVlLCAnc3RyZXRjaCcsICdmaWxsLWF2YWlsYWJsZScpLCBsZW5ndGgpICsgdmFsdWUgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIC8vIHBvc2l0aW9uOiBzdGlja3lcblxuICAgIGNhc2UgNDk0OTpcbiAgICAgIC8vIChzKXRpY2t5P1xuICAgICAgaWYgKGNoYXJhdCh2YWx1ZSwgbGVuZ3RoICsgMSkgIT09IDExNSkgYnJlYWs7XG4gICAgLy8gZGlzcGxheTogKGZsZXh8aW5saW5lLWZsZXgpXG5cbiAgICBjYXNlIDY0NDQ6XG4gICAgICBzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgc3RybGVuKHZhbHVlKSAtIDMgLSAofmluZGV4b2YodmFsdWUsICchaW1wb3J0YW50JykgJiYgMTApKSkge1xuICAgICAgICAvLyBzdGljKGspeVxuICAgICAgICBjYXNlIDEwNzpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgJzonLCAnOicgKyBXRUJLSVQpICsgdmFsdWU7XG4gICAgICAgIC8vIChpbmxpbmUtKT9mbChlKXhcblxuICAgICAgICBjYXNlIDEwMTpcbiAgICAgICAgICByZXR1cm4gcmVwbGFjZSh2YWx1ZSwgLyguKzopKFteOyFdKykoO3whLispPy8sICckMScgKyBXRUJLSVQgKyAoY2hhcmF0KHZhbHVlLCAxNCkgPT09IDQ1ID8gJ2lubGluZS0nIDogJycpICsgJ2JveCQzJyArICckMScgKyBXRUJLSVQgKyAnJDIkMycgKyAnJDEnICsgTVMgKyAnJDJib3gkMycpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICAgIC8vIHdyaXRpbmctbW9kZVxuXG4gICAgY2FzZSA1OTM2OlxuICAgICAgc3dpdGNoIChjaGFyYXQodmFsdWUsIGxlbmd0aCArIDExKSkge1xuICAgICAgICAvLyB2ZXJ0aWNhbC1sKHIpXG4gICAgICAgIGNhc2UgMTE0OlxuICAgICAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgcmVwbGFjZSh2YWx1ZSwgL1tzdmhdXFx3Ky1bdGJscl17Mn0vLCAndGInKSArIHZhbHVlO1xuICAgICAgICAvLyB2ZXJ0aWNhbC1yKGwpXG5cbiAgICAgICAgY2FzZSAxMDg6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICd0Yi1ybCcpICsgdmFsdWU7XG4gICAgICAgIC8vIGhvcml6b250YWwoLSl0YlxuXG4gICAgICAgIGNhc2UgNDU6XG4gICAgICAgICAgcmV0dXJuIFdFQktJVCArIHZhbHVlICsgTVMgKyByZXBsYWNlKHZhbHVlLCAvW3N2aF1cXHcrLVt0YmxyXXsyfS8sICdscicpICsgdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBXRUJLSVQgKyB2YWx1ZSArIE1TICsgdmFsdWUgKyB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cblxudmFyIHByZWZpeGVyID0gZnVuY3Rpb24gcHJlZml4ZXIoZWxlbWVudCwgaW5kZXgsIGNoaWxkcmVuLCBjYWxsYmFjaykge1xuICBpZiAoZWxlbWVudC5sZW5ndGggPiAtMSkgaWYgKCFlbGVtZW50W1wicmV0dXJuXCJdKSBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgIGNhc2UgREVDTEFSQVRJT046XG4gICAgICBlbGVtZW50W1wicmV0dXJuXCJdID0gcHJlZml4KGVsZW1lbnQudmFsdWUsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBLRVlGUkFNRVM6XG4gICAgICByZXR1cm4gc2VyaWFsaXplKFtjb3B5KGVsZW1lbnQsIHtcbiAgICAgICAgdmFsdWU6IHJlcGxhY2UoZWxlbWVudC52YWx1ZSwgJ0AnLCAnQCcgKyBXRUJLSVQpXG4gICAgICB9KV0sIGNhbGxiYWNrKTtcblxuICAgIGNhc2UgUlVMRVNFVDpcbiAgICAgIGlmIChlbGVtZW50Lmxlbmd0aCkgcmV0dXJuIGNvbWJpbmUoZWxlbWVudC5wcm9wcywgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHN3aXRjaCAobWF0Y2godmFsdWUsIC8oOjpwbGFjXFx3K3w6cmVhZC1cXHcrKS8pKSB7XG4gICAgICAgICAgLy8gOnJlYWQtKG9ubHl8d3JpdGUpXG4gICAgICAgICAgY2FzZSAnOnJlYWQtb25seSc6XG4gICAgICAgICAgY2FzZSAnOnJlYWQtd3JpdGUnOlxuICAgICAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7XG4gICAgICAgICAgICAgIHByb3BzOiBbcmVwbGFjZSh2YWx1ZSwgLzoocmVhZC1cXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSldLCBjYWxsYmFjayk7XG4gICAgICAgICAgLy8gOnBsYWNlaG9sZGVyXG5cbiAgICAgICAgICBjYXNlICc6OnBsYWNlaG9sZGVyJzpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXVxuICAgICAgICAgICAgfSksIGNvcHkoZWxlbWVudCwge1xuICAgICAgICAgICAgICBwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldXG4gICAgICAgICAgICB9KV0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH0pO1xuICB9XG59O1xuXG52YXIgZGVmYXVsdFN0eWxpc1BsdWdpbnMgPSBbcHJlZml4ZXJdO1xuXG52YXIgY3JlYXRlQ2FjaGUgPSBmdW5jdGlvbiBjcmVhdGVDYWNoZShvcHRpb25zKSB7XG4gIHZhciBrZXkgPSBvcHRpb25zLmtleTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAha2V5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGhhdmUgdG8gY29uZmlndXJlIGBrZXlgIGZvciB5b3VyIGNhY2hlLiBQbGVhc2UgbWFrZSBzdXJlIGl0J3MgdW5pcXVlIChhbmQgbm90IGVxdWFsIHRvICdjc3MnKSBhcyBpdCdzIHVzZWQgZm9yIGxpbmtpbmcgc3R5bGVzIHRvIHlvdXIgY2FjaGUuXFxuXCIgKyBcIklmIG11bHRpcGxlIGNhY2hlcyBzaGFyZSB0aGUgc2FtZSBrZXkgdGhleSBtaWdodCBcXFwiZmlnaHRcXFwiIGZvciBlYWNoIG90aGVyJ3Mgc3R5bGUgZWxlbWVudHMuXCIpO1xuICB9XG5cbiAgaWYgKGtleSA9PT0gJ2NzcycpIHtcbiAgICB2YXIgc3NyU3R5bGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcInN0eWxlW2RhdGEtZW1vdGlvbl06bm90KFtkYXRhLXNdKVwiKTsgLy8gZ2V0IFNTUmVkIHN0eWxlcyBvdXQgb2YgdGhlIHdheSBvZiBSZWFjdCdzIGh5ZHJhdGlvblxuICAgIC8vIGRvY3VtZW50LmhlYWQgaXMgYSBzYWZlIHBsYWNlIHRvIG1vdmUgdGhlbSB0byh0aG91Z2ggbm90ZSBkb2N1bWVudC5oZWFkIGlzIG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBwbGFjZSB0aGV5IHdpbGwgYmUpXG4gICAgLy8gbm90ZSB0aGlzIHZlcnkgdmVyeSBpbnRlbnRpb25hbGx5IHRhcmdldHMgYWxsIHN0eWxlIGVsZW1lbnRzIHJlZ2FyZGxlc3Mgb2YgdGhlIGtleSB0byBlbnN1cmVcbiAgICAvLyB0aGF0IGNyZWF0aW5nIGEgY2FjaGUgd29ya3MgaW5zaWRlIG9mIHJlbmRlciBvZiBhIFJlYWN0IGNvbXBvbmVudFxuXG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzc3JTdHlsZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAvLyB3ZSB3YW50IHRvIG9ubHkgbW92ZSBlbGVtZW50cyB3aGljaCBoYXZlIGEgc3BhY2UgaW4gdGhlIGRhdGEtZW1vdGlvbiBhdHRyaWJ1dGUgdmFsdWVcbiAgICAgIC8vIGJlY2F1c2UgdGhhdCBpbmRpY2F0ZXMgdGhhdCBpdCBpcyBhbiBFbW90aW9uIDExIHNlcnZlci1zaWRlIHJlbmRlcmVkIHN0eWxlIGVsZW1lbnRzXG4gICAgICAvLyB3aGlsZSB3ZSB3aWxsIGFscmVhZHkgaWdub3JlIEVtb3Rpb24gMTEgY2xpZW50LXNpZGUgaW5zZXJ0ZWQgc3R5bGVzIGJlY2F1c2Ugb2YgdGhlIDpub3QoW2RhdGEtc10pIHBhcnQgaW4gdGhlIHNlbGVjdG9yXG4gICAgICAvLyBFbW90aW9uIDEwIGNsaWVudC1zaWRlIGluc2VydGVkIHN0eWxlcyBkaWQgbm90IGhhdmUgZGF0YS1zIChidXQgaW1wb3J0YW50bHkgZGlkIG5vdCBoYXZlIGEgc3BhY2UgaW4gdGhlaXIgZGF0YS1lbW90aW9uIGF0dHJpYnV0ZXMpXG4gICAgICAvLyBzbyBjaGVja2luZyBmb3IgdGhlIHNwYWNlIGVuc3VyZXMgdGhhdCBsb2FkaW5nIEVtb3Rpb24gMTEgYWZ0ZXIgRW1vdGlvbiAxMCBoYXMgaW5zZXJ0ZWQgc29tZSBzdHlsZXNcbiAgICAgIC8vIHdpbGwgbm90IHJlc3VsdCBpbiB0aGUgRW1vdGlvbiAxMCBzdHlsZXMgYmVpbmcgZGVzdHJveWVkXG4gICAgICB2YXIgZGF0YUVtb3Rpb25BdHRyaWJ1dGUgPSBub2RlLmdldEF0dHJpYnV0ZSgnZGF0YS1lbW90aW9uJyk7XG5cbiAgICAgIGlmIChkYXRhRW1vdGlvbkF0dHJpYnV0ZS5pbmRleE9mKCcgJykgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobm9kZSk7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZSgnZGF0YS1zJywgJycpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIHN0eWxpc1BsdWdpbnMgPSBvcHRpb25zLnN0eWxpc1BsdWdpbnMgfHwgZGVmYXVsdFN0eWxpc1BsdWdpbnM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyAkRmxvd0ZpeE1lXG4gICAgaWYgKC9bXmEtei1dLy50ZXN0KGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtb3Rpb24ga2V5IG11c3Qgb25seSBjb250YWluIGxvd2VyIGNhc2UgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgYW5kIC0gYnV0IFxcXCJcIiArIGtleSArIFwiXFxcIiB3YXMgcGFzc2VkXCIpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpbnNlcnRlZCA9IHt9O1xuICB2YXIgY29udGFpbmVyO1xuICB2YXIgbm9kZXNUb0h5ZHJhdGUgPSBbXTtcblxuICB7XG4gICAgY29udGFpbmVyID0gb3B0aW9ucy5jb250YWluZXIgfHwgZG9jdW1lbnQuaGVhZDtcbiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCAvLyB0aGlzIG1lYW5zIHdlIHdpbGwgaWdub3JlIGVsZW1lbnRzIHdoaWNoIGRvbid0IGhhdmUgYSBzcGFjZSBpbiB0aGVtIHdoaWNoXG4gICAgLy8gbWVhbnMgdGhhdCB0aGUgc3R5bGUgZWxlbWVudHMgd2UncmUgbG9va2luZyBhdCBhcmUgb25seSBFbW90aW9uIDExIHNlcnZlci1yZW5kZXJlZCBzdHlsZSBlbGVtZW50c1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzdHlsZVtkYXRhLWVtb3Rpb25ePVxcXCJcIiArIGtleSArIFwiIFxcXCJdXCIpLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgdmFyIGF0dHJpYiA9IG5vZGUuZ2V0QXR0cmlidXRlKFwiZGF0YS1lbW90aW9uXCIpLnNwbGl0KCcgJyk7IC8vICRGbG93Rml4TWVcblxuICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhdHRyaWIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaW5zZXJ0ZWRbYXR0cmliW2ldXSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIG5vZGVzVG9IeWRyYXRlLnB1c2gobm9kZSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIgX2luc2VydDtcblxuICB2YXIgb21uaXByZXNlbnRQbHVnaW5zID0gW2NvbXBhdCwgcmVtb3ZlTGFiZWxdO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgb21uaXByZXNlbnRQbHVnaW5zLnB1c2goY3JlYXRlVW5zYWZlU2VsZWN0b3JzQWxhcm0oe1xuICAgICAgZ2V0IGNvbXBhdCgpIHtcbiAgICAgICAgcmV0dXJuIGNhY2hlLmNvbXBhdDtcbiAgICAgIH1cblxuICAgIH0pLCBpbmNvcnJlY3RJbXBvcnRBbGFybSk7XG4gIH1cblxuICB7XG4gICAgdmFyIGN1cnJlbnRTaGVldDtcbiAgICB2YXIgZmluYWxpemluZ1BsdWdpbnMgPSBbc3RyaW5naWZ5LCBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgIGlmICghZWxlbWVudC5yb290KSB7XG4gICAgICAgIGlmIChlbGVtZW50W1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgY3VycmVudFNoZWV0Lmluc2VydChlbGVtZW50W1wicmV0dXJuXCJdKTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LnZhbHVlICYmIGVsZW1lbnQudHlwZSAhPT0gQ09NTUVOVCkge1xuICAgICAgICAgIC8vIGluc2VydCBlbXB0eSBydWxlIGluIG5vbi1wcm9kdWN0aW9uIGVudmlyb25tZW50c1xuICAgICAgICAgIC8vIHNvIEBlbW90aW9uL2plc3QgY2FuIGdyYWIgYGtleWAgZnJvbSB0aGUgKEpTKURPTSBmb3IgY2FjaGVzIHdpdGhvdXQgYW55IHJ1bGVzIGluc2VydGVkIHlldFxuICAgICAgICAgIGN1cnJlbnRTaGVldC5pbnNlcnQoZWxlbWVudC52YWx1ZSArIFwie31cIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IDogcnVsZXNoZWV0KGZ1bmN0aW9uIChydWxlKSB7XG4gICAgICBjdXJyZW50U2hlZXQuaW5zZXJ0KHJ1bGUpO1xuICAgIH0pXTtcbiAgICB2YXIgc2VyaWFsaXplciA9IG1pZGRsZXdhcmUob21uaXByZXNlbnRQbHVnaW5zLmNvbmNhdChzdHlsaXNQbHVnaW5zLCBmaW5hbGl6aW5nUGx1Z2lucykpO1xuXG4gICAgdmFyIHN0eWxpcyA9IGZ1bmN0aW9uIHN0eWxpcyhzdHlsZXMpIHtcbiAgICAgIHJldHVybiBzZXJpYWxpemUoY29tcGlsZShzdHlsZXMpLCBzZXJpYWxpemVyKTtcbiAgICB9O1xuXG4gICAgX2luc2VydCA9IGZ1bmN0aW9uIGluc2VydChzZWxlY3Rvciwgc2VyaWFsaXplZCwgc2hlZXQsIHNob3VsZENhY2hlKSB7XG4gICAgICBjdXJyZW50U2hlZXQgPSBzaGVldDtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc2VyaWFsaXplZC5tYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjdXJyZW50U2hlZXQgPSB7XG4gICAgICAgICAgaW5zZXJ0OiBmdW5jdGlvbiBpbnNlcnQocnVsZSkge1xuICAgICAgICAgICAgc2hlZXQuaW5zZXJ0KHJ1bGUgKyBzZXJpYWxpemVkLm1hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBzdHlsaXMoc2VsZWN0b3IgPyBzZWxlY3RvciArIFwie1wiICsgc2VyaWFsaXplZC5zdHlsZXMgKyBcIn1cIiA6IHNlcmlhbGl6ZWQuc3R5bGVzKTtcblxuICAgICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICAgIGNhY2hlLmluc2VydGVkW3NlcmlhbGl6ZWQubmFtZV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB2YXIgY2FjaGUgPSB7XG4gICAga2V5OiBrZXksXG4gICAgc2hlZXQ6IG5ldyBTdHlsZVNoZWV0KHtcbiAgICAgIGtleToga2V5LFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXIsXG4gICAgICBub25jZTogb3B0aW9ucy5ub25jZSxcbiAgICAgIHNwZWVkeTogb3B0aW9ucy5zcGVlZHksXG4gICAgICBwcmVwZW5kOiBvcHRpb25zLnByZXBlbmQsXG4gICAgICBpbnNlcnRpb25Qb2ludDogb3B0aW9ucy5pbnNlcnRpb25Qb2ludFxuICAgIH0pLFxuICAgIG5vbmNlOiBvcHRpb25zLm5vbmNlLFxuICAgIGluc2VydGVkOiBpbnNlcnRlZCxcbiAgICByZWdpc3RlcmVkOiB7fSxcbiAgICBpbnNlcnQ6IF9pbnNlcnRcbiAgfTtcbiAgY2FjaGUuc2hlZXQuaHlkcmF0ZShub2Rlc1RvSHlkcmF0ZSk7XG4gIHJldHVybiBjYWNoZTtcbn07XG5cbmV4cG9ydCB7IGNyZWF0ZUNhY2hlIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7TVMsIE1PWiwgV0VCS0lULCBSVUxFU0VULCBLRVlGUkFNRVMsIERFQ0xBUkFUSU9OfSBmcm9tICcuL0VudW0uanMnXG5pbXBvcnQge21hdGNoLCBjaGFyYXQsIHN1YnN0ciwgc3RybGVuLCBzaXplb2YsIHJlcGxhY2UsIGNvbWJpbmV9IGZyb20gJy4vVXRpbGl0eS5qcydcbmltcG9ydCB7Y29weSwgdG9rZW5pemV9IGZyb20gJy4vVG9rZW5pemVyLmpzJ1xuaW1wb3J0IHtzZXJpYWxpemV9IGZyb20gJy4vU2VyaWFsaXplci5qcydcbmltcG9ydCB7cHJlZml4fSBmcm9tICcuL1ByZWZpeGVyLmpzJ1xuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb25bXX0gY29sbGVjdGlvblxuICogQHJldHVybiB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtaWRkbGV3YXJlIChjb2xsZWN0aW9uKSB7XG5cdHZhciBsZW5ndGggPSBzaXplb2YoY29sbGVjdGlvbilcblxuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQsIGluZGV4LCBjaGlsZHJlbiwgY2FsbGJhY2spIHtcblx0XHR2YXIgb3V0cHV0ID0gJydcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspXG5cdFx0XHRvdXRwdXQgKz0gY29sbGVjdGlvbltpXShlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB8fCAnJ1xuXG5cdFx0cmV0dXJuIG91dHB1dFxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNoZWV0IChjYWxsYmFjaykge1xuXHRyZXR1cm4gZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0XHRpZiAoIWVsZW1lbnQucm9vdClcblx0XHRcdGlmIChlbGVtZW50ID0gZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRcdGNhbGxiYWNrKGVsZW1lbnQpXG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdFtdfSBjaGlsZHJlblxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeGVyIChlbGVtZW50LCBpbmRleCwgY2hpbGRyZW4sIGNhbGxiYWNrKSB7XG5cdGlmIChlbGVtZW50Lmxlbmd0aCA+IC0xKVxuXHRcdGlmICghZWxlbWVudC5yZXR1cm4pXG5cdFx0XHRzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuXHRcdFx0XHRjYXNlIERFQ0xBUkFUSU9OOiBlbGVtZW50LnJldHVybiA9IHByZWZpeChlbGVtZW50LnZhbHVlLCBlbGVtZW50Lmxlbmd0aCwgY2hpbGRyZW4pXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGNhc2UgS0VZRlJBTUVTOlxuXHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW2NvcHkoZWxlbWVudCwge3ZhbHVlOiByZXBsYWNlKGVsZW1lbnQudmFsdWUsICdAJywgJ0AnICsgV0VCS0lUKX0pXSwgY2FsbGJhY2spXG5cdFx0XHRcdGNhc2UgUlVMRVNFVDpcblx0XHRcdFx0XHRpZiAoZWxlbWVudC5sZW5ndGgpXG5cdFx0XHRcdFx0XHRyZXR1cm4gY29tYmluZShlbGVtZW50LnByb3BzLCBmdW5jdGlvbiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0c3dpdGNoIChtYXRjaCh2YWx1ZSwgLyg6OnBsYWNcXHcrfDpyZWFkLVxcdyspLykpIHtcblx0XHRcdFx0XHRcdFx0XHQvLyA6cmVhZC0ob25seXx3cml0ZSlcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6cmVhZC1vbmx5JzogY2FzZSAnOnJlYWQtd3JpdGUnOlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHNlcmlhbGl6ZShbY29weShlbGVtZW50LCB7cHJvcHM6IFtyZXBsYWNlKHZhbHVlLCAvOihyZWFkLVxcdyspLywgJzonICsgTU9aICsgJyQxJyldfSldLCBjYWxsYmFjaylcblx0XHRcdFx0XHRcdFx0XHQvLyA6cGxhY2Vob2xkZXJcblx0XHRcdFx0XHRcdFx0XHRjYXNlICc6OnBsYWNlaG9sZGVyJzpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzZXJpYWxpemUoW1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIFdFQktJVCArICdpbnB1dC0kMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sICc6JyArIE1PWiArICckMScpXX0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb3B5KGVsZW1lbnQsIHtwcm9wczogW3JlcGxhY2UodmFsdWUsIC86KHBsYWNcXHcrKS8sIE1TICsgJ2lucHV0LSQxJyldfSlcblx0XHRcdFx0XHRcdFx0XHRcdF0sIGNhbGxiYWNrKVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuICcnXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7b2JqZWN0W119IGNoaWxkcmVuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBuYW1lc3BhY2UgKGVsZW1lbnQpIHtcblx0c3dpdGNoIChlbGVtZW50LnR5cGUpIHtcblx0XHRjYXNlIFJVTEVTRVQ6XG5cdFx0XHRlbGVtZW50LnByb3BzID0gZWxlbWVudC5wcm9wcy5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiBjb21iaW5lKHRva2VuaXplKHZhbHVlKSwgZnVuY3Rpb24gKHZhbHVlLCBpbmRleCwgY2hpbGRyZW4pIHtcblx0XHRcdFx0XHRzd2l0Y2ggKGNoYXJhdCh2YWx1ZSwgMCkpIHtcblx0XHRcdFx0XHRcdC8vIFxcZlxuXHRcdFx0XHRcdFx0Y2FzZSAxMjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHN1YnN0cih2YWx1ZSwgMSwgc3RybGVuKHZhbHVlKSlcblx0XHRcdFx0XHRcdC8vIFxcMCAoICsgPiB+XG5cdFx0XHRcdFx0XHRjYXNlIDA6IGNhc2UgNDA6IGNhc2UgNDM6IGNhc2UgNjI6IGNhc2UgMTI2OlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVcblx0XHRcdFx0XHRcdC8vIDpcblx0XHRcdFx0XHRcdGNhc2UgNTg6XG5cdFx0XHRcdFx0XHRcdGlmIChjaGlsZHJlblsrK2luZGV4XSA9PT0gJ2dsb2JhbCcpXG5cdFx0XHRcdFx0XHRcdFx0Y2hpbGRyZW5baW5kZXhdID0gJycsIGNoaWxkcmVuWysraW5kZXhdID0gJ1xcZicgKyBzdWJzdHIoY2hpbGRyZW5baW5kZXhdLCBpbmRleCA9IDEsIC0xKVxuXHRcdFx0XHRcdFx0Ly8gXFxzXG5cdFx0XHRcdFx0XHRjYXNlIDMyOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gaW5kZXggPT09IDEgPyAnJyA6IHZhbHVlXG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGluZGV4KSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSAwOiBlbGVtZW50ID0gdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBzaXplb2YoY2hpbGRyZW4pID4gMSA/ICcnIDogdmFsdWVcblx0XHRcdFx0XHRcdFx0XHRjYXNlIGluZGV4ID0gc2l6ZW9mKGNoaWxkcmVuKSAtIDE6IGNhc2UgMjpcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBpbmRleCA9PT0gMiA/IHZhbHVlICsgZWxlbWVudCArIGVsZW1lbnQgOiB2YWx1ZSArIGVsZW1lbnRcblx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHR9KVxuXHR9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLy8gSW5zcGlyZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL2dhcnljb3VydC9tdXJtdXJoYXNoLWpzXG4vLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYWFwcGxlYnkvc21oYXNoZXIvYmxvYi82MWEwNTMwZjI4Mjc3ZjJlODUwYmZjMzk2MDBjZTYxZDAyYjUxOGRlL3NyYy9NdXJtdXJIYXNoMi5jcHAjTDM3LUw4NlxuZnVuY3Rpb24gbXVybXVyMihzdHIpIHtcbiAgLy8gJ20nIGFuZCAncicgYXJlIG1peGluZyBjb25zdGFudHMgZ2VuZXJhdGVkIG9mZmxpbmUuXG4gIC8vIFRoZXkncmUgbm90IHJlYWxseSAnbWFnaWMnLCB0aGV5IGp1c3QgaGFwcGVuIHRvIHdvcmsgd2VsbC5cbiAgLy8gY29uc3QgbSA9IDB4NWJkMWU5OTU7XG4gIC8vIGNvbnN0IHIgPSAyNDtcbiAgLy8gSW5pdGlhbGl6ZSB0aGUgaGFzaFxuICB2YXIgaCA9IDA7IC8vIE1peCA0IGJ5dGVzIGF0IGEgdGltZSBpbnRvIHRoZSBoYXNoXG5cbiAgdmFyIGssXG4gICAgICBpID0gMCxcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XG5cbiAgZm9yICg7IGxlbiA+PSA0OyArK2ksIGxlbiAtPSA0KSB7XG4gICAgayA9IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZiB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgOCB8IChzdHIuY2hhckNvZGVBdCgrK2kpICYgMHhmZikgPDwgMTYgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4ZmYpIDw8IDI0O1xuICAgIGsgPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpO1xuICAgIGsgXj1cbiAgICAvKiBrID4+PiByOiAqL1xuICAgIGsgPj4+IDI0O1xuICAgIGggPVxuICAgIC8qIE1hdGguaW11bChrLCBtKTogKi9cbiAgICAoayAmIDB4ZmZmZikgKiAweDViZDFlOTk1ICsgKChrID4+PiAxNikgKiAweGU5OTUgPDwgMTYpIF5cbiAgICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBIYW5kbGUgdGhlIGxhc3QgZmV3IGJ5dGVzIG9mIHRoZSBpbnB1dCBhcnJheVxuXG5cbiAgc3dpdGNoIChsZW4pIHtcbiAgICBjYXNlIDM6XG4gICAgICBoIF49IChzdHIuY2hhckNvZGVBdChpICsgMikgJiAweGZmKSA8PCAxNjtcblxuICAgIGNhc2UgMjpcbiAgICAgIGggXj0gKHN0ci5jaGFyQ29kZUF0KGkgKyAxKSAmIDB4ZmYpIDw8IDg7XG5cbiAgICBjYXNlIDE6XG4gICAgICBoIF49IHN0ci5jaGFyQ29kZUF0KGkpICYgMHhmZjtcbiAgICAgIGggPVxuICAgICAgLyogTWF0aC5pbXVsKGgsIG0pOiAqL1xuICAgICAgKGggJiAweGZmZmYpICogMHg1YmQxZTk5NSArICgoaCA+Pj4gMTYpICogMHhlOTk1IDw8IDE2KTtcbiAgfSAvLyBEbyBhIGZldyBmaW5hbCBtaXhlcyBvZiB0aGUgaGFzaCB0byBlbnN1cmUgdGhlIGxhc3QgZmV3XG4gIC8vIGJ5dGVzIGFyZSB3ZWxsLWluY29ycG9yYXRlZC5cblxuXG4gIGggXj0gaCA+Pj4gMTM7XG4gIGggPVxuICAvKiBNYXRoLmltdWwoaCwgbSk6ICovXG4gIChoICYgMHhmZmZmKSAqIDB4NWJkMWU5OTUgKyAoKGggPj4+IDE2KSAqIDB4ZTk5NSA8PCAxNik7XG4gIHJldHVybiAoKGggXiBoID4+PiAxNSkgPj4+IDApLnRvU3RyaW5nKDM2KTtcbn1cblxuZXhwb3J0IHsgbXVybXVyMiBhcyBkZWZhdWx0IH07XG4iLCJ2YXIgdW5pdGxlc3NLZXlzID0ge1xuICBhbmltYXRpb25JdGVyYXRpb25Db3VudDogMSxcbiAgYXNwZWN0UmF0aW86IDEsXG4gIGJvcmRlckltYWdlT3V0c2V0OiAxLFxuICBib3JkZXJJbWFnZVNsaWNlOiAxLFxuICBib3JkZXJJbWFnZVdpZHRoOiAxLFxuICBib3hGbGV4OiAxLFxuICBib3hGbGV4R3JvdXA6IDEsXG4gIGJveE9yZGluYWxHcm91cDogMSxcbiAgY29sdW1uQ291bnQ6IDEsXG4gIGNvbHVtbnM6IDEsXG4gIGZsZXg6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4UG9zaXRpdmU6IDEsXG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhOZWdhdGl2ZTogMSxcbiAgZmxleE9yZGVyOiAxLFxuICBncmlkUm93OiAxLFxuICBncmlkUm93RW5kOiAxLFxuICBncmlkUm93U3BhbjogMSxcbiAgZ3JpZFJvd1N0YXJ0OiAxLFxuICBncmlkQ29sdW1uOiAxLFxuICBncmlkQ29sdW1uRW5kOiAxLFxuICBncmlkQ29sdW1uU3BhbjogMSxcbiAgZ3JpZENvbHVtblN0YXJ0OiAxLFxuICBtc0dyaWRSb3c6IDEsXG4gIG1zR3JpZFJvd1NwYW46IDEsXG4gIG1zR3JpZENvbHVtbjogMSxcbiAgbXNHcmlkQ29sdW1uU3BhbjogMSxcbiAgZm9udFdlaWdodDogMSxcbiAgbGluZUhlaWdodDogMSxcbiAgb3BhY2l0eTogMSxcbiAgb3JkZXI6IDEsXG4gIG9ycGhhbnM6IDEsXG4gIHRhYlNpemU6IDEsXG4gIHdpZG93czogMSxcbiAgekluZGV4OiAxLFxuICB6b29tOiAxLFxuICBXZWJraXRMaW5lQ2xhbXA6IDEsXG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IDEsXG4gIGZsb29kT3BhY2l0eTogMSxcbiAgc3RvcE9wYWNpdHk6IDEsXG4gIHN0cm9rZURhc2hhcnJheTogMSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDogMSxcbiAgc3Ryb2tlT3BhY2l0eTogMSxcbiAgc3Ryb2tlV2lkdGg6IDFcbn07XG5cbmV4cG9ydCB7IHVuaXRsZXNzS2V5cyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgaGFzaFN0cmluZyBmcm9tICdAZW1vdGlvbi9oYXNoJztcbmltcG9ydCB1bml0bGVzcyBmcm9tICdAZW1vdGlvbi91bml0bGVzcyc7XG5pbXBvcnQgbWVtb2l6ZSBmcm9tICdAZW1vdGlvbi9tZW1vaXplJztcblxudmFyIElMTEVHQUxfRVNDQVBFX1NFUVVFTkNFX0VSUk9SID0gXCJZb3UgaGF2ZSBpbGxlZ2FsIGVzY2FwZSBzZXF1ZW5jZSBpbiB5b3VyIHRlbXBsYXRlIGxpdGVyYWwsIG1vc3QgbGlrZWx5IGluc2lkZSBjb250ZW50J3MgcHJvcGVydHkgdmFsdWUuXFxuQmVjYXVzZSB5b3Ugd3JpdGUgeW91ciBDU1MgaW5zaWRlIGEgSmF2YVNjcmlwdCBzdHJpbmcgeW91IGFjdHVhbGx5IGhhdmUgdG8gZG8gZG91YmxlIGVzY2FwaW5nLCBzbyBmb3IgZXhhbXBsZSBcXFwiY29udGVudDogJ1xcXFwwMGQ3JztcXFwiIHNob3VsZCBiZWNvbWUgXFxcImNvbnRlbnQ6ICdcXFxcXFxcXDAwZDcnO1xcXCIuXFxuWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgdGhpcyBoZXJlOlxcbmh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL1RlbXBsYXRlX2xpdGVyYWxzI0VTMjAxOF9yZXZpc2lvbl9vZl9pbGxlZ2FsX2VzY2FwZV9zZXF1ZW5jZXNcIjtcbnZhciBVTkRFRklORURfQVNfT0JKRUNUX0tFWV9FUlJPUiA9IFwiWW91IGhhdmUgcGFzc2VkIGluIGZhbHN5IHZhbHVlIGFzIHN0eWxlIG9iamVjdCdzIGtleSAoY2FuIGhhcHBlbiB3aGVuIGluIGV4YW1wbGUgeW91IHBhc3MgdW5leHBvcnRlZCBjb21wb25lbnQgYXMgY29tcHV0ZWQga2V5KS5cIjtcbnZhciBoeXBoZW5hdGVSZWdleCA9IC9bQS1aXXxebXMvZztcbnZhciBhbmltYXRpb25SZWdleCA9IC9fRU1PXyhbXl9dKz8pXyhbXl0qPylfRU1PXy9nO1xuXG52YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IGZ1bmN0aW9uIGlzQ3VzdG9tUHJvcGVydHkocHJvcGVydHkpIHtcbiAgcmV0dXJuIHByb3BlcnR5LmNoYXJDb2RlQXQoMSkgPT09IDQ1O1xufTtcblxudmFyIGlzUHJvY2Vzc2FibGVWYWx1ZSA9IGZ1bmN0aW9uIGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJztcbn07XG5cbnZhciBwcm9jZXNzU3R5bGVOYW1lID0gLyogI19fUFVSRV9fICovbWVtb2l6ZShmdW5jdGlvbiAoc3R5bGVOYW1lKSB7XG4gIHJldHVybiBpc0N1c3RvbVByb3BlcnR5KHN0eWxlTmFtZSkgPyBzdHlsZU5hbWUgOiBzdHlsZU5hbWUucmVwbGFjZShoeXBoZW5hdGVSZWdleCwgJy0kJicpLnRvTG93ZXJDYXNlKCk7XG59KTtcblxudmFyIHByb2Nlc3NTdHlsZVZhbHVlID0gZnVuY3Rpb24gcHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSkge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoYW5pbWF0aW9uUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCwgcDEsIHAyKSB7XG4gICAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICAgIG5hbWU6IHAxLFxuICAgICAgICAgICAgICBzdHlsZXM6IHAyLFxuICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gcDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgfVxuXG4gIGlmICh1bml0bGVzc1trZXldICE9PSAxICYmICFpc0N1c3RvbVByb3BlcnR5KGtleSkgJiYgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB2YWx1ZSArICdweCc7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgY29udGVudFZhbHVlUGF0dGVybiA9IC8odmFyfGF0dHJ8Y291bnRlcnM/fHVybHxlbGVtZW50fCgoKHJlcGVhdGluZy0pPyhsaW5lYXJ8cmFkaWFsKSl8Y29uaWMpLWdyYWRpZW50KVxcKHwobm8tKT8ob3BlbnxjbG9zZSktcXVvdGUvO1xuICB2YXIgY29udGVudFZhbHVlcyA9IFsnbm9ybWFsJywgJ25vbmUnLCAnaW5pdGlhbCcsICdpbmhlcml0JywgJ3Vuc2V0J107XG4gIHZhciBvbGRQcm9jZXNzU3R5bGVWYWx1ZSA9IHByb2Nlc3NTdHlsZVZhbHVlO1xuICB2YXIgbXNQYXR0ZXJuID0gL14tbXMtLztcbiAgdmFyIGh5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xuICB2YXIgaHlwaGVuYXRlZENhY2hlID0ge307XG5cbiAgcHJvY2Vzc1N0eWxlVmFsdWUgPSBmdW5jdGlvbiBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSA9PT0gJ2NvbnRlbnQnKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyB8fCBjb250ZW50VmFsdWVzLmluZGV4T2YodmFsdWUpID09PSAtMSAmJiAhY29udGVudFZhbHVlUGF0dGVybi50ZXN0KHZhbHVlKSAmJiAodmFsdWUuY2hhckF0KDApICE9PSB2YWx1ZS5jaGFyQXQodmFsdWUubGVuZ3RoIC0gMSkgfHwgdmFsdWUuY2hhckF0KDApICE9PSAnXCInICYmIHZhbHVlLmNoYXJBdCgwKSAhPT0gXCInXCIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIllvdSBzZWVtIHRvIGJlIHVzaW5nIGEgdmFsdWUgZm9yICdjb250ZW50JyB3aXRob3V0IHF1b3RlcywgdHJ5IHJlcGxhY2luZyBpdCB3aXRoIGBjb250ZW50OiAnXFxcIlwiICsgdmFsdWUgKyBcIlxcXCInYFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJvY2Vzc2VkID0gb2xkUHJvY2Vzc1N0eWxlVmFsdWUoa2V5LCB2YWx1ZSk7XG5cbiAgICBpZiAocHJvY2Vzc2VkICE9PSAnJyAmJiAhaXNDdXN0b21Qcm9wZXJ0eShrZXkpICYmIGtleS5pbmRleE9mKCctJykgIT09IC0xICYmIGh5cGhlbmF0ZWRDYWNoZVtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGh5cGhlbmF0ZWRDYWNoZVtrZXldID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJVc2luZyBrZWJhYi1jYXNlIGZvciBjc3MgcHJvcGVydGllcyBpbiBvYmplY3RzIGlzIG5vdCBzdXBwb3J0ZWQuIERpZCB5b3UgbWVhbiBcIiArIGtleS5yZXBsYWNlKG1zUGF0dGVybiwgJ21zLScpLnJlcGxhY2UoaHlwaGVuUGF0dGVybiwgZnVuY3Rpb24gKHN0ciwgX2NoYXIpIHtcbiAgICAgICAgcmV0dXJuIF9jaGFyLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9KSArIFwiP1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcHJvY2Vzc2VkO1xuICB9O1xufVxuXG52YXIgbm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UgPSAnQ29tcG9uZW50IHNlbGVjdG9ycyBjYW4gb25seSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyArICdAZW1vdGlvbi9iYWJlbC1wbHVnaW4sIHRoZSBzd2MgRW1vdGlvbiBwbHVnaW4sIG9yIGFub3RoZXIgRW1vdGlvbi1hd2FyZSAnICsgJ2NvbXBpbGVyIHRyYW5zZm9ybS4nO1xuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBpbnRlcnBvbGF0aW9uKSB7XG4gIGlmIChpbnRlcnBvbGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBpZiAoaW50ZXJwb2xhdGlvbi5fX2Vtb3Rpb25fc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpbnRlcnBvbGF0aW9uLnRvU3RyaW5nKCkgPT09ICdOT19DT01QT05FTlRfU0VMRUNUT1InKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnRlcnBvbGF0aW9uO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlb2YgaW50ZXJwb2xhdGlvbikge1xuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAge1xuICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbi5hbmltID09PSAxKSB7XG4gICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgbmFtZTogaW50ZXJwb2xhdGlvbi5uYW1lLFxuICAgICAgICAgICAgc3R5bGVzOiBpbnRlcnBvbGF0aW9uLnN0eWxlcyxcbiAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGludGVycG9sYXRpb24ubmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnRlcnBvbGF0aW9uLnN0eWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIG5leHQgPSBpbnRlcnBvbGF0aW9uLm5leHQ7XG5cbiAgICAgICAgICBpZiAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBub3QgdGhlIG1vc3QgZWZmaWNpZW50IHRoaW5nIGV2ZXIgYnV0IHRoaXMgaXMgYSBwcmV0dHkgcmFyZSBjYXNlXG4gICAgICAgICAgICAvLyBhbmQgdGhlcmUgd2lsbCBiZSB2ZXJ5IGZldyBpdGVyYXRpb25zIG9mIHRoaXMgZ2VuZXJhbGx5XG4gICAgICAgICAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuZXh0Lm5hbWUsXG4gICAgICAgICAgICAgICAgc3R5bGVzOiBuZXh0LnN0eWxlcyxcbiAgICAgICAgICAgICAgICBuZXh0OiBjdXJzb3JcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgbmV4dCA9IG5leHQubmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc3R5bGVzID0gaW50ZXJwb2xhdGlvbi5zdHlsZXMgKyBcIjtcIjtcblxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGludGVycG9sYXRpb24ubWFwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0eWxlcyArPSBpbnRlcnBvbGF0aW9uLm1hcDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gc3R5bGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pO1xuICAgICAgfVxuXG4gICAgY2FzZSAnZnVuY3Rpb24nOlxuICAgICAge1xuICAgICAgICBpZiAobWVyZ2VkUHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHZhciBwcmV2aW91c0N1cnNvciA9IGN1cnNvcjtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gaW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcyk7XG4gICAgICAgICAgY3Vyc29yID0gcHJldmlvdXNDdXJzb3I7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Z1bmN0aW9ucyB0aGF0IGFyZSBpbnRlcnBvbGF0ZWQgaW4gY3NzIGNhbGxzIHdpbGwgYmUgc3RyaW5naWZpZWQuXFxuJyArICdJZiB5b3Ugd2FudCB0byBoYXZlIGEgY3NzIGNhbGwgYmFzZWQgb24gcHJvcHMsIGNyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGNzcyBjYWxsIGxpa2UgdGhpc1xcbicgKyAnbGV0IGR5bmFtaWNTdHlsZSA9IChwcm9wcykgPT4gY3NzYGNvbG9yOiAke3Byb3BzLmNvbG9yfWBcXG4nICsgJ0l0IGNhbiBiZSBjYWxsZWQgZGlyZWN0bHkgd2l0aCBwcm9wcyBvciBpbnRlcnBvbGF0ZWQgaW4gYSBzdHlsZWQgY2FsbCBsaWtlIHRoaXNcXG4nICsgXCJsZXQgU29tZUNvbXBvbmVudCA9IHN0eWxlZCgnZGl2JylgJHtkeW5hbWljU3R5bGV9YFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhciBtYXRjaGVkID0gW107XG4gICAgICAgIHZhciByZXBsYWNlZCA9IGludGVycG9sYXRpb24ucmVwbGFjZShhbmltYXRpb25SZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBwMSwgcDIpIHtcbiAgICAgICAgICB2YXIgZmFrZVZhck5hbWUgPSBcImFuaW1hdGlvblwiICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgICAgbWF0Y2hlZC5wdXNoKFwiY29uc3QgXCIgKyBmYWtlVmFyTmFtZSArIFwiID0ga2V5ZnJhbWVzYFwiICsgcDIucmVwbGFjZSgvXkBrZXlmcmFtZXMgYW5pbWF0aW9uLVxcdysvLCAnJykgKyBcImBcIik7XG4gICAgICAgICAgcmV0dXJuIFwiJHtcIiArIGZha2VWYXJOYW1lICsgXCJ9XCI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChtYXRjaGVkLmxlbmd0aCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2BrZXlmcmFtZXNgIG91dHB1dCBnb3QgaW50ZXJwb2xhdGVkIGludG8gcGxhaW4gc3RyaW5nLCBwbGVhc2Ugd3JhcCBpdCB3aXRoIGBjc3NgLlxcblxcbicgKyAnSW5zdGVhZCBvZiBkb2luZyB0aGlzOlxcblxcbicgKyBbXS5jb25jYXQobWF0Y2hlZCwgW1wiYFwiICsgcmVwbGFjZWQgKyBcImBcIl0pLmpvaW4oJ1xcbicpICsgJ1xcblxcbllvdSBzaG91bGQgd3JhcCBpdCB3aXRoIGBjc3NgIGxpa2UgdGhpczpcXG5cXG4nICsgKFwiY3NzYFwiICsgcmVwbGFjZWQgKyBcImBcIikpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuICB9IC8vIGZpbmFsaXplIHN0cmluZyB2YWx1ZXMgKHJlZ3VsYXIgc3RyaW5ncyBhbmQgZnVuY3Rpb25zIGludGVycG9sYXRlZCBpbnRvIGNzcyBjYWxscylcblxuXG4gIGlmIChyZWdpc3RlcmVkID09IG51bGwpIHtcbiAgICByZXR1cm4gaW50ZXJwb2xhdGlvbjtcbiAgfVxuXG4gIHZhciBjYWNoZWQgPSByZWdpc3RlcmVkW2ludGVycG9sYXRpb25dO1xuICByZXR1cm4gY2FjaGVkICE9PSB1bmRlZmluZWQgPyBjYWNoZWQgOiBpbnRlcnBvbGF0aW9uO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdGcm9tT2JqZWN0KG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCBvYmopIHtcbiAgdmFyIHN0cmluZyA9ICcnO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkrKykge1xuICAgICAgc3RyaW5nICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9ialtpXSkgKyBcIjtcIjtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgX2tleSBpbiBvYmopIHtcbiAgICAgIHZhciB2YWx1ZSA9IG9ialtfa2V5XTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHJlZ2lzdGVyZWQgIT0gbnVsbCAmJiByZWdpc3RlcmVkW3ZhbHVlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3RyaW5nICs9IF9rZXkgKyBcIntcIiArIHJlZ2lzdGVyZWRbdmFsdWVdICsgXCJ9XCI7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKF9rZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShfa2V5LCB2YWx1ZSkgKyBcIjtcIjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKF9rZXkgPT09ICdOT19DT01QT05FTlRfU0VMRUNUT1InICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm9Db21wb25lbnRTZWxlY3Rvck1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHR5cGVvZiB2YWx1ZVswXSA9PT0gJ3N0cmluZycgJiYgKHJlZ2lzdGVyZWQgPT0gbnVsbCB8fCByZWdpc3RlcmVkW3ZhbHVlWzBdXSA9PT0gdW5kZWZpbmVkKSkge1xuICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCB2YWx1ZS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUodmFsdWVbX2ldKSkge1xuICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShfa2V5KSArIFwiOlwiICsgcHJvY2Vzc1N0eWxlVmFsdWUoX2tleSwgdmFsdWVbX2ldKSArIFwiO1wiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgaW50ZXJwb2xhdGVkID0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgdmFsdWUpO1xuXG4gICAgICAgICAgc3dpdGNoIChfa2V5KSB7XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb24nOlxuICAgICAgICAgICAgY2FzZSAnYW5pbWF0aW9uTmFtZSc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gcHJvY2Vzc1N0eWxlTmFtZShfa2V5KSArIFwiOlwiICsgaW50ZXJwb2xhdGVkICsgXCI7XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIF9rZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFVOREVGSU5FRF9BU19PQkpFQ1RfS0VZX0VSUk9SKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gX2tleSArIFwie1wiICsgaW50ZXJwb2xhdGVkICsgXCJ9XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RyaW5nO1xufVxuXG52YXIgbGFiZWxQYXR0ZXJuID0gL2xhYmVsOlxccyooW15cXHM7XFxue10rKVxccyooO3wkKS9nO1xudmFyIHNvdXJjZU1hcFBhdHRlcm47XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHNvdXJjZU1hcFBhdHRlcm4gPSAvXFwvXFwqI1xcc3NvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvblxcL2pzb247XFxTK1xccytcXCpcXC8vZztcbn0gLy8gdGhpcyBpcyB0aGUgY3Vyc29yIGZvciBrZXlmcmFtZXNcbi8vIGtleWZyYW1lcyBhcmUgc3RvcmVkIG9uIHRoZSBTZXJpYWxpemVkU3R5bGVzIG9iamVjdCBhcyBhIGxpbmtlZCBsaXN0XG5cblxudmFyIGN1cnNvcjtcbnZhciBzZXJpYWxpemVTdHlsZXMgPSBmdW5jdGlvbiBzZXJpYWxpemVTdHlsZXMoYXJncywgcmVnaXN0ZXJlZCwgbWVyZ2VkUHJvcHMpIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxICYmIHR5cGVvZiBhcmdzWzBdID09PSAnb2JqZWN0JyAmJiBhcmdzWzBdICE9PSBudWxsICYmIGFyZ3NbMF0uc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gYXJnc1swXTtcbiAgfVxuXG4gIHZhciBzdHJpbmdNb2RlID0gdHJ1ZTtcbiAgdmFyIHN0eWxlcyA9ICcnO1xuICBjdXJzb3IgPSB1bmRlZmluZWQ7XG4gIHZhciBzdHJpbmdzID0gYXJnc1swXTtcblxuICBpZiAoc3RyaW5ncyA9PSBudWxsIHx8IHN0cmluZ3MucmF3ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdHJpbmdNb2RlID0gZmFsc2U7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIHN0cmluZ3MpO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0cmluZ3NbMF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc29sZS5lcnJvcihJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUik7XG4gICAgfVxuXG4gICAgc3R5bGVzICs9IHN0cmluZ3NbMF07XG4gIH0gLy8gd2Ugc3RhcnQgYXQgMSBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIGZpcnN0IGFyZ1xuXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgc3R5bGVzICs9IGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGFyZ3NbaV0pO1xuXG4gICAgaWYgKHN0cmluZ01vZGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHN0cmluZ3NbaV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKElMTEVHQUxfRVNDQVBFX1NFUVVFTkNFX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgc3R5bGVzICs9IHN0cmluZ3NbaV07XG4gICAgfVxuICB9XG5cbiAgdmFyIHNvdXJjZU1hcDtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHN0eWxlcyA9IHN0eWxlcy5yZXBsYWNlKHNvdXJjZU1hcFBhdHRlcm4sIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgc291cmNlTWFwID0gbWF0Y2g7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSk7XG4gIH0gLy8gdXNpbmcgYSBnbG9iYWwgcmVnZXggd2l0aCAuZXhlYyBpcyBzdGF0ZWZ1bCBzbyBsYXN0SW5kZXggaGFzIHRvIGJlIHJlc2V0IGVhY2ggdGltZVxuXG5cbiAgbGFiZWxQYXR0ZXJuLmxhc3RJbmRleCA9IDA7XG4gIHZhciBpZGVudGlmaWVyTmFtZSA9ICcnO1xuICB2YXIgbWF0Y2g7IC8vIGh0dHBzOi8vZXNiZW5jaC5jb20vYmVuY2gvNWI4MDljMmNmMjk0OTgwMGEwZjYxZmI1XG5cbiAgd2hpbGUgKChtYXRjaCA9IGxhYmVsUGF0dGVybi5leGVjKHN0eWxlcykpICE9PSBudWxsKSB7XG4gICAgaWRlbnRpZmllck5hbWUgKz0gJy0nICsgLy8gJEZsb3dGaXhNZSB3ZSBrbm93IGl0J3Mgbm90IG51bGxcbiAgICBtYXRjaFsxXTtcbiAgfVxuXG4gIHZhciBuYW1lID0gaGFzaFN0cmluZyhzdHlsZXMpICsgaWRlbnRpZmllck5hbWU7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyAkRmxvd0ZpeE1lIFNlcmlhbGl6ZWRTdHlsZXMgdHlwZSBkb2Vzbid0IGhhdmUgdG9TdHJpbmcgcHJvcGVydHkgKGFuZCB3ZSBkb24ndCB3YW50IHRvIGFkZCBpdClcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIHN0eWxlczogc3R5bGVzLFxuICAgICAgbWFwOiBzb3VyY2VNYXAsXG4gICAgICBuZXh0OiBjdXJzb3IsXG4gICAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBcIllvdSBoYXZlIHRyaWVkIHRvIHN0cmluZ2lmeSBvYmplY3QgcmV0dXJuZWQgZnJvbSBgY3NzYCBmdW5jdGlvbi4gSXQgaXNuJ3Qgc3VwcG9zZWQgdG8gYmUgdXNlZCBkaXJlY3RseSAoZS5nLiBhcyB2YWx1ZSBvZiB0aGUgYGNsYXNzTmFtZWAgcHJvcCksIGJ1dCByYXRoZXIgaGFuZGVkIHRvIGVtb3Rpb24gc28gaXQgY2FuIGhhbmRsZSBpdCAoZS5nLiBhcyB2YWx1ZSBvZiBgY3NzYCBwcm9wKS5cIjtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHN0eWxlczogc3R5bGVzLFxuICAgIG5leHQ6IGN1cnNvclxuICB9O1xufTtcblxuZXhwb3J0IHsgc2VyaWFsaXplU3R5bGVzIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbnZhciBzeW5jRmFsbGJhY2sgPSBmdW5jdGlvbiBzeW5jRmFsbGJhY2soY3JlYXRlKSB7XG4gIHJldHVybiBjcmVhdGUoKTtcbn07XG5cbnZhciB1c2VJbnNlcnRpb25FZmZlY3QgPSBSZWFjdFsndXNlSW5zZXJ0aW9uJyArICdFZmZlY3QnXSA/IFJlYWN0Wyd1c2VJbnNlcnRpb24nICsgJ0VmZmVjdCddIDogZmFsc2U7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayA9IHVzZUluc2VydGlvbkVmZmVjdCB8fCBzeW5jRmFsbGJhY2s7XG52YXIgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrID0gdXNlSW5zZXJ0aW9uRWZmZWN0IHx8IFJlYWN0LnVzZUxheW91dEVmZmVjdDtcblxuZXhwb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjaywgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrIH07XG4iLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0LCBmb3J3YXJkUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZUNhY2hlIGZyb20gJ0BlbW90aW9uL2NhY2hlJztcbmltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCB3ZWFrTWVtb2l6ZSBmcm9tICdAZW1vdGlvbi93ZWFrLW1lbW9pemUnO1xuaW1wb3J0IGhvaXN0Tm9uUmVhY3RTdGF0aWNzIGZyb20gJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgeyBnZXRSZWdpc3RlcmVkU3R5bGVzLCByZWdpc3RlclN0eWxlcywgaW5zZXJ0U3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vdXRpbHMnO1xuaW1wb3J0IHsgc2VyaWFsaXplU3R5bGVzIH0gZnJvbSAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCB7IHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5cbnZhciBpc0Jyb3dzZXIgPSBcIm9iamVjdFwiICE9PSAndW5kZWZpbmVkJztcbnZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG52YXIgRW1vdGlvbkNhY2hlQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoIC8vIHdlJ3JlIGRvaW5nIHRoaXMgdG8gYXZvaWQgcHJlY29uc3RydWN0J3MgZGVhZCBjb2RlIGVsaW1pbmF0aW9uIGluIHRoaXMgb25lIGNhc2Vcbi8vIGJlY2F1c2UgdGhpcyBtb2R1bGUgaXMgcHJpbWFyaWx5IGludGVuZGVkIGZvciB0aGUgYnJvd3NlciBhbmQgbm9kZVxuLy8gYnV0IGl0J3MgYWxzbyByZXF1aXJlZCBpbiByZWFjdCBuYXRpdmUgYW5kIHNpbWlsYXIgZW52aXJvbm1lbnRzIHNvbWV0aW1lc1xuLy8gYW5kIHdlIGNvdWxkIGhhdmUgYSBzcGVjaWFsIGJ1aWxkIGp1c3QgZm9yIHRoYXRcbi8vIGJ1dCB0aGlzIGlzIG11Y2ggZWFzaWVyIGFuZCB0aGUgbmF0aXZlIHBhY2thZ2VzXG4vLyBtaWdodCB1c2UgYSBkaWZmZXJlbnQgdGhlbWUgY29udGV4dCBpbiB0aGUgZnV0dXJlIGFueXdheVxudHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyA/IC8qICNfX1BVUkVfXyAqL2NyZWF0ZUNhY2hlKHtcbiAga2V5OiAnY3NzJ1xufSkgOiBudWxsKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgRW1vdGlvbkNhY2hlQ29udGV4dC5kaXNwbGF5TmFtZSA9ICdFbW90aW9uQ2FjaGVDb250ZXh0Jztcbn1cblxudmFyIENhY2hlUHJvdmlkZXIgPSBFbW90aW9uQ2FjaGVDb250ZXh0LlByb3ZpZGVyO1xudmFyIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHVzZUVtb3Rpb25DYWNoZSgpIHtcbiAgcmV0dXJuIHVzZUNvbnRleHQoRW1vdGlvbkNhY2hlQ29udGV4dCk7XG59O1xuXG52YXIgd2l0aEVtb3Rpb25DYWNoZSA9IGZ1bmN0aW9uIHdpdGhFbW90aW9uQ2FjaGUoZnVuYykge1xuICAvLyAkRmxvd0ZpeE1lXG4gIHJldHVybiAvKiNfX1BVUkVfXyovZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICAgIC8vIHRoZSBjYWNoZSB3aWxsIG5ldmVyIGJlIG51bGwgaW4gdGhlIGJyb3dzZXJcbiAgICB2YXIgY2FjaGUgPSB1c2VDb250ZXh0KEVtb3Rpb25DYWNoZUNvbnRleHQpO1xuICAgIHJldHVybiBmdW5jKHByb3BzLCBjYWNoZSwgcmVmKTtcbiAgfSk7XG59O1xuXG5pZiAoIWlzQnJvd3Nlcikge1xuICB3aXRoRW1vdGlvbkNhY2hlID0gZnVuY3Rpb24gd2l0aEVtb3Rpb25DYWNoZShmdW5jKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwcm9wcykge1xuICAgICAgdmFyIGNhY2hlID0gdXNlQ29udGV4dChFbW90aW9uQ2FjaGVDb250ZXh0KTtcblxuICAgICAgaWYgKGNhY2hlID09PSBudWxsKSB7XG4gICAgICAgIC8vIHllcywgd2UncmUgcG90ZW50aWFsbHkgY3JlYXRpbmcgdGhpcyBvbiBldmVyeSByZW5kZXJcbiAgICAgICAgLy8gaXQgZG9lc24ndCBhY3R1YWxseSBtYXR0ZXIgdGhvdWdoIHNpbmNlIGl0J3Mgb25seSBvbiB0aGUgc2VydmVyXG4gICAgICAgIC8vIHNvIHRoZXJlIHdpbGwgb25seSBldmVyeSBiZSBhIHNpbmdsZSByZW5kZXJcbiAgICAgICAgLy8gdGhhdCBjb3VsZCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSBiZWNhdXNlIG9mIHN1c3BlbnNlIGFuZCBldGMuIGJ1dCBmb3Igbm93LFxuICAgICAgICAvLyB0aGlzIHdvcmtzIGFuZCBpIGRvbid0IHdhbnQgdG8gb3B0aW1pc2UgZm9yIGEgZnV0dXJlIHRoaW5nIHRoYXQgd2UgYXJlbid0IHN1cmUgYWJvdXRcbiAgICAgICAgY2FjaGUgPSBjcmVhdGVDYWNoZSh7XG4gICAgICAgICAga2V5OiAnY3NzJ1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEVtb3Rpb25DYWNoZUNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgICB2YWx1ZTogY2FjaGVcbiAgICAgICAgfSwgZnVuYyhwcm9wcywgY2FjaGUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmdW5jKHByb3BzLCBjYWNoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfTtcbn1cblxudmFyIFRoZW1lQ29udGV4dCA9IC8qICNfX1BVUkVfXyAqL1JlYWN0LmNyZWF0ZUNvbnRleHQoe30pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBUaGVtZUNvbnRleHQuZGlzcGxheU5hbWUgPSAnRW1vdGlvblRoZW1lQ29udGV4dCc7XG59XG5cbnZhciB1c2VUaGVtZSA9IGZ1bmN0aW9uIHVzZVRoZW1lKCkge1xuICByZXR1cm4gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xufTtcblxudmFyIGdldFRoZW1lID0gZnVuY3Rpb24gZ2V0VGhlbWUob3V0ZXJUaGVtZSwgdGhlbWUpIHtcbiAgaWYgKHR5cGVvZiB0aGVtZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciBtZXJnZWRUaGVtZSA9IHRoZW1lKG91dGVyVGhlbWUpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgKG1lcmdlZFRoZW1lID09IG51bGwgfHwgdHlwZW9mIG1lcmdlZFRoZW1lICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KG1lcmdlZFRoZW1lKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW1RoZW1lUHJvdmlkZXJdIFBsZWFzZSByZXR1cm4gYW4gb2JqZWN0IGZyb20geW91ciB0aGVtZSBmdW5jdGlvbiwgaS5lLiB0aGVtZT17KCkgPT4gKHt9KX0hJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlZFRoZW1lO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgKHRoZW1lID09IG51bGwgfHwgdHlwZW9mIHRoZW1lICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHRoZW1lKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tUaGVtZVByb3ZpZGVyXSBQbGVhc2UgbWFrZSB5b3VyIHRoZW1lIHByb3AgYSBwbGFpbiBvYmplY3QnKTtcbiAgfVxuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0ZXJUaGVtZSwgdGhlbWUpO1xufTtcblxudmFyIGNyZWF0ZUNhY2hlV2l0aFRoZW1lID0gLyogI19fUFVSRV9fICovd2Vha01lbW9pemUoZnVuY3Rpb24gKG91dGVyVGhlbWUpIHtcbiAgcmV0dXJuIHdlYWtNZW1vaXplKGZ1bmN0aW9uICh0aGVtZSkge1xuICAgIHJldHVybiBnZXRUaGVtZShvdXRlclRoZW1lLCB0aGVtZSk7XG4gIH0pO1xufSk7XG52YXIgVGhlbWVQcm92aWRlciA9IGZ1bmN0aW9uIFRoZW1lUHJvdmlkZXIocHJvcHMpIHtcbiAgdmFyIHRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuXG4gIGlmIChwcm9wcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICB0aGVtZSA9IGNyZWF0ZUNhY2hlV2l0aFRoZW1lKHRoZW1lKShwcm9wcy50aGVtZSk7XG4gIH1cblxuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVGhlbWVDb250ZXh0LlByb3ZpZGVyLCB7XG4gICAgdmFsdWU6IHRoZW1lXG4gIH0sIHByb3BzLmNoaWxkcmVuKTtcbn07XG5mdW5jdGlvbiB3aXRoVGhlbWUoQ29tcG9uZW50KSB7XG4gIHZhciBjb21wb25lbnROYW1lID0gQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuXG4gIHZhciByZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIocHJvcHMsIHJlZikge1xuICAgIHZhciB0aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgICB0aGVtZTogdGhlbWUsXG4gICAgICByZWY6IHJlZlxuICAgIH0sIHByb3BzKSk7XG4gIH07IC8vICRGbG93Rml4TWVcblxuXG4gIHZhciBXaXRoVGhlbWUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihyZW5kZXIpO1xuICBXaXRoVGhlbWUuZGlzcGxheU5hbWUgPSBcIldpdGhUaGVtZShcIiArIGNvbXBvbmVudE5hbWUgKyBcIilcIjtcbiAgcmV0dXJuIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKFdpdGhUaGVtZSwgQ29tcG9uZW50KTtcbn1cblxudmFyIGdldExhc3RQYXJ0ID0gZnVuY3Rpb24gZ2V0TGFzdFBhcnQoZnVuY3Rpb25OYW1lKSB7XG4gIC8vIFRoZSBtYXRjaCBtYXkgYmUgc29tZXRoaW5nIGxpa2UgJ09iamVjdC5jcmVhdGVFbW90aW9uUHJvcHMnIG9yXG4gIC8vICdMb2FkZXIucHJvdG90eXBlLnJlbmRlcidcbiAgdmFyIHBhcnRzID0gZnVuY3Rpb25OYW1lLnNwbGl0KCcuJyk7XG4gIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbn07XG5cbnZhciBnZXRGdW5jdGlvbk5hbWVGcm9tU3RhY2tUcmFjZUxpbmUgPSBmdW5jdGlvbiBnZXRGdW5jdGlvbk5hbWVGcm9tU3RhY2tUcmFjZUxpbmUobGluZSkge1xuICAvLyBWOFxuICB2YXIgbWF0Y2ggPSAvXlxccythdFxccysoW0EtWmEtejAtOSQuXSspXFxzLy5leGVjKGxpbmUpO1xuICBpZiAobWF0Y2gpIHJldHVybiBnZXRMYXN0UGFydChtYXRjaFsxXSk7IC8vIFNhZmFyaSAvIEZpcmVmb3hcblxuICBtYXRjaCA9IC9eKFtBLVphLXowLTkkLl0rKUAvLmV4ZWMobGluZSk7XG4gIGlmIChtYXRjaCkgcmV0dXJuIGdldExhc3RQYXJ0KG1hdGNoWzFdKTtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbnZhciBpbnRlcm5hbFJlYWN0RnVuY3Rpb25OYW1lcyA9IC8qICNfX1BVUkVfXyAqL25ldyBTZXQoWydyZW5kZXJXaXRoSG9va3MnLCAncHJvY2Vzc0NoaWxkJywgJ2ZpbmlzaENsYXNzQ29tcG9uZW50JywgJ3JlbmRlclRvU3RyaW5nJ10pOyAvLyBUaGVzZSBpZGVudGlmaWVycyBjb21lIGZyb20gZXJyb3Igc3RhY2tzLCBzbyB0aGV5IGhhdmUgdG8gYmUgdmFsaWQgSlNcbi8vIGlkZW50aWZpZXJzLCB0aHVzIHdlIG9ubHkgbmVlZCB0byByZXBsYWNlIHdoYXQgaXMgYSB2YWxpZCBjaGFyYWN0ZXIgZm9yIEpTLFxuLy8gYnV0IG5vdCBmb3IgQ1NTLlxuXG52YXIgc2FuaXRpemVJZGVudGlmaWVyID0gZnVuY3Rpb24gc2FuaXRpemVJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgcmV0dXJuIGlkZW50aWZpZXIucmVwbGFjZSgvXFwkL2csICctJyk7XG59O1xuXG52YXIgZ2V0TGFiZWxGcm9tU3RhY2tUcmFjZSA9IGZ1bmN0aW9uIGdldExhYmVsRnJvbVN0YWNrVHJhY2Uoc3RhY2tUcmFjZSkge1xuICBpZiAoIXN0YWNrVHJhY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gIHZhciBsaW5lcyA9IHN0YWNrVHJhY2Uuc3BsaXQoJ1xcbicpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgZnVuY3Rpb25OYW1lID0gZ2V0RnVuY3Rpb25OYW1lRnJvbVN0YWNrVHJhY2VMaW5lKGxpbmVzW2ldKTsgLy8gVGhlIGZpcnN0IGxpbmUgb2YgVjggc3RhY2sgdHJhY2VzIGlzIGp1c3QgXCJFcnJvclwiXG5cbiAgICBpZiAoIWZ1bmN0aW9uTmFtZSkgY29udGludWU7IC8vIElmIHdlIHJlYWNoIG9uZSBvZiB0aGVzZSwgd2UgaGF2ZSBnb25lIHRvbyBmYXIgYW5kIHNob3VsZCBxdWl0XG5cbiAgICBpZiAoaW50ZXJuYWxSZWFjdEZ1bmN0aW9uTmFtZXMuaGFzKGZ1bmN0aW9uTmFtZSkpIGJyZWFrOyAvLyBUaGUgY29tcG9uZW50IG5hbWUgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIGluIHRoZSBzdGFjayB0aGF0IHN0YXJ0cyB3aXRoIGFuXG4gICAgLy8gdXBwZXJjYXNlIGxldHRlclxuXG4gICAgaWYgKC9eW0EtWl0vLnRlc3QoZnVuY3Rpb25OYW1lKSkgcmV0dXJuIHNhbml0aXplSWRlbnRpZmllcihmdW5jdGlvbk5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbnZhciB0eXBlUHJvcE5hbWUgPSAnX19FTU9USU9OX1RZUEVfUExFQVNFX0RPX05PVF9VU0VfXyc7XG52YXIgbGFiZWxQcm9wTmFtZSA9ICdfX0VNT1RJT05fTEFCRUxfUExFQVNFX0RPX05PVF9VU0VfXyc7XG52YXIgY3JlYXRlRW1vdGlvblByb3BzID0gZnVuY3Rpb24gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBwcm9wcy5jc3MgPT09ICdzdHJpbmcnICYmIC8vIGNoZWNrIGlmIHRoZXJlIGlzIGEgY3NzIGRlY2xhcmF0aW9uXG4gIHByb3BzLmNzcy5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3RyaW5ncyBhcmUgbm90IGFsbG93ZWQgYXMgY3NzIHByb3AgdmFsdWVzLCBwbGVhc2Ugd3JhcCBpdCBpbiBhIGNzcyB0ZW1wbGF0ZSBsaXRlcmFsIGZyb20gJ0BlbW90aW9uL3JlYWN0JyBsaWtlIHRoaXM6IGNzc2BcIiArIHByb3BzLmNzcyArIFwiYFwiKTtcbiAgfVxuXG4gIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpKSB7XG4gICAgICBuZXdQcm9wc1trZXldID0gcHJvcHNba2V5XTtcbiAgICB9XG4gIH1cblxuICBuZXdQcm9wc1t0eXBlUHJvcE5hbWVdID0gdHlwZTsgLy8gRm9yIHBlcmZvcm1hbmNlLCBvbmx5IGNhbGwgZ2V0TGFiZWxGcm9tU3RhY2tUcmFjZSBpbiBkZXZlbG9wbWVudCBhbmQgd2hlblxuICAvLyB0aGUgbGFiZWwgaGFzbid0IGFscmVhZHkgYmVlbiBjb21wdXRlZFxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICEhcHJvcHMuY3NzICYmICh0eXBlb2YgcHJvcHMuY3NzICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgcHJvcHMuY3NzLm5hbWUgIT09ICdzdHJpbmcnIHx8IHByb3BzLmNzcy5uYW1lLmluZGV4T2YoJy0nKSA9PT0gLTEpKSB7XG4gICAgdmFyIGxhYmVsID0gZ2V0TGFiZWxGcm9tU3RhY2tUcmFjZShuZXcgRXJyb3IoKS5zdGFjayk7XG4gICAgaWYgKGxhYmVsKSBuZXdQcm9wc1tsYWJlbFByb3BOYW1lXSA9IGxhYmVsO1xuICB9XG5cbiAgcmV0dXJuIG5ld1Byb3BzO1xufTtcblxudmFyIEluc2VydGlvbiA9IGZ1bmN0aW9uIEluc2VydGlvbihfcmVmKSB7XG4gIHZhciBjYWNoZSA9IF9yZWYuY2FjaGUsXG4gICAgICBzZXJpYWxpemVkID0gX3JlZi5zZXJpYWxpemVkLFxuICAgICAgaXNTdHJpbmdUYWcgPSBfcmVmLmlzU3RyaW5nVGFnO1xuICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB1c2VJbnNlcnRpb25FZmZlY3RBbHdheXNXaXRoU3luY0ZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZyk7XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIEVtb3Rpb24gPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUsIHJlZikge1xuICB2YXIgY3NzUHJvcCA9IHByb3BzLmNzczsgLy8gc28gdGhhdCB1c2luZyBgY3NzYCBmcm9tIGBlbW90aW9uYCBhbmQgcGFzc2luZyB0aGUgcmVzdWx0IHRvIHRoZSBjc3MgcHJvcCB3b3Jrc1xuICAvLyBub3QgcGFzc2luZyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBzZXJpYWxpemVTdHlsZXMgYmVjYXVzZSBpdCB3b3VsZFxuICAvLyBtYWtlIGNlcnRhaW4gYmFiZWwgb3B0aW1pc2F0aW9ucyBub3QgcG9zc2libGVcblxuICBpZiAodHlwZW9mIGNzc1Byb3AgPT09ICdzdHJpbmcnICYmIGNhY2hlLnJlZ2lzdGVyZWRbY3NzUHJvcF0gIT09IHVuZGVmaW5lZCkge1xuICAgIGNzc1Byb3AgPSBjYWNoZS5yZWdpc3RlcmVkW2Nzc1Byb3BdO1xuICB9XG5cbiAgdmFyIFdyYXBwZWRDb21wb25lbnQgPSBwcm9wc1t0eXBlUHJvcE5hbWVdO1xuICB2YXIgcmVnaXN0ZXJlZFN0eWxlcyA9IFtjc3NQcm9wXTtcbiAgdmFyIGNsYXNzTmFtZSA9ICcnO1xuXG4gIGlmICh0eXBlb2YgcHJvcHMuY2xhc3NOYW1lID09PSAnc3RyaW5nJykge1xuICAgIGNsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMoY2FjaGUucmVnaXN0ZXJlZCwgcmVnaXN0ZXJlZFN0eWxlcywgcHJvcHMuY2xhc3NOYW1lKTtcbiAgfSBlbHNlIGlmIChwcm9wcy5jbGFzc05hbWUgIT0gbnVsbCkge1xuICAgIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSArIFwiIFwiO1xuICB9XG5cbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMocmVnaXN0ZXJlZFN0eWxlcywgdW5kZWZpbmVkLCBSZWFjdC51c2VDb250ZXh0KFRoZW1lQ29udGV4dCkpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIHNlcmlhbGl6ZWQubmFtZS5pbmRleE9mKCctJykgPT09IC0xKSB7XG4gICAgdmFyIGxhYmVsRnJvbVN0YWNrID0gcHJvcHNbbGFiZWxQcm9wTmFtZV07XG5cbiAgICBpZiAobGFiZWxGcm9tU3RhY2spIHtcbiAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3NlcmlhbGl6ZWQsICdsYWJlbDonICsgbGFiZWxGcm9tU3RhY2sgKyAnOyddKTtcbiAgICB9XG4gIH1cblxuICBjbGFzc05hbWUgKz0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG4gIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gIGZvciAodmFyIGtleSBpbiBwcm9wcykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3BzLCBrZXkpICYmIGtleSAhPT0gJ2NzcycgJiYga2V5ICE9PSB0eXBlUHJvcE5hbWUgJiYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicgfHwga2V5ICE9PSBsYWJlbFByb3BOYW1lKSkge1xuICAgICAgbmV3UHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgfVxuICB9XG5cbiAgbmV3UHJvcHMucmVmID0gcmVmO1xuICBuZXdQcm9wcy5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoSW5zZXJ0aW9uLCB7XG4gICAgY2FjaGU6IGNhY2hlLFxuICAgIHNlcmlhbGl6ZWQ6IHNlcmlhbGl6ZWQsXG4gICAgaXNTdHJpbmdUYWc6IHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09PSAnc3RyaW5nJ1xuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoV3JhcHBlZENvbXBvbmVudCwgbmV3UHJvcHMpKTtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBFbW90aW9uLmRpc3BsYXlOYW1lID0gJ0Vtb3Rpb25Dc3NQcm9wSW50ZXJuYWwnO1xufVxuXG52YXIgRW1vdGlvbiQxID0gRW1vdGlvbjtcblxuZXhwb3J0IHsgQ2FjaGVQcm92aWRlciBhcyBDLCBFbW90aW9uJDEgYXMgRSwgVGhlbWVDb250ZXh0IGFzIFQsIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSBhcyBfLCBUaGVtZVByb3ZpZGVyIGFzIGEsIHdpdGhUaGVtZSBhcyBiLCBjcmVhdGVFbW90aW9uUHJvcHMgYXMgYywgaGFzT3duUHJvcGVydHkgYXMgaCwgaXNCcm93c2VyIGFzIGksIHVzZVRoZW1lIGFzIHUsIHdpdGhFbW90aW9uQ2FjaGUgYXMgdyB9O1xuIiwidmFyIGlzQnJvd3NlciA9IFwib2JqZWN0XCIgIT09ICd1bmRlZmluZWQnO1xuZnVuY3Rpb24gZ2V0UmVnaXN0ZXJlZFN0eWxlcyhyZWdpc3RlcmVkLCByZWdpc3RlcmVkU3R5bGVzLCBjbGFzc05hbWVzKSB7XG4gIHZhciByYXdDbGFzc05hbWUgPSAnJztcbiAgY2xhc3NOYW1lcy5zcGxpdCgnICcpLmZvckVhY2goZnVuY3Rpb24gKGNsYXNzTmFtZSkge1xuICAgIGlmIChyZWdpc3RlcmVkW2NsYXNzTmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVnaXN0ZXJlZFN0eWxlcy5wdXNoKHJlZ2lzdGVyZWRbY2xhc3NOYW1lXSArIFwiO1wiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmF3Q2xhc3NOYW1lICs9IGNsYXNzTmFtZSArIFwiIFwiO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByYXdDbGFzc05hbWU7XG59XG52YXIgcmVnaXN0ZXJTdHlsZXMgPSBmdW5jdGlvbiByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuXG4gIGlmICggLy8gd2Ugb25seSBuZWVkIHRvIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSByZWdpc3RlcmVkIGNhY2hlIGlmIHRoZVxuICAvLyBjbGFzcyBuYW1lIGNvdWxkIGJlIHVzZWQgZnVydGhlciBkb3duXG4gIC8vIHRoZSB0cmVlIGJ1dCBpZiBpdCdzIGEgc3RyaW5nIHRhZywgd2Uga25vdyBpdCB3b24ndFxuICAvLyBzbyB3ZSBkb24ndCBoYXZlIHRvIGFkZCBpdCB0byByZWdpc3RlcmVkIGNhY2hlLlxuICAvLyB0aGlzIGltcHJvdmVzIG1lbW9yeSB1c2FnZSBzaW5jZSB3ZSBjYW4gYXZvaWQgc3RvcmluZyB0aGUgd2hvbGUgc3R5bGUgc3RyaW5nXG4gIChpc1N0cmluZ1RhZyA9PT0gZmFsc2UgfHwgLy8gd2UgbmVlZCB0byBhbHdheXMgc3RvcmUgaXQgaWYgd2UncmUgaW4gY29tcGF0IG1vZGUgYW5kXG4gIC8vIGluIG5vZGUgc2luY2UgZW1vdGlvbi1zZXJ2ZXIgcmVsaWVzIG9uIHdoZXRoZXIgYSBzdHlsZSBpcyBpblxuICAvLyB0aGUgcmVnaXN0ZXJlZCBjYWNoZSB0byBrbm93IHdoZXRoZXIgYSBzdHlsZSBpcyBnbG9iYWwgb3Igbm90XG4gIC8vIGFsc28sIG5vdGUgdGhhdCB0aGlzIGNoZWNrIHdpbGwgYmUgZGVhZCBjb2RlIGVsaW1pbmF0ZWQgaW4gdGhlIGJyb3dzZXJcbiAgaXNCcm93c2VyID09PSBmYWxzZSApICYmIGNhY2hlLnJlZ2lzdGVyZWRbY2xhc3NOYW1lXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY2FjaGUucmVnaXN0ZXJlZFtjbGFzc05hbWVdID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gIH1cbn07XG52YXIgaW5zZXJ0U3R5bGVzID0gZnVuY3Rpb24gaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBpc1N0cmluZ1RhZykge1xuICByZWdpc3RlclN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB2YXIgY2xhc3NOYW1lID0gY2FjaGUua2V5ICsgXCItXCIgKyBzZXJpYWxpemVkLm5hbWU7XG5cbiAgaWYgKGNhY2hlLmluc2VydGVkW3NlcmlhbGl6ZWQubmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBjdXJyZW50ID0gc2VyaWFsaXplZDtcblxuICAgIGRvIHtcbiAgICAgIGNhY2hlLmluc2VydChzZXJpYWxpemVkID09PSBjdXJyZW50ID8gXCIuXCIgKyBjbGFzc05hbWUgOiAnJywgY3VycmVudCwgY2FjaGUuc2hlZXQsIHRydWUpO1xuXG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH0gd2hpbGUgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCk7XG4gIH1cbn07XG5cbmV4cG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMgfTtcbiIsInZhciB1bml0bGVzc0tleXMgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiAxLFxuICBhc3BlY3RSYXRpbzogMSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IDEsXG4gIGJvcmRlckltYWdlU2xpY2U6IDEsXG4gIGJvcmRlckltYWdlV2lkdGg6IDEsXG4gIGJveEZsZXg6IDEsXG4gIGJveEZsZXhHcm91cDogMSxcbiAgYm94T3JkaW5hbEdyb3VwOiAxLFxuICBjb2x1bW5Db3VudDogMSxcbiAgY29sdW1uczogMSxcbiAgZmxleDogMSxcbiAgZmxleEdyb3c6IDEsXG4gIGZsZXhQb3NpdGl2ZTogMSxcbiAgZmxleFNocmluazogMSxcbiAgZmxleE5lZ2F0aXZlOiAxLFxuICBmbGV4T3JkZXI6IDEsXG4gIGdyaWRSb3c6IDEsXG4gIGdyaWRSb3dFbmQ6IDEsXG4gIGdyaWRSb3dTcGFuOiAxLFxuICBncmlkUm93U3RhcnQ6IDEsXG4gIGdyaWRDb2x1bW46IDEsXG4gIGdyaWRDb2x1bW5FbmQ6IDEsXG4gIGdyaWRDb2x1bW5TcGFuOiAxLFxuICBncmlkQ29sdW1uU3RhcnQ6IDEsXG4gIG1zR3JpZFJvdzogMSxcbiAgbXNHcmlkUm93U3BhbjogMSxcbiAgbXNHcmlkQ29sdW1uOiAxLFxuICBtc0dyaWRDb2x1bW5TcGFuOiAxLFxuICBmb250V2VpZ2h0OiAxLFxuICBsaW5lSGVpZ2h0OiAxLFxuICBvcGFjaXR5OiAxLFxuICBvcmRlcjogMSxcbiAgb3JwaGFuczogMSxcbiAgdGFiU2l6ZTogMSxcbiAgd2lkb3dzOiAxLFxuICB6SW5kZXg6IDEsXG4gIHpvb206IDEsXG4gIFdlYmtpdExpbmVDbGFtcDogMSxcbiAgLy8gU1ZHLXJlbGF0ZWQgcHJvcGVydGllc1xuICBmaWxsT3BhY2l0eTogMSxcbiAgZmxvb2RPcGFjaXR5OiAxLFxuICBzdG9wT3BhY2l0eTogMSxcbiAgc3Ryb2tlRGFzaGFycmF5OiAxLFxuICBzdHJva2VEYXNob2Zmc2V0OiAxLFxuICBzdHJva2VNaXRlcmxpbWl0OiAxLFxuICBzdHJva2VPcGFjaXR5OiAxLFxuICBzdHJva2VXaWR0aDogMVxufTtcblxuZXhwb3J0IHsgdW5pdGxlc3NLZXlzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBoYXNoU3RyaW5nIGZyb20gJ0BlbW90aW9uL2hhc2gnO1xuaW1wb3J0IHVuaXRsZXNzIGZyb20gJ0BlbW90aW9uL3VuaXRsZXNzJztcbmltcG9ydCBtZW1vaXplIGZyb20gJ0BlbW90aW9uL21lbW9pemUnO1xuXG52YXIgSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0VfRVJST1IgPSBcIllvdSBoYXZlIGlsbGVnYWwgZXNjYXBlIHNlcXVlbmNlIGluIHlvdXIgdGVtcGxhdGUgbGl0ZXJhbCwgbW9zdCBsaWtlbHkgaW5zaWRlIGNvbnRlbnQncyBwcm9wZXJ0eSB2YWx1ZS5cXG5CZWNhdXNlIHlvdSB3cml0ZSB5b3VyIENTUyBpbnNpZGUgYSBKYXZhU2NyaXB0IHN0cmluZyB5b3UgYWN0dWFsbHkgaGF2ZSB0byBkbyBkb3VibGUgZXNjYXBpbmcsIHNvIGZvciBleGFtcGxlIFxcXCJjb250ZW50OiAnXFxcXDAwZDcnO1xcXCIgc2hvdWxkIGJlY29tZSBcXFwiY29udGVudDogJ1xcXFxcXFxcMDBkNyc7XFxcIi5cXG5Zb3UgY2FuIHJlYWQgbW9yZSBhYm91dCB0aGlzIGhlcmU6XFxuaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvVGVtcGxhdGVfbGl0ZXJhbHMjRVMyMDE4X3JldmlzaW9uX29mX2lsbGVnYWxfZXNjYXBlX3NlcXVlbmNlc1wiO1xudmFyIFVOREVGSU5FRF9BU19PQkpFQ1RfS0VZX0VSUk9SID0gXCJZb3UgaGF2ZSBwYXNzZWQgaW4gZmFsc3kgdmFsdWUgYXMgc3R5bGUgb2JqZWN0J3Mga2V5IChjYW4gaGFwcGVuIHdoZW4gaW4gZXhhbXBsZSB5b3UgcGFzcyB1bmV4cG9ydGVkIGNvbXBvbmVudCBhcyBjb21wdXRlZCBrZXkpLlwiO1xudmFyIGh5cGhlbmF0ZVJlZ2V4ID0gL1tBLVpdfF5tcy9nO1xudmFyIGFuaW1hdGlvblJlZ2V4ID0gL19FTU9fKFteX10rPylfKFteXSo/KV9FTU9fL2c7XG5cbnZhciBpc0N1c3RvbVByb3BlcnR5ID0gZnVuY3Rpb24gaXNDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eSkge1xuICByZXR1cm4gcHJvcGVydHkuY2hhckNvZGVBdCgxKSA9PT0gNDU7XG59O1xuXG52YXIgaXNQcm9jZXNzYWJsZVZhbHVlID0gZnVuY3Rpb24gaXNQcm9jZXNzYWJsZVZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nO1xufTtcblxudmFyIHByb2Nlc3NTdHlsZU5hbWUgPSAvKiAjX19QVVJFX18gKi9tZW1vaXplKGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGlzQ3VzdG9tUHJvcGVydHkoc3R5bGVOYW1lKSA/IHN0eWxlTmFtZSA6IHN0eWxlTmFtZS5yZXBsYWNlKGh5cGhlbmF0ZVJlZ2V4LCAnLSQmJykudG9Mb3dlckNhc2UoKTtcbn0pO1xuXG52YXIgcHJvY2Vzc1N0eWxlVmFsdWUgPSBmdW5jdGlvbiBwcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKSB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSAnYW5pbWF0aW9uJzpcbiAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUucmVwbGFjZShhbmltYXRpb25SZWdleCwgZnVuY3Rpb24gKG1hdGNoLCBwMSwgcDIpIHtcbiAgICAgICAgICAgIGN1cnNvciA9IHtcbiAgICAgICAgICAgICAgbmFtZTogcDEsXG4gICAgICAgICAgICAgIHN0eWxlczogcDIsXG4gICAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiBwMTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgaWYgKHVuaXRsZXNzW2tleV0gIT09IDEgJiYgIWlzQ3VzdG9tUHJvcGVydHkoa2V5KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSAwKSB7XG4gICAgcmV0dXJuIHZhbHVlICsgJ3B4JztcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBjb250ZW50VmFsdWVQYXR0ZXJuID0gLyh2YXJ8YXR0cnxjb3VudGVycz98dXJsfGVsZW1lbnR8KCgocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpKXxjb25pYyktZ3JhZGllbnQpXFwofChuby0pPyhvcGVufGNsb3NlKS1xdW90ZS87XG4gIHZhciBjb250ZW50VmFsdWVzID0gWydub3JtYWwnLCAnbm9uZScsICdpbml0aWFsJywgJ2luaGVyaXQnLCAndW5zZXQnXTtcbiAgdmFyIG9sZFByb2Nlc3NTdHlsZVZhbHVlID0gcHJvY2Vzc1N0eWxlVmFsdWU7XG4gIHZhciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuICB2YXIgaHlwaGVuUGF0dGVybiA9IC8tKC4pL2c7XG4gIHZhciBoeXBoZW5hdGVkQ2FjaGUgPSB7fTtcblxuICBwcm9jZXNzU3R5bGVWYWx1ZSA9IGZ1bmN0aW9uIHByb2Nlc3NTdHlsZVZhbHVlKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5ID09PSAnY29udGVudCcpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnIHx8IGNvbnRlbnRWYWx1ZXMuaW5kZXhPZih2YWx1ZSkgPT09IC0xICYmICFjb250ZW50VmFsdWVQYXR0ZXJuLnRlc3QodmFsdWUpICYmICh2YWx1ZS5jaGFyQXQoMCkgIT09IHZhbHVlLmNoYXJBdCh2YWx1ZS5sZW5ndGggLSAxKSB8fCB2YWx1ZS5jaGFyQXQoMCkgIT09ICdcIicgJiYgdmFsdWUuY2hhckF0KDApICE9PSBcIidcIikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IHNlZW0gdG8gYmUgdXNpbmcgYSB2YWx1ZSBmb3IgJ2NvbnRlbnQnIHdpdGhvdXQgcXVvdGVzLCB0cnkgcmVwbGFjaW5nIGl0IHdpdGggYGNvbnRlbnQ6ICdcXFwiXCIgKyB2YWx1ZSArIFwiXFxcIidgXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcm9jZXNzZWQgPSBvbGRQcm9jZXNzU3R5bGVWYWx1ZShrZXksIHZhbHVlKTtcblxuICAgIGlmIChwcm9jZXNzZWQgIT09ICcnICYmICFpc0N1c3RvbVByb3BlcnR5KGtleSkgJiYga2V5LmluZGV4T2YoJy0nKSAhPT0gLTEgJiYgaHlwaGVuYXRlZENhY2hlW2tleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgaHlwaGVuYXRlZENhY2hlW2tleV0gPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcihcIlVzaW5nIGtlYmFiLWNhc2UgZm9yIGNzcyBwcm9wZXJ0aWVzIGluIG9iamVjdHMgaXMgbm90IHN1cHBvcnRlZC4gRGlkIHlvdSBtZWFuIFwiICsga2V5LnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykucmVwbGFjZShoeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoc3RyLCBfY2hhcikge1xuICAgICAgICByZXR1cm4gX2NoYXIudG9VcHBlckNhc2UoKTtcbiAgICAgIH0pICsgXCI/XCIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH07XG59XG5cbnZhciBub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSA9ICdDb21wb25lbnQgc2VsZWN0b3JzIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnICsgJ0BlbW90aW9uL2JhYmVsLXBsdWdpbiwgdGhlIHN3YyBFbW90aW9uIHBsdWdpbiwgb3IgYW5vdGhlciBFbW90aW9uLWF3YXJlICcgKyAnY29tcGlsZXIgdHJhbnNmb3JtLic7XG5cbmZ1bmN0aW9uIGhhbmRsZUludGVycG9sYXRpb24obWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIGludGVycG9sYXRpb24pIHtcbiAgaWYgKGludGVycG9sYXRpb24gPT0gbnVsbCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGlmIChpbnRlcnBvbGF0aW9uLl9fZW1vdGlvbl9zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGludGVycG9sYXRpb24udG9TdHJpbmcoKSA9PT0gJ05PX0NPTVBPTkVOVF9TRUxFQ1RPUicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGludGVycG9sYXRpb247XG4gIH1cblxuICBzd2l0Y2ggKHR5cGVvZiBpbnRlcnBvbGF0aW9uKSB7XG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICB7XG4gICAgICAgIGlmIChpbnRlcnBvbGF0aW9uLmFuaW0gPT09IDEpIHtcbiAgICAgICAgICBjdXJzb3IgPSB7XG4gICAgICAgICAgICBuYW1lOiBpbnRlcnBvbGF0aW9uLm5hbWUsXG4gICAgICAgICAgICBzdHlsZXM6IGludGVycG9sYXRpb24uc3R5bGVzLFxuICAgICAgICAgICAgbmV4dDogY3Vyc29yXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gaW50ZXJwb2xhdGlvbi5uYW1lO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludGVycG9sYXRpb24uc3R5bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB2YXIgbmV4dCA9IGludGVycG9sYXRpb24ubmV4dDtcblxuICAgICAgICAgIGlmIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIG5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgZXZlciBidXQgdGhpcyBpcyBhIHByZXR0eSByYXJlIGNhc2VcbiAgICAgICAgICAgIC8vIGFuZCB0aGVyZSB3aWxsIGJlIHZlcnkgZmV3IGl0ZXJhdGlvbnMgb2YgdGhpcyBnZW5lcmFsbHlcbiAgICAgICAgICAgIHdoaWxlIChuZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgY3Vyc29yID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG5leHQubmFtZSxcbiAgICAgICAgICAgICAgICBzdHlsZXM6IG5leHQuc3R5bGVzLFxuICAgICAgICAgICAgICAgIG5leHQ6IGN1cnNvclxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBzdHlsZXMgPSBpbnRlcnBvbGF0aW9uLnN0eWxlcyArIFwiO1wiO1xuXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgaW50ZXJwb2xhdGlvbi5tYXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3R5bGVzICs9IGludGVycG9sYXRpb24ubWFwO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBzdHlsZXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY3JlYXRlU3RyaW5nRnJvbU9iamVjdChtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgaW50ZXJwb2xhdGlvbik7XG4gICAgICB9XG5cbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgICB7XG4gICAgICAgIGlmIChtZXJnZWRQcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIHByZXZpb3VzQ3Vyc29yID0gY3Vyc29yO1xuICAgICAgICAgIHZhciByZXN1bHQgPSBpbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzKTtcbiAgICAgICAgICBjdXJzb3IgPSBwcmV2aW91c0N1cnNvcjtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgcmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRnVuY3Rpb25zIHRoYXQgYXJlIGludGVycG9sYXRlZCBpbiBjc3MgY2FsbHMgd2lsbCBiZSBzdHJpbmdpZmllZC5cXG4nICsgJ0lmIHlvdSB3YW50IHRvIGhhdmUgYSBjc3MgY2FsbCBiYXNlZCBvbiBwcm9wcywgY3JlYXRlIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgY3NzIGNhbGwgbGlrZSB0aGlzXFxuJyArICdsZXQgZHluYW1pY1N0eWxlID0gKHByb3BzKSA9PiBjc3NgY29sb3I6ICR7cHJvcHMuY29sb3J9YFxcbicgKyAnSXQgY2FuIGJlIGNhbGxlZCBkaXJlY3RseSB3aXRoIHByb3BzIG9yIGludGVycG9sYXRlZCBpbiBhIHN0eWxlZCBjYWxsIGxpa2UgdGhpc1xcbicgKyBcImxldCBTb21lQ29tcG9uZW50ID0gc3R5bGVkKCdkaXYnKWAke2R5bmFtaWNTdHlsZX1gXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBbXTtcbiAgICAgICAgdmFyIHJlcGxhY2VkID0gaW50ZXJwb2xhdGlvbi5yZXBsYWNlKGFuaW1hdGlvblJlZ2V4LCBmdW5jdGlvbiAobWF0Y2gsIHAxLCBwMikge1xuICAgICAgICAgIHZhciBmYWtlVmFyTmFtZSA9IFwiYW5pbWF0aW9uXCIgKyBtYXRjaGVkLmxlbmd0aDtcbiAgICAgICAgICBtYXRjaGVkLnB1c2goXCJjb25zdCBcIiArIGZha2VWYXJOYW1lICsgXCIgPSBrZXlmcmFtZXNgXCIgKyBwMi5yZXBsYWNlKC9eQGtleWZyYW1lcyBhbmltYXRpb24tXFx3Ky8sICcnKSArIFwiYFwiKTtcbiAgICAgICAgICByZXR1cm4gXCIke1wiICsgZmFrZVZhck5hbWUgKyBcIn1cIjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKG1hdGNoZWQubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignYGtleWZyYW1lc2Agb3V0cHV0IGdvdCBpbnRlcnBvbGF0ZWQgaW50byBwbGFpbiBzdHJpbmcsIHBsZWFzZSB3cmFwIGl0IHdpdGggYGNzc2AuXFxuXFxuJyArICdJbnN0ZWFkIG9mIGRvaW5nIHRoaXM6XFxuXFxuJyArIFtdLmNvbmNhdChtYXRjaGVkLCBbXCJgXCIgKyByZXBsYWNlZCArIFwiYFwiXSkuam9pbignXFxuJykgKyAnXFxuXFxuWW91IHNob3VsZCB3cmFwIGl0IHdpdGggYGNzc2AgbGlrZSB0aGlzOlxcblxcbicgKyAoXCJjc3NgXCIgKyByZXBsYWNlZCArIFwiYFwiKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gIH0gLy8gZmluYWxpemUgc3RyaW5nIHZhbHVlcyAocmVndWxhciBzdHJpbmdzIGFuZCBmdW5jdGlvbnMgaW50ZXJwb2xhdGVkIGludG8gY3NzIGNhbGxzKVxuXG5cbiAgaWYgKHJlZ2lzdGVyZWQgPT0gbnVsbCkge1xuICAgIHJldHVybiBpbnRlcnBvbGF0aW9uO1xuICB9XG5cbiAgdmFyIGNhY2hlZCA9IHJlZ2lzdGVyZWRbaW50ZXJwb2xhdGlvbl07XG4gIHJldHVybiBjYWNoZWQgIT09IHVuZGVmaW5lZCA/IGNhY2hlZCA6IGludGVycG9sYXRpb247XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0cmluZ0Zyb21PYmplY3QobWVyZ2VkUHJvcHMsIHJlZ2lzdGVyZWQsIG9iaikge1xuICB2YXIgc3RyaW5nID0gJyc7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JqLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzdHJpbmcgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgb2JqW2ldKSArIFwiO1wiO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBfa2V5IGluIG9iaikge1xuICAgICAgdmFyIHZhbHVlID0gb2JqW19rZXldO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVnaXN0ZXJlZCAhPSBudWxsICYmIHJlZ2lzdGVyZWRbdmFsdWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdHJpbmcgKz0gX2tleSArIFwie1wiICsgcmVnaXN0ZXJlZFt2YWx1ZV0gKyBcIn1cIjtcbiAgICAgICAgfSBlbHNlIGlmIChpc1Byb2Nlc3NhYmxlVmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgc3RyaW5nICs9IHByb2Nlc3NTdHlsZU5hbWUoX2tleSkgKyBcIjpcIiArIHByb2Nlc3NTdHlsZVZhbHVlKF9rZXksIHZhbHVlKSArIFwiO1wiO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoX2tleSA9PT0gJ05PX0NPTVBPTkVOVF9TRUxFQ1RPUicgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub0NvbXBvbmVudFNlbGVjdG9yTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlWzBdID09PSAnc3RyaW5nJyAmJiAocmVnaXN0ZXJlZCA9PSBudWxsIHx8IHJlZ2lzdGVyZWRbdmFsdWVbMF1dID09PSB1bmRlZmluZWQpKSB7XG4gICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IHZhbHVlLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgaWYgKGlzUHJvY2Vzc2FibGVWYWx1ZSh2YWx1ZVtfaV0pKSB7XG4gICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKF9rZXkpICsgXCI6XCIgKyBwcm9jZXNzU3R5bGVWYWx1ZShfa2V5LCB2YWx1ZVtfaV0pICsgXCI7XCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBpbnRlcnBvbGF0ZWQgPSBoYW5kbGVJbnRlcnBvbGF0aW9uKG1lcmdlZFByb3BzLCByZWdpc3RlcmVkLCB2YWx1ZSk7XG5cbiAgICAgICAgICBzd2l0Y2ggKF9rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgJ2FuaW1hdGlvbic6XG4gICAgICAgICAgICBjYXNlICdhbmltYXRpb25OYW1lJzpcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0cmluZyArPSBwcm9jZXNzU3R5bGVOYW1lKF9rZXkpICsgXCI6XCIgKyBpbnRlcnBvbGF0ZWQgKyBcIjtcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgX2tleSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoVU5ERUZJTkVEX0FTX09CSkVDVF9LRVlfRVJST1IpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHN0cmluZyArPSBfa2V5ICsgXCJ7XCIgKyBpbnRlcnBvbGF0ZWQgKyBcIn1cIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHJpbmc7XG59XG5cbnZhciBsYWJlbFBhdHRlcm4gPSAvbGFiZWw6XFxzKihbXlxccztcXG57XSspXFxzKig7fCQpL2c7XG52YXIgc291cmNlTWFwUGF0dGVybjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgc291cmNlTWFwUGF0dGVybiA9IC9cXC9cXCojXFxzc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjtcXFMrXFxzK1xcKlxcLy9nO1xufSAvLyB0aGlzIGlzIHRoZSBjdXJzb3IgZm9yIGtleWZyYW1lc1xuLy8ga2V5ZnJhbWVzIGFyZSBzdG9yZWQgb24gdGhlIFNlcmlhbGl6ZWRTdHlsZXMgb2JqZWN0IGFzIGEgbGlua2VkIGxpc3RcblxuXG52YXIgY3Vyc29yO1xudmFyIHNlcmlhbGl6ZVN0eWxlcyA9IGZ1bmN0aW9uIHNlcmlhbGl6ZVN0eWxlcyhhcmdzLCByZWdpc3RlcmVkLCBtZXJnZWRQcm9wcykge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEgJiYgdHlwZW9mIGFyZ3NbMF0gPT09ICdvYmplY3QnICYmIGFyZ3NbMF0gIT09IG51bGwgJiYgYXJnc1swXS5zdHlsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBhcmdzWzBdO1xuICB9XG5cbiAgdmFyIHN0cmluZ01vZGUgPSB0cnVlO1xuICB2YXIgc3R5bGVzID0gJyc7XG4gIGN1cnNvciA9IHVuZGVmaW5lZDtcbiAgdmFyIHN0cmluZ3MgPSBhcmdzWzBdO1xuXG4gIGlmIChzdHJpbmdzID09IG51bGwgfHwgc3RyaW5ncy5yYXcgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0cmluZ01vZGUgPSBmYWxzZTtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgc3RyaW5ncyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc3RyaW5nc1swXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zb2xlLmVycm9yKElMTEVHQUxfRVNDQVBFX1NFUVVFTkNFX0VSUk9SKTtcbiAgICB9XG5cbiAgICBzdHlsZXMgKz0gc3RyaW5nc1swXTtcbiAgfSAvLyB3ZSBzdGFydCBhdCAxIHNpbmNlIHdlJ3ZlIGFscmVhZHkgaGFuZGxlZCB0aGUgZmlyc3QgYXJnXG5cblxuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICBzdHlsZXMgKz0gaGFuZGxlSW50ZXJwb2xhdGlvbihtZXJnZWRQcm9wcywgcmVnaXN0ZXJlZCwgYXJnc1tpXSk7XG5cbiAgICBpZiAoc3RyaW5nTW9kZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc3RyaW5nc1tpXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0VfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICBzdHlsZXMgKz0gc3RyaW5nc1tpXTtcbiAgICB9XG4gIH1cblxuICB2YXIgc291cmNlTWFwO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgc3R5bGVzID0gc3R5bGVzLnJlcGxhY2Uoc291cmNlTWFwUGF0dGVybiwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICBzb3VyY2VNYXAgPSBtYXRjaDtcbiAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgfSAvLyB1c2luZyBhIGdsb2JhbCByZWdleCB3aXRoIC5leGVjIGlzIHN0YXRlZnVsIHNvIGxhc3RJbmRleCBoYXMgdG8gYmUgcmVzZXQgZWFjaCB0aW1lXG5cblxuICBsYWJlbFBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgdmFyIGlkZW50aWZpZXJOYW1lID0gJyc7XG4gIHZhciBtYXRjaDsgLy8gaHR0cHM6Ly9lc2JlbmNoLmNvbS9iZW5jaC81YjgwOWMyY2YyOTQ5ODAwYTBmNjFmYjVcblxuICB3aGlsZSAoKG1hdGNoID0gbGFiZWxQYXR0ZXJuLmV4ZWMoc3R5bGVzKSkgIT09IG51bGwpIHtcbiAgICBpZGVudGlmaWVyTmFtZSArPSAnLScgKyAvLyAkRmxvd0ZpeE1lIHdlIGtub3cgaXQncyBub3QgbnVsbFxuICAgIG1hdGNoWzFdO1xuICB9XG5cbiAgdmFyIG5hbWUgPSBoYXNoU3RyaW5nKHN0eWxlcykgKyBpZGVudGlmaWVyTmFtZTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vICRGbG93Rml4TWUgU2VyaWFsaXplZFN0eWxlcyB0eXBlIGRvZXNuJ3QgaGF2ZSB0b1N0cmluZyBwcm9wZXJ0eSAoYW5kIHdlIGRvbid0IHdhbnQgdG8gYWRkIGl0KVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgICBtYXA6IHNvdXJjZU1hcCxcbiAgICAgIG5leHQ6IGN1cnNvcixcbiAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIFwiWW91IGhhdmUgdHJpZWQgdG8gc3RyaW5naWZ5IG9iamVjdCByZXR1cm5lZCBmcm9tIGBjc3NgIGZ1bmN0aW9uLiBJdCBpc24ndCBzdXBwb3NlZCB0byBiZSB1c2VkIGRpcmVjdGx5IChlLmcuIGFzIHZhbHVlIG9mIHRoZSBgY2xhc3NOYW1lYCBwcm9wKSwgYnV0IHJhdGhlciBoYW5kZWQgdG8gZW1vdGlvbiBzbyBpdCBjYW4gaGFuZGxlIGl0IChlLmcuIGFzIHZhbHVlIG9mIGBjc3NgIHByb3ApLlwiO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgc3R5bGVzOiBzdHlsZXMsXG4gICAgbmV4dDogY3Vyc29yXG4gIH07XG59O1xuXG5leHBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfTtcbiIsImltcG9ydCBfZXh0ZW5kcyBmcm9tICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBpc1Byb3BWYWxpZCBmcm9tICdAZW1vdGlvbi9pcy1wcm9wLXZhbGlkJztcbmltcG9ydCB7IHdpdGhFbW90aW9uQ2FjaGUsIFRoZW1lQ29udGV4dCB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGdldFJlZ2lzdGVyZWRTdHlsZXMsIHJlZ2lzdGVyU3R5bGVzLCBpbnNlcnRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0IHsgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayB9IGZyb20gJ0BlbW90aW9uL3VzZS1pbnNlcnRpb24tZWZmZWN0LXdpdGgtZmFsbGJhY2tzJztcblxudmFyIHRlc3RPbWl0UHJvcHNPblN0cmluZ1RhZyA9IGlzUHJvcFZhbGlkO1xuXG52YXIgdGVzdE9taXRQcm9wc09uQ29tcG9uZW50ID0gZnVuY3Rpb24gdGVzdE9taXRQcm9wc09uQ29tcG9uZW50KGtleSkge1xuICByZXR1cm4ga2V5ICE9PSAndGhlbWUnO1xufTtcblxudmFyIGdldERlZmF1bHRTaG91bGRGb3J3YXJkUHJvcCA9IGZ1bmN0aW9uIGdldERlZmF1bHRTaG91bGRGb3J3YXJkUHJvcCh0YWcpIHtcbiAgcmV0dXJuIHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnICYmIC8vIDk2IGlzIG9uZSBsZXNzIHRoYW4gdGhlIGNoYXIgY29kZVxuICAvLyBmb3IgXCJhXCIgc28gdGhpcyBpcyBjaGVja2luZyB0aGF0XG4gIC8vIGl0J3MgYSBsb3dlcmNhc2UgY2hhcmFjdGVyXG4gIHRhZy5jaGFyQ29kZUF0KDApID4gOTYgPyB0ZXN0T21pdFByb3BzT25TdHJpbmdUYWcgOiB0ZXN0T21pdFByb3BzT25Db21wb25lbnQ7XG59O1xudmFyIGNvbXBvc2VTaG91bGRGb3J3YXJkUHJvcHMgPSBmdW5jdGlvbiBjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzKHRhZywgb3B0aW9ucywgaXNSZWFsKSB7XG4gIHZhciBzaG91bGRGb3J3YXJkUHJvcDtcblxuICBpZiAob3B0aW9ucykge1xuICAgIHZhciBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AgPSBvcHRpb25zLnNob3VsZEZvcndhcmRQcm9wO1xuICAgIHNob3VsZEZvcndhcmRQcm9wID0gdGFnLl9fZW1vdGlvbl9mb3J3YXJkUHJvcCAmJiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AgPyBmdW5jdGlvbiAocHJvcE5hbWUpIHtcbiAgICAgIHJldHVybiB0YWcuX19lbW90aW9uX2ZvcndhcmRQcm9wKHByb3BOYW1lKSAmJiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AocHJvcE5hbWUpO1xuICAgIH0gOiBvcHRpb25zU2hvdWxkRm9yd2FyZFByb3A7XG4gIH1cblxuICBpZiAodHlwZW9mIHNob3VsZEZvcndhcmRQcm9wICE9PSAnZnVuY3Rpb24nICYmIGlzUmVhbCkge1xuICAgIHNob3VsZEZvcndhcmRQcm9wID0gdGFnLl9fZW1vdGlvbl9mb3J3YXJkUHJvcDtcbiAgfVxuXG4gIHJldHVybiBzaG91bGRGb3J3YXJkUHJvcDtcbn07XG5cbnZhciBJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUiA9IFwiWW91IGhhdmUgaWxsZWdhbCBlc2NhcGUgc2VxdWVuY2UgaW4geW91ciB0ZW1wbGF0ZSBsaXRlcmFsLCBtb3N0IGxpa2VseSBpbnNpZGUgY29udGVudCdzIHByb3BlcnR5IHZhbHVlLlxcbkJlY2F1c2UgeW91IHdyaXRlIHlvdXIgQ1NTIGluc2lkZSBhIEphdmFTY3JpcHQgc3RyaW5nIHlvdSBhY3R1YWxseSBoYXZlIHRvIGRvIGRvdWJsZSBlc2NhcGluZywgc28gZm9yIGV4YW1wbGUgXFxcImNvbnRlbnQ6ICdcXFxcMDBkNyc7XFxcIiBzaG91bGQgYmVjb21lIFxcXCJjb250ZW50OiAnXFxcXFxcXFwwMGQ3JztcXFwiLlxcbllvdSBjYW4gcmVhZCBtb3JlIGFib3V0IHRoaXMgaGVyZTpcXG5odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9UZW1wbGF0ZV9saXRlcmFscyNFUzIwMThfcmV2aXNpb25fb2ZfaWxsZWdhbF9lc2NhcGVfc2VxdWVuY2VzXCI7XG5cbnZhciBJbnNlcnRpb24gPSBmdW5jdGlvbiBJbnNlcnRpb24oX3JlZikge1xuICB2YXIgY2FjaGUgPSBfcmVmLmNhY2hlLFxuICAgICAgc2VyaWFsaXplZCA9IF9yZWYuc2VyaWFsaXplZCxcbiAgICAgIGlzU3RyaW5nVGFnID0gX3JlZi5pc1N0cmluZ1RhZztcbiAgcmVnaXN0ZXJTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWQsIGlzU3RyaW5nVGFnKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0QWx3YXlzV2l0aFN5bmNGYWxsYmFjayhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGluc2VydFN0eWxlcyhjYWNoZSwgc2VyaWFsaXplZCwgaXNTdHJpbmdUYWcpO1xuICB9KTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbnZhciBjcmVhdGVTdHlsZWQgPSBmdW5jdGlvbiBjcmVhdGVTdHlsZWQodGFnLCBvcHRpb25zKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKHRhZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhIHN0eWxlZCBlbGVtZW50IHdpdGggYW4gdW5kZWZpbmVkIGNvbXBvbmVudC5cXG5Zb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGltcG9ydCBpdC4nKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaXNSZWFsID0gdGFnLl9fZW1vdGlvbl9yZWFsID09PSB0YWc7XG4gIHZhciBiYXNlVGFnID0gaXNSZWFsICYmIHRhZy5fX2Vtb3Rpb25fYmFzZSB8fCB0YWc7XG4gIHZhciBpZGVudGlmaWVyTmFtZTtcbiAgdmFyIHRhcmdldENsYXNzTmFtZTtcblxuICBpZiAob3B0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWRlbnRpZmllck5hbWUgPSBvcHRpb25zLmxhYmVsO1xuICAgIHRhcmdldENsYXNzTmFtZSA9IG9wdGlvbnMudGFyZ2V0O1xuICB9XG5cbiAgdmFyIHNob3VsZEZvcndhcmRQcm9wID0gY29tcG9zZVNob3VsZEZvcndhcmRQcm9wcyh0YWcsIG9wdGlvbnMsIGlzUmVhbCk7XG4gIHZhciBkZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRGb3J3YXJkUHJvcCB8fCBnZXREZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AoYmFzZVRhZyk7XG4gIHZhciBzaG91bGRVc2VBcyA9ICFkZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AoJ2FzJyk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIHN0eWxlcyA9IGlzUmVhbCAmJiB0YWcuX19lbW90aW9uX3N0eWxlcyAhPT0gdW5kZWZpbmVkID8gdGFnLl9fZW1vdGlvbl9zdHlsZXMuc2xpY2UoMCkgOiBbXTtcblxuICAgIGlmIChpZGVudGlmaWVyTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZXMucHVzaChcImxhYmVsOlwiICsgaWRlbnRpZmllck5hbWUgKyBcIjtcIik7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3NbMF0gPT0gbnVsbCB8fCBhcmdzWzBdLnJhdyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBzdHlsZXMucHVzaC5hcHBseShzdHlsZXMsIGFyZ3MpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBhcmdzWzBdWzBdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTExFR0FMX0VTQ0FQRV9TRVFVRU5DRV9FUlJPUik7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlcy5wdXNoKGFyZ3NbMF1bMF0pO1xuICAgICAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICAgICAgdmFyIGkgPSAxO1xuXG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZ3NbMF1baV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSUxMRUdBTF9FU0NBUEVfU0VRVUVOQ0VfRVJST1IpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3R5bGVzLnB1c2goYXJnc1tpXSwgYXJnc1swXVtpXSk7XG4gICAgICB9XG4gICAgfSAvLyAkRmxvd0ZpeE1lOiB3ZSBuZWVkIHRvIGNhc3QgU3RhdGVsZXNzRnVuY3Rpb25hbENvbXBvbmVudCB0byBvdXIgUHJpdmF0ZVN0eWxlZENvbXBvbmVudCBjbGFzc1xuXG5cbiAgICB2YXIgU3R5bGVkID0gd2l0aEVtb3Rpb25DYWNoZShmdW5jdGlvbiAocHJvcHMsIGNhY2hlLCByZWYpIHtcbiAgICAgIHZhciBGaW5hbFRhZyA9IHNob3VsZFVzZUFzICYmIHByb3BzLmFzIHx8IGJhc2VUYWc7XG4gICAgICB2YXIgY2xhc3NOYW1lID0gJyc7XG4gICAgICB2YXIgY2xhc3NJbnRlcnBvbGF0aW9ucyA9IFtdO1xuICAgICAgdmFyIG1lcmdlZFByb3BzID0gcHJvcHM7XG5cbiAgICAgIGlmIChwcm9wcy50aGVtZSA9PSBudWxsKSB7XG4gICAgICAgIG1lcmdlZFByb3BzID0ge307XG5cbiAgICAgICAgZm9yICh2YXIga2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgbWVyZ2VkUHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBtZXJnZWRQcm9wcy50aGVtZSA9IFJlYWN0LnVzZUNvbnRleHQoVGhlbWVDb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5jbGFzc05hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGdldFJlZ2lzdGVyZWRTdHlsZXMoY2FjaGUucmVnaXN0ZXJlZCwgY2xhc3NJbnRlcnBvbGF0aW9ucywgcHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMuY2xhc3NOYW1lICE9IG51bGwpIHtcbiAgICAgICAgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lICsgXCIgXCI7XG4gICAgICB9XG5cbiAgICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKHN0eWxlcy5jb25jYXQoY2xhc3NJbnRlcnBvbGF0aW9ucyksIGNhY2hlLnJlZ2lzdGVyZWQsIG1lcmdlZFByb3BzKTtcbiAgICAgIGNsYXNzTmFtZSArPSBjYWNoZS5rZXkgKyBcIi1cIiArIHNlcmlhbGl6ZWQubmFtZTtcblxuICAgICAgaWYgKHRhcmdldENsYXNzTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsYXNzTmFtZSArPSBcIiBcIiArIHRhcmdldENsYXNzTmFtZTtcbiAgICAgIH1cblxuICAgICAgdmFyIGZpbmFsU2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRVc2VBcyAmJiBzaG91bGRGb3J3YXJkUHJvcCA9PT0gdW5kZWZpbmVkID8gZ2V0RGVmYXVsdFNob3VsZEZvcndhcmRQcm9wKEZpbmFsVGFnKSA6IGRlZmF1bHRTaG91bGRGb3J3YXJkUHJvcDtcbiAgICAgIHZhciBuZXdQcm9wcyA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBfa2V5IGluIHByb3BzKSB7XG4gICAgICAgIGlmIChzaG91bGRVc2VBcyAmJiBfa2V5ID09PSAnYXMnKSBjb250aW51ZTtcblxuICAgICAgICBpZiAoIC8vICRGbG93Rml4TWVcbiAgICAgICAgZmluYWxTaG91bGRGb3J3YXJkUHJvcChfa2V5KSkge1xuICAgICAgICAgIG5ld1Byb3BzW19rZXldID0gcHJvcHNbX2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3UHJvcHMuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgbmV3UHJvcHMucmVmID0gcmVmO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnNlcnRpb24sIHtcbiAgICAgICAgY2FjaGU6IGNhY2hlLFxuICAgICAgICBzZXJpYWxpemVkOiBzZXJpYWxpemVkLFxuICAgICAgICBpc1N0cmluZ1RhZzogdHlwZW9mIEZpbmFsVGFnID09PSAnc3RyaW5nJ1xuICAgICAgfSksIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEZpbmFsVGFnLCBuZXdQcm9wcykpO1xuICAgIH0pO1xuICAgIFN0eWxlZC5kaXNwbGF5TmFtZSA9IGlkZW50aWZpZXJOYW1lICE9PSB1bmRlZmluZWQgPyBpZGVudGlmaWVyTmFtZSA6IFwiU3R5bGVkKFwiICsgKHR5cGVvZiBiYXNlVGFnID09PSAnc3RyaW5nJyA/IGJhc2VUYWcgOiBiYXNlVGFnLmRpc3BsYXlOYW1lIHx8IGJhc2VUYWcubmFtZSB8fCAnQ29tcG9uZW50JykgKyBcIilcIjtcbiAgICBTdHlsZWQuZGVmYXVsdFByb3BzID0gdGFnLmRlZmF1bHRQcm9wcztcbiAgICBTdHlsZWQuX19lbW90aW9uX3JlYWwgPSBTdHlsZWQ7XG4gICAgU3R5bGVkLl9fZW1vdGlvbl9iYXNlID0gYmFzZVRhZztcbiAgICBTdHlsZWQuX19lbW90aW9uX3N0eWxlcyA9IHN0eWxlcztcbiAgICBTdHlsZWQuX19lbW90aW9uX2ZvcndhcmRQcm9wID0gc2hvdWxkRm9yd2FyZFByb3A7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0eWxlZCwgJ3RvU3RyaW5nJywge1xuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKCkge1xuICAgICAgICBpZiAodGFyZ2V0Q2xhc3NOYW1lID09PSB1bmRlZmluZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHJldHVybiAnTk9fQ09NUE9ORU5UX1NFTEVDVE9SJztcbiAgICAgICAgfSAvLyAkRmxvd0ZpeE1lOiBjb2VyY2UgdW5kZWZpbmVkIHRvIHN0cmluZ1xuXG5cbiAgICAgICAgcmV0dXJuIFwiLlwiICsgdGFyZ2V0Q2xhc3NOYW1lO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgU3R5bGVkLndpdGhDb21wb25lbnQgPSBmdW5jdGlvbiAobmV4dFRhZywgbmV4dE9wdGlvbnMpIHtcbiAgICAgIHJldHVybiBjcmVhdGVTdHlsZWQobmV4dFRhZywgX2V4dGVuZHMoe30sIG9wdGlvbnMsIG5leHRPcHRpb25zLCB7XG4gICAgICAgIHNob3VsZEZvcndhcmRQcm9wOiBjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzKFN0eWxlZCwgbmV4dE9wdGlvbnMsIHRydWUpXG4gICAgICB9KSkuYXBwbHkodm9pZCAwLCBzdHlsZXMpO1xuICAgIH07XG5cbiAgICByZXR1cm4gU3R5bGVkO1xuICB9O1xufTtcblxuZXhwb3J0IHsgY3JlYXRlU3R5bGVkIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBjcmVhdGVTdHlsZWQgZnJvbSAnLi4vYmFzZS9kaXN0L2Vtb3Rpb24tc3R5bGVkLWJhc2UuYnJvd3Nlci5lc20uanMnO1xuaW1wb3J0ICdAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHMnO1xuaW1wb3J0ICdyZWFjdCc7XG5pbXBvcnQgJ0BlbW90aW9uL2lzLXByb3AtdmFsaWQnO1xuaW1wb3J0ICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgJ0BlbW90aW9uL3V0aWxzJztcbmltcG9ydCAnQGVtb3Rpb24vc2VyaWFsaXplJztcbmltcG9ydCAnQGVtb3Rpb24vdXNlLWluc2VydGlvbi1lZmZlY3Qtd2l0aC1mYWxsYmFja3MnO1xuXG52YXIgdGFncyA9IFsnYScsICdhYmJyJywgJ2FkZHJlc3MnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2F1ZGlvJywgJ2InLCAnYmFzZScsICdiZGknLCAnYmRvJywgJ2JpZycsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhbnZhcycsICdjYXB0aW9uJywgJ2NpdGUnLCAnY29kZScsICdjb2wnLCAnY29sZ3JvdXAnLCAnZGF0YScsICdkYXRhbGlzdCcsICdkZCcsICdkZWwnLCAnZGV0YWlscycsICdkZm4nLCAnZGlhbG9nJywgJ2RpdicsICdkbCcsICdkdCcsICdlbScsICdlbWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpJywgJ2lmcmFtZScsICdpbWcnLCAnaW5wdXQnLCAnaW5zJywgJ2tiZCcsICdrZXlnZW4nLCAnbGFiZWwnLCAnbGVnZW5kJywgJ2xpJywgJ2xpbmsnLCAnbWFpbicsICdtYXAnLCAnbWFyaycsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0nLCAnbWV0YScsICdtZXRlcicsICduYXYnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ29wdGdyb3VwJywgJ29wdGlvbicsICdvdXRwdXQnLCAncCcsICdwYXJhbScsICdwaWN0dXJlJywgJ3ByZScsICdwcm9ncmVzcycsICdxJywgJ3JwJywgJ3J0JywgJ3J1YnknLCAncycsICdzYW1wJywgJ3NjcmlwdCcsICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzbWFsbCcsICdzb3VyY2UnLCAnc3BhbicsICdzdHJvbmcnLCAnc3R5bGUnLCAnc3ViJywgJ3N1bW1hcnknLCAnc3VwJywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpbWUnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndScsICd1bCcsICd2YXInLCAndmlkZW8nLCAnd2JyJywgLy8gU1ZHXG4nY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxsaXBzZScsICdmb3JlaWduT2JqZWN0JywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFkaWVudCcsICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICdzdmcnLCAndGV4dCcsICd0c3BhbiddO1xuXG52YXIgbmV3U3R5bGVkID0gY3JlYXRlU3R5bGVkLmJpbmQoKTtcbnRhZ3MuZm9yRWFjaChmdW5jdGlvbiAodGFnTmFtZSkge1xuICAvLyAkRmxvd0ZpeE1lOiB3ZSBjYW4gaWdub3JlIHRoaXMgYmVjYXVzZSBpdHMgZXhwb3NlZCB0eXBlIGlzIGRlZmluZWQgYnkgdGhlIENyZWF0ZVN0eWxlZCB0eXBlXG4gIG5ld1N0eWxlZFt0YWdOYW1lXSA9IG5ld1N0eWxlZCh0YWdOYW1lKTtcbn0pO1xuXG5leHBvcnQgeyBuZXdTdHlsZWQgYXMgZGVmYXVsdCB9O1xuIiwiLyoqXG4gKiBAbXVpL3N0eWxlZC1lbmdpbmUgdjUuMTMuMlxuICpcbiAqIEBsaWNlbnNlIE1JVFxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG5pbXBvcnQgZW1TdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0eWxlZCh0YWcsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3R5bGVzRmFjdG9yeSA9IGVtU3R5bGVkKHRhZywgb3B0aW9ucyk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcmV0dXJuICguLi5zdHlsZXMpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHR5cGVvZiB0YWcgPT09ICdzdHJpbmcnID8gYFwiJHt0YWd9XCJgIDogJ2NvbXBvbmVudCc7XG4gICAgICBpZiAoc3R5bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBTZWVtcyBsaWtlIHlvdSBjYWxsZWQgXFxgc3R5bGVkKCR7Y29tcG9uZW50fSkoKVxcYCB3aXRob3V0IGEgXFxgc3R5bGVcXGAgYXJndW1lbnQuYCwgJ1lvdSBtdXN0IHByb3ZpZGUgYSBgc3R5bGVzYCBhcmd1bWVudDogYHN0eWxlZChcImRpdlwiKShzdHlsZVlvdUZvcmdvdFRvUGFzcylgLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH0gZWxzZSBpZiAoc3R5bGVzLnNvbWUoc3R5bGUgPT4gc3R5bGUgPT09IHVuZGVmaW5lZCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgTVVJOiB0aGUgc3R5bGVkKCR7Y29tcG9uZW50fSkoLi4uYXJncykgQVBJIHJlcXVpcmVzIGFsbCBpdHMgYXJncyB0byBiZSBkZWZpbmVkLmApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN0eWxlc0ZhY3RvcnkoLi4uc3R5bGVzKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBzdHlsZXNGYWN0b3J5O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgY29uc3QgaW50ZXJuYWxfcHJvY2Vzc1N0eWxlcyA9ICh0YWcsIHByb2Nlc3NvcikgPT4ge1xuICAvLyBFbW90aW9uIGF0dGFjaGVzIGFsbCB0aGUgc3R5bGVzIGFzIGBfX2Vtb3Rpb25fc3R5bGVzYC5cbiAgLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL2Jsb2IvMTZkOTcxZDBkYTIyOTU5NmQ2YmNjMzlkMjgyYmE5NzUzYzllZTdjZi9wYWNrYWdlcy9zdHlsZWQvc3JjL2Jhc2UuanMjTDE4NlxuICBpZiAoQXJyYXkuaXNBcnJheSh0YWcuX19lbW90aW9uX3N0eWxlcykpIHtcbiAgICB0YWcuX19lbW90aW9uX3N0eWxlcyA9IHByb2Nlc3Nvcih0YWcuX19lbW90aW9uX3N0eWxlcyk7XG4gIH1cbn07XG5leHBvcnQgeyBUaGVtZUNvbnRleHQsIGtleWZyYW1lcywgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gJy4vU3R5bGVkRW5naW5lUHJvdmlkZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBHbG9iYWxTdHlsZXMgfSBmcm9tICcuL0dsb2JhbFN0eWxlcyc7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChpdGVtKSB7XG4gIHJldHVybiBpdGVtICE9PSBudWxsICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtLmNvbnN0cnVjdG9yID09PSBPYmplY3Q7XG59XG5mdW5jdGlvbiBkZWVwQ2xvbmUoc291cmNlKSB7XG4gIGlmICghaXNQbGFpbk9iamVjdChzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICBjb25zdCBvdXRwdXQgPSB7fTtcbiAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgb3V0cHV0W2tleV0gPSBkZWVwQ2xvbmUoc291cmNlW2tleV0pO1xuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlZXBtZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucyA9IHtcbiAgY2xvbmU6IHRydWVcbn0pIHtcbiAgY29uc3Qgb3V0cHV0ID0gb3B0aW9ucy5jbG9uZSA/IF9leHRlbmRzKHt9LCB0YXJnZXQpIDogdGFyZ2V0O1xuICBpZiAoaXNQbGFpbk9iamVjdCh0YXJnZXQpICYmIGlzUGxhaW5PYmplY3Qoc291cmNlKSkge1xuICAgIE9iamVjdC5rZXlzKHNvdXJjZSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgLy8gQXZvaWQgcHJvdG90eXBlIHBvbGx1dGlvblxuICAgICAgaWYgKGtleSA9PT0gJ19fcHJvdG9fXycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGlzUGxhaW5PYmplY3Qoc291cmNlW2tleV0pICYmIGtleSBpbiB0YXJnZXQgJiYgaXNQbGFpbk9iamVjdCh0YXJnZXRba2V5XSkpIHtcbiAgICAgICAgLy8gU2luY2UgYG91dHB1dGAgaXMgYSBjbG9uZSBvZiBgdGFyZ2V0YCBhbmQgd2UgaGF2ZSBuYXJyb3dlZCBgdGFyZ2V0YCBpbiB0aGlzIGJsb2NrIHdlIGNhbiBjYXN0IHRvIHRoZSBzYW1lIHR5cGUuXG4gICAgICAgIG91dHB1dFtrZXldID0gZGVlcG1lcmdlKHRhcmdldFtrZXldLCBzb3VyY2Vba2V5XSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuY2xvbmUpIHtcbiAgICAgICAgb3V0cHV0W2tleV0gPSBpc1BsYWluT2JqZWN0KHNvdXJjZVtrZXldKSA/IGRlZXBDbG9uZShzb3VyY2Vba2V5XSkgOiBzb3VyY2Vba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIG91dHB1dDtcbn0iLCJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1widmFsdWVzXCIsIFwidW5pdFwiLCBcInN0ZXBcIl07XG4vLyBTb3J0ZWQgQVNDIGJ5IHNpemUuIFRoYXQncyBpbXBvcnRhbnQuXG4vLyBJdCBjYW4ndCBiZSBjb25maWd1cmVkIGFzIGl0J3MgdXNlZCBzdGF0aWNhbGx5IGZvciBwcm9wVHlwZXMuXG5leHBvcnQgY29uc3QgYnJlYWtwb2ludEtleXMgPSBbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJ107XG5jb25zdCBzb3J0QnJlYWtwb2ludHNWYWx1ZXMgPSB2YWx1ZXMgPT4ge1xuICBjb25zdCBicmVha3BvaW50c0FzQXJyYXkgPSBPYmplY3Qua2V5cyh2YWx1ZXMpLm1hcChrZXkgPT4gKHtcbiAgICBrZXksXG4gICAgdmFsOiB2YWx1ZXNba2V5XVxuICB9KSkgfHwgW107XG4gIC8vIFNvcnQgaW4gYXNjZW5kaW5nIG9yZGVyXG4gIGJyZWFrcG9pbnRzQXNBcnJheS5zb3J0KChicmVha3BvaW50MSwgYnJlYWtwb2ludDIpID0+IGJyZWFrcG9pbnQxLnZhbCAtIGJyZWFrcG9pbnQyLnZhbCk7XG4gIHJldHVybiBicmVha3BvaW50c0FzQXJyYXkucmVkdWNlKChhY2MsIG9iaikgPT4ge1xuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgYWNjLCB7XG4gICAgICBbb2JqLmtleV06IG9iai52YWxcbiAgICB9KTtcbiAgfSwge30pO1xufTtcblxuLy8gS2VlcCBpbiBtaW5kIHRoYXQgQG1lZGlhIGlzIGluY2x1c2l2ZSBieSB0aGUgQ1NTIHNwZWNpZmljYXRpb24uXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVCcmVha3BvaW50cyhicmVha3BvaW50cykge1xuICBjb25zdCB7XG4gICAgICAvLyBUaGUgYnJlYWtwb2ludCAqKnN0YXJ0KiogYXQgdGhpcyB2YWx1ZS5cbiAgICAgIC8vIEZvciBpbnN0YW5jZSB3aXRoIHRoZSBmaXJzdCBicmVha3BvaW50IHhzOiBbeHMsIHNtKS5cbiAgICAgIHZhbHVlcyA9IHtcbiAgICAgICAgeHM6IDAsXG4gICAgICAgIC8vIHBob25lXG4gICAgICAgIHNtOiA2MDAsXG4gICAgICAgIC8vIHRhYmxldFxuICAgICAgICBtZDogOTAwLFxuICAgICAgICAvLyBzbWFsbCBsYXB0b3BcbiAgICAgICAgbGc6IDEyMDAsXG4gICAgICAgIC8vIGRlc2t0b3BcbiAgICAgICAgeGw6IDE1MzYgLy8gbGFyZ2Ugc2NyZWVuXG4gICAgICB9LFxuXG4gICAgICB1bml0ID0gJ3B4JyxcbiAgICAgIHN0ZXAgPSA1XG4gICAgfSA9IGJyZWFrcG9pbnRzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoYnJlYWtwb2ludHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHNvcnRlZFZhbHVlcyA9IHNvcnRCcmVha3BvaW50c1ZhbHVlcyh2YWx1ZXMpO1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoc29ydGVkVmFsdWVzKTtcbiAgZnVuY3Rpb24gdXAoa2V5KSB7XG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgdmFsdWVzW2tleV0gPT09ICdudW1iZXInID8gdmFsdWVzW2tleV0gOiBrZXk7XG4gICAgcmV0dXJuIGBAbWVkaWEgKG1pbi13aWR0aDoke3ZhbHVlfSR7dW5pdH0pYDtcbiAgfVxuICBmdW5jdGlvbiBkb3duKGtleSkge1xuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHZhbHVlc1trZXldID09PSAnbnVtYmVyJyA/IHZhbHVlc1trZXldIDoga2V5O1xuICAgIHJldHVybiBgQG1lZGlhIChtYXgtd2lkdGg6JHt2YWx1ZSAtIHN0ZXAgLyAxMDB9JHt1bml0fSlgO1xuICB9XG4gIGZ1bmN0aW9uIGJldHdlZW4oc3RhcnQsIGVuZCkge1xuICAgIGNvbnN0IGVuZEluZGV4ID0ga2V5cy5pbmRleE9mKGVuZCk7XG4gICAgcmV0dXJuIGBAbWVkaWEgKG1pbi13aWR0aDoke3R5cGVvZiB2YWx1ZXNbc3RhcnRdID09PSAnbnVtYmVyJyA/IHZhbHVlc1tzdGFydF0gOiBzdGFydH0ke3VuaXR9KSBhbmQgYCArIGAobWF4LXdpZHRoOiR7KGVuZEluZGV4ICE9PSAtMSAmJiB0eXBlb2YgdmFsdWVzW2tleXNbZW5kSW5kZXhdXSA9PT0gJ251bWJlcicgPyB2YWx1ZXNba2V5c1tlbmRJbmRleF1dIDogZW5kKSAtIHN0ZXAgLyAxMDB9JHt1bml0fSlgO1xuICB9XG4gIGZ1bmN0aW9uIG9ubHkoa2V5KSB7XG4gICAgaWYgKGtleXMuaW5kZXhPZihrZXkpICsgMSA8IGtleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gYmV0d2VlbihrZXksIGtleXNba2V5cy5pbmRleE9mKGtleSkgKyAxXSk7XG4gICAgfVxuICAgIHJldHVybiB1cChrZXkpO1xuICB9XG4gIGZ1bmN0aW9uIG5vdChrZXkpIHtcbiAgICAvLyBoYW5kbGUgZmlyc3QgYW5kIGxhc3Qga2V5IHNlcGFyYXRlbHksIGZvciBiZXR0ZXIgcmVhZGFiaWxpdHlcbiAgICBjb25zdCBrZXlJbmRleCA9IGtleXMuaW5kZXhPZihrZXkpO1xuICAgIGlmIChrZXlJbmRleCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVwKGtleXNbMV0pO1xuICAgIH1cbiAgICBpZiAoa2V5SW5kZXggPT09IGtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIGRvd24oa2V5c1trZXlJbmRleF0pO1xuICAgIH1cbiAgICByZXR1cm4gYmV0d2VlbihrZXksIGtleXNba2V5cy5pbmRleE9mKGtleSkgKyAxXSkucmVwbGFjZSgnQG1lZGlhJywgJ0BtZWRpYSBub3QgYWxsIGFuZCcpO1xuICB9XG4gIHJldHVybiBfZXh0ZW5kcyh7XG4gICAga2V5cyxcbiAgICB2YWx1ZXM6IHNvcnRlZFZhbHVlcyxcbiAgICB1cCxcbiAgICBkb3duLFxuICAgIGJldHdlZW4sXG4gICAgb25seSxcbiAgICBub3QsXG4gICAgdW5pdFxuICB9LCBvdGhlcik7XG59IiwiY29uc3Qgc2hhcGUgPSB7XG4gIGJvcmRlclJhZGl1czogNFxufTtcbmV4cG9ydCBkZWZhdWx0IHNoYXBlOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IG1lcmdlIGZyb20gJy4vbWVyZ2UnO1xuXG4vLyBUaGUgYnJlYWtwb2ludCAqKnN0YXJ0KiogYXQgdGhpcyB2YWx1ZS5cbi8vIEZvciBpbnN0YW5jZSB3aXRoIHRoZSBmaXJzdCBicmVha3BvaW50IHhzOiBbeHMsIHNtWy5cbmV4cG9ydCBjb25zdCB2YWx1ZXMgPSB7XG4gIHhzOiAwLFxuICAvLyBwaG9uZVxuICBzbTogNjAwLFxuICAvLyB0YWJsZXRcbiAgbWQ6IDkwMCxcbiAgLy8gc21hbGwgbGFwdG9wXG4gIGxnOiAxMjAwLFxuICAvLyBkZXNrdG9wXG4gIHhsOiAxNTM2IC8vIGxhcmdlIHNjcmVlblxufTtcblxuY29uc3QgZGVmYXVsdEJyZWFrcG9pbnRzID0ge1xuICAvLyBTb3J0ZWQgQVNDIGJ5IHNpemUuIFRoYXQncyBpbXBvcnRhbnQuXG4gIC8vIEl0IGNhbid0IGJlIGNvbmZpZ3VyZWQgYXMgaXQncyB1c2VkIHN0YXRpY2FsbHkgZm9yIHByb3BUeXBlcy5cbiAga2V5czogWyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddLFxuICB1cDoga2V5ID0+IGBAbWVkaWEgKG1pbi13aWR0aDoke3ZhbHVlc1trZXldfXB4KWBcbn07XG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BWYWx1ZSwgc3R5bGVGcm9tUHJvcFZhbHVlKSB7XG4gIGNvbnN0IHRoZW1lID0gcHJvcHMudGhlbWUgfHwge307XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICBjb25zdCB0aGVtZUJyZWFrcG9pbnRzID0gdGhlbWUuYnJlYWtwb2ludHMgfHwgZGVmYXVsdEJyZWFrcG9pbnRzO1xuICAgIHJldHVybiBwcm9wVmFsdWUucmVkdWNlKChhY2MsIGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICBhY2NbdGhlbWVCcmVha3BvaW50cy51cCh0aGVtZUJyZWFrcG9pbnRzLmtleXNbaW5kZXhdKV0gPSBzdHlsZUZyb21Qcm9wVmFsdWUocHJvcFZhbHVlW2luZGV4XSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfVxuICBpZiAodHlwZW9mIHByb3BWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCB0aGVtZUJyZWFrcG9pbnRzID0gdGhlbWUuYnJlYWtwb2ludHMgfHwgZGVmYXVsdEJyZWFrcG9pbnRzO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhwcm9wVmFsdWUpLnJlZHVjZSgoYWNjLCBicmVha3BvaW50KSA9PiB7XG4gICAgICAvLyBrZXkgaXMgYnJlYWtwb2ludFxuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoZW1lQnJlYWtwb2ludHMudmFsdWVzIHx8IHZhbHVlcykuaW5kZXhPZihicmVha3BvaW50KSAhPT0gLTEpIHtcbiAgICAgICAgY29uc3QgbWVkaWFLZXkgPSB0aGVtZUJyZWFrcG9pbnRzLnVwKGJyZWFrcG9pbnQpO1xuICAgICAgICBhY2NbbWVkaWFLZXldID0gc3R5bGVGcm9tUHJvcFZhbHVlKHByb3BWYWx1ZVticmVha3BvaW50XSwgYnJlYWtwb2ludCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjc3NLZXkgPSBicmVha3BvaW50O1xuICAgICAgICBhY2NbY3NzS2V5XSA9IHByb3BWYWx1ZVtjc3NLZXldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gIH1cbiAgY29uc3Qgb3V0cHV0ID0gc3R5bGVGcm9tUHJvcFZhbHVlKHByb3BWYWx1ZSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5mdW5jdGlvbiBicmVha3BvaW50cyhzdHlsZUZ1bmN0aW9uKSB7XG4gIC8vIGZhbHNlIHBvc2l0aXZlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvblxuICBjb25zdCBuZXdTdHlsZUZ1bmN0aW9uID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHRoZW1lID0gcHJvcHMudGhlbWUgfHwge307XG4gICAgY29uc3QgYmFzZSA9IHN0eWxlRnVuY3Rpb24ocHJvcHMpO1xuICAgIGNvbnN0IHRoZW1lQnJlYWtwb2ludHMgPSB0aGVtZS5icmVha3BvaW50cyB8fCBkZWZhdWx0QnJlYWtwb2ludHM7XG4gICAgY29uc3QgZXh0ZW5kZWQgPSB0aGVtZUJyZWFrcG9pbnRzLmtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgaWYgKHByb3BzW2tleV0pIHtcbiAgICAgICAgYWNjID0gYWNjIHx8IHt9O1xuICAgICAgICBhY2NbdGhlbWVCcmVha3BvaW50cy51cChrZXkpXSA9IHN0eWxlRnVuY3Rpb24oX2V4dGVuZHMoe1xuICAgICAgICAgIHRoZW1lXG4gICAgICAgIH0sIHByb3BzW2tleV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwgbnVsbCk7XG4gICAgcmV0dXJuIG1lcmdlKGJhc2UsIGV4dGVuZGVkKTtcbiAgfTtcbiAgbmV3U3R5bGVGdW5jdGlvbi5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gX2V4dGVuZHMoe30sIHN0eWxlRnVuY3Rpb24ucHJvcFR5cGVzLCB7XG4gICAgeHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc206IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbWQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbGc6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgeGw6IFByb3BUeXBlcy5vYmplY3RcbiAgfSkgOiB7fTtcbiAgbmV3U3R5bGVGdW5jdGlvbi5maWx0ZXJQcm9wcyA9IFsneHMnLCAnc20nLCAnbWQnLCAnbGcnLCAneGwnLCAuLi5zdHlsZUZ1bmN0aW9uLmZpbHRlclByb3BzXTtcbiAgcmV0dXJuIG5ld1N0eWxlRnVuY3Rpb247XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRW1wdHlCcmVha3BvaW50T2JqZWN0KGJyZWFrcG9pbnRzSW5wdXQgPSB7fSkge1xuICB2YXIgX2JyZWFrcG9pbnRzSW5wdXQka2V5O1xuICBjb25zdCBicmVha3BvaW50c0luT3JkZXIgPSAoX2JyZWFrcG9pbnRzSW5wdXQka2V5ID0gYnJlYWtwb2ludHNJbnB1dC5rZXlzKSA9PSBudWxsID8gdm9pZCAwIDogX2JyZWFrcG9pbnRzSW5wdXQka2V5LnJlZHVjZSgoYWNjLCBrZXkpID0+IHtcbiAgICBjb25zdCBicmVha3BvaW50U3R5bGVLZXkgPSBicmVha3BvaW50c0lucHV0LnVwKGtleSk7XG4gICAgYWNjW2JyZWFrcG9pbnRTdHlsZUtleV0gPSB7fTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBicmVha3BvaW50c0luT3JkZXIgfHwge307XG59XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVW51c2VkQnJlYWtwb2ludHMoYnJlYWtwb2ludEtleXMsIHN0eWxlKSB7XG4gIHJldHVybiBicmVha3BvaW50S2V5cy5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgY29uc3QgYnJlYWtwb2ludE91dHB1dCA9IGFjY1trZXldO1xuICAgIGNvbnN0IGlzQnJlYWtwb2ludFVudXNlZCA9ICFicmVha3BvaW50T3V0cHV0IHx8IE9iamVjdC5rZXlzKGJyZWFrcG9pbnRPdXRwdXQpLmxlbmd0aCA9PT0gMDtcbiAgICBpZiAoaXNCcmVha3BvaW50VW51c2VkKSB7XG4gICAgICBkZWxldGUgYWNjW2tleV07XG4gICAgfVxuICAgIHJldHVybiBhY2M7XG4gIH0sIHN0eWxlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUJyZWFrcG9pbnRzSW5PcmRlcihicmVha3BvaW50c0lucHV0LCAuLi5zdHlsZXMpIHtcbiAgY29uc3QgZW1wdHlCcmVha3BvaW50cyA9IGNyZWF0ZUVtcHR5QnJlYWtwb2ludE9iamVjdChicmVha3BvaW50c0lucHV0KTtcbiAgY29uc3QgbWVyZ2VkT3V0cHV0ID0gW2VtcHR5QnJlYWtwb2ludHMsIC4uLnN0eWxlc10ucmVkdWNlKChwcmV2LCBuZXh0KSA9PiBkZWVwbWVyZ2UocHJldiwgbmV4dCksIHt9KTtcbiAgcmV0dXJuIHJlbW92ZVVudXNlZEJyZWFrcG9pbnRzKE9iamVjdC5rZXlzKGVtcHR5QnJlYWtwb2ludHMpLCBtZXJnZWRPdXRwdXQpO1xufVxuXG4vLyBjb21wdXRlIGJhc2UgZm9yIHJlc3BvbnNpdmUgdmFsdWVzOyBlLmcuLFxuLy8gWzEsMiwzXSA9PiB7eHM6IHRydWUsIHNtOiB0cnVlLCBtZDogdHJ1ZX1cbi8vIHt4czogMSwgc206IDIsIG1kOiAzfSA9PiB7eHM6IHRydWUsIHNtOiB0cnVlLCBtZDogdHJ1ZX1cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQnJlYWtwb2ludHNCYXNlKGJyZWFrcG9pbnRWYWx1ZXMsIHRoZW1lQnJlYWtwb2ludHMpIHtcbiAgLy8gZml4ZWQgdmFsdWVcbiAgaWYgKHR5cGVvZiBicmVha3BvaW50VmFsdWVzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBiYXNlID0ge307XG4gIGNvbnN0IGJyZWFrcG9pbnRzS2V5cyA9IE9iamVjdC5rZXlzKHRoZW1lQnJlYWtwb2ludHMpO1xuICBpZiAoQXJyYXkuaXNBcnJheShicmVha3BvaW50VmFsdWVzKSkge1xuICAgIGJyZWFrcG9pbnRzS2V5cy5mb3JFYWNoKChicmVha3BvaW50LCBpKSA9PiB7XG4gICAgICBpZiAoaSA8IGJyZWFrcG9pbnRWYWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIGJhc2VbYnJlYWtwb2ludF0gPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJyZWFrcG9pbnRzS2V5cy5mb3JFYWNoKGJyZWFrcG9pbnQgPT4ge1xuICAgICAgaWYgKGJyZWFrcG9pbnRWYWx1ZXNbYnJlYWtwb2ludF0gIT0gbnVsbCkge1xuICAgICAgICBiYXNlW2JyZWFrcG9pbnRdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYmFzZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQnJlYWtwb2ludFZhbHVlcyh7XG4gIHZhbHVlczogYnJlYWtwb2ludFZhbHVlcyxcbiAgYnJlYWtwb2ludHM6IHRoZW1lQnJlYWtwb2ludHMsXG4gIGJhc2U6IGN1c3RvbUJhc2Vcbn0pIHtcbiAgY29uc3QgYmFzZSA9IGN1c3RvbUJhc2UgfHwgY29tcHV0ZUJyZWFrcG9pbnRzQmFzZShicmVha3BvaW50VmFsdWVzLCB0aGVtZUJyZWFrcG9pbnRzKTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGJhc2UpO1xuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gYnJlYWtwb2ludFZhbHVlcztcbiAgfVxuICBsZXQgcHJldmlvdXM7XG4gIHJldHVybiBrZXlzLnJlZHVjZSgoYWNjLCBicmVha3BvaW50LCBpKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYnJlYWtwb2ludFZhbHVlcykpIHtcbiAgICAgIGFjY1ticmVha3BvaW50XSA9IGJyZWFrcG9pbnRWYWx1ZXNbaV0gIT0gbnVsbCA/IGJyZWFrcG9pbnRWYWx1ZXNbaV0gOiBicmVha3BvaW50VmFsdWVzW3ByZXZpb3VzXTtcbiAgICAgIHByZXZpb3VzID0gaTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBicmVha3BvaW50VmFsdWVzID09PSAnb2JqZWN0Jykge1xuICAgICAgYWNjW2JyZWFrcG9pbnRdID0gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XSAhPSBudWxsID8gYnJlYWtwb2ludFZhbHVlc1ticmVha3BvaW50XSA6IGJyZWFrcG9pbnRWYWx1ZXNbcHJldmlvdXNdO1xuICAgICAgcHJldmlvdXMgPSBicmVha3BvaW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2NbYnJlYWtwb2ludF0gPSBicmVha3BvaW50VmFsdWVzO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5leHBvcnQgZGVmYXVsdCBicmVha3BvaW50czsiLCIvKipcbiAqIFdBUk5JTkc6IERvbid0IGltcG9ydCB0aGlzIGRpcmVjdGx5LlxuICogVXNlIGBNdWlFcnJvcmAgZnJvbSBgQG11aS91dGlscy9tYWNyb3MvTXVpRXJyb3IubWFjcm9gIGluc3RlYWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY29kZVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXRNdWlFcnJvck1lc3NhZ2UoY29kZSkge1xuICAvLyBBcHBseSBiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXRlbXBsYXRlLWxpdGVyYWxzIGluIGxvb3NlIG1vZGVcbiAgLy8gbG9vc2UgbW9kZSBpcyBzYWZlIGlmZiB3ZSdyZSBjb25jYXRlbmF0aW5nIHByaW1pdGl2ZXNcbiAgLy8gc2VlIGh0dHBzOi8vYmFiZWxqcy5pby9kb2NzL2VuL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tdGVtcGxhdGUtbGl0ZXJhbHMjbG9vc2VcbiAgLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLXRlbXBsYXRlICovXG4gIGxldCB1cmwgPSAnaHR0cHM6Ly9tdWkuY29tL3Byb2R1Y3Rpb24tZXJyb3IvP2NvZGU9JyArIGNvZGU7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgLy8gcmVzdCBwYXJhbXMgb3Zlci10cmFuc3BpbGUgZm9yIHRoaXMgY2FzZVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICB1cmwgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbaV0pO1xuICB9XG4gIHJldHVybiAnTWluaWZpZWQgTVVJIGVycm9yICMnICsgY29kZSArICc7IHZpc2l0ICcgKyB1cmwgKyAnIGZvciB0aGUgZnVsbCBtZXNzYWdlLic7XG4gIC8qIGVzbGludC1lbmFibGUgcHJlZmVyLXRlbXBsYXRlICovXG59IiwiaW1wb3J0IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UgZnJvbSBcIi4uL2Zvcm1hdE11aUVycm9yTWVzc2FnZVwiO1xuLy8gSXQgc2hvdWxkIHRvIGJlIG5vdGVkIHRoYXQgdGhpcyBmdW5jdGlvbiBpc24ndCBlcXVpdmFsZW50IHRvIGB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZWAuXG4vL1xuLy8gQSBzdHJpY3QgY2FwaXRhbGl6YXRpb24gc2hvdWxkIHVwcGVyY2FzZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGVhY2ggd29yZCBpbiB0aGUgc2VudGVuY2UuXG4vLyBXZSBvbmx5IGhhbmRsZSB0aGUgZmlyc3Qgd29yZC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNhcGl0YWxpemUoc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBgTVVJOiBcXGBjYXBpdGFsaXplKHN0cmluZylcXGAgZXhwZWN0cyBhIHN0cmluZyBhcmd1bWVudC5gIDogX2Zvcm1hdE11aUVycm9yTWVzc2FnZSg3KSk7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgxKTtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9jYXBpdGFsaXplIGFzIGNhcGl0YWxpemUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCByZXNwb25zaXZlUHJvcFR5cGUgZnJvbSAnLi9yZXNwb25zaXZlUHJvcFR5cGUnO1xuaW1wb3J0IHsgaGFuZGxlQnJlYWtwb2ludHMgfSBmcm9tICcuL2JyZWFrcG9pbnRzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoKG9iaiwgcGF0aCwgY2hlY2tWYXJzID0gdHJ1ZSkge1xuICBpZiAoIXBhdGggfHwgdHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDaGVjayBpZiBDU1MgdmFyaWFibGVzIGFyZSB1c2VkXG4gIGlmIChvYmogJiYgb2JqLnZhcnMgJiYgY2hlY2tWYXJzKSB7XG4gICAgY29uc3QgdmFsID0gYHZhcnMuJHtwYXRofWAuc3BsaXQoJy4nKS5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gYWNjICYmIGFjY1tpdGVtXSA/IGFjY1tpdGVtXSA6IG51bGwsIG9iaik7XG4gICAgaWYgKHZhbCAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGF0aC5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7XG4gICAgaWYgKGFjYyAmJiBhY2NbaXRlbV0gIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGFjY1tpdGVtXTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sIG9iaik7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0U3R5bGVWYWx1ZSh0aGVtZU1hcHBpbmcsIHRyYW5zZm9ybSwgcHJvcFZhbHVlRmluYWwsIHVzZXJWYWx1ZSA9IHByb3BWYWx1ZUZpbmFsKSB7XG4gIGxldCB2YWx1ZTtcbiAgaWYgKHR5cGVvZiB0aGVtZU1hcHBpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YWx1ZSA9IHRoZW1lTWFwcGluZyhwcm9wVmFsdWVGaW5hbCk7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGVtZU1hcHBpbmcpKSB7XG4gICAgdmFsdWUgPSB0aGVtZU1hcHBpbmdbcHJvcFZhbHVlRmluYWxdIHx8IHVzZXJWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGdldFBhdGgodGhlbWVNYXBwaW5nLCBwcm9wVmFsdWVGaW5hbCkgfHwgdXNlclZhbHVlO1xuICB9XG4gIGlmICh0cmFuc2Zvcm0pIHtcbiAgICB2YWx1ZSA9IHRyYW5zZm9ybSh2YWx1ZSwgdXNlclZhbHVlLCB0aGVtZU1hcHBpbmcpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbmZ1bmN0aW9uIHN0eWxlKG9wdGlvbnMpIHtcbiAgY29uc3Qge1xuICAgIHByb3AsXG4gICAgY3NzUHJvcGVydHkgPSBvcHRpb25zLnByb3AsXG4gICAgdGhlbWVLZXksXG4gICAgdHJhbnNmb3JtXG4gIH0gPSBvcHRpb25zO1xuXG4gIC8vIGZhbHNlIHBvc2l0aXZlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvblxuICBjb25zdCBmbiA9IHByb3BzID0+IHtcbiAgICBpZiAocHJvcHNbcHJvcF0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHByb3BWYWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgIGNvbnN0IHRoZW1lID0gcHJvcHMudGhlbWU7XG4gICAgY29uc3QgdGhlbWVNYXBwaW5nID0gZ2V0UGF0aCh0aGVtZSwgdGhlbWVLZXkpIHx8IHt9O1xuICAgIGNvbnN0IHN0eWxlRnJvbVByb3BWYWx1ZSA9IHByb3BWYWx1ZUZpbmFsID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGdldFN0eWxlVmFsdWUodGhlbWVNYXBwaW5nLCB0cmFuc2Zvcm0sIHByb3BWYWx1ZUZpbmFsKTtcbiAgICAgIGlmIChwcm9wVmFsdWVGaW5hbCA9PT0gdmFsdWUgJiYgdHlwZW9mIHByb3BWYWx1ZUZpbmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICAvLyBIYXZlbid0IGZvdW5kIHZhbHVlXG4gICAgICAgIHZhbHVlID0gZ2V0U3R5bGVWYWx1ZSh0aGVtZU1hcHBpbmcsIHRyYW5zZm9ybSwgYCR7cHJvcH0ke3Byb3BWYWx1ZUZpbmFsID09PSAnZGVmYXVsdCcgPyAnJyA6IGNhcGl0YWxpemUocHJvcFZhbHVlRmluYWwpfWAsIHByb3BWYWx1ZUZpbmFsKTtcbiAgICAgIH1cbiAgICAgIGlmIChjc3NQcm9wZXJ0eSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW2Nzc1Byb3BlcnR5XTogdmFsdWVcbiAgICAgIH07XG4gICAgfTtcbiAgICByZXR1cm4gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BWYWx1ZSwgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbiAgfTtcbiAgZm4ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHtcbiAgICBbcHJvcF06IHJlc3BvbnNpdmVQcm9wVHlwZVxuICB9IDoge307XG4gIGZuLmZpbHRlclByb3BzID0gW3Byb3BdO1xuICByZXR1cm4gZm47XG59XG5leHBvcnQgZGVmYXVsdCBzdHlsZTsiLCJpbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmZ1bmN0aW9uIG1lcmdlKGFjYywgaXRlbSkge1xuICBpZiAoIWl0ZW0pIHtcbiAgICByZXR1cm4gYWNjO1xuICB9XG4gIHJldHVybiBkZWVwbWVyZ2UoYWNjLCBpdGVtLCB7XG4gICAgY2xvbmU6IGZhbHNlIC8vIE5vIG5lZWQgdG8gY2xvbmUgZGVlcCwgaXQncyB3YXkgZmFzdGVyLlxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVyZ2U7IiwiaW1wb3J0IHJlc3BvbnNpdmVQcm9wVHlwZSBmcm9tICcuL3Jlc3BvbnNpdmVQcm9wVHlwZSc7XG5pbXBvcnQgeyBoYW5kbGVCcmVha3BvaW50cyB9IGZyb20gJy4vYnJlYWtwb2ludHMnO1xuaW1wb3J0IHsgZ2V0UGF0aCB9IGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IG1lcmdlIGZyb20gJy4vbWVyZ2UnO1xuaW1wb3J0IG1lbW9pemUgZnJvbSAnLi9tZW1vaXplJztcbmNvbnN0IHByb3BlcnRpZXMgPSB7XG4gIG06ICdtYXJnaW4nLFxuICBwOiAncGFkZGluZydcbn07XG5jb25zdCBkaXJlY3Rpb25zID0ge1xuICB0OiAnVG9wJyxcbiAgcjogJ1JpZ2h0JyxcbiAgYjogJ0JvdHRvbScsXG4gIGw6ICdMZWZ0JyxcbiAgeDogWydMZWZ0JywgJ1JpZ2h0J10sXG4gIHk6IFsnVG9wJywgJ0JvdHRvbSddXG59O1xuY29uc3QgYWxpYXNlcyA9IHtcbiAgbWFyZ2luWDogJ214JyxcbiAgbWFyZ2luWTogJ215JyxcbiAgcGFkZGluZ1g6ICdweCcsXG4gIHBhZGRpbmdZOiAncHknXG59O1xuXG4vLyBtZW1vaXplKCkgaW1wYWN0OlxuLy8gRnJvbSAzMDAsMDAwIG9wcy9zZWNcbi8vIFRvIDM1MCwwMDAgb3BzL3NlY1xuY29uc3QgZ2V0Q3NzUHJvcGVydGllcyA9IG1lbW9pemUocHJvcCA9PiB7XG4gIC8vIEl0J3Mgbm90IGEgc2hvcnRoYW5kIG5vdGF0aW9uLlxuICBpZiAocHJvcC5sZW5ndGggPiAyKSB7XG4gICAgaWYgKGFsaWFzZXNbcHJvcF0pIHtcbiAgICAgIHByb3AgPSBhbGlhc2VzW3Byb3BdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gW3Byb3BdO1xuICAgIH1cbiAgfVxuICBjb25zdCBbYSwgYl0gPSBwcm9wLnNwbGl0KCcnKTtcbiAgY29uc3QgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2FdO1xuICBjb25zdCBkaXJlY3Rpb24gPSBkaXJlY3Rpb25zW2JdIHx8ICcnO1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShkaXJlY3Rpb24pID8gZGlyZWN0aW9uLm1hcChkaXIgPT4gcHJvcGVydHkgKyBkaXIpIDogW3Byb3BlcnR5ICsgZGlyZWN0aW9uXTtcbn0pO1xuZXhwb3J0IGNvbnN0IG1hcmdpbktleXMgPSBbJ20nLCAnbXQnLCAnbXInLCAnbWInLCAnbWwnLCAnbXgnLCAnbXknLCAnbWFyZ2luJywgJ21hcmdpblRvcCcsICdtYXJnaW5SaWdodCcsICdtYXJnaW5Cb3R0b20nLCAnbWFyZ2luTGVmdCcsICdtYXJnaW5YJywgJ21hcmdpblknLCAnbWFyZ2luSW5saW5lJywgJ21hcmdpbklubGluZVN0YXJ0JywgJ21hcmdpbklubGluZUVuZCcsICdtYXJnaW5CbG9jaycsICdtYXJnaW5CbG9ja1N0YXJ0JywgJ21hcmdpbkJsb2NrRW5kJ107XG5leHBvcnQgY29uc3QgcGFkZGluZ0tleXMgPSBbJ3AnLCAncHQnLCAncHInLCAncGInLCAncGwnLCAncHgnLCAncHknLCAncGFkZGluZycsICdwYWRkaW5nVG9wJywgJ3BhZGRpbmdSaWdodCcsICdwYWRkaW5nQm90dG9tJywgJ3BhZGRpbmdMZWZ0JywgJ3BhZGRpbmdYJywgJ3BhZGRpbmdZJywgJ3BhZGRpbmdJbmxpbmUnLCAncGFkZGluZ0lubGluZVN0YXJ0JywgJ3BhZGRpbmdJbmxpbmVFbmQnLCAncGFkZGluZ0Jsb2NrJywgJ3BhZGRpbmdCbG9ja1N0YXJ0JywgJ3BhZGRpbmdCbG9ja0VuZCddO1xuY29uc3Qgc3BhY2luZ0tleXMgPSBbLi4ubWFyZ2luS2V5cywgLi4ucGFkZGluZ0tleXNdO1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuYXJ5VW5pdCh0aGVtZSwgdGhlbWVLZXksIGRlZmF1bHRWYWx1ZSwgcHJvcE5hbWUpIHtcbiAgdmFyIF9nZXRQYXRoO1xuICBjb25zdCB0aGVtZVNwYWNpbmcgPSAoX2dldFBhdGggPSBnZXRQYXRoKHRoZW1lLCB0aGVtZUtleSwgZmFsc2UpKSAhPSBudWxsID8gX2dldFBhdGggOiBkZWZhdWx0VmFsdWU7XG4gIGlmICh0eXBlb2YgdGhlbWVTcGFjaW5nID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBhYnMgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhYnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhYnM7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAodHlwZW9mIGFicyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IEV4cGVjdGVkICR7cHJvcE5hbWV9IGFyZ3VtZW50IHRvIGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nLCBnb3QgJHthYnN9LmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhlbWVTcGFjaW5nICogYWJzO1xuICAgIH07XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodGhlbWVTcGFjaW5nKSkge1xuICAgIHJldHVybiBhYnMgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBhYnMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBhYnM7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoYWJzKSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBcXGB0aGVtZS4ke3RoZW1lS2V5fVxcYCBhcnJheSB0eXBlIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG5vbiBpbnRlZ2VyIHZhbHVlcy5gICsgYFlvdSBzaG91bGQgZWl0aGVyIHVzZSBhbiBpbnRlZ2VyIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgYXMgaW5kZXgsIG9yIGRlZmluZSB0aGUgXFxgdGhlbWUuJHt0aGVtZUtleX1cXGAgYXMgYSBudW1iZXIuYF0uam9pbignXFxuJykpO1xuICAgICAgICB9IGVsc2UgaWYgKGFicyA+IHRoZW1lU3BhY2luZy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogVGhlIHZhbHVlIHByb3ZpZGVkICgke2Fic30pIG92ZXJmbG93cy5gLCBgVGhlIHN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAke0pTT04uc3RyaW5naWZ5KHRoZW1lU3BhY2luZyl9LmAsIGAke2Fic30gPiAke3RoZW1lU3BhY2luZy5sZW5ndGggLSAxfSwgeW91IG5lZWQgdG8gYWRkIHRoZSBtaXNzaW5nIHZhbHVlcy5gXS5qb2luKCdcXG4nKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGVtZVNwYWNpbmdbYWJzXTtcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2YgdGhlbWVTcGFjaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHRoZW1lU3BhY2luZztcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBcXGB0aGVtZS4ke3RoZW1lS2V5fVxcYCB2YWx1ZSAoJHt0aGVtZVNwYWNpbmd9KSBpcyBpbnZhbGlkLmAsICdJdCBzaG91bGQgYmUgYSBudW1iZXIsIGFuIGFycmF5IG9yIGEgZnVuY3Rpb24uJ10uam9pbignXFxuJykpO1xuICB9XG4gIHJldHVybiAoKSA9PiB1bmRlZmluZWQ7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVW5hcnlTcGFjaW5nKHRoZW1lKSB7XG4gIHJldHVybiBjcmVhdGVVbmFyeVVuaXQodGhlbWUsICdzcGFjaW5nJywgOCwgJ3NwYWNpbmcnKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRWYWx1ZSh0cmFuc2Zvcm1lciwgcHJvcFZhbHVlKSB7XG4gIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAnc3RyaW5nJyB8fCBwcm9wVmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiBwcm9wVmFsdWU7XG4gIH1cbiAgY29uc3QgYWJzID0gTWF0aC5hYnMocHJvcFZhbHVlKTtcbiAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1lcihhYnMpO1xuICBpZiAocHJvcFZhbHVlID49IDApIHtcbiAgICByZXR1cm4gdHJhbnNmb3JtZWQ7XG4gIH1cbiAgaWYgKHR5cGVvZiB0cmFuc2Zvcm1lZCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gLXRyYW5zZm9ybWVkO1xuICB9XG4gIHJldHVybiBgLSR7dHJhbnNmb3JtZWR9YDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdHlsZUZyb21Qcm9wVmFsdWUoY3NzUHJvcGVydGllcywgdHJhbnNmb3JtZXIpIHtcbiAgcmV0dXJuIHByb3BWYWx1ZSA9PiBjc3NQcm9wZXJ0aWVzLnJlZHVjZSgoYWNjLCBjc3NQcm9wZXJ0eSkgPT4ge1xuICAgIGFjY1tjc3NQcm9wZXJ0eV0gPSBnZXRWYWx1ZSh0cmFuc2Zvcm1lciwgcHJvcFZhbHVlKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG59XG5mdW5jdGlvbiByZXNvbHZlQ3NzUHJvcGVydHkocHJvcHMsIGtleXMsIHByb3AsIHRyYW5zZm9ybWVyKSB7XG4gIC8vIFVzaW5nIGEgaGFzaCBjb21wdXRhdGlvbiBvdmVyIGFuIGFycmF5IGl0ZXJhdGlvbiBjb3VsZCBiZSBmYXN0ZXIsIGJ1dCB3aXRoIG9ubHkgMjggaXRlbXMsXG4gIC8vIGl0J3MgZG9lc24ndCB3b3J0aCB0aGUgYnVuZGxlIHNpemUuXG4gIGlmIChrZXlzLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY3NzUHJvcGVydGllcyA9IGdldENzc1Byb3BlcnRpZXMocHJvcCk7XG4gIGNvbnN0IHN0eWxlRnJvbVByb3BWYWx1ZSA9IGdldFN0eWxlRnJvbVByb3BWYWx1ZShjc3NQcm9wZXJ0aWVzLCB0cmFuc2Zvcm1lcik7XG4gIGNvbnN0IHByb3BWYWx1ZSA9IHByb3BzW3Byb3BdO1xuICByZXR1cm4gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BWYWx1ZSwgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbn1cbmZ1bmN0aW9uIHN0eWxlKHByb3BzLCBrZXlzKSB7XG4gIGNvbnN0IHRyYW5zZm9ybWVyID0gY3JlYXRlVW5hcnlTcGFjaW5nKHByb3BzLnRoZW1lKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BzKS5tYXAocHJvcCA9PiByZXNvbHZlQ3NzUHJvcGVydHkocHJvcHMsIGtleXMsIHByb3AsIHRyYW5zZm9ybWVyKSkucmVkdWNlKG1lcmdlLCB7fSk7XG59XG5leHBvcnQgZnVuY3Rpb24gbWFyZ2luKHByb3BzKSB7XG4gIHJldHVybiBzdHlsZShwcm9wcywgbWFyZ2luS2V5cyk7XG59XG5tYXJnaW4ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IG1hcmdpbktleXMucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICBvYmpba2V5XSA9IHJlc3BvbnNpdmVQcm9wVHlwZTtcbiAgcmV0dXJuIG9iajtcbn0sIHt9KSA6IHt9O1xubWFyZ2luLmZpbHRlclByb3BzID0gbWFyZ2luS2V5cztcbmV4cG9ydCBmdW5jdGlvbiBwYWRkaW5nKHByb3BzKSB7XG4gIHJldHVybiBzdHlsZShwcm9wcywgcGFkZGluZ0tleXMpO1xufVxucGFkZGluZy5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gcGFkZGluZ0tleXMucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICBvYmpba2V5XSA9IHJlc3BvbnNpdmVQcm9wVHlwZTtcbiAgcmV0dXJuIG9iajtcbn0sIHt9KSA6IHt9O1xucGFkZGluZy5maWx0ZXJQcm9wcyA9IHBhZGRpbmdLZXlzO1xuZnVuY3Rpb24gc3BhY2luZyhwcm9wcykge1xuICByZXR1cm4gc3R5bGUocHJvcHMsIHNwYWNpbmdLZXlzKTtcbn1cbnNwYWNpbmcucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHNwYWNpbmdLZXlzLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgb2JqW2tleV0gPSByZXNwb25zaXZlUHJvcFR5cGU7XG4gIHJldHVybiBvYmo7XG59LCB7fSkgOiB7fTtcbnNwYWNpbmcuZmlsdGVyUHJvcHMgPSBzcGFjaW5nS2V5cztcbmV4cG9ydCBkZWZhdWx0IHNwYWNpbmc7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVtb2l6ZShmbikge1xuICBjb25zdCBjYWNoZSA9IHt9O1xuICByZXR1cm4gYXJnID0+IHtcbiAgICBpZiAoY2FjaGVbYXJnXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjYWNoZVthcmddID0gZm4oYXJnKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlW2FyZ107XG4gIH07XG59IiwiaW1wb3J0IG1lcmdlIGZyb20gJy4vbWVyZ2UnO1xuZnVuY3Rpb24gY29tcG9zZSguLi5zdHlsZXMpIHtcbiAgY29uc3QgaGFuZGxlcnMgPSBzdHlsZXMucmVkdWNlKChhY2MsIHN0eWxlKSA9PiB7XG4gICAgc3R5bGUuZmlsdGVyUHJvcHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGFjY1twcm9wXSA9IHN0eWxlO1xuICAgIH0pO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcblxuICAvLyBmYWxzZSBwb3NpdGl2ZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb25cbiAgY29uc3QgZm4gPSBwcm9wcyA9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHByb3BzKS5yZWR1Y2UoKGFjYywgcHJvcCkgPT4ge1xuICAgICAgaWYgKGhhbmRsZXJzW3Byb3BdKSB7XG4gICAgICAgIHJldHVybiBtZXJnZShhY2MsIGhhbmRsZXJzW3Byb3BdKHByb3BzKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfTtcbiAgZm4ucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHN0eWxlcy5yZWR1Y2UoKGFjYywgc3R5bGUpID0+IE9iamVjdC5hc3NpZ24oYWNjLCBzdHlsZS5wcm9wVHlwZXMpLCB7fSkgOiB7fTtcbiAgZm4uZmlsdGVyUHJvcHMgPSBzdHlsZXMucmVkdWNlKChhY2MsIHN0eWxlKSA9PiBhY2MuY29uY2F0KHN0eWxlLmZpbHRlclByb3BzKSwgW10pO1xuICByZXR1cm4gZm47XG59XG5leHBvcnQgZGVmYXVsdCBjb21wb3NlOyIsImltcG9ydCByZXNwb25zaXZlUHJvcFR5cGUgZnJvbSAnLi9yZXNwb25zaXZlUHJvcFR5cGUnO1xuaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IGNvbXBvc2UgZnJvbSAnLi9jb21wb3NlJztcbmltcG9ydCB7IGNyZWF0ZVVuYXJ5VW5pdCwgZ2V0VmFsdWUgfSBmcm9tICcuL3NwYWNpbmcnO1xuaW1wb3J0IHsgaGFuZGxlQnJlYWtwb2ludHMgfSBmcm9tICcuL2JyZWFrcG9pbnRzJztcbmV4cG9ydCBmdW5jdGlvbiBib3JkZXJUcmFuc2Zvcm0odmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGAke3ZhbHVlfXB4IHNvbGlkYDtcbn1cbmV4cG9ydCBjb25zdCBib3JkZXIgPSBzdHlsZSh7XG4gIHByb3A6ICdib3JkZXInLFxuICB0aGVtZUtleTogJ2JvcmRlcnMnLFxuICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyVG9wID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyVG9wJyxcbiAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlclJpZ2h0ID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyUmlnaHQnLFxuICB0aGVtZUtleTogJ2JvcmRlcnMnLFxuICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyQm90dG9tID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyQm90dG9tJyxcbiAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlckxlZnQgPSBzdHlsZSh7XG4gIHByb3A6ICdib3JkZXJMZWZ0JyxcbiAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgdHJhbnNmb3JtOiBib3JkZXJUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGJvcmRlckNvbG9yID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyQ29sb3InLFxuICB0aGVtZUtleTogJ3BhbGV0dGUnXG59KTtcbmV4cG9ydCBjb25zdCBib3JkZXJUb3BDb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlclRvcENvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJ1xufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyUmlnaHRDb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlclJpZ2h0Q29sb3InLFxuICB0aGVtZUtleTogJ3BhbGV0dGUnXG59KTtcbmV4cG9ydCBjb25zdCBib3JkZXJCb3R0b21Db2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JvcmRlckJvdHRvbUNvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJ1xufSk7XG5leHBvcnQgY29uc3QgYm9yZGVyTGVmdENvbG9yID0gc3R5bGUoe1xuICBwcm9wOiAnYm9yZGVyTGVmdENvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJ1xufSk7XG5cbi8vIGZhbHNlIHBvc2l0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb25cbmV4cG9ydCBjb25zdCBib3JkZXJSYWRpdXMgPSBwcm9wcyA9PiB7XG4gIGlmIChwcm9wcy5ib3JkZXJSYWRpdXMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5ib3JkZXJSYWRpdXMgIT09IG51bGwpIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGNyZWF0ZVVuYXJ5VW5pdChwcm9wcy50aGVtZSwgJ3NoYXBlLmJvcmRlclJhZGl1cycsIDQsICdib3JkZXJSYWRpdXMnKTtcbiAgICBjb25zdCBzdHlsZUZyb21Qcm9wVmFsdWUgPSBwcm9wVmFsdWUgPT4gKHtcbiAgICAgIGJvcmRlclJhZGl1czogZ2V0VmFsdWUodHJhbnNmb3JtZXIsIHByb3BWYWx1ZSlcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BzLmJvcmRlclJhZGl1cywgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5ib3JkZXJSYWRpdXMucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHtcbiAgYm9yZGVyUmFkaXVzOiByZXNwb25zaXZlUHJvcFR5cGVcbn0gOiB7fTtcbmJvcmRlclJhZGl1cy5maWx0ZXJQcm9wcyA9IFsnYm9yZGVyUmFkaXVzJ107XG5jb25zdCBib3JkZXJzID0gY29tcG9zZShib3JkZXIsIGJvcmRlclRvcCwgYm9yZGVyUmlnaHQsIGJvcmRlckJvdHRvbSwgYm9yZGVyTGVmdCwgYm9yZGVyQ29sb3IsIGJvcmRlclRvcENvbG9yLCBib3JkZXJSaWdodENvbG9yLCBib3JkZXJCb3R0b21Db2xvciwgYm9yZGVyTGVmdENvbG9yLCBib3JkZXJSYWRpdXMpO1xuZXhwb3J0IGRlZmF1bHQgYm9yZGVyczsiLCJpbXBvcnQgc3R5bGUgZnJvbSAnLi9zdHlsZSc7XG5pbXBvcnQgY29tcG9zZSBmcm9tICcuL2NvbXBvc2UnO1xuaW1wb3J0IHsgY3JlYXRlVW5hcnlVbml0LCBnZXRWYWx1ZSB9IGZyb20gJy4vc3BhY2luZyc7XG5pbXBvcnQgeyBoYW5kbGVCcmVha3BvaW50cyB9IGZyb20gJy4vYnJlYWtwb2ludHMnO1xuaW1wb3J0IHJlc3BvbnNpdmVQcm9wVHlwZSBmcm9tICcuL3Jlc3BvbnNpdmVQcm9wVHlwZSc7XG5cbi8vIGZhbHNlIHBvc2l0aXZlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb25cbmV4cG9ydCBjb25zdCBnYXAgPSBwcm9wcyA9PiB7XG4gIGlmIChwcm9wcy5nYXAgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5nYXAgIT09IG51bGwpIHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lciA9IGNyZWF0ZVVuYXJ5VW5pdChwcm9wcy50aGVtZSwgJ3NwYWNpbmcnLCA4LCAnZ2FwJyk7XG4gICAgY29uc3Qgc3R5bGVGcm9tUHJvcFZhbHVlID0gcHJvcFZhbHVlID0+ICh7XG4gICAgICBnYXA6IGdldFZhbHVlKHRyYW5zZm9ybWVyLCBwcm9wVmFsdWUpXG4gICAgfSk7XG4gICAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wcy5nYXAsIHN0eWxlRnJvbVByb3BWYWx1ZSk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuZ2FwLnByb3BUeXBlcyA9IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB7XG4gIGdhcDogcmVzcG9uc2l2ZVByb3BUeXBlXG59IDoge307XG5nYXAuZmlsdGVyUHJvcHMgPSBbJ2dhcCddO1xuXG4vLyBmYWxzZSBwb3NpdGl2ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2Z1bmN0aW9uLWNvbXBvbmVudC1kZWZpbml0aW9uXG5leHBvcnQgY29uc3QgY29sdW1uR2FwID0gcHJvcHMgPT4ge1xuICBpZiAocHJvcHMuY29sdW1uR2FwICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuY29sdW1uR2FwICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHJhbnNmb3JtZXIgPSBjcmVhdGVVbmFyeVVuaXQocHJvcHMudGhlbWUsICdzcGFjaW5nJywgOCwgJ2NvbHVtbkdhcCcpO1xuICAgIGNvbnN0IHN0eWxlRnJvbVByb3BWYWx1ZSA9IHByb3BWYWx1ZSA9PiAoe1xuICAgICAgY29sdW1uR2FwOiBnZXRWYWx1ZSh0cmFuc2Zvcm1lciwgcHJvcFZhbHVlKVxuICAgIH0pO1xuICAgIHJldHVybiBoYW5kbGVCcmVha3BvaW50cyhwcm9wcywgcHJvcHMuY29sdW1uR2FwLCBzdHlsZUZyb21Qcm9wVmFsdWUpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbHVtbkdhcC5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8ge1xuICBjb2x1bW5HYXA6IHJlc3BvbnNpdmVQcm9wVHlwZVxufSA6IHt9O1xuY29sdW1uR2FwLmZpbHRlclByb3BzID0gWydjb2x1bW5HYXAnXTtcblxuLy8gZmFsc2UgcG9zaXRpdmVcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvblxuZXhwb3J0IGNvbnN0IHJvd0dhcCA9IHByb3BzID0+IHtcbiAgaWYgKHByb3BzLnJvd0dhcCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLnJvd0dhcCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRyYW5zZm9ybWVyID0gY3JlYXRlVW5hcnlVbml0KHByb3BzLnRoZW1lLCAnc3BhY2luZycsIDgsICdyb3dHYXAnKTtcbiAgICBjb25zdCBzdHlsZUZyb21Qcm9wVmFsdWUgPSBwcm9wVmFsdWUgPT4gKHtcbiAgICAgIHJvd0dhcDogZ2V0VmFsdWUodHJhbnNmb3JtZXIsIHByb3BWYWx1ZSlcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlQnJlYWtwb2ludHMocHJvcHMsIHByb3BzLnJvd0dhcCwgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5yb3dHYXAucHJvcFR5cGVzID0gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHtcbiAgcm93R2FwOiByZXNwb25zaXZlUHJvcFR5cGVcbn0gOiB7fTtcbnJvd0dhcC5maWx0ZXJQcm9wcyA9IFsncm93R2FwJ107XG5leHBvcnQgY29uc3QgZ3JpZENvbHVtbiA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRDb2x1bW4nXG59KTtcbmV4cG9ydCBjb25zdCBncmlkUm93ID0gc3R5bGUoe1xuICBwcm9wOiAnZ3JpZFJvdydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRBdXRvRmxvdyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRBdXRvRmxvdydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRBdXRvQ29sdW1ucyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRBdXRvQ29sdW1ucydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRBdXRvUm93cyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRBdXRvUm93cydcbn0pO1xuZXhwb3J0IGNvbnN0IGdyaWRUZW1wbGF0ZUNvbHVtbnMgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkVGVtcGxhdGVDb2x1bW5zJ1xufSk7XG5leHBvcnQgY29uc3QgZ3JpZFRlbXBsYXRlUm93cyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRUZW1wbGF0ZVJvd3MnXG59KTtcbmV4cG9ydCBjb25zdCBncmlkVGVtcGxhdGVBcmVhcyA9IHN0eWxlKHtcbiAgcHJvcDogJ2dyaWRUZW1wbGF0ZUFyZWFzJ1xufSk7XG5leHBvcnQgY29uc3QgZ3JpZEFyZWEgPSBzdHlsZSh7XG4gIHByb3A6ICdncmlkQXJlYSdcbn0pO1xuY29uc3QgZ3JpZCA9IGNvbXBvc2UoZ2FwLCBjb2x1bW5HYXAsIHJvd0dhcCwgZ3JpZENvbHVtbiwgZ3JpZFJvdywgZ3JpZEF1dG9GbG93LCBncmlkQXV0b0NvbHVtbnMsIGdyaWRBdXRvUm93cywgZ3JpZFRlbXBsYXRlQ29sdW1ucywgZ3JpZFRlbXBsYXRlUm93cywgZ3JpZFRlbXBsYXRlQXJlYXMsIGdyaWRBcmVhKTtcbmV4cG9ydCBkZWZhdWx0IGdyaWQ7IiwiaW1wb3J0IHN0eWxlIGZyb20gJy4vc3R5bGUnO1xuaW1wb3J0IGNvbXBvc2UgZnJvbSAnLi9jb21wb3NlJztcbmV4cG9ydCBmdW5jdGlvbiBwYWxldHRlVHJhbnNmb3JtKHZhbHVlLCB1c2VyVmFsdWUpIHtcbiAgaWYgKHVzZXJWYWx1ZSA9PT0gJ2dyZXknKSB7XG4gICAgcmV0dXJuIHVzZXJWYWx1ZTtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59XG5leHBvcnQgY29uc3QgY29sb3IgPSBzdHlsZSh7XG4gIHByb3A6ICdjb2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZScsXG4gIHRyYW5zZm9ybTogcGFsZXR0ZVRyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgYmdjb2xvciA9IHN0eWxlKHtcbiAgcHJvcDogJ2JnY29sb3InLFxuICBjc3NQcm9wZXJ0eTogJ2JhY2tncm91bmRDb2xvcicsXG4gIHRoZW1lS2V5OiAncGFsZXR0ZScsXG4gIHRyYW5zZm9ybTogcGFsZXR0ZVRyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgYmFja2dyb3VuZENvbG9yID0gc3R5bGUoe1xuICBwcm9wOiAnYmFja2dyb3VuZENvbG9yJyxcbiAgdGhlbWVLZXk6ICdwYWxldHRlJyxcbiAgdHJhbnNmb3JtOiBwYWxldHRlVHJhbnNmb3JtXG59KTtcbmNvbnN0IHBhbGV0dGUgPSBjb21wb3NlKGNvbG9yLCBiZ2NvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpO1xuZXhwb3J0IGRlZmF1bHQgcGFsZXR0ZTsiLCJpbXBvcnQgc3R5bGUgZnJvbSAnLi9zdHlsZSc7XG5pbXBvcnQgY29tcG9zZSBmcm9tICcuL2NvbXBvc2UnO1xuaW1wb3J0IHsgaGFuZGxlQnJlYWtwb2ludHMsIHZhbHVlcyBhcyBicmVha3BvaW50c1ZhbHVlcyB9IGZyb20gJy4vYnJlYWtwb2ludHMnO1xuZXhwb3J0IGZ1bmN0aW9uIHNpemluZ1RyYW5zZm9ybSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPD0gMSAmJiB2YWx1ZSAhPT0gMCA/IGAke3ZhbHVlICogMTAwfSVgIDogdmFsdWU7XG59XG5leHBvcnQgY29uc3Qgd2lkdGggPSBzdHlsZSh7XG4gIHByb3A6ICd3aWR0aCcsXG4gIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBtYXhXaWR0aCA9IHByb3BzID0+IHtcbiAgaWYgKHByb3BzLm1heFdpZHRoICE9PSB1bmRlZmluZWQgJiYgcHJvcHMubWF4V2lkdGggIT09IG51bGwpIHtcbiAgICBjb25zdCBzdHlsZUZyb21Qcm9wVmFsdWUgPSBwcm9wVmFsdWUgPT4ge1xuICAgICAgdmFyIF9wcm9wcyR0aGVtZTtcbiAgICAgIGNvbnN0IGJyZWFrcG9pbnQgPSAoKF9wcm9wcyR0aGVtZSA9IHByb3BzLnRoZW1lKSA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBfcHJvcHMkdGhlbWUuYnJlYWtwb2ludHMpID09IG51bGwgfHwgKF9wcm9wcyR0aGVtZSA9IF9wcm9wcyR0aGVtZS52YWx1ZXMpID09IG51bGwgPyB2b2lkIDAgOiBfcHJvcHMkdGhlbWVbcHJvcFZhbHVlXSkgfHwgYnJlYWtwb2ludHNWYWx1ZXNbcHJvcFZhbHVlXTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1heFdpZHRoOiBicmVha3BvaW50IHx8IHNpemluZ1RyYW5zZm9ybShwcm9wVmFsdWUpXG4gICAgICB9O1xuICAgIH07XG4gICAgcmV0dXJuIGhhbmRsZUJyZWFrcG9pbnRzKHByb3BzLCBwcm9wcy5tYXhXaWR0aCwgc3R5bGVGcm9tUHJvcFZhbHVlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5tYXhXaWR0aC5maWx0ZXJQcm9wcyA9IFsnbWF4V2lkdGgnXTtcbmV4cG9ydCBjb25zdCBtaW5XaWR0aCA9IHN0eWxlKHtcbiAgcHJvcDogJ21pbldpZHRoJyxcbiAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IGhlaWdodCA9IHN0eWxlKHtcbiAgcHJvcDogJ2hlaWdodCcsXG4gIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG59KTtcbmV4cG9ydCBjb25zdCBtYXhIZWlnaHQgPSBzdHlsZSh7XG4gIHByb3A6ICdtYXhIZWlnaHQnLFxuICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgbWluSGVpZ2h0ID0gc3R5bGUoe1xuICBwcm9wOiAnbWluSGVpZ2h0JyxcbiAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IHNpemVXaWR0aCA9IHN0eWxlKHtcbiAgcHJvcDogJ3NpemUnLFxuICBjc3NQcm9wZXJ0eTogJ3dpZHRoJyxcbiAgdHJhbnNmb3JtOiBzaXppbmdUcmFuc2Zvcm1cbn0pO1xuZXhwb3J0IGNvbnN0IHNpemVIZWlnaHQgPSBzdHlsZSh7XG4gIHByb3A6ICdzaXplJyxcbiAgY3NzUHJvcGVydHk6ICdoZWlnaHQnLFxuICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxufSk7XG5leHBvcnQgY29uc3QgYm94U2l6aW5nID0gc3R5bGUoe1xuICBwcm9wOiAnYm94U2l6aW5nJ1xufSk7XG5jb25zdCBzaXppbmcgPSBjb21wb3NlKHdpZHRoLCBtYXhXaWR0aCwgbWluV2lkdGgsIGhlaWdodCwgbWF4SGVpZ2h0LCBtaW5IZWlnaHQsIGJveFNpemluZyk7XG5leHBvcnQgZGVmYXVsdCBzaXppbmc7IiwiaW1wb3J0IHsgcGFkZGluZywgbWFyZ2luIH0gZnJvbSAnLi4vc3BhY2luZyc7XG5pbXBvcnQgeyBib3JkZXJSYWRpdXMsIGJvcmRlclRyYW5zZm9ybSB9IGZyb20gJy4uL2JvcmRlcnMnO1xuaW1wb3J0IHsgZ2FwLCByb3dHYXAsIGNvbHVtbkdhcCB9IGZyb20gJy4uL2Nzc0dyaWQnO1xuaW1wb3J0IHsgcGFsZXR0ZVRyYW5zZm9ybSB9IGZyb20gJy4uL3BhbGV0dGUnO1xuaW1wb3J0IHsgbWF4V2lkdGgsIHNpemluZ1RyYW5zZm9ybSB9IGZyb20gJy4uL3NpemluZyc7XG5jb25zdCBkZWZhdWx0U3hDb25maWcgPSB7XG4gIC8vIGJvcmRlcnNcbiAgYm9yZGVyOiB7XG4gICAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxuICB9LFxuICBib3JkZXJUb3A6IHtcbiAgICB0aGVtZUtleTogJ2JvcmRlcnMnLFxuICAgIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG4gIH0sXG4gIGJvcmRlclJpZ2h0OiB7XG4gICAgdGhlbWVLZXk6ICdib3JkZXJzJyxcbiAgICB0cmFuc2Zvcm06IGJvcmRlclRyYW5zZm9ybVxuICB9LFxuICBib3JkZXJCb3R0b206IHtcbiAgICB0aGVtZUtleTogJ2JvcmRlcnMnLFxuICAgIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG4gIH0sXG4gIGJvcmRlckxlZnQ6IHtcbiAgICB0aGVtZUtleTogJ2JvcmRlcnMnLFxuICAgIHRyYW5zZm9ybTogYm9yZGVyVHJhbnNmb3JtXG4gIH0sXG4gIGJvcmRlckNvbG9yOiB7XG4gICAgdGhlbWVLZXk6ICdwYWxldHRlJ1xuICB9LFxuICBib3JkZXJUb3BDb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZSdcbiAgfSxcbiAgYm9yZGVyUmlnaHRDb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZSdcbiAgfSxcbiAgYm9yZGVyQm90dG9tQ29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnXG4gIH0sXG4gIGJvcmRlckxlZnRDb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZSdcbiAgfSxcbiAgYm9yZGVyUmFkaXVzOiB7XG4gICAgdGhlbWVLZXk6ICdzaGFwZS5ib3JkZXJSYWRpdXMnLFxuICAgIHN0eWxlOiBib3JkZXJSYWRpdXNcbiAgfSxcbiAgLy8gcGFsZXR0ZVxuICBjb2xvcjoge1xuICAgIHRoZW1lS2V5OiAncGFsZXR0ZScsXG4gICAgdHJhbnNmb3JtOiBwYWxldHRlVHJhbnNmb3JtXG4gIH0sXG4gIGJnY29sb3I6IHtcbiAgICB0aGVtZUtleTogJ3BhbGV0dGUnLFxuICAgIGNzc1Byb3BlcnR5OiAnYmFja2dyb3VuZENvbG9yJyxcbiAgICB0cmFuc2Zvcm06IHBhbGV0dGVUcmFuc2Zvcm1cbiAgfSxcbiAgYmFja2dyb3VuZENvbG9yOiB7XG4gICAgdGhlbWVLZXk6ICdwYWxldHRlJyxcbiAgICB0cmFuc2Zvcm06IHBhbGV0dGVUcmFuc2Zvcm1cbiAgfSxcbiAgLy8gc3BhY2luZ1xuICBwOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcHQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwcjoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBiOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGw6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBweDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHB5OiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZzoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdUb3A6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nUmlnaHQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nQm90dG9tOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ0xlZnQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nWDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdZOiB7XG4gICAgc3R5bGU6IHBhZGRpbmdcbiAgfSxcbiAgcGFkZGluZ0lubGluZToge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdJbmxpbmVTdGFydDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdJbmxpbmVFbmQ6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nQmxvY2s6IHtcbiAgICBzdHlsZTogcGFkZGluZ1xuICB9LFxuICBwYWRkaW5nQmxvY2tTdGFydDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIHBhZGRpbmdCbG9ja0VuZDoge1xuICAgIHN0eWxlOiBwYWRkaW5nXG4gIH0sXG4gIG06IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG10OiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtcjoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWI6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1sOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBteDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbXk6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1hcmdpbjoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luVG9wOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5SaWdodDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgbWFyZ2luQm90dG9tOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5MZWZ0OiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5YOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5ZOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5JbmxpbmU6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1hcmdpbklubGluZVN0YXJ0OiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5JbmxpbmVFbmQ6IHtcbiAgICBzdHlsZTogbWFyZ2luXG4gIH0sXG4gIG1hcmdpbkJsb2NrOiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5CbG9ja1N0YXJ0OiB7XG4gICAgc3R5bGU6IG1hcmdpblxuICB9LFxuICBtYXJnaW5CbG9ja0VuZDoge1xuICAgIHN0eWxlOiBtYXJnaW5cbiAgfSxcbiAgLy8gZGlzcGxheVxuICBkaXNwbGF5UHJpbnQ6IHtcbiAgICBjc3NQcm9wZXJ0eTogZmFsc2UsXG4gICAgdHJhbnNmb3JtOiB2YWx1ZSA9PiAoe1xuICAgICAgJ0BtZWRpYSBwcmludCc6IHtcbiAgICAgICAgZGlzcGxheTogdmFsdWVcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuICBkaXNwbGF5OiB7fSxcbiAgb3ZlcmZsb3c6IHt9LFxuICB0ZXh0T3ZlcmZsb3c6IHt9LFxuICB2aXNpYmlsaXR5OiB7fSxcbiAgd2hpdGVTcGFjZToge30sXG4gIC8vIGZsZXhib3hcbiAgZmxleEJhc2lzOiB7fSxcbiAgZmxleERpcmVjdGlvbjoge30sXG4gIGZsZXhXcmFwOiB7fSxcbiAganVzdGlmeUNvbnRlbnQ6IHt9LFxuICBhbGlnbkl0ZW1zOiB7fSxcbiAgYWxpZ25Db250ZW50OiB7fSxcbiAgb3JkZXI6IHt9LFxuICBmbGV4OiB7fSxcbiAgZmxleEdyb3c6IHt9LFxuICBmbGV4U2hyaW5rOiB7fSxcbiAgYWxpZ25TZWxmOiB7fSxcbiAganVzdGlmeUl0ZW1zOiB7fSxcbiAganVzdGlmeVNlbGY6IHt9LFxuICAvLyBncmlkXG4gIGdhcDoge1xuICAgIHN0eWxlOiBnYXBcbiAgfSxcbiAgcm93R2FwOiB7XG4gICAgc3R5bGU6IHJvd0dhcFxuICB9LFxuICBjb2x1bW5HYXA6IHtcbiAgICBzdHlsZTogY29sdW1uR2FwXG4gIH0sXG4gIGdyaWRDb2x1bW46IHt9LFxuICBncmlkUm93OiB7fSxcbiAgZ3JpZEF1dG9GbG93OiB7fSxcbiAgZ3JpZEF1dG9Db2x1bW5zOiB7fSxcbiAgZ3JpZEF1dG9Sb3dzOiB7fSxcbiAgZ3JpZFRlbXBsYXRlQ29sdW1uczoge30sXG4gIGdyaWRUZW1wbGF0ZVJvd3M6IHt9LFxuICBncmlkVGVtcGxhdGVBcmVhczoge30sXG4gIGdyaWRBcmVhOiB7fSxcbiAgLy8gcG9zaXRpb25zXG4gIHBvc2l0aW9uOiB7fSxcbiAgekluZGV4OiB7XG4gICAgdGhlbWVLZXk6ICd6SW5kZXgnXG4gIH0sXG4gIHRvcDoge30sXG4gIHJpZ2h0OiB7fSxcbiAgYm90dG9tOiB7fSxcbiAgbGVmdDoge30sXG4gIC8vIHNoYWRvd3NcbiAgYm94U2hhZG93OiB7XG4gICAgdGhlbWVLZXk6ICdzaGFkb3dzJ1xuICB9LFxuICAvLyBzaXppbmdcbiAgd2lkdGg6IHtcbiAgICB0cmFuc2Zvcm06IHNpemluZ1RyYW5zZm9ybVxuICB9LFxuICBtYXhXaWR0aDoge1xuICAgIHN0eWxlOiBtYXhXaWR0aFxuICB9LFxuICBtaW5XaWR0aDoge1xuICAgIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG4gIH0sXG4gIGhlaWdodDoge1xuICAgIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG4gIH0sXG4gIG1heEhlaWdodDoge1xuICAgIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG4gIH0sXG4gIG1pbkhlaWdodDoge1xuICAgIHRyYW5zZm9ybTogc2l6aW5nVHJhbnNmb3JtXG4gIH0sXG4gIGJveFNpemluZzoge30sXG4gIC8vIHR5cG9ncmFwaHlcbiAgZm9udEZhbWlseToge1xuICAgIHRoZW1lS2V5OiAndHlwb2dyYXBoeSdcbiAgfSxcbiAgZm9udFNpemU6IHtcbiAgICB0aGVtZUtleTogJ3R5cG9ncmFwaHknXG4gIH0sXG4gIGZvbnRTdHlsZToge1xuICAgIHRoZW1lS2V5OiAndHlwb2dyYXBoeSdcbiAgfSxcbiAgZm9udFdlaWdodDoge1xuICAgIHRoZW1lS2V5OiAndHlwb2dyYXBoeSdcbiAgfSxcbiAgbGV0dGVyU3BhY2luZzoge30sXG4gIHRleHRUcmFuc2Zvcm06IHt9LFxuICBsaW5lSGVpZ2h0OiB7fSxcbiAgdGV4dEFsaWduOiB7fSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGNzc1Byb3BlcnR5OiBmYWxzZSxcbiAgICB0aGVtZUtleTogJ3R5cG9ncmFwaHknXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0U3hDb25maWc7IiwiaW1wb3J0IHsgdW5zdGFibGVfY2FwaXRhbGl6ZSBhcyBjYXBpdGFsaXplIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgbWVyZ2UgZnJvbSAnLi4vbWVyZ2UnO1xuaW1wb3J0IHsgZ2V0UGF0aCwgZ2V0U3R5bGVWYWx1ZSBhcyBnZXRWYWx1ZSB9IGZyb20gJy4uL3N0eWxlJztcbmltcG9ydCB7IGhhbmRsZUJyZWFrcG9pbnRzLCBjcmVhdGVFbXB0eUJyZWFrcG9pbnRPYmplY3QsIHJlbW92ZVVudXNlZEJyZWFrcG9pbnRzIH0gZnJvbSAnLi4vYnJlYWtwb2ludHMnO1xuaW1wb3J0IGRlZmF1bHRTeENvbmZpZyBmcm9tICcuL2RlZmF1bHRTeENvbmZpZyc7XG5mdW5jdGlvbiBvYmplY3RzSGF2ZVNhbWVLZXlzKC4uLm9iamVjdHMpIHtcbiAgY29uc3QgYWxsS2V5cyA9IG9iamVjdHMucmVkdWNlKChrZXlzLCBvYmplY3QpID0+IGtleXMuY29uY2F0KE9iamVjdC5rZXlzKG9iamVjdCkpLCBbXSk7XG4gIGNvbnN0IHVuaW9uID0gbmV3IFNldChhbGxLZXlzKTtcbiAgcmV0dXJuIG9iamVjdHMuZXZlcnkob2JqZWN0ID0+IHVuaW9uLnNpemUgPT09IE9iamVjdC5rZXlzKG9iamVjdCkubGVuZ3RoKTtcbn1cbmZ1bmN0aW9uIGNhbGxJZkZuKG1heWJlRm4sIGFyZykge1xuICByZXR1cm4gdHlwZW9mIG1heWJlRm4gPT09ICdmdW5jdGlvbicgPyBtYXliZUZuKGFyZykgOiBtYXliZUZuO1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG5leHBvcnQgZnVuY3Rpb24gdW5zdGFibGVfY3JlYXRlU3R5bGVGdW5jdGlvblN4KCkge1xuICBmdW5jdGlvbiBnZXRUaGVtZVZhbHVlKHByb3AsIHZhbCwgdGhlbWUsIGNvbmZpZykge1xuICAgIGNvbnN0IHByb3BzID0ge1xuICAgICAgW3Byb3BdOiB2YWwsXG4gICAgICB0aGVtZVxuICAgIH07XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbmZpZ1twcm9wXTtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFtwcm9wXTogdmFsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7XG4gICAgICBjc3NQcm9wZXJ0eSA9IHByb3AsXG4gICAgICB0aGVtZUtleSxcbiAgICAgIHRyYW5zZm9ybSxcbiAgICAgIHN0eWxlXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgaWYgKHZhbCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBUT0RPIHY2OiByZW1vdmUsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL3B1bGwvMzgxMjNcbiAgICBpZiAodGhlbWVLZXkgPT09ICd0eXBvZ3JhcGh5JyAmJiB2YWwgPT09ICdpbmhlcml0Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3Byb3BdOiB2YWxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IHRoZW1lTWFwcGluZyA9IGdldFBhdGgodGhlbWUsIHRoZW1lS2V5KSB8fCB7fTtcbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIHJldHVybiBzdHlsZShwcm9wcyk7XG4gICAgfVxuICAgIGNvbnN0IHN0eWxlRnJvbVByb3BWYWx1ZSA9IHByb3BWYWx1ZUZpbmFsID0+IHtcbiAgICAgIGxldCB2YWx1ZSA9IGdldFZhbHVlKHRoZW1lTWFwcGluZywgdHJhbnNmb3JtLCBwcm9wVmFsdWVGaW5hbCk7XG4gICAgICBpZiAocHJvcFZhbHVlRmluYWwgPT09IHZhbHVlICYmIHR5cGVvZiBwcm9wVmFsdWVGaW5hbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gSGF2ZW4ndCBmb3VuZCB2YWx1ZVxuICAgICAgICB2YWx1ZSA9IGdldFZhbHVlKHRoZW1lTWFwcGluZywgdHJhbnNmb3JtLCBgJHtwcm9wfSR7cHJvcFZhbHVlRmluYWwgPT09ICdkZWZhdWx0JyA/ICcnIDogY2FwaXRhbGl6ZShwcm9wVmFsdWVGaW5hbCl9YCwgcHJvcFZhbHVlRmluYWwpO1xuICAgICAgfVxuICAgICAgaWYgKGNzc1Byb3BlcnR5ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbY3NzUHJvcGVydHldOiB2YWx1ZVxuICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBoYW5kbGVCcmVha3BvaW50cyhwcm9wcywgdmFsLCBzdHlsZUZyb21Qcm9wVmFsdWUpO1xuICB9XG4gIGZ1bmN0aW9uIHN0eWxlRnVuY3Rpb25TeChwcm9wcykge1xuICAgIHZhciBfdGhlbWUkdW5zdGFibGVfc3hDb247XG4gICAgY29uc3Qge1xuICAgICAgc3gsXG4gICAgICB0aGVtZSA9IHt9XG4gICAgfSA9IHByb3BzIHx8IHt9O1xuICAgIGlmICghc3gpIHtcbiAgICAgIHJldHVybiBudWxsOyAvLyBFbW90aW9uICYgc3R5bGVkLWNvbXBvbmVudHMgd2lsbCBuZWdsZWN0IG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWcgPSAoX3RoZW1lJHVuc3RhYmxlX3N4Q29uID0gdGhlbWUudW5zdGFibGVfc3hDb25maWcpICE9IG51bGwgPyBfdGhlbWUkdW5zdGFibGVfc3hDb24gOiBkZWZhdWx0U3hDb25maWc7XG5cbiAgICAvKlxuICAgICAqIFJlY2VpdmUgYHN4SW5wdXRgIGFzIG9iamVjdCBvciBjYWxsYmFja1xuICAgICAqIGFuZCB0aGVuIHJlY3Vyc2l2ZWx5IGNoZWNrIGtleXMgJiB2YWx1ZXMgdG8gY3JlYXRlIG1lZGlhIHF1ZXJ5IG9iamVjdCBzdHlsZXMuXG4gICAgICogKHRoZSByZXN1bHQgd2lsbCBiZSB1c2VkIGluIGBzdHlsZWRgKVxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHRyYXZlcnNlKHN4SW5wdXQpIHtcbiAgICAgIGxldCBzeE9iamVjdCA9IHN4SW5wdXQ7XG4gICAgICBpZiAodHlwZW9mIHN4SW5wdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgc3hPYmplY3QgPSBzeElucHV0KHRoZW1lKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHN4SW5wdXQgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIHZhbHVlXG4gICAgICAgIHJldHVybiBzeElucHV0O1xuICAgICAgfVxuICAgICAgaWYgKCFzeE9iamVjdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVtcHR5QnJlYWtwb2ludHMgPSBjcmVhdGVFbXB0eUJyZWFrcG9pbnRPYmplY3QodGhlbWUuYnJlYWtwb2ludHMpO1xuICAgICAgY29uc3QgYnJlYWtwb2ludHNLZXlzID0gT2JqZWN0LmtleXMoZW1wdHlCcmVha3BvaW50cyk7XG4gICAgICBsZXQgY3NzID0gZW1wdHlCcmVha3BvaW50cztcbiAgICAgIE9iamVjdC5rZXlzKHN4T2JqZWN0KS5mb3JFYWNoKHN0eWxlS2V5ID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjYWxsSWZGbihzeE9iamVjdFtzdHlsZUtleV0sIHRoZW1lKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKGNvbmZpZ1tzdHlsZUtleV0pIHtcbiAgICAgICAgICAgICAgY3NzID0gbWVyZ2UoY3NzLCBnZXRUaGVtZVZhbHVlKHN0eWxlS2V5LCB2YWx1ZSwgdGhlbWUsIGNvbmZpZykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3QgYnJlYWtwb2ludHNWYWx1ZXMgPSBoYW5kbGVCcmVha3BvaW50cyh7XG4gICAgICAgICAgICAgICAgdGhlbWVcbiAgICAgICAgICAgICAgfSwgdmFsdWUsIHggPT4gKHtcbiAgICAgICAgICAgICAgICBbc3R5bGVLZXldOiB4XG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgaWYgKG9iamVjdHNIYXZlU2FtZUtleXMoYnJlYWtwb2ludHNWYWx1ZXMsIHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNzc1tzdHlsZUtleV0gPSBzdHlsZUZ1bmN0aW9uU3goe1xuICAgICAgICAgICAgICAgICAgc3g6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgdGhlbWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjc3MgPSBtZXJnZShjc3MsIGJyZWFrcG9pbnRzVmFsdWVzKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjc3MgPSBtZXJnZShjc3MsIGdldFRoZW1lVmFsdWUoc3R5bGVLZXksIHZhbHVlLCB0aGVtZSwgY29uZmlnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZW1vdmVVbnVzZWRCcmVha3BvaW50cyhicmVha3BvaW50c0tleXMsIGNzcyk7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHN4KSA/IHN4Lm1hcCh0cmF2ZXJzZSkgOiB0cmF2ZXJzZShzeCk7XG4gIH1cbiAgcmV0dXJuIHN0eWxlRnVuY3Rpb25TeDtcbn1cbmNvbnN0IHN0eWxlRnVuY3Rpb25TeCA9IHVuc3RhYmxlX2NyZWF0ZVN0eWxlRnVuY3Rpb25TeCgpO1xuc3R5bGVGdW5jdGlvblN4LmZpbHRlclByb3BzID0gWydzeCddO1xuZXhwb3J0IGRlZmF1bHQgc3R5bGVGdW5jdGlvblN4OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJicmVha3BvaW50c1wiLCBcInBhbGV0dGVcIiwgXCJzcGFjaW5nXCIsIFwic2hhcGVcIl07XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBjcmVhdGVCcmVha3BvaW50cyBmcm9tICcuL2NyZWF0ZUJyZWFrcG9pbnRzJztcbmltcG9ydCBzaGFwZSBmcm9tICcuL3NoYXBlJztcbmltcG9ydCBjcmVhdGVTcGFjaW5nIGZyb20gJy4vY3JlYXRlU3BhY2luZyc7XG5pbXBvcnQgc3R5bGVGdW5jdGlvblN4IGZyb20gJy4uL3N0eWxlRnVuY3Rpb25TeC9zdHlsZUZ1bmN0aW9uU3gnO1xuaW1wb3J0IGRlZmF1bHRTeENvbmZpZyBmcm9tICcuLi9zdHlsZUZ1bmN0aW9uU3gvZGVmYXVsdFN4Q29uZmlnJztcbmZ1bmN0aW9uIGNyZWF0ZVRoZW1lKG9wdGlvbnMgPSB7fSwgLi4uYXJncykge1xuICBjb25zdCB7XG4gICAgICBicmVha3BvaW50czogYnJlYWtwb2ludHNJbnB1dCA9IHt9LFxuICAgICAgcGFsZXR0ZTogcGFsZXR0ZUlucHV0ID0ge30sXG4gICAgICBzcGFjaW5nOiBzcGFjaW5nSW5wdXQsXG4gICAgICBzaGFwZTogc2hhcGVJbnB1dCA9IHt9XG4gICAgfSA9IG9wdGlvbnMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShvcHRpb25zLCBfZXhjbHVkZWQpO1xuICBjb25zdCBicmVha3BvaW50cyA9IGNyZWF0ZUJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzSW5wdXQpO1xuICBjb25zdCBzcGFjaW5nID0gY3JlYXRlU3BhY2luZyhzcGFjaW5nSW5wdXQpO1xuICBsZXQgbXVpVGhlbWUgPSBkZWVwbWVyZ2Uoe1xuICAgIGJyZWFrcG9pbnRzLFxuICAgIGRpcmVjdGlvbjogJ2x0cicsXG4gICAgY29tcG9uZW50czoge30sXG4gICAgLy8gSW5qZWN0IGNvbXBvbmVudCBkZWZpbml0aW9ucy5cbiAgICBwYWxldHRlOiBfZXh0ZW5kcyh7XG4gICAgICBtb2RlOiAnbGlnaHQnXG4gICAgfSwgcGFsZXR0ZUlucHV0KSxcbiAgICBzcGFjaW5nLFxuICAgIHNoYXBlOiBfZXh0ZW5kcyh7fSwgc2hhcGUsIHNoYXBlSW5wdXQpXG4gIH0sIG90aGVyKTtcbiAgbXVpVGhlbWUgPSBhcmdzLnJlZHVjZSgoYWNjLCBhcmd1bWVudCkgPT4gZGVlcG1lcmdlKGFjYywgYXJndW1lbnQpLCBtdWlUaGVtZSk7XG4gIG11aVRoZW1lLnVuc3RhYmxlX3N4Q29uZmlnID0gX2V4dGVuZHMoe30sIGRlZmF1bHRTeENvbmZpZywgb3RoZXIgPT0gbnVsbCA/IHZvaWQgMCA6IG90aGVyLnVuc3RhYmxlX3N4Q29uZmlnKTtcbiAgbXVpVGhlbWUudW5zdGFibGVfc3ggPSBmdW5jdGlvbiBzeChwcm9wcykge1xuICAgIHJldHVybiBzdHlsZUZ1bmN0aW9uU3goe1xuICAgICAgc3g6IHByb3BzLFxuICAgICAgdGhlbWU6IHRoaXNcbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIG11aVRoZW1lO1xufVxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlVGhlbWU7IiwiaW1wb3J0IHsgY3JlYXRlVW5hcnlTcGFjaW5nIH0gZnJvbSAnLi4vc3BhY2luZyc7XG5cbi8vIFRoZSBkaWZmZXJlbnQgc2lnbmF0dXJlcyBpbXBseSBkaWZmZXJlbnQgbWVhbmluZyBmb3IgdGhlaXIgYXJndW1lbnRzIHRoYXQgY2FuJ3QgYmUgZXhwcmVzc2VkIHN0cnVjdHVyYWxseS5cbi8vIFdlIGV4cHJlc3MgdGhlIGRpZmZlcmVuY2Ugd2l0aCB2YXJpYWJsZSBuYW1lcy5cbi8qIHRzbGludDpkaXNhYmxlOnVuaWZpZWQtc2lnbmF0dXJlcyAqL1xuLyogdHNsaW50OmVuYWJsZTp1bmlmaWVkLXNpZ25hdHVyZXMgKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3BhY2luZyhzcGFjaW5nSW5wdXQgPSA4KSB7XG4gIC8vIEFscmVhZHkgdHJhbnNmb3JtZWQuXG4gIGlmIChzcGFjaW5nSW5wdXQubXVpKSB7XG4gICAgcmV0dXJuIHNwYWNpbmdJbnB1dDtcbiAgfVxuXG4gIC8vIE1hdGVyaWFsIERlc2lnbiBsYXlvdXRzIGFyZSB2aXN1YWxseSBiYWxhbmNlZC4gTW9zdCBtZWFzdXJlbWVudHMgYWxpZ24gdG8gYW4gOGRwIGdyaWQsIHdoaWNoIGFsaWducyBib3RoIHNwYWNpbmcgYW5kIHRoZSBvdmVyYWxsIGxheW91dC5cbiAgLy8gU21hbGxlciBjb21wb25lbnRzLCBzdWNoIGFzIGljb25zLCBjYW4gYWxpZ24gdG8gYSA0ZHAgZ3JpZC5cbiAgLy8gaHR0cHM6Ly9tMi5tYXRlcmlhbC5pby9kZXNpZ24vbGF5b3V0L3VuZGVyc3RhbmRpbmctbGF5b3V0Lmh0bWxcbiAgY29uc3QgdHJhbnNmb3JtID0gY3JlYXRlVW5hcnlTcGFjaW5nKHtcbiAgICBzcGFjaW5nOiBzcGFjaW5nSW5wdXRcbiAgfSk7XG4gIGNvbnN0IHNwYWNpbmcgPSAoLi4uYXJnc0lucHV0KSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICghKGFyZ3NJbnB1dC5sZW5ndGggPD0gNCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgTVVJOiBUb28gbWFueSBhcmd1bWVudHMgcHJvdmlkZWQsIGV4cGVjdGVkIGJldHdlZW4gMCBhbmQgNCwgZ290ICR7YXJnc0lucHV0Lmxlbmd0aH1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgYXJncyA9IGFyZ3NJbnB1dC5sZW5ndGggPT09IDAgPyBbMV0gOiBhcmdzSW5wdXQ7XG4gICAgcmV0dXJuIGFyZ3MubWFwKGFyZ3VtZW50ID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHRyYW5zZm9ybShhcmd1bWVudCk7XG4gICAgICByZXR1cm4gdHlwZW9mIG91dHB1dCA9PT0gJ251bWJlcicgPyBgJHtvdXRwdXR9cHhgIDogb3V0cHV0O1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfTtcbiAgc3BhY2luZy5tdWkgPSB0cnVlO1xuICByZXR1cm4gc3BhY2luZztcbn0iLCJpbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcInZhcmlhbnRcIl07XG5pbXBvcnQgeyB1bnN0YWJsZV9jYXBpdGFsaXplIGFzIGNhcGl0YWxpemUgfSBmcm9tICdAbXVpL3V0aWxzJztcbmZ1bmN0aW9uIGlzRW1wdHkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID09PSAwO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBzdHJpbmcgY2xhc3NLZXkgYmFzZWQgb24gdGhlIHByb3BlcnRpZXMgcHJvdmlkZWQuIEl0IHN0YXJ0cyB3aXRoIHRoZVxuICogdmFyaWFudCBpZiBkZWZpbmVkLCBhbmQgdGhlbiBpdCBhcHBlbmRzIGFsbCBvdGhlciBwcm9wZXJ0aWVzIGluIGFscGhhYmV0aWNhbCBvcmRlci5cbiAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyAtIHRoZSBwcm9wZXJ0aWVzIGZvciB3aGljaCB0aGUgY2xhc3NLZXkgc2hvdWxkIGJlIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByb3BzVG9DbGFzc0tleShwcm9wcykge1xuICBjb25zdCB7XG4gICAgICB2YXJpYW50XG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGxldCBjbGFzc0tleSA9IHZhcmlhbnQgfHwgJyc7XG4gIE9iamVjdC5rZXlzKG90aGVyKS5zb3J0KCkuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmIChrZXkgPT09ICdjb2xvcicpIHtcbiAgICAgIGNsYXNzS2V5ICs9IGlzRW1wdHkoY2xhc3NLZXkpID8gcHJvcHNba2V5XSA6IGNhcGl0YWxpemUocHJvcHNba2V5XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzS2V5ICs9IGAke2lzRW1wdHkoY2xhc3NLZXkpID8ga2V5IDogY2FwaXRhbGl6ZShrZXkpfSR7Y2FwaXRhbGl6ZShwcm9wc1trZXldLnRvU3RyaW5nKCkpfWA7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNsYXNzS2V5O1xufSIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJuYW1lXCIsIFwic2xvdFwiLCBcInNraXBWYXJpYW50c1Jlc29sdmVyXCIsIFwic2tpcFN4XCIsIFwib3ZlcnJpZGVzUmVzb2x2ZXJcIl07XG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuaW1wb3J0IHN0eWxlZEVuZ2luZVN0eWxlZCwgeyBpbnRlcm5hbF9wcm9jZXNzU3R5bGVzIGFzIHByb2Nlc3NTdHlsZXMgfSBmcm9tICdAbXVpL3N0eWxlZC1lbmdpbmUnO1xuaW1wb3J0IHsgZ2V0RGlzcGxheU5hbWUsIHVuc3RhYmxlX2NhcGl0YWxpemUgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGNyZWF0ZVRoZW1lIGZyb20gJy4vY3JlYXRlVGhlbWUnO1xuaW1wb3J0IHByb3BzVG9DbGFzc0tleSBmcm9tICcuL3Byb3BzVG9DbGFzc0tleSc7XG5pbXBvcnQgc3R5bGVGdW5jdGlvblN4IGZyb20gJy4vc3R5bGVGdW5jdGlvblN4JztcbmZ1bmN0aW9uIGlzRW1wdHkob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Vtb3Rpb24tanMvZW1vdGlvbi9ibG9iLzI2ZGVkNjEwOWZjZDhjYTk4NzVjYzJjZTQ1NjRmZWU2NzhhM2YzYzUvcGFja2FnZXMvc3R5bGVkL3NyYy91dGlscy5qcyNMNDBcbmZ1bmN0aW9uIGlzU3RyaW5nVGFnKHRhZykge1xuICByZXR1cm4gdHlwZW9mIHRhZyA9PT0gJ3N0cmluZycgJiZcbiAgLy8gOTYgaXMgb25lIGxlc3MgdGhhbiB0aGUgY2hhciBjb2RlXG4gIC8vIGZvciBcImFcIiBzbyB0aGlzIGlzIGNoZWNraW5nIHRoYXRcbiAgLy8gaXQncyBhIGxvd2VyY2FzZSBjaGFyYWN0ZXJcbiAgdGFnLmNoYXJDb2RlQXQoMCkgPiA5Njtcbn1cbmNvbnN0IGdldFN0eWxlT3ZlcnJpZGVzID0gKG5hbWUsIHRoZW1lKSA9PiB7XG4gIGlmICh0aGVtZS5jb21wb25lbnRzICYmIHRoZW1lLmNvbXBvbmVudHNbbmFtZV0gJiYgdGhlbWUuY29tcG9uZW50c1tuYW1lXS5zdHlsZU92ZXJyaWRlcykge1xuICAgIHJldHVybiB0aGVtZS5jb21wb25lbnRzW25hbWVdLnN0eWxlT3ZlcnJpZGVzO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcbmNvbnN0IGdldFZhcmlhbnRTdHlsZXMgPSAobmFtZSwgdGhlbWUpID0+IHtcbiAgbGV0IHZhcmlhbnRzID0gW107XG4gIGlmICh0aGVtZSAmJiB0aGVtZS5jb21wb25lbnRzICYmIHRoZW1lLmNvbXBvbmVudHNbbmFtZV0gJiYgdGhlbWUuY29tcG9uZW50c1tuYW1lXS52YXJpYW50cykge1xuICAgIHZhcmlhbnRzID0gdGhlbWUuY29tcG9uZW50c1tuYW1lXS52YXJpYW50cztcbiAgfVxuICBjb25zdCB2YXJpYW50c1N0eWxlcyA9IHt9O1xuICB2YXJpYW50cy5mb3JFYWNoKGRlZmluaXRpb24gPT4ge1xuICAgIGNvbnN0IGtleSA9IHByb3BzVG9DbGFzc0tleShkZWZpbml0aW9uLnByb3BzKTtcbiAgICB2YXJpYW50c1N0eWxlc1trZXldID0gZGVmaW5pdGlvbi5zdHlsZTtcbiAgfSk7XG4gIHJldHVybiB2YXJpYW50c1N0eWxlcztcbn07XG5jb25zdCB2YXJpYW50c1Jlc29sdmVyID0gKHByb3BzLCBzdHlsZXMsIHRoZW1lLCBuYW1lKSA9PiB7XG4gIHZhciBfdGhlbWUkY29tcG9uZW50cztcbiAgY29uc3Qge1xuICAgIG93bmVyU3RhdGUgPSB7fVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHZhcmlhbnRzU3R5bGVzID0gW107XG4gIGNvbnN0IHRoZW1lVmFyaWFudHMgPSB0aGVtZSA9PSBudWxsIHx8IChfdGhlbWUkY29tcG9uZW50cyA9IHRoZW1lLmNvbXBvbmVudHMpID09IG51bGwgfHwgKF90aGVtZSRjb21wb25lbnRzID0gX3RoZW1lJGNvbXBvbmVudHNbbmFtZV0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkY29tcG9uZW50cy52YXJpYW50cztcbiAgaWYgKHRoZW1lVmFyaWFudHMpIHtcbiAgICB0aGVtZVZhcmlhbnRzLmZvckVhY2godGhlbWVWYXJpYW50ID0+IHtcbiAgICAgIGxldCBpc01hdGNoID0gdHJ1ZTtcbiAgICAgIE9iamVjdC5rZXlzKHRoZW1lVmFyaWFudC5wcm9wcykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAob3duZXJTdGF0ZVtrZXldICE9PSB0aGVtZVZhcmlhbnQucHJvcHNba2V5XSAmJiBwcm9wc1trZXldICE9PSB0aGVtZVZhcmlhbnQucHJvcHNba2V5XSkge1xuICAgICAgICAgIGlzTWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoaXNNYXRjaCkge1xuICAgICAgICB2YXJpYW50c1N0eWxlcy5wdXNoKHN0eWxlc1twcm9wc1RvQ2xhc3NLZXkodGhlbWVWYXJpYW50LnByb3BzKV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHJldHVybiB2YXJpYW50c1N0eWxlcztcbn07XG5cbi8vIFVwZGF0ZSAvc3lzdGVtL3N0eWxlZC8jYXBpIGluIGNhc2UgaWYgdGhpcyBjaGFuZ2VzXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkRm9yd2FyZFByb3AocHJvcCkge1xuICByZXR1cm4gcHJvcCAhPT0gJ293bmVyU3RhdGUnICYmIHByb3AgIT09ICd0aGVtZScgJiYgcHJvcCAhPT0gJ3N4JyAmJiBwcm9wICE9PSAnYXMnO1xufVxuZXhwb3J0IGNvbnN0IHN5c3RlbURlZmF1bHRUaGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5jb25zdCBsb3dlcmNhc2VGaXJzdExldHRlciA9IHN0cmluZyA9PiB7XG4gIGlmICghc3RyaW5nKSB7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuICByZXR1cm4gc3RyaW5nLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpO1xufTtcbmZ1bmN0aW9uIHJlc29sdmVUaGVtZSh7XG4gIGRlZmF1bHRUaGVtZSxcbiAgdGhlbWUsXG4gIHRoZW1lSWRcbn0pIHtcbiAgcmV0dXJuIGlzRW1wdHkodGhlbWUpID8gZGVmYXVsdFRoZW1lIDogdGhlbWVbdGhlbWVJZF0gfHwgdGhlbWU7XG59XG5mdW5jdGlvbiBkZWZhdWx0T3ZlcnJpZGVzUmVzb2x2ZXIoc2xvdCkge1xuICBpZiAoIXNsb3QpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gKHByb3BzLCBzdHlsZXMpID0+IHN0eWxlc1tzbG90XTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVN0eWxlZChpbnB1dCA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aGVtZUlkLFxuICAgIGRlZmF1bHRUaGVtZSA9IHN5c3RlbURlZmF1bHRUaGVtZSxcbiAgICByb290U2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRGb3J3YXJkUHJvcCxcbiAgICBzbG90U2hvdWxkRm9yd2FyZFByb3AgPSBzaG91bGRGb3J3YXJkUHJvcFxuICB9ID0gaW5wdXQ7XG4gIGNvbnN0IHN5c3RlbVN4ID0gcHJvcHMgPT4ge1xuICAgIHJldHVybiBzdHlsZUZ1bmN0aW9uU3goX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICB0aGVtZTogcmVzb2x2ZVRoZW1lKF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICBkZWZhdWx0VGhlbWUsXG4gICAgICAgIHRoZW1lSWRcbiAgICAgIH0pKVxuICAgIH0pKTtcbiAgfTtcbiAgc3lzdGVtU3guX19tdWlfc3lzdGVtU3ggPSB0cnVlO1xuICByZXR1cm4gKHRhZywgaW5wdXRPcHRpb25zID0ge30pID0+IHtcbiAgICAvLyBGaWx0ZXIgb3V0IHRoZSBgc3hgIHN0eWxlIGZ1bmN0aW9uIGZyb20gdGhlIHByZXZpb3VzIHN0eWxlZCBjb21wb25lbnQgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBzdHlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBjb21wb3NpdGUgY29tcG9uZW50cy5cbiAgICBwcm9jZXNzU3R5bGVzKHRhZywgc3R5bGVzID0+IHN0eWxlcy5maWx0ZXIoc3R5bGUgPT4gIShzdHlsZSAhPSBudWxsICYmIHN0eWxlLl9fbXVpX3N5c3RlbVN4KSkpO1xuICAgIGNvbnN0IHtcbiAgICAgICAgbmFtZTogY29tcG9uZW50TmFtZSxcbiAgICAgICAgc2xvdDogY29tcG9uZW50U2xvdCxcbiAgICAgICAgc2tpcFZhcmlhbnRzUmVzb2x2ZXI6IGlucHV0U2tpcFZhcmlhbnRzUmVzb2x2ZXIsXG4gICAgICAgIHNraXBTeDogaW5wdXRTa2lwU3gsXG4gICAgICAgIC8vIFRPRE8gdjY6IHJlbW92ZSBgbG93ZXJjYXNlRmlyc3RMZXR0ZXIoKWAgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZVxuICAgICAgICAvLyBGb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL3B1bGwvMzc5MDhcbiAgICAgICAgb3ZlcnJpZGVzUmVzb2x2ZXIgPSBkZWZhdWx0T3ZlcnJpZGVzUmVzb2x2ZXIobG93ZXJjYXNlRmlyc3RMZXR0ZXIoY29tcG9uZW50U2xvdCkpXG4gICAgICB9ID0gaW5wdXRPcHRpb25zLFxuICAgICAgb3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGlucHV0T3B0aW9ucywgX2V4Y2x1ZGVkKTtcblxuICAgIC8vIGlmIHNraXBWYXJpYW50c1Jlc29sdmVyIG9wdGlvbiBpcyBkZWZpbmVkLCB0YWtlIHRoZSB2YWx1ZSwgb3RoZXJ3aXNlLCB0cnVlIGZvciByb290IGFuZCBmYWxzZSBmb3Igb3RoZXIgc2xvdHMuXG4gICAgY29uc3Qgc2tpcFZhcmlhbnRzUmVzb2x2ZXIgPSBpbnB1dFNraXBWYXJpYW50c1Jlc29sdmVyICE9PSB1bmRlZmluZWQgPyBpbnB1dFNraXBWYXJpYW50c1Jlc29sdmVyIDpcbiAgICAvLyBUT0RPIHY2OiByZW1vdmUgYFJvb3RgIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2VcbiAgICAvLyBGb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL3B1bGwvMzc5MDhcbiAgICBjb21wb25lbnRTbG90ICYmIGNvbXBvbmVudFNsb3QgIT09ICdSb290JyAmJiBjb21wb25lbnRTbG90ICE9PSAncm9vdCcgfHwgZmFsc2U7XG4gICAgY29uc3Qgc2tpcFN4ID0gaW5wdXRTa2lwU3ggfHwgZmFsc2U7XG4gICAgbGV0IGxhYmVsO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoY29tcG9uZW50TmFtZSkge1xuICAgICAgICAvLyBUT0RPIHY2OiByZW1vdmUgYGxvd2VyY2FzZUZpcnN0TGV0dGVyKClgIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2VcbiAgICAgICAgLy8gRm9yIG1vcmUgZGV0YWlsczogaHR0cHM6Ly9naXRodWIuY29tL211aS9tYXRlcmlhbC11aS9wdWxsLzM3OTA4XG4gICAgICAgIGxhYmVsID0gYCR7Y29tcG9uZW50TmFtZX0tJHtsb3dlcmNhc2VGaXJzdExldHRlcihjb21wb25lbnRTbG90IHx8ICdSb290Jyl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHNob3VsZEZvcndhcmRQcm9wT3B0aW9uID0gc2hvdWxkRm9yd2FyZFByb3A7XG5cbiAgICAvLyBUT0RPIHY2OiByZW1vdmUgYFJvb3RgIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2VcbiAgICAvLyBGb3IgbW9yZSBkZXRhaWxzOiBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL3B1bGwvMzc5MDhcbiAgICBpZiAoY29tcG9uZW50U2xvdCA9PT0gJ1Jvb3QnIHx8IGNvbXBvbmVudFNsb3QgPT09ICdyb290Jykge1xuICAgICAgc2hvdWxkRm9yd2FyZFByb3BPcHRpb24gPSByb290U2hvdWxkRm9yd2FyZFByb3A7XG4gICAgfSBlbHNlIGlmIChjb21wb25lbnRTbG90KSB7XG4gICAgICAvLyBhbnkgb3RoZXIgc2xvdCBzcGVjaWZpZWRcbiAgICAgIHNob3VsZEZvcndhcmRQcm9wT3B0aW9uID0gc2xvdFNob3VsZEZvcndhcmRQcm9wO1xuICAgIH0gZWxzZSBpZiAoaXNTdHJpbmdUYWcodGFnKSkge1xuICAgICAgLy8gZm9yIHN0cmluZyAoaHRtbCkgdGFnLCBwcmVzZXJ2ZSB0aGUgYmVoYXZpb3IgaW4gZW1vdGlvbiAmIHN0eWxlZC1jb21wb25lbnRzLlxuICAgICAgc2hvdWxkRm9yd2FyZFByb3BPcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGRlZmF1bHRTdHlsZWRSZXNvbHZlciA9IHN0eWxlZEVuZ2luZVN0eWxlZCh0YWcsIF9leHRlbmRzKHtcbiAgICAgIHNob3VsZEZvcndhcmRQcm9wOiBzaG91bGRGb3J3YXJkUHJvcE9wdGlvbixcbiAgICAgIGxhYmVsXG4gICAgfSwgb3B0aW9ucykpO1xuICAgIGNvbnN0IG11aVN0eWxlZFJlc29sdmVyID0gKHN0eWxlQXJnLCAuLi5leHByZXNzaW9ucykgPT4ge1xuICAgICAgY29uc3QgZXhwcmVzc2lvbnNXaXRoRGVmYXVsdFRoZW1lID0gZXhwcmVzc2lvbnMgPyBleHByZXNzaW9ucy5tYXAoc3R5bGVzQXJnID0+IHtcbiAgICAgICAgLy8gT24gdGhlIHNlcnZlciBFbW90aW9uIGRvZXNuJ3QgdXNlIFJlYWN0LmZvcndhcmRSZWYgZm9yIGNyZWF0aW5nIGNvbXBvbmVudHMsIHNvIHRoZSBjcmVhdGVkXG4gICAgICAgIC8vIGNvbXBvbmVudCBzdGF5cyBhcyBhIGZ1bmN0aW9uLiBUaGlzIGNvbmRpdGlvbiBtYWtlcyBzdXJlIHRoYXQgd2UgZG8gbm90IGludGVycG9sYXRlIGZ1bmN0aW9uc1xuICAgICAgICAvLyB3aGljaCBhcmUgYmFzaWNhbGx5IGNvbXBvbmVudHMgdXNlZCBhcyBhIHNlbGVjdG9ycy5cbiAgICAgICAgcmV0dXJuIHR5cGVvZiBzdHlsZXNBcmcgPT09ICdmdW5jdGlvbicgJiYgc3R5bGVzQXJnLl9fZW1vdGlvbl9yZWFsICE9PSBzdHlsZXNBcmcgPyBwcm9wcyA9PiB7XG4gICAgICAgICAgcmV0dXJuIHN0eWxlc0FyZyhfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgICAgIHRoZW1lOiByZXNvbHZlVGhlbWUoX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgICAgICAgIGRlZmF1bHRUaGVtZSxcbiAgICAgICAgICAgICAgdGhlbWVJZFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IDogc3R5bGVzQXJnO1xuICAgICAgfSkgOiBbXTtcbiAgICAgIGxldCB0cmFuc2Zvcm1lZFN0eWxlQXJnID0gc3R5bGVBcmc7XG4gICAgICBpZiAoY29tcG9uZW50TmFtZSAmJiBvdmVycmlkZXNSZXNvbHZlcikge1xuICAgICAgICBleHByZXNzaW9uc1dpdGhEZWZhdWx0VGhlbWUucHVzaChwcm9wcyA9PiB7XG4gICAgICAgICAgY29uc3QgdGhlbWUgPSByZXNvbHZlVGhlbWUoX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgICAgICBkZWZhdWx0VGhlbWUsXG4gICAgICAgICAgICB0aGVtZUlkXG4gICAgICAgICAgfSkpO1xuICAgICAgICAgIGNvbnN0IHN0eWxlT3ZlcnJpZGVzID0gZ2V0U3R5bGVPdmVycmlkZXMoY29tcG9uZW50TmFtZSwgdGhlbWUpO1xuICAgICAgICAgIGlmIChzdHlsZU92ZXJyaWRlcykge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRTdHlsZU92ZXJyaWRlcyA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoc3R5bGVPdmVycmlkZXMpLmZvckVhY2goKFtzbG90S2V5LCBzbG90U3R5bGVdKSA9PiB7XG4gICAgICAgICAgICAgIHJlc29sdmVkU3R5bGVPdmVycmlkZXNbc2xvdEtleV0gPSB0eXBlb2Ygc2xvdFN0eWxlID09PSAnZnVuY3Rpb24nID8gc2xvdFN0eWxlKF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICAgICAgICAgIHRoZW1lXG4gICAgICAgICAgICAgIH0pKSA6IHNsb3RTdHlsZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG92ZXJyaWRlc1Jlc29sdmVyKHByb3BzLCByZXNvbHZlZFN0eWxlT3ZlcnJpZGVzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXBvbmVudE5hbWUgJiYgIXNraXBWYXJpYW50c1Jlc29sdmVyKSB7XG4gICAgICAgIGV4cHJlc3Npb25zV2l0aERlZmF1bHRUaGVtZS5wdXNoKHByb3BzID0+IHtcbiAgICAgICAgICBjb25zdCB0aGVtZSA9IHJlc29sdmVUaGVtZShfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgICAgIGRlZmF1bHRUaGVtZSxcbiAgICAgICAgICAgIHRoZW1lSWRcbiAgICAgICAgICB9KSk7XG4gICAgICAgICAgcmV0dXJuIHZhcmlhbnRzUmVzb2x2ZXIocHJvcHMsIGdldFZhcmlhbnRTdHlsZXMoY29tcG9uZW50TmFtZSwgdGhlbWUpLCB0aGVtZSwgY29tcG9uZW50TmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFza2lwU3gpIHtcbiAgICAgICAgZXhwcmVzc2lvbnNXaXRoRGVmYXVsdFRoZW1lLnB1c2goc3lzdGVtU3gpO1xuICAgICAgfVxuICAgICAgY29uc3QgbnVtT2ZDdXN0b21GbnNBcHBsaWVkID0gZXhwcmVzc2lvbnNXaXRoRGVmYXVsdFRoZW1lLmxlbmd0aCAtIGV4cHJlc3Npb25zLmxlbmd0aDtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0eWxlQXJnKSAmJiBudW1PZkN1c3RvbUZuc0FwcGxpZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHBsYWNlaG9sZGVycyA9IG5ldyBBcnJheShudW1PZkN1c3RvbUZuc0FwcGxpZWQpLmZpbGwoJycpO1xuICAgICAgICAvLyBJZiB0aGUgdHlwZSBpcyBhcnJheSwgdGhhbiB3ZSBuZWVkIHRvIGFkZCBwbGFjZWhvbGRlcnMgaW4gdGhlIHRlbXBsYXRlIGZvciB0aGUgb3ZlcnJpZGVzLCB2YXJpYW50cyBhbmQgdGhlIHN4IHN0eWxlcy5cbiAgICAgICAgdHJhbnNmb3JtZWRTdHlsZUFyZyA9IFsuLi5zdHlsZUFyZywgLi4ucGxhY2Vob2xkZXJzXTtcbiAgICAgICAgdHJhbnNmb3JtZWRTdHlsZUFyZy5yYXcgPSBbLi4uc3R5bGVBcmcucmF3LCAuLi5wbGFjZWhvbGRlcnNdO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3R5bGVBcmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIC8vIE9uIHRoZSBzZXJ2ZXIgRW1vdGlvbiBkb2Vzbid0IHVzZSBSZWFjdC5mb3J3YXJkUmVmIGZvciBjcmVhdGluZyBjb21wb25lbnRzLCBzbyB0aGUgY3JlYXRlZFxuICAgICAgLy8gY29tcG9uZW50IHN0YXlzIGFzIGEgZnVuY3Rpb24uIFRoaXMgY29uZGl0aW9uIG1ha2VzIHN1cmUgdGhhdCB3ZSBkbyBub3QgaW50ZXJwb2xhdGUgZnVuY3Rpb25zXG4gICAgICAvLyB3aGljaCBhcmUgYmFzaWNhbGx5IGNvbXBvbmVudHMgdXNlZCBhcyBhIHNlbGVjdG9ycy5cbiAgICAgIHN0eWxlQXJnLl9fZW1vdGlvbl9yZWFsICE9PSBzdHlsZUFyZykge1xuICAgICAgICAvLyBJZiB0aGUgdHlwZSBpcyBmdW5jdGlvbiwgd2UgbmVlZCB0byBkZWZpbmUgdGhlIGRlZmF1bHQgdGhlbWUuXG4gICAgICAgIHRyYW5zZm9ybWVkU3R5bGVBcmcgPSBwcm9wcyA9PiBzdHlsZUFyZyhfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgICB0aGVtZTogcmVzb2x2ZVRoZW1lKF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICAgICAgZGVmYXVsdFRoZW1lLFxuICAgICAgICAgICAgdGhlbWVJZFxuICAgICAgICAgIH0pKVxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBjb25zdCBDb21wb25lbnQgPSBkZWZhdWx0U3R5bGVkUmVzb2x2ZXIodHJhbnNmb3JtZWRTdHlsZUFyZywgLi4uZXhwcmVzc2lvbnNXaXRoRGVmYXVsdFRoZW1lKTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGxldCBkaXNwbGF5TmFtZTtcbiAgICAgICAgaWYgKGNvbXBvbmVudE5hbWUpIHtcbiAgICAgICAgICBkaXNwbGF5TmFtZSA9IGAke2NvbXBvbmVudE5hbWV9JHtjYXBpdGFsaXplKGNvbXBvbmVudFNsb3QgfHwgJycpfWA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3BsYXlOYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkaXNwbGF5TmFtZSA9IGBTdHlsZWQoJHtnZXREaXNwbGF5TmFtZSh0YWcpfSlgO1xuICAgICAgICB9XG4gICAgICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgICAgfVxuICAgICAgaWYgKHRhZy5tdWlOYW1lKSB7XG4gICAgICAgIENvbXBvbmVudC5tdWlOYW1lID0gdGFnLm11aU5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH07XG4gICAgaWYgKGRlZmF1bHRTdHlsZWRSZXNvbHZlci53aXRoQ29uZmlnKSB7XG4gICAgICBtdWlTdHlsZWRSZXNvbHZlci53aXRoQ29uZmlnID0gZGVmYXVsdFN0eWxlZFJlc29sdmVyLndpdGhDb25maWc7XG4gICAgfVxuICAgIHJldHVybiBtdWlTdHlsZWRSZXNvbHZlcjtcbiAgfTtcbn0iLCJpbXBvcnQgeyBmb3JtYXRNdWlFcnJvck1lc3NhZ2UgYXMgX2Zvcm1hdE11aUVycm9yTWVzc2FnZSB9IGZyb20gXCJAbXVpL3V0aWxzXCI7XG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbi8qKlxuICogUmV0dXJucyBhIG51bWJlciB3aG9zZSB2YWx1ZSBpcyBsaW1pdGVkIHRvIHRoZSBnaXZlbiByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgY2xhbXBlZFxuICogQHBhcmFtIHtudW1iZXJ9IG1pbiBUaGUgbG93ZXIgYm91bmRhcnkgb2YgdGhlIG91dHB1dCByYW5nZVxuICogQHBhcmFtIHtudW1iZXJ9IG1heCBUaGUgdXBwZXIgYm91bmRhcnkgb2YgdGhlIG91dHB1dCByYW5nZVxuICogQHJldHVybnMge251bWJlcn0gQSBudW1iZXIgaW4gdGhlIHJhbmdlIFttaW4sIG1heF1cbiAqL1xuZnVuY3Rpb24gY2xhbXAodmFsdWUsIG1pbiA9IDAsIG1heCA9IDEpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAodmFsdWUgPCBtaW4gfHwgdmFsdWUgPiBtYXgpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1VSTogVGhlIHZhbHVlIHByb3ZpZGVkICR7dmFsdWV9IGlzIG91dCBvZiByYW5nZSBbJHttaW59LCAke21heH1dLmApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgobWluLCB2YWx1ZSksIG1heCk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBjb2xvciBmcm9tIENTUyBoZXggZm9ybWF0IHRvIENTUyByZ2IgZm9ybWF0LlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gSGV4IGNvbG9yLCBpLmUuICNubm4gb3IgI25ubm5ublxuICogQHJldHVybnMge3N0cmluZ30gQSBDU1MgcmdiIGNvbG9yIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gaGV4VG9SZ2IoY29sb3IpIHtcbiAgY29sb3IgPSBjb2xvci5zbGljZSgxKTtcbiAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGAuezEsJHtjb2xvci5sZW5ndGggPj0gNiA/IDIgOiAxfX1gLCAnZycpO1xuICBsZXQgY29sb3JzID0gY29sb3IubWF0Y2gocmUpO1xuICBpZiAoY29sb3JzICYmIGNvbG9yc1swXS5sZW5ndGggPT09IDEpIHtcbiAgICBjb2xvcnMgPSBjb2xvcnMubWFwKG4gPT4gbiArIG4pO1xuICB9XG4gIHJldHVybiBjb2xvcnMgPyBgcmdiJHtjb2xvcnMubGVuZ3RoID09PSA0ID8gJ2EnIDogJyd9KCR7Y29sb3JzLm1hcCgobiwgaW5kZXgpID0+IHtcbiAgICByZXR1cm4gaW5kZXggPCAzID8gcGFyc2VJbnQobiwgMTYpIDogTWF0aC5yb3VuZChwYXJzZUludChuLCAxNikgLyAyNTUgKiAxMDAwKSAvIDEwMDA7XG4gIH0pLmpvaW4oJywgJyl9KWAgOiAnJztcbn1cbmZ1bmN0aW9uIGludFRvSGV4KGludCkge1xuICBjb25zdCBoZXggPSBpbnQudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/IGAwJHtoZXh9YCA6IGhleDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIHRoZSB0eXBlIGFuZCB2YWx1ZXMgb2YgYSBjb2xvci5cbiAqXG4gKiBOb3RlOiBEb2VzIG5vdCBzdXBwb3J0IHJnYiAlIHZhbHVlcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEByZXR1cm5zIHtvYmplY3R9IC0gQSBNVUkgY29sb3Igb2JqZWN0OiB7dHlwZTogc3RyaW5nLCB2YWx1ZXM6IG51bWJlcltdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb21wb3NlQ29sb3IoY29sb3IpIHtcbiAgLy8gSWRlbXBvdGVudFxuICBpZiAoY29sb3IudHlwZSkge1xuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuICBpZiAoY29sb3IuY2hhckF0KDApID09PSAnIycpIHtcbiAgICByZXR1cm4gZGVjb21wb3NlQ29sb3IoaGV4VG9SZ2IoY29sb3IpKTtcbiAgfVxuICBjb25zdCBtYXJrZXIgPSBjb2xvci5pbmRleE9mKCcoJyk7XG4gIGNvbnN0IHR5cGUgPSBjb2xvci5zdWJzdHJpbmcoMCwgbWFya2VyKTtcbiAgaWYgKFsncmdiJywgJ3JnYmEnLCAnaHNsJywgJ2hzbGEnLCAnY29sb3InXS5pbmRleE9mKHR5cGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBgTVVJOiBVbnN1cHBvcnRlZCBcXGAke2NvbG9yfVxcYCBjb2xvci5cblRoZSBmb2xsb3dpbmcgZm9ybWF0cyBhcmUgc3VwcG9ydGVkOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpLCBjb2xvcigpLmAgOiBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlKDksIGNvbG9yKSk7XG4gIH1cbiAgbGV0IHZhbHVlcyA9IGNvbG9yLnN1YnN0cmluZyhtYXJrZXIgKyAxLCBjb2xvci5sZW5ndGggLSAxKTtcbiAgbGV0IGNvbG9yU3BhY2U7XG4gIGlmICh0eXBlID09PSAnY29sb3InKSB7XG4gICAgdmFsdWVzID0gdmFsdWVzLnNwbGl0KCcgJyk7XG4gICAgY29sb3JTcGFjZSA9IHZhbHVlcy5zaGlmdCgpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSA0ICYmIHZhbHVlc1szXS5jaGFyQXQoMCkgPT09ICcvJykge1xuICAgICAgdmFsdWVzWzNdID0gdmFsdWVzWzNdLnNsaWNlKDEpO1xuICAgIH1cbiAgICBpZiAoWydzcmdiJywgJ2Rpc3BsYXktcDMnLCAnYTk4LXJnYicsICdwcm9waG90by1yZ2InLCAncmVjLTIwMjAnXS5pbmRleE9mKGNvbG9yU3BhY2UpID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGBNVUk6IHVuc3VwcG9ydGVkIFxcYCR7Y29sb3JTcGFjZX1cXGAgY29sb3Igc3BhY2UuXG5UaGUgZm9sbG93aW5nIGNvbG9yIHNwYWNlcyBhcmUgc3VwcG9ydGVkOiBzcmdiLCBkaXNwbGF5LXAzLCBhOTgtcmdiLCBwcm9waG90by1yZ2IsIHJlYy0yMDIwLmAgOiBfZm9ybWF0TXVpRXJyb3JNZXNzYWdlKDEwLCBjb2xvclNwYWNlKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbHVlcyA9IHZhbHVlcy5zcGxpdCgnLCcpO1xuICB9XG4gIHZhbHVlcyA9IHZhbHVlcy5tYXAodmFsdWUgPT4gcGFyc2VGbG9hdCh2YWx1ZSkpO1xuICByZXR1cm4ge1xuICAgIHR5cGUsXG4gICAgdmFsdWVzLFxuICAgIGNvbG9yU3BhY2VcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgY2hhbm5lbCBjcmVhdGVkIGZyb20gdGhlIGlucHV0IGNvbG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gVGhlIGNoYW5uZWwgZm9yIHRoZSBjb2xvciwgdGhhdCBjYW4gYmUgdXNlZCBpbiByZ2JhIG9yIGhzbGEgY29sb3JzXG4gKi9cbmV4cG9ydCBjb25zdCBjb2xvckNoYW5uZWwgPSBjb2xvciA9PiB7XG4gIGNvbnN0IGRlY29tcG9zZWRDb2xvciA9IGRlY29tcG9zZUNvbG9yKGNvbG9yKTtcbiAgcmV0dXJuIGRlY29tcG9zZWRDb2xvci52YWx1ZXMuc2xpY2UoMCwgMykubWFwKCh2YWwsIGlkeCkgPT4gZGVjb21wb3NlZENvbG9yLnR5cGUuaW5kZXhPZignaHNsJykgIT09IC0xICYmIGlkeCAhPT0gMCA/IGAke3ZhbH0lYCA6IHZhbCkuam9pbignICcpO1xufTtcbmV4cG9ydCBjb25zdCBwcml2YXRlX3NhZmVDb2xvckNoYW5uZWwgPSAoY29sb3IsIHdhcm5pbmcpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gY29sb3JDaGFubmVsKGNvbG9yKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAod2FybmluZyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNvbG9yIG9iamVjdCB3aXRoIHR5cGUgYW5kIHZhbHVlcyB0byBhIHN0cmluZy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBjb2xvciAtIERlY29tcG9zZWQgY29sb3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvci50eXBlIC0gT25lIG9mOiAncmdiJywgJ3JnYmEnLCAnaHNsJywgJ2hzbGEnLCAnY29sb3InXG4gKiBAcGFyYW0ge2FycmF5fSBjb2xvci52YWx1ZXMgLSBbbixuLG5dIG9yIFtuLG4sbixuXVxuICogQHJldHVybnMge3N0cmluZ30gQSBDU1MgY29sb3Igc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWNvbXBvc2VDb2xvcihjb2xvcikge1xuICBjb25zdCB7XG4gICAgdHlwZSxcbiAgICBjb2xvclNwYWNlXG4gIH0gPSBjb2xvcjtcbiAgbGV0IHtcbiAgICB2YWx1ZXNcbiAgfSA9IGNvbG9yO1xuICBpZiAodHlwZS5pbmRleE9mKCdyZ2InKSAhPT0gLTEpIHtcbiAgICAvLyBPbmx5IGNvbnZlcnQgdGhlIGZpcnN0IDMgdmFsdWVzIHRvIGludCAoaS5lLiBub3QgYWxwaGEpXG4gICAgdmFsdWVzID0gdmFsdWVzLm1hcCgobiwgaSkgPT4gaSA8IDMgPyBwYXJzZUludChuLCAxMCkgOiBuKTtcbiAgfSBlbHNlIGlmICh0eXBlLmluZGV4T2YoJ2hzbCcpICE9PSAtMSkge1xuICAgIHZhbHVlc1sxXSA9IGAke3ZhbHVlc1sxXX0lYDtcbiAgICB2YWx1ZXNbMl0gPSBgJHt2YWx1ZXNbMl19JWA7XG4gIH1cbiAgaWYgKHR5cGUuaW5kZXhPZignY29sb3InKSAhPT0gLTEpIHtcbiAgICB2YWx1ZXMgPSBgJHtjb2xvclNwYWNlfSAke3ZhbHVlcy5qb2luKCcgJyl9YDtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZXMgPSBgJHt2YWx1ZXMuam9pbignLCAnKX1gO1xuICB9XG4gIHJldHVybiBgJHt0eXBlfSgke3ZhbHVlc30pYDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNvbG9yIGZyb20gQ1NTIHJnYiBmb3JtYXQgdG8gQ1NTIGhleCBmb3JtYXQuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBSR0IgY29sb3IsIGkuZS4gcmdiKG4sIG4sIG4pXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIENTUyByZ2IgY29sb3Igc3RyaW5nLCBpLmUuICNubm5ubm5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJnYlRvSGV4KGNvbG9yKSB7XG4gIC8vIElkZW1wb3RlbnRcbiAgaWYgKGNvbG9yLmluZGV4T2YoJyMnKSA9PT0gMCkge1xuICAgIHJldHVybiBjb2xvcjtcbiAgfVxuICBjb25zdCB7XG4gICAgdmFsdWVzXG4gIH0gPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIHJldHVybiBgIyR7dmFsdWVzLm1hcCgobiwgaSkgPT4gaW50VG9IZXgoaSA9PT0gMyA/IE1hdGgucm91bmQoMjU1ICogbikgOiBuKSkuam9pbignJyl9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIGNvbG9yIGZyb20gaHNsIGZvcm1hdCB0byByZ2IgZm9ybWF0LlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gSFNMIGNvbG9yIHZhbHVlc1xuICogQHJldHVybnMge3N0cmluZ30gcmdiIGNvbG9yIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaHNsVG9SZ2IoY29sb3IpIHtcbiAgY29sb3IgPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIGNvbnN0IHtcbiAgICB2YWx1ZXNcbiAgfSA9IGNvbG9yO1xuICBjb25zdCBoID0gdmFsdWVzWzBdO1xuICBjb25zdCBzID0gdmFsdWVzWzFdIC8gMTAwO1xuICBjb25zdCBsID0gdmFsdWVzWzJdIC8gMTAwO1xuICBjb25zdCBhID0gcyAqIE1hdGgubWluKGwsIDEgLSBsKTtcbiAgY29uc3QgZiA9IChuLCBrID0gKG4gKyBoIC8gMzApICUgMTIpID0+IGwgLSBhICogTWF0aC5tYXgoTWF0aC5taW4oayAtIDMsIDkgLSBrLCAxKSwgLTEpO1xuICBsZXQgdHlwZSA9ICdyZ2InO1xuICBjb25zdCByZ2IgPSBbTWF0aC5yb3VuZChmKDApICogMjU1KSwgTWF0aC5yb3VuZChmKDgpICogMjU1KSwgTWF0aC5yb3VuZChmKDQpICogMjU1KV07XG4gIGlmIChjb2xvci50eXBlID09PSAnaHNsYScpIHtcbiAgICB0eXBlICs9ICdhJztcbiAgICByZ2IucHVzaCh2YWx1ZXNbM10pO1xuICB9XG4gIHJldHVybiByZWNvbXBvc2VDb2xvcih7XG4gICAgdHlwZSxcbiAgICB2YWx1ZXM6IHJnYlxuICB9KTtcbn1cbi8qKlxuICogVGhlIHJlbGF0aXZlIGJyaWdodG5lc3Mgb2YgYW55IHBvaW50IGluIGEgY29sb3Igc3BhY2UsXG4gKiBub3JtYWxpemVkIHRvIDAgZm9yIGRhcmtlc3QgYmxhY2sgYW5kIDEgZm9yIGxpZ2h0ZXN0IHdoaXRlLlxuICpcbiAqIEZvcm11bGE6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBDU1MgY29sb3IsIGkuZS4gb25lIG9mOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpLCBjb2xvcigpXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgcmVsYXRpdmUgYnJpZ2h0bmVzcyBvZiB0aGUgY29sb3IgaW4gdGhlIHJhbmdlIDAgLSAxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMdW1pbmFuY2UoY29sb3IpIHtcbiAgY29sb3IgPSBkZWNvbXBvc2VDb2xvcihjb2xvcik7XG4gIGxldCByZ2IgPSBjb2xvci50eXBlID09PSAnaHNsJyB8fCBjb2xvci50eXBlID09PSAnaHNsYScgPyBkZWNvbXBvc2VDb2xvcihoc2xUb1JnYihjb2xvcikpLnZhbHVlcyA6IGNvbG9yLnZhbHVlcztcbiAgcmdiID0gcmdiLm1hcCh2YWwgPT4ge1xuICAgIGlmIChjb2xvci50eXBlICE9PSAnY29sb3InKSB7XG4gICAgICB2YWwgLz0gMjU1OyAvLyBub3JtYWxpemVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbCA8PSAwLjAzOTI4ID8gdmFsIC8gMTIuOTIgOiAoKHZhbCArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQ7XG4gIH0pO1xuXG4gIC8vIFRydW5jYXRlIGF0IDMgZGlnaXRzXG4gIHJldHVybiBOdW1iZXIoKDAuMjEyNiAqIHJnYlswXSArIDAuNzE1MiAqIHJnYlsxXSArIDAuMDcyMiAqIHJnYlsyXSkudG9GaXhlZCgzKSk7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyB0aGUgY29udHJhc3QgcmF0aW8gYmV0d2VlbiB0d28gY29sb3JzLlxuICpcbiAqIEZvcm11bGE6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9XQ0FHMjAtVEVDSFMvRzE3Lmh0bWwjRzE3LXRlc3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9yZWdyb3VuZCAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKClcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYWNrZ3JvdW5kIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKVxuICogQHJldHVybnMge251bWJlcn0gQSBjb250cmFzdCByYXRpbyB2YWx1ZSBpbiB0aGUgcmFuZ2UgMCAtIDIxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29udHJhc3RSYXRpbyhmb3JlZ3JvdW5kLCBiYWNrZ3JvdW5kKSB7XG4gIGNvbnN0IGx1bUEgPSBnZXRMdW1pbmFuY2UoZm9yZWdyb3VuZCk7XG4gIGNvbnN0IGx1bUIgPSBnZXRMdW1pbmFuY2UoYmFja2dyb3VuZCk7XG4gIHJldHVybiAoTWF0aC5tYXgobHVtQSwgbHVtQikgKyAwLjA1KSAvIChNYXRoLm1pbihsdW1BLCBsdW1CKSArIDAuMDUpO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIGFic29sdXRlIHRyYW5zcGFyZW5jeSBvZiBhIGNvbG9yLlxuICogQW55IGV4aXN0aW5nIGFscGhhIHZhbHVlcyBhcmUgb3ZlcndyaXR0ZW4uXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBDU1MgY29sb3IsIGkuZS4gb25lIG9mOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpLCBjb2xvcigpXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgLSB2YWx1ZSB0byBzZXQgdGhlIGFscGhhIGNoYW5uZWwgdG8gaW4gdGhlIHJhbmdlIDAgLSAxXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBIENTUyBjb2xvciBzdHJpbmcuIEhleCBpbnB1dCB2YWx1ZXMgYXJlIHJldHVybmVkIGFzIHJnYlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWxwaGEoY29sb3IsIHZhbHVlKSB7XG4gIGNvbG9yID0gZGVjb21wb3NlQ29sb3IoY29sb3IpO1xuICB2YWx1ZSA9IGNsYW1wKHZhbHVlKTtcbiAgaWYgKGNvbG9yLnR5cGUgPT09ICdyZ2InIHx8IGNvbG9yLnR5cGUgPT09ICdoc2wnKSB7XG4gICAgY29sb3IudHlwZSArPSAnYSc7XG4gIH1cbiAgaWYgKGNvbG9yLnR5cGUgPT09ICdjb2xvcicpIHtcbiAgICBjb2xvci52YWx1ZXNbM10gPSBgLyR7dmFsdWV9YDtcbiAgfSBlbHNlIHtcbiAgICBjb2xvci52YWx1ZXNbM10gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVjb21wb3NlQ29sb3IoY29sb3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaXZhdGVfc2FmZUFscGhhKGNvbG9yLCB2YWx1ZSwgd2FybmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBhbHBoYShjb2xvciwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICh3YXJuaW5nICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUud2Fybih3YXJuaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbG9yO1xuICB9XG59XG5cbi8qKlxuICogRGFya2VucyBhIGNvbG9yLlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yIC0gQ1NTIGNvbG9yLCBpLmUuIG9uZSBvZjogI25ubiwgI25ubm5ubiwgcmdiKCksIHJnYmEoKSwgaHNsKCksIGhzbGEoKSwgY29sb3IoKVxuICogQHBhcmFtIHtudW1iZXJ9IGNvZWZmaWNpZW50IC0gbXVsdGlwbGllciBpbiB0aGUgcmFuZ2UgMCAtIDFcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgQ1NTIGNvbG9yIHN0cmluZy4gSGV4IGlucHV0IHZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgcmdiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXJrZW4oY29sb3IsIGNvZWZmaWNpZW50KSB7XG4gIGNvbG9yID0gZGVjb21wb3NlQ29sb3IoY29sb3IpO1xuICBjb2VmZmljaWVudCA9IGNsYW1wKGNvZWZmaWNpZW50KTtcbiAgaWYgKGNvbG9yLnR5cGUuaW5kZXhPZignaHNsJykgIT09IC0xKSB7XG4gICAgY29sb3IudmFsdWVzWzJdICo9IDEgLSBjb2VmZmljaWVudDtcbiAgfSBlbHNlIGlmIChjb2xvci50eXBlLmluZGV4T2YoJ3JnYicpICE9PSAtMSB8fCBjb2xvci50eXBlLmluZGV4T2YoJ2NvbG9yJykgIT09IC0xKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpICs9IDEpIHtcbiAgICAgIGNvbG9yLnZhbHVlc1tpXSAqPSAxIC0gY29lZmZpY2llbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWNvbXBvc2VDb2xvcihjb2xvcik7XG59XG5leHBvcnQgZnVuY3Rpb24gcHJpdmF0ZV9zYWZlRGFya2VuKGNvbG9yLCBjb2VmZmljaWVudCwgd2FybmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBkYXJrZW4oY29sb3IsIGNvZWZmaWNpZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAod2FybmluZyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuXG4vKipcbiAqIExpZ2h0ZW5zIGEgY29sb3IuXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3IgLSBDU1MgY29sb3IsIGkuZS4gb25lIG9mOiAjbm5uLCAjbm5ubm5uLCByZ2IoKSwgcmdiYSgpLCBoc2woKSwgaHNsYSgpLCBjb2xvcigpXG4gKiBAcGFyYW0ge251bWJlcn0gY29lZmZpY2llbnQgLSBtdWx0aXBsaWVyIGluIHRoZSByYW5nZSAwIC0gMVxuICogQHJldHVybnMge3N0cmluZ30gQSBDU1MgY29sb3Igc3RyaW5nLiBIZXggaW5wdXQgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyByZ2JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpZ2h0ZW4oY29sb3IsIGNvZWZmaWNpZW50KSB7XG4gIGNvbG9yID0gZGVjb21wb3NlQ29sb3IoY29sb3IpO1xuICBjb2VmZmljaWVudCA9IGNsYW1wKGNvZWZmaWNpZW50KTtcbiAgaWYgKGNvbG9yLnR5cGUuaW5kZXhPZignaHNsJykgIT09IC0xKSB7XG4gICAgY29sb3IudmFsdWVzWzJdICs9ICgxMDAgLSBjb2xvci52YWx1ZXNbMl0pICogY29lZmZpY2llbnQ7XG4gIH0gZWxzZSBpZiAoY29sb3IudHlwZS5pbmRleE9mKCdyZ2InKSAhPT0gLTEpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkgKz0gMSkge1xuICAgICAgY29sb3IudmFsdWVzW2ldICs9ICgyNTUgLSBjb2xvci52YWx1ZXNbaV0pICogY29lZmZpY2llbnQ7XG4gICAgfVxuICB9IGVsc2UgaWYgKGNvbG9yLnR5cGUuaW5kZXhPZignY29sb3InKSAhPT0gLTEpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkgKz0gMSkge1xuICAgICAgY29sb3IudmFsdWVzW2ldICs9ICgxIC0gY29sb3IudmFsdWVzW2ldKSAqIGNvZWZmaWNpZW50O1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVjb21wb3NlQ29sb3IoY29sb3IpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaXZhdGVfc2FmZUxpZ2h0ZW4oY29sb3IsIGNvZWZmaWNpZW50LCB3YXJuaW5nKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGxpZ2h0ZW4oY29sb3IsIGNvZWZmaWNpZW50KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAod2FybmluZyAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLndhcm4od2FybmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjb2xvcjtcbiAgfVxufVxuXG4vKipcbiAqIERhcmtlbiBvciBsaWdodGVuIGEgY29sb3IsIGRlcGVuZGluZyBvbiBpdHMgbHVtaW5hbmNlLlxuICogTGlnaHQgY29sb3JzIGFyZSBkYXJrZW5lZCwgZGFyayBjb2xvcnMgYXJlIGxpZ2h0ZW5lZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvciAtIENTUyBjb2xvciwgaS5lLiBvbmUgb2Y6ICNubm4sICNubm5ubm4sIHJnYigpLCByZ2JhKCksIGhzbCgpLCBoc2xhKCksIGNvbG9yKClcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2VmZmljaWVudD0wLjE1IC0gbXVsdGlwbGllciBpbiB0aGUgcmFuZ2UgMCAtIDFcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgQ1NTIGNvbG9yIHN0cmluZy4gSGV4IGlucHV0IHZhbHVlcyBhcmUgcmV0dXJuZWQgYXMgcmdiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbXBoYXNpemUoY29sb3IsIGNvZWZmaWNpZW50ID0gMC4xNSkge1xuICByZXR1cm4gZ2V0THVtaW5hbmNlKGNvbG9yKSA+IDAuNSA/IGRhcmtlbihjb2xvciwgY29lZmZpY2llbnQpIDogbGlnaHRlbihjb2xvciwgY29lZmZpY2llbnQpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaXZhdGVfc2FmZUVtcGhhc2l6ZShjb2xvciwgY29lZmZpY2llbnQsIHdhcm5pbmcpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcHJpdmF0ZV9zYWZlRW1waGFzaXplKGNvbG9yLCBjb2VmZmljaWVudCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKHdhcm5pbmcgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS53YXJuKHdhcm5pbmcpO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG4gIH1cbn0iLCJjb25zdCBjb21tb24gPSB7XG4gIGJsYWNrOiAnIzAwMCcsXG4gIHdoaXRlOiAnI2ZmZidcbn07XG5leHBvcnQgZGVmYXVsdCBjb21tb247IiwiY29uc3QgZ3JleSA9IHtcbiAgNTA6ICcjZmFmYWZhJyxcbiAgMTAwOiAnI2Y1ZjVmNScsXG4gIDIwMDogJyNlZWVlZWUnLFxuICAzMDA6ICcjZTBlMGUwJyxcbiAgNDAwOiAnI2JkYmRiZCcsXG4gIDUwMDogJyM5ZTllOWUnLFxuICA2MDA6ICcjNzU3NTc1JyxcbiAgNzAwOiAnIzYxNjE2MScsXG4gIDgwMDogJyM0MjQyNDInLFxuICA5MDA6ICcjMjEyMTIxJyxcbiAgQTEwMDogJyNmNWY1ZjUnLFxuICBBMjAwOiAnI2VlZWVlZScsXG4gIEE0MDA6ICcjYmRiZGJkJyxcbiAgQTcwMDogJyM2MTYxNjEnXG59O1xuZXhwb3J0IGRlZmF1bHQgZ3JleTsiLCJjb25zdCBwdXJwbGUgPSB7XG4gIDUwOiAnI2YzZTVmNScsXG4gIDEwMDogJyNlMWJlZTcnLFxuICAyMDA6ICcjY2U5M2Q4JyxcbiAgMzAwOiAnI2JhNjhjOCcsXG4gIDQwMDogJyNhYjQ3YmMnLFxuICA1MDA6ICcjOWMyN2IwJyxcbiAgNjAwOiAnIzhlMjRhYScsXG4gIDcwMDogJyM3YjFmYTInLFxuICA4MDA6ICcjNmExYjlhJyxcbiAgOTAwOiAnIzRhMTQ4YycsXG4gIEExMDA6ICcjZWE4MGZjJyxcbiAgQTIwMDogJyNlMDQwZmInLFxuICBBNDAwOiAnI2Q1MDBmOScsXG4gIEE3MDA6ICcjYWEwMGZmJ1xufTtcbmV4cG9ydCBkZWZhdWx0IHB1cnBsZTsiLCJjb25zdCByZWQgPSB7XG4gIDUwOiAnI2ZmZWJlZScsXG4gIDEwMDogJyNmZmNkZDInLFxuICAyMDA6ICcjZWY5YTlhJyxcbiAgMzAwOiAnI2U1NzM3MycsXG4gIDQwMDogJyNlZjUzNTAnLFxuICA1MDA6ICcjZjQ0MzM2JyxcbiAgNjAwOiAnI2U1MzkzNScsXG4gIDcwMDogJyNkMzJmMmYnLFxuICA4MDA6ICcjYzYyODI4JyxcbiAgOTAwOiAnI2I3MWMxYycsXG4gIEExMDA6ICcjZmY4YTgwJyxcbiAgQTIwMDogJyNmZjUyNTInLFxuICBBNDAwOiAnI2ZmMTc0NCcsXG4gIEE3MDA6ICcjZDUwMDAwJ1xufTtcbmV4cG9ydCBkZWZhdWx0IHJlZDsiLCJjb25zdCBvcmFuZ2UgPSB7XG4gIDUwOiAnI2ZmZjNlMCcsXG4gIDEwMDogJyNmZmUwYjInLFxuICAyMDA6ICcjZmZjYzgwJyxcbiAgMzAwOiAnI2ZmYjc0ZCcsXG4gIDQwMDogJyNmZmE3MjYnLFxuICA1MDA6ICcjZmY5ODAwJyxcbiAgNjAwOiAnI2ZiOGMwMCcsXG4gIDcwMDogJyNmNTdjMDAnLFxuICA4MDA6ICcjZWY2YzAwJyxcbiAgOTAwOiAnI2U2NTEwMCcsXG4gIEExMDA6ICcjZmZkMTgwJyxcbiAgQTIwMDogJyNmZmFiNDAnLFxuICBBNDAwOiAnI2ZmOTEwMCcsXG4gIEE3MDA6ICcjZmY2ZDAwJ1xufTtcbmV4cG9ydCBkZWZhdWx0IG9yYW5nZTsiLCJjb25zdCBibHVlID0ge1xuICA1MDogJyNlM2YyZmQnLFxuICAxMDA6ICcjYmJkZWZiJyxcbiAgMjAwOiAnIzkwY2FmOScsXG4gIDMwMDogJyM2NGI1ZjYnLFxuICA0MDA6ICcjNDJhNWY1JyxcbiAgNTAwOiAnIzIxOTZmMycsXG4gIDYwMDogJyMxZTg4ZTUnLFxuICA3MDA6ICcjMTk3NmQyJyxcbiAgODAwOiAnIzE1NjVjMCcsXG4gIDkwMDogJyMwZDQ3YTEnLFxuICBBMTAwOiAnIzgyYjFmZicsXG4gIEEyMDA6ICcjNDQ4YWZmJyxcbiAgQTQwMDogJyMyOTc5ZmYnLFxuICBBNzAwOiAnIzI5NjJmZidcbn07XG5leHBvcnQgZGVmYXVsdCBibHVlOyIsImNvbnN0IGxpZ2h0Qmx1ZSA9IHtcbiAgNTA6ICcjZTFmNWZlJyxcbiAgMTAwOiAnI2IzZTVmYycsXG4gIDIwMDogJyM4MWQ0ZmEnLFxuICAzMDA6ICcjNGZjM2Y3JyxcbiAgNDAwOiAnIzI5YjZmNicsXG4gIDUwMDogJyMwM2E5ZjQnLFxuICA2MDA6ICcjMDM5YmU1JyxcbiAgNzAwOiAnIzAyODhkMScsXG4gIDgwMDogJyMwMjc3YmQnLFxuICA5MDA6ICcjMDE1NzliJyxcbiAgQTEwMDogJyM4MGQ4ZmYnLFxuICBBMjAwOiAnIzQwYzRmZicsXG4gIEE0MDA6ICcjMDBiMGZmJyxcbiAgQTcwMDogJyMwMDkxZWEnXG59O1xuZXhwb3J0IGRlZmF1bHQgbGlnaHRCbHVlOyIsImNvbnN0IGdyZWVuID0ge1xuICA1MDogJyNlOGY1ZTknLFxuICAxMDA6ICcjYzhlNmM5JyxcbiAgMjAwOiAnI2E1ZDZhNycsXG4gIDMwMDogJyM4MWM3ODQnLFxuICA0MDA6ICcjNjZiYjZhJyxcbiAgNTAwOiAnIzRjYWY1MCcsXG4gIDYwMDogJyM0M2EwNDcnLFxuICA3MDA6ICcjMzg4ZTNjJyxcbiAgODAwOiAnIzJlN2QzMicsXG4gIDkwMDogJyMxYjVlMjAnLFxuICBBMTAwOiAnI2I5ZjZjYScsXG4gIEEyMDA6ICcjNjlmMGFlJyxcbiAgQTQwMDogJyMwMGU2NzYnLFxuICBBNzAwOiAnIzAwYzg1Mydcbn07XG5leHBvcnQgZGVmYXVsdCBncmVlbjsiLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IHsgZm9ybWF0TXVpRXJyb3JNZXNzYWdlIGFzIF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UgfSBmcm9tIFwiQG11aS91dGlsc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wibW9kZVwiLCBcImNvbnRyYXN0VGhyZXNob2xkXCIsIFwidG9uYWxPZmZzZXRcIl07XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IGRhcmtlbiwgZ2V0Q29udHJhc3RSYXRpbywgbGlnaHRlbiB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBjb21tb24gZnJvbSAnLi4vY29sb3JzL2NvbW1vbic7XG5pbXBvcnQgZ3JleSBmcm9tICcuLi9jb2xvcnMvZ3JleSc7XG5pbXBvcnQgcHVycGxlIGZyb20gJy4uL2NvbG9ycy9wdXJwbGUnO1xuaW1wb3J0IHJlZCBmcm9tICcuLi9jb2xvcnMvcmVkJztcbmltcG9ydCBvcmFuZ2UgZnJvbSAnLi4vY29sb3JzL29yYW5nZSc7XG5pbXBvcnQgYmx1ZSBmcm9tICcuLi9jb2xvcnMvYmx1ZSc7XG5pbXBvcnQgbGlnaHRCbHVlIGZyb20gJy4uL2NvbG9ycy9saWdodEJsdWUnO1xuaW1wb3J0IGdyZWVuIGZyb20gJy4uL2NvbG9ycy9ncmVlbic7XG5leHBvcnQgY29uc3QgbGlnaHQgPSB7XG4gIC8vIFRoZSBjb2xvcnMgdXNlZCB0byBzdHlsZSB0aGUgdGV4dC5cbiAgdGV4dDoge1xuICAgIC8vIFRoZSBtb3N0IGltcG9ydGFudCB0ZXh0LlxuICAgIHByaW1hcnk6ICdyZ2JhKDAsIDAsIDAsIDAuODcpJyxcbiAgICAvLyBTZWNvbmRhcnkgdGV4dC5cbiAgICBzZWNvbmRhcnk6ICdyZ2JhKDAsIDAsIDAsIDAuNiknLFxuICAgIC8vIERpc2FibGVkIHRleHQgaGF2ZSBldmVuIGxvd2VyIHZpc3VhbCBwcm9taW5lbmNlLlxuICAgIGRpc2FibGVkOiAncmdiYSgwLCAwLCAwLCAwLjM4KSdcbiAgfSxcbiAgLy8gVGhlIGNvbG9yIHVzZWQgdG8gZGl2aWRlIGRpZmZlcmVudCBlbGVtZW50cy5cbiAgZGl2aWRlcjogJ3JnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAvLyBUaGUgYmFja2dyb3VuZCBjb2xvcnMgdXNlZCB0byBzdHlsZSB0aGUgc3VyZmFjZXMuXG4gIC8vIENvbnNpc3RlbmN5IGJldHdlZW4gdGhlc2UgdmFsdWVzIGlzIGltcG9ydGFudC5cbiAgYmFja2dyb3VuZDoge1xuICAgIHBhcGVyOiBjb21tb24ud2hpdGUsXG4gICAgZGVmYXVsdDogY29tbW9uLndoaXRlXG4gIH0sXG4gIC8vIFRoZSBjb2xvcnMgdXNlZCB0byBzdHlsZSB0aGUgYWN0aW9uIGVsZW1lbnRzLlxuICBhY3Rpb246IHtcbiAgICAvLyBUaGUgY29sb3Igb2YgYW4gYWN0aXZlIGFjdGlvbiBsaWtlIGFuIGljb24gYnV0dG9uLlxuICAgIGFjdGl2ZTogJ3JnYmEoMCwgMCwgMCwgMC41NCknLFxuICAgIC8vIFRoZSBjb2xvciBvZiBhbiBob3ZlcmVkIGFjdGlvbi5cbiAgICBob3ZlcjogJ3JnYmEoMCwgMCwgMCwgMC4wNCknLFxuICAgIGhvdmVyT3BhY2l0eTogMC4wNCxcbiAgICAvLyBUaGUgY29sb3Igb2YgYSBzZWxlY3RlZCBhY3Rpb24uXG4gICAgc2VsZWN0ZWQ6ICdyZ2JhKDAsIDAsIDAsIDAuMDgpJyxcbiAgICBzZWxlY3RlZE9wYWNpdHk6IDAuMDgsXG4gICAgLy8gVGhlIGNvbG9yIG9mIGEgZGlzYWJsZWQgYWN0aW9uLlxuICAgIGRpc2FibGVkOiAncmdiYSgwLCAwLCAwLCAwLjI2KScsXG4gICAgLy8gVGhlIGJhY2tncm91bmQgY29sb3Igb2YgYSBkaXNhYmxlZCBhY3Rpb24uXG4gICAgZGlzYWJsZWRCYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAwLjEyKScsXG4gICAgZGlzYWJsZWRPcGFjaXR5OiAwLjM4LFxuICAgIGZvY3VzOiAncmdiYSgwLCAwLCAwLCAwLjEyKScsXG4gICAgZm9jdXNPcGFjaXR5OiAwLjEyLFxuICAgIGFjdGl2YXRlZE9wYWNpdHk6IDAuMTJcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBkYXJrID0ge1xuICB0ZXh0OiB7XG4gICAgcHJpbWFyeTogY29tbW9uLndoaXRlLFxuICAgIHNlY29uZGFyeTogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMC43KScsXG4gICAgZGlzYWJsZWQ6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknLFxuICAgIGljb246ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSknXG4gIH0sXG4gIGRpdmlkZXI6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpJyxcbiAgYmFja2dyb3VuZDoge1xuICAgIHBhcGVyOiAnIzEyMTIxMicsXG4gICAgZGVmYXVsdDogJyMxMjEyMTInXG4gIH0sXG4gIGFjdGlvbjoge1xuICAgIGFjdGl2ZTogY29tbW9uLndoaXRlLFxuICAgIGhvdmVyOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KScsXG4gICAgaG92ZXJPcGFjaXR5OiAwLjA4LFxuICAgIHNlbGVjdGVkOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE2KScsXG4gICAgc2VsZWN0ZWRPcGFjaXR5OiAwLjE2LFxuICAgIGRpc2FibGVkOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpJyxcbiAgICBkaXNhYmxlZEJhY2tncm91bmQ6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpJyxcbiAgICBkaXNhYmxlZE9wYWNpdHk6IDAuMzgsXG4gICAgZm9jdXM6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpJyxcbiAgICBmb2N1c09wYWNpdHk6IDAuMTIsXG4gICAgYWN0aXZhdGVkT3BhY2l0eTogMC4yNFxuICB9XG59O1xuZnVuY3Rpb24gYWRkTGlnaHRPckRhcmsoaW50ZW50LCBkaXJlY3Rpb24sIHNoYWRlLCB0b25hbE9mZnNldCkge1xuICBjb25zdCB0b25hbE9mZnNldExpZ2h0ID0gdG9uYWxPZmZzZXQubGlnaHQgfHwgdG9uYWxPZmZzZXQ7XG4gIGNvbnN0IHRvbmFsT2Zmc2V0RGFyayA9IHRvbmFsT2Zmc2V0LmRhcmsgfHwgdG9uYWxPZmZzZXQgKiAxLjU7XG4gIGlmICghaW50ZW50W2RpcmVjdGlvbl0pIHtcbiAgICBpZiAoaW50ZW50Lmhhc093blByb3BlcnR5KHNoYWRlKSkge1xuICAgICAgaW50ZW50W2RpcmVjdGlvbl0gPSBpbnRlbnRbc2hhZGVdO1xuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAnbGlnaHQnKSB7XG4gICAgICBpbnRlbnQubGlnaHQgPSBsaWdodGVuKGludGVudC5tYWluLCB0b25hbE9mZnNldExpZ2h0KTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ2RhcmsnKSB7XG4gICAgICBpbnRlbnQuZGFyayA9IGRhcmtlbihpbnRlbnQubWFpbiwgdG9uYWxPZmZzZXREYXJrKTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRQcmltYXJ5KG1vZGUgPSAnbGlnaHQnKSB7XG4gIGlmIChtb2RlID09PSAnZGFyaycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWFpbjogYmx1ZVsyMDBdLFxuICAgICAgbGlnaHQ6IGJsdWVbNTBdLFxuICAgICAgZGFyazogYmx1ZVs0MDBdXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG1haW46IGJsdWVbNzAwXSxcbiAgICBsaWdodDogYmx1ZVs0MDBdLFxuICAgIGRhcms6IGJsdWVbODAwXVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0RGVmYXVsdFNlY29uZGFyeShtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IHB1cnBsZVsyMDBdLFxuICAgICAgbGlnaHQ6IHB1cnBsZVs1MF0sXG4gICAgICBkYXJrOiBwdXJwbGVbNDAwXVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBtYWluOiBwdXJwbGVbNTAwXSxcbiAgICBsaWdodDogcHVycGxlWzMwMF0sXG4gICAgZGFyazogcHVycGxlWzcwMF1cbiAgfTtcbn1cbmZ1bmN0aW9uIGdldERlZmF1bHRFcnJvcihtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IHJlZFs1MDBdLFxuICAgICAgbGlnaHQ6IHJlZFszMDBdLFxuICAgICAgZGFyazogcmVkWzcwMF1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogcmVkWzcwMF0sXG4gICAgbGlnaHQ6IHJlZFs0MDBdLFxuICAgIGRhcms6IHJlZFs4MDBdXG4gIH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0SW5mbyhtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IGxpZ2h0Qmx1ZVs0MDBdLFxuICAgICAgbGlnaHQ6IGxpZ2h0Qmx1ZVszMDBdLFxuICAgICAgZGFyazogbGlnaHRCbHVlWzcwMF1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogbGlnaHRCbHVlWzcwMF0sXG4gICAgbGlnaHQ6IGxpZ2h0Qmx1ZVs1MDBdLFxuICAgIGRhcms6IGxpZ2h0Qmx1ZVs5MDBdXG4gIH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0U3VjY2Vzcyhtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IGdyZWVuWzQwMF0sXG4gICAgICBsaWdodDogZ3JlZW5bMzAwXSxcbiAgICAgIGRhcms6IGdyZWVuWzcwMF1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogZ3JlZW5bODAwXSxcbiAgICBsaWdodDogZ3JlZW5bNTAwXSxcbiAgICBkYXJrOiBncmVlbls5MDBdXG4gIH07XG59XG5mdW5jdGlvbiBnZXREZWZhdWx0V2FybmluZyhtb2RlID0gJ2xpZ2h0Jykge1xuICBpZiAobW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW46IG9yYW5nZVs0MDBdLFxuICAgICAgbGlnaHQ6IG9yYW5nZVszMDBdLFxuICAgICAgZGFyazogb3JhbmdlWzcwMF1cbiAgICB9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogJyNlZDZjMDInLFxuICAgIC8vIGNsb3Nlc3QgdG8gb3JhbmdlWzgwMF0gdGhhdCBwYXNzIDM6MS5cbiAgICBsaWdodDogb3JhbmdlWzUwMF0sXG4gICAgZGFyazogb3JhbmdlWzkwMF1cbiAgfTtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVBhbGV0dGUocGFsZXR0ZSkge1xuICBjb25zdCB7XG4gICAgICBtb2RlID0gJ2xpZ2h0JyxcbiAgICAgIGNvbnRyYXN0VGhyZXNob2xkID0gMyxcbiAgICAgIHRvbmFsT2Zmc2V0ID0gMC4yXG4gICAgfSA9IHBhbGV0dGUsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwYWxldHRlLCBfZXhjbHVkZWQpO1xuICBjb25zdCBwcmltYXJ5ID0gcGFsZXR0ZS5wcmltYXJ5IHx8IGdldERlZmF1bHRQcmltYXJ5KG1vZGUpO1xuICBjb25zdCBzZWNvbmRhcnkgPSBwYWxldHRlLnNlY29uZGFyeSB8fCBnZXREZWZhdWx0U2Vjb25kYXJ5KG1vZGUpO1xuICBjb25zdCBlcnJvciA9IHBhbGV0dGUuZXJyb3IgfHwgZ2V0RGVmYXVsdEVycm9yKG1vZGUpO1xuICBjb25zdCBpbmZvID0gcGFsZXR0ZS5pbmZvIHx8IGdldERlZmF1bHRJbmZvKG1vZGUpO1xuICBjb25zdCBzdWNjZXNzID0gcGFsZXR0ZS5zdWNjZXNzIHx8IGdldERlZmF1bHRTdWNjZXNzKG1vZGUpO1xuICBjb25zdCB3YXJuaW5nID0gcGFsZXR0ZS53YXJuaW5nIHx8IGdldERlZmF1bHRXYXJuaW5nKG1vZGUpO1xuXG4gIC8vIFVzZSB0aGUgc2FtZSBsb2dpYyBhc1xuICAvLyBCb290c3RyYXA6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iLzFkNmUzNzEwZGQ0NDdkZTFhMjAwZjI5ZThmYTUyMWY4YTA5MDhmNzAvc2Nzcy9fZnVuY3Rpb25zLnNjc3MjTDU5XG4gIC8vIGFuZCBtYXRlcmlhbC1jb21wb25lbnRzLXdlYiBodHRwczovL2dpdGh1Yi5jb20vbWF0ZXJpYWwtY29tcG9uZW50cy9tYXRlcmlhbC1jb21wb25lbnRzLXdlYi9ibG9iL2FjNDZiODg2M2M0ZGFiOWZjMjJjNGM2NjJkYzZiZDFiNjVkZDY1MmYvcGFja2FnZXMvbWRjLXRoZW1lL19mdW5jdGlvbnMuc2NzcyNMNTRcbiAgZnVuY3Rpb24gZ2V0Q29udHJhc3RUZXh0KGJhY2tncm91bmQpIHtcbiAgICBjb25zdCBjb250cmFzdFRleHQgPSBnZXRDb250cmFzdFJhdGlvKGJhY2tncm91bmQsIGRhcmsudGV4dC5wcmltYXJ5KSA+PSBjb250cmFzdFRocmVzaG9sZCA/IGRhcmsudGV4dC5wcmltYXJ5IDogbGlnaHQudGV4dC5wcmltYXJ5O1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zdCBjb250cmFzdCA9IGdldENvbnRyYXN0UmF0aW8oYmFja2dyb3VuZCwgY29udHJhc3RUZXh0KTtcbiAgICAgIGlmIChjb250cmFzdCA8IDMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbYE1VSTogVGhlIGNvbnRyYXN0IHJhdGlvIG9mICR7Y29udHJhc3R9OjEgZm9yICR7Y29udHJhc3RUZXh0fSBvbiAke2JhY2tncm91bmR9YCwgJ2ZhbGxzIGJlbG93IHRoZSBXQ0FHIHJlY29tbWVuZGVkIGFic29sdXRlIG1pbmltdW0gY29udHJhc3QgcmF0aW8gb2YgMzoxLicsICdodHRwczovL3d3dy53My5vcmcvVFIvMjAwOC9SRUMtV0NBRzIwLTIwMDgxMjExLyN2aXN1YWwtYXVkaW8tY29udHJhc3QtY29udHJhc3QnXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250cmFzdFRleHQ7XG4gIH1cbiAgY29uc3QgYXVnbWVudENvbG9yID0gKHtcbiAgICBjb2xvcixcbiAgICBuYW1lLFxuICAgIG1haW5TaGFkZSA9IDUwMCxcbiAgICBsaWdodFNoYWRlID0gMzAwLFxuICAgIGRhcmtTaGFkZSA9IDcwMFxuICB9KSA9PiB7XG4gICAgY29sb3IgPSBfZXh0ZW5kcyh7fSwgY29sb3IpO1xuICAgIGlmICghY29sb3IubWFpbiAmJiBjb2xvclttYWluU2hhZGVdKSB7XG4gICAgICBjb2xvci5tYWluID0gY29sb3JbbWFpblNoYWRlXTtcbiAgICB9XG4gICAgaWYgKCFjb2xvci5oYXNPd25Qcm9wZXJ0eSgnbWFpbicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gYE1VSTogVGhlIGNvbG9yJHtuYW1lID8gYCAoJHtuYW1lfSlgIDogJyd9IHByb3ZpZGVkIHRvIGF1Z21lbnRDb2xvcihjb2xvcikgaXMgaW52YWxpZC5cblRoZSBjb2xvciBvYmplY3QgbmVlZHMgdG8gaGF2ZSBhIFxcYG1haW5cXGAgcHJvcGVydHkgb3IgYSBcXGAke21haW5TaGFkZX1cXGAgcHJvcGVydHkuYCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoMTEsIG5hbWUgPyBgICgke25hbWV9KWAgOiAnJywgbWFpblNoYWRlKSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY29sb3IubWFpbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBgTVVJOiBUaGUgY29sb3Ike25hbWUgPyBgICgke25hbWV9KWAgOiAnJ30gcHJvdmlkZWQgdG8gYXVnbWVudENvbG9yKGNvbG9yKSBpcyBpbnZhbGlkLlxuXFxgY29sb3IubWFpblxcYCBzaG91bGQgYmUgYSBzdHJpbmcsIGJ1dCBcXGAke0pTT04uc3RyaW5naWZ5KGNvbG9yLm1haW4pfVxcYCB3YXMgcHJvdmlkZWQgaW5zdGVhZC5cblxuRGlkIHlvdSBpbnRlbmQgdG8gdXNlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGFwcHJvYWNoZXM/XG5cbmltcG9ydCB7IGdyZWVuIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvY29sb3JzXCI7XG5cbmNvbnN0IHRoZW1lMSA9IGNyZWF0ZVRoZW1lKHsgcGFsZXR0ZToge1xuICBwcmltYXJ5OiBncmVlbixcbn0gfSk7XG5cbmNvbnN0IHRoZW1lMiA9IGNyZWF0ZVRoZW1lKHsgcGFsZXR0ZToge1xuICBwcmltYXJ5OiB7IG1haW46IGdyZWVuWzUwMF0gfSxcbn0gfSk7YCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoMTIsIG5hbWUgPyBgICgke25hbWV9KWAgOiAnJywgSlNPTi5zdHJpbmdpZnkoY29sb3IubWFpbikpKTtcbiAgICB9XG4gICAgYWRkTGlnaHRPckRhcmsoY29sb3IsICdsaWdodCcsIGxpZ2h0U2hhZGUsIHRvbmFsT2Zmc2V0KTtcbiAgICBhZGRMaWdodE9yRGFyayhjb2xvciwgJ2RhcmsnLCBkYXJrU2hhZGUsIHRvbmFsT2Zmc2V0KTtcbiAgICBpZiAoIWNvbG9yLmNvbnRyYXN0VGV4dCkge1xuICAgICAgY29sb3IuY29udHJhc3RUZXh0ID0gZ2V0Q29udHJhc3RUZXh0KGNvbG9yLm1haW4pO1xuICAgIH1cbiAgICByZXR1cm4gY29sb3I7XG4gIH07XG4gIGNvbnN0IG1vZGVzID0ge1xuICAgIGRhcmssXG4gICAgbGlnaHRcbiAgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoIW1vZGVzW21vZGVdKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNVUk6IFRoZSBwYWxldHRlIG1vZGUgXFxgJHttb2RlfVxcYCBpcyBub3Qgc3VwcG9ydGVkLmApO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYWxldHRlT3V0cHV0ID0gZGVlcG1lcmdlKF9leHRlbmRzKHtcbiAgICAvLyBBIGNvbGxlY3Rpb24gb2YgY29tbW9uIGNvbG9ycy5cbiAgICBjb21tb246IF9leHRlbmRzKHt9LCBjb21tb24pLFxuICAgIC8vIHByZXZlbnQgbXV0YWJsZSBvYmplY3QuXG4gICAgLy8gVGhlIHBhbGV0dGUgbW9kZSwgY2FuIGJlIGxpZ2h0IG9yIGRhcmsuXG4gICAgbW9kZSxcbiAgICAvLyBUaGUgY29sb3JzIHVzZWQgdG8gcmVwcmVzZW50IHByaW1hcnkgaW50ZXJmYWNlIGVsZW1lbnRzIGZvciBhIHVzZXIuXG4gICAgcHJpbWFyeTogYXVnbWVudENvbG9yKHtcbiAgICAgIGNvbG9yOiBwcmltYXJ5LFxuICAgICAgbmFtZTogJ3ByaW1hcnknXG4gICAgfSksXG4gICAgLy8gVGhlIGNvbG9ycyB1c2VkIHRvIHJlcHJlc2VudCBzZWNvbmRhcnkgaW50ZXJmYWNlIGVsZW1lbnRzIGZvciBhIHVzZXIuXG4gICAgc2Vjb25kYXJ5OiBhdWdtZW50Q29sb3Ioe1xuICAgICAgY29sb3I6IHNlY29uZGFyeSxcbiAgICAgIG5hbWU6ICdzZWNvbmRhcnknLFxuICAgICAgbWFpblNoYWRlOiAnQTQwMCcsXG4gICAgICBsaWdodFNoYWRlOiAnQTIwMCcsXG4gICAgICBkYXJrU2hhZGU6ICdBNzAwJ1xuICAgIH0pLFxuICAgIC8vIFRoZSBjb2xvcnMgdXNlZCB0byByZXByZXNlbnQgaW50ZXJmYWNlIGVsZW1lbnRzIHRoYXQgdGhlIHVzZXIgc2hvdWxkIGJlIG1hZGUgYXdhcmUgb2YuXG4gICAgZXJyb3I6IGF1Z21lbnRDb2xvcih7XG4gICAgICBjb2xvcjogZXJyb3IsXG4gICAgICBuYW1lOiAnZXJyb3InXG4gICAgfSksXG4gICAgLy8gVGhlIGNvbG9ycyB1c2VkIHRvIHJlcHJlc2VudCBwb3RlbnRpYWxseSBkYW5nZXJvdXMgYWN0aW9ucyBvciBpbXBvcnRhbnQgbWVzc2FnZXMuXG4gICAgd2FybmluZzogYXVnbWVudENvbG9yKHtcbiAgICAgIGNvbG9yOiB3YXJuaW5nLFxuICAgICAgbmFtZTogJ3dhcm5pbmcnXG4gICAgfSksXG4gICAgLy8gVGhlIGNvbG9ycyB1c2VkIHRvIHByZXNlbnQgaW5mb3JtYXRpb24gdG8gdGhlIHVzZXIgdGhhdCBpcyBuZXV0cmFsIGFuZCBub3QgbmVjZXNzYXJpbHkgaW1wb3J0YW50LlxuICAgIGluZm86IGF1Z21lbnRDb2xvcih7XG4gICAgICBjb2xvcjogaW5mbyxcbiAgICAgIG5hbWU6ICdpbmZvJ1xuICAgIH0pLFxuICAgIC8vIFRoZSBjb2xvcnMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uIG9mIGFuIGFjdGlvbiB0aGF0IHVzZXIgdHJpZ2dlcmVkLlxuICAgIHN1Y2Nlc3M6IGF1Z21lbnRDb2xvcih7XG4gICAgICBjb2xvcjogc3VjY2VzcyxcbiAgICAgIG5hbWU6ICdzdWNjZXNzJ1xuICAgIH0pLFxuICAgIC8vIFRoZSBncmV5IGNvbG9ycy5cbiAgICBncmV5LFxuICAgIC8vIFVzZWQgYnkgYGdldENvbnRyYXN0VGV4dCgpYCB0byBtYXhpbWl6ZSB0aGUgY29udHJhc3QgYmV0d2VlblxuICAgIC8vIHRoZSBiYWNrZ3JvdW5kIGFuZCB0aGUgdGV4dC5cbiAgICBjb250cmFzdFRocmVzaG9sZCxcbiAgICAvLyBUYWtlcyBhIGJhY2tncm91bmQgY29sb3IgYW5kIHJldHVybnMgdGhlIHRleHQgY29sb3IgdGhhdCBtYXhpbWl6ZXMgdGhlIGNvbnRyYXN0LlxuICAgIGdldENvbnRyYXN0VGV4dCxcbiAgICAvLyBHZW5lcmF0ZSBhIHJpY2ggY29sb3Igb2JqZWN0LlxuICAgIGF1Z21lbnRDb2xvcixcbiAgICAvLyBVc2VkIGJ5IHRoZSBmdW5jdGlvbnMgYmVsb3cgdG8gc2hpZnQgYSBjb2xvcidzIGx1bWluYW5jZSBieSBhcHByb3hpbWF0ZWx5XG4gICAgLy8gdHdvIGluZGV4ZXMgd2l0aGluIGl0cyB0b25hbCBwYWxldHRlLlxuICAgIC8vIEUuZy4sIHNoaWZ0IGZyb20gUmVkIDUwMCB0byBSZWQgMzAwIG9yIFJlZCA3MDAuXG4gICAgdG9uYWxPZmZzZXRcbiAgfSwgbW9kZXNbbW9kZV0pLCBvdGhlcik7XG4gIHJldHVybiBwYWxldHRlT3V0cHV0O1xufSIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJmb250RmFtaWx5XCIsIFwiZm9udFNpemVcIiwgXCJmb250V2VpZ2h0TGlnaHRcIiwgXCJmb250V2VpZ2h0UmVndWxhclwiLCBcImZvbnRXZWlnaHRNZWRpdW1cIiwgXCJmb250V2VpZ2h0Qm9sZFwiLCBcImh0bWxGb250U2l6ZVwiLCBcImFsbFZhcmlhbnRzXCIsIFwicHhUb1JlbVwiXTtcbmltcG9ydCB7IGRlZXBtZXJnZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZnVuY3Rpb24gcm91bmQodmFsdWUpIHtcbiAgcmV0dXJuIE1hdGgucm91bmQodmFsdWUgKiAxZTUpIC8gMWU1O1xufVxuY29uc3QgY2FzZUFsbENhcHMgPSB7XG4gIHRleHRUcmFuc2Zvcm06ICd1cHBlcmNhc2UnXG59O1xuY29uc3QgZGVmYXVsdEZvbnRGYW1pbHkgPSAnXCJSb2JvdG9cIiwgXCJIZWx2ZXRpY2FcIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmJztcblxuLyoqXG4gKiBAc2VlIEBsaW5re2h0dHBzOi8vbTIubWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdGhlLXR5cGUtc3lzdGVtLmh0bWx9XG4gKiBAc2VlIEBsaW5re2h0dHBzOi8vbTIubWF0ZXJpYWwuaW8vZGVzaWduL3R5cG9ncmFwaHkvdW5kZXJzdGFuZGluZy10eXBvZ3JhcGh5Lmh0bWx9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZVR5cG9ncmFwaHkocGFsZXR0ZSwgdHlwb2dyYXBoeSkge1xuICBjb25zdCBfcmVmID0gdHlwZW9mIHR5cG9ncmFwaHkgPT09ICdmdW5jdGlvbicgPyB0eXBvZ3JhcGh5KHBhbGV0dGUpIDogdHlwb2dyYXBoeSxcbiAgICB7XG4gICAgICBmb250RmFtaWx5ID0gZGVmYXVsdEZvbnRGYW1pbHksXG4gICAgICAvLyBUaGUgZGVmYXVsdCBmb250IHNpemUgb2YgdGhlIE1hdGVyaWFsIFNwZWNpZmljYXRpb24uXG4gICAgICBmb250U2l6ZSA9IDE0LFxuICAgICAgLy8gcHhcbiAgICAgIGZvbnRXZWlnaHRMaWdodCA9IDMwMCxcbiAgICAgIGZvbnRXZWlnaHRSZWd1bGFyID0gNDAwLFxuICAgICAgZm9udFdlaWdodE1lZGl1bSA9IDUwMCxcbiAgICAgIGZvbnRXZWlnaHRCb2xkID0gNzAwLFxuICAgICAgLy8gVGVsbCBNVUkgd2hhdCdzIHRoZSBmb250LXNpemUgb24gdGhlIGh0bWwgZWxlbWVudC5cbiAgICAgIC8vIDE2cHggaXMgdGhlIGRlZmF1bHQgZm9udC1zaXplIHVzZWQgYnkgYnJvd3NlcnMuXG4gICAgICBodG1sRm9udFNpemUgPSAxNixcbiAgICAgIC8vIEFwcGx5IHRoZSBDU1MgcHJvcGVydGllcyB0byBhbGwgdGhlIHZhcmlhbnRzLlxuICAgICAgYWxsVmFyaWFudHMsXG4gICAgICBweFRvUmVtOiBweFRvUmVtMlxuICAgIH0gPSBfcmVmLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAodHlwZW9mIGZvbnRTaXplICE9PSAnbnVtYmVyJykge1xuICAgICAgY29uc29sZS5lcnJvcignTVVJOiBgZm9udFNpemVgIGlzIHJlcXVpcmVkIHRvIGJlIGEgbnVtYmVyLicpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGh0bWxGb250U2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01VSTogYGh0bWxGb250U2l6ZWAgaXMgcmVxdWlyZWQgdG8gYmUgYSBudW1iZXIuJyk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGNvZWYgPSBmb250U2l6ZSAvIDE0O1xuICBjb25zdCBweFRvUmVtID0gcHhUb1JlbTIgfHwgKHNpemUgPT4gYCR7c2l6ZSAvIGh0bWxGb250U2l6ZSAqIGNvZWZ9cmVtYCk7XG4gIGNvbnN0IGJ1aWxkVmFyaWFudCA9IChmb250V2VpZ2h0LCBzaXplLCBsaW5lSGVpZ2h0LCBsZXR0ZXJTcGFjaW5nLCBjYXNpbmcpID0+IF9leHRlbmRzKHtcbiAgICBmb250RmFtaWx5LFxuICAgIGZvbnRXZWlnaHQsXG4gICAgZm9udFNpemU6IHB4VG9SZW0oc2l6ZSksXG4gICAgLy8gVW5pdGxlc3MgZm9sbG93aW5nIGh0dHBzOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdGhvdWdodHMvMjAwNi8wMi8wOC91bml0bGVzcy1saW5lLWhlaWdodHMvXG4gICAgbGluZUhlaWdodFxuICB9LCBmb250RmFtaWx5ID09PSBkZWZhdWx0Rm9udEZhbWlseSA/IHtcbiAgICBsZXR0ZXJTcGFjaW5nOiBgJHtyb3VuZChsZXR0ZXJTcGFjaW5nIC8gc2l6ZSl9ZW1gXG4gIH0gOiB7fSwgY2FzaW5nLCBhbGxWYXJpYW50cyk7XG4gIGNvbnN0IHZhcmlhbnRzID0ge1xuICAgIGgxOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodExpZ2h0LCA5NiwgMS4xNjcsIC0xLjUpLFxuICAgIGgyOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodExpZ2h0LCA2MCwgMS4yLCAtMC41KSxcbiAgICBoMzogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRSZWd1bGFyLCA0OCwgMS4xNjcsIDApLFxuICAgIGg0OiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDM0LCAxLjIzNSwgMC4yNSksXG4gICAgaDU6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0UmVndWxhciwgMjQsIDEuMzM0LCAwKSxcbiAgICBoNjogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRNZWRpdW0sIDIwLCAxLjYsIDAuMTUpLFxuICAgIHN1YnRpdGxlMTogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRSZWd1bGFyLCAxNiwgMS43NSwgMC4xNSksXG4gICAgc3VidGl0bGUyOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodE1lZGl1bSwgMTQsIDEuNTcsIDAuMSksXG4gICAgYm9keTE6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0UmVndWxhciwgMTYsIDEuNSwgMC4xNSksXG4gICAgYm9keTI6IGJ1aWxkVmFyaWFudChmb250V2VpZ2h0UmVndWxhciwgMTQsIDEuNDMsIDAuMTUpLFxuICAgIGJ1dHRvbjogYnVpbGRWYXJpYW50KGZvbnRXZWlnaHRNZWRpdW0sIDE0LCAxLjc1LCAwLjQsIGNhc2VBbGxDYXBzKSxcbiAgICBjYXB0aW9uOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDEyLCAxLjY2LCAwLjQpLFxuICAgIG92ZXJsaW5lOiBidWlsZFZhcmlhbnQoZm9udFdlaWdodFJlZ3VsYXIsIDEyLCAyLjY2LCAxLCBjYXNlQWxsQ2FwcyksXG4gICAgLy8gVE9ETyB2NjogUmVtb3ZlIGhhbmRsaW5nIG9mICdpbmhlcml0JyB2YXJpYW50IGZyb20gdGhlIHRoZW1lIGFzIGl0IGlzIGFscmVhZHkgaGFuZGxlZCBpbiBNYXRlcmlhbCBVSSdzIFR5cG9ncmFwaHkgY29tcG9uZW50LiBBbHNvLCByZW1lbWJlciB0byByZW1vdmUgdGhlIGFzc29jaWF0ZWQgdHlwZXMuXG4gICAgaW5oZXJpdDoge1xuICAgICAgZm9udEZhbWlseTogJ2luaGVyaXQnLFxuICAgICAgZm9udFdlaWdodDogJ2luaGVyaXQnLFxuICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgIGxpbmVIZWlnaHQ6ICdpbmhlcml0JyxcbiAgICAgIGxldHRlclNwYWNpbmc6ICdpbmhlcml0J1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIGRlZXBtZXJnZShfZXh0ZW5kcyh7XG4gICAgaHRtbEZvbnRTaXplLFxuICAgIHB4VG9SZW0sXG4gICAgZm9udEZhbWlseSxcbiAgICBmb250U2l6ZSxcbiAgICBmb250V2VpZ2h0TGlnaHQsXG4gICAgZm9udFdlaWdodFJlZ3VsYXIsXG4gICAgZm9udFdlaWdodE1lZGl1bSxcbiAgICBmb250V2VpZ2h0Qm9sZFxuICB9LCB2YXJpYW50cyksIG90aGVyLCB7XG4gICAgY2xvbmU6IGZhbHNlIC8vIE5vIG5lZWQgdG8gY2xvbmUgZGVlcFxuICB9KTtcbn0iLCJjb25zdCBzaGFkb3dLZXlVbWJyYU9wYWNpdHkgPSAwLjI7XG5jb25zdCBzaGFkb3dLZXlQZW51bWJyYU9wYWNpdHkgPSAwLjE0O1xuY29uc3Qgc2hhZG93QW1iaWVudFNoYWRvd09wYWNpdHkgPSAwLjEyO1xuZnVuY3Rpb24gY3JlYXRlU2hhZG93KC4uLnB4KSB7XG4gIHJldHVybiBbYCR7cHhbMF19cHggJHtweFsxXX1weCAke3B4WzJdfXB4ICR7cHhbM119cHggcmdiYSgwLDAsMCwke3NoYWRvd0tleVVtYnJhT3BhY2l0eX0pYCwgYCR7cHhbNF19cHggJHtweFs1XX1weCAke3B4WzZdfXB4ICR7cHhbN119cHggcmdiYSgwLDAsMCwke3NoYWRvd0tleVBlbnVtYnJhT3BhY2l0eX0pYCwgYCR7cHhbOF19cHggJHtweFs5XX1weCAke3B4WzEwXX1weCAke3B4WzExXX1weCByZ2JhKDAsMCwwLCR7c2hhZG93QW1iaWVudFNoYWRvd09wYWNpdHl9KWBdLmpvaW4oJywnKTtcbn1cblxuLy8gVmFsdWVzIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hdGVyaWFsLWNvbXBvbmVudHMvbWF0ZXJpYWwtY29tcG9uZW50cy13ZWIvYmxvYi9iZTg3NDdmOTQ1NzQ2NjljYjVlN2FkZDFhN2M1NGZhNDFhODljZWM3L3BhY2thZ2VzL21kYy1lbGV2YXRpb24vX3ZhcmlhYmxlcy5zY3NzXG5jb25zdCBzaGFkb3dzID0gWydub25lJywgY3JlYXRlU2hhZG93KDAsIDIsIDEsIC0xLCAwLCAxLCAxLCAwLCAwLCAxLCAzLCAwKSwgY3JlYXRlU2hhZG93KDAsIDMsIDEsIC0yLCAwLCAyLCAyLCAwLCAwLCAxLCA1LCAwKSwgY3JlYXRlU2hhZG93KDAsIDMsIDMsIC0yLCAwLCAzLCA0LCAwLCAwLCAxLCA4LCAwKSwgY3JlYXRlU2hhZG93KDAsIDIsIDQsIC0xLCAwLCA0LCA1LCAwLCAwLCAxLCAxMCwgMCksIGNyZWF0ZVNoYWRvdygwLCAzLCA1LCAtMSwgMCwgNSwgOCwgMCwgMCwgMSwgMTQsIDApLCBjcmVhdGVTaGFkb3coMCwgMywgNSwgLTEsIDAsIDYsIDEwLCAwLCAwLCAxLCAxOCwgMCksIGNyZWF0ZVNoYWRvdygwLCA0LCA1LCAtMiwgMCwgNywgMTAsIDEsIDAsIDIsIDE2LCAxKSwgY3JlYXRlU2hhZG93KDAsIDUsIDUsIC0zLCAwLCA4LCAxMCwgMSwgMCwgMywgMTQsIDIpLCBjcmVhdGVTaGFkb3coMCwgNSwgNiwgLTMsIDAsIDksIDEyLCAxLCAwLCAzLCAxNiwgMiksIGNyZWF0ZVNoYWRvdygwLCA2LCA2LCAtMywgMCwgMTAsIDE0LCAxLCAwLCA0LCAxOCwgMyksIGNyZWF0ZVNoYWRvdygwLCA2LCA3LCAtNCwgMCwgMTEsIDE1LCAxLCAwLCA0LCAyMCwgMyksIGNyZWF0ZVNoYWRvdygwLCA3LCA4LCAtNCwgMCwgMTIsIDE3LCAyLCAwLCA1LCAyMiwgNCksIGNyZWF0ZVNoYWRvdygwLCA3LCA4LCAtNCwgMCwgMTMsIDE5LCAyLCAwLCA1LCAyNCwgNCksIGNyZWF0ZVNoYWRvdygwLCA3LCA5LCAtNCwgMCwgMTQsIDIxLCAyLCAwLCA1LCAyNiwgNCksIGNyZWF0ZVNoYWRvdygwLCA4LCA5LCAtNSwgMCwgMTUsIDIyLCAyLCAwLCA2LCAyOCwgNSksIGNyZWF0ZVNoYWRvdygwLCA4LCAxMCwgLTUsIDAsIDE2LCAyNCwgMiwgMCwgNiwgMzAsIDUpLCBjcmVhdGVTaGFkb3coMCwgOCwgMTEsIC01LCAwLCAxNywgMjYsIDIsIDAsIDYsIDMyLCA1KSwgY3JlYXRlU2hhZG93KDAsIDksIDExLCAtNSwgMCwgMTgsIDI4LCAyLCAwLCA3LCAzNCwgNiksIGNyZWF0ZVNoYWRvdygwLCA5LCAxMiwgLTYsIDAsIDE5LCAyOSwgMiwgMCwgNywgMzYsIDYpLCBjcmVhdGVTaGFkb3coMCwgMTAsIDEzLCAtNiwgMCwgMjAsIDMxLCAzLCAwLCA4LCAzOCwgNyksIGNyZWF0ZVNoYWRvdygwLCAxMCwgMTMsIC02LCAwLCAyMSwgMzMsIDMsIDAsIDgsIDQwLCA3KSwgY3JlYXRlU2hhZG93KDAsIDEwLCAxNCwgLTYsIDAsIDIyLCAzNSwgMywgMCwgOCwgNDIsIDcpLCBjcmVhdGVTaGFkb3coMCwgMTEsIDE0LCAtNywgMCwgMjMsIDM2LCAzLCAwLCA5LCA0NCwgOCksIGNyZWF0ZVNoYWRvdygwLCAxMSwgMTUsIC03LCAwLCAyNCwgMzgsIDMsIDAsIDksIDQ2LCA4KV07XG5leHBvcnQgZGVmYXVsdCBzaGFkb3dzOyIsImltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJkdXJhdGlvblwiLCBcImVhc2luZ1wiLCBcImRlbGF5XCJdO1xuLy8gRm9sbG93IGh0dHBzOi8vbWF0ZXJpYWwuZ29vZ2xlLmNvbS9tb3Rpb24vZHVyYXRpb24tZWFzaW5nLmh0bWwjZHVyYXRpb24tZWFzaW5nLW5hdHVyYWwtZWFzaW5nLWN1cnZlc1xuLy8gdG8gbGVhcm4gdGhlIGNvbnRleHQgaW4gd2hpY2ggZWFjaCBlYXNpbmcgc2hvdWxkIGJlIHVzZWQuXG5leHBvcnQgY29uc3QgZWFzaW5nID0ge1xuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiBlYXNpbmcgY3VydmUuXG4gIGVhc2VJbk91dDogJ2N1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLFxuICAvLyBPYmplY3RzIGVudGVyIHRoZSBzY3JlZW4gYXQgZnVsbCB2ZWxvY2l0eSBmcm9tIG9mZi1zY3JlZW4gYW5kXG4gIC8vIHNsb3dseSBkZWNlbGVyYXRlIHRvIGEgcmVzdGluZyBwb2ludC5cbiAgZWFzZU91dDogJ2N1YmljLWJlemllcigwLjAsIDAsIDAuMiwgMSknLFxuICAvLyBPYmplY3RzIGxlYXZlIHRoZSBzY3JlZW4gYXQgZnVsbCB2ZWxvY2l0eS4gVGhleSBkbyBub3QgZGVjZWxlcmF0ZSB3aGVuIG9mZi1zY3JlZW4uXG4gIGVhc2VJbjogJ2N1YmljLWJlemllcigwLjQsIDAsIDEsIDEpJyxcbiAgLy8gVGhlIHNoYXJwIGN1cnZlIGlzIHVzZWQgYnkgb2JqZWN0cyB0aGF0IG1heSByZXR1cm4gdG8gdGhlIHNjcmVlbiBhdCBhbnkgdGltZS5cbiAgc2hhcnA6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjYsIDEpJ1xufTtcblxuLy8gRm9sbG93IGh0dHBzOi8vbTIubWF0ZXJpYWwuaW8vZ3VpZGVsaW5lcy9tb3Rpb24vZHVyYXRpb24tZWFzaW5nLmh0bWwjZHVyYXRpb24tZWFzaW5nLWNvbW1vbi1kdXJhdGlvbnNcbi8vIHRvIGxlYXJuIHdoZW4gdXNlIHdoYXQgdGltaW5nXG5leHBvcnQgY29uc3QgZHVyYXRpb24gPSB7XG4gIHNob3J0ZXN0OiAxNTAsXG4gIHNob3J0ZXI6IDIwMCxcbiAgc2hvcnQ6IDI1MCxcbiAgLy8gbW9zdCBiYXNpYyByZWNvbW1lbmRlZCB0aW1pbmdcbiAgc3RhbmRhcmQ6IDMwMCxcbiAgLy8gdGhpcyBpcyB0byBiZSB1c2VkIGluIGNvbXBsZXggYW5pbWF0aW9uc1xuICBjb21wbGV4OiAzNzUsXG4gIC8vIHJlY29tbWVuZGVkIHdoZW4gc29tZXRoaW5nIGlzIGVudGVyaW5nIHNjcmVlblxuICBlbnRlcmluZ1NjcmVlbjogMjI1LFxuICAvLyByZWNvbW1lbmRlZCB3aGVuIHNvbWV0aGluZyBpcyBsZWF2aW5nIHNjcmVlblxuICBsZWF2aW5nU2NyZWVuOiAxOTVcbn07XG5mdW5jdGlvbiBmb3JtYXRNcyhtaWxsaXNlY29uZHMpIHtcbiAgcmV0dXJuIGAke01hdGgucm91bmQobWlsbGlzZWNvbmRzKX1tc2A7XG59XG5mdW5jdGlvbiBnZXRBdXRvSGVpZ2h0RHVyYXRpb24oaGVpZ2h0KSB7XG4gIGlmICghaGVpZ2h0KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgY29uc3QgY29uc3RhbnQgPSBoZWlnaHQgLyAzNjtcblxuICAvLyBodHRwczovL3d3dy53b2xmcmFtYWxwaGEuY29tL2lucHV0Lz9pPSg0KyUyQisxNSsqKyh4KyUyRiszNispKyoqKzAuMjUrJTJCKyh4KyUyRiszNikrJTJGKzUpKyorMTBcbiAgcmV0dXJuIE1hdGgucm91bmQoKDQgKyAxNSAqIGNvbnN0YW50ICoqIDAuMjUgKyBjb25zdGFudCAvIDUpICogMTApO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlVHJhbnNpdGlvbnMoaW5wdXRUcmFuc2l0aW9ucykge1xuICBjb25zdCBtZXJnZWRFYXNpbmcgPSBfZXh0ZW5kcyh7fSwgZWFzaW5nLCBpbnB1dFRyYW5zaXRpb25zLmVhc2luZyk7XG4gIGNvbnN0IG1lcmdlZER1cmF0aW9uID0gX2V4dGVuZHMoe30sIGR1cmF0aW9uLCBpbnB1dFRyYW5zaXRpb25zLmR1cmF0aW9uKTtcbiAgY29uc3QgY3JlYXRlID0gKHByb3BzID0gWydhbGwnXSwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb25PcHRpb24gPSBtZXJnZWREdXJhdGlvbi5zdGFuZGFyZCxcbiAgICAgICAgZWFzaW5nOiBlYXNpbmdPcHRpb24gPSBtZXJnZWRFYXNpbmcuZWFzZUluT3V0LFxuICAgICAgICBkZWxheSA9IDBcbiAgICAgIH0gPSBvcHRpb25zLFxuICAgICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShvcHRpb25zLCBfZXhjbHVkZWQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zdCBpc1N0cmluZyA9IHZhbHVlID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG4gICAgICAvLyBJRTExIHN1cHBvcnQsIHJlcGxhY2Ugd2l0aCBOdW1iZXIuaXNOYU5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICAgIGNvbnN0IGlzTnVtYmVyID0gdmFsdWUgPT4gIWlzTmFOKHBhcnNlRmxvYXQodmFsdWUpKTtcbiAgICAgIGlmICghaXNTdHJpbmcocHJvcHMpICYmICFBcnJheS5pc0FycmF5KHByb3BzKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IEFyZ3VtZW50IFwicHJvcHNcIiBtdXN0IGJlIGEgc3RyaW5nIG9yIEFycmF5LicpO1xuICAgICAgfVxuICAgICAgaWYgKCFpc051bWJlcihkdXJhdGlvbk9wdGlvbikgJiYgIWlzU3RyaW5nKGR1cmF0aW9uT3B0aW9uKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IEFyZ3VtZW50IFwiZHVyYXRpb25cIiBtdXN0IGJlIGEgbnVtYmVyIG9yIGEgc3RyaW5nIGJ1dCBmb3VuZCAke2R1cmF0aW9uT3B0aW9ufS5gKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNTdHJpbmcoZWFzaW5nT3B0aW9uKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdNVUk6IEFyZ3VtZW50IFwiZWFzaW5nXCIgbXVzdCBiZSBhIHN0cmluZy4nKTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNOdW1iZXIoZGVsYXkpICYmICFpc1N0cmluZyhkZWxheSkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignTVVJOiBBcmd1bWVudCBcImRlbGF5XCIgbXVzdCBiZSBhIG51bWJlciBvciBhIHN0cmluZy4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogU2Vjb25nIGFyZ3VtZW50IG9mIHRyYW5zaXRpb24uY3JlYXRlIG11c3QgYmUgYW4gb2JqZWN0LicsIFwiQXJndW1lbnRzIHNob3VsZCBiZSBlaXRoZXIgYGNyZWF0ZSgncHJvcDEnLCBvcHRpb25zKWAgb3IgYGNyZWF0ZShbJ3Byb3AxJywgJ3Byb3AyJ10sIG9wdGlvbnMpYFwiXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgICBpZiAoT2JqZWN0LmtleXMob3RoZXIpLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBNVUk6IFVucmVjb2duaXplZCBhcmd1bWVudChzKSBbJHtPYmplY3Qua2V5cyhvdGhlcikuam9pbignLCcpfV0uYCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAoQXJyYXkuaXNBcnJheShwcm9wcykgPyBwcm9wcyA6IFtwcm9wc10pLm1hcChhbmltYXRlZFByb3AgPT4gYCR7YW5pbWF0ZWRQcm9wfSAke3R5cGVvZiBkdXJhdGlvbk9wdGlvbiA9PT0gJ3N0cmluZycgPyBkdXJhdGlvbk9wdGlvbiA6IGZvcm1hdE1zKGR1cmF0aW9uT3B0aW9uKX0gJHtlYXNpbmdPcHRpb259ICR7dHlwZW9mIGRlbGF5ID09PSAnc3RyaW5nJyA/IGRlbGF5IDogZm9ybWF0TXMoZGVsYXkpfWApLmpvaW4oJywnKTtcbiAgfTtcbiAgcmV0dXJuIF9leHRlbmRzKHtcbiAgICBnZXRBdXRvSGVpZ2h0RHVyYXRpb24sXG4gICAgY3JlYXRlXG4gIH0sIGlucHV0VHJhbnNpdGlvbnMsIHtcbiAgICBlYXNpbmc6IG1lcmdlZEVhc2luZyxcbiAgICBkdXJhdGlvbjogbWVyZ2VkRHVyYXRpb25cbiAgfSk7XG59IiwiLy8gV2UgbmVlZCB0byBjZW50cmFsaXplIHRoZSB6SW5kZXggZGVmaW5pdGlvbnMgYXMgdGhleSB3b3JrXG4vLyBsaWtlIGdsb2JhbCB2YWx1ZXMgaW4gdGhlIGJyb3dzZXIuXG5jb25zdCB6SW5kZXggPSB7XG4gIG1vYmlsZVN0ZXBwZXI6IDEwMDAsXG4gIGZhYjogMTA1MCxcbiAgc3BlZWREaWFsOiAxMDUwLFxuICBhcHBCYXI6IDExMDAsXG4gIGRyYXdlcjogMTIwMCxcbiAgbW9kYWw6IDEzMDAsXG4gIHNuYWNrYmFyOiAxNDAwLFxuICB0b29sdGlwOiAxNTAwXG59O1xuZXhwb3J0IGRlZmF1bHQgekluZGV4OyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgeyBmb3JtYXRNdWlFcnJvck1lc3NhZ2UgYXMgX2Zvcm1hdE11aUVycm9yTWVzc2FnZSB9IGZyb20gXCJAbXVpL3V0aWxzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJicmVha3BvaW50c1wiLCBcIm1peGluc1wiLCBcInNwYWNpbmdcIiwgXCJwYWxldHRlXCIsIFwidHJhbnNpdGlvbnNcIiwgXCJ0eXBvZ3JhcGh5XCIsIFwic2hhcGVcIl07XG5pbXBvcnQgeyBkZWVwbWVyZ2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIGFzIHN5c3RlbUNyZWF0ZVRoZW1lLCB1bnN0YWJsZV9kZWZhdWx0U3hDb25maWcgYXMgZGVmYXVsdFN4Q29uZmlnLCB1bnN0YWJsZV9zdHlsZUZ1bmN0aW9uU3ggYXMgc3R5bGVGdW5jdGlvblN4IH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmltcG9ydCBjcmVhdGVNaXhpbnMgZnJvbSAnLi9jcmVhdGVNaXhpbnMnO1xuaW1wb3J0IGNyZWF0ZVBhbGV0dGUgZnJvbSAnLi9jcmVhdGVQYWxldHRlJztcbmltcG9ydCBjcmVhdGVUeXBvZ3JhcGh5IGZyb20gJy4vY3JlYXRlVHlwb2dyYXBoeSc7XG5pbXBvcnQgc2hhZG93cyBmcm9tICcuL3NoYWRvd3MnO1xuaW1wb3J0IGNyZWF0ZVRyYW5zaXRpb25zIGZyb20gJy4vY3JlYXRlVHJhbnNpdGlvbnMnO1xuaW1wb3J0IHpJbmRleCBmcm9tICcuL3pJbmRleCc7XG5mdW5jdGlvbiBjcmVhdGVUaGVtZShvcHRpb25zID0ge30sIC4uLmFyZ3MpIHtcbiAgY29uc3Qge1xuICAgICAgbWl4aW5zOiBtaXhpbnNJbnB1dCA9IHt9LFxuICAgICAgcGFsZXR0ZTogcGFsZXR0ZUlucHV0ID0ge30sXG4gICAgICB0cmFuc2l0aW9uczogdHJhbnNpdGlvbnNJbnB1dCA9IHt9LFxuICAgICAgdHlwb2dyYXBoeTogdHlwb2dyYXBoeUlucHV0ID0ge31cbiAgICB9ID0gb3B0aW9ucyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKG9wdGlvbnMsIF9leGNsdWRlZCk7XG4gIGlmIChvcHRpb25zLnZhcnMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gYE1VSTogXFxgdmFyc1xcYCBpcyBhIHByaXZhdGUgZmllbGQgdXNlZCBmb3IgQ1NTIHZhcmlhYmxlcyBzdXBwb3J0LlxuUGxlYXNlIHVzZSBhbm90aGVyIG5hbWUuYCA6IF9mb3JtYXRNdWlFcnJvck1lc3NhZ2UoMTgpKTtcbiAgfVxuICBjb25zdCBwYWxldHRlID0gY3JlYXRlUGFsZXR0ZShwYWxldHRlSW5wdXQpO1xuICBjb25zdCBzeXN0ZW1UaGVtZSA9IHN5c3RlbUNyZWF0ZVRoZW1lKG9wdGlvbnMpO1xuICBsZXQgbXVpVGhlbWUgPSBkZWVwbWVyZ2Uoc3lzdGVtVGhlbWUsIHtcbiAgICBtaXhpbnM6IGNyZWF0ZU1peGlucyhzeXN0ZW1UaGVtZS5icmVha3BvaW50cywgbWl4aW5zSW5wdXQpLFxuICAgIHBhbGV0dGUsXG4gICAgLy8gRG9uJ3QgdXNlIFsuLi5zaGFkb3dzXSB1bnRpbCB5b3UndmUgdmVyaWZpZWQgaXRzIHRyYW5zcGlsZWQgY29kZSBpcyBub3QgaW52b2tpbmcgdGhlIGl0ZXJhdG9yIHByb3RvY29sLlxuICAgIHNoYWRvd3M6IHNoYWRvd3Muc2xpY2UoKSxcbiAgICB0eXBvZ3JhcGh5OiBjcmVhdGVUeXBvZ3JhcGh5KHBhbGV0dGUsIHR5cG9ncmFwaHlJbnB1dCksXG4gICAgdHJhbnNpdGlvbnM6IGNyZWF0ZVRyYW5zaXRpb25zKHRyYW5zaXRpb25zSW5wdXQpLFxuICAgIHpJbmRleDogX2V4dGVuZHMoe30sIHpJbmRleClcbiAgfSk7XG4gIG11aVRoZW1lID0gZGVlcG1lcmdlKG11aVRoZW1lLCBvdGhlcik7XG4gIG11aVRoZW1lID0gYXJncy5yZWR1Y2UoKGFjYywgYXJndW1lbnQpID0+IGRlZXBtZXJnZShhY2MsIGFyZ3VtZW50KSwgbXVpVGhlbWUpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRPRE8gdjY6IFJlZmFjdG9yIHRvIHVzZSBnbG9iYWxTdGF0ZUNsYXNzZXNNYXBwaW5nIGZyb20gQG11aS91dGlscyBvbmNlIGByZWFkT25seWAgc3RhdGUgY2xhc3MgaXMgdXNlZCBpbiBSYXRpbmcgY29tcG9uZW50LlxuICAgIGNvbnN0IHN0YXRlQ2xhc3NlcyA9IFsnYWN0aXZlJywgJ2NoZWNrZWQnLCAnY29tcGxldGVkJywgJ2Rpc2FibGVkJywgJ2Vycm9yJywgJ2V4cGFuZGVkJywgJ2ZvY3VzZWQnLCAnZm9jdXNWaXNpYmxlJywgJ3JlcXVpcmVkJywgJ3NlbGVjdGVkJ107XG4gICAgY29uc3QgdHJhdmVyc2UgPSAobm9kZSwgY29tcG9uZW50KSA9PiB7XG4gICAgICBsZXQga2V5O1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluLCBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgZm9yIChrZXkgaW4gbm9kZSkge1xuICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGVba2V5XTtcbiAgICAgICAgaWYgKHN0YXRlQ2xhc3Nlcy5pbmRleE9mKGtleSkgIT09IC0xICYmIE9iamVjdC5rZXlzKGNoaWxkKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlQ2xhc3MgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnJywga2V5KTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoW2BNVUk6IFRoZSBcXGAke2NvbXBvbmVudH1cXGAgY29tcG9uZW50IGluY3JlYXNlcyBgICsgYHRoZSBDU1Mgc3BlY2lmaWNpdHkgb2YgdGhlIFxcYCR7a2V5fVxcYCBpbnRlcm5hbCBzdGF0ZS5gLCAnWW91IGNhbiBub3Qgb3ZlcnJpZGUgaXQgbGlrZSB0aGlzOiAnLCBKU09OLnN0cmluZ2lmeShub2RlLCBudWxsLCAyKSwgJycsIGBJbnN0ZWFkLCB5b3UgbmVlZCB0byB1c2UgdGhlICcmLiR7c3RhdGVDbGFzc30nIHN5bnRheDpgLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICAgICAgICBbYCYuJHtzdGF0ZUNsYXNzfWBdOiBjaGlsZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBudWxsLCAyKSwgJycsICdodHRwczovL211aS5jb20vci9zdGF0ZS1jbGFzc2VzLWd1aWRlJ10uam9pbignXFxuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBSZW1vdmUgdGhlIHN0eWxlIHRvIHByZXZlbnQgZ2xvYmFsIGNvbmZsaWN0cy5cbiAgICAgICAgICBub2RlW2tleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgT2JqZWN0LmtleXMobXVpVGhlbWUuY29tcG9uZW50cykuZm9yRWFjaChjb21wb25lbnQgPT4ge1xuICAgICAgY29uc3Qgc3R5bGVPdmVycmlkZXMgPSBtdWlUaGVtZS5jb21wb25lbnRzW2NvbXBvbmVudF0uc3R5bGVPdmVycmlkZXM7XG4gICAgICBpZiAoc3R5bGVPdmVycmlkZXMgJiYgY29tcG9uZW50LmluZGV4T2YoJ011aScpID09PSAwKSB7XG4gICAgICAgIHRyYXZlcnNlKHN0eWxlT3ZlcnJpZGVzLCBjb21wb25lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIG11aVRoZW1lLnVuc3RhYmxlX3N4Q29uZmlnID0gX2V4dGVuZHMoe30sIGRlZmF1bHRTeENvbmZpZywgb3RoZXIgPT0gbnVsbCA/IHZvaWQgMCA6IG90aGVyLnVuc3RhYmxlX3N4Q29uZmlnKTtcbiAgbXVpVGhlbWUudW5zdGFibGVfc3ggPSBmdW5jdGlvbiBzeChwcm9wcykge1xuICAgIHJldHVybiBzdHlsZUZ1bmN0aW9uU3goe1xuICAgICAgc3g6IHByb3BzLFxuICAgICAgdGhlbWU6IHRoaXNcbiAgICB9KTtcbiAgfTtcbiAgcmV0dXJuIG11aVRoZW1lO1xufVxubGV0IHdhcm5lZE9uY2UgPSBmYWxzZTtcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNdWlUaGVtZSguLi5hcmdzKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKCF3YXJuZWRPbmNlKSB7XG4gICAgICB3YXJuZWRPbmNlID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydNVUk6IHRoZSBjcmVhdGVNdWlUaGVtZSBmdW5jdGlvbiB3YXMgcmVuYW1lZCB0byBjcmVhdGVUaGVtZS4nLCAnJywgXCJZb3Ugc2hvdWxkIHVzZSBgaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tICdAbXVpL21hdGVyaWFsL3N0eWxlcydgXCJdLmpvaW4oJ1xcbicpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNyZWF0ZVRoZW1lKC4uLmFyZ3MpO1xufVxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlVGhlbWU7IiwiaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVNaXhpbnMoYnJlYWtwb2ludHMsIG1peGlucykge1xuICByZXR1cm4gX2V4dGVuZHMoe1xuICAgIHRvb2xiYXI6IHtcbiAgICAgIG1pbkhlaWdodDogNTYsXG4gICAgICBbYnJlYWtwb2ludHMudXAoJ3hzJyldOiB7XG4gICAgICAgICdAbWVkaWEgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJzoge1xuICAgICAgICAgIG1pbkhlaWdodDogNDhcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFticmVha3BvaW50cy51cCgnc20nKV06IHtcbiAgICAgICAgbWluSGVpZ2h0OiA2NFxuICAgICAgfVxuICAgIH1cbiAgfSwgbWl4aW5zKTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBjcmVhdGVUaGVtZSBmcm9tICcuL2NyZWF0ZVRoZW1lJztcbmNvbnN0IGRlZmF1bHRUaGVtZSA9IGNyZWF0ZVRoZW1lKCk7XG5leHBvcnQgZGVmYXVsdCBkZWZhdWx0VGhlbWU7IiwiZXhwb3J0IGRlZmF1bHQgJyQkbWF0ZXJpYWwnOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgY3JlYXRlU3R5bGVkLCBzaG91bGRGb3J3YXJkUHJvcCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBkZWZhdWx0VGhlbWUgZnJvbSAnLi9kZWZhdWx0VGhlbWUnO1xuaW1wb3J0IFRIRU1FX0lEIGZyb20gJy4vaWRlbnRpZmllcic7XG5leHBvcnQgY29uc3Qgcm9vdFNob3VsZEZvcndhcmRQcm9wID0gcHJvcCA9PiBzaG91bGRGb3J3YXJkUHJvcChwcm9wKSAmJiBwcm9wICE9PSAnY2xhc3Nlcyc7XG5leHBvcnQgY29uc3Qgc2xvdFNob3VsZEZvcndhcmRQcm9wID0gc2hvdWxkRm9yd2FyZFByb3A7XG5jb25zdCBzdHlsZWQgPSBjcmVhdGVTdHlsZWQoe1xuICB0aGVtZUlkOiBUSEVNRV9JRCxcbiAgZGVmYXVsdFRoZW1lLFxuICByb290U2hvdWxkRm9yd2FyZFByb3Bcbn0pO1xuZXhwb3J0IGRlZmF1bHQgc3R5bGVkOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuLyoqXG4gKiBBZGQga2V5cywgdmFsdWVzIG9mIGBkZWZhdWx0UHJvcHNgIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gYHByb3BzYFxuICogQHBhcmFtIHtvYmplY3R9IGRlZmF1bHRQcm9wc1xuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcmV0dXJucyB7b2JqZWN0fSByZXNvbHZlZCBwcm9wc1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXNvbHZlUHJvcHMoZGVmYXVsdFByb3BzLCBwcm9wcykge1xuICBjb25zdCBvdXRwdXQgPSBfZXh0ZW5kcyh7fSwgcHJvcHMpO1xuICBPYmplY3Qua2V5cyhkZWZhdWx0UHJvcHMpLmZvckVhY2gocHJvcE5hbWUgPT4ge1xuICAgIGlmIChwcm9wTmFtZS50b1N0cmluZygpLm1hdGNoKC9eKGNvbXBvbmVudHN8c2xvdHMpJC8pKSB7XG4gICAgICBvdXRwdXRbcHJvcE5hbWVdID0gX2V4dGVuZHMoe30sIGRlZmF1bHRQcm9wc1twcm9wTmFtZV0sIG91dHB1dFtwcm9wTmFtZV0pO1xuICAgIH0gZWxzZSBpZiAocHJvcE5hbWUudG9TdHJpbmcoKS5tYXRjaCgvXihjb21wb25lbnRzUHJvcHN8c2xvdFByb3BzKSQvKSkge1xuICAgICAgY29uc3QgZGVmYXVsdFNsb3RQcm9wcyA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV0gfHwge307XG4gICAgICBjb25zdCBzbG90UHJvcHMgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBvdXRwdXRbcHJvcE5hbWVdID0ge307XG4gICAgICBpZiAoIXNsb3RQcm9wcyB8fCAhT2JqZWN0LmtleXMoc2xvdFByb3BzKSkge1xuICAgICAgICAvLyBSZWR1Y2UgdGhlIGl0ZXJhdGlvbiBpZiB0aGUgc2xvdCBwcm9wcyBpcyBlbXB0eVxuICAgICAgICBvdXRwdXRbcHJvcE5hbWVdID0gZGVmYXVsdFNsb3RQcm9wcztcbiAgICAgIH0gZWxzZSBpZiAoIWRlZmF1bHRTbG90UHJvcHMgfHwgIU9iamVjdC5rZXlzKGRlZmF1bHRTbG90UHJvcHMpKSB7XG4gICAgICAgIC8vIFJlZHVjZSB0aGUgaXRlcmF0aW9uIGlmIHRoZSBkZWZhdWx0IHNsb3QgcHJvcHMgaXMgZW1wdHlcbiAgICAgICAgb3V0cHV0W3Byb3BOYW1lXSA9IHNsb3RQcm9wcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG91dHB1dFtwcm9wTmFtZV0gPSBfZXh0ZW5kcyh7fSwgc2xvdFByb3BzKTtcbiAgICAgICAgT2JqZWN0LmtleXMoZGVmYXVsdFNsb3RQcm9wcykuZm9yRWFjaChzbG90UHJvcE5hbWUgPT4ge1xuICAgICAgICAgIG91dHB1dFtwcm9wTmFtZV1bc2xvdFByb3BOYW1lXSA9IHJlc29sdmVQcm9wcyhkZWZhdWx0U2xvdFByb3BzW3Nsb3RQcm9wTmFtZV0sIHNsb3RQcm9wc1tzbG90UHJvcE5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChvdXRwdXRbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG91dHB1dFtwcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59IiwiaW1wb3J0IHsgaW50ZXJuYWxfcmVzb2x2ZVByb3BzIGFzIHJlc29sdmVQcm9wcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VGhlbWVQcm9wcyhwYXJhbXMpIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lLFxuICAgIG5hbWUsXG4gICAgcHJvcHNcbiAgfSA9IHBhcmFtcztcbiAgaWYgKCF0aGVtZSB8fCAhdGhlbWUuY29tcG9uZW50cyB8fCAhdGhlbWUuY29tcG9uZW50c1tuYW1lXSB8fCAhdGhlbWUuY29tcG9uZW50c1tuYW1lXS5kZWZhdWx0UHJvcHMpIHtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cbiAgcmV0dXJuIHJlc29sdmVQcm9wcyh0aGVtZS5jb21wb25lbnRzW25hbWVdLmRlZmF1bHRQcm9wcywgcHJvcHMpO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVGhlbWVDb250ZXh0IH0gZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmZ1bmN0aW9uIGlzT2JqZWN0RW1wdHkob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMDtcbn1cbmZ1bmN0aW9uIHVzZVRoZW1lKGRlZmF1bHRUaGVtZSA9IG51bGwpIHtcbiAgY29uc3QgY29udGV4dFRoZW1lID0gUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpO1xuICByZXR1cm4gIWNvbnRleHRUaGVtZSB8fCBpc09iamVjdEVtcHR5KGNvbnRleHRUaGVtZSkgPyBkZWZhdWx0VGhlbWUgOiBjb250ZXh0VGhlbWU7XG59XG5leHBvcnQgZGVmYXVsdCB1c2VUaGVtZTsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBjcmVhdGVUaGVtZSBmcm9tICcuL2NyZWF0ZVRoZW1lJztcbmltcG9ydCB1c2VUaGVtZVdpdGhvdXREZWZhdWx0IGZyb20gJy4vdXNlVGhlbWVXaXRob3V0RGVmYXVsdCc7XG5leHBvcnQgY29uc3Qgc3lzdGVtRGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmZ1bmN0aW9uIHVzZVRoZW1lKGRlZmF1bHRUaGVtZSA9IHN5c3RlbURlZmF1bHRUaGVtZSkge1xuICByZXR1cm4gdXNlVGhlbWVXaXRob3V0RGVmYXVsdChkZWZhdWx0VGhlbWUpO1xufVxuZXhwb3J0IGRlZmF1bHQgdXNlVGhlbWU7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1c2VUaGVtZVByb3BzIGFzIHN5c3RlbVVzZVRoZW1lUHJvcHMgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgZGVmYXVsdFRoZW1lIGZyb20gJy4vZGVmYXVsdFRoZW1lJztcbmltcG9ydCBUSEVNRV9JRCBmcm9tICcuL2lkZW50aWZpZXInO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVGhlbWVQcm9wcyh7XG4gIHByb3BzLFxuICBuYW1lXG59KSB7XG4gIHJldHVybiBzeXN0ZW1Vc2VUaGVtZVByb3BzKHtcbiAgICBwcm9wcyxcbiAgICBuYW1lLFxuICAgIGRlZmF1bHRUaGVtZSxcbiAgICB0aGVtZUlkOiBUSEVNRV9JRFxuICB9KTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBnZXRUaGVtZVByb3BzIGZyb20gJy4vZ2V0VGhlbWVQcm9wcyc7XG5pbXBvcnQgdXNlVGhlbWUgZnJvbSAnLi4vdXNlVGhlbWUnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlVGhlbWVQcm9wcyh7XG4gIHByb3BzLFxuICBuYW1lLFxuICBkZWZhdWx0VGhlbWUsXG4gIHRoZW1lSWRcbn0pIHtcbiAgbGV0IHRoZW1lID0gdXNlVGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgaWYgKHRoZW1lSWQpIHtcbiAgICB0aGVtZSA9IHRoZW1lW3RoZW1lSWRdIHx8IHRoZW1lO1xuICB9XG4gIGNvbnN0IG1lcmdlZFByb3BzID0gZ2V0VGhlbWVQcm9wcyh7XG4gICAgdGhlbWUsXG4gICAgbmFtZSxcbiAgICBwcm9wc1xuICB9KTtcbiAgcmV0dXJuIG1lcmdlZFByb3BzO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHNldFJlZiBmcm9tICcuLi9zZXRSZWYnO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlRm9ya1JlZiguLi5yZWZzKSB7XG4gIC8qKlxuICAgKiBUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIGlmIHRoZSByZWZzIHBhc3NlZCB0byB0aGlzIGhvb2sgY2hhbmdlIGFuZCBhcmUgYWxsIGRlZmluZWQuXG4gICAqIFRoaXMgbWVhbnMgcmVhY3Qgd2lsbCBjYWxsIHRoZSBvbGQgZm9ya1JlZiB3aXRoIGBudWxsYCBhbmQgdGhlIG5ldyBmb3JrUmVmXG4gICAqIHdpdGggdGhlIHJlZi4gQ2xlYW51cCBuYXR1cmFsbHkgZW1lcmdlcyBmcm9tIHRoaXMgYmVoYXZpb3IuXG4gICAqL1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHJlZnMuZXZlcnkocmVmID0+IHJlZiA9PSBudWxsKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZSA9PiB7XG4gICAgICByZWZzLmZvckVhY2gocmVmID0+IHtcbiAgICAgICAgc2V0UmVmKHJlZiwgaW5zdGFuY2UpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIHJlZnMpO1xufSIsIi8qKlxuICogVE9ETyB2NTogY29uc2lkZXIgbWFraW5nIGl0IHByaXZhdGVcbiAqXG4gKiBwYXNzZXMge3ZhbHVlfSB0byB7cmVmfVxuICpcbiAqIFdBUk5JTkc6IEJlIHN1cmUgdG8gb25seSBjYWxsIHRoaXMgaW5zaWRlIGEgY2FsbGJhY2sgdGhhdCBpcyBwYXNzZWQgYXMgYSByZWYuXG4gKiBPdGhlcndpc2UsIG1ha2Ugc3VyZSB0byBjbGVhbnVwIHRoZSBwcmV2aW91cyB7cmVmfSBpZiBpdCBjaGFuZ2VzLiBTZWVcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzEzNTM5XG4gKlxuICogVXNlZnVsIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgcmVmIG9mIGFuIGlubmVyIGNvbXBvbmVudCB0byB0aGUgcHVibGljIEFQSVxuICogd2hpbGUgc3RpbGwgdXNpbmcgaXQgaW5zaWRlIHRoZSBjb21wb25lbnQuXG4gKiBAcGFyYW0gcmVmIEEgcmVmIGNhbGxiYWNrIG9yIHJlZiBvYmplY3QuIElmIGFueXRoaW5nIGZhbHN5LCB0aGlzIGlzIGEgbm8tb3AuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHNldFJlZihyZWYsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmVmKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChyZWYpIHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VGb3JrUmVmIGFzIHVzZUZvcmtSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcmtSZWY7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5jb25zdCB1c2VFbmhhbmNlZEVmZmVjdCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gUmVhY3QudXNlTGF5b3V0RWZmZWN0IDogUmVhY3QudXNlRWZmZWN0O1xuZXhwb3J0IGRlZmF1bHQgdXNlRW5oYW5jZWRFZmZlY3Q7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VFdmVudENhbGxiYWNrIGFzIHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IHVzZUV2ZW50Q2FsbGJhY2s7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlRW5oYW5jZWRFZmZlY3QgZnJvbSAnLi4vdXNlRW5oYW5jZWRFZmZlY3QnO1xuXG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTQwOTkjaXNzdWVjb21tZW50LTQ0MDAxMzg5MlxuICovXG5cbmZ1bmN0aW9uIHVzZUV2ZW50Q2FsbGJhY2soZm4pIHtcbiAgY29uc3QgcmVmID0gUmVhY3QudXNlUmVmKGZuKTtcbiAgdXNlRW5oYW5jZWRFZmZlY3QoKCkgPT4ge1xuICAgIHJlZi5jdXJyZW50ID0gZm47XG4gIH0pO1xuICByZXR1cm4gUmVhY3QudXNlQ2FsbGJhY2soKC4uLmFyZ3MpID0+XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgaGlkZSBgdGhpc2BcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmJhbi1jb21tYS1vcGVyYXRvclxuICAoMCwgcmVmLmN1cnJlbnQpKC4uLmFyZ3MpLCBbXSk7XG59XG5leHBvcnQgZGVmYXVsdCB1c2VFdmVudENhbGxiYWNrOyIsIid1c2UgY2xpZW50JztcblxuLy8gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZS9ibG9iL3Y0LjEuNS9zcmMvZm9jdXMtdmlzaWJsZS5qc1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xubGV0IGhhZEtleWJvYXJkRXZlbnQgPSB0cnVlO1xubGV0IGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gZmFsc2U7XG5sZXQgaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0O1xuY29uc3QgaW5wdXRUeXBlc1doaXRlbGlzdCA9IHtcbiAgdGV4dDogdHJ1ZSxcbiAgc2VhcmNoOiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHRlbDogdHJ1ZSxcbiAgZW1haWw6IHRydWUsXG4gIHBhc3N3b3JkOiB0cnVlLFxuICBudW1iZXI6IHRydWUsXG4gIGRhdGU6IHRydWUsXG4gIG1vbnRoOiB0cnVlLFxuICB3ZWVrOiB0cnVlLFxuICB0aW1lOiB0cnVlLFxuICBkYXRldGltZTogdHJ1ZSxcbiAgJ2RhdGV0aW1lLWxvY2FsJzogdHJ1ZVxufTtcblxuLyoqXG4gKiBDb21wdXRlcyB3aGV0aGVyIHRoZSBnaXZlbiBlbGVtZW50IHNob3VsZCBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgdGhlXG4gKiBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgYmVpbmcgYWRkZWQsIGkuZS4gd2hldGhlciBpdCBzaG91bGQgYWx3YXlzIG1hdGNoXG4gKiBgOmZvY3VzLXZpc2libGVgIHdoZW4gZm9jdXNlZC5cbiAqIEBwYXJhbSB7RWxlbWVudH0gbm9kZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGZvY3VzVHJpZ2dlcnNLZXlib2FyZE1vZGFsaXR5KG5vZGUpIHtcbiAgY29uc3Qge1xuICAgIHR5cGUsXG4gICAgdGFnTmFtZVxuICB9ID0gbm9kZTtcbiAgaWYgKHRhZ05hbWUgPT09ICdJTlBVVCcgJiYgaW5wdXRUeXBlc1doaXRlbGlzdFt0eXBlXSAmJiAhbm9kZS5yZWFkT25seSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0YWdOYW1lID09PSAnVEVYVEFSRUEnICYmICFub2RlLnJlYWRPbmx5KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKG5vZGUuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogS2VlcCB0cmFjayBvZiBvdXIga2V5Ym9hcmQgbW9kYWxpdHkgc3RhdGUgd2l0aCBgaGFkS2V5Ym9hcmRFdmVudGAuXG4gKiBJZiB0aGUgbW9zdCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiB3YXMgdmlhIHRoZSBrZXlib2FyZDtcbiAqIGFuZCB0aGUga2V5IHByZXNzIGRpZCBub3QgaW5jbHVkZSBhIG1ldGEsIGFsdC9vcHRpb24sIG9yIGNvbnRyb2wga2V5O1xuICogdGhlbiB0aGUgbW9kYWxpdHkgaXMga2V5Ym9hcmQuIE90aGVyd2lzZSwgdGhlIG1vZGFsaXR5IGlzIG5vdCBrZXlib2FyZC5cbiAqIEBwYXJhbSB7S2V5Ym9hcmRFdmVudH0gZXZlbnRcbiAqL1xuZnVuY3Rpb24gaGFuZGxlS2V5RG93bihldmVudCkge1xuICBpZiAoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSkge1xuICAgIHJldHVybjtcbiAgfVxuICBoYWRLZXlib2FyZEV2ZW50ID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBJZiBhdCBhbnkgcG9pbnQgYSB1c2VyIGNsaWNrcyB3aXRoIGEgcG9pbnRpbmcgZGV2aWNlLCBlbnN1cmUgdGhhdCB3ZSBjaGFuZ2VcbiAqIHRoZSBtb2RhbGl0eSBhd2F5IGZyb20ga2V5Ym9hcmQuXG4gKiBUaGlzIGF2b2lkcyB0aGUgc2l0dWF0aW9uIHdoZXJlIGEgdXNlciBwcmVzc2VzIGEga2V5IG9uIGFuIGFscmVhZHkgZm9jdXNlZFxuICogZWxlbWVudCwgYW5kIHRoZW4gY2xpY2tzIG9uIGEgZGlmZmVyZW50IGVsZW1lbnQsIGZvY3VzaW5nIGl0IHdpdGggYVxuICogcG9pbnRpbmcgZGV2aWNlLCB3aGlsZSB3ZSBzdGlsbCB0aGluayB3ZSdyZSBpbiBrZXlib2FyZCBtb2RhbGl0eS5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUG9pbnRlckRvd24oKSB7XG4gIGhhZEtleWJvYXJkRXZlbnQgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UoKSB7XG4gIGlmICh0aGlzLnZpc2liaWxpdHlTdGF0ZSA9PT0gJ2hpZGRlbicpIHtcbiAgICAvLyBJZiB0aGUgdGFiIGJlY29tZXMgYWN0aXZlIGFnYWluLCB0aGUgYnJvd3NlciB3aWxsIGhhbmRsZSBjYWxsaW5nIGZvY3VzXG4gICAgLy8gb24gdGhlIGVsZW1lbnQgKFNhZmFyaSBhY3R1YWxseSBjYWxscyBpdCB0d2ljZSkuXG4gICAgLy8gSWYgdGhpcyB0YWIgY2hhbmdlIGNhdXNlZCBhIGJsdXIgb24gYW4gZWxlbWVudCB3aXRoIGZvY3VzLXZpc2libGUsXG4gICAgLy8gcmUtYXBwbHkgdGhlIGNsYXNzIHdoZW4gdGhlIHVzZXIgc3dpdGNoZXMgYmFjayB0byB0aGUgdGFiLlxuICAgIGlmIChoYWRGb2N1c1Zpc2libGVSZWNlbnRseSkge1xuICAgICAgaGFkS2V5Ym9hcmRFdmVudCA9IHRydWU7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBwcmVwYXJlKGRvYykge1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG4gIGRvYy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHRydWUpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRlYXJkb3duKGRvYykge1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93biwgdHJ1ZSk7XG4gIGRvYy5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgaGFuZGxlUG9pbnRlckRvd24sIHRydWUpO1xuICBkb2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHRydWUpO1xufVxuZnVuY3Rpb24gaXNGb2N1c1Zpc2libGUoZXZlbnQpIHtcbiAgY29uc3Qge1xuICAgIHRhcmdldFxuICB9ID0gZXZlbnQ7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRhcmdldC5tYXRjaGVzKCc6Zm9jdXMtdmlzaWJsZScpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vIEJyb3dzZXJzIG5vdCBpbXBsZW1lbnRpbmcgOmZvY3VzLXZpc2libGUgd2lsbCB0aHJvdyBhIFN5bnRheEVycm9yLlxuICAgIC8vIFdlIHVzZSBvdXIgb3duIGhldXJpc3RpYyBmb3IgdGhvc2UgYnJvd3NlcnMuXG4gICAgLy8gUmV0aHJvdyBtaWdodCBiZSBiZXR0ZXIgaWYgaXQncyBub3QgdGhlIGV4cGVjdGVkIGVycm9yIGJ1dCBkbyB3ZSByZWFsbHlcbiAgICAvLyB3YW50IHRvIGNyYXNoIGlmIGZvY3VzLXZpc2libGUgbWFsZnVuY3Rpb25lZD9cbiAgfVxuXG4gIC8vIE5vIG5lZWQgZm9yIHZhbGlkRm9jdXNUYXJnZXQgY2hlY2suIFRoZSB1c2VyIGRvZXMgdGhhdCBieSBhdHRhY2hpbmcgaXQgdG9cbiAgLy8gZm9jdXNhYmxlIGV2ZW50cyBvbmx5LlxuICByZXR1cm4gaGFkS2V5Ym9hcmRFdmVudCB8fCBmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eSh0YXJnZXQpO1xufVxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlSXNGb2N1c1Zpc2libGUoKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmUobm9kZS5vd25lckRvY3VtZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgY29uc3QgaXNGb2N1c1Zpc2libGVSZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgYmUgY2FsbGVkIGlmIGEgYmx1ciBldmVudCBpcyBmaXJlZFxuICAgKi9cbiAgZnVuY3Rpb24gaGFuZGxlQmx1clZpc2libGUoKSB7XG4gICAgLy8gY2hlY2tpbmcgYWdhaW5zdCBwb3RlbnRpYWwgc3RhdGUgdmFyaWFibGUgZG9lcyBub3Qgc3VmZmljZSBpZiB3ZSBmb2N1cyBhbmQgYmx1ciBzeW5jaHJvbm91c2x5LlxuICAgIC8vIFJlYWN0IHdvdWxkbid0IGhhdmUgdGltZSB0byB0cmlnZ2VyIGEgcmUtcmVuZGVyIHNvIGBmb2N1c1Zpc2libGVgIHdvdWxkIGJlIHN0YWxlLlxuICAgIC8vIElkZWFsbHkgd2Ugd291bGQgYWRqdXN0IGBpc0ZvY3VzVmlzaWJsZShldmVudClgIHRvIGxvb2sgYXQgYHJlbGF0ZWRUYXJnZXRgIGZvciBibHVyIGV2ZW50cy5cbiAgICAvLyBUaGlzIGRvZXNuJ3Qgd29yayBpbiBJRTExIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzM3NTFcbiAgICAvLyBUT0RPOiBjaGVjayBhZ2FpbiBpZiBSZWFjdCByZWxlYXNlcyB0aGVpciBpbnRlcm5hbCBjaGFuZ2VzIHRvIGZvY3VzIGV2ZW50IGhhbmRsaW5nIChodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC8xOTE4NikuXG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQpIHtcbiAgICAgIC8vIFRvIGRldGVjdCBhIHRhYi93aW5kb3cgc3dpdGNoLCB3ZSBsb29rIGZvciBhIGJsdXIgZXZlbnQgZm9sbG93ZWRcbiAgICAgIC8vIHJhcGlkbHkgYnkgYSB2aXNpYmlsaXR5IGNoYW5nZS5cbiAgICAgIC8vIElmIHdlIGRvbid0IHNlZSBhIHZpc2liaWxpdHkgY2hhbmdlIHdpdGhpbiAxMDBtcywgaXQncyBwcm9iYWJseSBhXG4gICAgICAvLyByZWd1bGFyIGZvY3VzIGNoYW5nZS5cbiAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5ID0gdHJ1ZTtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0KTtcbiAgICAgIGhhZEZvY3VzVmlzaWJsZVJlY2VudGx5VGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaGFkRm9jdXNWaXNpYmxlUmVjZW50bHkgPSBmYWxzZTtcbiAgICAgIH0sIDEwMCk7XG4gICAgICBpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3VsZCBiZSBjYWxsZWQgaWYgYSBibHVyIGV2ZW50IGlzIGZpcmVkXG4gICAqL1xuICBmdW5jdGlvbiBoYW5kbGVGb2N1c1Zpc2libGUoZXZlbnQpIHtcbiAgICBpZiAoaXNGb2N1c1Zpc2libGUoZXZlbnQpKSB7XG4gICAgICBpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpc0ZvY3VzVmlzaWJsZVJlZixcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1Zpc2libGUsXG4gICAgb25CbHVyOiBoYW5kbGVCbHVyVmlzaWJsZSxcbiAgICByZWZcbiAgfTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVuc3RhYmxlX3VzZUlzRm9jdXNWaXNpYmxlIGFzIHVzZUlzRm9jdXNWaXNpYmxlIH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCB1c2VJc0ZvY3VzVmlzaWJsZTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuZXhwb3J0IGRlZmF1bHQgUmVhY3QuY3JlYXRlQ29udGV4dChudWxsKTsiLCJpbXBvcnQgeyBDaGlsZHJlbiwgY2xvbmVFbGVtZW50LCBpc1ZhbGlkRWxlbWVudCB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogR2l2ZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gLCByZXR1cm4gYW4gb2JqZWN0IG1hcHBpbmcga2V5IHRvIGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Kn0gY2hpbGRyZW4gYHRoaXMucHJvcHMuY2hpbGRyZW5gXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcHBpbmcgb2Yga2V5IHRvIGNoaWxkXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkTWFwcGluZyhjaGlsZHJlbiwgbWFwRm4pIHtcbiAgdmFyIG1hcHBlciA9IGZ1bmN0aW9uIG1hcHBlcihjaGlsZCkge1xuICAgIHJldHVybiBtYXBGbiAmJiBpc1ZhbGlkRWxlbWVudChjaGlsZCkgPyBtYXBGbihjaGlsZCkgOiBjaGlsZDtcbiAgfTtcblxuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgaWYgKGNoaWxkcmVuKSBDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIGZ1bmN0aW9uIChjKSB7XG4gICAgcmV0dXJuIGM7XG4gIH0pLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgLy8gcnVuIHRoZSBtYXAgZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIHNvIHRoYXQgdGhlIGtleSBpcyB0aGUgY29tcHV0ZWQgb25lXG4gICAgcmVzdWx0W2NoaWxkLmtleV0gPSBtYXBwZXIoY2hpbGQpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogV2hlbiB5b3UncmUgYWRkaW5nIG9yIHJlbW92aW5nIGNoaWxkcmVuIHNvbWUgbWF5IGJlIGFkZGVkIG9yIHJlbW92ZWQgaW4gdGhlXG4gKiBzYW1lIHJlbmRlciBwYXNzLiBXZSB3YW50IHRvIHNob3cgKmJvdGgqIHNpbmNlIHdlIHdhbnQgdG8gc2ltdWx0YW5lb3VzbHlcbiAqIGFuaW1hdGUgZWxlbWVudHMgaW4gYW5kIG91dC4gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHByZXZpb3VzIHNldCBvZiBrZXlzXG4gKiBhbmQgYSBuZXcgc2V0IG9mIGtleXMgYW5kIG1lcmdlcyB0aGVtIHdpdGggaXRzIGJlc3QgZ3Vlc3Mgb2YgdGhlIGNvcnJlY3RcbiAqIG9yZGVyaW5nLiBJbiB0aGUgZnV0dXJlIHdlIG1heSBleHBvc2Ugc29tZSBvZiB0aGUgdXRpbGl0aWVzIGluXG4gKiBSZWFjdE11bHRpQ2hpbGQgdG8gbWFrZSB0aGlzIGVhc3ksIGJ1dCBmb3Igbm93IFJlYWN0IGl0c2VsZiBkb2VzIG5vdFxuICogZGlyZWN0bHkgaGF2ZSB0aGlzIGNvbmNlcHQgb2YgdGhlIHVuaW9uIG9mIHByZXZDaGlsZHJlbiBhbmQgbmV4dENoaWxkcmVuXG4gKiBzbyB3ZSBpbXBsZW1lbnQgaXQgaGVyZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gcHJldiBwcmV2IGNoaWxkcmVuIGFzIHJldHVybmVkIGZyb21cbiAqIGBSZWFjdFRyYW5zaXRpb25DaGlsZE1hcHBpbmcuZ2V0Q2hpbGRNYXBwaW5nKClgLlxuICogQHBhcmFtIHtvYmplY3R9IG5leHQgbmV4dCBjaGlsZHJlbiBhcyByZXR1cm5lZCBmcm9tXG4gKiBgUmVhY3RUcmFuc2l0aW9uQ2hpbGRNYXBwaW5nLmdldENoaWxkTWFwcGluZygpYC5cbiAqIEByZXR1cm4ge29iamVjdH0gYSBrZXkgc2V0IHRoYXQgY29udGFpbnMgYWxsIGtleXMgaW4gYHByZXZgIGFuZCBhbGwga2V5c1xuICogaW4gYG5leHRgIGluIGEgcmVhc29uYWJsZSBvcmRlci5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VDaGlsZE1hcHBpbmdzKHByZXYsIG5leHQpIHtcbiAgcHJldiA9IHByZXYgfHwge307XG4gIG5leHQgPSBuZXh0IHx8IHt9O1xuXG4gIGZ1bmN0aW9uIGdldFZhbHVlRm9yS2V5KGtleSkge1xuICAgIHJldHVybiBrZXkgaW4gbmV4dCA/IG5leHRba2V5XSA6IHByZXZba2V5XTtcbiAgfSAvLyBGb3IgZWFjaCBrZXkgb2YgYG5leHRgLCB0aGUgbGlzdCBvZiBrZXlzIHRvIGluc2VydCBiZWZvcmUgdGhhdCBrZXkgaW5cbiAgLy8gdGhlIGNvbWJpbmVkIGxpc3RcblxuXG4gIHZhciBuZXh0S2V5c1BlbmRpbmcgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICB2YXIgcGVuZGluZ0tleXMgPSBbXTtcblxuICBmb3IgKHZhciBwcmV2S2V5IGluIHByZXYpIHtcbiAgICBpZiAocHJldktleSBpbiBuZXh0KSB7XG4gICAgICBpZiAocGVuZGluZ0tleXMubGVuZ3RoKSB7XG4gICAgICAgIG5leHRLZXlzUGVuZGluZ1twcmV2S2V5XSA9IHBlbmRpbmdLZXlzO1xuICAgICAgICBwZW5kaW5nS2V5cyA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwZW5kaW5nS2V5cy5wdXNoKHByZXZLZXkpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpO1xuICB2YXIgY2hpbGRNYXBwaW5nID0ge307XG5cbiAgZm9yICh2YXIgbmV4dEtleSBpbiBuZXh0KSB7XG4gICAgaWYgKG5leHRLZXlzUGVuZGluZ1tuZXh0S2V5XSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IG5leHRLZXlzUGVuZGluZ1tuZXh0S2V5XS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgcGVuZGluZ05leHRLZXkgPSBuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV07XG4gICAgICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5c1BlbmRpbmdbbmV4dEtleV1baV1dID0gZ2V0VmFsdWVGb3JLZXkocGVuZGluZ05leHRLZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNoaWxkTWFwcGluZ1tuZXh0S2V5XSA9IGdldFZhbHVlRm9yS2V5KG5leHRLZXkpO1xuICB9IC8vIEZpbmFsbHksIGFkZCB0aGUga2V5cyB3aGljaCBkaWRuJ3QgYXBwZWFyIGJlZm9yZSBhbnkga2V5IGluIGBuZXh0YFxuXG5cbiAgZm9yIChpID0gMDsgaSA8IHBlbmRpbmdLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hpbGRNYXBwaW5nW3BlbmRpbmdLZXlzW2ldXSA9IGdldFZhbHVlRm9yS2V5KHBlbmRpbmdLZXlzW2ldKTtcbiAgfVxuXG4gIHJldHVybiBjaGlsZE1hcHBpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFByb3AoY2hpbGQsIHByb3AsIHByb3BzKSB7XG4gIHJldHVybiBwcm9wc1twcm9wXSAhPSBudWxsID8gcHJvcHNbcHJvcF0gOiBjaGlsZC5wcm9wc1twcm9wXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxDaGlsZE1hcHBpbmcocHJvcHMsIG9uRXhpdGVkKSB7XG4gIHJldHVybiBnZXRDaGlsZE1hcHBpbmcocHJvcHMuY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgIG9uRXhpdGVkOiBvbkV4aXRlZC5iaW5kKG51bGwsIGNoaWxkKSxcbiAgICAgIGluOiB0cnVlLFxuICAgICAgYXBwZWFyOiBnZXRQcm9wKGNoaWxkLCAnYXBwZWFyJywgcHJvcHMpLFxuICAgICAgZW50ZXI6IGdldFByb3AoY2hpbGQsICdlbnRlcicsIHByb3BzKSxcbiAgICAgIGV4aXQ6IGdldFByb3AoY2hpbGQsICdleGl0JywgcHJvcHMpXG4gICAgfSk7XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRDaGlsZE1hcHBpbmcobmV4dFByb3BzLCBwcmV2Q2hpbGRNYXBwaW5nLCBvbkV4aXRlZCkge1xuICB2YXIgbmV4dENoaWxkTWFwcGluZyA9IGdldENoaWxkTWFwcGluZyhuZXh0UHJvcHMuY2hpbGRyZW4pO1xuICB2YXIgY2hpbGRyZW4gPSBtZXJnZUNoaWxkTWFwcGluZ3MocHJldkNoaWxkTWFwcGluZywgbmV4dENoaWxkTWFwcGluZyk7XG4gIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltrZXldO1xuICAgIGlmICghaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSByZXR1cm47XG4gICAgdmFyIGhhc1ByZXYgPSAoa2V5IGluIHByZXZDaGlsZE1hcHBpbmcpO1xuICAgIHZhciBoYXNOZXh0ID0gKGtleSBpbiBuZXh0Q2hpbGRNYXBwaW5nKTtcbiAgICB2YXIgcHJldkNoaWxkID0gcHJldkNoaWxkTWFwcGluZ1trZXldO1xuICAgIHZhciBpc0xlYXZpbmcgPSBpc1ZhbGlkRWxlbWVudChwcmV2Q2hpbGQpICYmICFwcmV2Q2hpbGQucHJvcHMuaW47IC8vIGl0ZW0gaXMgbmV3IChlbnRlcmluZylcblxuICAgIGlmIChoYXNOZXh0ICYmICghaGFzUHJldiB8fCBpc0xlYXZpbmcpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZygnZW50ZXJpbmcnLCBrZXkpXG4gICAgICBjaGlsZHJlbltrZXldID0gY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIG9uRXhpdGVkOiBvbkV4aXRlZC5iaW5kKG51bGwsIGNoaWxkKSxcbiAgICAgICAgaW46IHRydWUsXG4gICAgICAgIGV4aXQ6IGdldFByb3AoY2hpbGQsICdleGl0JywgbmV4dFByb3BzKSxcbiAgICAgICAgZW50ZXI6IGdldFByb3AoY2hpbGQsICdlbnRlcicsIG5leHRQcm9wcylcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoIWhhc05leHQgJiYgaGFzUHJldiAmJiAhaXNMZWF2aW5nKSB7XG4gICAgICAvLyBpdGVtIGlzIG9sZCAoZXhpdGluZylcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdsZWF2aW5nJywga2V5KVxuICAgICAgY2hpbGRyZW5ba2V5XSA9IGNsb25lRWxlbWVudChjaGlsZCwge1xuICAgICAgICBpbjogZmFsc2VcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaGFzTmV4dCAmJiBoYXNQcmV2ICYmIGlzVmFsaWRFbGVtZW50KHByZXZDaGlsZCkpIHtcbiAgICAgIC8vIGl0ZW0gaGFzbid0IGNoYW5nZWQgdHJhbnNpdGlvbiBzdGF0ZXNcbiAgICAgIC8vIGNvcHkgb3ZlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHByb3BzO1xuICAgICAgLy8gY29uc29sZS5sb2coJ3VuY2hhbmdlZCcsIGtleSlcbiAgICAgIGNoaWxkcmVuW2tleV0gPSBjbG9uZUVsZW1lbnQoY2hpbGQsIHtcbiAgICAgICAgb25FeGl0ZWQ6IG9uRXhpdGVkLmJpbmQobnVsbCwgY2hpbGQpLFxuICAgICAgICBpbjogcHJldkNoaWxkLnByb3BzLmluLFxuICAgICAgICBleGl0OiBnZXRQcm9wKGNoaWxkLCAnZXhpdCcsIG5leHRQcm9wcyksXG4gICAgICAgIGVudGVyOiBnZXRQcm9wKGNoaWxkLCAnZW50ZXInLCBuZXh0UHJvcHMpXG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2hpbGRyZW47XG59IiwiaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfYXNzZXJ0VGhpc0luaXRpYWxpemVkIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIjtcbmltcG9ydCBfaW5oZXJpdHNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vaW5oZXJpdHNMb29zZVwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVHJhbnNpdGlvbkdyb3VwQ29udGV4dCBmcm9tICcuL1RyYW5zaXRpb25Hcm91cENvbnRleHQnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRNYXBwaW5nLCBnZXRJbml0aWFsQ2hpbGRNYXBwaW5nLCBnZXROZXh0Q2hpbGRNYXBwaW5nIH0gZnJvbSAnLi91dGlscy9DaGlsZE1hcHBpbmcnO1xuXG52YXIgdmFsdWVzID0gT2JqZWN0LnZhbHVlcyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLm1hcChmdW5jdGlvbiAoaykge1xuICAgIHJldHVybiBvYmpba107XG4gIH0pO1xufTtcblxudmFyIGRlZmF1bHRQcm9wcyA9IHtcbiAgY29tcG9uZW50OiAnZGl2JyxcbiAgY2hpbGRGYWN0b3J5OiBmdW5jdGlvbiBjaGlsZEZhY3RvcnkoY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cbn07XG4vKipcbiAqIFRoZSBgPFRyYW5zaXRpb25Hcm91cD5gIGNvbXBvbmVudCBtYW5hZ2VzIGEgc2V0IG9mIHRyYW5zaXRpb24gY29tcG9uZW50c1xuICogKGA8VHJhbnNpdGlvbj5gIGFuZCBgPENTU1RyYW5zaXRpb24+YCkgaW4gYSBsaXN0LiBMaWtlIHdpdGggdGhlIHRyYW5zaXRpb25cbiAqIGNvbXBvbmVudHMsIGA8VHJhbnNpdGlvbkdyb3VwPmAgaXMgYSBzdGF0ZSBtYWNoaW5lIGZvciBtYW5hZ2luZyB0aGUgbW91bnRpbmdcbiAqIGFuZCB1bm1vdW50aW5nIG9mIGNvbXBvbmVudHMgb3ZlciB0aW1lLlxuICpcbiAqIENvbnNpZGVyIHRoZSBleGFtcGxlIGJlbG93LiBBcyBpdGVtcyBhcmUgcmVtb3ZlZCBvciBhZGRlZCB0byB0aGUgVG9kb0xpc3QgdGhlXG4gKiBgaW5gIHByb3AgaXMgdG9nZ2xlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBgPFRyYW5zaXRpb25Hcm91cD5gLlxuICpcbiAqIE5vdGUgdGhhdCBgPFRyYW5zaXRpb25Hcm91cD5gICBkb2VzIG5vdCBkZWZpbmUgYW55IGFuaW1hdGlvbiBiZWhhdmlvciFcbiAqIEV4YWN0bHkgX2hvd18gYSBsaXN0IGl0ZW0gYW5pbWF0ZXMgaXMgdXAgdG8gdGhlIGluZGl2aWR1YWwgdHJhbnNpdGlvblxuICogY29tcG9uZW50LiBUaGlzIG1lYW5zIHlvdSBjYW4gbWl4IGFuZCBtYXRjaCBhbmltYXRpb25zIGFjcm9zcyBkaWZmZXJlbnQgbGlzdFxuICogaXRlbXMuXG4gKi9cblxudmFyIFRyYW5zaXRpb25Hcm91cCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX1JlYWN0JENvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShUcmFuc2l0aW9uR3JvdXAsIF9SZWFjdCRDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFRyYW5zaXRpb25Hcm91cChwcm9wcywgY29udGV4dCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX1JlYWN0JENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSB8fCB0aGlzO1xuXG4gICAgdmFyIGhhbmRsZUV4aXRlZCA9IF90aGlzLmhhbmRsZUV4aXRlZC5iaW5kKF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTsgLy8gSW5pdGlhbCBjaGlsZHJlbiBzaG91bGQgYWxsIGJlIGVudGVyaW5nLCBkZXBlbmRlbnQgb24gYXBwZWFyXG5cblxuICAgIF90aGlzLnN0YXRlID0ge1xuICAgICAgY29udGV4dFZhbHVlOiB7XG4gICAgICAgIGlzTW91bnRpbmc6IHRydWVcbiAgICAgIH0sXG4gICAgICBoYW5kbGVFeGl0ZWQ6IGhhbmRsZUV4aXRlZCxcbiAgICAgIGZpcnN0UmVuZGVyOiB0cnVlXG4gICAgfTtcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gVHJhbnNpdGlvbkdyb3VwLnByb3RvdHlwZTtcblxuICBfcHJvdG8uY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29udGV4dFZhbHVlOiB7XG4gICAgICAgIGlzTW91bnRpbmc6IGZhbHNlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5tb3VudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgVHJhbnNpdGlvbkdyb3VwLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyA9IGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhuZXh0UHJvcHMsIF9yZWYpIHtcbiAgICB2YXIgcHJldkNoaWxkTWFwcGluZyA9IF9yZWYuY2hpbGRyZW4sXG4gICAgICAgIGhhbmRsZUV4aXRlZCA9IF9yZWYuaGFuZGxlRXhpdGVkLFxuICAgICAgICBmaXJzdFJlbmRlciA9IF9yZWYuZmlyc3RSZW5kZXI7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNoaWxkcmVuOiBmaXJzdFJlbmRlciA/IGdldEluaXRpYWxDaGlsZE1hcHBpbmcobmV4dFByb3BzLCBoYW5kbGVFeGl0ZWQpIDogZ2V0TmV4dENoaWxkTWFwcGluZyhuZXh0UHJvcHMsIHByZXZDaGlsZE1hcHBpbmcsIGhhbmRsZUV4aXRlZCksXG4gICAgICBmaXJzdFJlbmRlcjogZmFsc2VcbiAgICB9O1xuICB9IC8vIG5vZGUgaXMgYHVuZGVmaW5lZGAgd2hlbiB1c2VyIHByb3ZpZGVkIGBub2RlUmVmYCBwcm9wXG4gIDtcblxuICBfcHJvdG8uaGFuZGxlRXhpdGVkID0gZnVuY3Rpb24gaGFuZGxlRXhpdGVkKGNoaWxkLCBub2RlKSB7XG4gICAgdmFyIGN1cnJlbnRDaGlsZE1hcHBpbmcgPSBnZXRDaGlsZE1hcHBpbmcodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgaWYgKGNoaWxkLmtleSBpbiBjdXJyZW50Q2hpbGRNYXBwaW5nKSByZXR1cm47XG5cbiAgICBpZiAoY2hpbGQucHJvcHMub25FeGl0ZWQpIHtcbiAgICAgIGNoaWxkLnByb3BzLm9uRXhpdGVkKG5vZGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vdW50ZWQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIHZhciBjaGlsZHJlbiA9IF9leHRlbmRzKHt9LCBzdGF0ZS5jaGlsZHJlbik7XG5cbiAgICAgICAgZGVsZXRlIGNoaWxkcmVuW2NoaWxkLmtleV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICBDb21wb25lbnQgPSBfdGhpcyRwcm9wcy5jb21wb25lbnQsXG4gICAgICAgIGNoaWxkRmFjdG9yeSA9IF90aGlzJHByb3BzLmNoaWxkRmFjdG9yeSxcbiAgICAgICAgcHJvcHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfdGhpcyRwcm9wcywgW1wiY29tcG9uZW50XCIsIFwiY2hpbGRGYWN0b3J5XCJdKTtcblxuICAgIHZhciBjb250ZXh0VmFsdWUgPSB0aGlzLnN0YXRlLmNvbnRleHRWYWx1ZTtcbiAgICB2YXIgY2hpbGRyZW4gPSB2YWx1ZXModGhpcy5zdGF0ZS5jaGlsZHJlbikubWFwKGNoaWxkRmFjdG9yeSk7XG4gICAgZGVsZXRlIHByb3BzLmFwcGVhcjtcbiAgICBkZWxldGUgcHJvcHMuZW50ZXI7XG4gICAgZGVsZXRlIHByb3BzLmV4aXQ7XG5cbiAgICBpZiAoQ29tcG9uZW50ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVHJhbnNpdGlvbkdyb3VwQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICB2YWx1ZTogY29udGV4dFZhbHVlXG4gICAgICB9LCBjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFRyYW5zaXRpb25Hcm91cENvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgIHZhbHVlOiBjb250ZXh0VmFsdWVcbiAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChDb21wb25lbnQsIHByb3BzLCBjaGlsZHJlbikpO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2l0aW9uR3JvdXA7XG59KFJlYWN0LkNvbXBvbmVudCk7XG5cblRyYW5zaXRpb25Hcm91cC5wcm9wVHlwZXMgPSBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB7XG4gIC8qKlxuICAgKiBgPFRyYW5zaXRpb25Hcm91cD5gIHJlbmRlcnMgYSBgPGRpdj5gIGJ5IGRlZmF1bHQuIFlvdSBjYW4gY2hhbmdlIHRoaXNcbiAgICogYmVoYXZpb3IgYnkgcHJvdmlkaW5nIGEgYGNvbXBvbmVudGAgcHJvcC5cbiAgICogSWYgeW91IHVzZSBSZWFjdCB2MTYrIGFuZCB3b3VsZCBsaWtlIHRvIGF2b2lkIGEgd3JhcHBpbmcgYDxkaXY+YCBlbGVtZW50XG4gICAqIHlvdSBjYW4gcGFzcyBpbiBgY29tcG9uZW50PXtudWxsfWAuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSB3cmFwcGluZyBkaXZcbiAgICogYm9ya3MgeW91ciBjc3Mgc3R5bGVzLlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuYW55LFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBgPFRyYW5zaXRpb24+YCBjb21wb25lbnRzLCB0aGF0IGFyZSB0b2dnbGVkIGBpbmAgYW5kIG91dCBhcyB0aGV5XG4gICAqIGxlYXZlLiB0aGUgYDxUcmFuc2l0aW9uR3JvdXA+YCB3aWxsIGluamVjdCBzcGVjaWZpYyB0cmFuc2l0aW9uIHByb3BzLCBzb1xuICAgKiByZW1lbWJlciB0byBzcHJlYWQgdGhlbSB0aHJvdWdoIGlmIHlvdSBhcmUgd3JhcHBpbmcgdGhlIGA8VHJhbnNpdGlvbj5gIGFzXG4gICAqIHdpdGggb3VyIGA8RmFkZT5gIGV4YW1wbGUuXG4gICAqXG4gICAqIFdoaWxlIHRoaXMgY29tcG9uZW50IGlzIG1lYW50IGZvciBtdWx0aXBsZSBgVHJhbnNpdGlvbmAgb3IgYENTU1RyYW5zaXRpb25gXG4gICAqIGNoaWxkcmVuLCBzb21ldGltZXMgeW91IG1heSB3YW50IHRvIGhhdmUgYSBzaW5nbGUgdHJhbnNpdGlvbiBjaGlsZCB3aXRoXG4gICAqIGNvbnRlbnQgdGhhdCB5b3Ugd2FudCB0byBiZSB0cmFuc2l0aW9uZWQgb3V0IGFuZCBpbiB3aGVuIHlvdSBjaGFuZ2UgaXRcbiAgICogKGUuZy4gcm91dGVzLCBpbWFnZXMgZXRjLikgSW4gdGhhdCBjYXNlIHlvdSBjYW4gY2hhbmdlIHRoZSBga2V5YCBwcm9wIG9mXG4gICAqIHRoZSB0cmFuc2l0aW9uIGNoaWxkIGFzIHlvdSBjaGFuZ2UgaXRzIGNvbnRlbnQsIHRoaXMgd2lsbCBjYXVzZVxuICAgKiBgVHJhbnNpdGlvbkdyb3VwYCB0byB0cmFuc2l0aW9uIHRoZSBjaGlsZCBvdXQgYW5kIGJhY2sgaW4uXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIEEgY29udmVuaWVuY2UgcHJvcCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgYXBwZWFyIGFuaW1hdGlvbnNcbiAgICogZm9yIGFsbCBjaGlsZHJlbi4gTm90ZSB0aGF0IHNwZWNpZnlpbmcgdGhpcyB3aWxsIG92ZXJyaWRlIGFueSBkZWZhdWx0cyBzZXRcbiAgICogb24gaW5kaXZpZHVhbCBjaGlsZHJlbiBUcmFuc2l0aW9ucy5cbiAgICovXG4gIGFwcGVhcjogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEEgY29udmVuaWVuY2UgcHJvcCB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgZW50ZXIgYW5pbWF0aW9uc1xuICAgKiBmb3IgYWxsIGNoaWxkcmVuLiBOb3RlIHRoYXQgc3BlY2lmeWluZyB0aGlzIHdpbGwgb3ZlcnJpZGUgYW55IGRlZmF1bHRzIHNldFxuICAgKiBvbiBpbmRpdmlkdWFsIGNoaWxkcmVuIFRyYW5zaXRpb25zLlxuICAgKi9cbiAgZW50ZXI6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBBIGNvbnZlbmllbmNlIHByb3AgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIGV4aXQgYW5pbWF0aW9uc1xuICAgKiBmb3IgYWxsIGNoaWxkcmVuLiBOb3RlIHRoYXQgc3BlY2lmeWluZyB0aGlzIHdpbGwgb3ZlcnJpZGUgYW55IGRlZmF1bHRzIHNldFxuICAgKiBvbiBpbmRpdmlkdWFsIGNoaWxkcmVuIFRyYW5zaXRpb25zLlxuICAgKi9cbiAgZXhpdDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFlvdSBtYXkgbmVlZCB0byBhcHBseSByZWFjdGl2ZSB1cGRhdGVzIHRvIGEgY2hpbGQgYXMgaXQgaXMgZXhpdGluZy5cbiAgICogVGhpcyBpcyBnZW5lcmFsbHkgZG9uZSBieSB1c2luZyBgY2xvbmVFbGVtZW50YCBob3dldmVyIGluIHRoZSBjYXNlIG9mIGFuIGV4aXRpbmdcbiAgICogY2hpbGQgdGhlIGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGFuZCBub3QgYWNjZXNzaWJsZSB0byB0aGUgY29uc3VtZXIuXG4gICAqXG4gICAqIElmIHlvdSBkbyBuZWVkIHRvIHVwZGF0ZSBhIGNoaWxkIGFzIGl0IGxlYXZlcyB5b3UgY2FuIHByb3ZpZGUgYSBgY2hpbGRGYWN0b3J5YFxuICAgKiB0byB3cmFwIGV2ZXJ5IGNoaWxkLCBldmVuIHRoZSBvbmVzIHRoYXQgYXJlIGxlYXZpbmcuXG4gICAqXG4gICAqIEB0eXBlIEZ1bmN0aW9uKGNoaWxkOiBSZWFjdEVsZW1lbnQpIC0+IFJlYWN0RWxlbWVudFxuICAgKi9cbiAgY2hpbGRGYWN0b3J5OiBQcm9wVHlwZXMuZnVuY1xufSA6IHt9O1xuVHJhbnNpdGlvbkdyb3VwLmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcbmV4cG9ydCBkZWZhdWx0IFRyYW5zaXRpb25Hcm91cDsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuICByZXR1cm4gc2VsZjtcbn0iLCJpbXBvcnQgeyBoIGFzIGhhc093blByb3BlcnR5LCBFIGFzIEVtb3Rpb24sIGMgYXMgY3JlYXRlRW1vdGlvblByb3BzLCB3IGFzIHdpdGhFbW90aW9uQ2FjaGUsIFQgYXMgVGhlbWVDb250ZXh0LCBpIGFzIGlzQnJvd3NlciQxIH0gZnJvbSAnLi9lbW90aW9uLWVsZW1lbnQtYzM5NjE3ZDguYnJvd3Nlci5lc20uanMnO1xuZXhwb3J0IHsgQyBhcyBDYWNoZVByb3ZpZGVyLCBUIGFzIFRoZW1lQ29udGV4dCwgYSBhcyBUaGVtZVByb3ZpZGVyLCBfIGFzIF9fdW5zYWZlX3VzZUVtb3Rpb25DYWNoZSwgdSBhcyB1c2VUaGVtZSwgdyBhcyB3aXRoRW1vdGlvbkNhY2hlLCBiIGFzIHdpdGhUaGVtZSB9IGZyb20gJy4vZW1vdGlvbi1lbGVtZW50LWMzOTYxN2Q4LmJyb3dzZXIuZXNtLmpzJztcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGluc2VydFN0eWxlcywgcmVnaXN0ZXJTdHlsZXMsIGdldFJlZ2lzdGVyZWRTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi91dGlscyc7XG5pbXBvcnQgeyB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2ssIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2sgfSBmcm9tICdAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrcyc7XG5pbXBvcnQgeyBzZXJpYWxpemVTdHlsZXMgfSBmcm9tICdAZW1vdGlvbi9zZXJpYWxpemUnO1xuaW1wb3J0ICdAZW1vdGlvbi9jYWNoZSc7XG5pbXBvcnQgJ0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcyc7XG5pbXBvcnQgJ0BlbW90aW9uL3dlYWstbWVtb2l6ZSc7XG5pbXBvcnQgJy4uL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qcyc7XG5pbXBvcnQgJ2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzJztcblxudmFyIHBrZyA9IHtcblx0bmFtZTogXCJAZW1vdGlvbi9yZWFjdFwiLFxuXHR2ZXJzaW9uOiBcIjExLjExLjFcIixcblx0bWFpbjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCIsXG5cdG1vZHVsZTogXCJkaXN0L2Vtb3Rpb24tcmVhY3QuZXNtLmpzXCIsXG5cdGJyb3dzZXI6IHtcblx0XHRcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmVzbS5qc1wiOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0LmJyb3dzZXIuZXNtLmpzXCJcblx0fSxcblx0ZXhwb3J0czoge1xuXHRcdFwiLlwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vZGlzdC9lbW90aW9uLXJlYWN0Lndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2Rpc3QvZW1vdGlvbi1yZWFjdC5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9kaXN0L2Vtb3Rpb24tcmVhY3QuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtcnVudGltZVwiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vanN4LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL2pzeC1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtcnVudGltZS5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LXJ1bnRpbWUuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9faXNvbGF0ZWQtaG5yc1wiOiB7XG5cdFx0XHRtb2R1bGU6IHtcblx0XHRcdFx0d29ya2VyOiBcIi4vX2lzb2xhdGVkLWhucnMvZGlzdC9lbW90aW9uLXJlYWN0LV9pc29sYXRlZC1obnJzLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5icm93c2VyLmVzbS5qc1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL19pc29sYXRlZC1obnJzL2Rpc3QvZW1vdGlvbi1yZWFjdC1faXNvbGF0ZWQtaG5ycy5lc20uanNcIlxuXHRcdFx0fSxcblx0XHRcdFwiaW1wb3J0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9faXNvbGF0ZWQtaG5ycy9kaXN0L2Vtb3Rpb24tcmVhY3QtX2lzb2xhdGVkLWhucnMuY2pzLmpzXCJcblx0XHR9LFxuXHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWVcIjoge1xuXHRcdFx0bW9kdWxlOiB7XG5cdFx0XHRcdHdvcmtlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLndvcmtlci5lc20uanNcIixcblx0XHRcdFx0YnJvd3NlcjogXCIuL2pzeC1kZXYtcnVudGltZS9kaXN0L2Vtb3Rpb24tcmVhY3QtanN4LWRldi1ydW50aW1lLmJyb3dzZXIuZXNtLmpzXCIsXG5cdFx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZXNtLmpzXCJcblx0XHRcdH0sXG5cdFx0XHRcImltcG9ydFwiOiBcIi4vanN4LWRldi1ydW50aW1lL2Rpc3QvZW1vdGlvbi1yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuY2pzLm1qc1wiLFxuXHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9qc3gtZGV2LXJ1bnRpbWUvZGlzdC9lbW90aW9uLXJlYWN0LWpzeC1kZXYtcnVudGltZS5janMuanNcIlxuXHRcdH0sXG5cdFx0XCIuL3BhY2thZ2UuanNvblwiOiBcIi4vcGFja2FnZS5qc29uXCIsXG5cdFx0XCIuL3R5cGVzL2Nzcy1wcm9wXCI6IFwiLi90eXBlcy9jc3MtcHJvcC5kLnRzXCIsXG5cdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdHR5cGVzOiB7XG5cdFx0XHRcdFwiaW1wb3J0XCI6IFwiLi9tYWNyby5kLm10c1wiLFxuXHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0fSxcblx0XHRcdFwiZGVmYXVsdFwiOiBcIi4vbWFjcm8uanNcIlxuXHRcdH1cblx0fSxcblx0dHlwZXM6IFwidHlwZXMvaW5kZXguZC50c1wiLFxuXHRmaWxlczogW1xuXHRcdFwic3JjXCIsXG5cdFx0XCJkaXN0XCIsXG5cdFx0XCJqc3gtcnVudGltZVwiLFxuXHRcdFwianN4LWRldi1ydW50aW1lXCIsXG5cdFx0XCJfaXNvbGF0ZWQtaG5yc1wiLFxuXHRcdFwidHlwZXMvKi5kLnRzXCIsXG5cdFx0XCJtYWNyby4qXCJcblx0XSxcblx0c2lkZUVmZmVjdHM6IGZhbHNlLFxuXHRhdXRob3I6IFwiRW1vdGlvbiBDb250cmlidXRvcnNcIixcblx0bGljZW5zZTogXCJNSVRcIixcblx0c2NyaXB0czoge1xuXHRcdFwidGVzdDp0eXBlc2NyaXB0XCI6IFwiZHRzbGludCB0eXBlc1wiXG5cdH0sXG5cdGRlcGVuZGVuY2llczoge1xuXHRcdFwiQGJhYmVsL3J1bnRpbWVcIjogXCJeNy4xOC4zXCIsXG5cdFx0XCJAZW1vdGlvbi9iYWJlbC1wbHVnaW5cIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vY2FjaGVcIjogXCJeMTEuMTEuMFwiLFxuXHRcdFwiQGVtb3Rpb24vc2VyaWFsaXplXCI6IFwiXjEuMS4yXCIsXG5cdFx0XCJAZW1vdGlvbi91c2UtaW5zZXJ0aW9uLWVmZmVjdC13aXRoLWZhbGxiYWNrc1wiOiBcIl4xLjAuMVwiLFxuXHRcdFwiQGVtb3Rpb24vdXRpbHNcIjogXCJeMS4yLjFcIixcblx0XHRcIkBlbW90aW9uL3dlYWstbWVtb2l6ZVwiOiBcIl4wLjMuMVwiLFxuXHRcdFwiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3NcIjogXCJeMy4zLjFcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzOiB7XG5cdFx0cmVhY3Q6IFwiPj0xNi44LjBcIlxuXHR9LFxuXHRwZWVyRGVwZW5kZW5jaWVzTWV0YToge1xuXHRcdFwiQHR5cGVzL3JlYWN0XCI6IHtcblx0XHRcdG9wdGlvbmFsOiB0cnVlXG5cdFx0fVxuXHR9LFxuXHRkZXZEZXBlbmRlbmNpZXM6IHtcblx0XHRcIkBkZWZpbml0ZWx5dHlwZWQvZHRzbGludFwiOiBcIjAuMC4xMTJcIixcblx0XHRcIkBlbW90aW9uL2Nzc1wiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL2Nzcy1wcmV0dGlmaWVyXCI6IFwiMS4xLjNcIixcblx0XHRcIkBlbW90aW9uL3NlcnZlclwiOiBcIjExLjExLjBcIixcblx0XHRcIkBlbW90aW9uL3N0eWxlZFwiOiBcIjExLjExLjBcIixcblx0XHRcImh0bWwtdGFnLW5hbWVzXCI6IFwiXjEuMS4yXCIsXG5cdFx0cmVhY3Q6IFwiMTYuMTQuMFwiLFxuXHRcdFwic3ZnLXRhZy1uYW1lc1wiOiBcIl4xLjEuMVwiLFxuXHRcdHR5cGVzY3JpcHQ6IFwiXjQuNS41XCJcblx0fSxcblx0cmVwb3NpdG9yeTogXCJodHRwczovL2dpdGh1Yi5jb20vZW1vdGlvbi1qcy9lbW90aW9uL3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdFwiLFxuXHRwdWJsaXNoQ29uZmlnOiB7XG5cdFx0YWNjZXNzOiBcInB1YmxpY1wiXG5cdH0sXG5cdFwidW1kOm1haW5cIjogXCJkaXN0L2Vtb3Rpb24tcmVhY3QudW1kLm1pbi5qc1wiLFxuXHRwcmVjb25zdHJ1Y3Q6IHtcblx0XHRlbnRyeXBvaW50czogW1xuXHRcdFx0XCIuL2luZGV4LmpzXCIsXG5cdFx0XHRcIi4vanN4LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9qc3gtZGV2LXJ1bnRpbWUuanNcIixcblx0XHRcdFwiLi9faXNvbGF0ZWQtaG5ycy5qc1wiXG5cdFx0XSxcblx0XHR1bWROYW1lOiBcImVtb3Rpb25SZWFjdFwiLFxuXHRcdGV4cG9ydHM6IHtcblx0XHRcdGVudkNvbmRpdGlvbnM6IFtcblx0XHRcdFx0XCJicm93c2VyXCIsXG5cdFx0XHRcdFwid29ya2VyXCJcblx0XHRcdF0sXG5cdFx0XHRleHRyYToge1xuXHRcdFx0XHRcIi4vdHlwZXMvY3NzLXByb3BcIjogXCIuL3R5cGVzL2Nzcy1wcm9wLmQudHNcIixcblx0XHRcdFx0XCIuL21hY3JvXCI6IHtcblx0XHRcdFx0XHR0eXBlczoge1xuXHRcdFx0XHRcdFx0XCJpbXBvcnRcIjogXCIuL21hY3JvLmQubXRzXCIsXG5cdFx0XHRcdFx0XHRcImRlZmF1bHRcIjogXCIuL21hY3JvLmQudHNcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XCJkZWZhdWx0XCI6IFwiLi9tYWNyby5qc1wiXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbnZhciBqc3ggPSBmdW5jdGlvbiBqc3godHlwZSwgcHJvcHMpIHtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHM7XG5cbiAgaWYgKHByb3BzID09IG51bGwgfHwgIWhhc093blByb3BlcnR5LmNhbGwocHJvcHMsICdjc3MnKSkge1xuICAgIC8vICRGbG93Rml4TWVcbiAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudC5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICB9XG5cbiAgdmFyIGFyZ3NMZW5ndGggPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGNyZWF0ZUVsZW1lbnRBcmdBcnJheSA9IG5ldyBBcnJheShhcmdzTGVuZ3RoKTtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzBdID0gRW1vdGlvbjtcbiAgY3JlYXRlRWxlbWVudEFyZ0FycmF5WzFdID0gY3JlYXRlRW1vdGlvblByb3BzKHR5cGUsIHByb3BzKTtcblxuICBmb3IgKHZhciBpID0gMjsgaSA8IGFyZ3NMZW5ndGg7IGkrKykge1xuICAgIGNyZWF0ZUVsZW1lbnRBcmdBcnJheVtpXSA9IGFyZ3NbaV07XG4gIH0gLy8gJEZsb3dGaXhNZVxuXG5cbiAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQuYXBwbHkobnVsbCwgY3JlYXRlRWxlbWVudEFyZ0FycmF5KTtcbn07XG5cbnZhciB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSBmYWxzZTsgLy8gbWFpbnRhaW4gcGxhY2Ugb3ZlciByZXJlbmRlcnMuXG4vLyBpbml0aWFsIHJlbmRlciBmcm9tIGJyb3dzZXIsIGluc2VydEJlZm9yZSBjb250ZXh0LnNoZWV0LnRhZ3NbMF0gb3IgaWYgYSBzdHlsZSBoYXNuJ3QgYmVlbiBpbnNlcnRlZCB0aGVyZSB5ZXQsIGFwcGVuZENoaWxkXG4vLyBpbml0aWFsIGNsaWVudC1zaWRlIHJlbmRlciBmcm9tIFNTUiwgdXNlIHBsYWNlIG9mIGh5ZHJhdGluZyB0YWdcblxudmFyIEdsb2JhbCA9IC8qICNfX1BVUkVfXyAqL3dpdGhFbW90aW9uQ2FjaGUoZnVuY3Rpb24gKHByb3BzLCBjYWNoZSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiAhd2FybmVkQWJvdXRDc3NQcm9wRm9yR2xvYmFsICYmICggLy8gY2hlY2sgZm9yIGNsYXNzTmFtZSBhcyB3ZWxsIHNpbmNlIHRoZSB1c2VyIGlzXG4gIC8vIHByb2JhYmx5IHVzaW5nIHRoZSBjdXN0b20gY3JlYXRlRWxlbWVudCB3aGljaFxuICAvLyBtZWFucyBpdCB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgY2xhc3NOYW1lIHByb3BcbiAgLy8gJEZsb3dGaXhNZSBJIGRvbid0IHJlYWxseSB3YW50IHRvIGFkZCBpdCB0byB0aGUgdHlwZSBzaW5jZSBpdCBzaG91bGRuJ3QgYmUgdXNlZFxuICBwcm9wcy5jbGFzc05hbWUgfHwgcHJvcHMuY3NzKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyB0aGUgY3NzIHByb3Agb24gR2xvYmFsLCBkaWQgeW91IG1lYW4gdG8gdXNlIHRoZSBzdHlsZXMgcHJvcCBpbnN0ZWFkP1wiKTtcbiAgICB3YXJuZWRBYm91dENzc1Byb3BGb3JHbG9iYWwgPSB0cnVlO1xuICB9XG5cbiAgdmFyIHN0eWxlcyA9IHByb3BzLnN0eWxlcztcbiAgdmFyIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemVTdHlsZXMoW3N0eWxlc10sIHVuZGVmaW5lZCwgUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpKTtcblxuICBpZiAoIWlzQnJvd3NlciQxKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgc2VyaWFsaXplZE5hbWVzID0gc2VyaWFsaXplZC5uYW1lO1xuICAgIHZhciBzZXJpYWxpemVkU3R5bGVzID0gc2VyaWFsaXplZC5zdHlsZXM7XG4gICAgdmFyIG5leHQgPSBzZXJpYWxpemVkLm5leHQ7XG5cbiAgICB3aGlsZSAobmV4dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBzZXJpYWxpemVkTmFtZXMgKz0gJyAnICsgbmV4dC5uYW1lO1xuICAgICAgc2VyaWFsaXplZFN0eWxlcyArPSBuZXh0LnN0eWxlcztcbiAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgfVxuXG4gICAgdmFyIHNob3VsZENhY2hlID0gY2FjaGUuY29tcGF0ID09PSB0cnVlO1xuICAgIHZhciBydWxlcyA9IGNhY2hlLmluc2VydChcIlwiLCB7XG4gICAgICBuYW1lOiBzZXJpYWxpemVkTmFtZXMsXG4gICAgICBzdHlsZXM6IHNlcmlhbGl6ZWRTdHlsZXNcbiAgICB9LCBjYWNoZS5zaGVldCwgc2hvdWxkQ2FjaGUpO1xuXG4gICAgaWYgKHNob3VsZENhY2hlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiLCAoX3JlZiA9IHt9LCBfcmVmW1wiZGF0YS1lbW90aW9uXCJdID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsIFwiICsgc2VyaWFsaXplZE5hbWVzLCBfcmVmLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID0ge1xuICAgICAgX19odG1sOiBydWxlc1xuICAgIH0sIF9yZWYubm9uY2UgPSBjYWNoZS5zaGVldC5ub25jZSwgX3JlZikpO1xuICB9IC8vIHllcywgaSBrbm93IHRoZXNlIGhvb2tzIGFyZSB1c2VkIGNvbmRpdGlvbmFsbHlcbiAgLy8gYnV0IGl0IGlzIGJhc2VkIG9uIGEgY29uc3RhbnQgdGhhdCB3aWxsIG5ldmVyIGNoYW5nZSBhdCBydW50aW1lXG4gIC8vIGl0J3MgZWZmZWN0aXZlbHkgbGlrZSBoYXZpbmcgdHdvIGltcGxlbWVudGF0aW9ucyBhbmQgc3dpdGNoaW5nIHRoZW0gb3V0XG4gIC8vIHNvIGl0J3Mgbm90IGFjdHVhbGx5IGJyZWFraW5nIGFueXRoaW5nXG5cblxuICB2YXIgc2hlZXRSZWYgPSBSZWFjdC51c2VSZWYoKTtcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0V2l0aExheW91dEZhbGxiYWNrKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIga2V5ID0gY2FjaGUua2V5ICsgXCItZ2xvYmFsXCI7IC8vIHVzZSBjYXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9lbW90aW9uLWpzL2Vtb3Rpb24vaXNzdWVzLzI2NzVcblxuICAgIHZhciBzaGVldCA9IG5ldyBjYWNoZS5zaGVldC5jb25zdHJ1Y3Rvcih7XG4gICAgICBrZXk6IGtleSxcbiAgICAgIG5vbmNlOiBjYWNoZS5zaGVldC5ub25jZSxcbiAgICAgIGNvbnRhaW5lcjogY2FjaGUuc2hlZXQuY29udGFpbmVyLFxuICAgICAgc3BlZWR5OiBjYWNoZS5zaGVldC5pc1NwZWVkeVxuICAgIH0pO1xuICAgIHZhciByZWh5ZHJhdGluZyA9IGZhbHNlOyAvLyAkRmxvd0ZpeE1lXG5cbiAgICB2YXIgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJzdHlsZVtkYXRhLWVtb3Rpb249XFxcIlwiICsga2V5ICsgXCIgXCIgKyBzZXJpYWxpemVkLm5hbWUgKyBcIlxcXCJdXCIpO1xuXG4gICAgaWYgKGNhY2hlLnNoZWV0LnRhZ3MubGVuZ3RoKSB7XG4gICAgICBzaGVldC5iZWZvcmUgPSBjYWNoZS5zaGVldC50YWdzWzBdO1xuICAgIH1cblxuICAgIGlmIChub2RlICE9PSBudWxsKSB7XG4gICAgICByZWh5ZHJhdGluZyA9IHRydWU7IC8vIGNsZWFyIHRoZSBoYXNoIHNvIHRoaXMgbm9kZSB3b24ndCBiZSByZWNvZ25pemFibGUgYXMgcmVoeWRyYXRhYmxlIGJ5IG90aGVyIDxHbG9iYWwvPnNcblxuICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtZW1vdGlvbicsIGtleSk7XG4gICAgICBzaGVldC5oeWRyYXRlKFtub2RlXSk7XG4gICAgfVxuXG4gICAgc2hlZXRSZWYuY3VycmVudCA9IFtzaGVldCwgcmVoeWRyYXRpbmddO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH07XG4gIH0sIFtjYWNoZV0pO1xuICB1c2VJbnNlcnRpb25FZmZlY3RXaXRoTGF5b3V0RmFsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGVldFJlZkN1cnJlbnQgPSBzaGVldFJlZi5jdXJyZW50O1xuICAgIHZhciBzaGVldCA9IHNoZWV0UmVmQ3VycmVudFswXSxcbiAgICAgICAgcmVoeWRyYXRpbmcgPSBzaGVldFJlZkN1cnJlbnRbMV07XG5cbiAgICBpZiAocmVoeWRyYXRpbmcpIHtcbiAgICAgIHNoZWV0UmVmQ3VycmVudFsxXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzZXJpYWxpemVkLm5leHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gaW5zZXJ0IGtleWZyYW1lc1xuICAgICAgaW5zZXJ0U3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLm5leHQsIHRydWUpO1xuICAgIH1cblxuICAgIGlmIChzaGVldC50YWdzLmxlbmd0aCkge1xuICAgICAgLy8gaWYgdGhpcyBkb2Vzbid0IGV4aXN0IHRoZW4gaXQgd2lsbCBiZSBudWxsIHNvIHRoZSBzdHlsZSBlbGVtZW50IHdpbGwgYmUgYXBwZW5kZWRcbiAgICAgIHZhciBlbGVtZW50ID0gc2hlZXQudGFnc1tzaGVldC50YWdzLmxlbmd0aCAtIDFdLm5leHRFbGVtZW50U2libGluZztcbiAgICAgIHNoZWV0LmJlZm9yZSA9IGVsZW1lbnQ7XG4gICAgICBzaGVldC5mbHVzaCgpO1xuICAgIH1cblxuICAgIGNhY2hlLmluc2VydChcIlwiLCBzZXJpYWxpemVkLCBzaGVldCwgZmFsc2UpO1xuICB9LCBbY2FjaGUsIHNlcmlhbGl6ZWQubmFtZV0pO1xuICByZXR1cm4gbnVsbDtcbn0pO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBHbG9iYWwuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkdsb2JhbCc7XG59XG5cbmZ1bmN0aW9uIGNzcygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiBzZXJpYWxpemVTdHlsZXMoYXJncyk7XG59XG5cbnZhciBrZXlmcmFtZXMgPSBmdW5jdGlvbiBrZXlmcmFtZXMoKSB7XG4gIHZhciBpbnNlcnRhYmxlID0gY3NzLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgdmFyIG5hbWUgPSBcImFuaW1hdGlvbi1cIiArIGluc2VydGFibGUubmFtZTsgLy8gJEZsb3dGaXhNZVxuXG4gIHJldHVybiB7XG4gICAgbmFtZTogbmFtZSxcbiAgICBzdHlsZXM6IFwiQGtleWZyYW1lcyBcIiArIG5hbWUgKyBcIntcIiArIGluc2VydGFibGUuc3R5bGVzICsgXCJ9XCIsXG4gICAgYW5pbTogMSxcbiAgICB0b1N0cmluZzogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJfRU1PX1wiICsgdGhpcy5uYW1lICsgXCJfXCIgKyB0aGlzLnN0eWxlcyArIFwiX0VNT19cIjtcbiAgICB9XG4gIH07XG59O1xuXG52YXIgY2xhc3NuYW1lcyA9IGZ1bmN0aW9uIGNsYXNzbmFtZXMoYXJncykge1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNscyA9ICcnO1xuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09IG51bGwpIGNvbnRpbnVlO1xuICAgIHZhciB0b0FkZCA9IHZvaWQgMDtcblxuICAgIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICB7XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuICAgICAgICAgICAgdG9BZGQgPSBjbGFzc25hbWVzKGFyZyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmIGFyZy5zdHlsZXMgIT09IHVuZGVmaW5lZCAmJiBhcmcubmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBoYXZlIHBhc3NlZCBzdHlsZXMgY3JlYXRlZCB3aXRoIGBjc3NgIGZyb20gYEBlbW90aW9uL3JlYWN0YCBwYWNrYWdlIHRvIHRoZSBgY3hgLlxcbicgKyAnYGN4YCBpcyBtZWFudCB0byBjb21wb3NlIGNsYXNzIG5hbWVzIChzdHJpbmdzKSBzbyB5b3Ugc2hvdWxkIGNvbnZlcnQgdGhvc2Ugc3R5bGVzIHRvIGEgY2xhc3MgbmFtZSBieSBwYXNzaW5nIHRoZW0gdG8gdGhlIGBjc3NgIHJlY2VpdmVkIGZyb20gPENsYXNzTmFtZXMvPiBjb21wb25lbnQuJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRvQWRkID0gJyc7XG5cbiAgICAgICAgICAgIGZvciAodmFyIGsgaW4gYXJnKSB7XG4gICAgICAgICAgICAgIGlmIChhcmdba10gJiYgaykge1xuICAgICAgICAgICAgICAgIHRvQWRkICYmICh0b0FkZCArPSAnICcpO1xuICAgICAgICAgICAgICAgIHRvQWRkICs9IGs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB7XG4gICAgICAgICAgdG9BZGQgPSBhcmc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodG9BZGQpIHtcbiAgICAgIGNscyAmJiAoY2xzICs9ICcgJyk7XG4gICAgICBjbHMgKz0gdG9BZGQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNscztcbn07XG5cbmZ1bmN0aW9uIG1lcmdlKHJlZ2lzdGVyZWQsIGNzcywgY2xhc3NOYW1lKSB7XG4gIHZhciByZWdpc3RlcmVkU3R5bGVzID0gW107XG4gIHZhciByYXdDbGFzc05hbWUgPSBnZXRSZWdpc3RlcmVkU3R5bGVzKHJlZ2lzdGVyZWQsIHJlZ2lzdGVyZWRTdHlsZXMsIGNsYXNzTmFtZSk7XG5cbiAgaWYgKHJlZ2lzdGVyZWRTdHlsZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICByZXR1cm4gcmF3Q2xhc3NOYW1lICsgY3NzKHJlZ2lzdGVyZWRTdHlsZXMpO1xufVxuXG52YXIgSW5zZXJ0aW9uID0gZnVuY3Rpb24gSW5zZXJ0aW9uKF9yZWYpIHtcbiAgdmFyIGNhY2hlID0gX3JlZi5jYWNoZSxcbiAgICAgIHNlcmlhbGl6ZWRBcnIgPSBfcmVmLnNlcmlhbGl6ZWRBcnI7XG4gIHVzZUluc2VydGlvbkVmZmVjdEFsd2F5c1dpdGhTeW5jRmFsbGJhY2soZnVuY3Rpb24gKCkge1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpYWxpemVkQXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRTdHlsZXMoY2FjaGUsIHNlcmlhbGl6ZWRBcnJbaV0sIGZhbHNlKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxudmFyIENsYXNzTmFtZXMgPSAvKiAjX19QVVJFX18gKi93aXRoRW1vdGlvbkNhY2hlKGZ1bmN0aW9uIChwcm9wcywgY2FjaGUpIHtcbiAgdmFyIGhhc1JlbmRlcmVkID0gZmFsc2U7XG4gIHZhciBzZXJpYWxpemVkQXJyID0gW107XG5cbiAgdmFyIGNzcyA9IGZ1bmN0aW9uIGNzcygpIHtcbiAgICBpZiAoaGFzUmVuZGVyZWQgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjc3MgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVuZGVyJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBzZXJpYWxpemVkID0gc2VyaWFsaXplU3R5bGVzKGFyZ3MsIGNhY2hlLnJlZ2lzdGVyZWQpO1xuICAgIHNlcmlhbGl6ZWRBcnIucHVzaChzZXJpYWxpemVkKTsgLy8gcmVnaXN0cmF0aW9uIGhhcyB0byBoYXBwZW4gaGVyZSBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWlnaHQgZ2V0IGNvbnN1bWVkIGJ5IGBjeGBcblxuICAgIHJlZ2lzdGVyU3R5bGVzKGNhY2hlLCBzZXJpYWxpemVkLCBmYWxzZSk7XG4gICAgcmV0dXJuIGNhY2hlLmtleSArIFwiLVwiICsgc2VyaWFsaXplZC5uYW1lO1xuICB9O1xuXG4gIHZhciBjeCA9IGZ1bmN0aW9uIGN4KCkge1xuICAgIGlmIChoYXNSZW5kZXJlZCAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2N4IGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlbmRlcicpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZShjYWNoZS5yZWdpc3RlcmVkLCBjc3MsIGNsYXNzbmFtZXMoYXJncykpO1xuICB9O1xuXG4gIHZhciBjb250ZW50ID0ge1xuICAgIGNzczogY3NzLFxuICAgIGN4OiBjeCxcbiAgICB0aGVtZTogUmVhY3QudXNlQ29udGV4dChUaGVtZUNvbnRleHQpXG4gIH07XG4gIHZhciBlbGUgPSBwcm9wcy5jaGlsZHJlbihjb250ZW50KTtcbiAgaGFzUmVuZGVyZWQgPSB0cnVlO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KEluc2VydGlvbiwge1xuICAgIGNhY2hlOiBjYWNoZSxcbiAgICBzZXJpYWxpemVkQXJyOiBzZXJpYWxpemVkQXJyXG4gIH0pLCBlbGUpO1xufSk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIENsYXNzTmFtZXMuZGlzcGxheU5hbWUgPSAnRW1vdGlvbkNsYXNzTmFtZXMnO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaXNCcm93c2VyID0gXCJvYmplY3RcIiAhPT0gJ3VuZGVmaW5lZCc7IC8vICMxNzI3LCAjMjkwNSBmb3Igc29tZSByZWFzb24gSmVzdCBhbmQgVml0ZXN0IGV2YWx1YXRlIG1vZHVsZXMgdHdpY2UgaWYgc29tZSBjb25zdW1pbmcgbW9kdWxlIGdldHMgbW9ja2VkXG5cbiAgdmFyIGlzVGVzdEVudiA9IHR5cGVvZiBqZXN0ICE9PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgdmkgIT09ICd1bmRlZmluZWQnO1xuXG4gIGlmIChpc0Jyb3dzZXIgJiYgIWlzVGVzdEVudikge1xuICAgIC8vIGdsb2JhbFRoaXMgaGFzIHdpZGUgYnJvd3NlciBzdXBwb3J0IC0gaHR0cHM6Ly9jYW5pdXNlLmNvbS8/c2VhcmNoPWdsb2JhbFRoaXMsIE5vZGUuanMgMTIgYW5kIGxhdGVyXG4gICAgdmFyIGdsb2JhbENvbnRleHQgPSAvLyAkRmxvd0lnbm9yZVxuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbFRoaXMgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIDogaXNCcm93c2VyID8gd2luZG93IDogZ2xvYmFsO1xuICAgIHZhciBnbG9iYWxLZXkgPSBcIl9fRU1PVElPTl9SRUFDVF9cIiArIHBrZy52ZXJzaW9uLnNwbGl0KCcuJylbMF0gKyBcIl9fXCI7XG5cbiAgICBpZiAoZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1lvdSBhcmUgbG9hZGluZyBAZW1vdGlvbi9yZWFjdCB3aGVuIGl0IGlzIGFscmVhZHkgbG9hZGVkLiBSdW5uaW5nICcgKyAnbXVsdGlwbGUgaW5zdGFuY2VzIG1heSBjYXVzZSBwcm9ibGVtcy4gVGhpcyBjYW4gaGFwcGVuIGlmIG11bHRpcGxlICcgKyAndmVyc2lvbnMgYXJlIHVzZWQsIG9yIGlmIG11bHRpcGxlIGJ1aWxkcyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFyZSAnICsgJ3VzZWQuJyk7XG4gICAgfVxuXG4gICAgZ2xvYmFsQ29udGV4dFtnbG9iYWxLZXldID0gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgeyBDbGFzc05hbWVzLCBHbG9iYWwsIGpzeCBhcyBjcmVhdGVFbGVtZW50LCBjc3MsIGpzeCwga2V5ZnJhbWVzIH07XG4iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZnVuY3Rpb24gUmlwcGxlKHByb3BzKSB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc05hbWUsXG4gICAgY2xhc3NlcyxcbiAgICBwdWxzYXRlID0gZmFsc2UsXG4gICAgcmlwcGxlWCxcbiAgICByaXBwbGVZLFxuICAgIHJpcHBsZVNpemUsXG4gICAgaW46IGluUHJvcCxcbiAgICBvbkV4aXRlZCxcbiAgICB0aW1lb3V0XG4gIH0gPSBwcm9wcztcbiAgY29uc3QgW2xlYXZpbmcsIHNldExlYXZpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCByaXBwbGVDbGFzc05hbWUgPSBjbHN4KGNsYXNzTmFtZSwgY2xhc3Nlcy5yaXBwbGUsIGNsYXNzZXMucmlwcGxlVmlzaWJsZSwgcHVsc2F0ZSAmJiBjbGFzc2VzLnJpcHBsZVB1bHNhdGUpO1xuICBjb25zdCByaXBwbGVTdHlsZXMgPSB7XG4gICAgd2lkdGg6IHJpcHBsZVNpemUsXG4gICAgaGVpZ2h0OiByaXBwbGVTaXplLFxuICAgIHRvcDogLShyaXBwbGVTaXplIC8gMikgKyByaXBwbGVZLFxuICAgIGxlZnQ6IC0ocmlwcGxlU2l6ZSAvIDIpICsgcmlwcGxlWFxuICB9O1xuICBjb25zdCBjaGlsZENsYXNzTmFtZSA9IGNsc3goY2xhc3Nlcy5jaGlsZCwgbGVhdmluZyAmJiBjbGFzc2VzLmNoaWxkTGVhdmluZywgcHVsc2F0ZSAmJiBjbGFzc2VzLmNoaWxkUHVsc2F0ZSk7XG4gIGlmICghaW5Qcm9wICYmICFsZWF2aW5nKSB7XG4gICAgc2V0TGVhdmluZyh0cnVlKTtcbiAgfVxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaW5Qcm9wICYmIG9uRXhpdGVkICE9IG51bGwpIHtcbiAgICAgIC8vIHJlYWN0LXRyYW5zaXRpb24tZ3JvdXAjb25FeGl0ZWRcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQob25FeGl0ZWQsIHRpbWVvdXQpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbb25FeGl0ZWQsIGluUHJvcCwgdGltZW91dF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IHJpcHBsZUNsYXNzTmFtZSxcbiAgICBzdHlsZTogcmlwcGxlU3R5bGVzLFxuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChcInNwYW5cIiwge1xuICAgICAgY2xhc3NOYW1lOiBjaGlsZENsYXNzTmFtZVxuICAgIH0pXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gUmlwcGxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICogU2VlIFtDU1MgQVBJXSgjY3NzKSBiZWxvdyBmb3IgbW9yZSBkZXRhaWxzLlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlIC0gaW5qZWN0ZWQgZnJvbSBUcmFuc2l0aW9uR3JvdXBcbiAgICovXG4gIGluOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIEBpZ25vcmUgLSBpbmplY3RlZCBmcm9tIFRyYW5zaXRpb25Hcm91cFxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIHB1bHNhdGVzLCB0eXBpY2FsbHkgaW5kaWNhdGluZyB0aGUga2V5Ym9hcmQgZm9jdXMgc3RhdGUgb2YgYW4gZWxlbWVudC5cbiAgICovXG4gIHB1bHNhdGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogRGlhbWV0ZXIgb2YgdGhlIHJpcHBsZS5cbiAgICovXG4gIHJpcHBsZVNpemU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSByaXBwbGUgY2VudGVyLlxuICAgKi9cbiAgcmlwcGxlWDogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIFZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSByaXBwbGUgY2VudGVyLlxuICAgKi9cbiAgcmlwcGxlWTogUHJvcFR5cGVzLm51bWJlcixcbiAgLyoqXG4gICAqIGV4aXQgZGVsYXlcbiAgICovXG4gIHRpbWVvdXQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IFJpcHBsZTsiLCJjb25zdCBkZWZhdWx0R2VuZXJhdG9yID0gY29tcG9uZW50TmFtZSA9PiBjb21wb25lbnROYW1lO1xuY29uc3QgY3JlYXRlQ2xhc3NOYW1lR2VuZXJhdG9yID0gKCkgPT4ge1xuICBsZXQgZ2VuZXJhdGUgPSBkZWZhdWx0R2VuZXJhdG9yO1xuICByZXR1cm4ge1xuICAgIGNvbmZpZ3VyZShnZW5lcmF0b3IpIHtcbiAgICAgIGdlbmVyYXRlID0gZ2VuZXJhdG9yO1xuICAgIH0sXG4gICAgZ2VuZXJhdGUoY29tcG9uZW50TmFtZSkge1xuICAgICAgcmV0dXJuIGdlbmVyYXRlKGNvbXBvbmVudE5hbWUpO1xuICAgIH0sXG4gICAgcmVzZXQoKSB7XG4gICAgICBnZW5lcmF0ZSA9IGRlZmF1bHRHZW5lcmF0b3I7XG4gICAgfVxuICB9O1xufTtcbmNvbnN0IENsYXNzTmFtZUdlbmVyYXRvciA9IGNyZWF0ZUNsYXNzTmFtZUdlbmVyYXRvcigpO1xuZXhwb3J0IGRlZmF1bHQgQ2xhc3NOYW1lR2VuZXJhdG9yOyIsImltcG9ydCBDbGFzc05hbWVHZW5lcmF0b3IgZnJvbSAnLi4vQ2xhc3NOYW1lR2VuZXJhdG9yJztcbmNvbnN0IGdsb2JhbFN0YXRlQ2xhc3Nlc01hcHBpbmcgPSB7XG4gIGFjdGl2ZTogJ2FjdGl2ZScsXG4gIGNoZWNrZWQ6ICdjaGVja2VkJyxcbiAgY29tcGxldGVkOiAnY29tcGxldGVkJyxcbiAgZGlzYWJsZWQ6ICdkaXNhYmxlZCcsXG4gIHJlYWRPbmx5OiAncmVhZE9ubHknLFxuICBlcnJvcjogJ2Vycm9yJyxcbiAgZXhwYW5kZWQ6ICdleHBhbmRlZCcsXG4gIGZvY3VzZWQ6ICdmb2N1c2VkJyxcbiAgZm9jdXNWaXNpYmxlOiAnZm9jdXNWaXNpYmxlJyxcbiAgcmVxdWlyZWQ6ICdyZXF1aXJlZCcsXG4gIHNlbGVjdGVkOiAnc2VsZWN0ZWQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoY29tcG9uZW50TmFtZSwgc2xvdCwgZ2xvYmFsU3RhdGVQcmVmaXggPSAnTXVpJykge1xuICBjb25zdCBnbG9iYWxTdGF0ZUNsYXNzID0gZ2xvYmFsU3RhdGVDbGFzc2VzTWFwcGluZ1tzbG90XTtcbiAgcmV0dXJuIGdsb2JhbFN0YXRlQ2xhc3MgPyBgJHtnbG9iYWxTdGF0ZVByZWZpeH0tJHtnbG9iYWxTdGF0ZUNsYXNzfWAgOiBgJHtDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGUoY29tcG9uZW50TmFtZSl9LSR7c2xvdH1gO1xufSIsImltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKGNvbXBvbmVudE5hbWUsIHNsb3RzLCBnbG9iYWxTdGF0ZVByZWZpeCA9ICdNdWknKSB7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBzbG90cy5mb3JFYWNoKHNsb3QgPT4ge1xuICAgIHJlc3VsdFtzbG90XSA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzKGNvbXBvbmVudE5hbWUsIHNsb3QsIGdsb2JhbFN0YXRlUHJlZml4KTtcbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvdWNoUmlwcGxlVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUb3VjaFJpcHBsZScsIHNsb3QpO1xufVxuY29uc3QgdG91Y2hSaXBwbGVDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVG91Y2hSaXBwbGUnLCBbJ3Jvb3QnLCAncmlwcGxlJywgJ3JpcHBsZVZpc2libGUnLCAncmlwcGxlUHVsc2F0ZScsICdjaGlsZCcsICdjaGlsZExlYXZpbmcnLCAnY2hpbGRQdWxzYXRlJ10pO1xuZXhwb3J0IGRlZmF1bHQgdG91Y2hSaXBwbGVDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNlbnRlclwiLCBcImNsYXNzZXNcIiwgXCJjbGFzc05hbWVcIl07XG5sZXQgXyA9IHQgPT4gdCxcbiAgX3QsXG4gIF90MixcbiAgX3QzLFxuICBfdDQ7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNpdGlvbkdyb3VwIH0gZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGtleWZyYW1lcyB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgUmlwcGxlIGZyb20gJy4vUmlwcGxlJztcbmltcG9ydCB0b3VjaFJpcHBsZUNsYXNzZXMgZnJvbSAnLi90b3VjaFJpcHBsZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IERVUkFUSU9OID0gNTUwO1xuZXhwb3J0IGNvbnN0IERFTEFZX1JJUFBMRSA9IDgwO1xuY29uc3QgZW50ZXJLZXlmcmFtZSA9IGtleWZyYW1lcyhfdCB8fCAoX3QgPSBfYFxuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwKTtcbiAgICBvcGFjaXR5OiAwLjE7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIG9wYWNpdHk6IDAuMztcbiAgfVxuYCkpO1xuY29uc3QgZXhpdEtleWZyYW1lID0ga2V5ZnJhbWVzKF90MiB8fCAoX3QyID0gX2BcbiAgMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5gKSk7XG5jb25zdCBwdWxzYXRlS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QzIHx8IChfdDMgPSBfYFxuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuXG4gIDUwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjkyKTtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbmApKTtcbmV4cG9ydCBjb25zdCBUb3VjaFJpcHBsZVJvb3QgPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlUb3VjaFJpcHBsZScsXG4gIHNsb3Q6ICdSb290J1xufSkoe1xuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogMCxcbiAgdG9wOiAwLFxuICByaWdodDogMCxcbiAgYm90dG9tOiAwLFxuICBsZWZ0OiAwLFxuICBib3JkZXJSYWRpdXM6ICdpbmhlcml0J1xufSk7XG5cbi8vIFRoaXMgYHN0eWxlZCgpYCBmdW5jdGlvbiBpbnZva2VzIGtleWZyYW1lcy4gYHN0eWxlZC1jb21wb25lbnRzYCBvbmx5IHN1cHBvcnRzIGtleWZyYW1lc1xuLy8gaW4gc3RyaW5nIHRlbXBsYXRlcy4gRG8gbm90IGNvbnZlcnQgdGhlc2Ugc3R5bGVzIGluIEpTIG9iamVjdCBhcyBpdCB3aWxsIGJyZWFrLlxuZXhwb3J0IGNvbnN0IFRvdWNoUmlwcGxlUmlwcGxlID0gc3R5bGVkKFJpcHBsZSwge1xuICBuYW1lOiAnTXVpVG91Y2hSaXBwbGUnLFxuICBzbG90OiAnUmlwcGxlJ1xufSkoX3Q0IHx8IChfdDQgPSBfYFxuICBvcGFjaXR5OiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgJi4kezB9IHtcbiAgICBvcGFjaXR5OiAwLjM7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBhbmltYXRpb24tbmFtZTogJHswfTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246ICR7MH1tcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkezB9O1xuICB9XG5cbiAgJi4kezB9IHtcbiAgICBhbmltYXRpb24tZHVyYXRpb246ICR7MH1tcztcbiAgfVxuXG4gICYgLiR7MH0ge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBjdXJyZW50Q29sb3I7XG4gIH1cblxuICAmIC4kezB9IHtcbiAgICBvcGFjaXR5OiAwO1xuICAgIGFuaW1hdGlvbi1uYW1lOiAkezB9O1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJHswfW1zO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR7MH07XG4gIH1cblxuICAmIC4kezB9IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgLyogQG5vZmxpcCAqL1xuICAgIGxlZnQ6IDBweDtcbiAgICB0b3A6IDA7XG4gICAgYW5pbWF0aW9uLW5hbWU6ICR7MH07XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAyNTAwbXM7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHswfTtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiBpbmZpbml0ZTtcbiAgICBhbmltYXRpb24tZGVsYXk6IDIwMG1zO1xuICB9XG5gKSwgdG91Y2hSaXBwbGVDbGFzc2VzLnJpcHBsZVZpc2libGUsIGVudGVyS2V5ZnJhbWUsIERVUkFUSU9OLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCwgdG91Y2hSaXBwbGVDbGFzc2VzLnJpcHBsZVB1bHNhdGUsICh7XG4gIHRoZW1lXG59KSA9PiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zaG9ydGVyLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGQsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZExlYXZpbmcsIGV4aXRLZXlmcmFtZSwgRFVSQVRJT04sICh7XG4gIHRoZW1lXG59KSA9PiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZUluT3V0LCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRQdWxzYXRlLCBwdWxzYXRlS2V5ZnJhbWUsICh7XG4gIHRoZW1lXG59KSA9PiB0aGVtZS50cmFuc2l0aW9ucy5lYXNpbmcuZWFzZUluT3V0KTtcblxuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICpcbiAqIFRPRE8gdjU6IE1ha2UgcHJpdmF0ZVxuICovXG5jb25zdCBUb3VjaFJpcHBsZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFRvdWNoUmlwcGxlKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlUb3VjaFJpcHBsZSdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNlbnRlcjogY2VudGVyUHJvcCA9IGZhbHNlLFxuICAgICAgY2xhc3NlcyA9IHt9LFxuICAgICAgY2xhc3NOYW1lXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IFtyaXBwbGVzLCBzZXRSaXBwbGVzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgbmV4dEtleSA9IFJlYWN0LnVzZVJlZigwKTtcbiAgY29uc3QgcmlwcGxlQ2FsbGJhY2sgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJpcHBsZUNhbGxiYWNrLmN1cnJlbnQpIHtcbiAgICAgIHJpcHBsZUNhbGxiYWNrLmN1cnJlbnQoKTtcbiAgICAgIHJpcHBsZUNhbGxiYWNrLmN1cnJlbnQgPSBudWxsO1xuICAgIH1cbiAgfSwgW3JpcHBsZXNdKTtcblxuICAvLyBVc2VkIHRvIGZpbHRlciBvdXQgbW91c2UgZW11bGF0ZWQgZXZlbnRzIG9uIG1vYmlsZS5cbiAgY29uc3QgaWdub3JpbmdNb3VzZURvd24gPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAvLyBXZSB1c2UgYSB0aW1lciBpbiBvcmRlciB0byBvbmx5IHNob3cgdGhlIHJpcHBsZXMgZm9yIHRvdWNoIFwiY2xpY2tcIiBsaWtlIGV2ZW50cy5cbiAgLy8gV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IHRoZSByaXBwbGUgZm9yIHRvdWNoIHNjcm9sbCBldmVudHMuXG4gIGNvbnN0IHN0YXJ0VGltZXIgPSBSZWFjdC51c2VSZWYoMCk7XG5cbiAgLy8gVGhpcyBpcyB0aGUgaG9vayBjYWxsZWQgb25jZSB0aGUgcHJldmlvdXMgdGltZW91dCBpcyByZWFkeS5cbiAgY29uc3Qgc3RhcnRUaW1lckNvbW1pdCA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoc3RhcnRUaW1lci5jdXJyZW50KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChzdGFydFRpbWVyLmN1cnJlbnQpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcbiAgY29uc3Qgc3RhcnRDb21taXQgPSBSZWFjdC51c2VDYWxsYmFjayhwYXJhbXMgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHB1bHNhdGUsXG4gICAgICByaXBwbGVYLFxuICAgICAgcmlwcGxlWSxcbiAgICAgIHJpcHBsZVNpemUsXG4gICAgICBjYlxuICAgIH0gPSBwYXJhbXM7XG4gICAgc2V0UmlwcGxlcyhvbGRSaXBwbGVzID0+IFsuLi5vbGRSaXBwbGVzLCAvKiNfX1BVUkVfXyovX2pzeChUb3VjaFJpcHBsZVJpcHBsZSwge1xuICAgICAgY2xhc3Nlczoge1xuICAgICAgICByaXBwbGU6IGNsc3goY2xhc3Nlcy5yaXBwbGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGUpLFxuICAgICAgICByaXBwbGVWaXNpYmxlOiBjbHN4KGNsYXNzZXMucmlwcGxlVmlzaWJsZSwgdG91Y2hSaXBwbGVDbGFzc2VzLnJpcHBsZVZpc2libGUpLFxuICAgICAgICByaXBwbGVQdWxzYXRlOiBjbHN4KGNsYXNzZXMucmlwcGxlUHVsc2F0ZSwgdG91Y2hSaXBwbGVDbGFzc2VzLnJpcHBsZVB1bHNhdGUpLFxuICAgICAgICBjaGlsZDogY2xzeChjbGFzc2VzLmNoaWxkLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGQpLFxuICAgICAgICBjaGlsZExlYXZpbmc6IGNsc3goY2xhc3Nlcy5jaGlsZExlYXZpbmcsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZExlYXZpbmcpLFxuICAgICAgICBjaGlsZFB1bHNhdGU6IGNsc3goY2xhc3Nlcy5jaGlsZFB1bHNhdGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5jaGlsZFB1bHNhdGUpXG4gICAgICB9LFxuICAgICAgdGltZW91dDogRFVSQVRJT04sXG4gICAgICBwdWxzYXRlOiBwdWxzYXRlLFxuICAgICAgcmlwcGxlWDogcmlwcGxlWCxcbiAgICAgIHJpcHBsZVk6IHJpcHBsZVksXG4gICAgICByaXBwbGVTaXplOiByaXBwbGVTaXplXG4gICAgfSwgbmV4dEtleS5jdXJyZW50KV0pO1xuICAgIG5leHRLZXkuY3VycmVudCArPSAxO1xuICAgIHJpcHBsZUNhbGxiYWNrLmN1cnJlbnQgPSBjYjtcbiAgfSwgW2NsYXNzZXNdKTtcbiAgY29uc3Qgc3RhcnQgPSBSZWFjdC51c2VDYWxsYmFjaygoZXZlbnQgPSB7fSwgb3B0aW9ucyA9IHt9LCBjYiA9ICgpID0+IHt9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgcHVsc2F0ZSA9IGZhbHNlLFxuICAgICAgY2VudGVyID0gY2VudGVyUHJvcCB8fCBvcHRpb25zLnB1bHNhdGUsXG4gICAgICBmYWtlRWxlbWVudCA9IGZhbHNlIC8vIEZvciB0ZXN0IHB1cnBvc2VzXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgaWYgKChldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT09ICdtb3VzZWRvd24nICYmIGlnbm9yaW5nTW91c2VEb3duLmN1cnJlbnQpIHtcbiAgICAgIGlnbm9yaW5nTW91c2VEb3duLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKChldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT09ICd0b3VjaHN0YXJ0Jykge1xuICAgICAgaWdub3JpbmdNb3VzZURvd24uY3VycmVudCA9IHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGVsZW1lbnQgPSBmYWtlRWxlbWVudCA/IG51bGwgOiBjb250YWluZXIuY3VycmVudDtcbiAgICBjb25zdCByZWN0ID0gZWxlbWVudCA/IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMCxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuXG4gICAgLy8gR2V0IHRoZSBzaXplIG9mIHRoZSByaXBwbGVcbiAgICBsZXQgcmlwcGxlWDtcbiAgICBsZXQgcmlwcGxlWTtcbiAgICBsZXQgcmlwcGxlU2l6ZTtcbiAgICBpZiAoY2VudGVyIHx8IGV2ZW50ID09PSB1bmRlZmluZWQgfHwgZXZlbnQuY2xpZW50WCA9PT0gMCAmJiBldmVudC5jbGllbnRZID09PSAwIHx8ICFldmVudC5jbGllbnRYICYmICFldmVudC50b3VjaGVzKSB7XG4gICAgICByaXBwbGVYID0gTWF0aC5yb3VuZChyZWN0LndpZHRoIC8gMik7XG4gICAgICByaXBwbGVZID0gTWF0aC5yb3VuZChyZWN0LmhlaWdodCAvIDIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNsaWVudFgsXG4gICAgICAgIGNsaWVudFlcbiAgICAgIH0gPSBldmVudC50b3VjaGVzICYmIGV2ZW50LnRvdWNoZXMubGVuZ3RoID4gMCA/IGV2ZW50LnRvdWNoZXNbMF0gOiBldmVudDtcbiAgICAgIHJpcHBsZVggPSBNYXRoLnJvdW5kKGNsaWVudFggLSByZWN0LmxlZnQpO1xuICAgICAgcmlwcGxlWSA9IE1hdGgucm91bmQoY2xpZW50WSAtIHJlY3QudG9wKTtcbiAgICB9XG4gICAgaWYgKGNlbnRlcikge1xuICAgICAgcmlwcGxlU2l6ZSA9IE1hdGguc3FydCgoMiAqIHJlY3Qud2lkdGggKiogMiArIHJlY3QuaGVpZ2h0ICoqIDIpIC8gMyk7XG5cbiAgICAgIC8vIEZvciBzb21lIHJlYXNvbiB0aGUgYW5pbWF0aW9uIGlzIGJyb2tlbiBvbiBNb2JpbGUgQ2hyb21lIGlmIHRoZSBzaXplIGlzIGV2ZW4uXG4gICAgICBpZiAocmlwcGxlU2l6ZSAlIDIgPT09IDApIHtcbiAgICAgICAgcmlwcGxlU2l6ZSArPSAxO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzaXplWCA9IE1hdGgubWF4KE1hdGguYWJzKChlbGVtZW50ID8gZWxlbWVudC5jbGllbnRXaWR0aCA6IDApIC0gcmlwcGxlWCksIHJpcHBsZVgpICogMiArIDI7XG4gICAgICBjb25zdCBzaXplWSA9IE1hdGgubWF4KE1hdGguYWJzKChlbGVtZW50ID8gZWxlbWVudC5jbGllbnRIZWlnaHQgOiAwKSAtIHJpcHBsZVkpLCByaXBwbGVZKSAqIDIgKyAyO1xuICAgICAgcmlwcGxlU2l6ZSA9IE1hdGguc3FydChzaXplWCAqKiAyICsgc2l6ZVkgKiogMik7XG4gICAgfVxuXG4gICAgLy8gVG91Y2hlIGRldmljZXNcbiAgICBpZiAoZXZlbnQgIT0gbnVsbCAmJiBldmVudC50b3VjaGVzKSB7XG4gICAgICAvLyBjaGVjayB0aGF0IHRoaXMgaXNuJ3QgYW5vdGhlciB0b3VjaHN0YXJ0IGR1ZSB0byBtdWx0aXRvdWNoXG4gICAgICAvLyBvdGhlcndpc2Ugd2Ugd2lsbCBvbmx5IGNsZWFyIGEgc2luZ2xlIHRpbWVyIHdoZW4gdW5tb3VudGluZyB3aGlsZSB0d29cbiAgICAgIC8vIGFyZSBydW5uaW5nXG4gICAgICBpZiAoc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIC8vIFByZXBhcmUgdGhlIHJpcHBsZSBlZmZlY3QuXG4gICAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9ICgpID0+IHtcbiAgICAgICAgICBzdGFydENvbW1pdCh7XG4gICAgICAgICAgICBwdWxzYXRlLFxuICAgICAgICAgICAgcmlwcGxlWCxcbiAgICAgICAgICAgIHJpcHBsZVksXG4gICAgICAgICAgICByaXBwbGVTaXplLFxuICAgICAgICAgICAgY2JcbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gRGVsYXkgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcmlwcGxlIGVmZmVjdC5cbiAgICAgICAgc3RhcnRUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXJ0VGltZXJDb21taXQuY3VycmVudCkge1xuICAgICAgICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50KCk7XG4gICAgICAgICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSwgREVMQVlfUklQUExFKTsgLy8gV2UgaGF2ZSB0byBtYWtlIGEgdHJhZGVvZmYgd2l0aCB0aGlzIHZhbHVlLlxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydENvbW1pdCh7XG4gICAgICAgIHB1bHNhdGUsXG4gICAgICAgIHJpcHBsZVgsXG4gICAgICAgIHJpcHBsZVksXG4gICAgICAgIHJpcHBsZVNpemUsXG4gICAgICAgIGNiXG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtjZW50ZXJQcm9wLCBzdGFydENvbW1pdF0pO1xuICBjb25zdCBwdWxzYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHN0YXJ0KHt9LCB7XG4gICAgICBwdWxzYXRlOiB0cnVlXG4gICAgfSk7XG4gIH0sIFtzdGFydF0pO1xuICBjb25zdCBzdG9wID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50LCBjYikgPT4ge1xuICAgIGNsZWFyVGltZW91dChzdGFydFRpbWVyLmN1cnJlbnQpO1xuXG4gICAgLy8gVGhlIHRvdWNoIGludGVyYWN0aW9uIG9jY3VycyB0b28gcXVpY2tseS5cbiAgICAvLyBXZSBzdGlsbCB3YW50IHRvIHNob3cgcmlwcGxlIGVmZmVjdC5cbiAgICBpZiAoKGV2ZW50ID09IG51bGwgPyB2b2lkIDAgOiBldmVudC50eXBlKSA9PT0gJ3RvdWNoZW5kJyAmJiBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQpIHtcbiAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCgpO1xuICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID0gbnVsbDtcbiAgICAgIHN0YXJ0VGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzdG9wKGV2ZW50LCBjYik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID0gbnVsbDtcbiAgICBzZXRSaXBwbGVzKG9sZFJpcHBsZXMgPT4ge1xuICAgICAgaWYgKG9sZFJpcHBsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gb2xkUmlwcGxlcy5zbGljZSgxKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvbGRSaXBwbGVzO1xuICAgIH0pO1xuICAgIHJpcHBsZUNhbGxiYWNrLmN1cnJlbnQgPSBjYjtcbiAgfSwgW10pO1xuICBSZWFjdC51c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gKHtcbiAgICBwdWxzYXRlLFxuICAgIHN0YXJ0LFxuICAgIHN0b3BcbiAgfSksIFtwdWxzYXRlLCBzdGFydCwgc3RvcF0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVG91Y2hSaXBwbGVSb290LCBfZXh0ZW5kcyh7XG4gICAgY2xhc3NOYW1lOiBjbHN4KHRvdWNoUmlwcGxlQ2xhc3Nlcy5yb290LCBjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiBjb250YWluZXJcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkdyb3VwLCB7XG4gICAgICBjb21wb25lbnQ6IG51bGwsXG4gICAgICBleGl0OiB0cnVlLFxuICAgICAgY2hpbGRyZW46IHJpcHBsZXNcbiAgICB9KVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRvdWNoUmlwcGxlLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBzdGFydHMgYXQgdGhlIGNlbnRlciBvZiB0aGUgY29tcG9uZW50XG4gICAqIHJhdGhlciB0aGFuIGF0IHRoZSBwb2ludCBvZiBpbnRlcmFjdGlvbi5cbiAgICovXG4gIGNlbnRlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIFNlZSBbQ1NTIEFQSV0oI2NzcykgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUb3VjaFJpcHBsZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQnV0dG9uQmFzZScsIHNsb3QpO1xufVxuY29uc3QgYnV0dG9uQmFzZUNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlCdXR0b25CYXNlJywgWydyb290JywgJ2Rpc2FibGVkJywgJ2ZvY3VzVmlzaWJsZSddKTtcbmV4cG9ydCBkZWZhdWx0IGJ1dHRvbkJhc2VDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFjdGlvblwiLCBcImNlbnRlclJpcHBsZVwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlUmlwcGxlXCIsIFwiZGlzYWJsZVRvdWNoUmlwcGxlXCIsIFwiZm9jdXNSaXBwbGVcIiwgXCJmb2N1c1Zpc2libGVDbGFzc05hbWVcIiwgXCJMaW5rQ29tcG9uZW50XCIsIFwib25CbHVyXCIsIFwib25DbGlja1wiLCBcIm9uQ29udGV4dE1lbnVcIiwgXCJvbkRyYWdMZWF2ZVwiLCBcIm9uRm9jdXNcIiwgXCJvbkZvY3VzVmlzaWJsZVwiLCBcIm9uS2V5RG93blwiLCBcIm9uS2V5VXBcIiwgXCJvbk1vdXNlRG93blwiLCBcIm9uTW91c2VMZWF2ZVwiLCBcIm9uTW91c2VVcFwiLCBcIm9uVG91Y2hFbmRcIiwgXCJvblRvdWNoTW92ZVwiLCBcIm9uVG91Y2hTdGFydFwiLCBcInRhYkluZGV4XCIsIFwiVG91Y2hSaXBwbGVQcm9wc1wiLCBcInRvdWNoUmlwcGxlUmVmXCIsIFwidHlwZVwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGVsZW1lbnRUeXBlQWNjZXB0aW5nUmVmLCByZWZUeXBlIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9jb21wb3NlQ2xhc3NlcyBhcyBjb21wb3NlQ2xhc3NlcyB9IGZyb20gJ0BtdWkvYmFzZS9jb21wb3NlQ2xhc3Nlcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZUZvcmtSZWYgZnJvbSAnLi4vdXRpbHMvdXNlRm9ya1JlZic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICcuLi91dGlscy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB1c2VJc0ZvY3VzVmlzaWJsZSBmcm9tICcuLi91dGlscy91c2VJc0ZvY3VzVmlzaWJsZSc7XG5pbXBvcnQgVG91Y2hSaXBwbGUgZnJvbSAnLi9Ub3VjaFJpcHBsZSc7XG5pbXBvcnQgYnV0dG9uQmFzZUNsYXNzZXMsIHsgZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyB9IGZyb20gJy4vYnV0dG9uQmFzZUNsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBkaXNhYmxlZCxcbiAgICBmb2N1c1Zpc2libGUsXG4gICAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lLFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGRpc2FibGVkICYmICdkaXNhYmxlZCcsIGZvY3VzVmlzaWJsZSAmJiAnZm9jdXNWaXNpYmxlJ11cbiAgfTtcbiAgY29uc3QgY29tcG9zZWRDbGFzc2VzID0gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICBpZiAoZm9jdXNWaXNpYmxlICYmIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSkge1xuICAgIGNvbXBvc2VkQ2xhc3Nlcy5yb290ICs9IGAgJHtmb2N1c1Zpc2libGVDbGFzc05hbWV9YDtcbiAgfVxuICByZXR1cm4gY29tcG9zZWRDbGFzc2VzO1xufTtcbmV4cG9ydCBjb25zdCBCdXR0b25CYXNlUm9vdCA9IHN0eWxlZCgnYnV0dG9uJywge1xuICBuYW1lOiAnTXVpQnV0dG9uQmFzZScsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMucm9vdFxufSkoe1xuICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gIFdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gIC8vIFJlc2V0IGRlZmF1bHQgdmFsdWVcbiAgLy8gV2UgZGlzYWJsZSB0aGUgZm9jdXMgcmluZyBmb3IgbW91c2UsIHRvdWNoIGFuZCBrZXlib2FyZCB1c2Vycy5cbiAgb3V0bGluZTogMCxcbiAgYm9yZGVyOiAwLFxuICBtYXJnaW46IDAsXG4gIC8vIFJlbW92ZSB0aGUgbWFyZ2luIGluIFNhZmFyaVxuICBib3JkZXJSYWRpdXM6IDAsXG4gIHBhZGRpbmc6IDAsXG4gIC8vIFJlbW92ZSB0aGUgcGFkZGluZyBpbiBGaXJlZm94XG4gIGN1cnNvcjogJ3BvaW50ZXInLFxuICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxuICBNb3pBcHBlYXJhbmNlOiAnbm9uZScsXG4gIC8vIFJlc2V0XG4gIFdlYmtpdEFwcGVhcmFuY2U6ICdub25lJyxcbiAgLy8gUmVzZXRcbiAgdGV4dERlY29yYXRpb246ICdub25lJyxcbiAgLy8gU28gd2UgdGFrZSBwcmVjZWRlbnQgb3ZlciB0aGUgc3R5bGUgb2YgYSBuYXRpdmUgPGEgLz4gZWxlbWVudC5cbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgJyY6Oi1tb3otZm9jdXMtaW5uZXInOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdub25lJyAvLyBSZW1vdmUgRmlyZWZveCBkb3R0ZWQgb3V0bGluZS5cbiAgfSxcblxuICBbYCYuJHtidXR0b25CYXNlQ2xhc3Nlcy5kaXNhYmxlZH1gXToge1xuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAvLyBEaXNhYmxlIGxpbmsgaW50ZXJhY3Rpb25zXG4gICAgY3Vyc29yOiAnZGVmYXVsdCdcbiAgfSxcbiAgJ0BtZWRpYSBwcmludCc6IHtcbiAgICBjb2xvckFkanVzdDogJ2V4YWN0J1xuICB9XG59KTtcblxuLyoqXG4gKiBgQnV0dG9uQmFzZWAgY29udGFpbnMgYXMgZmV3IHN0eWxlcyBhcyBwb3NzaWJsZS5cbiAqIEl0IGFpbXMgdG8gYmUgYSBzaW1wbGUgYnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgYnV0dG9uLlxuICogSXQgY29udGFpbnMgYSBsb2FkIG9mIHN0eWxlIHJlc2V0IGFuZCBzb21lIGZvY3VzL3JpcHBsZSBsb2dpYy5cbiAqL1xuY29uc3QgQnV0dG9uQmFzZSA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIEJ1dHRvbkJhc2UoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUJ1dHRvbkJhc2UnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBhY3Rpb24sXG4gICAgICBjZW50ZXJSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29tcG9uZW50ID0gJ2J1dHRvbicsXG4gICAgICBkaXNhYmxlZCA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVJpcHBsZSA9IGZhbHNlLFxuICAgICAgZGlzYWJsZVRvdWNoUmlwcGxlID0gZmFsc2UsXG4gICAgICBmb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgTGlua0NvbXBvbmVudCA9ICdhJyxcbiAgICAgIG9uQmx1cixcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBvbkNvbnRleHRNZW51LFxuICAgICAgb25EcmFnTGVhdmUsXG4gICAgICBvbkZvY3VzLFxuICAgICAgb25Gb2N1c1Zpc2libGUsXG4gICAgICBvbktleURvd24sXG4gICAgICBvbktleVVwLFxuICAgICAgb25Nb3VzZURvd24sXG4gICAgICBvbk1vdXNlTGVhdmUsXG4gICAgICBvbk1vdXNlVXAsXG4gICAgICBvblRvdWNoRW5kLFxuICAgICAgb25Ub3VjaE1vdmUsXG4gICAgICBvblRvdWNoU3RhcnQsXG4gICAgICB0YWJJbmRleCA9IDAsXG4gICAgICBUb3VjaFJpcHBsZVByb3BzLFxuICAgICAgdG91Y2hSaXBwbGVSZWYsXG4gICAgICB0eXBlXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IGJ1dHRvblJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgcmlwcGxlUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVSaXBwbGVSZWYgPSB1c2VGb3JrUmVmKHJpcHBsZVJlZiwgdG91Y2hSaXBwbGVSZWYpO1xuICBjb25zdCB7XG4gICAgaXNGb2N1c1Zpc2libGVSZWYsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXNWaXNpYmxlLFxuICAgIG9uQmx1cjogaGFuZGxlQmx1clZpc2libGUsXG4gICAgcmVmOiBmb2N1c1Zpc2libGVSZWZcbiAgfSA9IHVzZUlzRm9jdXNWaXNpYmxlKCk7XG4gIGNvbnN0IFtmb2N1c1Zpc2libGUsIHNldEZvY3VzVmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGlmIChkaXNhYmxlZCAmJiBmb2N1c1Zpc2libGUpIHtcbiAgICBzZXRGb2N1c1Zpc2libGUoZmFsc2UpO1xuICB9XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoYWN0aW9uLCAoKSA9PiAoe1xuICAgIGZvY3VzVmlzaWJsZTogKCkgPT4ge1xuICAgICAgc2V0Rm9jdXNWaXNpYmxlKHRydWUpO1xuICAgICAgYnV0dG9uUmVmLmN1cnJlbnQuZm9jdXMoKTtcbiAgICB9XG4gIH0pLCBbXSk7XG4gIGNvbnN0IFttb3VudGVkU3RhdGUsIHNldE1vdW50ZWRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TW91bnRlZFN0YXRlKHRydWUpO1xuICB9LCBbXSk7XG4gIGNvbnN0IGVuYWJsZVRvdWNoUmlwcGxlID0gbW91bnRlZFN0YXRlICYmICFkaXNhYmxlUmlwcGxlICYmICFkaXNhYmxlZDtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9jdXNWaXNpYmxlICYmIGZvY3VzUmlwcGxlICYmICFkaXNhYmxlUmlwcGxlICYmIG1vdW50ZWRTdGF0ZSkge1xuICAgICAgcmlwcGxlUmVmLmN1cnJlbnQucHVsc2F0ZSgpO1xuICAgIH1cbiAgfSwgW2Rpc2FibGVSaXBwbGUsIGZvY3VzUmlwcGxlLCBmb2N1c1Zpc2libGUsIG1vdW50ZWRTdGF0ZV0pO1xuICBmdW5jdGlvbiB1c2VSaXBwbGVIYW5kbGVyKHJpcHBsZUFjdGlvbiwgZXZlbnRDYWxsYmFjaywgc2tpcFJpcHBsZUFjdGlvbiA9IGRpc2FibGVUb3VjaFJpcHBsZSkge1xuICAgIHJldHVybiB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudENhbGxiYWNrKSB7XG4gICAgICAgIGV2ZW50Q2FsbGJhY2soZXZlbnQpO1xuICAgICAgfVxuICAgICAgY29uc3QgaWdub3JlID0gc2tpcFJpcHBsZUFjdGlvbjtcbiAgICAgIGlmICghaWdub3JlICYmIHJpcHBsZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50W3JpcHBsZUFjdGlvbl0oZXZlbnQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gdXNlUmlwcGxlSGFuZGxlcignc3RhcnQnLCBvbk1vdXNlRG93bik7XG4gIGNvbnN0IGhhbmRsZUNvbnRleHRNZW51ID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uQ29udGV4dE1lbnUpO1xuICBjb25zdCBoYW5kbGVEcmFnTGVhdmUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25EcmFnTGVhdmUpO1xuICBjb25zdCBoYW5kbGVNb3VzZVVwID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uTW91c2VVcCk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgZXZlbnQgPT4ge1xuICAgIGlmIChmb2N1c1Zpc2libGUpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChvbk1vdXNlTGVhdmUpIHtcbiAgICAgIG9uTW91c2VMZWF2ZShldmVudCk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlVG91Y2hTdGFydCA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0YXJ0Jywgb25Ub3VjaFN0YXJ0KTtcbiAgY29uc3QgaGFuZGxlVG91Y2hFbmQgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25Ub3VjaEVuZCk7XG4gIGNvbnN0IGhhbmRsZVRvdWNoTW92ZSA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvblRvdWNoTW92ZSk7XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgZXZlbnQgPT4ge1xuICAgIGhhbmRsZUJsdXJWaXNpYmxlKGV2ZW50KTtcbiAgICBpZiAoaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9PT0gZmFsc2UpIHtcbiAgICAgIHNldEZvY3VzVmlzaWJsZShmYWxzZSk7XG4gICAgfVxuICAgIGlmIChvbkJsdXIpIHtcbiAgICAgIG9uQmx1cihldmVudCk7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzc3NjlcbiAgICBpZiAoIWJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICBidXR0b25SZWYuY3VycmVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgfVxuICAgIGhhbmRsZUZvY3VzVmlzaWJsZShldmVudCk7XG4gICAgaWYgKGlzRm9jdXNWaXNpYmxlUmVmLmN1cnJlbnQgPT09IHRydWUpIHtcbiAgICAgIHNldEZvY3VzVmlzaWJsZSh0cnVlKTtcbiAgICAgIGlmIChvbkZvY3VzVmlzaWJsZSkge1xuICAgICAgICBvbkZvY3VzVmlzaWJsZShldmVudCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBpc05vbk5hdGl2ZUJ1dHRvbiA9ICgpID0+IHtcbiAgICBjb25zdCBidXR0b24gPSBidXR0b25SZWYuY3VycmVudDtcbiAgICByZXR1cm4gY29tcG9uZW50ICYmIGNvbXBvbmVudCAhPT0gJ2J1dHRvbicgJiYgIShidXR0b24udGFnTmFtZSA9PT0gJ0EnICYmIGJ1dHRvbi5ocmVmKTtcbiAgfTtcblxuICAvKipcbiAgICogSUUxMSBzaGltIGZvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9yZXBlYXRcbiAgICovXG4gIGNvbnN0IGtleWRvd25SZWYgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gQ2hlY2sgaWYga2V5IGlzIGFscmVhZHkgZG93biB0byBhdm9pZCByZXBlYXRzIGJlaW5nIGNvdW50ZWQgYXMgbXVsdGlwbGUgYWN0aXZhdGlvbnNcbiAgICBpZiAoZm9jdXNSaXBwbGUgJiYgIWtleWRvd25SZWYuY3VycmVudCAmJiBmb2N1c1Zpc2libGUgJiYgcmlwcGxlUmVmLmN1cnJlbnQgJiYgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGtleWRvd25SZWYuY3VycmVudCA9IHRydWU7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5zdG9wKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnN0YXJ0KGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzTm9uTmF0aXZlQnV0dG9uKCkgJiYgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChvbktleURvd24pIHtcbiAgICAgIG9uS2V5RG93bihldmVudCk7XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSBmb3Igbm9uIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc05vbk5hdGl2ZUJ1dHRvbigpICYmIGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAob25DbGljaykge1xuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgIC8vIGNhbGxpbmcgcHJldmVudERlZmF1bHQgaW4ga2V5VXAgb24gYSA8YnV0dG9uPiB3aWxsIG5vdCBkaXNwYXRjaCBhIGNsaWNrIGV2ZW50IGlmIFNwYWNlIGlzIHByZXNzZWRcbiAgICAvLyBodHRwczovL2NvZGVzYW5kYm94LmlvL3MvYnV0dG9uLWtleXVwLXByZXZlbnRkZWZhdWx0LWRuN2YwXG4gICAgaWYgKGZvY3VzUmlwcGxlICYmIGV2ZW50LmtleSA9PT0gJyAnICYmIHJpcHBsZVJlZi5jdXJyZW50ICYmIGZvY3VzVmlzaWJsZSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAga2V5ZG93blJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5zdG9wKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnB1bHNhdGUoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChvbktleVVwKSB7XG4gICAgICBvbktleVVwKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCBhY2Nlc3NpYmlsaXR5IGZvciBub24gaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICBpZiAob25DbGljayAmJiBldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNOb25OYXRpdmVCdXR0b24oKSAmJiBldmVudC5rZXkgPT09ICcgJyAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgb25DbGljayhldmVudCk7XG4gICAgfVxuICB9KTtcbiAgbGV0IENvbXBvbmVudFByb3AgPSBjb21wb25lbnQ7XG4gIGlmIChDb21wb25lbnRQcm9wID09PSAnYnV0dG9uJyAmJiAob3RoZXIuaHJlZiB8fCBvdGhlci50bykpIHtcbiAgICBDb21wb25lbnRQcm9wID0gTGlua0NvbXBvbmVudDtcbiAgfVxuICBjb25zdCBidXR0b25Qcm9wcyA9IHt9O1xuICBpZiAoQ29tcG9uZW50UHJvcCA9PT0gJ2J1dHRvbicpIHtcbiAgICBidXR0b25Qcm9wcy50eXBlID0gdHlwZSA9PT0gdW5kZWZpbmVkID8gJ2J1dHRvbicgOiB0eXBlO1xuICAgIGJ1dHRvblByb3BzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKCFvdGhlci5ocmVmICYmICFvdGhlci50bykge1xuICAgICAgYnV0dG9uUHJvcHMucm9sZSA9ICdidXR0b24nO1xuICAgIH1cbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIGJ1dHRvblByb3BzWydhcmlhLWRpc2FibGVkJ10gPSBkaXNhYmxlZDtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGFuZGxlUmVmID0gdXNlRm9ya1JlZihyZWYsIGZvY3VzVmlzaWJsZVJlZiwgYnV0dG9uUmVmKTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGVuYWJsZVRvdWNoUmlwcGxlICYmICFyaXBwbGVSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUaGUgYGNvbXBvbmVudGAgcHJvcCBwcm92aWRlZCB0byBCdXR0b25CYXNlIGlzIGludmFsaWQuJywgJ1BsZWFzZSBtYWtlIHN1cmUgdGhlIGNoaWxkcmVuIHByb3AgaXMgcmVuZGVyZWQgaW4gdGhpcyBjdXN0b20gY29tcG9uZW50LiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9LCBbZW5hYmxlVG91Y2hSaXBwbGVdKTtcbiAgfVxuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgY2VudGVyUmlwcGxlLFxuICAgIGNvbXBvbmVudCxcbiAgICBkaXNhYmxlZCxcbiAgICBkaXNhYmxlUmlwcGxlLFxuICAgIGRpc2FibGVUb3VjaFJpcHBsZSxcbiAgICBmb2N1c1JpcHBsZSxcbiAgICB0YWJJbmRleCxcbiAgICBmb2N1c1Zpc2libGVcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhCdXR0b25CYXNlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGFzOiBDb21wb25lbnRQcm9wLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICBvbkJsdXI6IGhhbmRsZUJsdXIsXG4gICAgb25DbGljazogb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51OiBoYW5kbGVDb250ZXh0TWVudSxcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1cyxcbiAgICBvbktleURvd246IGhhbmRsZUtleURvd24sXG4gICAgb25LZXlVcDogaGFuZGxlS2V5VXAsXG4gICAgb25Nb3VzZURvd246IGhhbmRsZU1vdXNlRG93bixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gICAgb25Nb3VzZVVwOiBoYW5kbGVNb3VzZVVwLFxuICAgIG9uRHJhZ0xlYXZlOiBoYW5kbGVEcmFnTGVhdmUsXG4gICAgb25Ub3VjaEVuZDogaGFuZGxlVG91Y2hFbmQsXG4gICAgb25Ub3VjaE1vdmU6IGhhbmRsZVRvdWNoTW92ZSxcbiAgICBvblRvdWNoU3RhcnQ6IGhhbmRsZVRvdWNoU3RhcnQsXG4gICAgcmVmOiBoYW5kbGVSZWYsXG4gICAgdGFiSW5kZXg6IGRpc2FibGVkID8gLTEgOiB0YWJJbmRleCxcbiAgICB0eXBlOiB0eXBlXG4gIH0sIGJ1dHRvblByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiBbY2hpbGRyZW4sIGVuYWJsZVRvdWNoUmlwcGxlID9cbiAgICAvKiNfX1BVUkVfXyovXG4gICAgLyogVG91Y2hSaXBwbGUgaXMgb25seSBuZWVkZWQgY2xpZW50LXNpZGUsIHgyIGJvb3N0IG9uIHRoZSBzZXJ2ZXIuICovXG4gICAgX2pzeChUb3VjaFJpcHBsZSwgX2V4dGVuZHMoe1xuICAgICAgcmVmOiBoYW5kbGVSaXBwbGVSZWYsXG4gICAgICBjZW50ZXI6IGNlbnRlclJpcHBsZVxuICAgIH0sIFRvdWNoUmlwcGxlUHJvcHMpKSA6IG51bGxdXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQnV0dG9uQmFzZS5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBBIHJlZiBmb3IgaW1wZXJhdGl2ZSBhY3Rpb25zLlxuICAgKiBJdCBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBgZm9jdXNWaXNpYmxlKClgIGFjdGlvbi5cbiAgICovXG4gIGFjdGlvbjogcmVmVHlwZSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZXMgYXJlIGNlbnRlcmVkLlxuICAgKiBUaGV5IHdvbid0IHN0YXJ0IGF0IHRoZSBjdXJzb3IgaW50ZXJhY3Rpb24gcG9zaXRpb24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBjZW50ZXJSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIE92ZXJyaWRlIG9yIGV4dGVuZCB0aGUgc3R5bGVzIGFwcGxpZWQgdG8gdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgZm9yIHRoZSByb290IG5vZGUuXG4gICAqIEVpdGhlciBhIHN0cmluZyB0byB1c2UgYSBIVE1MIGVsZW1lbnQgb3IgYSBjb21wb25lbnQuXG4gICAqL1xuICBjb21wb25lbnQ6IGVsZW1lbnRUeXBlQWNjZXB0aW5nUmVmLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHRvdWNoIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlVG91Y2hSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgYmFzZSBidXR0b24gd2lsbCBoYXZlIGEga2V5Ym9hcmQgZm9jdXMgcmlwcGxlLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhpcyBwcm9wIGNhbiBoZWxwIGlkZW50aWZ5IHdoaWNoIGVsZW1lbnQgaGFzIGtleWJvYXJkIGZvY3VzLlxuICAgKiBUaGUgY2xhc3MgbmFtZSB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgZWxlbWVudCBnYWlucyB0aGUgZm9jdXMgdGhyb3VnaCBrZXlib2FyZCBpbnRlcmFjdGlvbi5cbiAgICogSXQncyBhIHBvbHlmaWxsIGZvciB0aGUgW0NTUyA6Zm9jdXMtdmlzaWJsZSBzZWxlY3Rvcl0oaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3NlbGVjdG9ycy00LyN0aGUtZm9jdXMtdmlzaWJsZS1wc2V1ZG8pLlxuICAgKiBUaGUgcmF0aW9uYWxlIGZvciB1c2luZyB0aGlzIGZlYXR1cmUgW2lzIGV4cGxhaW5lZCBoZXJlXShodHRwczovL2dpdGh1Yi5jb20vV0lDRy9mb2N1cy12aXNpYmxlL2Jsb2IvSEVBRC9leHBsYWluZXIubWQpLlxuICAgKiBBIFtwb2x5ZmlsbCBjYW4gYmUgdXNlZF0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZSkgdG8gYXBwbHkgYSBgZm9jdXMtdmlzaWJsZWAgY2xhc3MgdG8gb3RoZXIgY29tcG9uZW50c1xuICAgKiBpZiBuZWVkZWQuXG4gICAqL1xuICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBocmVmOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5hbnksXG4gIC8qKlxuICAgKiBUaGUgY29tcG9uZW50IHVzZWQgdG8gcmVuZGVyIGEgbGluayB3aGVuIHRoZSBgaHJlZmAgcHJvcCBpcyBwcm92aWRlZC5cbiAgICogQGRlZmF1bHQgJ2EnXG4gICAqL1xuICBMaW5rQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkNvbnRleHRNZW51OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRHJhZ0xlYXZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uRm9jdXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGZvY3VzZWQgd2l0aCBhIGtleWJvYXJkLlxuICAgKiBXZSB0cmlnZ2VyIGEgYG9uRm9jdXNgIGNhbGxiYWNrIHRvby5cbiAgICovXG4gIG9uRm9jdXNWaXNpYmxlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VEb3duOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uTW91c2VMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbk1vdXNlVXA6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaEVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoTW92ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvblRvdWNoU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAvKipcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBgVG91Y2hSaXBwbGVgIGVsZW1lbnQuXG4gICAqL1xuICBUb3VjaFJpcHBsZVByb3BzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQSByZWYgdGhhdCBwb2ludHMgdG8gdGhlIGBUb3VjaFJpcHBsZWAgZWxlbWVudC5cbiAgICovXG4gIHRvdWNoUmlwcGxlUmVmOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW50OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgcHVsc2F0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHN0YXJ0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgc3RvcDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICAgIH0pXG4gIH0pXSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCdXR0b25CYXNlOyIsImltcG9ydCB7IHVuc3RhYmxlX2NhcGl0YWxpemUgYXMgY2FwaXRhbGl6ZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgY2FwaXRhbGl6ZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFiVXRpbGl0eUNsYXNzKHNsb3QpIHtcbiAgcmV0dXJuIGdlbmVyYXRlVXRpbGl0eUNsYXNzKCdNdWlUYWInLCBzbG90KTtcbn1cbmNvbnN0IHRhYkNsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlUYWInLCBbJ3Jvb3QnLCAnbGFiZWxJY29uJywgJ3RleHRDb2xvckluaGVyaXQnLCAndGV4dENvbG9yUHJpbWFyeScsICd0ZXh0Q29sb3JTZWNvbmRhcnknLCAnc2VsZWN0ZWQnLCAnZGlzYWJsZWQnLCAnZnVsbFdpZHRoJywgJ3dyYXBwZWQnLCAnaWNvbldyYXBwZXInXSk7XG5leHBvcnQgZGVmYXVsdCB0YWJDbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwiZnVsbFdpZHRoXCIsIFwiaWNvblwiLCBcImljb25Qb3NpdGlvblwiLCBcImluZGljYXRvclwiLCBcImxhYmVsXCIsIFwib25DaGFuZ2VcIiwgXCJvbkNsaWNrXCIsIFwib25Gb2N1c1wiLCBcInNlbGVjdGVkXCIsIFwic2VsZWN0aW9uRm9sbG93c0ZvY3VzXCIsIFwidGV4dENvbG9yXCIsIFwidmFsdWVcIiwgXCJ3cmFwcGVkXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IEJ1dHRvbkJhc2UgZnJvbSAnLi4vQnV0dG9uQmFzZSc7XG5pbXBvcnQgY2FwaXRhbGl6ZSBmcm9tICcuLi91dGlscy9jYXBpdGFsaXplJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnLi4vc3R5bGVzL3N0eWxlZCc7XG5pbXBvcnQgdW5zdXBwb3J0ZWRQcm9wIGZyb20gJy4uL3V0aWxzL3Vuc3VwcG9ydGVkUHJvcCc7XG5pbXBvcnQgdGFiQ2xhc3NlcywgeyBnZXRUYWJVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3RhYkNsYXNzZXMnO1xuaW1wb3J0IHsganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgdGV4dENvbG9yLFxuICAgIGZ1bGxXaWR0aCxcbiAgICB3cmFwcGVkLFxuICAgIGljb24sXG4gICAgbGFiZWwsXG4gICAgc2VsZWN0ZWQsXG4gICAgZGlzYWJsZWRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIGljb24gJiYgbGFiZWwgJiYgJ2xhYmVsSWNvbicsIGB0ZXh0Q29sb3Ike2NhcGl0YWxpemUodGV4dENvbG9yKX1gLCBmdWxsV2lkdGggJiYgJ2Z1bGxXaWR0aCcsIHdyYXBwZWQgJiYgJ3dyYXBwZWQnLCBzZWxlY3RlZCAmJiAnc2VsZWN0ZWQnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnXSxcbiAgICBpY29uV3JhcHBlcjogWydpY29uV3JhcHBlciddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VGFiVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBUYWJSb290ID0gc3R5bGVkKEJ1dHRvbkJhc2UsIHtcbiAgbmFtZTogJ011aVRhYicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmxhYmVsICYmIG93bmVyU3RhdGUuaWNvbiAmJiBzdHlsZXMubGFiZWxJY29uLCBzdHlsZXNbYHRleHRDb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnRleHRDb2xvcil9YF0sIG93bmVyU3RhdGUuZnVsbFdpZHRoICYmIHN0eWxlcy5mdWxsV2lkdGgsIG93bmVyU3RhdGUud3JhcHBlZCAmJiBzdHlsZXMud3JhcHBlZF07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7fSwgdGhlbWUudHlwb2dyYXBoeS5idXR0b24sIHtcbiAgbWF4V2lkdGg6IDM2MCxcbiAgbWluV2lkdGg6IDkwLFxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgbWluSGVpZ2h0OiA0OCxcbiAgZmxleFNocmluazogMCxcbiAgcGFkZGluZzogJzEycHggMTZweCcsXG4gIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIHRleHRBbGlnbjogJ2NlbnRlcidcbn0sIG93bmVyU3RhdGUubGFiZWwgJiYge1xuICBmbGV4RGlyZWN0aW9uOiBvd25lclN0YXRlLmljb25Qb3NpdGlvbiA9PT0gJ3RvcCcgfHwgb3duZXJTdGF0ZS5pY29uUG9zaXRpb24gPT09ICdib3R0b20nID8gJ2NvbHVtbicgOiAncm93J1xufSwge1xuICBsaW5lSGVpZ2h0OiAxLjI1XG59LCBvd25lclN0YXRlLmljb24gJiYgb3duZXJTdGF0ZS5sYWJlbCAmJiB7XG4gIG1pbkhlaWdodDogNzIsXG4gIHBhZGRpbmdUb3A6IDksXG4gIHBhZGRpbmdCb3R0b206IDksXG4gIFtgJiA+IC4ke3RhYkNsYXNzZXMuaWNvbldyYXBwZXJ9YF06IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLmljb25Qb3NpdGlvbiA9PT0gJ3RvcCcgJiYge1xuICAgIG1hcmdpbkJvdHRvbTogNlxuICB9LCBvd25lclN0YXRlLmljb25Qb3NpdGlvbiA9PT0gJ2JvdHRvbScgJiYge1xuICAgIG1hcmdpblRvcDogNlxuICB9LCBvd25lclN0YXRlLmljb25Qb3NpdGlvbiA9PT0gJ3N0YXJ0JyAmJiB7XG4gICAgbWFyZ2luUmlnaHQ6IHRoZW1lLnNwYWNpbmcoMSlcbiAgfSwgb3duZXJTdGF0ZS5pY29uUG9zaXRpb24gPT09ICdlbmQnICYmIHtcbiAgICBtYXJnaW5MZWZ0OiB0aGVtZS5zcGFjaW5nKDEpXG4gIH0pXG59LCBvd25lclN0YXRlLnRleHRDb2xvciA9PT0gJ2luaGVyaXQnICYmIHtcbiAgY29sb3I6ICdpbmhlcml0JyxcbiAgb3BhY2l0eTogMC42LFxuICAvLyBzYW1lIG9wYWNpdHkgYXMgdGhlbWUucGFsZXR0ZS50ZXh0LnNlY29uZGFyeVxuICBbYCYuJHt0YWJDbGFzc2VzLnNlbGVjdGVkfWBdOiB7XG4gICAgb3BhY2l0eTogMVxuICB9LFxuICBbYCYuJHt0YWJDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgb3BhY2l0eTogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkT3BhY2l0eVxuICB9XG59LCBvd25lclN0YXRlLnRleHRDb2xvciA9PT0gJ3ByaW1hcnknICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICBbYCYuJHt0YWJDbGFzc2VzLnNlbGVjdGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnByaW1hcnkubWFpblxuICB9LFxuICBbYCYuJHt0YWJDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuZGlzYWJsZWRcbiAgfVxufSwgb3duZXJTdGF0ZS50ZXh0Q29sb3IgPT09ICdzZWNvbmRhcnknICYmIHtcbiAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnRleHQuc2Vjb25kYXJ5LFxuICBbYCYuJHt0YWJDbGFzc2VzLnNlbGVjdGVkfWBdOiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnNlY29uZGFyeS5tYWluXG4gIH0sXG4gIFtgJi4ke3RhYkNsYXNzZXMuZGlzYWJsZWR9YF06IHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5kaXNhYmxlZFxuICB9XG59LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gIGZsZXhTaHJpbms6IDEsXG4gIGZsZXhHcm93OiAxLFxuICBmbGV4QmFzaXM6IDAsXG4gIG1heFdpZHRoOiAnbm9uZSdcbn0sIG93bmVyU3RhdGUud3JhcHBlZCAmJiB7XG4gIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTIpXG59KSk7XG5jb25zdCBUYWIgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUYWIoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVRhYidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlRm9jdXNSaXBwbGUgPSBmYWxzZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBmdWxsV2lkdGgsXG4gICAgICBpY29uOiBpY29uUHJvcCxcbiAgICAgIGljb25Qb3NpdGlvbiA9ICd0b3AnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L3Byb3AtdHlwZXNcbiAgICAgIGluZGljYXRvcixcbiAgICAgIGxhYmVsLFxuICAgICAgb25DaGFuZ2UsXG4gICAgICBvbkNsaWNrLFxuICAgICAgb25Gb2N1cyxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBzZWxlY3RlZCxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgICBzZWxlY3Rpb25Gb2xsb3dzRm9jdXMsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgdGV4dENvbG9yID0gJ2luaGVyaXQnLFxuICAgICAgdmFsdWUsXG4gICAgICB3cmFwcGVkID0gZmFsc2VcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGRpc2FibGVkLFxuICAgIGRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBzZWxlY3RlZCxcbiAgICBpY29uOiAhIWljb25Qcm9wLFxuICAgIGljb25Qb3NpdGlvbixcbiAgICBsYWJlbDogISFsYWJlbCxcbiAgICBmdWxsV2lkdGgsXG4gICAgdGV4dENvbG9yLFxuICAgIHdyYXBwZWRcbiAgfSk7XG4gIGNvbnN0IGNsYXNzZXMgPSB1c2VVdGlsaXR5Q2xhc3Nlcyhvd25lclN0YXRlKTtcbiAgY29uc3QgaWNvbiA9IGljb25Qcm9wICYmIGxhYmVsICYmIC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChpY29uUHJvcCkgPyAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGljb25Qcm9wLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuaWNvbldyYXBwZXIsIGljb25Qcm9wLnByb3BzLmNsYXNzTmFtZSlcbiAgfSkgOiBpY29uUHJvcDtcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSBldmVudCA9PiB7XG4gICAgaWYgKCFzZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgb25DaGFuZ2UoZXZlbnQsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgIG9uQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaGFuZGxlRm9jdXMgPSBldmVudCA9PiB7XG4gICAgaWYgKHNlbGVjdGlvbkZvbGxvd3NGb2N1cyAmJiAhc2VsZWN0ZWQgJiYgb25DaGFuZ2UpIHtcbiAgICAgIG9uQ2hhbmdlKGV2ZW50LCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzKGV2ZW50KTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoVGFiUm9vdCwgX2V4dGVuZHMoe1xuICAgIGZvY3VzUmlwcGxlOiAhZGlzYWJsZUZvY3VzUmlwcGxlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgcm9sZTogXCJ0YWJcIixcbiAgICBcImFyaWEtc2VsZWN0ZWRcIjogc2VsZWN0ZWQsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrLFxuICAgIG9uRm9jdXM6IGhhbmRsZUZvY3VzLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgdGFiSW5kZXg6IHNlbGVjdGVkID8gMCA6IC0xXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFtpY29uUG9zaXRpb24gPT09ICd0b3AnIHx8IGljb25Qb3NpdGlvbiA9PT0gJ3N0YXJ0JyA/IC8qI19fUFVSRV9fKi9fanN4cyhSZWFjdC5GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtpY29uLCBsYWJlbF1cbiAgICB9KSA6IC8qI19fUFVSRV9fKi9fanN4cyhSZWFjdC5GcmFnbWVudCwge1xuICAgICAgY2hpbGRyZW46IFtsYWJlbCwgaWNvbl1cbiAgICB9KSwgaW5kaWNhdG9yXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRhYi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGlzIHByb3AgaXNuJ3Qgc3VwcG9ydGVkLlxuICAgKiBVc2UgdGhlIGBjb21wb25lbnRgIHByb3AgaWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBjaGlsZHJlbiBzdHJ1Y3R1cmUuXG4gICAqL1xuICBjaGlsZHJlbjogdW5zdXBwb3J0ZWRQcm9wLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlICBrZXlib2FyZCBmb2N1cyByaXBwbGUgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlRm9jdXNSaXBwbGU6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcmlwcGxlIGVmZmVjdCBpcyBkaXNhYmxlZC5cbiAgICpcbiAgICog4pqg77iPIFdpdGhvdXQgYSByaXBwbGUgdGhlcmUgaXMgbm8gc3R5bGluZyBmb3IgOmZvY3VzLXZpc2libGUgYnkgZGVmYXVsdC4gQmUgc3VyZVxuICAgKiB0byBoaWdobGlnaHQgdGhlIGVsZW1lbnQgYnkgYXBwbHlpbmcgc2VwYXJhdGUgc3R5bGVzIHdpdGggdGhlIGAuTXVpLWZvY3VzVmlzaWJsZWAgY2xhc3MuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBpY29uIHRvIGRpc3BsYXkuXG4gICAqL1xuICBpY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBpY29uIHJlbGF0aXZlIHRvIHRoZSBsYWJlbC5cbiAgICogQGRlZmF1bHQgJ3RvcCdcbiAgICovXG4gIGljb25Qb3NpdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnYm90dG9tJywgJ2VuZCcsICdzdGFydCcsICd0b3AnXSksXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZWxlbWVudC5cbiAgICovXG4gIGxhYmVsOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBZb3UgY2FuIHByb3ZpZGUgeW91ciBvd24gdmFsdWUuIE90aGVyd2lzZSwgd2UgZmFsbGJhY2sgdG8gdGhlIGNoaWxkIHBvc2l0aW9uIGluZGV4LlxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5hbnksXG4gIC8qKlxuICAgKiBUYWIgbGFiZWxzIGFwcGVhciBpbiBhIHNpbmdsZSByb3cuXG4gICAqIFRoZXkgY2FuIHVzZSBhIHNlY29uZCBsaW5lIGlmIG5lZWRlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHdyYXBwZWQ6IFByb3BUeXBlcy5ib29sXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVGFiOyIsImltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJzeFwiXTtcbmltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBkZWZhdWx0U3hDb25maWcgZnJvbSAnLi9kZWZhdWx0U3hDb25maWcnO1xuY29uc3Qgc3BsaXRQcm9wcyA9IHByb3BzID0+IHtcbiAgdmFyIF9wcm9wcyR0aGVtZSR1bnN0YWJsZSwgX3Byb3BzJHRoZW1lO1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgc3lzdGVtUHJvcHM6IHt9LFxuICAgIG90aGVyUHJvcHM6IHt9XG4gIH07XG4gIGNvbnN0IGNvbmZpZyA9IChfcHJvcHMkdGhlbWUkdW5zdGFibGUgPSBwcm9wcyA9PSBudWxsIHx8IChfcHJvcHMkdGhlbWUgPSBwcm9wcy50aGVtZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wcm9wcyR0aGVtZS51bnN0YWJsZV9zeENvbmZpZykgIT0gbnVsbCA/IF9wcm9wcyR0aGVtZSR1bnN0YWJsZSA6IGRlZmF1bHRTeENvbmZpZztcbiAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgaWYgKGNvbmZpZ1twcm9wXSkge1xuICAgICAgcmVzdWx0LnN5c3RlbVByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5vdGhlclByb3BzW3Byb3BdID0gcHJvcHNbcHJvcF07XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHRlbmRTeFByb3AocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgICAgc3g6IGluU3hcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qge1xuICAgIHN5c3RlbVByb3BzLFxuICAgIG90aGVyUHJvcHNcbiAgfSA9IHNwbGl0UHJvcHMob3RoZXIpO1xuICBsZXQgZmluYWxTeDtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5TeCkpIHtcbiAgICBmaW5hbFN4ID0gW3N5c3RlbVByb3BzLCAuLi5pblN4XTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5TeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGZpbmFsU3ggPSAoLi4uYXJncykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5TeCguLi5hcmdzKTtcbiAgICAgIGlmICghaXNQbGFpbk9iamVjdChyZXN1bHQpKSB7XG4gICAgICAgIHJldHVybiBzeXN0ZW1Qcm9wcztcbiAgICAgIH1cbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc3lzdGVtUHJvcHMsIHJlc3VsdCk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBmaW5hbFN4ID0gX2V4dGVuZHMoe30sIHN5c3RlbVByb3BzLCBpblN4KTtcbiAgfVxuICByZXR1cm4gX2V4dGVuZHMoe30sIG90aGVyUHJvcHMsIHtcbiAgICBzeDogZmluYWxTeFxuICB9KTtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJjb21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQG11aS9zdHlsZWQtZW5naW5lJztcbmltcG9ydCBzdHlsZUZ1bmN0aW9uU3gsIHsgZXh0ZW5kU3hQcm9wIH0gZnJvbSAnLi9zdHlsZUZ1bmN0aW9uU3gnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4vdXNlVGhlbWUnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUJveChvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHRoZW1lSWQsXG4gICAgZGVmYXVsdFRoZW1lLFxuICAgIGRlZmF1bHRDbGFzc05hbWUgPSAnTXVpQm94LXJvb3QnLFxuICAgIGdlbmVyYXRlQ2xhc3NOYW1lXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBCb3hSb290ID0gc3R5bGVkKCdkaXYnLCB7XG4gICAgc2hvdWxkRm9yd2FyZFByb3A6IHByb3AgPT4gcHJvcCAhPT0gJ3RoZW1lJyAmJiBwcm9wICE9PSAnc3gnICYmIHByb3AgIT09ICdhcydcbiAgfSkoc3R5bGVGdW5jdGlvblN4KTtcbiAgY29uc3QgQm94ID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQm94KGluUHJvcHMsIHJlZikge1xuICAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoZGVmYXVsdFRoZW1lKTtcbiAgICBjb25zdCBfZXh0ZW5kU3hQcm9wID0gZXh0ZW5kU3hQcm9wKGluUHJvcHMpLFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgIGNvbXBvbmVudCA9ICdkaXYnXG4gICAgICB9ID0gX2V4dGVuZFN4UHJvcCxcbiAgICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX2V4dGVuZFN4UHJvcCwgX2V4Y2x1ZGVkKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL19qc3goQm94Um9vdCwgX2V4dGVuZHMoe1xuICAgICAgYXM6IGNvbXBvbmVudCxcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzTmFtZSwgZ2VuZXJhdGVDbGFzc05hbWUgPyBnZW5lcmF0ZUNsYXNzTmFtZShkZWZhdWx0Q2xhc3NOYW1lKSA6IGRlZmF1bHRDbGFzc05hbWUpLFxuICAgICAgdGhlbWU6IHRoZW1lSWQgPyB0aGVtZVt0aGVtZUlkXSB8fCB0aGVtZSA6IHRoZW1lXG4gICAgfSwgb3RoZXIpKTtcbiAgfSk7XG4gIHJldHVybiBCb3g7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyBjcmVhdGVCb3ggfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgdW5zdGFibGVfQ2xhc3NOYW1lR2VuZXJhdG9yIGFzIENsYXNzTmFtZUdlbmVyYXRvciB9IGZyb20gJy4uL2NsYXNzTmFtZSc7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQgVEhFTUVfSUQgZnJvbSAnLi4vc3R5bGVzL2lkZW50aWZpZXInO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6ICdNdWlCb3gtcm9vdCcsXG4gIGdlbmVyYXRlQ2xhc3NOYW1lOiBDbGFzc05hbWVHZW5lcmF0b3IuZ2VuZXJhdGVcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQm94LnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQm94OyIsIi8qKlxuICogUmVtb3ZlcyBldmVudCBoYW5kbGVycyBmcm9tIHRoZSBnaXZlbiBvYmplY3QuXG4gKiBBIGZpZWxkIGlzIGNvbnNpZGVyZWQgYW4gZXZlbnQgaGFuZGxlciBpZiBpdCBpcyBhIGZ1bmN0aW9uIHdpdGggYSBuYW1lIGJlZ2lubmluZyB3aXRoIGBvbmAuXG4gKlxuICogQHBhcmFtIG9iamVjdCBPYmplY3QgdG8gcmVtb3ZlIGV2ZW50IGhhbmRsZXJzIGZyb20uXG4gKiBAcmV0dXJucyBPYmplY3Qgd2l0aCBldmVudCBoYW5kbGVycyByZW1vdmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb21pdEV2ZW50SGFuZGxlcnMob2JqZWN0KSB7XG4gIGlmIChvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSB7fTtcbiAgT2JqZWN0LmtleXMob2JqZWN0KS5maWx0ZXIocHJvcCA9PiAhKHByb3AubWF0Y2goL15vbltBLVpdLykgJiYgdHlwZW9mIG9iamVjdFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJykpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgcmVzdWx0W3Byb3BdID0gb2JqZWN0W3Byb3BdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJlbGVtZW50VHlwZVwiLCBcImV4dGVybmFsU2xvdFByb3BzXCIsIFwib3duZXJTdGF0ZVwiLCBcInNraXBSZXNvbHZpbmdTbG90UHJvcHNcIl07XG5pbXBvcnQgeyB1bnN0YWJsZV91c2VGb3JrUmVmIGFzIHVzZUZvcmtSZWYgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IGFwcGVuZE93bmVyU3RhdGUgfSBmcm9tICcuL2FwcGVuZE93bmVyU3RhdGUnO1xuaW1wb3J0IHsgbWVyZ2VTbG90UHJvcHMgfSBmcm9tICcuL21lcmdlU2xvdFByb3BzJztcbmltcG9ydCB7IHJlc29sdmVDb21wb25lbnRQcm9wcyB9IGZyb20gJy4vcmVzb2x2ZUNvbXBvbmVudFByb3BzJztcbi8qKlxuICogQGlnbm9yZSAtIGRvIG5vdCBkb2N1bWVudC5cbiAqIEJ1aWxkcyB0aGUgcHJvcHMgdG8gYmUgcGFzc2VkIGludG8gdGhlIHNsb3Qgb2YgYW4gdW5zdHlsZWQgY29tcG9uZW50LlxuICogSXQgbWVyZ2VzIHRoZSBpbnRlcm5hbCBwcm9wcyBvZiB0aGUgY29tcG9uZW50IHdpdGggdGhlIG9uZXMgc3VwcGxpZWQgYnkgdGhlIHVzZXIsIGFsbG93aW5nIHRvIGN1c3RvbWl6ZSB0aGUgYmVoYXZpb3IuXG4gKiBJZiB0aGUgc2xvdCBjb21wb25lbnQgaXMgbm90IGEgaG9zdCBjb21wb25lbnQsIGl0IGFsc28gbWVyZ2VzIGluIHRoZSBgb3duZXJTdGF0ZWAuXG4gKlxuICogQHBhcmFtIHBhcmFtZXRlcnMuZ2V0U2xvdFByb3BzIC0gQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHByb3BzIHRvIGJlIHBhc3NlZCB0byB0aGUgc2xvdCBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTbG90UHJvcHMocGFyYW1ldGVycykge1xuICB2YXIgX3BhcmFtZXRlcnMkYWRkaXRpb25hO1xuICBjb25zdCB7XG4gICAgICBlbGVtZW50VHlwZSxcbiAgICAgIGV4dGVybmFsU2xvdFByb3BzLFxuICAgICAgb3duZXJTdGF0ZSxcbiAgICAgIHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPSBmYWxzZVxuICAgIH0gPSBwYXJhbWV0ZXJzLFxuICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwYXJhbWV0ZXJzLCBfZXhjbHVkZWQpO1xuICBjb25zdCByZXNvbHZlZENvbXBvbmVudHNQcm9wcyA9IHNraXBSZXNvbHZpbmdTbG90UHJvcHMgPyB7fSA6IHJlc29sdmVDb21wb25lbnRQcm9wcyhleHRlcm5hbFNsb3RQcm9wcywgb3duZXJTdGF0ZSk7XG4gIGNvbnN0IHtcbiAgICBwcm9wczogbWVyZ2VkUHJvcHMsXG4gICAgaW50ZXJuYWxSZWZcbiAgfSA9IG1lcmdlU2xvdFByb3BzKF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzXG4gIH0pKTtcbiAgY29uc3QgcmVmID0gdXNlRm9ya1JlZihpbnRlcm5hbFJlZiwgcmVzb2x2ZWRDb21wb25lbnRzUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IHJlc29sdmVkQ29tcG9uZW50c1Byb3BzLnJlZiwgKF9wYXJhbWV0ZXJzJGFkZGl0aW9uYSA9IHBhcmFtZXRlcnMuYWRkaXRpb25hbFByb3BzKSA9PSBudWxsID8gdm9pZCAwIDogX3BhcmFtZXRlcnMkYWRkaXRpb25hLnJlZik7XG4gIGNvbnN0IHByb3BzID0gYXBwZW5kT3duZXJTdGF0ZShlbGVtZW50VHlwZSwgX2V4dGVuZHMoe30sIG1lcmdlZFByb3BzLCB7XG4gICAgcmVmXG4gIH0pLCBvd25lclN0YXRlKTtcbiAgcmV0dXJuIHByb3BzO1xufSIsIi8qKlxuICogSWYgYGNvbXBvbmVudFByb3BzYCBpcyBhIGZ1bmN0aW9uLCBjYWxscyBpdCB3aXRoIHRoZSBwcm92aWRlZCBgb3duZXJTdGF0ZWAuXG4gKiBPdGhlcndpc2UsIGp1c3QgcmV0dXJucyBgY29tcG9uZW50UHJvcHNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudFByb3BzKGNvbXBvbmVudFByb3BzLCBvd25lclN0YXRlLCBzbG90U3RhdGUpIHtcbiAgaWYgKHR5cGVvZiBjb21wb25lbnRQcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjb21wb25lbnRQcm9wcyhvd25lclN0YXRlLCBzbG90U3RhdGUpO1xuICB9XG4gIHJldHVybiBjb21wb25lbnRQcm9wcztcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgZXh0cmFjdEV2ZW50SGFuZGxlcnMgfSBmcm9tICcuL2V4dHJhY3RFdmVudEhhbmRsZXJzJztcbmltcG9ydCB7IG9taXRFdmVudEhhbmRsZXJzIH0gZnJvbSAnLi9vbWl0RXZlbnRIYW5kbGVycyc7XG4vKipcbiAqIE1lcmdlcyB0aGUgc2xvdCBjb21wb25lbnQgaW50ZXJuYWwgcHJvcHMgKHVzdWFsbHkgY29taW5nIGZyb20gYSBob29rKVxuICogd2l0aCB0aGUgZXh0ZXJuYWxseSBwcm92aWRlZCBvbmVzLlxuICpcbiAqIFRoZSBtZXJnZSBvcmRlciBpcyAodGhlIGxhdHRlciBvdmVycmlkZXMgdGhlIGZvcm1lcik6XG4gKiAxLiBUaGUgaW50ZXJuYWwgcHJvcHMgKHNwZWNpZmllZCBhcyBhIGdldHRlciBmdW5jdGlvbiB0byB3b3JrIHdpdGggZ2V0KlByb3BzIGhvb2sgcmVzdWx0KVxuICogMi4gQWRkaXRpb25hbCBwcm9wcyAoc3BlY2lmaWVkIGludGVybmFsbHkgb24gYSBCYXNlIFVJIGNvbXBvbmVudClcbiAqIDMuIEV4dGVybmFsIHByb3BzIHNwZWNpZmllZCBvbiB0aGUgb3duZXIgY29tcG9uZW50LiBUaGVzZSBzaG91bGQgb25seSBiZSB1c2VkIG9uIGEgcm9vdCBzbG90LlxuICogNC4gRXh0ZXJuYWwgcHJvcHMgc3BlY2lmaWVkIGluIHRoZSBgc2xvdFByb3BzLipgIHByb3AuXG4gKiA1LiBUaGUgYGNsYXNzTmFtZWAgcHJvcCAtIGNvbWJpbmVkIGZyb20gYWxsIHRoZSBhYm92ZS5cbiAqIEBwYXJhbSBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VTbG90UHJvcHMocGFyYW1ldGVycykge1xuICBjb25zdCB7XG4gICAgZ2V0U2xvdFByb3BzLFxuICAgIGFkZGl0aW9uYWxQcm9wcyxcbiAgICBleHRlcm5hbFNsb3RQcm9wcyxcbiAgICBleHRlcm5hbEZvcndhcmRlZFByb3BzLFxuICAgIGNsYXNzTmFtZVxuICB9ID0gcGFyYW1ldGVycztcbiAgaWYgKCFnZXRTbG90UHJvcHMpIHtcbiAgICAvLyBUaGUgc2ltcGxlciBjYXNlIC0gZ2V0U2xvdFByb3BzIGlzIG5vdCBkZWZpbmVkLCBzbyBubyBpbnRlcm5hbCBldmVudCBoYW5kbGVycyBhcmUgZGVmaW5lZCxcbiAgICAvLyBzbyB3ZSBjYW4gc2ltcGx5IG1lcmdlIGFsbCB0aGUgcHJvcHMgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgZXh0cmFjdGluZyBldmVudCBoYW5kbGVycy5cbiAgICBjb25zdCBqb2luZWRDbGFzc2VzID0gY2xzeChleHRlcm5hbEZvcndhcmRlZFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbEZvcndhcmRlZFByb3BzLmNsYXNzTmFtZSwgZXh0ZXJuYWxTbG90UHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGV4dGVybmFsU2xvdFByb3BzLmNsYXNzTmFtZSwgY2xhc3NOYW1lLCBhZGRpdGlvbmFsUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGFkZGl0aW9uYWxQcm9wcy5jbGFzc05hbWUpO1xuICAgIGNvbnN0IG1lcmdlZFN0eWxlID0gX2V4dGVuZHMoe30sIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLnN0eWxlLCBleHRlcm5hbEZvcndhcmRlZFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbEZvcndhcmRlZFByb3BzLnN0eWxlLCBleHRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogZXh0ZXJuYWxTbG90UHJvcHMuc3R5bGUpO1xuICAgIGNvbnN0IHByb3BzID0gX2V4dGVuZHMoe30sIGFkZGl0aW9uYWxQcm9wcywgZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcywgZXh0ZXJuYWxTbG90UHJvcHMpO1xuICAgIGlmIChqb2luZWRDbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGpvaW5lZENsYXNzZXM7XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhtZXJnZWRTdHlsZSkubGVuZ3RoID4gMCkge1xuICAgICAgcHJvcHMuc3R5bGUgPSBtZXJnZWRTdHlsZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzLFxuICAgICAgaW50ZXJuYWxSZWY6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvLyBJbiB0aGlzIGNhc2UsIGdldFNsb3RQcm9wcyBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGUgZXh0ZXJuYWwgZXZlbnQgaGFuZGxlcnMuXG4gIC8vIFdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSB0aGVtIGluIHRoZSBtZXJnZWQgcHJvcHMgYmVjYXVzZSBvZiB0aGlzLlxuXG4gIGNvbnN0IGV2ZW50SGFuZGxlcnMgPSBleHRyYWN0RXZlbnRIYW5kbGVycyhfZXh0ZW5kcyh7fSwgZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcywgZXh0ZXJuYWxTbG90UHJvcHMpKTtcbiAgY29uc3QgY29tcG9uZW50c1Byb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMgPSBvbWl0RXZlbnRIYW5kbGVycyhleHRlcm5hbFNsb3RQcm9wcyk7XG4gIGNvbnN0IG90aGVyUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyA9IG9taXRFdmVudEhhbmRsZXJzKGV4dGVybmFsRm9yd2FyZGVkUHJvcHMpO1xuICBjb25zdCBpbnRlcm5hbFNsb3RQcm9wcyA9IGdldFNsb3RQcm9wcyhldmVudEhhbmRsZXJzKTtcblxuICAvLyBUaGUgb3JkZXIgb2YgY2xhc3NlcyBpcyBpbXBvcnRhbnQgaGVyZS5cbiAgLy8gRW1vdGlvbiAodGhhdCB3ZSB1c2UgaW4gbGlicmFyaWVzIGNvbnN1bWluZyBCYXNlIFVJKSBkZXBlbmRzIG9uIHRoaXMgb3JkZXJcbiAgLy8gdG8gcHJvcGVybHkgb3ZlcnJpZGUgc3R5bGUuIEl0IHJlcXVpcmVzIHRoZSBtb3N0IGltcG9ydGFudCBjbGFzc2VzIHRvIGJlIGxhc3RcbiAgLy8gKHNlZSBodHRwczovL2dpdGh1Yi5jb20vbXVpL21hdGVyaWFsLXVpL3B1bGwvMzMyMDUpIGZvciB0aGUgcmVsYXRlZCBkaXNjdXNzaW9uLlxuICBjb25zdCBqb2luZWRDbGFzc2VzID0gY2xzeChpbnRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogaW50ZXJuYWxTbG90UHJvcHMuY2xhc3NOYW1lLCBhZGRpdGlvbmFsUHJvcHMgPT0gbnVsbCA/IHZvaWQgMCA6IGFkZGl0aW9uYWxQcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSwgZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcy5jbGFzc05hbWUsIGV4dGVybmFsU2xvdFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbFNsb3RQcm9wcy5jbGFzc05hbWUpO1xuICBjb25zdCBtZXJnZWRTdHlsZSA9IF9leHRlbmRzKHt9LCBpbnRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogaW50ZXJuYWxTbG90UHJvcHMuc3R5bGUsIGFkZGl0aW9uYWxQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogYWRkaXRpb25hbFByb3BzLnN0eWxlLCBleHRlcm5hbEZvcndhcmRlZFByb3BzID09IG51bGwgPyB2b2lkIDAgOiBleHRlcm5hbEZvcndhcmRlZFByb3BzLnN0eWxlLCBleHRlcm5hbFNsb3RQcm9wcyA9PSBudWxsID8gdm9pZCAwIDogZXh0ZXJuYWxTbG90UHJvcHMuc3R5bGUpO1xuICBjb25zdCBwcm9wcyA9IF9leHRlbmRzKHt9LCBpbnRlcm5hbFNsb3RQcm9wcywgYWRkaXRpb25hbFByb3BzLCBvdGhlclByb3BzV2l0aG91dEV2ZW50SGFuZGxlcnMsIGNvbXBvbmVudHNQcm9wc1dpdGhvdXRFdmVudEhhbmRsZXJzKTtcbiAgaWYgKGpvaW5lZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgIHByb3BzLmNsYXNzTmFtZSA9IGpvaW5lZENsYXNzZXM7XG4gIH1cbiAgaWYgKE9iamVjdC5rZXlzKG1lcmdlZFN0eWxlKS5sZW5ndGggPiAwKSB7XG4gICAgcHJvcHMuc3R5bGUgPSBtZXJnZWRTdHlsZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHByb3BzLFxuICAgIGludGVybmFsUmVmOiBpbnRlcm5hbFNsb3RQcm9wcy5yZWZcbiAgfTtcbn0iLCIvKipcbiAqIEV4dHJhY3RzIGV2ZW50IGhhbmRsZXJzIGZyb20gYSBnaXZlbiBvYmplY3QuXG4gKiBBIHByb3AgaXMgY29uc2lkZXJlZCBhbiBldmVudCBoYW5kbGVyIGlmIGl0IGlzIGEgZnVuY3Rpb24gYW5kIGl0cyBuYW1lIHN0YXJ0cyB3aXRoIGBvbmAuXG4gKlxuICogQHBhcmFtIG9iamVjdCBBbiBvYmplY3QgdG8gZXh0cmFjdCBldmVudCBoYW5kbGVycyBmcm9tLlxuICogQHBhcmFtIGV4Y2x1ZGVLZXlzIEFuIGFycmF5IG9mIGtleXMgdG8gZXhjbHVkZSBmcm9tIHRoZSByZXR1cm5lZCBvYmplY3QuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RXZlbnRIYW5kbGVycyhvYmplY3QsIGV4Y2x1ZGVLZXlzID0gW10pIHtcbiAgaWYgKG9iamVjdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBPYmplY3Qua2V5cyhvYmplY3QpLmZpbHRlcihwcm9wID0+IHByb3AubWF0Y2goL15vbltBLVpdLykgJiYgdHlwZW9mIG9iamVjdFtwcm9wXSA9PT0gJ2Z1bmN0aW9uJyAmJiAhZXhjbHVkZUtleXMuaW5jbHVkZXMocHJvcCkpLmZvckVhY2gocHJvcCA9PiB7XG4gICAgcmVzdWx0W3Byb3BdID0gb2JqZWN0W3Byb3BdO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7IGlzSG9zdENvbXBvbmVudCB9IGZyb20gJy4vaXNIb3N0Q29tcG9uZW50JztcblxuLyoqXG4gKiBUeXBlIG9mIHRoZSBvd25lclN0YXRlIGJhc2VkIG9uIHRoZSB0eXBlIG9mIGFuIGVsZW1lbnQgaXQgYXBwbGllcyB0by5cbiAqIFRoaXMgcmVzb2x2ZXMgdG8gdGhlIHByb3ZpZGVkIE93bmVyU3RhdGUgZm9yIFJlYWN0IGNvbXBvbmVudHMgYW5kIGB1bmRlZmluZWRgIGZvciBob3N0IGNvbXBvbmVudHMuXG4gKiBGYWxscyBiYWNrIHRvIGBPd25lclN0YXRlIHwgdW5kZWZpbmVkYCB3aGVuIHRoZSBleGFjdCB0eXBlIGNhbid0IGJlIGRldGVybWluZWQgaW4gZGV2ZWxvcG1lbnQgdGltZS5cbiAqL1xuXG4vKipcbiAqIEFwcGVuZHMgdGhlIG93bmVyU3RhdGUgb2JqZWN0IHRvIHRoZSBwcm9wcywgbWVyZ2luZyB3aXRoIHRoZSBleGlzdGluZyBvbmUgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwYXJhbSBlbGVtZW50VHlwZSBUeXBlIG9mIHRoZSBlbGVtZW50IHRoYXQgb3ducyB0aGUgYGV4aXN0aW5nUHJvcHNgLiBJZiB0aGUgZWxlbWVudCBpcyBhIERPTSBub2RlIG9yIHVuZGVmaW5lZCwgYG93bmVyU3RhdGVgIGlzIG5vdCBhcHBsaWVkLlxuICogQHBhcmFtIG90aGVyUHJvcHMgUHJvcHMgb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0gb3duZXJTdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kT3duZXJTdGF0ZShlbGVtZW50VHlwZSwgb3RoZXJQcm9wcywgb3duZXJTdGF0ZSkge1xuICBpZiAoZWxlbWVudFR5cGUgPT09IHVuZGVmaW5lZCB8fCBpc0hvc3RDb21wb25lbnQoZWxlbWVudFR5cGUpKSB7XG4gICAgcmV0dXJuIG90aGVyUHJvcHM7XG4gIH1cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdGhlclByb3BzLCB7XG4gICAgb3duZXJTdGF0ZTogX2V4dGVuZHMoe30sIG90aGVyUHJvcHMub3duZXJTdGF0ZSwgb3duZXJTdGF0ZSlcbiAgfSk7XG59IiwiLyoqXG4gKiBEZXRlcm1pbmVzIGlmIGEgZ2l2ZW4gZWxlbWVudCBpcyBhIERPTSBlbGVtZW50IG5hbWUgKGkuZS4gbm90IGEgUmVhY3QgY29tcG9uZW50KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSG9zdENvbXBvbmVudChlbGVtZW50KSB7XG4gIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZyc7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUaGVtZSBhcyB1c2VUaGVtZVN5c3RlbSB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBkZWZhdWx0VGhlbWUgZnJvbSAnLi9kZWZhdWx0VGhlbWUnO1xuaW1wb3J0IFRIRU1FX0lEIGZyb20gJy4vaWRlbnRpZmllcic7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VUaGVtZSgpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZVN5c3RlbShkZWZhdWx0VGhlbWUpO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICAgIFJlYWN0LnVzZURlYnVnVmFsdWUodGhlbWUpO1xuICB9XG4gIHJldHVybiB0aGVtZVtUSEVNRV9JRF0gfHwgdGhlbWU7XG59IiwiaW1wb3J0IHsgdW5zdGFibGVfZGVib3VuY2UgYXMgZGVib3VuY2UgfSBmcm9tICdAbXVpL3V0aWxzJztcbmV4cG9ydCBkZWZhdWx0IGRlYm91bmNlOyIsIi8vIENvcnJlc3BvbmRzIHRvIDEwIGZyYW1lcyBhdCA2MCBIei5cbi8vIEEgZmV3IGJ5dGVzIHBheWxvYWQgb3ZlcmhlYWQgd2hlbiBsb2Rhc2gvZGVib3VuY2UgaXMgfjMga0IgYW5kIGRlYm91bmNlIH4zMDAgQi5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQgPSAxNjYpIHtcbiAgbGV0IHRpbWVvdXQ7XG4gIGZ1bmN0aW9uIGRlYm91bmNlZCguLi5hcmdzKSB7XG4gICAgY29uc3QgbGF0ZXIgPSAoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTtcbiAgfVxuICBkZWJvdW5jZWQuY2xlYXIgPSAoKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICB9O1xuICByZXR1cm4gZGVib3VuY2VkO1xufSIsIi8vIFNvdXJjZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hbGl0YWhlcmkvbm9ybWFsaXplLXNjcm9sbC1sZWZ0XG5sZXQgY2FjaGVkVHlwZTtcblxuLyoqXG4gKiBCYXNlZCBvbiB0aGUganF1ZXJ5IHBsdWdpbiBodHRwczovL2dpdGh1Yi5jb20vb3RocmVlL2pxdWVyeS5ydGwtc2Nyb2xsLXR5cGVcbiAqXG4gKiBUeXBlcyBvZiBzY3JvbGxMZWZ0LCBhc3N1bWluZyBzY3JvbGxXaWR0aD0xMDAgYW5kIGRpcmVjdGlvbiBpcyBydGwuXG4gKlxuICogVHlwZSAgICAgICAgICAgICB8IDwtIE1vc3QgTGVmdCB8IE1vc3QgUmlnaHQgLT4gfCBJbml0aWFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tIHwgLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS1cbiAqIGRlZmF1bHQgICAgICAgICAgfCAwICAgICAgICAgICAgfCAxMDAgICAgICAgICAgIHwgMTAwXG4gKiBuZWdhdGl2ZSAoc3BlYyopIHwgLTEwMCAgICAgICAgIHwgMCAgICAgICAgICAgICB8IDBcbiAqIHJldmVyc2UgICAgICAgICAgfCAxMDAgICAgICAgICAgfCAwICAgICAgICAgICAgIHwgMFxuICpcbiAqIEVkZ2UgODU6IGRlZmF1bHRcbiAqIFNhZmFyaSAxNDogbmVnYXRpdmVcbiAqIENocm9tZSA4NTogbmVnYXRpdmVcbiAqIEZpcmVmb3ggODE6IG5lZ2F0aXZlXG4gKiBJRTExOiByZXZlcnNlXG4gKlxuICogc3BlYyogaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI2RvbS13aW5kb3ctc2Nyb2xsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RTY3JvbGxUeXBlKCkge1xuICBpZiAoY2FjaGVkVHlwZSkge1xuICAgIHJldHVybiBjYWNoZWRUeXBlO1xuICB9XG4gIGNvbnN0IGR1bW15ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250YWluZXIuc3R5bGUud2lkdGggPSAnMTBweCc7XG4gIGNvbnRhaW5lci5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgZHVtbXkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKTtcbiAgZHVtbXkuZGlyID0gJ3J0bCc7XG4gIGR1bW15LnN0eWxlLmZvbnRTaXplID0gJzE0cHgnO1xuICBkdW1teS5zdHlsZS53aWR0aCA9ICc0cHgnO1xuICBkdW1teS5zdHlsZS5oZWlnaHQgPSAnMXB4JztcbiAgZHVtbXkuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICBkdW1teS5zdHlsZS50b3AgPSAnLTEwMDBweCc7XG4gIGR1bW15LnN0eWxlLm92ZXJmbG93ID0gJ3Njcm9sbCc7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZHVtbXkpO1xuICBjYWNoZWRUeXBlID0gJ3JldmVyc2UnO1xuICBpZiAoZHVtbXkuc2Nyb2xsTGVmdCA+IDApIHtcbiAgICBjYWNoZWRUeXBlID0gJ2RlZmF1bHQnO1xuICB9IGVsc2Uge1xuICAgIGR1bW15LnNjcm9sbExlZnQgPSAxO1xuICAgIGlmIChkdW1teS5zY3JvbGxMZWZ0ID09PSAwKSB7XG4gICAgICBjYWNoZWRUeXBlID0gJ25lZ2F0aXZlJztcbiAgICB9XG4gIH1cbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkdW1teSk7XG4gIHJldHVybiBjYWNoZWRUeXBlO1xufVxuXG4vLyBCYXNlZCBvbiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjQzOTQzNzZcbmV4cG9ydCBmdW5jdGlvbiBnZXROb3JtYWxpemVkU2Nyb2xsTGVmdChlbGVtZW50LCBkaXJlY3Rpb24pIHtcbiAgY29uc3Qgc2Nyb2xsTGVmdCA9IGVsZW1lbnQuc2Nyb2xsTGVmdDtcblxuICAvLyBQZXJmb3JtIHRoZSBjYWxjdWxhdGlvbnMgb25seSB3aGVuIGRpcmVjdGlvbiBpcyBydGwgdG8gYXZvaWQgbWVzc2luZyB1cCB0aGUgbHRyIGJlaGF2aW9yXG4gIGlmIChkaXJlY3Rpb24gIT09ICdydGwnKSB7XG4gICAgcmV0dXJuIHNjcm9sbExlZnQ7XG4gIH1cbiAgY29uc3QgdHlwZSA9IGRldGVjdFNjcm9sbFR5cGUoKTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnbmVnYXRpdmUnOlxuICAgICAgcmV0dXJuIGVsZW1lbnQuc2Nyb2xsV2lkdGggLSBlbGVtZW50LmNsaWVudFdpZHRoICsgc2Nyb2xsTGVmdDtcbiAgICBjYXNlICdyZXZlcnNlJzpcbiAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFdpZHRoIC0gZWxlbWVudC5jbGllbnRXaWR0aCAtIHNjcm9sbExlZnQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzY3JvbGxMZWZ0O1xuICB9XG59IiwiZnVuY3Rpb24gZWFzZUluT3V0U2luKHRpbWUpIHtcbiAgcmV0dXJuICgxICsgTWF0aC5zaW4oTWF0aC5QSSAqIHRpbWUgLSBNYXRoLlBJIC8gMikpIC8gMjtcbn1cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFuaW1hdGUocHJvcGVydHksIGVsZW1lbnQsIHRvLCBvcHRpb25zID0ge30sIGNiID0gKCkgPT4ge30pIHtcbiAgY29uc3Qge1xuICAgIGVhc2UgPSBlYXNlSW5PdXRTaW4sXG4gICAgZHVyYXRpb24gPSAzMDAgLy8gc3RhbmRhcmRcbiAgfSA9IG9wdGlvbnM7XG4gIGxldCBzdGFydCA9IG51bGw7XG4gIGNvbnN0IGZyb20gPSBlbGVtZW50W3Byb3BlcnR5XTtcbiAgbGV0IGNhbmNlbGxlZCA9IGZhbHNlO1xuICBjb25zdCBjYW5jZWwgPSAoKSA9PiB7XG4gICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgfTtcbiAgY29uc3Qgc3RlcCA9IHRpbWVzdGFtcCA9PiB7XG4gICAgaWYgKGNhbmNlbGxlZCkge1xuICAgICAgY2IobmV3IEVycm9yKCdBbmltYXRpb24gY2FuY2VsbGVkJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RhcnQgPT09IG51bGwpIHtcbiAgICAgIHN0YXJ0ID0gdGltZXN0YW1wO1xuICAgIH1cbiAgICBjb25zdCB0aW1lID0gTWF0aC5taW4oMSwgKHRpbWVzdGFtcCAtIHN0YXJ0KSAvIGR1cmF0aW9uKTtcbiAgICBlbGVtZW50W3Byb3BlcnR5XSA9IGVhc2UodGltZSkgKiAodG8gLSBmcm9tKSArIGZyb207XG4gICAgaWYgKHRpbWUgPj0gMSkge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgY2IobnVsbCk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApO1xuICB9O1xuICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICBjYihuZXcgRXJyb3IoJ0VsZW1lbnQgYWxyZWFkeSBhdCB0YXJnZXQgcG9zaXRpb24nKSk7XG4gICAgcmV0dXJuIGNhbmNlbDtcbiAgfVxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7XG4gIHJldHVybiBjYW5jZWw7XG59IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgeyB1bnN0YWJsZV91c2VFbmhhbmNlZEVmZmVjdCBhcyB1c2VFbmhhbmNlZEVmZmVjdCB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgdXNlRW5oYW5jZWRFZmZlY3Q7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3duZXJEb2N1bWVudChub2RlKSB7XG4gIHJldHVybiBub2RlICYmIG5vZGUub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbn0iLCJpbXBvcnQgeyB1bnN0YWJsZV9vd25lcldpbmRvdyBhcyBvd25lcldpbmRvdyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuZXhwb3J0IGRlZmF1bHQgb3duZXJXaW5kb3c7IiwiaW1wb3J0IG93bmVyRG9jdW1lbnQgZnJvbSAnLi4vb3duZXJEb2N1bWVudCc7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvd25lcldpbmRvdyhub2RlKSB7XG4gIGNvbnN0IGRvYyA9IG93bmVyRG9jdW1lbnQobm9kZSk7XG4gIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcIm9uQ2hhbmdlXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBkZWJvdW5jZSBmcm9tICcuLi91dGlscy9kZWJvdW5jZSc7XG5pbXBvcnQgeyBvd25lcldpbmRvdywgdW5zdGFibGVfdXNlRW5oYW5jZWRFZmZlY3QgYXMgdXNlRW5oYW5jZWRFZmZlY3QgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3Qgc3R5bGVzID0ge1xuICB3aWR0aDogOTksXG4gIGhlaWdodDogOTksXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB0b3A6IC05OTk5LFxuICBvdmVyZmxvdzogJ3Njcm9sbCdcbn07XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqIFRoZSBjb21wb25lbnQgb3JpZ2luYXRlcyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9TVE9SSVMvcmVhY3Qtc2Nyb2xsYmFyLXNpemUuXG4gKiBJdCBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBjb3JlIGluIG9yZGVyIHRvIG1pbmltaXplIHRoZSBidW5kbGUgc2l6ZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2Nyb2xsYmFyU2l6ZShwcm9wcykge1xuICBjb25zdCB7XG4gICAgICBvbkNoYW5nZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBzY3JvbGxiYXJIZWlnaHQgPSBSZWFjdC51c2VSZWYoKTtcbiAgY29uc3Qgbm9kZVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3Qgc2V0TWVhc3VyZW1lbnRzID0gKCkgPT4ge1xuICAgIHNjcm9sbGJhckhlaWdodC5jdXJyZW50ID0gbm9kZVJlZi5jdXJyZW50Lm9mZnNldEhlaWdodCAtIG5vZGVSZWYuY3VycmVudC5jbGllbnRIZWlnaHQ7XG4gIH07XG4gIHVzZUVuaGFuY2VkRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICBjb25zdCBwcmV2SGVpZ2h0ID0gc2Nyb2xsYmFySGVpZ2h0LmN1cnJlbnQ7XG4gICAgICBzZXRNZWFzdXJlbWVudHMoKTtcbiAgICAgIGlmIChwcmV2SGVpZ2h0ICE9PSBzY3JvbGxiYXJIZWlnaHQuY3VycmVudCkge1xuICAgICAgICBvbkNoYW5nZShzY3JvbGxiYXJIZWlnaHQuY3VycmVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgY29udGFpbmVyV2luZG93ID0gb3duZXJXaW5kb3cobm9kZVJlZi5jdXJyZW50KTtcbiAgICBjb250YWluZXJXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaGFuZGxlUmVzaXplLmNsZWFyKCk7XG4gICAgICBjb250YWluZXJXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVzaXplKTtcbiAgICB9O1xuICB9LCBbb25DaGFuZ2VdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRNZWFzdXJlbWVudHMoKTtcbiAgICBvbkNoYW5nZShzY3JvbGxiYXJIZWlnaHQuY3VycmVudCk7XG4gIH0sIFtvbkNoYW5nZV0pO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgIHN0eWxlOiBzdHlsZXMsXG4gICAgcmVmOiBub2RlUmVmXG4gIH0sIG90aGVyKSk7XG59XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTY3JvbGxiYXJTaXplLnByb3BUeXBlcyA9IHtcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN2Z0ljb25VdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVN2Z0ljb24nLCBzbG90KTtcbn1cbmNvbnN0IHN2Z0ljb25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpU3ZnSWNvbicsIFsncm9vdCcsICdjb2xvclByaW1hcnknLCAnY29sb3JTZWNvbmRhcnknLCAnY29sb3JBY3Rpb24nLCAnY29sb3JFcnJvcicsICdjb2xvckRpc2FibGVkJywgJ2ZvbnRTaXplSW5oZXJpdCcsICdmb250U2l6ZVNtYWxsJywgJ2ZvbnRTaXplTWVkaXVtJywgJ2ZvbnRTaXplTGFyZ2UnXSk7XG5leHBvcnQgZGVmYXVsdCBzdmdJY29uQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiZm9udFNpemVcIiwgXCJodG1sQ29sb3JcIiwgXCJpbmhlcml0Vmlld0JveFwiLCBcInRpdGxlQWNjZXNzXCIsIFwidmlld0JveFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJy4uL3V0aWxzL2NhcGl0YWxpemUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB7IGdldFN2Z0ljb25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3N2Z0ljb25DbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY29sb3IsXG4gICAgZm9udFNpemUsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgY29sb3IgIT09ICdpbmhlcml0JyAmJiBgY29sb3Ike2NhcGl0YWxpemUoY29sb3IpfWAsIGBmb250U2l6ZSR7Y2FwaXRhbGl6ZShmb250U2l6ZSl9YF1cbiAgfTtcbiAgcmV0dXJuIGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRTdmdJY29uVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbn07XG5jb25zdCBTdmdJY29uUm9vdCA9IHN0eWxlZCgnc3ZnJywge1xuICBuYW1lOiAnTXVpU3ZnSWNvbicsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2Bmb250U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmZvbnRTaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIHRoZW1lLFxuICBvd25lclN0YXRlXG59KSA9PiB7XG4gIHZhciBfdGhlbWUkdHJhbnNpdGlvbnMsIF90aGVtZSR0cmFuc2l0aW9ucyRjciwgX3RoZW1lJHRyYW5zaXRpb25zMiwgX3RoZW1lJHR5cG9ncmFwaHksIF90aGVtZSR0eXBvZ3JhcGh5JHB4VCwgX3RoZW1lJHR5cG9ncmFwaHkyLCBfdGhlbWUkdHlwb2dyYXBoeTIkcHgsIF90aGVtZSR0eXBvZ3JhcGh5MywgX3RoZW1lJHR5cG9ncmFwaHkzJHB4LCBfcGFsZXR0ZSRvd25lclN0YXRlJGMsIF9wYWxldHRlLCBfcGFsZXR0ZTIsIF9wYWxldHRlMztcbiAgcmV0dXJuIHtcbiAgICB1c2VyU2VsZWN0OiAnbm9uZScsXG4gICAgd2lkdGg6ICcxZW0nLFxuICAgIGhlaWdodDogJzFlbScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgLy8gdGhlIDxzdmc+IHdpbGwgZGVmaW5lIHRoZSBwcm9wZXJ0eSB0aGF0IGhhcyBgY3VycmVudENvbG9yYFxuICAgIC8vIGUuZy4gaGVyb2ljb25zIHVzZXMgZmlsbD1cIm5vbmVcIiBhbmQgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICBmaWxsOiBvd25lclN0YXRlLmhhc1N2Z0FzQ2hpbGQgPyB1bmRlZmluZWQgOiAnY3VycmVudENvbG9yJyxcbiAgICBmbGV4U2hyaW5rOiAwLFxuICAgIHRyYW5zaXRpb246IChfdGhlbWUkdHJhbnNpdGlvbnMgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zJGNyID0gX3RoZW1lJHRyYW5zaXRpb25zLmNyZWF0ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGVtZSR0cmFuc2l0aW9ucyRjci5jYWxsKF90aGVtZSR0cmFuc2l0aW9ucywgJ2ZpbGwnLCB7XG4gICAgICBkdXJhdGlvbjogKF90aGVtZSR0cmFuc2l0aW9uczIgPSB0aGVtZS50cmFuc2l0aW9ucykgPT0gbnVsbCB8fCAoX3RoZW1lJHRyYW5zaXRpb25zMiA9IF90aGVtZSR0cmFuc2l0aW9uczIuZHVyYXRpb24pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHJhbnNpdGlvbnMyLnNob3J0ZXJcbiAgICB9KSxcbiAgICBmb250U2l6ZToge1xuICAgICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgICAgc21hbGw6ICgoX3RoZW1lJHR5cG9ncmFwaHkgPSB0aGVtZS50eXBvZ3JhcGh5KSA9PSBudWxsIHx8IChfdGhlbWUkdHlwb2dyYXBoeSRweFQgPSBfdGhlbWUkdHlwb2dyYXBoeS5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkkcHhULmNhbGwoX3RoZW1lJHR5cG9ncmFwaHksIDIwKSkgfHwgJzEuMjVyZW0nLFxuICAgICAgbWVkaXVtOiAoKF90aGVtZSR0eXBvZ3JhcGh5MiA9IHRoZW1lLnR5cG9ncmFwaHkpID09IG51bGwgfHwgKF90aGVtZSR0eXBvZ3JhcGh5MiRweCA9IF90aGVtZSR0eXBvZ3JhcGh5Mi5weFRvUmVtKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJHR5cG9ncmFwaHkyJHB4LmNhbGwoX3RoZW1lJHR5cG9ncmFwaHkyLCAyNCkpIHx8ICcxLjVyZW0nLFxuICAgICAgbGFyZ2U6ICgoX3RoZW1lJHR5cG9ncmFwaHkzID0gdGhlbWUudHlwb2dyYXBoeSkgPT0gbnVsbCB8fCAoX3RoZW1lJHR5cG9ncmFwaHkzJHB4ID0gX3RoZW1lJHR5cG9ncmFwaHkzLnB4VG9SZW0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkdHlwb2dyYXBoeTMkcHguY2FsbChfdGhlbWUkdHlwb2dyYXBoeTMsIDM1KSkgfHwgJzIuMTg3NXJlbSdcbiAgICB9W293bmVyU3RhdGUuZm9udFNpemVdLFxuICAgIC8vIFRPRE8gdjUgZGVwcmVjYXRlLCB2NiByZW1vdmUgZm9yIHN4XG4gICAgY29sb3I6IChfcGFsZXR0ZSRvd25lclN0YXRlJGMgPSAoX3BhbGV0dGUgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUgPSBfcGFsZXR0ZVtvd25lclN0YXRlLmNvbG9yXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlLm1haW4pICE9IG51bGwgPyBfcGFsZXR0ZSRvd25lclN0YXRlJGMgOiB7XG4gICAgICBhY3Rpb246IChfcGFsZXR0ZTIgPSAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZSkgPT0gbnVsbCB8fCAoX3BhbGV0dGUyID0gX3BhbGV0dGUyLmFjdGlvbikgPT0gbnVsbCA/IHZvaWQgMCA6IF9wYWxldHRlMi5hY3RpdmUsXG4gICAgICBkaXNhYmxlZDogKF9wYWxldHRlMyA9ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlKSA9PSBudWxsIHx8IChfcGFsZXR0ZTMgPSBfcGFsZXR0ZTMuYWN0aW9uKSA9PSBudWxsID8gdm9pZCAwIDogX3BhbGV0dGUzLmRpc2FibGVkLFxuICAgICAgaW5oZXJpdDogdW5kZWZpbmVkXG4gICAgfVtvd25lclN0YXRlLmNvbG9yXVxuICB9O1xufSk7XG5jb25zdCBTdmdJY29uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gU3ZnSWNvbihpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpU3ZnSWNvbidcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAnaW5oZXJpdCcsXG4gICAgICBjb21wb25lbnQgPSAnc3ZnJyxcbiAgICAgIGZvbnRTaXplID0gJ21lZGl1bScsXG4gICAgICBodG1sQ29sb3IsXG4gICAgICBpbmhlcml0Vmlld0JveCA9IGZhbHNlLFxuICAgICAgdGl0bGVBY2Nlc3MsXG4gICAgICB2aWV3Qm94ID0gJzAgMCAyNCAyNCdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgaGFzU3ZnQXNDaGlsZCA9IC8qI19fUFVSRV9fKi9SZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgJiYgY2hpbGRyZW4udHlwZSA9PT0gJ3N2Zyc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZm9udFNpemUsXG4gICAgaW5zdGFuY2VGb250U2l6ZTogaW5Qcm9wcy5mb250U2l6ZSxcbiAgICBpbmhlcml0Vmlld0JveCxcbiAgICB2aWV3Qm94LFxuICAgIGhhc1N2Z0FzQ2hpbGRcbiAgfSk7XG4gIGNvbnN0IG1vcmUgPSB7fTtcbiAgaWYgKCFpbmhlcml0Vmlld0JveCkge1xuICAgIG1vcmUudmlld0JveCA9IHZpZXdCb3g7XG4gIH1cbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFN2Z0ljb25Sb290LCBfZXh0ZW5kcyh7XG4gICAgYXM6IGNvbXBvbmVudCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIGZvY3VzYWJsZTogXCJmYWxzZVwiLFxuICAgIGNvbG9yOiBodG1sQ29sb3IsXG4gICAgXCJhcmlhLWhpZGRlblwiOiB0aXRsZUFjY2VzcyA/IHVuZGVmaW5lZCA6IHRydWUsXG4gICAgcm9sZTogdGl0bGVBY2Nlc3MgPyAnaW1nJyA6IHVuZGVmaW5lZCxcbiAgICByZWY6IHJlZlxuICB9LCBtb3JlLCBvdGhlciwgaGFzU3ZnQXNDaGlsZCAmJiBjaGlsZHJlbi5wcm9wcywge1xuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IFtoYXNTdmdBc0NoaWxkID8gY2hpbGRyZW4ucHJvcHMuY2hpbGRyZW4gOiBjaGlsZHJlbiwgdGl0bGVBY2Nlc3MgPyAvKiNfX1BVUkVfXyovX2pzeChcInRpdGxlXCIsIHtcbiAgICAgIGNoaWxkcmVuOiB0aXRsZUFjY2Vzc1xuICAgIH0pIDogbnVsbF1cbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBTdmdJY29uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIE5vZGUgcGFzc2VkIGludG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jYWRkaW5nLW5ldy1jb2xvcnMpLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgYGh0bWxDb2xvcmAgcHJvcCB0byBhcHBseSBhIGNvbG9yIGF0dHJpYnV0ZSB0byB0aGUgU1ZHIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICdpbmhlcml0J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdhY3Rpb24nLCAnZGlzYWJsZWQnLCAncHJpbWFyeScsICdzZWNvbmRhcnknLCAnZXJyb3InLCAnaW5mbycsICdzdWNjZXNzJywgJ3dhcm5pbmcnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCBmb3IgdGhlIHJvb3Qgbm9kZS5cbiAgICogRWl0aGVyIGEgc3RyaW5nIHRvIHVzZSBhIEhUTUwgZWxlbWVudCBvciBhIGNvbXBvbmVudC5cbiAgICovXG4gIGNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogVGhlIGZvbnRTaXplIGFwcGxpZWQgdG8gdGhlIGljb24uIERlZmF1bHRzIHRvIDI0cHgsIGJ1dCBjYW4gYmUgY29uZmlndXJlIHRvIGluaGVyaXQgZm9udCBzaXplLlxuICAgKiBAZGVmYXVsdCAnbWVkaXVtJ1xuICAgKi9cbiAgZm9udFNpemU6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdsYXJnZScsICdtZWRpdW0nLCAnc21hbGwnXSksIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgLyoqXG4gICAqIEFwcGxpZXMgYSBjb2xvciBhdHRyaWJ1dGUgdG8gdGhlIFNWRyBlbGVtZW50LlxuICAgKi9cbiAgaHRtbENvbG9yOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgcm9vdCBub2RlIHdpbGwgaW5oZXJpdCB0aGUgY3VzdG9tIGBjb21wb25lbnRgJ3Mgdmlld0JveCBhbmQgdGhlIGB2aWV3Qm94YFxuICAgKiBwcm9wIHdpbGwgYmUgaWdub3JlZC5cbiAgICogVXNlZnVsIHdoZW4geW91IHdhbnQgdG8gcmVmZXJlbmNlIGEgY3VzdG9tIGBjb21wb25lbnRgIGFuZCBoYXZlIGBTdmdJY29uYCBwYXNzIHRoYXRcbiAgICogYGNvbXBvbmVudGAncyB2aWV3Qm94IHRvIHRoZSByb290IG5vZGUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBpbmhlcml0Vmlld0JveDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgc2hhcGUtcmVuZGVyaW5nIGF0dHJpYnV0ZS4gVGhlIGJlaGF2aW9yIG9mIHRoZSBkaWZmZXJlbnQgb3B0aW9ucyBpcyBkZXNjcmliZWQgb24gdGhlXG4gICAqIFtNRE4gV2ViIERvY3NdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL1NWRy9BdHRyaWJ1dGUvc2hhcGUtcmVuZGVyaW5nKS5cbiAgICogSWYgeW91IGFyZSBoYXZpbmcgaXNzdWVzIHdpdGggYmx1cnJ5IGljb25zIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgdGhpcyBwcm9wLlxuICAgKi9cbiAgc2hhcGVSZW5kZXJpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBQcm92aWRlcyBhIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIGl0LlxuICAgKiBodHRwczovL3d3dy53My5vcmcvVFIvU1ZHLWFjY2Vzcy8jRXF1aXZhbGVudFxuICAgKi9cbiAgdGl0bGVBY2Nlc3M6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbGxvd3MgeW91IHRvIHJlZGVmaW5lIHdoYXQgdGhlIGNvb3JkaW5hdGVzIHdpdGhvdXQgdW5pdHMgbWVhbiBpbnNpZGUgYW4gU1ZHIGVsZW1lbnQuXG4gICAqIEZvciBleGFtcGxlLCBpZiB0aGUgU1ZHIGVsZW1lbnQgaXMgNTAwICh3aWR0aCkgYnkgMjAwIChoZWlnaHQpLFxuICAgKiBhbmQgeW91IHBhc3Mgdmlld0JveD1cIjAgMCA1MCAyMFwiLFxuICAgKiB0aGlzIG1lYW5zIHRoYXQgdGhlIGNvb3JkaW5hdGVzIGluc2lkZSB0aGUgU1ZHIHdpbGwgZ28gZnJvbSB0aGUgdG9wIGxlZnQgY29ybmVyICgwLDApXG4gICAqIHRvIGJvdHRvbSByaWdodCAoNTAsMjApIGFuZCBlYWNoIHVuaXQgd2lsbCBiZSB3b3J0aCAxMHB4LlxuICAgKiBAZGVmYXVsdCAnMCAwIDI0IDI0J1xuICAgKi9cbiAgdmlld0JveDogUHJvcFR5cGVzLnN0cmluZ1xufSA6IHZvaWQgMDtcblN2Z0ljb24ubXVpTmFtZSA9ICdTdmdJY29uJztcbmV4cG9ydCBkZWZhdWx0IFN2Z0ljb247IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBTdmdJY29uIGZyb20gJy4uL1N2Z0ljb24nO1xuXG4vKipcbiAqIFByaXZhdGUgbW9kdWxlIHJlc2VydmVkIGZvciBAbXVpIHBhY2thZ2VzLlxuICovXG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlU3ZnSWNvbihwYXRoLCBkaXNwbGF5TmFtZSkge1xuICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMsIHJlZikge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChTdmdJY29uLCBfZXh0ZW5kcyh7XG4gICAgICBcImRhdGEtdGVzdGlkXCI6IGAke2Rpc3BsYXlOYW1lfUljb25gLFxuICAgICAgcmVmOiByZWZcbiAgICB9LCBwcm9wcywge1xuICAgICAgY2hpbGRyZW46IHBhdGhcbiAgICB9KSk7XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBOZWVkIHRvIHNldCBgZGlzcGxheU5hbWVgIG9uIHRoZSBpbm5lciBjb21wb25lbnQgZm9yIFJlYWN0Lm1lbW8uXG4gICAgLy8gUmVhY3QgcHJpb3IgdG8gMTYuMTQgaWdub3JlcyBgZGlzcGxheU5hbWVgIG9uIHRoZSB3cmFwcGVyLlxuICAgIENvbXBvbmVudC5kaXNwbGF5TmFtZSA9IGAke2Rpc3BsYXlOYW1lfUljb25gO1xuICB9XG4gIENvbXBvbmVudC5tdWlOYW1lID0gU3ZnSWNvbi5tdWlOYW1lO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0Lm1lbW8oIC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKENvbXBvbmVudCkpO1xufSIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTE1LjQxIDE2LjA5bC00LjU4LTQuNTkgNC41OC00LjU5TDE0IDUuNWwtNiA2IDYgNnpcIlxufSksICdLZXlib2FyZEFycm93TGVmdCcpOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNyZWF0ZVN2Z0ljb24gZnJvbSAnLi4vLi4vdXRpbHMvY3JlYXRlU3ZnSWNvbic7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVN2Z0ljb24oIC8qI19fUFVSRV9fKi9fanN4KFwicGF0aFwiLCB7XG4gIGQ6IFwiTTguNTkgMTYuMzRsNC41OC00LjU5LTQuNTgtNC41OUwxMCA1Ljc1bDYgNi02IDZ6XCJcbn0pLCAnS2V5Ym9hcmRBcnJvd1JpZ2h0Jyk7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYlNjcm9sbEJ1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpVGFiU2Nyb2xsQnV0dG9uJywgc2xvdCk7XG59XG5jb25zdCB0YWJTY3JvbGxCdXR0b25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVGFiU2Nyb2xsQnV0dG9uJywgWydyb290JywgJ3ZlcnRpY2FsJywgJ2hvcml6b250YWwnLCAnZGlzYWJsZWQnXSk7XG5leHBvcnQgZGVmYXVsdCB0YWJTY3JvbGxCdXR0b25DbGFzc2VzOyIsIid1c2UgY2xpZW50JztcblxuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvYXJpYS1yb2xlICovXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwic2xvdHNcIiwgXCJzbG90UHJvcHNcIiwgXCJkaXJlY3Rpb25cIiwgXCJvcmllbnRhdGlvblwiLCBcImRpc2FibGVkXCJdO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMsIHVzZVNsb3RQcm9wcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgS2V5Ym9hcmRBcnJvd0xlZnQgZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL0tleWJvYXJkQXJyb3dMZWZ0JztcbmltcG9ydCBLZXlib2FyZEFycm93UmlnaHQgZnJvbSAnLi4vaW50ZXJuYWwvc3ZnLWljb25zL0tleWJvYXJkQXJyb3dSaWdodCc7XG5pbXBvcnQgQnV0dG9uQmFzZSBmcm9tICcuLi9CdXR0b25CYXNlJztcbmltcG9ydCB1c2VUaGVtZSBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWUnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB0YWJTY3JvbGxCdXR0b25DbGFzc2VzLCB7IGdldFRhYlNjcm9sbEJ1dHRvblV0aWxpdHlDbGFzcyB9IGZyb20gJy4vdGFiU2Nyb2xsQnV0dG9uQ2xhc3Nlcyc7XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuY29uc3QgdXNlVXRpbGl0eUNsYXNzZXMgPSBvd25lclN0YXRlID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzZXMsXG4gICAgb3JpZW50YXRpb24sXG4gICAgZGlzYWJsZWRcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIG9yaWVudGF0aW9uLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldFRhYlNjcm9sbEJ1dHRvblV0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgVGFiU2Nyb2xsQnV0dG9uUm9vdCA9IHN0eWxlZChCdXR0b25CYXNlLCB7XG4gIG5hbWU6ICdNdWlUYWJTY3JvbGxCdXR0b24nLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS5vcmllbnRhdGlvbiAmJiBzdHlsZXNbb3duZXJTdGF0ZS5vcmllbnRhdGlvbl1dO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHdpZHRoOiA0MCxcbiAgZmxleFNocmluazogMCxcbiAgb3BhY2l0eTogMC44LFxuICBbYCYuJHt0YWJTY3JvbGxCdXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgb3BhY2l0eTogMFxuICB9XG59LCBvd25lclN0YXRlLm9yaWVudGF0aW9uID09PSAndmVydGljYWwnICYmIHtcbiAgd2lkdGg6ICcxMDAlJyxcbiAgaGVpZ2h0OiA0MCxcbiAgJyYgc3ZnJzoge1xuICAgIHRyYW5zZm9ybTogYHJvdGF0ZSgke293bmVyU3RhdGUuaXNSdGwgPyAtOTAgOiA5MH1kZWcpYFxuICB9XG59KSk7XG5jb25zdCBUYWJTY3JvbGxCdXR0b24gPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUYWJTY3JvbGxCdXR0b24oaW5Qcm9wcywgcmVmKSB7XG4gIHZhciBfc2xvdHMkU3RhcnRTY3JvbGxCdXQsIF9zbG90cyRFbmRTY3JvbGxCdXR0bztcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpVGFiU2Nyb2xsQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgc2xvdHMgPSB7fSxcbiAgICAgIHNsb3RQcm9wcyA9IHt9LFxuICAgICAgZGlyZWN0aW9uXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNSdGwgPSB0aGVtZS5kaXJlY3Rpb24gPT09ICdydGwnO1xuICBjb25zdCBvd25lclN0YXRlID0gX2V4dGVuZHMoe1xuICAgIGlzUnRsXG4gIH0sIHByb3BzKTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBTdGFydEJ1dHRvbkljb24gPSAoX3Nsb3RzJFN0YXJ0U2Nyb2xsQnV0ID0gc2xvdHMuU3RhcnRTY3JvbGxCdXR0b25JY29uKSAhPSBudWxsID8gX3Nsb3RzJFN0YXJ0U2Nyb2xsQnV0IDogS2V5Ym9hcmRBcnJvd0xlZnQ7XG4gIGNvbnN0IEVuZEJ1dHRvbkljb24gPSAoX3Nsb3RzJEVuZFNjcm9sbEJ1dHRvID0gc2xvdHMuRW5kU2Nyb2xsQnV0dG9uSWNvbikgIT0gbnVsbCA/IF9zbG90cyRFbmRTY3JvbGxCdXR0byA6IEtleWJvYXJkQXJyb3dSaWdodDtcbiAgY29uc3Qgc3RhcnRCdXR0b25JY29uUHJvcHMgPSB1c2VTbG90UHJvcHMoe1xuICAgIGVsZW1lbnRUeXBlOiBTdGFydEJ1dHRvbkljb24sXG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHNsb3RQcm9wcy5zdGFydFNjcm9sbEJ1dHRvbkljb24sXG4gICAgYWRkaXRpb25hbFByb3BzOiB7XG4gICAgICBmb250U2l6ZTogJ3NtYWxsJ1xuICAgIH0sXG4gICAgb3duZXJTdGF0ZVxuICB9KTtcbiAgY29uc3QgZW5kQnV0dG9uSWNvblByb3BzID0gdXNlU2xvdFByb3BzKHtcbiAgICBlbGVtZW50VHlwZTogRW5kQnV0dG9uSWNvbixcbiAgICBleHRlcm5hbFNsb3RQcm9wczogc2xvdFByb3BzLmVuZFNjcm9sbEJ1dHRvbkljb24sXG4gICAgYWRkaXRpb25hbFByb3BzOiB7XG4gICAgICBmb250U2l6ZTogJ3NtYWxsJ1xuICAgIH0sXG4gICAgb3duZXJTdGF0ZVxuICB9KTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRhYlNjcm9sbEJ1dHRvblJvb3QsIF9leHRlbmRzKHtcbiAgICBjb21wb25lbnQ6IFwiZGl2XCIsXG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMucm9vdCwgY2xhc3NOYW1lKSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBudWxsLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgdGFiSW5kZXg6IG51bGxcbiAgfSwgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogZGlyZWN0aW9uID09PSAnbGVmdCcgPyAvKiNfX1BVUkVfXyovX2pzeChTdGFydEJ1dHRvbkljb24sIF9leHRlbmRzKHt9LCBzdGFydEJ1dHRvbkljb25Qcm9wcykpIDogLyojX19QVVJFX18qL19qc3goRW5kQnV0dG9uSWNvbiwgX2V4dGVuZHMoe30sIGVuZEJ1dHRvbkljb25Qcm9wcykpXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gVGFiU2Nyb2xsQnV0dG9uLnByb3BUeXBlcyAvKiByZW1vdmUtcHJvcHR5cGVzICovID0ge1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXJuaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIHwgVGhlc2UgUHJvcFR5cGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlZmluaXRpb25zIHxcbiAgLy8gfCAgICAgVG8gdXBkYXRlIHRoZW0gZWRpdCB0aGUgZC50cyBmaWxlIGFuZCBydW4gXCJ5YXJuIHByb3B0eXBlc1wiICAgICB8XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGRpcmVjdGlvbiB0aGUgYnV0dG9uIHNob3VsZCBpbmRpY2F0ZS5cbiAgICovXG4gIGRpcmVjdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnbGVmdCcsICdyaWdodCddKS5pc1JlcXVpcmVkLFxuICAvKipcbiAgICogSWYgYHRydWVgLCB0aGUgY29tcG9uZW50IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBvcmllbnRhdGlvbiAobGF5b3V0IGZsb3cgZGlyZWN0aW9uKS5cbiAgICovXG4gIG9yaWVudGF0aW9uOiBQcm9wVHlwZXMub25lT2YoWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10pLmlzUmVxdWlyZWQsXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBlbmRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAgIHN0YXJ0U2Nyb2xsQnV0dG9uSWNvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBFbmRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgU3RhcnRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBUYWJTY3JvbGxCdXR0b247IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYnNVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aVRhYnMnLCBzbG90KTtcbn1cbmNvbnN0IHRhYnNDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpVGFicycsIFsncm9vdCcsICd2ZXJ0aWNhbCcsICdmbGV4Q29udGFpbmVyJywgJ2ZsZXhDb250YWluZXJWZXJ0aWNhbCcsICdjZW50ZXJlZCcsICdzY3JvbGxlcicsICdmaXhlZCcsICdzY3JvbGxhYmxlWCcsICdzY3JvbGxhYmxlWScsICdoaWRlU2Nyb2xsYmFyJywgJ3Njcm9sbEJ1dHRvbnMnLCAnc2Nyb2xsQnV0dG9uc0hpZGVNb2JpbGUnLCAnaW5kaWNhdG9yJ10pO1xuZXhwb3J0IGRlZmF1bHQgdGFic0NsYXNzZXM7IiwiaW1wb3J0IHsgdW5zdGFibGVfb3duZXJEb2N1bWVudCBhcyBvd25lckRvY3VtZW50IH0gZnJvbSAnQG11aS91dGlscyc7XG5leHBvcnQgZGVmYXVsdCBvd25lckRvY3VtZW50OyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmNvbnN0IF9leGNsdWRlZCA9IFtcImFyaWEtbGFiZWxcIiwgXCJhcmlhLWxhYmVsbGVkYnlcIiwgXCJhY3Rpb25cIiwgXCJjZW50ZXJlZFwiLCBcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwiY29tcG9uZW50XCIsIFwiYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlXCIsIFwiaW5kaWNhdG9yQ29sb3JcIiwgXCJvbkNoYW5nZVwiLCBcIm9yaWVudGF0aW9uXCIsIFwiU2Nyb2xsQnV0dG9uQ29tcG9uZW50XCIsIFwic2Nyb2xsQnV0dG9uc1wiLCBcInNlbGVjdGlvbkZvbGxvd3NGb2N1c1wiLCBcInNsb3RzXCIsIFwic2xvdFByb3BzXCIsIFwiVGFiSW5kaWNhdG9yUHJvcHNcIiwgXCJUYWJTY3JvbGxCdXR0b25Qcm9wc1wiLCBcInRleHRDb2xvclwiLCBcInZhbHVlXCIsIFwidmFyaWFudFwiLCBcInZpc2libGVTY3JvbGxiYXJcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBpc0ZyYWdtZW50IH0gZnJvbSAncmVhY3QtaXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMsIHVzZVNsb3RQcm9wcyB9IGZyb20gJ0BtdWkvYmFzZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZSc7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSAnLi4vdXRpbHMvZGVib3VuY2UnO1xuaW1wb3J0IHsgZ2V0Tm9ybWFsaXplZFNjcm9sbExlZnQsIGRldGVjdFNjcm9sbFR5cGUgfSBmcm9tICcuLi91dGlscy9zY3JvbGxMZWZ0JztcbmltcG9ydCBhbmltYXRlIGZyb20gJy4uL2ludGVybmFsL2FuaW1hdGUnO1xuaW1wb3J0IFNjcm9sbGJhclNpemUgZnJvbSAnLi9TY3JvbGxiYXJTaXplJztcbmltcG9ydCBUYWJTY3JvbGxCdXR0b24gZnJvbSAnLi4vVGFiU2Nyb2xsQnV0dG9uJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJy4uL3V0aWxzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHRhYnNDbGFzc2VzLCB7IGdldFRhYnNVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL3RhYnNDbGFzc2VzJztcbmltcG9ydCBvd25lckRvY3VtZW50IGZyb20gJy4uL3V0aWxzL293bmVyRG9jdW1lbnQnO1xuaW1wb3J0IG93bmVyV2luZG93IGZyb20gJy4uL3V0aWxzL293bmVyV2luZG93JztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBuZXh0SXRlbSA9IChsaXN0LCBpdGVtKSA9PiB7XG4gIGlmIChsaXN0ID09PSBpdGVtKSB7XG4gICAgcmV0dXJuIGxpc3QuZmlyc3RDaGlsZDtcbiAgfVxuICBpZiAoaXRlbSAmJiBpdGVtLm5leHRFbGVtZW50U2libGluZykge1xuICAgIHJldHVybiBpdGVtLm5leHRFbGVtZW50U2libGluZztcbiAgfVxuICByZXR1cm4gbGlzdC5maXJzdENoaWxkO1xufTtcbmNvbnN0IHByZXZpb3VzSXRlbSA9IChsaXN0LCBpdGVtKSA9PiB7XG4gIGlmIChsaXN0ID09PSBpdGVtKSB7XG4gICAgcmV0dXJuIGxpc3QubGFzdENoaWxkO1xuICB9XG4gIGlmIChpdGVtICYmIGl0ZW0ucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgIHJldHVybiBpdGVtLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gIH1cbiAgcmV0dXJuIGxpc3QubGFzdENoaWxkO1xufTtcbmNvbnN0IG1vdmVGb2N1cyA9IChsaXN0LCBjdXJyZW50Rm9jdXMsIHRyYXZlcnNhbEZ1bmN0aW9uKSA9PiB7XG4gIGxldCB3cmFwcGVkT25jZSA9IGZhbHNlO1xuICBsZXQgbmV4dEZvY3VzID0gdHJhdmVyc2FsRnVuY3Rpb24obGlzdCwgY3VycmVudEZvY3VzKTtcbiAgd2hpbGUgKG5leHRGb2N1cykge1xuICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcC5cbiAgICBpZiAobmV4dEZvY3VzID09PSBsaXN0LmZpcnN0Q2hpbGQpIHtcbiAgICAgIGlmICh3cmFwcGVkT25jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3cmFwcGVkT25jZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gU2FtZSBsb2dpYyBhcyB1c2VBdXRvY29tcGxldGUuanNcbiAgICBjb25zdCBuZXh0Rm9jdXNEaXNhYmxlZCA9IG5leHRGb2N1cy5kaXNhYmxlZCB8fCBuZXh0Rm9jdXMuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgPT09ICd0cnVlJztcbiAgICBpZiAoIW5leHRGb2N1cy5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4JykgfHwgbmV4dEZvY3VzRGlzYWJsZWQpIHtcbiAgICAgIC8vIE1vdmUgdG8gdGhlIG5leHQgZWxlbWVudC5cbiAgICAgIG5leHRGb2N1cyA9IHRyYXZlcnNhbEZ1bmN0aW9uKGxpc3QsIG5leHRGb2N1cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHRGb2N1cy5mb2N1cygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufTtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICB2ZXJ0aWNhbCxcbiAgICBmaXhlZCxcbiAgICBoaWRlU2Nyb2xsYmFyLFxuICAgIHNjcm9sbGFibGVYLFxuICAgIHNjcm9sbGFibGVZLFxuICAgIGNlbnRlcmVkLFxuICAgIHNjcm9sbEJ1dHRvbnNIaWRlTW9iaWxlLFxuICAgIGNsYXNzZXNcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZlcnRpY2FsICYmICd2ZXJ0aWNhbCddLFxuICAgIHNjcm9sbGVyOiBbJ3Njcm9sbGVyJywgZml4ZWQgJiYgJ2ZpeGVkJywgaGlkZVNjcm9sbGJhciAmJiAnaGlkZVNjcm9sbGJhcicsIHNjcm9sbGFibGVYICYmICdzY3JvbGxhYmxlWCcsIHNjcm9sbGFibGVZICYmICdzY3JvbGxhYmxlWSddLFxuICAgIGZsZXhDb250YWluZXI6IFsnZmxleENvbnRhaW5lcicsIHZlcnRpY2FsICYmICdmbGV4Q29udGFpbmVyVmVydGljYWwnLCBjZW50ZXJlZCAmJiAnY2VudGVyZWQnXSxcbiAgICBpbmRpY2F0b3I6IFsnaW5kaWNhdG9yJ10sXG4gICAgc2Nyb2xsQnV0dG9uczogWydzY3JvbGxCdXR0b25zJywgc2Nyb2xsQnV0dG9uc0hpZGVNb2JpbGUgJiYgJ3Njcm9sbEJ1dHRvbnNIaWRlTW9iaWxlJ10sXG4gICAgc2Nyb2xsYWJsZVg6IFtzY3JvbGxhYmxlWCAmJiAnc2Nyb2xsYWJsZVgnXSxcbiAgICBoaWRlU2Nyb2xsYmFyOiBbaGlkZVNjcm9sbGJhciAmJiAnaGlkZVNjcm9sbGJhciddXG4gIH07XG4gIHJldHVybiBjb21wb3NlQ2xhc3NlcyhzbG90cywgZ2V0VGFic1V0aWxpdHlDbGFzcywgY2xhc3Nlcyk7XG59O1xuY29uc3QgVGFic1Jvb3QgPSBzdHlsZWQoJ2RpdicsIHtcbiAgbmFtZTogJ011aVRhYnMnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFt7XG4gICAgICBbYCYgLiR7dGFic0NsYXNzZXMuc2Nyb2xsQnV0dG9uc31gXTogc3R5bGVzLnNjcm9sbEJ1dHRvbnNcbiAgICB9LCB7XG4gICAgICBbYCYgLiR7dGFic0NsYXNzZXMuc2Nyb2xsQnV0dG9uc31gXTogb3duZXJTdGF0ZS5zY3JvbGxCdXR0b25zSGlkZU1vYmlsZSAmJiBzdHlsZXMuc2Nyb2xsQnV0dG9uc0hpZGVNb2JpbGVcbiAgICB9LCBzdHlsZXMucm9vdCwgb3duZXJTdGF0ZS52ZXJ0aWNhbCAmJiBzdHlsZXMudmVydGljYWxdO1xuICB9XG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gIG1pbkhlaWdodDogNDgsXG4gIC8vIEFkZCBpT1MgbW9tZW50dW0gc2Nyb2xsaW5nIGZvciBpT1MgPCAxMy4wXG4gIFdlYmtpdE92ZXJmbG93U2Nyb2xsaW5nOiAndG91Y2gnLFxuICBkaXNwbGF5OiAnZmxleCdcbn0sIG93bmVyU3RhdGUudmVydGljYWwgJiYge1xuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ1xufSwgb3duZXJTdGF0ZS5zY3JvbGxCdXR0b25zSGlkZU1vYmlsZSAmJiB7XG4gIFtgJiAuJHt0YWJzQ2xhc3Nlcy5zY3JvbGxCdXR0b25zfWBdOiB7XG4gICAgW3RoZW1lLmJyZWFrcG9pbnRzLmRvd24oJ3NtJyldOiB7XG4gICAgICBkaXNwbGF5OiAnbm9uZSdcbiAgICB9XG4gIH1cbn0pKTtcbmNvbnN0IFRhYnNTY3JvbGxlciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpVGFicycsXG4gIHNsb3Q6ICdTY3JvbGxlcicsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIG93bmVyU3RhdGVcbiAgICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIFtzdHlsZXMuc2Nyb2xsZXIsIG93bmVyU3RhdGUuZml4ZWQgJiYgc3R5bGVzLmZpeGVkLCBvd25lclN0YXRlLmhpZGVTY3JvbGxiYXIgJiYgc3R5bGVzLmhpZGVTY3JvbGxiYXIsIG93bmVyU3RhdGUuc2Nyb2xsYWJsZVggJiYgc3R5bGVzLnNjcm9sbGFibGVYLCBvd25lclN0YXRlLnNjcm9sbGFibGVZICYmIHN0eWxlcy5zY3JvbGxhYmxlWV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICBmbGV4OiAnMSAxIGF1dG8nLFxuICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xufSwgb3duZXJTdGF0ZS5maXhlZCAmJiB7XG4gIG92ZXJmbG93WDogJ2hpZGRlbicsXG4gIHdpZHRoOiAnMTAwJSdcbn0sIG93bmVyU3RhdGUuaGlkZVNjcm9sbGJhciAmJiB7XG4gIC8vIEhpZGUgZGltZW5zaW9ubGVzcyBzY3JvbGxiYXIgb24gbWFjT1NcbiAgc2Nyb2xsYmFyV2lkdGg6ICdub25lJyxcbiAgLy8gRmlyZWZveFxuICAnJjo6LXdlYmtpdC1zY3JvbGxiYXInOiB7XG4gICAgZGlzcGxheTogJ25vbmUnIC8vIFNhZmFyaSArIENocm9tZVxuICB9XG59LCBvd25lclN0YXRlLnNjcm9sbGFibGVYICYmIHtcbiAgb3ZlcmZsb3dYOiAnYXV0bycsXG4gIG92ZXJmbG93WTogJ2hpZGRlbidcbn0sIG93bmVyU3RhdGUuc2Nyb2xsYWJsZVkgJiYge1xuICBvdmVyZmxvd1k6ICdhdXRvJyxcbiAgb3ZlcmZsb3dYOiAnaGlkZGVuJ1xufSkpO1xuY29uc3QgRmxleENvbnRhaW5lciA9IHN0eWxlZCgnZGl2Jywge1xuICBuYW1lOiAnTXVpVGFicycsXG4gIHNsb3Q6ICdGbGV4Q29udGFpbmVyJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5mbGV4Q29udGFpbmVyLCBvd25lclN0YXRlLnZlcnRpY2FsICYmIHN0eWxlcy5mbGV4Q29udGFpbmVyVmVydGljYWwsIG93bmVyU3RhdGUuY2VudGVyZWQgJiYgc3R5bGVzLmNlbnRlcmVkXTtcbiAgfVxufSkoKHtcbiAgb3duZXJTdGF0ZVxufSkgPT4gX2V4dGVuZHMoe1xuICBkaXNwbGF5OiAnZmxleCdcbn0sIG93bmVyU3RhdGUudmVydGljYWwgJiYge1xuICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJ1xufSwgb3duZXJTdGF0ZS5jZW50ZXJlZCAmJiB7XG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJ1xufSkpO1xuY29uc3QgVGFic0luZGljYXRvciA9IHN0eWxlZCgnc3BhbicsIHtcbiAgbmFtZTogJ011aVRhYnMnLFxuICBzbG90OiAnSW5kaWNhdG9yJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMuaW5kaWNhdG9yXG59KSgoe1xuICBvd25lclN0YXRlLFxuICB0aGVtZVxufSkgPT4gX2V4dGVuZHMoe1xuICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgaGVpZ2h0OiAyLFxuICBib3R0b206IDAsXG4gIHdpZHRoOiAnMTAwJScsXG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgpXG59LCBvd25lclN0YXRlLmluZGljYXRvckNvbG9yID09PSAncHJpbWFyeScgJiYge1xuICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnByaW1hcnkubWFpblxufSwgb3duZXJTdGF0ZS5pbmRpY2F0b3JDb2xvciA9PT0gJ3NlY29uZGFyeScgJiYge1xuICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLnNlY29uZGFyeS5tYWluXG59LCBvd25lclN0YXRlLnZlcnRpY2FsICYmIHtcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHdpZHRoOiAyLFxuICByaWdodDogMFxufSkpO1xuY29uc3QgVGFic1Njcm9sbGJhclNpemUgPSBzdHlsZWQoU2Nyb2xsYmFyU2l6ZSwge1xuICBuYW1lOiAnTXVpVGFicycsXG4gIHNsb3Q6ICdTY3JvbGxiYXJTaXplJ1xufSkoe1xuICBvdmVyZmxvd1g6ICdhdXRvJyxcbiAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgLy8gSGlkZSBkaW1lbnNpb25sZXNzIHNjcm9sbGJhciBvbiBtYWNPU1xuICBzY3JvbGxiYXJXaWR0aDogJ25vbmUnLFxuICAvLyBGaXJlZm94XG4gICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICBkaXNwbGF5OiAnbm9uZScgLy8gU2FmYXJpICsgQ2hyb21lXG4gIH1cbn0pO1xuXG5jb25zdCBkZWZhdWx0SW5kaWNhdG9yU3R5bGUgPSB7fTtcbmxldCB3YXJuZWRPbmNlVGFiUHJlc2VudCA9IGZhbHNlO1xuY29uc3QgVGFicyA9IC8qI19fUFVSRV9fKi9SZWFjdC5mb3J3YXJkUmVmKGZ1bmN0aW9uIFRhYnMoaW5Qcm9wcywgcmVmKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aVRhYnMnXG4gIH0pO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzUnRsID0gdGhlbWUuZGlyZWN0aW9uID09PSAncnRsJztcbiAgY29uc3Qge1xuICAgICAgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwsXG4gICAgICAnYXJpYS1sYWJlbGxlZGJ5JzogYXJpYUxhYmVsbGVkQnksXG4gICAgICBhY3Rpb24sXG4gICAgICBjZW50ZXJlZCA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuUHJvcCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbXBvbmVudCA9ICdkaXYnLFxuICAgICAgYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlID0gZmFsc2UsXG4gICAgICBpbmRpY2F0b3JDb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcsXG4gICAgICBTY3JvbGxCdXR0b25Db21wb25lbnQgPSBUYWJTY3JvbGxCdXR0b24sXG4gICAgICBzY3JvbGxCdXR0b25zID0gJ2F1dG8nLFxuICAgICAgc2VsZWN0aW9uRm9sbG93c0ZvY3VzLFxuICAgICAgc2xvdHMgPSB7fSxcbiAgICAgIHNsb3RQcm9wcyA9IHt9LFxuICAgICAgVGFiSW5kaWNhdG9yUHJvcHMgPSB7fSxcbiAgICAgIFRhYlNjcm9sbEJ1dHRvblByb3BzID0ge30sXG4gICAgICB0ZXh0Q29sb3IgPSAncHJpbWFyeScsXG4gICAgICB2YWx1ZSxcbiAgICAgIHZhcmlhbnQgPSAnc3RhbmRhcmQnLFxuICAgICAgdmlzaWJsZVNjcm9sbGJhciA9IGZhbHNlXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IHNjcm9sbGFibGUgPSB2YXJpYW50ID09PSAnc2Nyb2xsYWJsZSc7XG4gIGNvbnN0IHZlcnRpY2FsID0gb3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCc7XG4gIGNvbnN0IHNjcm9sbFN0YXJ0ID0gdmVydGljYWwgPyAnc2Nyb2xsVG9wJyA6ICdzY3JvbGxMZWZ0JztcbiAgY29uc3Qgc3RhcnQgPSB2ZXJ0aWNhbCA/ICd0b3AnIDogJ2xlZnQnO1xuICBjb25zdCBlbmQgPSB2ZXJ0aWNhbCA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgY29uc3QgY2xpZW50U2l6ZSA9IHZlcnRpY2FsID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICBjb25zdCBzaXplID0gdmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb21wb25lbnQsXG4gICAgYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlLFxuICAgIGluZGljYXRvckNvbG9yLFxuICAgIG9yaWVudGF0aW9uLFxuICAgIHZlcnRpY2FsLFxuICAgIHNjcm9sbEJ1dHRvbnMsXG4gICAgdGV4dENvbG9yLFxuICAgIHZhcmlhbnQsXG4gICAgdmlzaWJsZVNjcm9sbGJhcixcbiAgICBmaXhlZDogIXNjcm9sbGFibGUsXG4gICAgaGlkZVNjcm9sbGJhcjogc2Nyb2xsYWJsZSAmJiAhdmlzaWJsZVNjcm9sbGJhcixcbiAgICBzY3JvbGxhYmxlWDogc2Nyb2xsYWJsZSAmJiAhdmVydGljYWwsXG4gICAgc2Nyb2xsYWJsZVk6IHNjcm9sbGFibGUgJiYgdmVydGljYWwsXG4gICAgY2VudGVyZWQ6IGNlbnRlcmVkICYmICFzY3JvbGxhYmxlLFxuICAgIHNjcm9sbEJ1dHRvbnNIaWRlTW9iaWxlOiAhYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsQnV0dG9uSWNvblByb3BzID0gdXNlU2xvdFByb3BzKHtcbiAgICBlbGVtZW50VHlwZTogc2xvdHMuU3RhcnRTY3JvbGxCdXR0b25JY29uLFxuICAgIGV4dGVybmFsU2xvdFByb3BzOiBzbG90UHJvcHMuc3RhcnRTY3JvbGxCdXR0b25JY29uLFxuICAgIG93bmVyU3RhdGVcbiAgfSk7XG4gIGNvbnN0IGVuZFNjcm9sbEJ1dHRvbkljb25Qcm9wcyA9IHVzZVNsb3RQcm9wcyh7XG4gICAgZWxlbWVudFR5cGU6IHNsb3RzLkVuZFNjcm9sbEJ1dHRvbkljb24sXG4gICAgZXh0ZXJuYWxTbG90UHJvcHM6IHNsb3RQcm9wcy5lbmRTY3JvbGxCdXR0b25JY29uLFxuICAgIG93bmVyU3RhdGVcbiAgfSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGNlbnRlcmVkICYmIHNjcm9sbGFibGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01VSTogWW91IGNhbiBub3QgdXNlIHRoZSBgY2VudGVyZWQ9e3RydWV9YCBhbmQgYHZhcmlhbnQ9XCJzY3JvbGxhYmxlXCJgIHByb3BlcnRpZXMgJyArICdhdCB0aGUgc2FtZSB0aW1lIG9uIGEgYFRhYnNgIGNvbXBvbmVudC4nKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgW21vdW50ZWQsIHNldE1vdW50ZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaW5kaWNhdG9yU3R5bGUsIHNldEluZGljYXRvclN0eWxlXSA9IFJlYWN0LnVzZVN0YXRlKGRlZmF1bHRJbmRpY2F0b3JTdHlsZSk7XG4gIGNvbnN0IFtkaXNwbGF5U3RhcnRTY3JvbGwsIHNldERpc3BsYXlTdGFydFNjcm9sbF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtkaXNwbGF5RW5kU2Nyb2xsLCBzZXREaXNwbGF5RW5kU2Nyb2xsXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3VwZGF0ZVNjcm9sbE9ic2VydmVyLCBzZXRVcGRhdGVTY3JvbGxPYnNlcnZlcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzY3JvbGxlclN0eWxlLCBzZXRTY3JvbGxlclN0eWxlXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgc2Nyb2xsYmFyV2lkdGg6IDBcbiAgfSk7XG4gIGNvbnN0IHZhbHVlVG9JbmRleCA9IG5ldyBNYXAoKTtcbiAgY29uc3QgdGFic1JlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgdGFiTGlzdFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgY29uc3QgZ2V0VGFic01ldGEgPSAoKSA9PiB7XG4gICAgY29uc3QgdGFic05vZGUgPSB0YWJzUmVmLmN1cnJlbnQ7XG4gICAgbGV0IHRhYnNNZXRhO1xuICAgIGlmICh0YWJzTm9kZSkge1xuICAgICAgY29uc3QgcmVjdCA9IHRhYnNOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgLy8gY3JlYXRlIGEgbmV3IG9iamVjdCB3aXRoIENsaWVudFJlY3QgY2xhc3MgcHJvcHMgKyBzY3JvbGxMZWZ0XG4gICAgICB0YWJzTWV0YSA9IHtcbiAgICAgICAgY2xpZW50V2lkdGg6IHRhYnNOb2RlLmNsaWVudFdpZHRoLFxuICAgICAgICBzY3JvbGxMZWZ0OiB0YWJzTm9kZS5zY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxUb3A6IHRhYnNOb2RlLnNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsTGVmdE5vcm1hbGl6ZWQ6IGdldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0KHRhYnNOb2RlLCB0aGVtZS5kaXJlY3Rpb24pLFxuICAgICAgICBzY3JvbGxXaWR0aDogdGFic05vZGUuc2Nyb2xsV2lkdGgsXG4gICAgICAgIHRvcDogcmVjdC50b3AsXG4gICAgICAgIGJvdHRvbTogcmVjdC5ib3R0b20sXG4gICAgICAgIGxlZnQ6IHJlY3QubGVmdCxcbiAgICAgICAgcmlnaHQ6IHJlY3QucmlnaHRcbiAgICAgIH07XG4gICAgfVxuICAgIGxldCB0YWJNZXRhO1xuICAgIGlmICh0YWJzTm9kZSAmJiB2YWx1ZSAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGFiTGlzdFJlZi5jdXJyZW50LmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgdGFiID0gY2hpbGRyZW5bdmFsdWVUb0luZGV4LmdldCh2YWx1ZSldO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFtgTVVJOiBUaGUgXFxgdmFsdWVcXGAgcHJvdmlkZWQgdG8gdGhlIFRhYnMgY29tcG9uZW50IGlzIGludmFsaWQuYCwgYE5vbmUgb2YgdGhlIFRhYnMnIGNoaWxkcmVuIG1hdGNoIHdpdGggXCIke3ZhbHVlfVwiLmAsIHZhbHVlVG9JbmRleC5rZXlzID8gYFlvdSBjYW4gcHJvdmlkZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6ICR7QXJyYXkuZnJvbSh2YWx1ZVRvSW5kZXgua2V5cygpKS5qb2luKCcsICcpfS5gIDogbnVsbF0uam9pbignXFxuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YWJNZXRhID0gdGFiID8gdGFiLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDogbnVsbDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICd0ZXN0JyAmJiAhd2FybmVkT25jZVRhYlByZXNlbnQgJiYgdGFiTWV0YSAmJiB0YWJNZXRhLndpZHRoID09PSAwICYmIHRhYk1ldGEuaGVpZ2h0ID09PSAwICYmXG4gICAgICAgICAgLy8gaWYgdGhlIHdob2xlIFRhYnMgY29tcG9uZW50IGlzIGhpZGRlbiwgZG9uJ3Qgd2FyblxuICAgICAgICAgIHRhYnNNZXRhLmNsaWVudFdpZHRoICE9PSAwKSB7XG4gICAgICAgICAgICB0YWJzTWV0YSA9IG51bGw7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnTVVJOiBUaGUgYHZhbHVlYCBwcm92aWRlZCB0byB0aGUgVGFicyBjb21wb25lbnQgaXMgaW52YWxpZC4nLCBgVGhlIFRhYiB3aXRoIHRoaXMgXFxgdmFsdWVcXGAgKFwiJHt2YWx1ZX1cIikgaXMgbm90IHBhcnQgb2YgdGhlIGRvY3VtZW50IGxheW91dC5gLCBcIk1ha2Ugc3VyZSB0aGUgdGFiIGl0ZW0gaXMgcHJlc2VudCBpbiB0aGUgZG9jdW1lbnQgb3IgdGhhdCBpdCdzIG5vdCBgZGlzcGxheTogbm9uZWAuXCJdLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgICAgIHdhcm5lZE9uY2VUYWJQcmVzZW50ID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRhYnNNZXRhLFxuICAgICAgdGFiTWV0YVxuICAgIH07XG4gIH07XG4gIGNvbnN0IHVwZGF0ZUluZGljYXRvclN0YXRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdGFic01ldGEsXG4gICAgICB0YWJNZXRhXG4gICAgfSA9IGdldFRhYnNNZXRhKCk7XG4gICAgbGV0IHN0YXJ0VmFsdWUgPSAwO1xuICAgIGxldCBzdGFydEluZGljYXRvcjtcbiAgICBpZiAodmVydGljYWwpIHtcbiAgICAgIHN0YXJ0SW5kaWNhdG9yID0gJ3RvcCc7XG4gICAgICBpZiAodGFiTWV0YSAmJiB0YWJzTWV0YSkge1xuICAgICAgICBzdGFydFZhbHVlID0gdGFiTWV0YS50b3AgLSB0YWJzTWV0YS50b3AgKyB0YWJzTWV0YS5zY3JvbGxUb3A7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXJ0SW5kaWNhdG9yID0gaXNSdGwgPyAncmlnaHQnIDogJ2xlZnQnO1xuICAgICAgaWYgKHRhYk1ldGEgJiYgdGFic01ldGEpIHtcbiAgICAgICAgY29uc3QgY29ycmVjdGlvbiA9IGlzUnRsID8gdGFic01ldGEuc2Nyb2xsTGVmdE5vcm1hbGl6ZWQgKyB0YWJzTWV0YS5jbGllbnRXaWR0aCAtIHRhYnNNZXRhLnNjcm9sbFdpZHRoIDogdGFic01ldGEuc2Nyb2xsTGVmdDtcbiAgICAgICAgc3RhcnRWYWx1ZSA9IChpc1J0bCA/IC0xIDogMSkgKiAodGFiTWV0YVtzdGFydEluZGljYXRvcl0gLSB0YWJzTWV0YVtzdGFydEluZGljYXRvcl0gKyBjb3JyZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbmV3SW5kaWNhdG9yU3R5bGUgPSB7XG4gICAgICBbc3RhcnRJbmRpY2F0b3JdOiBzdGFydFZhbHVlLFxuICAgICAgLy8gTWF5IGJlIHdyb25nIHVudGlsIHRoZSBmb250IGlzIGxvYWRlZC5cbiAgICAgIFtzaXplXTogdGFiTWV0YSA/IHRhYk1ldGFbc2l6ZV0gOiAwXG4gICAgfTtcblxuICAgIC8vIElFMTEgc3VwcG9ydCwgcmVwbGFjZSB3aXRoIE51bWJlci5pc05hTlxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHNcbiAgICBpZiAoaXNOYU4oaW5kaWNhdG9yU3R5bGVbc3RhcnRJbmRpY2F0b3JdKSB8fCBpc05hTihpbmRpY2F0b3JTdHlsZVtzaXplXSkpIHtcbiAgICAgIHNldEluZGljYXRvclN0eWxlKG5ld0luZGljYXRvclN0eWxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZFN0YXJ0ID0gTWF0aC5hYnMoaW5kaWNhdG9yU3R5bGVbc3RhcnRJbmRpY2F0b3JdIC0gbmV3SW5kaWNhdG9yU3R5bGVbc3RhcnRJbmRpY2F0b3JdKTtcbiAgICAgIGNvbnN0IGRTaXplID0gTWF0aC5hYnMoaW5kaWNhdG9yU3R5bGVbc2l6ZV0gLSBuZXdJbmRpY2F0b3JTdHlsZVtzaXplXSk7XG4gICAgICBpZiAoZFN0YXJ0ID49IDEgfHwgZFNpemUgPj0gMSkge1xuICAgICAgICBzZXRJbmRpY2F0b3JTdHlsZShuZXdJbmRpY2F0b3JTdHlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc2Nyb2xsID0gKHNjcm9sbFZhbHVlLCB7XG4gICAgYW5pbWF0aW9uID0gdHJ1ZVxuICB9ID0ge30pID0+IHtcbiAgICBpZiAoYW5pbWF0aW9uKSB7XG4gICAgICBhbmltYXRlKHNjcm9sbFN0YXJ0LCB0YWJzUmVmLmN1cnJlbnQsIHNjcm9sbFZhbHVlLCB7XG4gICAgICAgIGR1cmF0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5kdXJhdGlvbi5zdGFuZGFyZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhYnNSZWYuY3VycmVudFtzY3JvbGxTdGFydF0gPSBzY3JvbGxWYWx1ZTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IG1vdmVUYWJzU2Nyb2xsID0gZGVsdGEgPT4ge1xuICAgIGxldCBzY3JvbGxWYWx1ZSA9IHRhYnNSZWYuY3VycmVudFtzY3JvbGxTdGFydF07XG4gICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICBzY3JvbGxWYWx1ZSArPSBkZWx0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2Nyb2xsVmFsdWUgKz0gZGVsdGEgKiAoaXNSdGwgPyAtMSA6IDEpO1xuICAgICAgLy8gRml4IGZvciBFZGdlXG4gICAgICBzY3JvbGxWYWx1ZSAqPSBpc1J0bCAmJiBkZXRlY3RTY3JvbGxUeXBlKCkgPT09ICdyZXZlcnNlJyA/IC0xIDogMTtcbiAgICB9XG4gICAgc2Nyb2xsKHNjcm9sbFZhbHVlKTtcbiAgfTtcbiAgY29uc3QgZ2V0U2Nyb2xsU2l6ZSA9ICgpID0+IHtcbiAgICBjb25zdCBjb250YWluZXJTaXplID0gdGFic1JlZi5jdXJyZW50W2NsaWVudFNpemVdO1xuICAgIGxldCB0b3RhbFNpemUgPSAwO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbSh0YWJMaXN0UmVmLmN1cnJlbnQuY2hpbGRyZW4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IHRhYiA9IGNoaWxkcmVuW2ldO1xuICAgICAgaWYgKHRvdGFsU2l6ZSArIHRhYltjbGllbnRTaXplXSA+IGNvbnRhaW5lclNpemUpIHtcbiAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGl0ZW0gaXMgbG9uZ2VyIHRoYW4gdGhlIGNvbnRhaW5lciBzaXplLCB0aGVuIG9ubHkgc2Nyb2xsXG4gICAgICAgIC8vIGJ5IHRoZSBjb250YWluZXIgc2l6ZS5cbiAgICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgICB0b3RhbFNpemUgPSBjb250YWluZXJTaXplO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdG90YWxTaXplICs9IHRhYltjbGllbnRTaXplXTtcbiAgICB9XG4gICAgcmV0dXJuIHRvdGFsU2l6ZTtcbiAgfTtcbiAgY29uc3QgaGFuZGxlU3RhcnRTY3JvbGxDbGljayA9ICgpID0+IHtcbiAgICBtb3ZlVGFic1Njcm9sbCgtMSAqIGdldFNjcm9sbFNpemUoKSk7XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVuZFNjcm9sbENsaWNrID0gKCkgPT4ge1xuICAgIG1vdmVUYWJzU2Nyb2xsKGdldFNjcm9sbFNpemUoKSk7XG4gIH07XG5cbiAgLy8gVE9ETyBSZW1vdmUgPFNjcm9sbGJhclNpemUgLz4gYXMgYnJvd3NlciBzdXBwb3J0IGZvciBoaWRpbmcgdGhlIHNjcm9sbGJhclxuICAvLyB3aXRoIENTUyBpbXByb3Zlcy5cbiAgY29uc3QgaGFuZGxlU2Nyb2xsYmFyU2l6ZUNoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKHNjcm9sbGJhcldpZHRoID0+IHtcbiAgICBzZXRTY3JvbGxlclN0eWxlKHtcbiAgICAgIG92ZXJmbG93OiBudWxsLFxuICAgICAgc2Nyb2xsYmFyV2lkdGhcbiAgICB9KTtcbiAgfSwgW10pO1xuICBjb25zdCBnZXRDb25kaXRpb25hbEVsZW1lbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGNvbmRpdGlvbmFsRWxlbWVudHMgPSB7fTtcbiAgICBjb25kaXRpb25hbEVsZW1lbnRzLnNjcm9sbGJhclNpemVMaXN0ZW5lciA9IHNjcm9sbGFibGUgPyAvKiNfX1BVUkVfXyovX2pzeChUYWJzU2Nyb2xsYmFyU2l6ZSwge1xuICAgICAgb25DaGFuZ2U6IGhhbmRsZVNjcm9sbGJhclNpemVDaGFuZ2UsXG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5zY3JvbGxhYmxlWCwgY2xhc3Nlcy5oaWRlU2Nyb2xsYmFyKVxuICAgIH0pIDogbnVsbDtcbiAgICBjb25zdCBzY3JvbGxCdXR0b25zQWN0aXZlID0gZGlzcGxheVN0YXJ0U2Nyb2xsIHx8IGRpc3BsYXlFbmRTY3JvbGw7XG4gICAgY29uc3Qgc2hvd1Njcm9sbEJ1dHRvbnMgPSBzY3JvbGxhYmxlICYmIChzY3JvbGxCdXR0b25zID09PSAnYXV0bycgJiYgc2Nyb2xsQnV0dG9uc0FjdGl2ZSB8fCBzY3JvbGxCdXR0b25zID09PSB0cnVlKTtcbiAgICBjb25kaXRpb25hbEVsZW1lbnRzLnNjcm9sbEJ1dHRvblN0YXJ0ID0gc2hvd1Njcm9sbEJ1dHRvbnMgPyAvKiNfX1BVUkVfXyovX2pzeChTY3JvbGxCdXR0b25Db21wb25lbnQsIF9leHRlbmRzKHtcbiAgICAgIHNsb3RzOiB7XG4gICAgICAgIFN0YXJ0U2Nyb2xsQnV0dG9uSWNvbjogc2xvdHMuU3RhcnRTY3JvbGxCdXR0b25JY29uXG4gICAgICB9LFxuICAgICAgc2xvdFByb3BzOiB7XG4gICAgICAgIHN0YXJ0U2Nyb2xsQnV0dG9uSWNvbjogc3RhcnRTY3JvbGxCdXR0b25JY29uUHJvcHNcbiAgICAgIH0sXG4gICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb24sXG4gICAgICBkaXJlY3Rpb246IGlzUnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JyxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZVN0YXJ0U2Nyb2xsQ2xpY2ssXG4gICAgICBkaXNhYmxlZDogIWRpc3BsYXlTdGFydFNjcm9sbFxuICAgIH0sIFRhYlNjcm9sbEJ1dHRvblByb3BzLCB7XG4gICAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5zY3JvbGxCdXR0b25zLCBUYWJTY3JvbGxCdXR0b25Qcm9wcy5jbGFzc05hbWUpXG4gICAgfSkpIDogbnVsbDtcbiAgICBjb25kaXRpb25hbEVsZW1lbnRzLnNjcm9sbEJ1dHRvbkVuZCA9IHNob3dTY3JvbGxCdXR0b25zID8gLyojX19QVVJFX18qL19qc3goU2Nyb2xsQnV0dG9uQ29tcG9uZW50LCBfZXh0ZW5kcyh7XG4gICAgICBzbG90czoge1xuICAgICAgICBFbmRTY3JvbGxCdXR0b25JY29uOiBzbG90cy5FbmRTY3JvbGxCdXR0b25JY29uXG4gICAgICB9LFxuICAgICAgc2xvdFByb3BzOiB7XG4gICAgICAgIGVuZFNjcm9sbEJ1dHRvbkljb246IGVuZFNjcm9sbEJ1dHRvbkljb25Qcm9wc1xuICAgICAgfSxcbiAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgIGRpcmVjdGlvbjogaXNSdGwgPyAnbGVmdCcgOiAncmlnaHQnLFxuICAgICAgb25DbGljazogaGFuZGxlRW5kU2Nyb2xsQ2xpY2ssXG4gICAgICBkaXNhYmxlZDogIWRpc3BsYXlFbmRTY3JvbGxcbiAgICB9LCBUYWJTY3JvbGxCdXR0b25Qcm9wcywge1xuICAgICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuc2Nyb2xsQnV0dG9ucywgVGFiU2Nyb2xsQnV0dG9uUHJvcHMuY2xhc3NOYW1lKVxuICAgIH0pKSA6IG51bGw7XG4gICAgcmV0dXJuIGNvbmRpdGlvbmFsRWxlbWVudHM7XG4gIH07XG4gIGNvbnN0IHNjcm9sbFNlbGVjdGVkSW50b1ZpZXcgPSB1c2VFdmVudENhbGxiYWNrKGFuaW1hdGlvbiA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgdGFic01ldGEsXG4gICAgICB0YWJNZXRhXG4gICAgfSA9IGdldFRhYnNNZXRhKCk7XG4gICAgaWYgKCF0YWJNZXRhIHx8ICF0YWJzTWV0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGFiTWV0YVtzdGFydF0gPCB0YWJzTWV0YVtzdGFydF0pIHtcbiAgICAgIC8vIGxlZnQgc2lkZSBvZiBidXR0b24gaXMgb3V0IG9mIHZpZXdcbiAgICAgIGNvbnN0IG5leHRTY3JvbGxTdGFydCA9IHRhYnNNZXRhW3Njcm9sbFN0YXJ0XSArICh0YWJNZXRhW3N0YXJ0XSAtIHRhYnNNZXRhW3N0YXJ0XSk7XG4gICAgICBzY3JvbGwobmV4dFNjcm9sbFN0YXJ0LCB7XG4gICAgICAgIGFuaW1hdGlvblxuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0YWJNZXRhW2VuZF0gPiB0YWJzTWV0YVtlbmRdKSB7XG4gICAgICAvLyByaWdodCBzaWRlIG9mIGJ1dHRvbiBpcyBvdXQgb2Ygdmlld1xuICAgICAgY29uc3QgbmV4dFNjcm9sbFN0YXJ0ID0gdGFic01ldGFbc2Nyb2xsU3RhcnRdICsgKHRhYk1ldGFbZW5kXSAtIHRhYnNNZXRhW2VuZF0pO1xuICAgICAgc2Nyb2xsKG5leHRTY3JvbGxTdGFydCwge1xuICAgICAgICBhbmltYXRpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHVwZGF0ZVNjcm9sbEJ1dHRvblN0YXRlID0gdXNlRXZlbnRDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKHNjcm9sbGFibGUgJiYgc2Nyb2xsQnV0dG9ucyAhPT0gZmFsc2UpIHtcbiAgICAgIHNldFVwZGF0ZVNjcm9sbE9ic2VydmVyKCF1cGRhdGVTY3JvbGxPYnNlcnZlcik7XG4gICAgfVxuICB9KTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZXNpemUgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAvLyBJZiB0aGUgVGFicyBjb21wb25lbnQgaXMgcmVwbGFjZWQgYnkgU3VzcGVuc2Ugd2l0aCBhIGZhbGxiYWNrLCB0aGUgbGFzdFxuICAgICAgLy8gUmVzaXplT2JzZXJ2ZXIncyBoYW5kbGVyIHRoYXQgcnVucyBiZWNhdXNlIG9mIHRoZSBjaGFuZ2UgaW4gdGhlIGxheW91dCBpcyB0cnlpbmcgdG9cbiAgICAgIC8vIGFjY2VzcyBhIGRvbSBub2RlIHRoYXQgaXMgbm8gbG9uZ2VyIHRoZXJlIChhcyB0aGUgZmFsbGJhY2sgY29tcG9uZW50IGlzIGJlaW5nIHNob3duIGluc3RlYWQpLlxuICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdWkvbWF0ZXJpYWwtdWkvaXNzdWVzLzMzMjc2XG4gICAgICAvLyBUT0RPOiBBZGQgdGVzdHMgdGhhdCB3aWxsIGVuc3VyZSB0aGUgY29tcG9uZW50IGlzIG5vdCBmYWlsaW5nIHdoZW5cbiAgICAgIC8vIHJlcGxhY2VkIGJ5IFN1c3BlbnNlIHdpdGggYSBmYWxsYmFjaywgb25jZSBSZWFjdCBpcyB1cGRhdGVkIHRvIHZlcnNpb24gMThcbiAgICAgIGlmICh0YWJzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgdXBkYXRlSW5kaWNhdG9yU3RhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB3aW4gPSBvd25lcldpbmRvdyh0YWJzUmVmLmN1cnJlbnQpO1xuICAgIHdpbi5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXNpemUpO1xuICAgIGxldCByZXNpemVPYnNlcnZlcjtcbiAgICBpZiAodHlwZW9mIFJlc2l6ZU9ic2VydmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoaGFuZGxlUmVzaXplKTtcbiAgICAgIEFycmF5LmZyb20odGFiTGlzdFJlZi5jdXJyZW50LmNoaWxkcmVuKS5mb3JFYWNoKGNoaWxkID0+IHtcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShjaGlsZCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGhhbmRsZVJlc2l6ZS5jbGVhcigpO1xuICAgICAgd2luLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlc2l6ZSk7XG4gICAgICBpZiAocmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgcmVzaXplT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFt1cGRhdGVJbmRpY2F0b3JTdGF0ZV0pO1xuXG4gIC8qKlxuICAgKiBUb2dnbGUgdmlzaWJpbGl0eSBvZiBzdGFydCBhbmQgZW5kIHNjcm9sbCBidXR0b25zXG4gICAqIFVzaW5nIEludGVyc2VjdGlvbk9ic2VydmVyIG9uIGZpcnN0IGFuZCBsYXN0IFRhYnMuXG4gICAqL1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHRhYkxpc3RDaGlsZHJlbiA9IEFycmF5LmZyb20odGFiTGlzdFJlZi5jdXJyZW50LmNoaWxkcmVuKTtcbiAgICBjb25zdCBsZW5ndGggPSB0YWJMaXN0Q2hpbGRyZW4ubGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgIT09ICd1bmRlZmluZWQnICYmIGxlbmd0aCA+IDAgJiYgc2Nyb2xsYWJsZSAmJiBzY3JvbGxCdXR0b25zICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgZmlyc3RUYWIgPSB0YWJMaXN0Q2hpbGRyZW5bMF07XG4gICAgICBjb25zdCBsYXN0VGFiID0gdGFiTGlzdENoaWxkcmVuW2xlbmd0aCAtIDFdO1xuICAgICAgY29uc3Qgb2JzZXJ2ZXJPcHRpb25zID0ge1xuICAgICAgICByb290OiB0YWJzUmVmLmN1cnJlbnQsXG4gICAgICAgIHRocmVzaG9sZDogMC45OVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbEJ1dHRvblN0YXJ0ID0gZW50cmllcyA9PiB7XG4gICAgICAgIHNldERpc3BsYXlTdGFydFNjcm9sbCghZW50cmllc1swXS5pc0ludGVyc2VjdGluZyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgZmlyc3RPYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVTY3JvbGxCdXR0b25TdGFydCwgb2JzZXJ2ZXJPcHRpb25zKTtcbiAgICAgIGZpcnN0T2JzZXJ2ZXIub2JzZXJ2ZShmaXJzdFRhYik7XG4gICAgICBjb25zdCBoYW5kbGVTY3JvbGxCdXR0b25FbmQgPSBlbnRyaWVzID0+IHtcbiAgICAgICAgc2V0RGlzcGxheUVuZFNjcm9sbCghZW50cmllc1swXS5pc0ludGVyc2VjdGluZyk7XG4gICAgICB9O1xuICAgICAgY29uc3QgbGFzdE9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGhhbmRsZVNjcm9sbEJ1dHRvbkVuZCwgb2JzZXJ2ZXJPcHRpb25zKTtcbiAgICAgIGxhc3RPYnNlcnZlci5vYnNlcnZlKGxhc3RUYWIpO1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZmlyc3RPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICAgIGxhc3RPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbc2Nyb2xsYWJsZSwgc2Nyb2xsQnV0dG9ucywgdXBkYXRlU2Nyb2xsT2JzZXJ2ZXIsIGNoaWxkcmVuUHJvcCA9PSBudWxsID8gdm9pZCAwIDogY2hpbGRyZW5Qcm9wLmxlbmd0aF0pO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldE1vdW50ZWQodHJ1ZSk7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVJbmRpY2F0b3JTdGF0ZSgpO1xuICB9KTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBEb24ndCBhbmltYXRlIG9uIHRoZSBmaXJzdCByZW5kZXIuXG4gICAgc2Nyb2xsU2VsZWN0ZWRJbnRvVmlldyhkZWZhdWx0SW5kaWNhdG9yU3R5bGUgIT09IGluZGljYXRvclN0eWxlKTtcbiAgfSwgW3Njcm9sbFNlbGVjdGVkSW50b1ZpZXcsIGluZGljYXRvclN0eWxlXSk7XG4gIFJlYWN0LnVzZUltcGVyYXRpdmVIYW5kbGUoYWN0aW9uLCAoKSA9PiAoe1xuICAgIHVwZGF0ZUluZGljYXRvcjogdXBkYXRlSW5kaWNhdG9yU3RhdGUsXG4gICAgdXBkYXRlU2Nyb2xsQnV0dG9uczogdXBkYXRlU2Nyb2xsQnV0dG9uU3RhdGVcbiAgfSksIFt1cGRhdGVJbmRpY2F0b3JTdGF0ZSwgdXBkYXRlU2Nyb2xsQnV0dG9uU3RhdGVdKTtcbiAgY29uc3QgaW5kaWNhdG9yID0gLyojX19QVVJFX18qL19qc3goVGFic0luZGljYXRvciwgX2V4dGVuZHMoe30sIFRhYkluZGljYXRvclByb3BzLCB7XG4gICAgY2xhc3NOYW1lOiBjbHN4KGNsYXNzZXMuaW5kaWNhdG9yLCBUYWJJbmRpY2F0b3JQcm9wcy5jbGFzc05hbWUpLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgc3R5bGU6IF9leHRlbmRzKHt9LCBpbmRpY2F0b3JTdHlsZSwgVGFiSW5kaWNhdG9yUHJvcHMuc3R5bGUpXG4gIH0pKTtcbiAgbGV0IGNoaWxkSW5kZXggPSAwO1xuICBjb25zdCBjaGlsZHJlbiA9IFJlYWN0LkNoaWxkcmVuLm1hcChjaGlsZHJlblByb3AsIGNoaWxkID0+IHtcbiAgICBpZiAoISAvKiNfX1BVUkVfXyovUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpc0ZyYWdtZW50KGNoaWxkKSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFtcIk1VSTogVGhlIFRhYnMgY29tcG9uZW50IGRvZXNuJ3QgYWNjZXB0IGEgRnJhZ21lbnQgYXMgYSBjaGlsZC5cIiwgJ0NvbnNpZGVyIHByb3ZpZGluZyBhbiBhcnJheSBpbnN0ZWFkLiddLmpvaW4oJ1xcbicpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2hpbGRWYWx1ZSA9IGNoaWxkLnByb3BzLnZhbHVlID09PSB1bmRlZmluZWQgPyBjaGlsZEluZGV4IDogY2hpbGQucHJvcHMudmFsdWU7XG4gICAgdmFsdWVUb0luZGV4LnNldChjaGlsZFZhbHVlLCBjaGlsZEluZGV4KTtcbiAgICBjb25zdCBzZWxlY3RlZCA9IGNoaWxkVmFsdWUgPT09IHZhbHVlO1xuICAgIGNoaWxkSW5kZXggKz0gMTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgX2V4dGVuZHMoe1xuICAgICAgZnVsbFdpZHRoOiB2YXJpYW50ID09PSAnZnVsbFdpZHRoJyxcbiAgICAgIGluZGljYXRvcjogc2VsZWN0ZWQgJiYgIW1vdW50ZWQgJiYgaW5kaWNhdG9yLFxuICAgICAgc2VsZWN0ZWQsXG4gICAgICBzZWxlY3Rpb25Gb2xsb3dzRm9jdXMsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIHRleHRDb2xvcixcbiAgICAgIHZhbHVlOiBjaGlsZFZhbHVlXG4gICAgfSwgY2hpbGRJbmRleCA9PT0gMSAmJiB2YWx1ZSA9PT0gZmFsc2UgJiYgIWNoaWxkLnByb3BzLnRhYkluZGV4ID8ge1xuICAgICAgdGFiSW5kZXg6IDBcbiAgICB9IDoge30pKTtcbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRhYkxpc3RSZWYuY3VycmVudDtcbiAgICBjb25zdCBjdXJyZW50Rm9jdXMgPSBvd25lckRvY3VtZW50KGxpc3QpLmFjdGl2ZUVsZW1lbnQ7XG4gICAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvbiBhc3N1bWVzIHRoYXQgW3JvbGU9XCJ0YWJcIl0gYXJlIHNpYmxpbmdzXG4gICAgLy8gdGhvdWdoIHdlIG1pZ2h0IHdhcm4gaW4gdGhlIGZ1dHVyZSBhYm91dCBuZXN0ZWQsIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgLy8gYXMgYSBhMTF5IHZpb2xhdGlvblxuICAgIGNvbnN0IHJvbGUgPSBjdXJyZW50Rm9jdXMuZ2V0QXR0cmlidXRlKCdyb2xlJyk7XG4gICAgaWYgKHJvbGUgIT09ICd0YWInKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxldCBwcmV2aW91c0l0ZW1LZXkgPSBvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnID8gJ0Fycm93TGVmdCcgOiAnQXJyb3dVcCc7XG4gICAgbGV0IG5leHRJdGVtS2V5ID0gb3JpZW50YXRpb24gPT09ICdob3Jpem9udGFsJyA/ICdBcnJvd1JpZ2h0JyA6ICdBcnJvd0Rvd24nO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIGlzUnRsKSB7XG4gICAgICAvLyBzd2FwIHByZXZpb3VzSXRlbUtleSB3aXRoIG5leHRJdGVtS2V5XG4gICAgICBwcmV2aW91c0l0ZW1LZXkgPSAnQXJyb3dSaWdodCc7XG4gICAgICBuZXh0SXRlbUtleSA9ICdBcnJvd0xlZnQnO1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgY2FzZSBwcmV2aW91c0l0ZW1LZXk6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG1vdmVGb2N1cyhsaXN0LCBjdXJyZW50Rm9jdXMsIHByZXZpb3VzSXRlbSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBuZXh0SXRlbUtleTpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbW92ZUZvY3VzKGxpc3QsIGN1cnJlbnRGb2N1cywgbmV4dEl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBtb3ZlRm9jdXMobGlzdCwgbnVsbCwgbmV4dEl0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG1vdmVGb2N1cyhsaXN0LCBudWxsLCBwcmV2aW91c0l0ZW0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY29uZGl0aW9uYWxFbGVtZW50cyA9IGdldENvbmRpdGlvbmFsRWxlbWVudHMoKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4cyhUYWJzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICBhczogY29tcG9uZW50XG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IFtjb25kaXRpb25hbEVsZW1lbnRzLnNjcm9sbEJ1dHRvblN0YXJ0LCBjb25kaXRpb25hbEVsZW1lbnRzLnNjcm9sbGJhclNpemVMaXN0ZW5lciwgLyojX19QVVJFX18qL19qc3hzKFRhYnNTY3JvbGxlciwge1xuICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLnNjcm9sbGVyLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGxlclN0eWxlLm92ZXJmbG93LFxuICAgICAgICBbdmVydGljYWwgPyBgbWFyZ2luJHtpc1J0bCA/ICdMZWZ0JyA6ICdSaWdodCd9YCA6ICdtYXJnaW5Cb3R0b20nXTogdmlzaWJsZVNjcm9sbGJhciA/IHVuZGVmaW5lZCA6IC1zY3JvbGxlclN0eWxlLnNjcm9sbGJhcldpZHRoXG4gICAgICB9LFxuICAgICAgcmVmOiB0YWJzUmVmLFxuICAgICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChGbGV4Q29udGFpbmVyLCB7XG4gICAgICAgIFwiYXJpYS1sYWJlbFwiOiBhcmlhTGFiZWwsXG4gICAgICAgIFwiYXJpYS1sYWJlbGxlZGJ5XCI6IGFyaWFMYWJlbGxlZEJ5LFxuICAgICAgICBcImFyaWEtb3JpZW50YXRpb25cIjogb3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgPyAndmVydGljYWwnIDogbnVsbCxcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmZsZXhDb250YWluZXIsXG4gICAgICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgICAgIG9uS2V5RG93bjogaGFuZGxlS2V5RG93bixcbiAgICAgICAgcmVmOiB0YWJMaXN0UmVmLFxuICAgICAgICByb2xlOiBcInRhYmxpc3RcIixcbiAgICAgICAgY2hpbGRyZW46IGNoaWxkcmVuXG4gICAgICB9KSwgbW91bnRlZCAmJiBpbmRpY2F0b3JdXG4gICAgfSksIGNvbmRpdGlvbmFsRWxlbWVudHMuc2Nyb2xsQnV0dG9uRW5kXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFRhYnMucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQ2FsbGJhY2sgZmlyZWQgd2hlbiB0aGUgY29tcG9uZW50IG1vdW50cy5cbiAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byB0cmlnZ2VyIGFuIGFjdGlvbiBwcm9ncmFtbWF0aWNhbGx5LlxuICAgKiBJdCBzdXBwb3J0cyB0d28gYWN0aW9uczogYHVwZGF0ZUluZGljYXRvcigpYCBhbmQgYHVwZGF0ZVNjcm9sbEJ1dHRvbnMoKWBcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGFjdGlvbnMgVGhpcyBvYmplY3QgY29udGFpbnMgYWxsIHBvc3NpYmxlIGFjdGlvbnNcbiAgICogdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkuXG4gICAqL1xuICBhY3Rpb246IHJlZlR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzY3JvbGwgYnV0dG9ucyBhcmVuJ3QgZm9yY2VkIGhpZGRlbiBvbiBtb2JpbGUuXG4gICAqIEJ5IGRlZmF1bHQgdGhlIHNjcm9sbCBidXR0b25zIGFyZSBoaWRkZW4gb24gbW9iaWxlIGFuZCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYHNjcm9sbEJ1dHRvbnNgLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIFRhYnMgYXMgYSBzdHJpbmcuXG4gICAqL1xuICAnYXJpYS1sYWJlbCc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBBbiBpZCBvciBsaXN0IG9mIGlkcyBzZXBhcmF0ZWQgYnkgYSBzcGFjZSB0aGF0IGxhYmVsIHRoZSBUYWJzLlxuICAgKi9cbiAgJ2FyaWEtbGFiZWxsZWRieSc6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0YWJzIGFyZSBjZW50ZXJlZC5cbiAgICogVGhpcyBwcm9wIGlzIGludGVuZGVkIGZvciBsYXJnZSB2aWV3cy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGNlbnRlcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgaW5kaWNhdG9yLlxuICAgKiBAZGVmYXVsdCAncHJpbWFyeSdcbiAgICovXG4gIGluZGljYXRvckNvbG9yOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBDYWxsYmFjayBmaXJlZCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0LlN5bnRoZXRpY0V2ZW50fSBldmVudCBUaGUgZXZlbnQgc291cmNlIG9mIHRoZSBjYWxsYmFjay4gKipXYXJuaW5nKio6IFRoaXMgaXMgYSBnZW5lcmljIGV2ZW50IG5vdCBhIGNoYW5nZSBldmVudC5cbiAgICogQHBhcmFtIHthbnl9IHZhbHVlIFdlIGRlZmF1bHQgdG8gdGhlIGluZGV4IG9mIHRoZSBjaGlsZCAobnVtYmVyKVxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCBvcmllbnRhdGlvbiAobGF5b3V0IGZsb3cgZGlyZWN0aW9uKS5cbiAgICogQGRlZmF1bHQgJ2hvcml6b250YWwnXG4gICAqL1xuICBvcmllbnRhdGlvbjogUHJvcFR5cGVzLm9uZU9mKFsnaG9yaXpvbnRhbCcsICd2ZXJ0aWNhbCddKSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnQgdXNlZCB0byByZW5kZXIgdGhlIHNjcm9sbCBidXR0b25zLlxuICAgKiBAZGVmYXVsdCBUYWJTY3JvbGxCdXR0b25cbiAgICovXG4gIFNjcm9sbEJ1dHRvbkNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogRGV0ZXJtaW5lIGJlaGF2aW9yIG9mIHNjcm9sbCBidXR0b25zIHdoZW4gdGFicyBhcmUgc2V0IHRvIHNjcm9sbDpcbiAgICpcbiAgICogLSBgYXV0b2Agd2lsbCBvbmx5IHByZXNlbnQgdGhlbSB3aGVuIG5vdCBhbGwgdGhlIGl0ZW1zIGFyZSB2aXNpYmxlLlxuICAgKiAtIGB0cnVlYCB3aWxsIGFsd2F5cyBwcmVzZW50IHRoZW0uXG4gICAqIC0gYGZhbHNlYCB3aWxsIG5ldmVyIHByZXNlbnQgdGhlbS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCB0aGUgc2Nyb2xsIGJ1dHRvbnMgYXJlIGhpZGRlbiBvbiBtb2JpbGUuXG4gICAqIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkIHdpdGggYGFsbG93U2Nyb2xsQnV0dG9uc01vYmlsZWAuXG4gICAqIEBkZWZhdWx0ICdhdXRvJ1xuICAgKi9cbiAgc2Nyb2xsQnV0dG9uczogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2YoWydhdXRvJywgZmFsc2UsIHRydWVdKSxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCB0aGUgc2VsZWN0ZWQgdGFiIGNoYW5nZXMgb24gZm9jdXMuIE90aGVyd2lzZSBpdCBvbmx5XG4gICAqIGNoYW5nZXMgb24gYWN0aXZhdGlvbi5cbiAgICovXG4gIHNlbGVjdGlvbkZvbGxvd3NGb2N1czogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgZXh0cmEgcHJvcHMgZm9yIHRoZSBzbG90IGNvbXBvbmVudHMuXG4gICAqIFlvdSBjYW4gb3ZlcnJpZGUgdGhlIGV4aXN0aW5nIHByb3BzIG9yIGFkZCBuZXcgb25lcy5cbiAgICogQGRlZmF1bHQge31cbiAgICovXG4gIHNsb3RQcm9wczogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBlbmRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pLFxuICAgIHN0YXJ0U2Nyb2xsQnV0dG9uSWNvbjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKVxuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBjb21wb25lbnRzIHVzZWQgZm9yIGVhY2ggc2xvdCBpbnNpZGUuXG4gICAqIEBkZWZhdWx0IHt9XG4gICAqL1xuICBzbG90czogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBFbmRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgU3RhcnRTY3JvbGxCdXR0b25JY29uOiBQcm9wVHlwZXMuZWxlbWVudFR5cGVcbiAgfSksXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSB0YWIgaW5kaWNhdG9yIGVsZW1lbnQuXG4gICAqIEBkZWZhdWx0ICB7fVxuICAgKi9cbiAgVGFiSW5kaWNhdG9yUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBQcm9wcyBhcHBsaWVkIHRvIHRoZSBbYFRhYlNjcm9sbEJ1dHRvbmBdKC9tYXRlcmlhbC11aS9hcGkvdGFiLXNjcm9sbC1idXR0b24vKSBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCB7fVxuICAgKi9cbiAgVGFiU2Nyb2xsQnV0dG9uUHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHRoZSBjb2xvciBvZiB0aGUgYFRhYmAuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgdGV4dENvbG9yOiBQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5J10pLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYFRhYmAuXG4gICAqIElmIHlvdSBkb24ndCB3YW50IGFueSBzZWxlY3RlZCBgVGFiYCwgeW91IGNhbiBzZXQgdGhpcyBwcm9wIHRvIGBmYWxzZWAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLmFueSxcbiAgLyoqXG4gICAqIERldGVybWluZXMgYWRkaXRpb25hbCBkaXNwbGF5IGJlaGF2aW9yIG9mIHRoZSB0YWJzOlxuICAgKlxuICAgKiAgLSBgc2Nyb2xsYWJsZWAgd2lsbCBpbnZva2Ugc2Nyb2xsaW5nIHByb3BlcnRpZXMgYW5kIGFsbG93IGZvciBob3Jpem9udGFsbHlcbiAgICogIHNjcm9sbGluZyAob3Igc3dpcGluZykgb2YgdGhlIHRhYiBiYXIuXG4gICAqICAtYGZ1bGxXaWR0aGAgd2lsbCBtYWtlIHRoZSB0YWJzIGdyb3cgdG8gdXNlIGFsbCB0aGUgYXZhaWxhYmxlIHNwYWNlLFxuICAgKiAgd2hpY2ggc2hvdWxkIGJlIHVzZWQgZm9yIHNtYWxsIHZpZXdzLCBsaWtlIG9uIG1vYmlsZS5cbiAgICogIC0gYHN0YW5kYXJkYCB3aWxsIHJlbmRlciB0aGUgZGVmYXVsdCBzdGF0ZS5cbiAgICogQGRlZmF1bHQgJ3N0YW5kYXJkJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZnVsbFdpZHRoJywgJ3Njcm9sbGFibGUnLCAnc3RhbmRhcmQnXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzY3JvbGxiYXIgaXMgdmlzaWJsZS4gSXQgY2FuIGJlIHVzZWZ1bCB3aGVuIGRpc3BsYXlpbmdcbiAgICogYSBsb25nIHZlcnRpY2FsIGxpc3Qgb2YgdGFicy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHZpc2libGVTY3JvbGxiYXI6IFByb3BUeXBlcy5ib29sXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVGFiczsiLCJpbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEltYWdlIGZyb20gJy4uL0ltYWdlJztcclxuaW1wb3J0IHtldmVudGJ1cywgZXZlbnRzfSBmcm9tIFwiLi4vZXZlbnRidXNcIjtcclxuaW1wb3J0IHtEb2N1bWVudENhcnRFdmVudEtleX0gZnJvbSBcIi4uL0NhcnRCYW5uZXJcIjtcclxuXHJcbmNvbnN0IEN1c3RvbURyb3Bkb3duID0gKHsgb3B0aW9ucywgc2VsZWN0ZWRWYWx1ZSwgdW5zZWxlY3RlZFZhbHVlLCBvbkNoYW5nZSwgaXNJbkJhc2tldCwgb25DbGljaywgbG9hZGluZyB9KSA9PiB7XHJcbiAgICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgZHJvcGRvd25SZWYgPSB1c2VSZWYobnVsbCk7XHJcblxyXG4gICAgY29uc3QgaGFuZGxlT3V0c2lkZUNsaWNrID0gKGUpID0+IHtcclxuICAgICAgICBpZiAoZHJvcGRvd25SZWYuY3VycmVudCAmJiAhZHJvcGRvd25SZWYuY3VycmVudC5jb250YWlucyhlLnRhcmdldCkpIHtcclxuICAgICAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZU91dHNpZGVDbGljayk7XHJcbiAgICAgICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZURyb3Bkb3duVG9nZ2xlID0gKGUpID0+IHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICBzZXRJc09wZW4oKHByZXYpID0+ICFwcmV2KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlT3B0aW9uU2VsZWN0ID0gKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIG9uQ2hhbmdlKG9wdGlvbik7XHJcbiAgICAgICAgc2V0SXNPcGVuKGZhbHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgICA8PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIiByZWY9e2Ryb3Bkb3duUmVmfT5cclxuICAgICAgICAgICAgey8qIFNlbGVjdGVkIFZhbHVlIERpc3BsYXkgKi99XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaC1mdWxsIGl0ZW1zLWNlbnRlciBib3JkZXIgcm91bmRlZC1sLXhsIHRleHQteHMgdGV4dC1sZWZ0IHB4LTEwIHB5LTIgY3Vyc29yLXBvaW50ZXIgYmctd2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRHJvcGRvd25Ub2dnbGV9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1ibG9jayBtaW4tdy1bNGNoXVwiPntzZWxlY3RlZFZhbHVlIHx8ICggaXNJbkJhc2tldCA/IFwiMFwiIDogdW5zZWxlY3RlZFZhbHVlICl9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvbnMgbWwtMlwiPmV4cGFuZF9tb3JlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIHsvKiBEcm9wZG93biBPcHRpb25zICovfVxyXG4gICAgICAgICAgICB7aXNPcGVuICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgdG9wLWZ1bGwgbGVmdC0wIHctZnVsbCBib3JkZXIgcm91bmRlZC14bCBiZy13aGl0ZSB6LTEwIHNoYWRvdy1sZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpc0luQmFza2V0ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1cIjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1sZWZ0IHB4LTYgcHktNCBob3ZlcjpiZy1iYWJ5Qmx1ZTQwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3B0aW9uU2VsZWN0KDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAge29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LWxlZnQgdGV4dC1zbSBweC02IHB5LTQgaG92ZXI6YmctYmFieUJsdWU0MCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9wdGlvblNlbGVjdChvcHRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge29wdGlvbn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e29uQ2xpY2t9IGNsYXNzTmFtZT17YGJ1dHRvbiB0cmFuc2xhdGUzZC0wIHJvdW5kZWQtbm9uZSB0ZXh0LXhzIHB5LTggcHgtMTIgd2hpdGVzcGFjZS1ub3dyYXAgJHtpc0luQmFza2V0ID8gXCJiZy1ncmVlbiBidXR0b24tLWRlZmF1bHQtZ3JlZW5cIiA6IFwiYnV0dG9uLS1kZWZhdWx0LWJsdWVcIn1gfT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YG1hdGVyaWFsLWljb25zIHRleHQtYmFzZSBsZWFkaW5nLVswXSBhbGlnbi1zdWIgJHtsb2FkaW5nICYmIFwiYW5pbWF0ZS1zcGluXCJ9YH0gYXJpYS1oaWRkZW49XCJ0cnVlXCI+e2xvYWRpbmcgPyBcInJlZnJlc2hcIiA6ICggaXNJbkJhc2tldCAmJiBzZWxlY3RlZFZhbHVlID09IDAgPyBcInJlbW92ZV9zaG9wcGluZ19jYXJ0XCIgOiBcInNob3BwaW5nX2NhcnRcIiApfTwvc3Bhbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn07XHJcblxyXG5jb25zdCBNYXRlcmlhbCA9IChpdGVtKSA9PiB7XHJcbiAgICBjb25zdCBbc2VsZWN0ZWRRdWFudGl0eSwgc2V0U2VsZWN0ZWRRdWFudGl0eV0gPSB1c2VTdGF0ZShcclxuICAgICAgICBpdGVtLnByb3BzLmFtb3VudEluQmFza2V0ID4gMCA/IGl0ZW0ucHJvcHMuYW1vdW50SW5CYXNrZXQgOiAwXHJcbiAgICApO1xyXG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW2lzSW5CYXNrZXQsIHNldElzSW5CYXNrZXRdID0gdXNlU3RhdGUoaXRlbS5wcm9wcy5hbW91bnRJbkJhc2tldCA+IDApOyAvLyBUcmFja3MgaWYgdGhlIGl0ZW0gaXMgaW4gdGhlIGJhc2tldFxyXG4gICAgY29uc3QgW2lzRGVzY3JpcHRpb25DbGFtcGVkLCBzZXRJc0Rlc2NyaXB0aW9uQ2xhbXBlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgICBjb25zdCBkZXNjcmlwdGlvblJlZiA9IHVzZVJlZihudWxsKTtcclxuICAgIGNvbnN0IHNlbGVjdFJlZiA9IHVzZVJlZihudWxsKTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBkZXNjcmlwdGlvbiBpcyBjbGFtcGVkLCArNSBmb3IgZXh0cmFcclxuICAgICAgICBjb25zdCBjaGVja0NsYW1waW5nID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25SZWYuY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgc2V0SXNEZXNjcmlwdGlvbkNsYW1wZWQoZGVzY3JpcHRpb25SZWYuY3VycmVudC5jbGllbnRIZWlnaHQgKyA1IDwgZGVzY3JpcHRpb25SZWYuY3VycmVudC5zY3JvbGxIZWlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjaGVja0NsYW1waW5nKCk7XHJcbiAgICAgICAgaWYgKGl0ZW0ub3BlbiA9PSBpdGVtLnByb3BzLmNvbnRlbnRJZCkge1xyXG4gICAgICAgICAgICBzZXRJc0V4cGFuZGVkKHRydWUpO1xyXG4gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpdGVtLm9wZW4pLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogXCJzbW9vdGhcIn0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICBjb25zdCB0b2dnbGVDbGFtcCA9ICgpID0+IHtcclxuICAgICAgICBzZXRJc0V4cGFuZGVkKChwcmV2KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoIXByZXYpIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBleHBhbmRpbmcgKHByZXYgaXMgZmFsc2UsIHNvIHdlIGFyZSBzZXR0aW5nIGl0IHRvIHRydWUpXHJcbiAgICAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzLmhhcyhcIm9wZW5cIikpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGV4aXN0aW5nICdvcGVuJyBwYXJhbWV0ZXJcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnMuc2V0KFwib3BlblwiLCBpdGVtLnByb3BzLmNvbnRlbnRJZCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgJ29wZW4nIHBhcmFtZXRlclxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1ldGVycy5hcHBlbmQoXCJvcGVuXCIsIGl0ZW0ucHJvcHMuY29udGVudElkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBjb2xsYXBzaW5nIChwcmV2IGlzIHRydWUsIHNvIHdlIGFyZSBzZXR0aW5nIGl0IHRvIGZhbHNlKVxyXG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLmRlbGV0ZShcIm9wZW5cIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgVVJMIHdpdGhvdXQgcmVsb2FkaW5nIHRoZSBwYWdlXHJcbiAgICAgICAgICAgIGNvbnN0IG5ld1VybCA9IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtxdWVyeVBhcmFtZXRlcnMudG9TdHJpbmcoKX1gO1xyXG4gICAgICAgICAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIG5ld1VybCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gIXByZXY7IC8vIFRvZ2dsZSB0aGUgZXhwYW5kZWQgc3RhdGVcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgdXBkYXRlQmFza2V0SXRlbSA9IChpZCwgcXVhbnRpdHkpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB4bWxodHRwID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XHJcbiAgICAgICAgICAgIGlmIChxdWFudGl0eSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGl0ZW0gZnJvbSBiYXNrZXRcclxuICAgICAgICAgICAgICAgIHhtbGh0dHAub3BlbihcIlBPU1RcIiwgYC9hcGkvb3JkZXIvcmVtb3ZlQmFza2V0SXRlbT9sYW5nPSR7aXRlbS5wcm9wcy5sYW5nfSZwcm9kdWN0SWQ9JHtpZH1gLCB0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIEFkZCBvciB1cGRhdGUgaXRlbSBpbiBiYXNrZXRcclxuICAgICAgICAgICAgICAgIHhtbGh0dHAub3BlbihcIlBVVFwiLCBgL2FwaS9vcmRlci91cHNlcnRCYXNrZXRJdGVtP2xhbmc9JHtpdGVtLnByb3BzLmxhbmd9JnByb2R1Y3RJZD0ke2lkfSZxdWFudGl0eT0ke3F1YW50aXR5fWAsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHhtbGh0dHAuc2VuZCgpO1xyXG4gICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xyXG5cclxuICAgICAgICAgICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlID09PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhdHVzID09PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhgQmFza2V0IHVwZGF0ZWQgZm9yIHByb2R1Y3QgSUQ6ICR7aWR9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldElzSW5CYXNrZXQocXVhbnRpdHkgPiAwKTsgLy8gVXBkYXRlIHRoZSBzdGF0ZSBiYXNlZCBvbiB0aGUgcXVhbnRpdHlcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYW5uZWwgPSBuZXcgQnJvYWRjYXN0Q2hhbm5lbChEb2N1bWVudENhcnRFdmVudEtleSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwucG9zdE1lc3NhZ2UocXVhbnRpdHkpOyAvLyBOb3RpZnkgdGhlIGNhcnQgYmFubmVyIHRvIHVwZGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7IC8vIFJlc29sdmUgdGhlIHByb21pc2VcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoYEZhaWxlZCB0byB1cGRhdGUgYmFza2V0IGZvciBwcm9kdWN0IElEOiAke2lkfWApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGFuZGxlUXVhbnRpdHlDaGFuZ2UgPSAoaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHF1YW50aXR5ID0gcGFyc2VJbnQoaSk7XHJcbiAgICAgICAgc2V0U2VsZWN0ZWRRdWFudGl0eShxdWFudGl0eSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZUFkZFRvQ2FydCA9ICgpID0+IHtcclxuICAgICAgICB1cGRhdGVCYXNrZXRJdGVtKGl0ZW0ucHJvcHMucHJvZHVjdElkRmllbGQsIHNlbGVjdGVkUXVhbnRpdHkpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIGgtZnVsbCBmbGV4IGZsZXgtY29sIHAtMFwiIGlkPXtpdGVtLnByb3BzLmNvbnRlbnRJZH0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgcm91bmRlZC14bCBzaGFkb3ctbGcgZmxleCBmbGV4LWNvbCBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvbi1hbGwgd2lsbC1jaGFuZ2UtdHJhbnNmb3JtIGNoZWNrLWluLXZpZXdwb3J0YH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0udXNlUGFnZVZpZXdzRm9yTWF0ZXJpYWxzID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj17aXRlbS5wcm9wcy50YXJnZXRVcmx9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhc3BlY3QtNC8zIHJvdW5kZWQteGwgYmctYmFieUJsdWU0MCBmbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbWFnZSBjbGFzc05hbWU9XCJhc3BlY3QtNC8zIHJvdW5kZWQteGwgdGV4dC14cyBoLWZ1bGwgdy1mdWxsIG9iamVjdC1jb3ZlciBkdXJhdGlvbi0zMDAgdHJhbnNpdGlvbi1hbGwgd2lsbC1jaGFuZ2UtdHJhbnNmb3JtIGhvdmVyOnNjYWxlLTEwNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz17aXRlbS5wcm9wcy5oaWdobGlnaHRJbWFnZX0gLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhc3BlY3QtNC8zIHJvdW5kZWQteGwgYmctYmFieUJsdWU0MCBmbGV4IGp1c3RpZnktY2VudGVyIGFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIGNsYXNzTmFtZT1cImFzcGVjdC00LzMgcm91bmRlZC14bCB0ZXh0LXhzIGgtZnVsbCB3LWZ1bGwgb2JqZWN0LWNvdmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9e2l0ZW0ucHJvcHMuaGlnaGxpZ2h0SW1hZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBtdC0xNiBiYXNpcy00MCBnYXAtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcy5vcmRlclF1YW50aXR5ICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGZsZXggYm9yZGVyIGJvcmRlci0yIHJvdW5kZWQteGwgJHtpc0luQmFza2V0ID8gXCJib3JkZXItZ3JlZW5cIiA6IFwiYm9yZGVyLWJsdWVcIn1gfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDdXN0b21Ecm9wZG93blxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e2l0ZW0ucHJvcHMub3JkZXJRdWFudGl0eX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlPXtzZWxlY3RlZFF1YW50aXR5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2VsZWN0ZWRWYWx1ZT17aXRlbS5xdWFudGl0eVRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVF1YW50aXR5Q2hhbmdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzSW5CYXNrZXQ9e2lzSW5CYXNrZXR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQWRkVG9DYXJ0fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ucHJvcHMuZmlsZVVybCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPXtpdGVtLnByb3BzLmZpbGVVcmx9IHRhcmdldD1cIl9ibGFua1wiIGNsYXNzTmFtZT1cImJ1dHRvbiBidXR0b24tLWRlZmF1bHQtYmx1ZSBmbGV4IGl0ZW1zLWNlbnRlciBzaHJpbmsgcm91bmRlZC14bCB0ZXh0LXhzIHB5LTggcHgtMTIgc206cHgtOCBtZDpweC0xMiB3aGl0ZXNwYWNlLW5vd3JhcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUERGIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIHRleHQtYmFzZSBtbC02IGxlYWRpbmctWzBdIGFsaWduLXN1YlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPnBpY3R1cmVfYXNfcGRmPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB5LTE2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzTmFtZT1cImZvbnQtYm9sZCBsZWFkaW5nLXRpZ2h0IG1iLTZcIj57aXRlbS5wcm9wcy50aXRsZX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyByZWY9e2Rlc2NyaXB0aW9uUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BsZWFkaW5nLXRpZ2h0IHRleHQtc20gJHshaXNFeHBhbmRlZCA/ICdsaW5lLWNsYW1wLTInIDogJyd9YH0+e2l0ZW0ucHJvcHMuZGVzY3JpcHRpb259PC9oMz5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAge2lzRGVzY3JpcHRpb25DbGFtcGVkICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXt0b2dnbGVDbGFtcH0gY2xhc3NOYW1lPVwiZm9udC1laW5hLXNlbWlib2xkIHRleHQtb3Jpb25CbHVlIHRleHQteHMgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2lzRXhwYW5kZWQgPyBpdGVtLmNsb3NlVGV4dCArICcgLScgOiBpdGVtLnZpZXdNb3JlVGV4dCArICcgKyd9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTggdGV4dC14cyBmb250LXNvdXJjZS1zYW5zLXBybyBmb250LWxpZ2h0IG10LTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucHJvcHMuYWxsVGFncyAmJiBpdGVtLnByb3BzLmFsbFRhZ3MubWFwKHRhZyA9PiA8c3BhbiBjbGFzc05hbWU9XCJyb3VuZGVkLWZ1bGwgcHgtOCBweS01IGJnLWJhYnlCbHVlNDBcIiBrZXk9e3RhZy5pZH0+e3RhZy5uYW1lfTwvc3Bhbj4pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1hdGVyaWFsO1xyXG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IE1hdGVyaWFsIGZyb20gJy4vbWF0ZXJpYWwnO1xyXG5pbXBvcnQgVmlzaWJpbGl0eVNlbnNvciBmcm9tICdyZWFjdC12aXNpYmlsaXR5LXNlbnNvcic7XHJcbmltcG9ydCBSZWFjdFBhZ2luYXRlIGZyb20gJ3JlYWN0LXBhZ2luYXRlJztcclxuXHJcbmNvbnN0IE1hdGVyaWFscyA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgW2ZpbHRlcnMsIHNldEZpbHRlcnNdID0gdXNlU3RhdGUobnVsbCk7IC8vIEluaXRpYWxseSBudWxsIHRvIHByZXZlbnQgcHJlbWF0dXJlIEFQSSBjYWxsc1xyXG4gICAgY29uc3QgW21hdGVyaWFscywgc2V0TWF0ZXJpYWxzXSA9IHVzZVN0YXRlKFtdKTtcclxuICAgIGNvbnN0IFtzZWxlY3RlZE1hdGVyaWFscywgc2V0U2VsZWN0ZWRNYXRlcmlhbHNdID0gdXNlU3RhdGUoW10pO1xyXG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gICAgY29uc3QgW29wZW4sIHNldE9wZW5dID0gdXNlU3RhdGUoKTtcclxuICAgIGNvbnN0IFtwYWdlLCBzZXRQYWdlXSA9IHVzZVN0YXRlKDEpO1xyXG4gICAgY29uc3QgW3BhZ2VDb3VudCwgc2V0UGFnZUNvdW50XSA9IHVzZVN0YXRlKDEpO1xyXG5cclxuICAgIGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCA9ICcnKSB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcclxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgaGVhZGVyczogeyAnYWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZXMgZmlsdGVyIGNsaWNrXHJcbiAgICBjb25zdCBmaWx0ZXJDbGljayA9IChpZCkgPT4ge1xyXG4gICAgICAgIGlmICghaWQpIHtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRNYXRlcmlhbHMoW10pO1xyXG4gICAgICAgICAgICBzZXRGaWx0ZXJzKHsgdGFnSWRzOiBcIlwiLCBwYWdlOiAxIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoIXNlbGVjdGVkTWF0ZXJpYWxzLmluY2x1ZGVzKGlkKSkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE1hdGVyaWFscyA9IFsuLi5zZWxlY3RlZE1hdGVyaWFscywgaWRdO1xyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZE1hdGVyaWFscyhuZXdTZWxlY3RlZE1hdGVyaWFscyk7XHJcbiAgICAgICAgICAgIHNldEZpbHRlcnMoeyB0YWdJZHM6IG5ld1NlbGVjdGVkTWF0ZXJpYWxzLmpvaW4oKSwgcGFnZTogMSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZE1hdGVyaWFscyA9IHNlbGVjdGVkTWF0ZXJpYWxzLmZpbHRlcihtYXRlcmlhbElkID0+IG1hdGVyaWFsSWQgIT09IGlkKTtcclxuICAgICAgICAgICAgc2V0U2VsZWN0ZWRNYXRlcmlhbHMobmV3U2VsZWN0ZWRNYXRlcmlhbHMpO1xyXG4gICAgICAgICAgICBzZXRGaWx0ZXJzKHsgdGFnSWRzOiBuZXdTZWxlY3RlZE1hdGVyaWFscy5qb2luKCksIHBhZ2U6IDEgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVQYWdlQ2hhbmdlID0gKHNlbGVjdGVkUGFnZSkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjbWF0ZXJpYWxzQmxvY2tcIikuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ3N0YXJ0JywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgIHNldFBhZ2Uoc2VsZWN0ZWRQYWdlKTtcclxuICAgICAgICBzZXRGaWx0ZXJzKChmaWx0ZXJzKSA9PiAoeyAuLi5maWx0ZXJzLCBwYWdlOiBzZWxlY3RlZFBhZ2UgfSkpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplcyBmaWx0ZXJzIGZyb20gbG9jYWxTdG9yYWdlIG9yIFVSTCBwYXJhbWV0ZXJzXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluaXRpYWxpemVGaWx0ZXJzID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtZXRlcnMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgICAgICAgICBjb25zdCB0YWdJZHNQYXJhbSA9IHF1ZXJ5UGFyYW1ldGVycy5nZXQoXCJ0YWdJZHNcIik7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VQYXJhbSA9IHF1ZXJ5UGFyYW1ldGVycy5nZXQoXCJwYWdlXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzdG9yZWRUYWdJZHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInRhZ0lkc1wiKTtcclxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkUGFnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwicGFnZVwiKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVGFnSWRzID0gW107XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsUGFnZSA9IDE7XHJcblxyXG4gICAgICAgICAgICBpZiAodGFnSWRzUGFyYW0pIHtcclxuICAgICAgICAgICAgICAgIGluaXRpYWxUYWdJZHMgPSB0YWdJZHNQYXJhbS5zcGxpdChcIixcIikubWFwKChpZCkgPT4gcGFyc2VJbnQoaWQpKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdG9yZWRUYWdJZHMpIHtcclxuICAgICAgICAgICAgICAgIGluaXRpYWxUYWdJZHMgPSBzdG9yZWRUYWdJZHMuc3BsaXQoXCIsXCIpLm1hcCgoaWQpID0+IHBhcnNlSW50KGlkKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChwYWdlUGFyYW0pIHtcclxuICAgICAgICAgICAgICAgIGluaXRpYWxQYWdlID0gcGFyc2VJbnQocGFnZVBhcmFtKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChzdG9yZWRQYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpbml0aWFsUGFnZSA9IHBhcnNlSW50KHN0b3JlZFBhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZE1hdGVyaWFscyhpbml0aWFsVGFnSWRzKTtcclxuICAgICAgICAgICAgc2V0UGFnZShpbml0aWFsUGFnZSk7XHJcbiAgICAgICAgICAgIHNldEZpbHRlcnMoeyB0YWdJZHM6IGluaXRpYWxUYWdJZHMuam9pbigpLCBwYWdlOiBpbml0aWFsUGFnZSB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChxdWVyeVBhcmFtZXRlcnMuZ2V0KFwib3BlblwiKSkge1xyXG4gICAgICAgICAgICAgICAgc2V0T3BlbihxdWVyeVBhcmFtZXRlcnMuZ2V0KFwib3BlblwiKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpbml0aWFsaXplRmlsdGVycygpO1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8vIEZldGNoIG1hdGVyaWFscyBvbmx5IHdoZW4gZmlsdGVycyBhcmUgaW5pdGlhbGl6ZWQgYW5kIHVwZGF0ZWRcclxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbHRlcnMgPT09IG51bGwpIHJldHVybjsgLy8gQXZvaWQgQVBJIGNhbGwgdW50aWwgZmlsdGVycyBhcmUgaW5pdGlhbGl6ZWRcclxuXHJcbiAgICAgICAgaWYgKGZpbHRlcnMudGFnSWRzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ0YWdJZHNcIiwgZmlsdGVycy50YWdJZHMpOyAvLyBQZXJzaXN0IHRhZ0lkcyBpbiBsb2NhbFN0b3JhZ2VcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpbHRlcnMucGFnZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwicGFnZVwiLCBmaWx0ZXJzLnBhZ2UpOyAvLyBQZXJzaXN0IHBhZ2UgaW4gbG9jYWxTdG9yYWdlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBmaWx0ZXJzU3RyaW5nID0gT2JqZWN0LmtleXMoZmlsdGVycylcclxuICAgICAgICAgICAgLm1hcCgoa2V5KSA9PiAoZmlsdGVyc1trZXldICE9IG51bGwgPyBgJHtrZXl9PSR7ZmlsdGVyc1trZXldfWAgOiBcIlwiKSlcclxuICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKVxyXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XHJcblxyXG4gICAgICAgIGxldCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG5cclxuICAgICAgICBjb25zdCBmdWxsVXJsID0gYC9hcGkvbWF0ZXJpYWwvbGlzdE1hdGVyaWFscz9sYW5nPSR7cHJvcHMubGFuZ30maT0ke3RpbWVzdGFtcH0mJHtmaWx0ZXJzU3RyaW5nfWA7XHJcblxyXG4gICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsIG51bGwsIGA/JHtmaWx0ZXJzU3RyaW5nfWApO1xyXG5cclxuICAgICAgICBwb3N0RGF0YShmdWxsVXJsKS50aGVuKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHNldE1hdGVyaWFscyhkYXRhLml0ZW1zIHx8IFtdKTtcclxuICAgICAgICAgICAgc2V0UGFnZUNvdW50KGRhdGEudG90YWxQYWdlcyB8fCAxKTtcclxuICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XHJcblxyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSwgW2ZpbHRlcnNdKTsgLy8gVHJpZ2dlcmVkIHdoZW4gZmlsdGVycyBhcmUgdXBkYXRlZFxyXG5cclxuICAgIC8vIExpc3RlbiBmb3IgVVJMIGNoYW5nZXMgYW5kIHVwZGF0ZSBzdGF0ZSBhY2NvcmRpbmdseVxyXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgICAgICBjb25zdCBoYW5kbGVQb3BTdGF0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbWV0ZXJzID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcclxuICAgICAgICAgICAgY29uc3QgdGFnSWRzUGFyYW0gPSBxdWVyeVBhcmFtZXRlcnMuZ2V0KFwidGFnSWRzXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBwYWdlUGFyYW0gPSBxdWVyeVBhcmFtZXRlcnMuZ2V0KFwicGFnZVwiKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsVGFnSWRzID0gW107XHJcbiAgICAgICAgICAgIGxldCBpbml0aWFsUGFnZSA9IDE7XHJcblxyXG4gICAgICAgICAgICBpZiAodGFnSWRzUGFyYW0pIHtcclxuICAgICAgICAgICAgICAgIGluaXRpYWxUYWdJZHMgPSB0YWdJZHNQYXJhbS5zcGxpdChcIixcIikubWFwKChpZCkgPT4gcGFyc2VJbnQoaWQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHBhZ2VQYXJhbSkge1xyXG4gICAgICAgICAgICAgICAgaW5pdGlhbFBhZ2UgPSBwYXJzZUludChwYWdlUGFyYW0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzZXRTZWxlY3RlZE1hdGVyaWFscyhpbml0aWFsVGFnSWRzKTtcclxuICAgICAgICAgICAgc2V0UGFnZShpbml0aWFsUGFnZSk7XHJcbiAgICAgICAgICAgIHNldEZpbHRlcnMoeyB0YWdJZHM6IGluaXRpYWxUYWdJZHMuam9pbigpLCBwYWdlOiBpbml0aWFsUGFnZSB9KTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBoYW5kbGVQb3BTdGF0ZSk7XHJcblxyXG4gICAgICAgIHJldHVybiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIGhhbmRsZVBvcFN0YXRlKTtcclxuICAgICAgICB9O1xyXG4gICAgfSwgW10pO1xyXG5cclxuICAgIC8vY29uc29sZS5sb2cobWF0ZXJpYWxzKTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxkaXYgaWQ9XCJtYXRlcmlhbHNCbG9ja1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTE1IG14LWF1dG8gbWQ6Y29udGFpbmVyIHhsOm1heC13LXNjcmVlbi14bCBtYi0zNVwiPlxyXG4gICAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cImgyIHRleHQtY2VudGVyIG1iLTQ0XCI+e3Byb3BzLmhlYWRpbmd9PC9oMj5cclxuICAgICAgICAgICAgICAgIHtwcm9wcy5zaG93VGhlcmFweUFyZWFUYWdzICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiaDMgdGV4dC1jZW50ZXIgbXQtMzIgbWItMjQgdGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj57cHJvcHMudGhlcmFweUFyZWFUYWdzSGVhZGluZ308L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC0xMiBteS0yNGB9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRoZXJhcHlBcmVhVGFncy5tYXAoeCA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBmaWx0ZXJDbGljayh4LmlkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt4LmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BidXR0b24gJHtzZWxlY3RlZE1hdGVyaWFscy5pbmNsdWRlcyh4LmlkKSA/IFwiYnV0dG9uLS1kZWZhdWx0LWJsdWVcIiA6IFwiYnV0dG9uLS1vdXRsaW5lLWJsdWVcIn1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3gubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICB7cHJvcHMuc2hvd1RhZ3MgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJoMyB0ZXh0LWNlbnRlciBtdC0zMiBtYi0yNCB0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZFwiPntwcm9wcy5wcm9kdWN0VGFnc0hlYWRpbmd9PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNlbnRlciBnYXAtMTIgbXktMjRgfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wcy50YWdzLm1hcCh4ID0+IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGZpbHRlckNsaWNrKHguaWQpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9e3guaWR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGJ1dHRvbiAke3NlbGVjdGVkTWF0ZXJpYWxzLmluY2x1ZGVzKHguaWQpID8gXCJidXR0b24tLWRlZmF1bHQtYmx1ZVwiIDogXCJidXR0b24tLW91dGxpbmUtYmx1ZVwifWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eC5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHtwcm9wcy5zaG93VGFyZ2V0R3JvdXBUYWdzICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwiaDMgdGV4dC1jZW50ZXIgbXQtMzIgbWItMjQgdGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj57cHJvcHMudGFyZ2V0R3JvdXBUYWdzSGVhZGluZ308L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC0xMiBteS0yNGB9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLnRhcmdldEdyb3VwVGFncy5tYXAoeCA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBmaWx0ZXJDbGljayh4LmlkKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXt4LmlkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2BidXR0b24gJHtzZWxlY3RlZE1hdGVyaWFscy5pbmNsdWRlcyh4LmlkKSA/IFwiYnV0dG9uLS1kZWZhdWx0LWJsdWVcIiA6IFwiYnV0dG9uLS1vdXRsaW5lLWJsdWVcIn1gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3gubmFtZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTE1IG14LWF1dG8geGw6bWF4LXctc2NyZWVuLXhsIG1iLTM1XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgZ3JpZCBncmlkLWNvbHMtMSBzbTpncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtMyBsZzpncmlkLWNvbHMtNCBnYXAteC0yMCBnYXAteS00MCBsZzpnYXAteC0zMCBsZzpnYXAteS01MCBtdC0zMmB9PlxyXG4gICAgICAgICAgICAgICAgICAgIHttYXRlcmlhbHMubWFwKGl0ZW0gPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJpbGl0eVNlbnNvciBrZXk9e2l0ZW0uY29udGVudElkfSBwYXJ0aWFsVmlzaWJpbGl0eT17dHJ1ZX0gaW50ZXJ2YWxEZWxheT17MzAwfT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoeyBpc1Zpc2libGUgfSkgPT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWF0ZXJpYWwgcHJvcHM9e2l0ZW19IGxvYWRpbmc9e2xvYWRpbmd9IHZpc2libGU9e2lzVmlzaWJsZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FydHVybD17cHJvcHMub3JkZXJGb3JtUGFnZVVybH0gdmlld01vcmVUZXh0PXtwcm9wcy52aWV3TW9yZVRleHR9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlVGV4dD17cHJvcHMuY2xvc2VUZXh0fSBxdWFudGl0eVRleHQ9e3Byb3BzLnF1YW50aXR5VGV4dH0gb3JkZXJhYmxlVGV4dD17cHJvcHMub3JkZXJhYmxlVGV4dH0gb3Blbj17b3Blbn0gdXNlUGFnZVZpZXdzRm9yTWF0ZXJpYWxzPXtwcm9wcy51c2VQYWdlVmlld3NGb3JNYXRlcmlhbHN9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVmlzaWJpbGl0eVNlbnNvcj5cclxuICAgICAgICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHtwYWdlQ291bnQgPiAxICYmXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC01MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8UmVhY3RQYWdpbmF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtMYWJlbD1cIi4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TGFiZWw9ezxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIG10LThcIj4mI3hFNUM4Ozwvc3Bhbj59XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0xhYmVsPXs8c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyBtdC04XCI+JiN4RTVDNDs8L3NwYW4+fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVJhbmdlRGlzcGxheWVkPXszfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luUGFnZXNEaXNwbGF5ZWQ9ezJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ291bnQ9e3BhZ2VDb3VudH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlck9uWmVyb1BhZ2VDb3VudD17dW5kZWZpbmVkfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3NOYW1lPXtcImZsZXggaW5saW5lLWZsZXggdy1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LW9yaW9uQmx1ZVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNsYXNzTmFtZT17XCJweC04IGhvdmVyOm9yaW9uTWlkZGxlQmx1ZVwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtDbGFzc05hbWU9e1wiXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c0NsYXNzTmFtZT17XCJweC04IGhvdmVyOnRleHQtb3Jpb25NaWRkbGVCbHVlXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Q2xhc3NOYW1lPXtcInB4LTggaG92ZXI6dGV4dC1vcmlvbk1pZGRsZUJsdWVcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUNsYXNzTmFtZT17XCJmb250LWVpbmEtc2VtaWJvbGRcIn1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkTGlua0NsYXNzTmFtZT17XCJvcGFjaXR5LTMwIGN1cnNvci1kZWZhdWx0XCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVBhZ2U9e3BhZ2UgLSAxfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25QYWdlQ2hhbmdlPXsocGFnZSkgPT4gaGFuZGxlUGFnZUNoYW5nZShwYWdlLnNlbGVjdGVkICsgMSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAge2xvYWRpbmcgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBwLTIwIGp1c3RpZnktY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3NOYW1lPVwiYW5pbWF0ZS1zcGluIHctODAgaC04MFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIC05NjAgOTYwIDk2MFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCIjMDAyMzRBXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQ4MC04MHEtODIgMC0xNTUtMzEuNXQtMTI3LjUtODZRMTQzLTI1MiAxMTEuNS0zMjVUODAtNDgwcTAtODMgMzEuNS0xNTUuNXQ4Ni0xMjdRMjUyLTgxNyAzMjUtODQ4LjVUNDgwLTg4MHExNyAwIDI4LjUgMTEuNVQ1MjAtODQwcTAgMTctMTEuNSAyOC41VDQ4MC04MDBxLTEzMyAwLTIyNi41IDkzLjVUMTYwLTQ4MHEwIDEzMyA5My41IDIyNi41VDQ4MC0xNjBxMTMzIDAgMjI2LjUtOTMuNVQ4MDAtNDgwcTAtMTcgMTEuNS0yOC41VDg0MC01MjBxMTcgMCAyOC41IDExLjVUODgwLTQ4MHEwIDgyLTMxLjUgMTU1dC04NiAxMjcuNXEtNTQuNSA1NC41LTEyNyA4NlQ0ODAtODBaXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE1hdGVyaWFscztcclxuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuXHJcblxyXG5jb25zdCBJbnB1dEZpZWxkID0gKHByb3BzKSA9PiB7XHJcblxyXG5cdC8vY29uc29sZS5sb2cocHJvcHMpO1xyXG5cdHJldHVybiAoXHJcblx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm1iLTIwXCI+XHJcblx0XHRcdDxsYWJlbCBodG1sRm9yPXtwcm9wcy5uYW1lfT57cHJvcHMuaGVhZGVyfXsocHJvcHMucmVxdWlyZWQgPyBcIiAoKilcIiA6IFwiXCIpfTwvbGFiZWw+XHJcblx0XHRcdHtwcm9wcy5oZWxwVGV4dCAmJiA8ZGl2IGNsYXNzTmFtZT1cImVwaWZvcm0tdG9vbHRpcC1pY29uXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJlcGlmb3JtLXRvb2x0aXBcIj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3NOYW1lPVwiYWJzb2x1dGUgbWQ6aGlkZGVuIHJpZ2h0LVsxNXB4XSB0b3AtWzVweF1cIj48c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyB0ZXh0LW9yaW9uQmx1ZSB0ZXh0LVsycmVtXVwiPiYjeEU1Q0Q7PC9zcGFuPjwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGRpdj57cHJvcHMuaGVscFRleHR9PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2Pn1cclxuXHRcdFx0PGlucHV0XHJcblx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdG5hbWU9e3Byb3BzLm5hbWV9XHJcblx0XHRcdFx0Y2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIGJvcmRlciBib3JkZXItYmxhY2sgcHgtOCBweS04XCJcclxuXHRcdFx0XHRvbkNoYW5nZT17ZXZlbnQgPT4gcHJvcHMub25DaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKX1cclxuXHRcdFx0XHR2YWx1ZT17cHJvcHMudmFsdWV9XHJcblx0XHRcdFx0cGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfVxyXG5cdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5yZXF1aXJlZH1cclxuXHRcdFx0Lz5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cdClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSW5wdXRGaWVsZCIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbWFnZSBmcm9tICcuLi9JbWFnZSc7XHJcblxyXG5jb25zdCBDdXN0b21Ecm9wZG93biA9ICh7IG9wdGlvbnMsIHNlbGVjdGVkVmFsdWUsIHVuc2VsZWN0ZWRWYWx1ZSwgb25DaGFuZ2UsIGlzSW5CYXNrZXQsIGxvYWRpbmcgfSkgPT4ge1xyXG4gICAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICAgIGNvbnN0IGRyb3Bkb3duUmVmID0gdXNlUmVmKG51bGwpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU91dHNpZGVDbGljayA9IChlKSA9PiB7XHJcbiAgICAgICAgaWYgKGRyb3Bkb3duUmVmLmN1cnJlbnQgJiYgIWRyb3Bkb3duUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpKSB7XHJcbiAgICAgICAgICAgIHNldElzT3BlbihmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVPdXRzaWRlQ2xpY2spO1xyXG4gICAgICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlT3V0c2lkZUNsaWNrKTtcclxuICAgIH0sIFtdKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVEcm9wZG93blRvZ2dsZSA9IChlKSA9PiB7XHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgc2V0SXNPcGVuKChwcmV2KSA9PiAhcHJldik7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU9wdGlvblNlbGVjdCA9IChvcHRpb24pID0+IHtcclxuICAgICAgICBvbkNoYW5nZShvcHRpb24pO1xyXG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiIHJlZj17ZHJvcGRvd25SZWZ9PlxyXG4gICAgICAgICAgICAgICAgey8qIFNlbGVjdGVkIFZhbHVlIERpc3BsYXkgKi99XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBoLWZ1bGwgaXRlbXMtY2VudGVyIGJvcmRlciByb3VuZGVkLWwteGwgdGV4dC14cyB0ZXh0LWxlZnQgcHgtMTAgcHktMiBjdXJzb3ItcG9pbnRlciBiZy13aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRHJvcGRvd25Ub2dnbGV9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIG1pbi13LVs0Y2hdXCI+e3NlbGVjdGVkVmFsdWUgfHwgKGlzSW5CYXNrZXQgPyBcIjBcIiA6IHVuc2VsZWN0ZWRWYWx1ZSl9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIG1sLTJcIj5leHBhbmRfbW9yZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIHsvKiBEcm9wZG93biBPcHRpb25zICovfVxyXG4gICAgICAgICAgICAgICAge2lzT3BlbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgdy1mdWxsIGJvcmRlciByb3VuZGVkLXhsIGJnLXdoaXRlIHotMTAgc2hhZG93LWxnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC1sZWZ0IHRleHQtc20gcHgtNiBweS00IGhvdmVyOmJnLWJhYnlCbHVlNDAgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3B0aW9uU2VsZWN0KG9wdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7b3B0aW9ufVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdHJhbnNsYXRlM2QtMCByb3VuZGVkLW5vbmUgdGV4dC14cyBweS04IHB4LTEyIHdoaXRlc3BhY2Utbm93cmFwICR7aXNJbkJhc2tldCA/IFwiYmctZ3JlZW4gYnV0dG9uLS1kZWZhdWx0LWdyZWVuXCIgOiBcImJ1dHRvbi0tZGVmYXVsdC1ibHVlXCJ9YH0+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2BtYXRlcmlhbC1pY29ucyB0ZXh0LWJhc2UgbGVhZGluZy1bMF0gYWxpZ24tc3ViICR7bG9hZGluZyAmJiBcImFuaW1hdGUtc3BpblwifWB9IGFyaWEtaGlkZGVuPVwidHJ1ZVwiPntsb2FkaW5nID8gXCJyZWZyZXNoXCIgOiAoaXNJbkJhc2tldCAmJiBzZWxlY3RlZFZhbHVlID09IDAgPyBcInJlbW92ZV9zaG9wcGluZ19jYXJ0XCIgOiBcInNob3BwaW5nX2NhcnRcIil9PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8Lz5cclxuICAgICk7XHJcbn07XHJcblxyXG5cclxuY29uc3QgSW5wdXRGaWVsZCA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgW3NlbGVjdGVkUXVhbnRpdHksIHNldFNlbGVjdGVkUXVhbnRpdHldID0gdXNlU3RhdGUocHJvcHMucHJvcHMucXVhbnRpdHkpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZVF1YW50aXR5Q2hhbmdlID0gKGkpID0+IHtcclxuICAgICAgICBjb25zdCBxdWFudGl0eSA9IHBhcnNlSW50KGkpO1xyXG4gICAgICAgIHNldFNlbGVjdGVkUXVhbnRpdHkocXVhbnRpdHkpO1xyXG4gICAgICAgIHByb3BzLnVwZGF0ZUl0ZW0ocHJvcHMucHJvcHMucHJvZHVjdElkLCBxdWFudGl0eSk7XHJcbiAgICB9O1xyXG5cclxuXHRyZXR1cm4gKFxyXG5cdFx0PFJlYWN0LkZyYWdtZW50PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGZsZXgtd3JhcFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwic2VsZi1jZW50ZXIgdy1mdWxsIGJhc2lzLWZ1bGwgbGc6dy0zLzUgbGc6YmFzaXMtMy81IHB5LTZcIj57cHJvcHMucHJvcHMucHJvZHVjdE5hbWV9PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktZW5kIHctZnVsbCBiYXNpcy1mdWxsIGxnOnctMi81IGxnOmJhc2lzLTIvNSBwbC0xMiBweS02IGxnOnBsLTAgbGc6cHktMThcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LXdyYXAgZ2FwLTEwXCI+XHJcblx0XHRcdFx0XHRcdDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YGZsZXggYm9yZGVyIGJvcmRlci0yIHJvdW5kZWQteGwgYm9yZGVyLWdyZWVuYH0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEN1c3RvbURyb3Bkb3duXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e3Byb3BzLnByb3BzLm9yZGVyYWJsZVF1YW50aXR5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFZhbHVlPXtzZWxlY3RlZFF1YW50aXR5fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNlbGVjdGVkVmFsdWU9ezB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVRdWFudGl0eUNoYW5nZX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNJbkJhc2tldD17dHJ1ZX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzTmFtZT17YGJ1dHRvbiBidXR0b24tLWRlZmF1bHQtcmVkIGhvdmVyOmJnLWRhcmtSZWQgcHktMCBweC04IHNocmluayByb3VuZGVkLXhsIHRleHQtYWVzY3VsYXBpdXMgZm9udC1zZW1pYm9sZCBmb250LXNvdXJjZS1zYW5zLXBybyAke3Byb3BzLmRpc2FibGVkICYmIFwiaGlkZGVuXCJ9YH0gdGl0bGU9e3Byb3BzLnRyYW5zbGF0aW9ucy5yZW1vdmVQcm9kdWN0QnV0dG9uVGV4dH0gb25DbGljaz17KCkgPT4gcHJvcHMucmVtb3ZlSXRlbShwcm9wcy5wcm9wcy5wcm9kdWN0SWQpfT48c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyB0ZXh0LWxnIG14LTRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5kZWxldGU8L3NwYW4+PC9idXR0b24+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L1JlYWN0LkZyYWdtZW50PlxyXG4gICAgKVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbnB1dEZpZWxkIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuY29uc3QgSW5wdXRDaGVja2JveCA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgcHJvcHMub25DaGFuZ2UoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xyXG4gICAgfTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2BoLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgcC0wIG1iLTI0ICR7cHJvcHMuaGFsZiA/IFwidy1mdWxsIGJhc2lzLWZ1bGwgbWQ6dy0xLzMgbWQ6YmFzaXMtMS8zXCIgOiBcInctZnVsbCBiYXNpcy1mdWxsXCJ9YH0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXktNlwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0yMCBoLTIwIG1yLTEwXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9e3Byb3BzLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cclxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtwcm9wcy5jaGVja2VkfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxsYWJlbCBodG1sRm9yPXtwcm9wcy5uYW1lfT57cHJvcHMuaGVhZGVyfXsocHJvcHMucmVxdWlyZWQgPyBcIiAoKilcIiA6IFwiXCIpfTwvbGFiZWw+XHJcbiAgICAgICAgICAgIHtwcm9wcy5oZWxwVGV4dCAmJiA8ZGl2IGNsYXNzTmFtZT1cImVwaWZvcm0tdG9vbHRpcC1pY29uXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJlcGlmb3JtLXRvb2x0aXBcIj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3NOYW1lPVwiYWJzb2x1dGUgbWQ6aGlkZGVuIHJpZ2h0LVsxNXB4XSB0b3AtWzVweF1cIj48c3BhbiBjbGFzc05hbWU9XCJtYXRlcmlhbC1pY29ucyB0ZXh0LW9yaW9uQmx1ZSB0ZXh0LVsycmVtXVwiPiYjeEU1Q0Q7PC9zcGFuPjwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PGRpdj57cHJvcHMuaGVscFRleHR9PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2Pn1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG59O1xyXG5leHBvcnQgZGVmYXVsdCBJbnB1dENoZWNrYm94OyIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcblxyXG5cclxuY29uc3QgSW5wdXRGaWVsZCA9IChwcm9wcykgPT4ge1xyXG5cclxuXHQvL2NvbnNvbGUubG9nKHByb3BzKTtcclxuXHJcblx0aWYgKHByb3BzLm9wdGlvbnMubGVuZ3RoID4gMCkge1xyXG5cdFx0dmFyIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHQ8b3B0aW9uIGtleT17aXRlbS5jb2RlfSB2YWx1ZT17aXRlbS5jb2RlfT57aXRlbS5uYW1lfTwvb3B0aW9uPlxyXG5cdFx0XHRcdClcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdiBjbGFzc05hbWU9XCJtYi0yMFwiPlxyXG5cdFx0XHQ8bGFiZWwgaHRtbEZvcj17cHJvcHMubmFtZX0+e3Byb3BzLmhlYWRlcn17KHByb3BzLnJlcXVpcmVkID8gXCIgKCopXCIgOiBcIlwiKX08L2xhYmVsPlxyXG5cdFx0XHR7cHJvcHMuaGVscFRleHQgJiYgPGRpdiBjbGFzc05hbWU9XCJlcGlmb3JtLXRvb2x0aXAtaWNvblwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZXBpZm9ybS10b29sdGlwXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzTmFtZT1cImFic29sdXRlIG1kOmhpZGRlbiByaWdodC1bMTVweF0gdG9wLVs1cHhdXCI+PHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvbnMgdGV4dC1vcmlvbkJsdWUgdGV4dC1bMnJlbV1cIj4mI3hFNUNEOzwvc3Bhbj48L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxkaXY+e3Byb3BzLmhlbHBUZXh0fTwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj59XHJcblx0XHRcdDxzZWxlY3QgaWQ9e3Byb3BzLm5hbWV9IHJlcXVpcmVkPXtwcm9wcy5yZXF1aXJlZH0gdmFsdWU9e3Byb3BzLnZhbHVlfSBvbkNoYW5nZT17ZXZlbnQgPT4gcHJvcHMub25DaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKX0gY2xhc3NOYW1lPVwidy1mdWxsXCIgbmFtZT17cHJvcHMubmFtZX0+XHJcblx0XHRcdFx0e29wdGlvbnN9XHJcblx0XHRcdDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cdClcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgSW5wdXRGaWVsZCIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcblxyXG5cclxuY29uc3QgSW5wdXRGaWVsZCA9IChwcm9wcykgPT4ge1xyXG5cclxuXHQvL2NvbnNvbGUubG9nKHByb3BzKTtcclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdiBjbGFzc05hbWU9XCJtYi0yMFwiPlxyXG5cdFx0XHQ8bGFiZWwgaHRtbEZvcj17cHJvcHMubmFtZX0+e3Byb3BzLmhlYWRlcn17KHByb3BzLnJlcXVpcmVkID8gXCIgKCopXCIgOiBcIlwiKX08L2xhYmVsPlxyXG5cdFx0XHR7cHJvcHMuaGVscFRleHQgJiYgPGRpdiBjbGFzc05hbWU9XCJlcGlmb3JtLXRvb2x0aXAtaWNvblwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZXBpZm9ybS10b29sdGlwXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzTmFtZT1cImFic29sdXRlIG1kOmhpZGRlbiByaWdodC1bMTVweF0gdG9wLVs1cHhdXCI+PHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvbnMgdGV4dC1vcmlvbkJsdWUgdGV4dC1bMnJlbV1cIj4mI3hFNUNEOzwvc3Bhbj48L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxkaXY+e3Byb3BzLmhlbHBUZXh0fTwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj59XHJcblx0XHRcdFx0XHJcblx0XHRcdDx0ZXh0YXJlYSBuYW1lPXtwcm9wcy5uYW1lfSB2YWx1ZT17cHJvcHMudmFsdWV9IHJlcXVpcmVkPXtwcm9wcy5yZXF1aXJlZH0gcGxhY2Vob2xkZXI9e3Byb3BzLnBsYWNlaG9sZGVyfSBvbkNoYW5nZT17ZXZlbnQgPT4gcHJvcHMub25DaGFuZ2UoZXZlbnQudGFyZ2V0LnZhbHVlKX0gY2xhc3NOYW1lPVwiYmxvY2sgdy1mdWxsIGJvcmRlciBib3JkZXItYmxhY2sgcHgtOCBweS04XCIgPlxyXG5cdFx0XHQ8L3RleHRhcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblx0KVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBJbnB1dEZpZWxkIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBJbnB1dEZpZWxkIGZyb20gJy4vaW5wdXRGaWVsZCc7XHJcbmltcG9ydCBJbnB1dFJhZGlvIGZyb20gJy4vaW5wdXRSYWRpbyc7XHJcbmltcG9ydCBQcm9kdWN0Um93IGZyb20gJy4vcHJvZHVjdFJvdyc7XHJcbmltcG9ydCBJbnB1dENoZWNrYm94IGZyb20gJy4vaW5wdXRDaGVja2JveCc7XHJcbmltcG9ydCBJbnB1dERyb3Bkb3duIGZyb20gJy4vaW5wdXREcm9wZG93bic7XHJcbmltcG9ydCBJbnB1dFRleHRhcmVhIGZyb20gJy4vaW5wdXRUZXh0YXJlYSc7XHJcbmltcG9ydCB7IGV2ZW50YnVzLCBldmVudHMgfSBmcm9tIFwiLi4vZXZlbnRidXNcIjtcclxuXHJcblxyXG5jb25zdCBPcmRlck1hdGVyaWFscyA9IChwcm9wcykgPT4ge1xyXG5cdGNvbnN0IFtjYXJ0LCBzZXRDYXJ0XSA9IHVzZVN0YXRlKHt9KTtcclxuXHRjb25zdCBbZm9ybUVycm9yLCBzZXRGb3JtRXJyb3JdID0gdXNlU3RhdGUoXCJcIik7XHJcblx0Y29uc3QgW2Zvcm1TdWJtaXRFcnJvciwgc2V0Rm9ybVN1Ym1pdEVycm9yXSA9IHVzZVN0YXRlKFwiXCIpO1xyXG5cclxuXHRjb25zdCBpbml0aWFsT3JkZXJGb3JtID0ge1xyXG5cdFx0XCJsYXN0TmFtZVwiOiBwcm9wcy51c2VyRGF0YS5sYXN0TmFtZSA/PyBcIlwiLFxyXG5cdFx0XCJmaXJzdE5hbWVcIjogcHJvcHMudXNlckRhdGEuZmlyc3ROYW1lID8/IFwiXCIsXHJcblx0XHRcImVtYWlsXCI6IHByb3BzLnVzZXJEYXRhLmxvZ2dlZEluRW1haWwgPz8gXCJcIixcclxuXHRcdFwiam9iUm9sZVwiOiBwcm9wcy51c2VyRGF0YS5zcGVjaWFsaXR5ID8/IFwiXCIsXHJcblx0XHRcImNvbXBhbnlcIjogcHJvcHMudXNlckRhdGEucGxhY2VPZldvcmsgPz8gXCJcIixcclxuXHRcdFwic2VjdGlvblwiOiBcIlwiLFxyXG5cdFx0XCJzdHJlZXRBZGRyZXNzXCI6IFwiXCIsXHJcblx0XHRcInBvc3RhbENvZGVcIjogXCJcIixcclxuXHRcdFwiY291bnRyeVwiOiBwcm9wcy51c2VyRGF0YS5jb3VudHJ5ID8/IFwiXCIsXHJcblx0XHRcImNpdHlcIjogXCJcIixcclxuXHRcdFwicmVnaW9uXCI6IHByb3BzLnVzZXJEYXRhLmNvdW50eSA/PyBcIlwiLFxyXG5cdFx0XCJjdXN0b21DaGVja2JveFwiOiBmYWxzZSxcclxuXHRcdFwiY29uc2VudFwiOiBmYWxzZSxcclxuXHRcdFwibWFya2V0aW5nQ29uc2VudFwiOiBmYWxzZSxcclxuXHRcdFwibWVzc2FnZVwiOiBcIlwiLFxyXG5cdFx0XCJoaWRkZW5GaWVsZFwiOiBcIlwiLFxyXG5cdH07XHJcblxyXG5cdC8vIENvbmRpdGlvbmFsbHkgYWRkIGhpZGRlbiBmaWVsZCBhbmQgZHJvcGRvd3MgdG8gb3JkZXJGb3JtIHN0YXRlXHJcblx0aWYgKHByb3BzLmhpZGRlbkZpZWxkLmVuYWJsZWQpIHtcclxuXHRcdGluaXRpYWxPcmRlckZvcm1bXCJoaWRkZW5GaWVsZFwiXSA9IHByb3BzLmhpZGRlbkZpZWxkLnZhbHVlO1xyXG5cdH1cclxuXHRpZiAocHJvcHMuam9iUm9sZS5lbmFibGVkICYmICFwcm9wcy51c2VyRGF0YS5zcGVjaWFsaXR5KSB7XHJcblx0XHRpbml0aWFsT3JkZXJGb3JtW1wiam9iUm9sZVwiXSA9IHByb3BzLmpvYlJvbGUudmFsdWVzWzBdPy5jb2RlO1xyXG5cdH1cclxuXHRpZiAocHJvcHMucmVnaW9uLmVuYWJsZWQgJiYgIXByb3BzLnVzZXJEYXRhLmNvdW50eSkge1xyXG5cdFx0aW5pdGlhbE9yZGVyRm9ybVtcInJlZ2lvblwiXSA9IHByb3BzLnJlZ2lvbi52YWx1ZXNbMF0/LmNvZGU7XHJcblx0fVx0XHJcblxyXG5cdGNvbnN0IFtvcmRlckZvcm0sIHNldE9yZGVyRm9ybV0gPSB1c2VTdGF0ZShpbml0aWFsT3JkZXJGb3JtKTtcclxuXHJcblx0Y29uc3QgW3N1Ym1pc3Npb25JblByb2dyZXNzLCBzZXRTdWJtaXNzaW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblx0Y29uc3QgW3N1Ym1pdHRlZCwgc2V0U3VibWl0dGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHRjb25zdCBbbG9hZGVkLCBzZXRMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuXHR2YXIgeG1saHR0cCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xyXG5cclxuXHR1c2VFZmZlY3QoKCkgPT4ge1xyXG5cclxuXHRcdHBvc3REYXRhKFwiL2FwaS9vcmRlci9nZXRCYXNrZXRJdGVtc1wiKVxyXG5cdFx0XHQudGhlbigoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdChkYXRhID8gc2V0Q2FydChkYXRhKSA6IHNldENhcnQobnVsbCkpO1xyXG5cdFx0XHRcdC8vY29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0c2V0TG9hZGVkKHRydWUpO1xyXG5cdFx0XHR9KTtcclxuXHR9LCBbXSk7XHJcblxyXG5cdGFzeW5jIGZ1bmN0aW9uIHBvc3REYXRhKHVybCA9ICcnKSB7XHJcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCArIFwiP2xhbmc9XCIgKyBwcm9wcy5sYW5nLCB7XHJcblx0XHRcdG1ldGhvZDogJ0dFVCcsXHJcblx0XHRcdGhlYWRlcnM6IHtcclxuXHRcdFx0XHQnYWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHJlc3BvbnNlLmpzb24oKTtcclxuXHR9XHJcblxyXG5cdGlmIChjYXJ0Lml0ZW1zPy5sZW5ndGggPiAwKSB7XHJcblx0XHR2YXIgY2FydEh0bWwgPSBjYXJ0Lml0ZW1zLm1hcCgoaXRlbSwgaSkgPT4ge1xyXG5cdFx0XHRpZiAoaXRlbSkge1xyXG5cdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHQ8UHJvZHVjdFJvdyBrZXk9e2l0ZW0ucHJvZHVjdElkfSBwcm9wcz17aXRlbX0gcmVtb3ZlSXRlbT17cmVtb3ZlSXRlbX0gdXBkYXRlSXRlbT17dXBkYXRlSXRlbX0gZGlzYWJsZWQ9e3N1Ym1pdHRlZH0gdHJhbnNsYXRpb25zPXsoeyBcInJlbW92ZVByb2R1Y3RCdXR0b25UZXh0XCI6IHByb3BzLnJlbW92ZVByb2R1Y3RCdXR0b25UZXh0LCBcInByaWNlVGV4dFwiOiBwcm9wcy5wcmljZVRleHQsIFwicXVhbnRpdHlUZXh0XCI6IHByb3BzLnF1YW50aXR5VGV4dH0pfSAvPlxyXG5cdFx0XHRcdClcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZW1vdmVJdGVtKGlkKSB7XHJcblx0XHR4bWxodHRwLm9wZW4oXCJQT1NUXCIsIGAvYXBpL29yZGVyL3JlbW92ZUJhc2tldEl0ZW0/bGFuZz0ke3Byb3BzLmxhbmd9JnByb2R1Y3RJZD0ke2lkfWAsIHRydWUpO1xyXG5cdFx0eG1saHR0cC5zZW5kKCk7XHJcblxyXG5cdFx0eG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gNCAmJiB0aGlzLnN0YXR1cyA9PSAyMDApIHtcclxuXHRcdFx0XHRwb3N0RGF0YShcIi9hcGkvb3JkZXIvZ2V0QmFza2V0SXRlbXNcIilcclxuXHRcdFx0XHRcdC50aGVuKChkYXRhKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xyXG5cclxuXHRcdFx0XHRcdFx0KGRhdGEgPyBzZXRDYXJ0KGRhdGEpIDogc2V0Q2FydChudWxsKSk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHVwZGF0ZUl0ZW0oaWQsIGFtb3VudCkge1xyXG5cdFx0Ly8gVXBkYXRlIHRoZSBjYXJ0IGltbWVkaWF0ZWx5IGluIHRoZSBzdGF0ZSBmb3IgYSBiZXR0ZXIgdXNlciBleHBlcmllbmNlXHJcblx0XHRjb25zdCB1cGRhdGVkSXRlbXMgPSBjYXJ0Lml0ZW1zLm1hcChpdGVtID0+XHJcblx0XHRcdGl0ZW0ucHJvZHVjdElkID09PSBpZCA/IHsgLi4uaXRlbSwgcXVhbnRpdHk6IGFtb3VudCB9IDogaXRlbVxyXG5cdFx0KTtcclxuXHRcdHNldENhcnQocHJldkNhcnQgPT4gKHtcclxuXHRcdFx0Li4ucHJldkNhcnQsXHJcblx0XHRcdGl0ZW1zOiB1cGRhdGVkSXRlbXMsXHJcblx0XHR9KSk7XHJcblxyXG5cdFx0Ly8gVGhlbiBzZW5kIHRoZSB1cGRhdGUgcmVxdWVzdCB0byB0aGUgc2VydmVyXHJcblx0XHR4bWxodHRwLm9wZW4oXCJQVVRcIiwgYC9hcGkvb3JkZXIvdXBzZXJ0QmFza2V0SXRlbT9sYW5nPSR7cHJvcHMubGFuZ30mcHJvZHVjdElkPSR7aWR9JnF1YW50aXR5PSR7YW1vdW50fWAsIHRydWUpO1xyXG5cdFx0eG1saHR0cC5zZW5kKCk7XHJcblxyXG5cdFx0eG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdGlmICh0aGlzLnJlYWR5U3RhdGUgPT0gNCAmJiB0aGlzLnN0YXR1cyA9PSAyMDApIHtcclxuXHRcdFx0XHQvLyBPcHRpb25hbGx5LCBmZXRjaCB0aGUgbGF0ZXN0IGNhcnQgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIgdG8gZW5zdXJlIGFjY3VyYWN5XHJcblx0XHRcdFx0cG9zdERhdGEoXCIvYXBpL29yZGVyL2dldEJhc2tldEl0ZW1zXCIpXHJcblx0XHRcdFx0XHQudGhlbigoZGF0YSkgPT4ge1xyXG5cdFx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGRhdGEpO1xyXG5cdFx0XHRcdFx0XHRzZXRDYXJ0KGRhdGEgPyBkYXRhIDogbnVsbCk7XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGVtcHR5QmFza2V0KCkge1xyXG5cdFx0eG1saHR0cC5vcGVuKFwiUE9TVFwiLCBcIi9hcGkvb3JkZXIvY2xlYXJCYXNrZXRcIiwgdHJ1ZSk7XHJcblx0XHR4bWxodHRwLnNlbmQoKTtcclxuXHRcdHNldENhcnQoe30pXHJcblxyXG5cdFx0ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYXJ0UHJvZHVjdHNcIikucmVtb3ZlKCk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzdWJtaXQoZXZlbnQpIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG5cdFx0c2V0U3VibWlzc2lvbkluUHJvZ3Jlc3ModHJ1ZSk7XHJcblxyXG5cdFx0c2V0Rm9ybUVycm9yKGZhbHNlKTtcclxuXHRcdHNldEZvcm1TdWJtaXRFcnJvcihcIlwiKTtcclxuXHRcdGxldCBpc0Vycm9yID0gZmFsc2U7XHJcblxyXG5cdFx0Ly8gRm9ybSB2YWxpZGF0aW9uXHJcblx0XHRPYmplY3Qua2V5cyhvcmRlckZvcm0pLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IG9yZGVyRm9ybVtrZXldO1xyXG5cdFx0XHRjb25zdCBwcm9wID0gcHJvcHNba2V5XTtcclxuXHJcblx0XHRcdGlmIChwcm9wLnJlcXVpcmVkKSB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpLmxlbmd0aCA8IDEpIHtcclxuXHRcdFx0XHRcdC8vIElmIHRoZSBmaWVsZCBpcyBhIHRleHQgaW5wdXQgYW5kIGl0J3MgZW1wdHlcclxuXHRcdFx0XHRcdHNldEZvcm1FcnJvcihwcm9wcy52YWxpZGF0aW9uRXJyb3JNZXNzYWdlKTtcclxuXHRcdFx0XHRcdGlzRXJyb3IgPSB0cnVlO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYC0gRVJST1I6ICR7a2V5fSBpcyByZXF1aXJlZCBidXQgZW1wdHlgKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nICYmICF2YWx1ZSkge1xyXG5cdFx0XHRcdFx0Ly8gSWYgdGhlIGZpZWxkIGlzIGEgY2hlY2tib3ggYW5kIGl0J3Mgbm90IGNoZWNrZWRcclxuXHRcdFx0XHRcdHNldEZvcm1FcnJvcihwcm9wcy52YWxpZGF0aW9uRXJyb3JNZXNzYWdlKTtcclxuXHRcdFx0XHRcdGlzRXJyb3IgPSB0cnVlO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYC0gRVJST1I6ICR7a2V5fSBpcyByZXF1aXJlZCBidXQgbm90IGNoZWNrZWRgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGNvbnNvbGUubG9nKG9yZGVyRm9ybSk7XHJcblxyXG5cdFx0aWYgKCFpc0Vycm9yKSB7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwiUE9TVFwiKTtcclxuXHJcblx0XHRcdGNvbnN0IHJlcXVlc3RPcHRpb25zID0ge1xyXG5cdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyB9LFxyXG5cdFx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KG9yZGVyRm9ybSlcclxuXHRcdFx0fTtcclxuXHRcdFx0ZmV0Y2goJy9hcGkvb3JkZXIvY29tcGxldGVPcmRlcj9sYW5nPScgKyBwcm9wcy5sYW5nLCByZXF1ZXN0T3B0aW9ucylcclxuXHRcdFx0XHQudGhlbigocmVzcG9uc2UpID0+IHtcclxuXHRcdFx0XHRcdGlmICghcmVzcG9uc2Uub2spIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCJDYWxsIHRvIC9hcGkvb3JkZXIvY29tcGxldGVPcmRlciByZXN1bHRlZCBpbiBlcnJvclwiKVxyXG5cdFx0XHRcdFx0XHRyZXNwb25zZS5qc29uKCkudGhlbih2YWx1ZSA9PiBzZXRGb3JtU3VibWl0RXJyb3IodmFsdWUuZXJyb3JzWzBdKSk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRwdXNoT3JkZXJBbmFseXRpY3NFdmVudHMoKTtcclxuXHRcdFx0XHRcdFx0c2V0U3VibWl0dGVkKHRydWUpO1xyXG5cdFx0XHRcdFx0XHRlbXB0eUJhc2tldCgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0c2V0U3VibWlzc2lvbkluUHJvZ3Jlc3MoZmFsc2UpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdHNldFN1Ym1pc3Npb25JblByb2dyZXNzKGZhbHNlKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHB1c2hPcmRlckFuYWx5dGljc0V2ZW50cygpIHtcclxuXHRcdHZhciBldmVudHMgPSBjYXJ0Lml0ZW1zLm1hcChpdGVtID0+ICh7XHJcblx0XHRcdGV2ZW50OiBcIk1hdGVyaWFsc1wiLFxyXG5cdFx0XHRtYXRlcmlhbF90aXRsZTogaXRlbS5wcm9kdWN0TmFtZSxcclxuXHRcdFx0bWF0ZXJpYWxfcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHksXHJcblx0XHRcdG9yZGVyX2lkOiBjYXJ0LmlkXHJcblx0XHR9KSk7XHJcblx0XHRpZiAod2luZG93LmRhdGFMYXllcikge1xyXG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiQW5hbHl0aWNzIGV2ZW50XCIpO1xyXG5cdFx0XHR3aW5kb3cuZGF0YUxheWVyLnB1c2goZXZlbnRzKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8vY29uc29sZS5sb2cob3JkZXJGb3JtKTtcclxuXHJcblx0cmV0dXJuIChcclxuXHRcdDxkaXY+XHJcblx0XHRcdHsoY2FydC5pdGVtcz8ubGVuZ3RoID4gMCAmJiAhc3VibWl0dGVkKSAmJlxyXG5cdFx0XHRcdDxSZWFjdC5GcmFnbWVudD5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmctb3Jpb25EYXJrQmx1ZSBwLTMyIHRleHQtd2hpdGUgZmxleCBqdXN0aWZ5LWNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cInRleHQtY29udGVudCB0ZXh0LWNvbnRlbnQtd2hpdGUgaW5saW5lLXAgbS0wXCI+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPVwibWF0ZXJpYWwtaWNvbnMgaW5saW5lIHAtOCB0ZXh0LWJhc2Ugcm91bmRlZC1mdWxsIGFzcGVjdC1zcXVhcmUgYm9yZGVyIGJvcmRlci13aGl0ZSBtci0xNiBhbGlnbi1zdWJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5hcnJvd19iYWNrPC9zcGFuPjxzcGFuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogcHJvcHMuYmFja1RvTWF0ZXJpYWxMaXN0aW5nVGV4dCB9fT48L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciBsZzptYXgtdy1zY3JlZW4tbGcgcHQtNjBcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJ3LTIvM1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxoMSBjbGFzc05hbWU9XCJoMiBmbGV4LTEgbWItMTIgbWQ6bWItMzVcIj57cHJvcHMuaGVhZGluZ308L2gxPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJcIiBpZD1cInNob3BwaW5nQ2FydFwiPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtd3JhcCBkaXZpZGUteSBkaXZpZGUtb3Jpb25EYXJrQmx1ZSBib3JkZXItb3Jpb25EYXJrQmx1ZSBib3JkZXItdCBib3JkZXItYlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHtjYXJ0SHRtbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7IXN1Ym1pdHRlZCA/XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJtYi02NVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGgzIGNsYXNzTmFtZT1cImgzIG10LTQ0XCI+e3Byb3BzLmZvcm1IZWFkaW5nfTwvaDM+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGZvcm0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Byb3BzLmZpcnN0TmFtZS5lbmFibGVkICYmIDxJbnB1dEZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLmZpcnN0TmFtZS5sYWJlbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtvcmRlckZvcm0uZmlyc3ROYW1lfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVscFRleHQ9e3Byb3BzLmZpcnN0TmFtZS5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJmaXJzdG5hbWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3Byb3BzLmZpcnN0TmFtZS5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJmaXJzdE5hbWVcIjogdmFsdWUgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ9e3Byb3BzLmZpcnN0TmFtZS5yZXF1aXJlZH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPn1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Byb3BzLmxhc3ROYW1lLmVuYWJsZWQgJiYgPElucHV0RmllbGRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlYWRlcj17cHJvcHMubGFzdE5hbWUubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17b3JkZXJGb3JtLmxhc3ROYW1lfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVscFRleHQ9e3Byb3BzLmxhc3ROYW1lLmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cImxhc3RuYW1lXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtwcm9wcy5sYXN0TmFtZS5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJsYXN0TmFtZVwiOiB2YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSl9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17cHJvcHMubGFzdE5hbWUucmVxdWlyZWR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz59XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtwcm9wcy5lbWFpbC5lbmFibGVkICYmIDxJbnB1dEZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLmVtYWlsLmxhYmVsfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e29yZGVyRm9ybS5lbWFpbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5lbWFpbC5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJlbWFpbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17cHJvcHMuZW1haWwucGxhY2Vob2xkZXJ9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRPcmRlckZvcm0oY29udGVudCA9PiAoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5jb250ZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi57IFwiZW1haWxcIjogdmFsdWUgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ9e3Byb3BzLmVtYWlsLnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMuam9iUm9sZS5lbmFibGVkICYmIDxJbnB1dERyb3Bkb3duXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLmpvYlJvbGUubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17b3JkZXJGb3JtLmpvYlJvbGV9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWxwVGV4dD17cHJvcHMuam9iUm9sZS5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJqb2JSb2xlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9wdGlvbnM9e3Byb3BzLmpvYlJvbGUudmFsdWVzfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0T3JkZXJGb3JtKGNvbnRlbnQgPT4gKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uY29udGVudCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4ueyBcImpvYlJvbGVcIjogdmFsdWUgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ9e3Byb3BzLmpvYlJvbGUucmVxdWlyZWR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz59XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtwcm9wcy5jb21wYW55LmVuYWJsZWQgJiYgPElucHV0RmllbGRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlYWRlcj17cHJvcHMuY29tcGFueS5sYWJlbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtvcmRlckZvcm0uY29tcGFueX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5jb21wYW55LmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cImNvbXBhbnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9e3Byb3BzLmNvbXBhbnkucGxhY2Vob2xkZXJ9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbHVlKSA9PiBzZXRPcmRlckZvcm0oY29udGVudCA9PiAoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5jb250ZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi57IFwiY29tcGFueVwiOiB2YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSl9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17cHJvcHMuY29tcGFueS5yZXF1aXJlZH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPn1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Byb3BzLnNlY3Rpb24uZW5hYmxlZCAmJiA8SW5wdXRGaWVsZFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyPXtwcm9wcy5zZWN0aW9uLmxhYmVsfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e29yZGVyRm9ybS5zZWN0aW9ufVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVscFRleHQ9e3Byb3BzLnNlY3Rpb24uaGVscFRleHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lPVwic2VjdGlvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17cHJvcHMuc2VjdGlvbi5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJzZWN0aW9uXCI6IHZhbHVlIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5zZWN0aW9uLnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMuc3RyZWV0QWRkcmVzcy5lbmFibGVkICYmIDxJbnB1dEZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLnN0cmVldEFkZHJlc3MubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17b3JkZXJGb3JtLnN0cmVldEFkZHJlc3N9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWxwVGV4dD17cHJvcHMuc3RyZWV0QWRkcmVzcy5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJhZGRyZXNzXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtwcm9wcy5zdHJlZXRBZGRyZXNzLnBsYWNlaG9sZGVyfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0T3JkZXJGb3JtKGNvbnRlbnQgPT4gKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uY29udGVudCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4ueyBcInN0cmVldEFkZHJlc3NcIjogdmFsdWUgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxdWlyZWQ9e3Byb3BzLnN0cmVldEFkZHJlc3MucmVxdWlyZWR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz59XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHtwcm9wcy5wb3N0YWxDb2RlLmVuYWJsZWQgJiYgPElucHV0RmllbGRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlYWRlcj17cHJvcHMucG9zdGFsQ29kZS5sYWJlbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXtvcmRlckZvcm0ucG9zdGFsQ29kZX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5wb3N0YWxDb2RlLmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cInppcFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17cHJvcHMucG9zdGFsQ29kZS5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJwb3N0YWxDb2RlXCI6IHZhbHVlIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhhbGY9e3RydWV9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17cHJvcHMucG9zdGFsQ29kZS5yZXF1aXJlZH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPn1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Byb3BzLmNvdW50cnkuZW5hYmxlZCAmJiA8SW5wdXRGaWVsZFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyPXtwcm9wcy5jb3VudHJ5LmxhYmVsfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e29yZGVyRm9ybS5jb3VudHJ5fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVscFRleHQ9e3Byb3BzLmNvdW50cnkuaGVscFRleHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lPVwiY291bnRyeVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17cHJvcHMuY291bnRyeS5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJjb3VudHJ5XCI6IHZhbHVlIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5jb3VudHJ5LnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMuY2l0eS5lbmFibGVkICYmIDxJbnB1dEZpZWxkXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLmNpdHkubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17b3JkZXJGb3JtLmNpdHl9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWxwVGV4dD17cHJvcHMuY2l0eS5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJjaXR5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPXtwcm9wcy5jaXR5LnBsYWNlaG9sZGVyfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0T3JkZXJGb3JtKGNvbnRlbnQgPT4gKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uY29udGVudCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4ueyBcImNpdHlcIjogdmFsdWUgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkpfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGFsZj17dHJ1ZX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5jaXR5LnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMucmVnaW9uLmVuYWJsZWQgJiYgPElucHV0RHJvcGRvd25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlYWRlcj17cHJvcHMucmVnaW9uLmxhYmVsfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e29yZGVyRm9ybS5yZWdpb259XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWxwVGV4dD17cHJvcHMucmVnaW9uLmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cInJlZ2lvblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvcHRpb25zPXtwcm9wcy5yZWdpb24udmFsdWVzfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWx1ZSkgPT4gc2V0T3JkZXJGb3JtKGNvbnRlbnQgPT4gKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4uY29udGVudCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4ueyBcInJlZ2lvblwiOiB2YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KSl9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXF1aXJlZD17cHJvcHMucmVnaW9uLnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMuY3VzdG9tQ2hlY2tib3guZW5hYmxlZCAmJiA8SW5wdXRDaGVja2JveFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyPXtwcm9wcy5jdXN0b21DaGVja2JveC5sYWJlbH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ9e29yZGVyRm9ybS5jdXN0b21DaGVja2JveH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5jdXN0b21DaGVja2JveC5oZWxwVGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU9XCJjdXN0b21DaGVja2JveFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KGNoZWNrZWQpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJjdXN0b21DaGVja2JveFwiOiBjaGVja2VkIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5jdXN0b21DaGVja2JveC5yZXF1aXJlZH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPn1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3Byb3BzLm1lc3NhZ2UuZW5hYmxlZCAmJiA8SW5wdXRUZXh0YXJlYVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVhZGVyPXtwcm9wcy5tZXNzYWdlLmxhYmVsfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e29yZGVyRm9ybS5tZXNzYWdlfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aGVscFRleHQ9e3Byb3BzLm1lc3NhZ2UuaGVscFRleHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lPVwibWVzc2FnZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17cHJvcHMubWVzc2FnZS5wbGFjZWhvbGRlcn1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsdWUpID0+IHNldE9yZGVyRm9ybShjb250ZW50ID0+ICh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLmNvbnRlbnQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLnsgXCJtZXNzYWdlXCI6IHZhbHVlIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5tZXNzYWdlLnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMuY29uc2VudC5lbmFibGVkICYmIDxJbnB1dENoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLmNvbnNlbnQubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkPXtvcmRlckZvcm0uY29uc2VudH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5jb25zZW50LmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cImNvbnNlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhjaGVja2VkKSA9PiBzZXRPcmRlckZvcm0oY29udGVudCA9PiAoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5jb250ZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi57IFwiY29uc2VudFwiOiBjaGVja2VkIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5jb25zZW50LnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7cHJvcHMubWFya2V0aW5nQ29uc2VudC5lbmFibGVkICYmIDxJbnB1dENoZWNrYm94XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRoZWFkZXI9e3Byb3BzLm1hcmtldGluZ0NvbnNlbnQubGFiZWx9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkPXtvcmRlckZvcm0ubWFya2V0aW5nQ29uc2VudH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGhlbHBUZXh0PXtwcm9wcy5tYXJrZXRpbmdDb25zZW50LmhlbHBUZXh0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cIm1hcmtldGluZ0NvbnNlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhjaGVja2VkKSA9PiBzZXRPcmRlckZvcm0oY29udGVudCA9PiAoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5jb250ZW50LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi57IFwibWFya2V0aW5nQ29uc2VudFwiOiBjaGVja2VkIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pKX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVkPXtwcm9wcy5tYXJrZXRpbmdDb25zZW50LnJlcXVpcmVkfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBvbkNsaWNrPXtzdWJtaXR9IGRpc2FibGVkPXtzdWJtaXNzaW9uSW5Qcm9ncmVzc30gY2xhc3NOYW1lPVwiYnV0dG9uIGJ1dHRvbi0tZGVmYXVsdC1ibHVlIG15LTE2XCI+e3Byb3BzLmNvbXBsZXRlT3JkZXJCdXR0b25UZXh0fTwvYnV0dG9uPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNvbnRlbnRcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHByb3BzLnByaXZhY3lTdGF0ZW1lbnQgfX0+PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9mb3JtPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibXQtMTIgdGV4dC1hbGVydFJlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2Pntmb3JtRXJyb3J9PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm10LTEyIHRleHQtYWxlcnRSZWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj57Zm9ybVN1Ym1pdEVycm9yfTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDpcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJtYi02NVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGgxIGNsYXNzTmFtZT1cImgyIGZsZXgtMSBtYi0xMiBtZDptYi0zNVwiPntwcm9wcy50aGFua1lvdVZpZXcuaGVhZGluZ308L2gxPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNvbnRlbnRcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHByb3BzLnRoYW5rWW91Vmlldy5ib2R5IH19PjwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGEgY2xhc3NOYW1lPVwiYnV0dG9uIGJ1dHRvbi0tZGVmYXVsdC1ibHVlXCIgaHJlZj17cHJvcHMuZW1wdHlCYXNrZXRWaWV3LmN0YUxpbmsudXJsfT57cHJvcHMudGhhbmtZb3VWaWV3LmN0YUxpbmsudGV4dH08L2E+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L1JlYWN0LkZyYWdtZW50PlxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR7KGNhcnQuaXRlbXM/Lmxlbmd0aCA9PSAwICYmICFzdWJtaXR0ZWQpICYmXHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbGc6bWF4LXctc2NyZWVuLWxnIHB0LTYwXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YG1iLTY1ICR7bG9hZGVkID8gXCJibG9ja1wiIDogXCJoaWRkZW5cIn0gYH0+XHJcblx0XHRcdFx0XHRcdDxoMSBjbGFzc05hbWU9XCJoMiBmbGV4LTEgbWItMTIgbWQ6bWItMzVcIj57cHJvcHMuZW1wdHlCYXNrZXRWaWV3LmhlYWRpbmd9PC9oMT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNvbnRlbnRcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHByb3BzLmVtcHR5QmFza2V0Vmlldy5ib2R5IH19PjwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8YSBjbGFzc05hbWU9XCJidXR0b24gYnV0dG9uLS1kZWZhdWx0LWJsdWVcIiBocmVmPXtwcm9wcy5lbXB0eUJhc2tldFZpZXcuY3RhTGluay51cmx9Pntwcm9wcy5lbXB0eUJhc2tldFZpZXcuY3RhTGluay50ZXh0fTwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR7c3VibWl0dGVkICYmXHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgbGc6bWF4LXctc2NyZWVuLWxnIHB0LTYwXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm1iLTY1XCI+XHJcblx0XHRcdFx0XHRcdDxoMSBjbGFzc05hbWU9XCJoMiBmbGV4LTEgbWItMTIgbWQ6bWItMzVcIj57cHJvcHMudGhhbmtZb3VWaWV3LmhlYWRpbmd9PC9oMT5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNvbnRlbnRcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IHByb3BzLnRoYW5rWW91Vmlldy5ib2R5IH19PjwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8YSBjbGFzc05hbWU9XCJidXR0b24gYnV0dG9uLS1kZWZhdWx0LWJsdWVcIiBocmVmPXtwcm9wcy5lbXB0eUJhc2tldFZpZXcuY3RhTGluay51cmx9Pntwcm9wcy50aGFua1lvdVZpZXcuY3RhTGluay50ZXh0fTwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHR9XHJcblxyXG5cdFx0PC9kaXY+XHJcblx0KVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgT3JkZXJNYXRlcmlhbHMiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgeyBjcmVhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XHJcblxyXG5pbXBvcnQgdmlkZW9CbG9jayBmcm9tIFwiLi9jb21wb25lbnRzL1ZpZGVvQmxvY2tcIjtcclxuaW1wb3J0IHNwbGl0VmlkZW9CbG9jayBmcm9tIFwiLi9jb21wb25lbnRzL1NwbGl0VmlkZW9CbG9ja1wiO1xyXG5pbXBvcnQgbmV3c3Jvb20gZnJvbSBcIi4vY29tcG9uZW50cy9OZXdzcm9vbVwiO1xyXG5pbXBvcnQgc2VhcmNoIGZyb20gXCIuL2NvbXBvbmVudHMvU2VhcmNoXCI7XHJcbmltcG9ydCB0YWJzIGZyb20gXCIuL2NvbXBvbmVudHMvVGFic0Jsb2NrXCI7XHJcbmltcG9ydCBtYXRlcmlhbHMgZnJvbSBcIi4vY29tcG9uZW50cy9NYXRlcmlhbHNcIjtcclxuaW1wb3J0IG9yZGVyTWF0ZXJpYWxzIGZyb20gXCIuL2NvbXBvbmVudHMvT3JkZXJNYXRlcmlhbHNcIjtcclxuaW1wb3J0IGNhcnRCYW5uZXIgZnJvbSBcIi4vY29tcG9uZW50cy9DYXJ0QmFubmVyXCI7XHJcbmltcG9ydCBtYXRlcmlhbEFkZFRvQ2FydCBmcm9tIFwiLi9jb21wb25lbnRzL01hdGVyaWFsQWRkVG9DYXJ0XCI7XHJcblxyXG5jb25zdCBDb21wb25lbnRUeXBlcyA9IHtcclxuICAgIFwic3BsaXRWaWRlb0Jsb2NrXCI6IHNwbGl0VmlkZW9CbG9jayxcclxuICAgIFwidmlkZW9CbG9ja1wiOiB2aWRlb0Jsb2NrLFxyXG4gICAgXCJuZXdzcm9vbVwiOiBuZXdzcm9vbSxcclxuICAgIFwic2VhcmNoXCI6IHNlYXJjaCxcclxuICAgIFwidGFic0Jsb2NrXCI6IHRhYnMsXHJcbiAgICBcIm1hdGVyaWFsc1wiOiBtYXRlcmlhbHMsXHJcbiAgICBcIm9yZGVyTWF0ZXJpYWxzXCI6IG9yZGVyTWF0ZXJpYWxzLFxyXG4gICAgXCJjYXJ0QmFubmVyXCI6IGNhcnRCYW5uZXIsXHJcbiAgICBcIm1hdGVyaWFsQWRkVG9DYXJ0XCI6IG1hdGVyaWFsQWRkVG9DYXJ0XHJcbn07XHJcblxyXG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgZnVuY3Rpb24gaW5pdGlhbGl6ZShjb21wb25lbnRDb250YWluZXIpIHtcclxuICAgICAgICBsZXQgcHJvcHMgPSBKU09OLnBhcnNlKGNvbXBvbmVudENvbnRhaW5lci5kYXRhc2V0LnByb3BzIHx8ICd7fScpO1xyXG4gICAgICAgIHByb3BzLnByb3BlcnR5TmFtZSA9IGNvbXBvbmVudENvbnRhaW5lci5kYXRhc2V0LmVwaVByb3BlcnR5TmFtZTtcclxuICAgICAgICBjcmVhdGVSb290KGNvbXBvbmVudENvbnRhaW5lcikucmVuZGVyKFxyXG4gICAgICAgICAgICBSZWFjdC5jcmVhdGVFbGVtZW50KFxyXG4gICAgICAgICAgICAgICAgQ29tcG9uZW50VHlwZXNbY29tcG9uZW50Q29udGFpbmVyLmRhdGFzZXQucmVhY3RDb21wb25lbnRdLCBwcm9wc1xyXG4gICAgICAgICAgICApKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29tcG9uZW50cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcmVhY3QtY29tcG9uZW50XScpKTtcclxuICAgIGNvbXBvbmVudHMuZm9yRWFjaChpbml0aWFsaXplKTtcclxufSk7IiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IFJlYWN0UGxheWVyIGZyb20gJ3JlYWN0LXBsYXllcidcclxuaW1wb3J0IHsgV2F5cG9pbnQgfSBmcm9tICdyZWFjdC13YXlwb2ludCc7XHJcblxyXG5jb25zdCBzcGxpdFZpZGVvQmxvY2sgPSAoaXRlbSkgPT4ge1xyXG5cdGNvbnN0IFt3aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUod2luZG93LmlubmVyV2lkdGgpO1xyXG5cdGNvbnN0IFtwbGF5LCBzZXRQbGF5XSA9IHVzZVN0YXRlKGZhbHNlKVxyXG5cdGNvbnN0IHZpZGVvID0gdXNlUmVmKClcclxuXHJcblx0ZnVuY3Rpb24gaGFuZGxlV2luZG93U2l6ZUNoYW5nZSgpIHtcclxuXHRcdHNldFdpZHRoKHdpbmRvdy5pbm5lcldpZHRoKTtcclxuXHR9XHJcblx0dXNlRWZmZWN0KCgpID0+IHtcclxuXHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVXaW5kb3dTaXplQ2hhbmdlKTtcclxuXHRcdHJldHVybiAoKSA9PiB7XHJcblx0XHRcdHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVXaW5kb3dTaXplQ2hhbmdlKTtcclxuXHRcdH1cclxuXHR9LCBbXSk7XHJcblxyXG5cdGNvbnN0IGlzTW9iaWxlID0gd2lkdGggPD0gNzY4O1xyXG5cclxuXHRsZXQgaGFuZGxlRW50ZXJWaWV3cG9ydCA9IGZ1bmN0aW9uICgpIHtcclxuXHRcdGlmIChpc01vYmlsZSkge1xyXG5cdFx0XHRzZXRQbGF5KHRydWUpO1xyXG5cdFx0XHR2aWRlby5jdXJyZW50Py5wbGF5KClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGxldCBoYW5kbGVFeGl0Vmlld3BvcnQgPSBmdW5jdGlvbiAoKSB7XHJcblx0XHRpZiAoaXNNb2JpbGUpIHtcclxuXHRcdFx0c2V0UGxheShmYWxzZSk7XHJcblx0XHRcdHZpZGVvLmN1cnJlbnQ/LnBhdXNlKClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNvbnN0IGhhbmRsZU1vdXNlRW50ZXIgPSAoKSA9PiB7XHJcblx0XHRpZiAoIWlzTW9iaWxlKSB7XHJcblx0XHRcdHNldFBsYXkodHJ1ZSk7XHJcblx0XHRcdHZpZGVvLmN1cnJlbnQ/LnBsYXkoKVxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSAoKSA9PiB7XHJcblx0XHRpZiAoIWlzTW9iaWxlKSB7XHJcblx0XHRcdHNldFBsYXkoZmFsc2UpO1xyXG5cdFx0XHR2aWRlby5jdXJyZW50Py5wYXVzZSgpXHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0cmV0dXJuIChcclxuXHRcdDxkaXYgY2xhc3NOYW1lPVwic3BsaXQtdmlkZW8gY29tcG9uZW50IG15LTUwIG1kOm15LTkwXCI+XHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyIHhsOm1heC13LXNjcmVlbi14bFwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgc3BsaXQtaGlnaGxpZ2h0IG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLWxnIHNoYWRvdy1sZyBibG9jayBtZDppdGVtcy1jZW50ZXIgZHVyYXRpb24tMzAwIHRyYW5zaXRpb24tYWxsIHdpbGwtY2hhbmdlLXRyYW5zZm9ybSBsZzpmbGV4IGxnOmhvdmVyOi10cmFuc2xhdGUteS0xMCAke2l0ZW0uc2hvd0ltYWdlT25UaGVSaWdodCA/ICdsZzpmbGV4LXJvdy1yZXZlcnNlJyA6ICcnfWB9IG9uTW91c2VFbnRlcj17aGFuZGxlTW91c2VFbnRlcn0gb25Nb3VzZUxlYXZlPXtoYW5kbGVNb3VzZUxlYXZlfT5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwic3BsaXQtdmlkZW9fX3ZpZGVvIGZsZXgtc2hyaW5rLTAgbWItMjUgbGc6aC1mdWxsIGxnOm1iLTAgcmVsYXRpdmUgbGc6dy0xLzJcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJwYi1bNTYuMjUlXVwiPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgb2JqZWN0LWNvdmVyIHctZnVsbCBsZzpoLWZ1bGxcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxXYXlwb2ludFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkVudGVyPXtoYW5kbGVFbnRlclZpZXdwb3J0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRvbkxlYXZlPXtoYW5kbGVFeGl0Vmlld3BvcnR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRvcE9mZnNldD1cIjQwJVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGJvdHRvbU9mZnNldD1cIjQwJVwiXHJcblx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC1mdWxsIGFzcGVjdC12aWRlbyBjb250YWluZXIgcC0wXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFJlYWN0UGxheWVyIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wXCIgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgdXJsPXtpdGVtLnZpZGVvVXJsfSBtdXRlZCBjb250cm9scz17dHJ1ZX0gcGxheXNpbmxpbmU9e3RydWV9IHBsYXlpbmc9e3BsYXl9IC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9XYXlwb2ludD5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwic3BsaXQtdmlkZW9fX2NvbnRlbnQgZmxleC1ncm93IHBiLTMwIHB4LTIwIGxnOnAtNjBcIj5cclxuXHRcdFx0XHRcdFx0e2l0ZW0uaGVhZGluZyAhPSBudWxsICYmXHJcblx0XHRcdFx0XHRcdFx0PGgyIGNsYXNzTmFtZT1cImgzIG10LTBcIj57aXRlbS5oZWFkaW5nfTwvaDI+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0e2l0ZW0uaW50cm8gIT0gbnVsbCAmJlxyXG5cdFx0XHRcdFx0XHRcdDxwIGNsYXNzTmFtZT1cIm1iLTI1XCI+e2l0ZW0uaW50cm99PC9wPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdHtpdGVtLmxpbmsgIT0gbnVsbCAmJlxyXG5cdFx0XHRcdFx0XHRcdDxhIGhyZWY9e2l0ZW0ubGluay51cmx9IGNsYXNzTmFtZT1cImFycm93LWxpbmsgZ3JvdXAgaG92ZXI6dGV4dC1vcmlvbk1pZGRsZUJsdWVcIj5cclxuXHRcdFx0XHRcdFx0XHRcdHtpdGVtLmxpbmsudGV4dH1cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cIm1hdGVyaWFsLWljb25zIHRyYW5zaXRpb24tdHJhbnNmb3JtIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTVcIj4mI3hFOEU0Ozwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHQ8L2E+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0KVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgc3BsaXRWaWRlb0Jsb2NrIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcclxuLy9pbXBvcnQgWW91VHViZSBmcm9tICdyZWFjdC15b3V0dWJlJztcclxuaW1wb3J0IFJlYWN0UGxheWVyIGZyb20gJ3JlYWN0LXBsYXllcidcclxuaW1wb3J0IEltYWdlIGZyb20gJy4uL0ltYWdlJztcclxuXHJcbmNvbnN0IHZpZGVvQmxvY2sgPSAoaXRlbSkgPT4ge1xyXG5cdGNvbnN0IFtwbGF5LCBzZXRQbGF5XSA9IHVzZVN0YXRlKGZhbHNlKVxyXG5cdGNvbnN0IFtwbGF5ZWRPbmNlLCBzZXRQbGF5ZWRPbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxyXG5cdGNvbnN0IHZpZGVvID0gdXNlUmVmKClcclxuXHJcblx0dXNlRWZmZWN0KCgpID0+IHtcclxuXHRcdGlmICh2aWRlbykge1xyXG5cdFx0XHRpZiAocGxheSkge1xyXG5cdFx0XHRcdHZpZGVvLmN1cnJlbnQ/LnBsYXkoKVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHZpZGVvLmN1cnJlbnQ/LnBhdXNlKClcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0pXHJcblxyXG5cdHVzZUVmZmVjdCgoKSA9PiB7XHJcblx0XHRpZiAocGxheSkge1xyXG5cdFx0XHRzZXRQbGF5ZWRPbmNlKHRydWUpXHJcblx0XHR9XHJcblx0fSwgW3BsYXldKVxyXG5cclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdj5cclxuXHRcdFx0PGRpdiBjbGFzc05hbWU9J3ctZnVsbCByZWxhdGl2ZSBvdmVyZmxvdy1oaWRkZW4nPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYXNwZWN0LXZpZGVvIHRvcC0xLzIgaC1mdWxsIHctZnVsbCBiZy1vcmlvbkJsdWVcIj48L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lciB4bDptYXgtdy1zY3JlZW4teGxcIj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgaC1mdWxsIGFzcGVjdC12aWRlbyBjb250YWluZXIgcC0wXCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgYWJzb2x1dGUgdG9wLTAgei01MCB0cmFuc2l0aW9uIGR1cmF0aW9uLTUwMCBlYXNlLWluLW91dCB3LWZ1bGwgJHtwbGF5ID8gXCJvcGFjaXR5LTAgaW52aXNpYmxlXCIgOiBcIm9wYWNpdHktMTAwIHZpc2libGVcIn1gfT5cclxuXHRcdFx0XHRcdFx0XHQ8SW1hZ2UgY2xhc3NOYW1lPVwiYXNwZWN0LXZpZGVvIG9iamVjdC1jb3ZlciBoaWRkZW4gc206YmxvY2sgdy1mdWxsXCIgey4uLml0ZW0uc3RpbGxJbWFnZX0gLz5cclxuXHRcdFx0XHRcdFx0XHQ8SW1hZ2UgY2xhc3NOYW1lPVwiYXNwZWN0LXZpZGVvIG9iamVjdC1jb3ZlciBzbTpoaWRkZW4gdy1mdWxsXCIgey4uLml0ZW0ubW9iaWxlU3RpbGxJbWFnZX0gLz5cclxuXHRcdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzTmFtZT1cInBsYXkgYWJzb2x1dGUgLW10LTM1IHRvcC0xLzIgcmlnaHQtMS8yIHRyYW5zbGF0ZS14LTEvMlwiIG9uQ2xpY2s9eygpID0+IHNldFBsYXkodHJ1ZSl9IGFyaWEtbGFiZWw9XCJwbGF5XCI+PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHRcdFx0PFJlYWN0UGxheWVyIGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0wXCIgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgdXJsPXtpdGVtLnZpZGVvVXJsfSBjb250cm9scz17dHJ1ZX0gcGxheWluZz17cGxheX0gLz5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYmctb3Jpb25CbHVlXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJjb250YWluZXIgeGw6bWF4LXctc2NyZWVuLXhsIGZsZXggZmxleC1jb2wgbGc6ZmxleC1yb3cgbGc6Z2FwLTgwXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImdyb3cgbXQtMzAgbGc6bWItMTAwIGxnOm10LTUwIHRleHQtd2hpdGUgbGc6dy03LzEyXCI+PGgzIGNsYXNzTmFtZT1cImgzIG10LTBcIj57aXRlbS5oZWFkaW5nfTwvaDM+PC9kaXY+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImdyb3cgbWItNjAgbGc6bWItMTAwIGxnOm10LTUwIHRleHQtd2hpdGUgbGc6dy01LzEyXCI+e2l0ZW0uaW50cm99PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdDwvZGl2PlxyXG5cdClcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHZpZGVvQmxvY2siLCJpbXBvcnQgUmVhY3QsIHt1c2VTdGF0ZX0gZnJvbSAncmVhY3QnXHJcblxyXG5pbXBvcnQgeyBUYWJzLCBUYWIsIEJveCB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xyXG5pbXBvcnQgSW1hZ2UgZnJvbSAnLi4vSW1hZ2UnO1xyXG5cclxuY29uc3QgdGFicyA9IChwcm9wcykgPT4ge1xyXG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XHJcbiAgICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0YWJJdGVtID0gKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBoZWFkaW5nIH0gPSBpdGVtO1xyXG4gICAgICAgIHJldHVybiA8VGFiIGNsYXNzTmFtZT1cIiFtYXgtdy1ub25lICFtaW4tdy0wICFub3JtYWwtY2FzZSAgIXB4LTE1ICFweS0xNSAhdy1hdXRvICF3aGl0ZXNwYWNlLW5vd3JhcCAhdGV4dC1ibGFjayAhdGV4dC1zbSBtZDohcHgtMzAgbWQ6IXB5LTMwIG1kOiF0ZXh0LWJhc2UgaG92ZXI6IXRleHQtb3Jpb25CbHVlXCIgbGFiZWw9e2hlYWRpbmd9IGtleT17aW5kZXh9IHZhbHVlPXtpbmRleH0+PC9UYWI+XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gQ3VzdG9tVGFiUGFuZWwocHJvcHMpIHtcclxuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXgsIC4uLm90aGVyIH0gPSBwcm9wcztcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgcm9sZT1cInRhYnBhbmVsXCJcclxuICAgICAgICAgICAgICAgIGhpZGRlbj17dmFsdWUgIT09IGluZGV4fVxyXG4gICAgICAgICAgICAgICAgaWQ9e2BzaW1wbGUtdGFicGFuZWwtJHtpbmRleH1gfVxyXG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgc2ltcGxlLXRhYi0ke2luZGV4fWB9XHJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt2YWx1ZSA9PT0gaW5kZXggJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxCb3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgICAgICA8L0JveD5cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdGFiUGFuZWwgPSAoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gPEN1c3RvbVRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9e2luZGV4fSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItdCBib3JkZXItZ3JheS0zMDAgbWQ6ZmxleCBtZDpmbGV4LXJvdy1yZXZlcnNlIG1kOmdhcC04MCBtZDppdGVtcy1jZW50ZXIgbWQ6cHQtNjBcIj5cclxuICAgICAgICAgICAgICAgIHtpdGVtLmltYWdlICE9IG51bGwgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi00MCBtZDptYi0wIG10LTQwIG1kOm10LTAgbWQ6dy0xLzJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEltYWdlIGNsYXNzTmFtZT1cImFzcGVjdC12aWRlbyBvYmplY3QtY292ZXIgdy1mdWxsXCIgey4uLml0ZW0uaW1hZ2V9IC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWItNDAgbWQ6bWItMCBtdC00MCBtZDptdC0wIG1kOnctNC8xMlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtpdGVtLmltYWdlICE9IG51bGwgPyAnbWQ6dy02LzEyJyA6ICdtZDp3LTgvMTInfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaXRlbS5pbnRyb0h0bWwgfX0gY2xhc3NOYW1lPVwidGV4dC1jb250ZW50IHRleHQtY29udGVudC0tY29tcG9uZW50XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ubGluayAhPSBudWxsICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9e2l0ZW0ubGluay51cmx9IHRhcmdldD17aXRlbS5saW5rLm9wZW5Jbk5ld1RhYiA/IFwiX2JsYW5rXCIgOiBcIlwifSBjbGFzc05hbWU9XCJidXR0b24gYnV0dG9uLS1vdXRsaW5lLWJsdWUgbXQtMzBcIj57aXRlbS5saW5rLnRleHR9PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2ID5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9DdXN0b21UYWJQYW5lbD5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCb3g+XHJcbiAgICAgICAgICAgIDxUYWJzXHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJcIlxyXG4gICAgICAgICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3sgc3R5bGU6IHsgYmFja2dyb3VuZENvbG9yOiBcIiMwMDZjYjZcIiwgaGVpZ2h0OiAzIH0gfX1cclxuICAgICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cclxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XHJcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Nyb2xsYWJsZVwiXHJcbiAgICAgICAgICAgICAgICBzY3JvbGxCdXR0b25zXHJcbiAgICAgICAgICAgICAgICBhbGxvd1Njcm9sbEJ1dHRvbnNNb2JpbGVcclxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzY3JvbGxhYmxlIGZvcmNlIHRhYnMgZXhhbXBsZVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtwcm9wcy5pdGVtcy5tYXAoKHByb3BlcnR5LCBpKSA9PiB0YWJJdGVtKHByb3BlcnR5LCBpKSl9XHJcbiAgICAgICAgICAgIDwvVGFicz5cclxuICAgICAgICAgICAge3Byb3BzLml0ZW1zLm1hcCgocHJvcGVydHksIGkpID0+IHRhYlBhbmVsKHByb3BlcnR5LCBpKSl9XHJcbiAgICAgICAgPC9Cb3g+XHJcbiAgICApO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB0YWJzIiwiY29uc3QgY3VzdG9tRmlsZUlucHV0cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1jdXN0b20tZmlsZS1pbnB1dCcpO1xyXG5cclxuY3VzdG9tRmlsZUlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50LCBpbmRleCkge1xyXG4gICAgY29uc3QgZmlsZUlucHV0ID0gZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKVswXTtcclxuICAgIGNvbnN0IGN1c3RvbUxhYmVsID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1jdXN0b20tdGV4dF0nKTtcclxuXHJcbiAgICBpZiAoIWN1c3RvbUxhYmVsKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTm8gY3VzdG9tIGxhYmVsIGZvdW5kIGluIGN1c3RvbSBmaWxlIGlucHV0IGVsZW1lbnQnKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWZpbGVJbnB1dCkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIGZpbGUgaW5wdXQgZm91bmQgaW4gY3VzdG9tIGZpbGUgaW5wdXQgZWxlbWVudCcpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gWy4uLmZpbGVJbnB1dC5maWxlc10ubWFwKGZpbGUgPT4gZmlsZS5uYW1lKS5qb2luKCcsICcpO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKGN1c3RvbUxhYmVsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGN1c3RvbUxhYmVsLmdldEF0dHJpYnV0ZSgnZGF0YS1jdXN0b20tdGV4dCcpO1xyXG4gICAgICAgICAgICBjdXN0b21MYWJlbC5pbm5lckhUTUwgPSBmaWxlTmFtZSB8fCBvcmlnaW5hbFRleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgfSlcclxufSk7XHJcbiIsImNvbnN0IGluVmlld3BvcnQgPSAoZWxlbSkgPT4ge1xyXG4gICAgbGV0IGFsbEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlbGVtKTtcclxuICAgIGxldCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLyAyO1xyXG4gICAgY29uc3QgZWxlbXMgPSAoKSA9PiB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGxFbGVtZW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdmlld3BvcnRPZmZzZXQgPSBhbGxFbGVtZW50c1tpXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgbGV0IHRvcCA9IHZpZXdwb3J0T2Zmc2V0LnRvcDtcclxuICAgICAgICAgICAgaWYgKHRvcCA8IHdpbmRvd0hlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgYWxsRWxlbWVudHNbaV0uY2xhc3NMaXN0LmFkZCgnaW4tdmlld3BvcnQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsZW1zKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZWxlbXMpO1xyXG59XHJcblxyXG5pblZpZXdwb3J0KCcuY2hlY2staW4tdmlld3BvcnQnKTsiLCIvKiBVbml2ZXJzYWwgdG9nZ2xlIGZ1bmN0aW9uICovXHJcblxyXG5sZXQgdG9nZ2xlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXRvZ2dsZS10cmlnZ2VyXScpO1xyXG5cclxudG9nZ2xlci5mb3JFYWNoKGZ1bmN0aW9uICh0cmlnZ2VyLCBpbmRleCkge1xyXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgLy8gdG9nZ2xlIGlzLWFjdGl2ZSBjbGFzcyBvbiB0cmlnZ2VyIGVsZW1lbnRcclxuICAgICAgICB0cmlnZ2VyLmNsYXNzTGlzdC50b2dnbGUoJ2lzLWFjdGl2ZScpXHJcblxyXG4gICAgICAgIC8vIGlmIHRyaWdnZXIgZWxlbWVudCBoYXMgYXJpYS1leHBhbmRlZCB0aGVuIHRvZ2dsZSB0cnVlIG9yIGZhbHNlXHJcbiAgICAgICAgaWYgKHRyaWdnZXIuaGFzQXR0cmlidXRlKCdhcmlhLWV4cGFuZGVkJykpIHtcclxuICAgICAgICAgICAgbGV0IHRhcmdldEFyaWFFeHBhbmRlZFN0YXRlID0gdHJpZ2dlci5nZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ2ZhbHNlJyA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICAgICAgdHJpZ2dlci5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCB0YXJnZXRBcmlhRXhwYW5kZWRTdGF0ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBmaW5kIHRhcmdldCBiYXNlZCBvbiBkYXRhIHZhbHVlXHJcbiAgICAgICAgbGV0IHRyaWdnZXJWYWx1ZSA9IHRyaWdnZXIuZ2V0QXR0cmlidXRlKCdkYXRhLXRvZ2dsZS10cmlnZ2VyJyk7XHJcbiAgICAgICAgbGV0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtkYXRhLXRvZ2dsZS10YXJnZXQ9XCIke3RyaWdnZXJWYWx1ZX1cIl1gKVxyXG5cclxuICAgICAgICBpZiAodGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIC8vIHRvZ2dsZSBpcy1hY3RpdmUgY2xhc3Mgb24gdGFyZ2V0IGVsZW1lbnRcclxuICAgICAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC50b2dnbGUoJ2lzLWFjdGl2ZScpXHJcbiAgICAgICAgICAgICAvLyBpZiB0YXJnZXQgZWxlbWVudCBoYXMgYXJpYS1oaWRkZW4gdGhlbiB0b2dnbGUgdHJ1ZSBvciBmYWxzZVxyXG4gICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc0F0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldEFyaWFIaWRkZW5TdGF0ZSA9IHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgPT09ICd0cnVlJyA/IGZhbHNlIDogdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJywgdGFyZ2V0QXJpYUhpZGRlblN0YXRlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9KTtcclxufSk7IiwiY29uc3QgdmlkZW9UcmlnZ2VyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5wbGF5LXZpZGVvLXRyaWdnZXJcIik7XHJcblxyXG52aWRlb1RyaWdnZXIuZm9yRWFjaChmdW5jdGlvbiAodHJpZ2dlciwgaW5kZXgpIHtcclxuICAgIGxldCB2aWRlbyA9IHRyaWdnZXIucXVlcnlTZWxlY3RvcihcIi5wbGF5LXZpZGVvLXRhcmdldFwiKTtcclxuICAgIHRyaWdnZXIuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZpZGVvLnBsYXkoKTtcclxuICAgIH0pO1xyXG4gICAgdHJpZ2dlci5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2aWRlby5wYXVzZSgpO1xyXG4gICAgfSk7XHJcbn0pOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIGlzTWVyZ2VhYmxlT2JqZWN0ID0gZnVuY3Rpb24gaXNNZXJnZWFibGVPYmplY3QodmFsdWUpIHtcblx0cmV0dXJuIGlzTm9uTnVsbE9iamVjdCh2YWx1ZSlcblx0XHQmJiAhaXNTcGVjaWFsKHZhbHVlKVxufTtcblxuZnVuY3Rpb24gaXNOb25OdWxsT2JqZWN0KHZhbHVlKSB7XG5cdHJldHVybiAhIXZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbn1cblxuZnVuY3Rpb24gaXNTcGVjaWFsKHZhbHVlKSB7XG5cdHZhciBzdHJpbmdWYWx1ZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5cblx0cmV0dXJuIHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBSZWdFeHBdJ1xuXHRcdHx8IHN0cmluZ1ZhbHVlID09PSAnW29iamVjdCBEYXRlXSdcblx0XHR8fCBpc1JlYWN0RWxlbWVudCh2YWx1ZSlcbn1cblxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iL2I1YWM5NjNmYjc5MWQxMjk4ZTdmMzk2MjM2MzgzYmM5NTVmOTE2YzEvc3JjL2lzb21vcnBoaWMvY2xhc3NpYy9lbGVtZW50L1JlYWN0RWxlbWVudC5qcyNMMjEtTDI1XG52YXIgY2FuVXNlU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuZm9yO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IGNhblVzZVN5bWJvbCA/IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSA6IDB4ZWFjNztcblxuZnVuY3Rpb24gaXNSZWFjdEVsZW1lbnQodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEVcbn1cblxuZnVuY3Rpb24gZW1wdHlUYXJnZXQodmFsKSB7XG5cdHJldHVybiBBcnJheS5pc0FycmF5KHZhbCkgPyBbXSA6IHt9XG59XG5cbmZ1bmN0aW9uIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHZhbHVlLCBvcHRpb25zKSB7XG5cdHJldHVybiAob3B0aW9ucy5jbG9uZSAhPT0gZmFsc2UgJiYgb3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCh2YWx1ZSkpXG5cdFx0PyBkZWVwbWVyZ2UoZW1wdHlUYXJnZXQodmFsdWUpLCB2YWx1ZSwgb3B0aW9ucylcblx0XHQ6IHZhbHVlXG59XG5cbmZ1bmN0aW9uIGRlZmF1bHRBcnJheU1lcmdlKHRhcmdldCwgc291cmNlLCBvcHRpb25zKSB7XG5cdHJldHVybiB0YXJnZXQuY29uY2F0KHNvdXJjZSkubWFwKGZ1bmN0aW9uKGVsZW1lbnQpIHtcblx0XHRyZXR1cm4gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoZWxlbWVudCwgb3B0aW9ucylcblx0fSlcbn1cblxuZnVuY3Rpb24gZ2V0TWVyZ2VGdW5jdGlvbihrZXksIG9wdGlvbnMpIHtcblx0aWYgKCFvcHRpb25zLmN1c3RvbU1lcmdlKSB7XG5cdFx0cmV0dXJuIGRlZXBtZXJnZVxuXHR9XG5cdHZhciBjdXN0b21NZXJnZSA9IG9wdGlvbnMuY3VzdG9tTWVyZ2Uoa2V5KTtcblx0cmV0dXJuIHR5cGVvZiBjdXN0b21NZXJnZSA9PT0gJ2Z1bmN0aW9uJyA/IGN1c3RvbU1lcmdlIDogZGVlcG1lcmdlXG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHModGFyZ2V0KSB7XG5cdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzXG5cdFx0PyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkuZmlsdGVyKGZ1bmN0aW9uKHN5bWJvbCkge1xuXHRcdFx0cmV0dXJuIHRhcmdldC5wcm9wZXJ0eUlzRW51bWVyYWJsZShzeW1ib2wpXG5cdFx0fSlcblx0XHQ6IFtdXG59XG5cbmZ1bmN0aW9uIGdldEtleXModGFyZ2V0KSB7XG5cdHJldHVybiBPYmplY3Qua2V5cyh0YXJnZXQpLmNvbmNhdChnZXRFbnVtZXJhYmxlT3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkpXG59XG5cbmZ1bmN0aW9uIHByb3BlcnR5SXNPbk9iamVjdChvYmplY3QsIHByb3BlcnR5KSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHByb3BlcnR5IGluIG9iamVjdFxuXHR9IGNhdGNoKF8pIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxufVxuXG4vLyBQcm90ZWN0cyBmcm9tIHByb3RvdHlwZSBwb2lzb25pbmcgYW5kIHVuZXhwZWN0ZWQgbWVyZ2luZyB1cCB0aGUgcHJvdG90eXBlIGNoYWluLlxuZnVuY3Rpb24gcHJvcGVydHlJc1Vuc2FmZSh0YXJnZXQsIGtleSkge1xuXHRyZXR1cm4gcHJvcGVydHlJc09uT2JqZWN0KHRhcmdldCwga2V5KSAvLyBQcm9wZXJ0aWVzIGFyZSBzYWZlIHRvIG1lcmdlIGlmIHRoZXkgZG9uJ3QgZXhpc3QgaW4gdGhlIHRhcmdldCB5ZXQsXG5cdFx0JiYgIShPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0YXJnZXQsIGtleSkgLy8gdW5zYWZlIGlmIHRoZXkgZXhpc3QgdXAgdGhlIHByb3RvdHlwZSBjaGFpbixcblx0XHRcdCYmIE9iamVjdC5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHRhcmdldCwga2V5KSkgLy8gYW5kIGFsc28gdW5zYWZlIGlmIHRoZXkncmUgbm9uZW51bWVyYWJsZS5cbn1cblxuZnVuY3Rpb24gbWVyZ2VPYmplY3QodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpIHtcblx0dmFyIGRlc3RpbmF0aW9uID0ge307XG5cdGlmIChvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0KHRhcmdldCkpIHtcblx0XHRnZXRLZXlzKHRhcmdldCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcblx0XHRcdGRlc3RpbmF0aW9uW2tleV0gPSBjbG9uZVVubGVzc090aGVyd2lzZVNwZWNpZmllZCh0YXJnZXRba2V5XSwgb3B0aW9ucyk7XG5cdFx0fSk7XG5cdH1cblx0Z2V0S2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG5cdFx0aWYgKHByb3BlcnR5SXNVbnNhZmUodGFyZ2V0LCBrZXkpKSB7XG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHRpZiAocHJvcGVydHlJc09uT2JqZWN0KHRhcmdldCwga2V5KSAmJiBvcHRpb25zLmlzTWVyZ2VhYmxlT2JqZWN0KHNvdXJjZVtrZXldKSkge1xuXHRcdFx0ZGVzdGluYXRpb25ba2V5XSA9IGdldE1lcmdlRnVuY3Rpb24oa2V5LCBvcHRpb25zKSh0YXJnZXRba2V5XSwgc291cmNlW2tleV0sIG9wdGlvbnMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkZXN0aW5hdGlvbltrZXldID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQoc291cmNlW2tleV0sIG9wdGlvbnMpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBkZXN0aW5hdGlvblxufVxuXG5mdW5jdGlvbiBkZWVwbWVyZ2UodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cdG9wdGlvbnMuYXJyYXlNZXJnZSA9IG9wdGlvbnMuYXJyYXlNZXJnZSB8fCBkZWZhdWx0QXJyYXlNZXJnZTtcblx0b3B0aW9ucy5pc01lcmdlYWJsZU9iamVjdCA9IG9wdGlvbnMuaXNNZXJnZWFibGVPYmplY3QgfHwgaXNNZXJnZWFibGVPYmplY3Q7XG5cdC8vIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkIGlzIGFkZGVkIHRvIGBvcHRpb25zYCBzbyB0aGF0IGN1c3RvbSBhcnJheU1lcmdlKClcblx0Ly8gaW1wbGVtZW50YXRpb25zIGNhbiB1c2UgaXQuIFRoZSBjYWxsZXIgbWF5IG5vdCByZXBsYWNlIGl0LlxuXHRvcHRpb25zLmNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkID0gY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQ7XG5cblx0dmFyIHNvdXJjZUlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHNvdXJjZSk7XG5cdHZhciB0YXJnZXRJc0FycmF5ID0gQXJyYXkuaXNBcnJheSh0YXJnZXQpO1xuXHR2YXIgc291cmNlQW5kVGFyZ2V0VHlwZXNNYXRjaCA9IHNvdXJjZUlzQXJyYXkgPT09IHRhcmdldElzQXJyYXk7XG5cblx0aWYgKCFzb3VyY2VBbmRUYXJnZXRUeXBlc01hdGNoKSB7XG5cdFx0cmV0dXJuIGNsb25lVW5sZXNzT3RoZXJ3aXNlU3BlY2lmaWVkKHNvdXJjZSwgb3B0aW9ucylcblx0fSBlbHNlIGlmIChzb3VyY2VJc0FycmF5KSB7XG5cdFx0cmV0dXJuIG9wdGlvbnMuYXJyYXlNZXJnZSh0YXJnZXQsIHNvdXJjZSwgb3B0aW9ucylcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gbWVyZ2VPYmplY3QodGFyZ2V0LCBzb3VyY2UsIG9wdGlvbnMpXG5cdH1cbn1cblxuZGVlcG1lcmdlLmFsbCA9IGZ1bmN0aW9uIGRlZXBtZXJnZUFsbChhcnJheSwgb3B0aW9ucykge1xuXHRpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXkpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gYXJyYXknKVxuXHR9XG5cblx0cmV0dXJuIGFycmF5LnJlZHVjZShmdW5jdGlvbihwcmV2LCBuZXh0KSB7XG5cdFx0cmV0dXJuIGRlZXBtZXJnZShwcmV2LCBuZXh0LCBvcHRpb25zKVxuXHR9LCB7fSlcbn07XG5cbnZhciBkZWVwbWVyZ2VfMSA9IGRlZXBtZXJnZTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWVwbWVyZ2VfMTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4vKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgY2hpbGRDb250ZXh0VHlwZXM6IHRydWUsXG4gIGNvbnRleHRUeXBlOiB0cnVlLFxuICBjb250ZXh0VHlwZXM6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yOiB0cnVlLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM6IHRydWUsXG4gIG1peGluczogdHJ1ZSxcbiAgcHJvcFR5cGVzOiB0cnVlLFxuICB0eXBlOiB0cnVlXG59O1xudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4gIG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxsZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTogdHJ1ZVxufTtcbnZhciBGT1JXQVJEX1JFRl9TVEFUSUNTID0ge1xuICAnJCR0eXBlb2YnOiB0cnVlLFxuICByZW5kZXI6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZVxufTtcbnZhciBNRU1PX1NUQVRJQ1MgPSB7XG4gICckJHR5cGVvZic6IHRydWUsXG4gIGNvbXBhcmU6IHRydWUsXG4gIGRlZmF1bHRQcm9wczogdHJ1ZSxcbiAgZGlzcGxheU5hbWU6IHRydWUsXG4gIHByb3BUeXBlczogdHJ1ZSxcbiAgdHlwZTogdHJ1ZVxufTtcbnZhciBUWVBFX1NUQVRJQ1MgPSB7fTtcblRZUEVfU1RBVElDU1tyZWFjdElzLkZvcndhcmRSZWZdID0gRk9SV0FSRF9SRUZfU1RBVElDUztcblRZUEVfU1RBVElDU1tyZWFjdElzLk1lbW9dID0gTUVNT19TVEFUSUNTO1xuXG5mdW5jdGlvbiBnZXRTdGF0aWNzKGNvbXBvbmVudCkge1xuICAvLyBSZWFjdCB2MTYuMTEgYW5kIGJlbG93XG4gIGlmIChyZWFjdElzLmlzTWVtbyhjb21wb25lbnQpKSB7XG4gICAgcmV0dXJuIE1FTU9fU1RBVElDUztcbiAgfSAvLyBSZWFjdCB2MTYuMTIgYW5kIGFib3ZlXG5cblxuICByZXR1cm4gVFlQRV9TVEFUSUNTW2NvbXBvbmVudFsnJCR0eXBlb2YnXV0gfHwgUkVBQ1RfU1RBVElDUztcbn1cblxudmFyIGRlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIGdldE93blByb3BlcnR5TmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgb2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcbmZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcbiAgICBpZiAob2JqZWN0UHJvdG90eXBlKSB7XG4gICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblxuICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQgIT09IG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNlQ29tcG9uZW50KTtcblxuICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgfVxuXG4gICAgdmFyIHRhcmdldFN0YXRpY3MgPSBnZXRTdGF0aWNzKHRhcmdldENvbXBvbmVudCk7XG4gICAgdmFyIHNvdXJjZVN0YXRpY3MgPSBnZXRTdGF0aWNzKHNvdXJjZUNvbXBvbmVudCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAhKGJsYWNrbGlzdCAmJiBibGFja2xpc3Rba2V5XSkgJiYgIShzb3VyY2VTdGF0aWNzICYmIHNvdXJjZVN0YXRpY3Nba2V5XSkgJiYgISh0YXJnZXRTdGF0aWNzICYmIHRhcmdldFN0YXRpY3Nba2V5XSkpIHtcbiAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlQ29tcG9uZW50LCBrZXkpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gQXZvaWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldENvbXBvbmVudCwga2V5LCBkZXNjcmlwdG9yKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhvaXN0Tm9uUmVhY3RTdGF0aWNzO1xuIiwiXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxvYWQgKHNyYywgb3B0cywgY2IpIHtcbiAgdmFyIGhlYWQgPSBkb2N1bWVudC5oZWFkIHx8IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF1cbiAgdmFyIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpXG5cbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvcHRzXG4gICAgb3B0cyA9IHt9XG4gIH1cblxuICBvcHRzID0gb3B0cyB8fCB7fVxuICBjYiA9IGNiIHx8IGZ1bmN0aW9uKCkge31cblxuICBzY3JpcHQudHlwZSA9IG9wdHMudHlwZSB8fCAndGV4dC9qYXZhc2NyaXB0J1xuICBzY3JpcHQuY2hhcnNldCA9IG9wdHMuY2hhcnNldCB8fCAndXRmOCc7XG4gIHNjcmlwdC5hc3luYyA9ICdhc3luYycgaW4gb3B0cyA/ICEhb3B0cy5hc3luYyA6IHRydWVcbiAgc2NyaXB0LnNyYyA9IHNyY1xuXG4gIGlmIChvcHRzLmF0dHJzKSB7XG4gICAgc2V0QXR0cmlidXRlcyhzY3JpcHQsIG9wdHMuYXR0cnMpXG4gIH1cblxuICBpZiAob3B0cy50ZXh0KSB7XG4gICAgc2NyaXB0LnRleHQgPSAnJyArIG9wdHMudGV4dFxuICB9XG5cbiAgdmFyIG9uZW5kID0gJ29ubG9hZCcgaW4gc2NyaXB0ID8gc3RkT25FbmQgOiBpZU9uRW5kXG4gIG9uZW5kKHNjcmlwdCwgY2IpXG5cbiAgLy8gc29tZSBnb29kIGxlZ2FjeSBicm93c2VycyAoZmlyZWZveCkgZmFpbCB0aGUgJ2luJyBkZXRlY3Rpb24gYWJvdmVcbiAgLy8gc28gYXMgYSBmYWxsYmFjayB3ZSBhbHdheXMgc2V0IG9ubG9hZFxuICAvLyBvbGQgSUUgd2lsbCBpZ25vcmUgdGhpcyBhbmQgbmV3IElFIHdpbGwgc2V0IG9ubG9hZFxuICBpZiAoIXNjcmlwdC5vbmxvYWQpIHtcbiAgICBzdGRPbkVuZChzY3JpcHQsIGNiKTtcbiAgfVxuXG4gIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxufVxuXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzKHNjcmlwdCwgYXR0cnMpIHtcbiAgZm9yICh2YXIgYXR0ciBpbiBhdHRycykge1xuICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoYXR0ciwgYXR0cnNbYXR0cl0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHN0ZE9uRW5kIChzY3JpcHQsIGNiKSB7XG4gIHNjcmlwdC5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5vbmVycm9yID0gdGhpcy5vbmxvYWQgPSBudWxsXG4gICAgY2IobnVsbCwgc2NyaXB0KVxuICB9XG4gIHNjcmlwdC5vbmVycm9yID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIHRoaXMub25sb2FkID0gbnVsbCBoZXJlIGlzIG5lY2Vzc2FyeVxuICAgIC8vIGJlY2F1c2UgZXZlbiBJRTkgd29ya3Mgbm90IGxpa2Ugb3RoZXJzXG4gICAgdGhpcy5vbmVycm9yID0gdGhpcy5vbmxvYWQgPSBudWxsXG4gICAgY2IobmV3IEVycm9yKCdGYWlsZWQgdG8gbG9hZCAnICsgdGhpcy5zcmMpLCBzY3JpcHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gaWVPbkVuZCAoc2NyaXB0LCBjYikge1xuICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT0gJ2NvbXBsZXRlJyAmJiB0aGlzLnJlYWR5U3RhdGUgIT0gJ2xvYWRlZCcpIHJldHVyblxuICAgIHRoaXMub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbFxuICAgIGNiKG51bGwsIHNjcmlwdCkgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGNhdGNoIGxvYWRpbmcgZXJyb3JzIGluIElFOFxuICB9XG59XG4iLCIvKipcbiAqIGxvZGFzaCAoQ3VzdG9tIEJ1aWxkKSA8aHR0cHM6Ly9sb2Rhc2guY29tLz5cbiAqIEJ1aWxkOiBgbG9kYXNoIG1vZHVsYXJpemUgZXhwb3J0cz1cIm5wbVwiIC1vIC4vYFxuICogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMgPGh0dHBzOi8vanF1ZXJ5Lm9yZy8+XG4gKiBSZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZSA8aHR0cHM6Ly9sb2Rhc2guY29tL2xpY2Vuc2U+XG4gKiBCYXNlZCBvbiBVbmRlcnNjb3JlLmpzIDEuOC4zIDxodHRwOi8vdW5kZXJzY29yZWpzLm9yZy9MSUNFTlNFPlxuICogQ29weXJpZ2h0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvcnRlcnMgJiBFZGl0b3JzXG4gKi9cblxuLyoqIFVzZWQgYXMgdGhlIGBUeXBlRXJyb3JgIG1lc3NhZ2UgZm9yIFwiRnVuY3Rpb25zXCIgbWV0aG9kcy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltID0gL15cXHMrfFxccyskL2c7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgb2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAqIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICpcbiAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICogICAnbGVhZGluZyc6IHRydWUsXG4gKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gKiB9KSk7XG4gKlxuICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGFzdEFyZ3MsXG4gICAgICBsYXN0VGhpcyxcbiAgICAgIG1heFdhaXQsXG4gICAgICByZXN1bHQsXG4gICAgICB0aW1lcklkLFxuICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgIHJlc3VsdCA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmcgPyBuYXRpdmVNaW4ocmVzdWx0LCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdGhyb3R0bGVkIGZ1bmN0aW9uIHRoYXQgb25seSBpbnZva2VzIGBmdW5jYCBhdCBtb3N0IG9uY2UgcGVyXG4gKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICogaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgXG4gKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gKiB0aHJvdHRsZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIHRocm90dGxlZCBmdW5jdGlvbiByZXR1cm4gdGhlXG4gKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSBpbnZvY2F0aW9ucyB0by5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGV4Y2Vzc2l2ZWx5IHVwZGF0aW5nIHRoZSBwb3NpdGlvbiB3aGlsZSBzY3JvbGxpbmcuXG4gKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gKlxuICogLy8gSW52b2tlIGByZW5ld1Rva2VuYCB3aGVuIHRoZSBjbGljayBldmVudCBpcyBmaXJlZCwgYnV0IG5vdCBtb3JlIHRoYW4gb25jZSBldmVyeSA1IG1pbnV0ZXMuXG4gKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG4gIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgJ2xlYWRpbmcnOiBsZWFkaW5nLFxuICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICB9KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAhIXZhbHVlICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuICEhdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBvYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdGhyb3R0bGU7XG4iLCJ2YXIgc2FmZUlzTmFOID0gTnVtYmVyLmlzTmFOIHx8XG4gICAgZnVuY3Rpb24gcG9ueWZpbGwodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHZhbHVlO1xuICAgIH07XG5mdW5jdGlvbiBpc0VxdWFsKGZpcnN0LCBzZWNvbmQpIHtcbiAgICBpZiAoZmlyc3QgPT09IHNlY29uZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHNhZmVJc05hTihmaXJzdCkgJiYgc2FmZUlzTmFOKHNlY29uZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIGFyZUlucHV0c0VxdWFsKG5ld0lucHV0cywgbGFzdElucHV0cykge1xuICAgIGlmIChuZXdJbnB1dHMubGVuZ3RoICE9PSBsYXN0SW5wdXRzLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3SW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChuZXdJbnB1dHNbaV0sIGxhc3RJbnB1dHNbaV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG1lbW9pemVPbmUocmVzdWx0Rm4sIGlzRXF1YWwpIHtcbiAgICBpZiAoaXNFcXVhbCA9PT0gdm9pZCAwKSB7IGlzRXF1YWwgPSBhcmVJbnB1dHNFcXVhbDsgfVxuICAgIHZhciBsYXN0VGhpcztcbiAgICB2YXIgbGFzdEFyZ3MgPSBbXTtcbiAgICB2YXIgbGFzdFJlc3VsdDtcbiAgICB2YXIgY2FsbGVkT25jZSA9IGZhbHNlO1xuICAgIGZ1bmN0aW9uIG1lbW9pemVkKCkge1xuICAgICAgICB2YXIgbmV3QXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgbmV3QXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWxsZWRPbmNlICYmIGxhc3RUaGlzID09PSB0aGlzICYmIGlzRXF1YWwobmV3QXJncywgbGFzdEFyZ3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gbGFzdFJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBsYXN0UmVzdWx0ID0gcmVzdWx0Rm4uYXBwbHkodGhpcywgbmV3QXJncyk7XG4gICAgICAgIGNhbGxlZE9uY2UgPSB0cnVlO1xuICAgICAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgICAgIGxhc3RBcmdzID0gbmV3QXJncztcbiAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7XG4gICAgfVxuICAgIHJldHVybiBtZW1vaXplZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVtb2l6ZU9uZTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBiaWdpbnQ6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgZWxlbWVudFR5cGU6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbSxcblxuICAgIGNoZWNrUHJvcFR5cGVzOiBlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0LFxuICAgIHJlc2V0V2FybmluZ0NhY2hlOiBlbXB0eUZ1bmN0aW9uXG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0SXMgPSByZXF1aXJlKCdyZWFjdC1pcycpO1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoUmVhY3RJcy5pc0VsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuJ3VzZSBzdHJpY3QnO3ZhciBhYT1yZXF1aXJlKFwicmVhY3RcIiksY2E9cmVxdWlyZShcInNjaGVkdWxlclwiKTtmdW5jdGlvbiBwKGEpe2Zvcih2YXIgYj1cImh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PVwiK2EsYz0xO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYis9XCImYXJnc1tdPVwiK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbY10pO3JldHVyblwiTWluaWZpZWQgUmVhY3QgZXJyb3IgI1wiK2ErXCI7IHZpc2l0IFwiK2IrXCIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLlwifXZhciBkYT1uZXcgU2V0LGVhPXt9O2Z1bmN0aW9uIGZhKGEsYil7aGEoYSxiKTtoYShhK1wiQ2FwdHVyZVwiLGIpfVxuZnVuY3Rpb24gaGEoYSxiKXtlYVthXT1iO2ZvcihhPTA7YTxiLmxlbmd0aDthKyspZGEuYWRkKGJbYV0pfVxudmFyIGlhPSEoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3d8fFwidW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LmRvY3VtZW50fHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxqYT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGthPS9eWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokLyxsYT1cbnt9LG1hPXt9O2Z1bmN0aW9uIG9hKGEpe2lmKGphLmNhbGwobWEsYSkpcmV0dXJuITA7aWYoamEuY2FsbChsYSxhKSlyZXR1cm4hMTtpZihrYS50ZXN0KGEpKXJldHVybiBtYVthXT0hMDtsYVthXT0hMDtyZXR1cm4hMX1mdW5jdGlvbiBwYShhLGIsYyxkKXtpZihudWxsIT09YyYmMD09PWMudHlwZSlyZXR1cm4hMTtzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJmdW5jdGlvblwiOmNhc2UgXCJzeW1ib2xcIjpyZXR1cm4hMDtjYXNlIFwiYm9vbGVhblwiOmlmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpcmV0dXJuIWMuYWNjZXB0c0Jvb2xlYW5zO2E9YS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSk7cmV0dXJuXCJkYXRhLVwiIT09YSYmXCJhcmlhLVwiIT09YTtkZWZhdWx0OnJldHVybiExfX1cbmZ1bmN0aW9uIHFhKGEsYixjLGQpe2lmKG51bGw9PT1ifHxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGJ8fHBhKGEsYixjLGQpKXJldHVybiEwO2lmKGQpcmV0dXJuITE7aWYobnVsbCE9PWMpc3dpdGNoKGMudHlwZSl7Y2FzZSAzOnJldHVybiFiO2Nhc2UgNDpyZXR1cm4hMT09PWI7Y2FzZSA1OnJldHVybiBpc05hTihiKTtjYXNlIDY6cmV0dXJuIGlzTmFOKGIpfHwxPmJ9cmV0dXJuITF9ZnVuY3Rpb24gdihhLGIsYyxkLGUsZixnKXt0aGlzLmFjY2VwdHNCb29sZWFucz0yPT09Ynx8Mz09PWJ8fDQ9PT1iO3RoaXMuYXR0cmlidXRlTmFtZT1kO3RoaXMuYXR0cmlidXRlTmFtZXNwYWNlPWU7dGhpcy5tdXN0VXNlUHJvcGVydHk9Yzt0aGlzLnByb3BlcnR5TmFtZT1hO3RoaXMudHlwZT1iO3RoaXMuc2FuaXRpemVVUkw9Zjt0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWd9dmFyIHo9e307XG5cImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwwLCExLGEsbnVsbCwhMSwhMSl9KTtbW1wiYWNjZXB0Q2hhcnNldFwiLFwiYWNjZXB0LWNoYXJzZXRcIl0sW1wiY2xhc3NOYW1lXCIsXCJjbGFzc1wiXSxbXCJodG1sRm9yXCIsXCJmb3JcIl0sW1wiaHR0cEVxdWl2XCIsXCJodHRwLWVxdWl2XCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWFbMF07eltiXT1uZXcgdihiLDEsITEsYVsxXSxudWxsLCExLCExKX0pO1tcImNvbnRlbnRFZGl0YWJsZVwiLFwiZHJhZ2dhYmxlXCIsXCJzcGVsbENoZWNrXCIsXCJ2YWx1ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuW1wiYXV0b1JldmVyc2VcIixcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIixcImZvY3VzYWJsZVwiLFwicHJlc2VydmVBbHBoYVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwyLCExLGEsbnVsbCwhMSwhMSl9KTtcImFsbG93RnVsbFNjcmVlbiBhc3luYyBhdXRvRm9jdXMgYXV0b1BsYXkgY29udHJvbHMgZGVmYXVsdCBkZWZlciBkaXNhYmxlZCBkaXNhYmxlUGljdHVyZUluUGljdHVyZSBkaXNhYmxlUmVtb3RlUGxheWJhY2sgZm9ybU5vVmFsaWRhdGUgaGlkZGVuIGxvb3Agbm9Nb2R1bGUgbm9WYWxpZGF0ZSBvcGVuIHBsYXlzSW5saW5lIHJlYWRPbmx5IHJlcXVpcmVkIHJldmVyc2VkIHNjb3BlZCBzZWFtbGVzcyBpdGVtU2NvcGVcIi5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMSxhLnRvTG93ZXJDYXNlKCksbnVsbCwhMSwhMSl9KTtcbltcImNoZWNrZWRcIixcIm11bHRpcGxlXCIsXCJtdXRlZFwiLFwic2VsZWN0ZWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsMywhMCxhLG51bGwsITEsITEpfSk7W1wiY2FwdHVyZVwiLFwiZG93bmxvYWRcIl0uZm9yRWFjaChmdW5jdGlvbihhKXt6W2FdPW5ldyB2KGEsNCwhMSxhLG51bGwsITEsITEpfSk7W1wiY29sc1wiLFwicm93c1wiLFwic2l6ZVwiLFwic3BhblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw2LCExLGEsbnVsbCwhMSwhMSl9KTtbXCJyb3dTcGFuXCIsXCJzdGFydFwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSw1LCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO3ZhciByYT0vW1xcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIHNhKGEpe3JldHVybiBhWzFdLnRvVXBwZXJDYXNlKCl9XG5cImFjY2VudC1oZWlnaHQgYWxpZ25tZW50LWJhc2VsaW5lIGFyYWJpYy1mb3JtIGJhc2VsaW5lLXNoaWZ0IGNhcC1oZWlnaHQgY2xpcC1wYXRoIGNsaXAtcnVsZSBjb2xvci1pbnRlcnBvbGF0aW9uIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyBjb2xvci1wcm9maWxlIGNvbG9yLXJlbmRlcmluZyBkb21pbmFudC1iYXNlbGluZSBlbmFibGUtYmFja2dyb3VuZCBmaWxsLW9wYWNpdHkgZmlsbC1ydWxlIGZsb29kLWNvbG9yIGZsb29kLW9wYWNpdHkgZm9udC1mYW1pbHkgZm9udC1zaXplIGZvbnQtc2l6ZS1hZGp1c3QgZm9udC1zdHJldGNoIGZvbnQtc3R5bGUgZm9udC12YXJpYW50IGZvbnQtd2VpZ2h0IGdseXBoLW5hbWUgZ2x5cGgtb3JpZW50YXRpb24taG9yaXpvbnRhbCBnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCBob3Jpei1hZHYteCBob3Jpei1vcmlnaW4teCBpbWFnZS1yZW5kZXJpbmcgbGV0dGVyLXNwYWNpbmcgbGlnaHRpbmctY29sb3IgbWFya2VyLWVuZCBtYXJrZXItbWlkIG1hcmtlci1zdGFydCBvdmVybGluZS1wb3NpdGlvbiBvdmVybGluZS10aGlja25lc3MgcGFpbnQtb3JkZXIgcGFub3NlLTEgcG9pbnRlci1ldmVudHMgcmVuZGVyaW5nLWludGVudCBzaGFwZS1yZW5kZXJpbmcgc3RvcC1jb2xvciBzdG9wLW9wYWNpdHkgc3RyaWtldGhyb3VnaC1wb3NpdGlvbiBzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyBzdHJva2UtZGFzaGFycmF5IHN0cm9rZS1kYXNob2Zmc2V0IHN0cm9rZS1saW5lY2FwIHN0cm9rZS1saW5lam9pbiBzdHJva2UtbWl0ZXJsaW1pdCBzdHJva2Utb3BhY2l0eSBzdHJva2Utd2lkdGggdGV4dC1hbmNob3IgdGV4dC1kZWNvcmF0aW9uIHRleHQtcmVuZGVyaW5nIHVuZGVybGluZS1wb3NpdGlvbiB1bmRlcmxpbmUtdGhpY2tuZXNzIHVuaWNvZGUtYmlkaSB1bmljb2RlLXJhbmdlIHVuaXRzLXBlci1lbSB2LWFscGhhYmV0aWMgdi1oYW5naW5nIHYtaWRlb2dyYXBoaWMgdi1tYXRoZW1hdGljYWwgdmVjdG9yLWVmZmVjdCB2ZXJ0LWFkdi15IHZlcnQtb3JpZ2luLXggdmVydC1vcmlnaW4teSB3b3JkLXNwYWNpbmcgd3JpdGluZy1tb2RlIHhtbG5zOnhsaW5rIHgtaGVpZ2h0XCIuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHJhLFxuc2EpO3pbYl09bmV3IHYoYiwxLCExLGEsbnVsbCwhMSwhMSl9KTtcInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZVwiLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiwhMSwhMSl9KTtbXCJ4bWw6YmFzZVwiLFwieG1sOmxhbmdcIixcInhtbDpzcGFjZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShyYSxzYSk7eltiXT1uZXcgdihiLDEsITEsYSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLCExLCExKX0pO1tcInRhYkluZGV4XCIsXCJjcm9zc09yaWdpblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pO1xuei54bGlua0hyZWY9bmV3IHYoXCJ4bGlua0hyZWZcIiwxLCExLFwieGxpbms6aHJlZlwiLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLCEwLCExKTtbXCJzcmNcIixcImhyZWZcIixcImFjdGlvblwiLFwiZm9ybUFjdGlvblwiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3pbYV09bmV3IHYoYSwxLCExLGEudG9Mb3dlckNhc2UoKSxudWxsLCEwLCEwKX0pO1xuZnVuY3Rpb24gdGEoYSxiLGMsZCl7dmFyIGU9ei5oYXNPd25Qcm9wZXJ0eShiKT96W2JdOm51bGw7aWYobnVsbCE9PWU/MCE9PWUudHlwZTpkfHwhKDI8Yi5sZW5ndGgpfHxcIm9cIiE9PWJbMF0mJlwiT1wiIT09YlswXXx8XCJuXCIhPT1iWzFdJiZcIk5cIiE9PWJbMV0pcWEoYixjLGUsZCkmJihjPW51bGwpLGR8fG51bGw9PT1lP29hKGIpJiYobnVsbD09PWM/YS5yZW1vdmVBdHRyaWJ1dGUoYik6YS5zZXRBdHRyaWJ1dGUoYixcIlwiK2MpKTplLm11c3RVc2VQcm9wZXJ0eT9hW2UucHJvcGVydHlOYW1lXT1udWxsPT09Yz8zPT09ZS50eXBlPyExOlwiXCI6YzooYj1lLmF0dHJpYnV0ZU5hbWUsZD1lLmF0dHJpYnV0ZU5hbWVzcGFjZSxudWxsPT09Yz9hLnJlbW92ZUF0dHJpYnV0ZShiKTooZT1lLnR5cGUsYz0zPT09ZXx8ND09PWUmJiEwPT09Yz9cIlwiOlwiXCIrYyxkP2Euc2V0QXR0cmlidXRlTlMoZCxiLGMpOmEuc2V0QXR0cmlidXRlKGIsYykpKX1cbnZhciB1YT1hYS5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCx2YT1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSx3YT1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLHlhPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSx6YT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksQWE9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLEJhPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxDYT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxEYT1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksRWE9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLEZhPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLEdhPVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLEhhPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QuZGVidWdfdHJhY2VfbW9kZVwiKTtcbnZhciBJYT1TeW1ib2wuZm9yKFwicmVhY3Qub2Zmc2NyZWVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5jYWNoZVwiKTtTeW1ib2wuZm9yKFwicmVhY3QudHJhY2luZ19tYXJrZXJcIik7dmFyIEphPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBLYShhKXtpZihudWxsPT09YXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2E9SmEmJmFbSmFdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9dmFyIEE9T2JqZWN0LmFzc2lnbixMYTtmdW5jdGlvbiBNYShhKXtpZih2b2lkIDA9PT1MYSl0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2goYyl7dmFyIGI9Yy5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtMYT1iJiZiWzFdfHxcIlwifXJldHVyblwiXFxuXCIrTGErYX12YXIgTmE9ITE7XG5mdW5jdGlvbiBPYShhLGIpe2lmKCFhfHxOYSlyZXR1cm5cIlwiO05hPSEwO3ZhciBjPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYoYilpZihiPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKTt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiLnByb3RvdHlwZSxcInByb3BzXCIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCk7fX0pLFwib2JqZWN0XCI9PT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdChiLFtdKX1jYXRjaChsKXt2YXIgZD1sfVJlZmxlY3QuY29uc3RydWN0KGEsW10sYil9ZWxzZXt0cnl7Yi5jYWxsKCl9Y2F0Y2gobCl7ZD1sfWEuY2FsbChiLnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKTt9Y2F0Y2gobCl7ZD1sfWEoKX19Y2F0Y2gobCl7aWYobCYmZCYmXCJzdHJpbmdcIj09PXR5cGVvZiBsLnN0YWNrKXtmb3IodmFyIGU9bC5zdGFjay5zcGxpdChcIlxcblwiKSxcbmY9ZC5zdGFjay5zcGxpdChcIlxcblwiKSxnPWUubGVuZ3RoLTEsaD1mLmxlbmd0aC0xOzE8PWcmJjA8PWgmJmVbZ10hPT1mW2hdOyloLS07Zm9yKDsxPD1nJiYwPD1oO2ctLSxoLS0paWYoZVtnXSE9PWZbaF0pe2lmKDEhPT1nfHwxIT09aCl7ZG8gaWYoZy0tLGgtLSwwPmh8fGVbZ10hPT1mW2hdKXt2YXIgaz1cIlxcblwiK2VbZ10ucmVwbGFjZShcIiBhdCBuZXcgXCIsXCIgYXQgXCIpO2EuZGlzcGxheU5hbWUmJmsuaW5jbHVkZXMoXCI8YW5vbnltb3VzPlwiKSYmKGs9ay5yZXBsYWNlKFwiPGFub255bW91cz5cIixhLmRpc3BsYXlOYW1lKSk7cmV0dXJuIGt9d2hpbGUoMTw9ZyYmMDw9aCl9YnJlYWt9fX1maW5hbGx5e05hPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPWN9cmV0dXJuKGE9YT9hLmRpc3BsYXlOYW1lfHxhLm5hbWU6XCJcIik/TWEoYSk6XCJcIn1cbmZ1bmN0aW9uIFBhKGEpe3N3aXRjaChhLnRhZyl7Y2FzZSA1OnJldHVybiBNYShhLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIE1hKFwiTGF6eVwiKTtjYXNlIDEzOnJldHVybiBNYShcIlN1c3BlbnNlXCIpO2Nhc2UgMTk6cmV0dXJuIE1hKFwiU3VzcGVuc2VMaXN0XCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gYT1PYShhLnR5cGUsITEpLGE7Y2FzZSAxMTpyZXR1cm4gYT1PYShhLnR5cGUucmVuZGVyLCExKSxhO2Nhc2UgMTpyZXR1cm4gYT1PYShhLnR5cGUsITApLGE7ZGVmYXVsdDpyZXR1cm5cIlwifX1cbmZ1bmN0aW9uIFFhKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEpcmV0dXJuIGEuZGlzcGxheU5hbWV8fGEubmFtZXx8bnVsbDtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpcmV0dXJuIGE7c3dpdGNoKGEpe2Nhc2UgeWE6cmV0dXJuXCJGcmFnbWVudFwiO2Nhc2Ugd2E6cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEFhOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIHphOnJldHVyblwiU3RyaWN0TW9kZVwiO2Nhc2UgRWE6cmV0dXJuXCJTdXNwZW5zZVwiO2Nhc2UgRmE6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIn1pZihcIm9iamVjdFwiPT09dHlwZW9mIGEpc3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgQ2E6cmV0dXJuKGEuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgQmE6cmV0dXJuKGEuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgRGE6dmFyIGI9YS5yZW5kZXI7YT1hLmRpc3BsYXlOYW1lO2F8fChhPWIuZGlzcGxheU5hbWV8fFxuYi5uYW1lfHxcIlwiLGE9XCJcIiE9PWE/XCJGb3J3YXJkUmVmKFwiK2ErXCIpXCI6XCJGb3J3YXJkUmVmXCIpO3JldHVybiBhO2Nhc2UgR2E6cmV0dXJuIGI9YS5kaXNwbGF5TmFtZXx8bnVsbCxudWxsIT09Yj9iOlFhKGEudHlwZSl8fFwiTWVtb1wiO2Nhc2UgSGE6Yj1hLl9wYXlsb2FkO2E9YS5faW5pdDt0cnl7cmV0dXJuIFFhKGEoYikpfWNhdGNoKGMpe319cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSYShhKXt2YXIgYj1hLnR5cGU7c3dpdGNoKGEudGFnKXtjYXNlIDI0OnJldHVyblwiQ2FjaGVcIjtjYXNlIDk6cmV0dXJuKGIuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Db25zdW1lclwiO2Nhc2UgMTA6cmV0dXJuKGIuX2NvbnRleHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiKStcIi5Qcm92aWRlclwiO2Nhc2UgMTg6cmV0dXJuXCJEZWh5ZHJhdGVkRnJhZ21lbnRcIjtjYXNlIDExOnJldHVybiBhPWIucmVuZGVyLGE9YS5kaXNwbGF5TmFtZXx8YS5uYW1lfHxcIlwiLGIuZGlzcGxheU5hbWV8fChcIlwiIT09YT9cIkZvcndhcmRSZWYoXCIrYStcIilcIjpcIkZvcndhcmRSZWZcIik7Y2FzZSA3OnJldHVyblwiRnJhZ21lbnRcIjtjYXNlIDU6cmV0dXJuIGI7Y2FzZSA0OnJldHVyblwiUG9ydGFsXCI7Y2FzZSAzOnJldHVyblwiUm9vdFwiO2Nhc2UgNjpyZXR1cm5cIlRleHRcIjtjYXNlIDE2OnJldHVybiBRYShiKTtjYXNlIDg6cmV0dXJuIGI9PT16YT9cIlN0cmljdE1vZGVcIjpcIk1vZGVcIjtjYXNlIDIyOnJldHVyblwiT2Zmc2NyZWVuXCI7XG5jYXNlIDEyOnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIDIxOnJldHVyblwiU2NvcGVcIjtjYXNlIDEzOnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIDE5OnJldHVyblwiU3VzcGVuc2VMaXN0XCI7Y2FzZSAyNTpyZXR1cm5cIlRyYWNpbmdNYXJrZXJcIjtjYXNlIDE6Y2FzZSAwOmNhc2UgMTc6Y2FzZSAyOmNhc2UgMTQ6Y2FzZSAxNTppZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYilyZXR1cm4gYi5kaXNwbGF5TmFtZXx8Yi5uYW1lfHxudWxsO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYilyZXR1cm4gYn1yZXR1cm4gbnVsbH1mdW5jdGlvbiBTYShhKXtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgXCJib29sZWFuXCI6Y2FzZSBcIm51bWJlclwiOmNhc2UgXCJzdHJpbmdcIjpjYXNlIFwidW5kZWZpbmVkXCI6cmV0dXJuIGE7Y2FzZSBcIm9iamVjdFwiOnJldHVybiBhO2RlZmF1bHQ6cmV0dXJuXCJcIn19XG5mdW5jdGlvbiBUYShhKXt2YXIgYj1hLnR5cGU7cmV0dXJuKGE9YS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWEudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PWJ8fFwicmFkaW9cIj09PWIpfVxuZnVuY3Rpb24gVWEoYSl7dmFyIGI9VGEoYSk/XCJjaGVja2VkXCI6XCJ2YWx1ZVwiLGM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxiKSxkPVwiXCIrYVtiXTtpZighYS5oYXNPd25Qcm9wZXJ0eShiKSYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgYy5nZXQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBjLnNldCl7dmFyIGU9Yy5nZXQsZj1jLnNldDtPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGEpe2Q9XCJcIithO2YuY2FsbCh0aGlzLGEpfX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGIse2VudW1lcmFibGU6Yy5lbnVtZXJhYmxlfSk7cmV0dXJue2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldFZhbHVlOmZ1bmN0aW9uKGEpe2Q9XCJcIithfSxzdG9wVHJhY2tpbmc6ZnVuY3Rpb24oKXthLl92YWx1ZVRyYWNrZXI9XG5udWxsO2RlbGV0ZSBhW2JdfX19fWZ1bmN0aW9uIFZhKGEpe2EuX3ZhbHVlVHJhY2tlcnx8KGEuX3ZhbHVlVHJhY2tlcj1VYShhKSl9ZnVuY3Rpb24gV2EoYSl7aWYoIWEpcmV0dXJuITE7dmFyIGI9YS5fdmFsdWVUcmFja2VyO2lmKCFiKXJldHVybiEwO3ZhciBjPWIuZ2V0VmFsdWUoKTt2YXIgZD1cIlwiO2EmJihkPVRhKGEpP2EuY2hlY2tlZD9cInRydWVcIjpcImZhbHNlXCI6YS52YWx1ZSk7YT1kO3JldHVybiBhIT09Yz8oYi5zZXRWYWx1ZShhKSwhMCk6ITF9ZnVuY3Rpb24gWGEoYSl7YT1hfHwoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDApO2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGEuYWN0aXZlRWxlbWVudHx8YS5ib2R5fWNhdGNoKGIpe3JldHVybiBhLmJvZHl9fVxuZnVuY3Rpb24gWWEoYSxiKXt2YXIgYz1iLmNoZWNrZWQ7cmV0dXJuIEEoe30sYix7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bnVsbCE9Yz9jOmEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZH0pfWZ1bmN0aW9uIFphKGEsYil7dmFyIGM9bnVsbD09Yi5kZWZhdWx0VmFsdWU/XCJcIjpiLmRlZmF1bHRWYWx1ZSxkPW51bGwhPWIuY2hlY2tlZD9iLmNoZWNrZWQ6Yi5kZWZhdWx0Q2hlY2tlZDtjPVNhKG51bGwhPWIudmFsdWU/Yi52YWx1ZTpjKTthLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmQsaW5pdGlhbFZhbHVlOmMsY29udHJvbGxlZDpcImNoZWNrYm94XCI9PT1iLnR5cGV8fFwicmFkaW9cIj09PWIudHlwZT9udWxsIT1iLmNoZWNrZWQ6bnVsbCE9Yi52YWx1ZX19ZnVuY3Rpb24gYWIoYSxiKXtiPWIuY2hlY2tlZDtudWxsIT1iJiZ0YShhLFwiY2hlY2tlZFwiLGIsITEpfVxuZnVuY3Rpb24gYmIoYSxiKXthYihhLGIpO3ZhciBjPVNhKGIudmFsdWUpLGQ9Yi50eXBlO2lmKG51bGwhPWMpaWYoXCJudW1iZXJcIj09PWQpe2lmKDA9PT1jJiZcIlwiPT09YS52YWx1ZXx8YS52YWx1ZSE9YylhLnZhbHVlPVwiXCIrY31lbHNlIGEudmFsdWUhPT1cIlwiK2MmJihhLnZhbHVlPVwiXCIrYyk7ZWxzZSBpZihcInN1Ym1pdFwiPT09ZHx8XCJyZXNldFwiPT09ZCl7YS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtyZXR1cm59Yi5oYXNPd25Qcm9wZXJ0eShcInZhbHVlXCIpP2NiKGEsYi50eXBlLGMpOmIuaGFzT3duUHJvcGVydHkoXCJkZWZhdWx0VmFsdWVcIikmJmNiKGEsYi50eXBlLFNhKGIuZGVmYXVsdFZhbHVlKSk7bnVsbD09Yi5jaGVja2VkJiZudWxsIT1iLmRlZmF1bHRDaGVja2VkJiYoYS5kZWZhdWx0Q2hlY2tlZD0hIWIuZGVmYXVsdENoZWNrZWQpfVxuZnVuY3Rpb24gZGIoYSxiLGMpe2lmKGIuaGFzT3duUHJvcGVydHkoXCJ2YWx1ZVwiKXx8Yi5oYXNPd25Qcm9wZXJ0eShcImRlZmF1bHRWYWx1ZVwiKSl7dmFyIGQ9Yi50eXBlO2lmKCEoXCJzdWJtaXRcIiE9PWQmJlwicmVzZXRcIiE9PWR8fHZvaWQgMCE9PWIudmFsdWUmJm51bGwhPT1iLnZhbHVlKSlyZXR1cm47Yj1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7Y3x8Yj09PWEudmFsdWV8fChhLnZhbHVlPWIpO2EuZGVmYXVsdFZhbHVlPWJ9Yz1hLm5hbWU7XCJcIiE9PWMmJihhLm5hbWU9XCJcIik7YS5kZWZhdWx0Q2hlY2tlZD0hIWEuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZDtcIlwiIT09YyYmKGEubmFtZT1jKX1cbmZ1bmN0aW9uIGNiKGEsYixjKXtpZihcIm51bWJlclwiIT09Ynx8WGEoYS5vd25lckRvY3VtZW50KSE9PWEpbnVsbD09Yz9hLmRlZmF1bHRWYWx1ZT1cIlwiK2EuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU6YS5kZWZhdWx0VmFsdWUhPT1cIlwiK2MmJihhLmRlZmF1bHRWYWx1ZT1cIlwiK2MpfXZhciBlYj1BcnJheS5pc0FycmF5O1xuZnVuY3Rpb24gZmIoYSxiLGMsZCl7YT1hLm9wdGlvbnM7aWYoYil7Yj17fTtmb3IodmFyIGU9MDtlPGMubGVuZ3RoO2UrKyliW1wiJFwiK2NbZV1dPSEwO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspZT1iLmhhc093blByb3BlcnR5KFwiJFwiK2FbY10udmFsdWUpLGFbY10uc2VsZWN0ZWQhPT1lJiYoYVtjXS5zZWxlY3RlZD1lKSxlJiZkJiYoYVtjXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Yz1cIlwiK1NhKGMpO2I9bnVsbDtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKXtpZihhW2VdLnZhbHVlPT09Yyl7YVtlXS5zZWxlY3RlZD0hMDtkJiYoYVtlXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09Ynx8YVtlXS5kaXNhYmxlZHx8KGI9YVtlXSl9bnVsbCE9PWImJihiLnNlbGVjdGVkPSEwKX19XG5mdW5jdGlvbiBnYihhLGIpe2lmKG51bGwhPWIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpdGhyb3cgRXJyb3IocCg5MSkpO3JldHVybiBBKHt9LGIse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOlwiXCIrYS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZX0pfWZ1bmN0aW9uIGhiKGEsYil7dmFyIGM9Yi52YWx1ZTtpZihudWxsPT1jKXtjPWIuY2hpbGRyZW47Yj1iLmRlZmF1bHRWYWx1ZTtpZihudWxsIT1jKXtpZihudWxsIT1iKXRocm93IEVycm9yKHAoOTIpKTtpZihlYihjKSl7aWYoMTxjLmxlbmd0aCl0aHJvdyBFcnJvcihwKDkzKSk7Yz1jWzBdfWI9Y31udWxsPT1iJiYoYj1cIlwiKTtjPWJ9YS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6U2EoYyl9fVxuZnVuY3Rpb24gaWIoYSxiKXt2YXIgYz1TYShiLnZhbHVlKSxkPVNhKGIuZGVmYXVsdFZhbHVlKTtudWxsIT1jJiYoYz1cIlwiK2MsYyE9PWEudmFsdWUmJihhLnZhbHVlPWMpLG51bGw9PWIuZGVmYXVsdFZhbHVlJiZhLmRlZmF1bHRWYWx1ZSE9PWMmJihhLmRlZmF1bHRWYWx1ZT1jKSk7bnVsbCE9ZCYmKGEuZGVmYXVsdFZhbHVlPVwiXCIrZCl9ZnVuY3Rpb24gamIoYSl7dmFyIGI9YS50ZXh0Q29udGVudDtiPT09YS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSYmXCJcIiE9PWImJm51bGwhPT1iJiYoYS52YWx1ZT1iKX1mdW5jdGlvbiBrYihhKXtzd2l0Y2goYSl7Y2FzZSBcInN2Z1wiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtjYXNlIFwibWF0aFwiOnJldHVyblwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiO2RlZmF1bHQ6cmV0dXJuXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJ9fVxuZnVuY3Rpb24gbGIoYSxiKXtyZXR1cm4gbnVsbD09YXx8XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI9PT1hP2tiKGIpOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj09PWEmJlwiZm9yZWlnbk9iamVjdFwiPT09Yj9cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIjphfVxudmFyIG1iLG5iPWZ1bmN0aW9uKGEpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKGIsYyxkLGUpe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGEoYixjLGQsZSl9KX06YX0oZnVuY3Rpb24oYSxiKXtpZihcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIhPT1hLm5hbWVzcGFjZVVSSXx8XCJpbm5lckhUTUxcImluIGEpYS5pbm5lckhUTUw9YjtlbHNle21iPW1ifHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO21iLmlubmVySFRNTD1cIjxzdmc+XCIrYi52YWx1ZU9mKCkudG9TdHJpbmcoKStcIjwvc3ZnPlwiO2ZvcihiPW1iLmZpcnN0Q2hpbGQ7YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7Zm9yKDtiLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5maXJzdENoaWxkKX19KTtcbmZ1bmN0aW9uIG9iKGEsYil7aWYoYil7dmFyIGM9YS5maXJzdENoaWxkO2lmKGMmJmM9PT1hLmxhc3RDaGlsZCYmMz09PWMubm9kZVR5cGUpe2Mubm9kZVZhbHVlPWI7cmV0dXJufX1hLnRleHRDb250ZW50PWJ9XG52YXIgcGI9e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGFzcGVjdFJhdGlvOiEwLGJvcmRlckltYWdlT3V0c2V0OiEwLGJvcmRlckltYWdlU2xpY2U6ITAsYm9yZGVySW1hZ2VXaWR0aDohMCxib3hGbGV4OiEwLGJveEZsZXhHcm91cDohMCxib3hPcmRpbmFsR3JvdXA6ITAsY29sdW1uQ291bnQ6ITAsY29sdW1uczohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZEFyZWE6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCxcbnpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0scWI9W1wiV2Via2l0XCIsXCJtc1wiLFwiTW96XCIsXCJPXCJdO09iamVjdC5rZXlzKHBiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3FiLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iK2EuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHJpbmcoMSk7cGJbYl09cGJbYV19KX0pO2Z1bmN0aW9uIHJiKGEsYixjKXtyZXR1cm4gbnVsbD09Ynx8XCJib29sZWFuXCI9PT10eXBlb2YgYnx8XCJcIj09PWI/XCJcIjpjfHxcIm51bWJlclwiIT09dHlwZW9mIGJ8fDA9PT1ifHxwYi5oYXNPd25Qcm9wZXJ0eShhKSYmcGJbYV0/KFwiXCIrYikudHJpbSgpOmIrXCJweFwifVxuZnVuY3Rpb24gc2IoYSxiKXthPWEuc3R5bGU7Zm9yKHZhciBjIGluIGIpaWYoYi5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIGQ9MD09PWMuaW5kZXhPZihcIi0tXCIpLGU9cmIoYyxiW2NdLGQpO1wiZmxvYXRcIj09PWMmJihjPVwiY3NzRmxvYXRcIik7ZD9hLnNldFByb3BlcnR5KGMsZSk6YVtjXT1lfX12YXIgdGI9QSh7bWVudWl0ZW06ITB9LHthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9KTtcbmZ1bmN0aW9uIHViKGEsYil7aWYoYil7aWYodGJbYV0mJihudWxsIT1iLmNoaWxkcmVufHxudWxsIT1iLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDEzNyxhKSk7aWYobnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCl7aWYobnVsbCE9Yi5jaGlsZHJlbil0aHJvdyBFcnJvcihwKDYwKSk7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MfHwhKFwiX19odG1sXCJpbiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSl0aHJvdyBFcnJvcihwKDYxKSk7fWlmKG51bGwhPWIuc3R5bGUmJlwib2JqZWN0XCIhPT10eXBlb2YgYi5zdHlsZSl0aHJvdyBFcnJvcihwKDYyKSk7fX1cbmZ1bmN0aW9uIHZiKGEsYil7aWYoLTE9PT1hLmluZGV4T2YoXCItXCIpKXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYi5pcztzd2l0Y2goYSl7Y2FzZSBcImFubm90YXRpb24teG1sXCI6Y2FzZSBcImNvbG9yLXByb2ZpbGVcIjpjYXNlIFwiZm9udC1mYWNlXCI6Y2FzZSBcImZvbnQtZmFjZS1zcmNcIjpjYXNlIFwiZm9udC1mYWNlLXVyaVwiOmNhc2UgXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZSBcImZvbnQtZmFjZS1uYW1lXCI6Y2FzZSBcIm1pc3NpbmctZ2x5cGhcIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgd2I9bnVsbDtmdW5jdGlvbiB4YihhKXthPWEudGFyZ2V0fHxhLnNyY0VsZW1lbnR8fHdpbmRvdzthLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoYT1hLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KTtyZXR1cm4gMz09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmF9dmFyIHliPW51bGwsemI9bnVsbCxBYj1udWxsO1xuZnVuY3Rpb24gQmIoYSl7aWYoYT1DYihhKSl7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIHliKXRocm93IEVycm9yKHAoMjgwKSk7dmFyIGI9YS5zdGF0ZU5vZGU7YiYmKGI9RGIoYikseWIoYS5zdGF0ZU5vZGUsYS50eXBlLGIpKX19ZnVuY3Rpb24gRWIoYSl7emI/QWI/QWIucHVzaChhKTpBYj1bYV06emI9YX1mdW5jdGlvbiBGYigpe2lmKHpiKXt2YXIgYT16YixiPUFiO0FiPXpiPW51bGw7QmIoYSk7aWYoYilmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKUJiKGJbYV0pfX1mdW5jdGlvbiBHYihhLGIpe3JldHVybiBhKGIpfWZ1bmN0aW9uIEhiKCl7fXZhciBJYj0hMTtmdW5jdGlvbiBKYihhLGIsYyl7aWYoSWIpcmV0dXJuIGEoYixjKTtJYj0hMDt0cnl7cmV0dXJuIEdiKGEsYixjKX1maW5hbGx5e2lmKEliPSExLG51bGwhPT16Ynx8bnVsbCE9PUFiKUhiKCksRmIoKX19XG5mdW5jdGlvbiBLYihhLGIpe3ZhciBjPWEuc3RhdGVOb2RlO2lmKG51bGw9PT1jKXJldHVybiBudWxsO3ZhciBkPURiKGMpO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2M9ZFtiXTthOnN3aXRjaChiKXtjYXNlIFwib25DbGlja1wiOmNhc2UgXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2UgXCJvbkRvdWJsZUNsaWNrXCI6Y2FzZSBcIm9uRG91YmxlQ2xpY2tDYXB0dXJlXCI6Y2FzZSBcIm9uTW91c2VEb3duXCI6Y2FzZSBcIm9uTW91c2VEb3duQ2FwdHVyZVwiOmNhc2UgXCJvbk1vdXNlTW92ZVwiOmNhc2UgXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlIFwib25Nb3VzZVVwXCI6Y2FzZSBcIm9uTW91c2VVcENhcHR1cmVcIjpjYXNlIFwib25Nb3VzZUVudGVyXCI6KGQ9IWQuZGlzYWJsZWQpfHwoYT1hLnR5cGUsZD0hKFwiYnV0dG9uXCI9PT1hfHxcImlucHV0XCI9PT1hfHxcInNlbGVjdFwiPT09YXx8XCJ0ZXh0YXJlYVwiPT09YSkpO2E9IWQ7YnJlYWsgYTtkZWZhdWx0OmE9ITF9aWYoYSlyZXR1cm4gbnVsbDtpZihjJiZcImZ1bmN0aW9uXCIhPT1cbnR5cGVvZiBjKXRocm93IEVycm9yKHAoMjMxLGIsdHlwZW9mIGMpKTtyZXR1cm4gY312YXIgTGI9ITE7aWYoaWEpdHJ5e3ZhciBNYj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkoTWIsXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe0xiPSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLE1iLE1iKTt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIixNYixNYil9Y2F0Y2goYSl7TGI9ITF9ZnVuY3Rpb24gTmIoYSxiLGMsZCxlLGYsZyxoLGspe3ZhciBsPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywzKTt0cnl7Yi5hcHBseShjLGwpfWNhdGNoKG0pe3RoaXMub25FcnJvcihtKX19dmFyIE9iPSExLFBiPW51bGwsUWI9ITEsUmI9bnVsbCxTYj17b25FcnJvcjpmdW5jdGlvbihhKXtPYj0hMDtQYj1hfX07ZnVuY3Rpb24gVGIoYSxiLGMsZCxlLGYsZyxoLGspe09iPSExO1BiPW51bGw7TmIuYXBwbHkoU2IsYXJndW1lbnRzKX1cbmZ1bmN0aW9uIFViKGEsYixjLGQsZSxmLGcsaCxrKXtUYi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoT2Ipe2lmKE9iKXt2YXIgbD1QYjtPYj0hMTtQYj1udWxsfWVsc2UgdGhyb3cgRXJyb3IocCgxOTgpKTtRYnx8KFFiPSEwLFJiPWwpfX1mdW5jdGlvbiBWYihhKXt2YXIgYj1hLGM9YTtpZihhLmFsdGVybmF0ZSlmb3IoO2IucmV0dXJuOyliPWIucmV0dXJuO2Vsc2V7YT1iO2RvIGI9YSwwIT09KGIuZmxhZ3MmNDA5OCkmJihjPWIucmV0dXJuKSxhPWIucmV0dXJuO3doaWxlKGEpfXJldHVybiAzPT09Yi50YWc/YzpudWxsfWZ1bmN0aW9uIFdiKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZTtudWxsPT09YiYmKGE9YS5hbHRlcm5hdGUsbnVsbCE9PWEmJihiPWEubWVtb2l6ZWRTdGF0ZSkpO2lmKG51bGwhPT1iKXJldHVybiBiLmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gWGIoYSl7aWYoVmIoYSkhPT1hKXRocm93IEVycm9yKHAoMTg4KSk7fVxuZnVuY3Rpb24gWWIoYSl7dmFyIGI9YS5hbHRlcm5hdGU7aWYoIWIpe2I9VmIoYSk7aWYobnVsbD09PWIpdGhyb3cgRXJyb3IocCgxODgpKTtyZXR1cm4gYiE9PWE/bnVsbDphfWZvcih2YXIgYz1hLGQ9Yjs7KXt2YXIgZT1jLnJldHVybjtpZihudWxsPT09ZSlicmVhazt2YXIgZj1lLmFsdGVybmF0ZTtpZihudWxsPT09Zil7ZD1lLnJldHVybjtpZihudWxsIT09ZCl7Yz1kO2NvbnRpbnVlfWJyZWFrfWlmKGUuY2hpbGQ9PT1mLmNoaWxkKXtmb3IoZj1lLmNoaWxkO2Y7KXtpZihmPT09YylyZXR1cm4gWGIoZSksYTtpZihmPT09ZClyZXR1cm4gWGIoZSksYjtmPWYuc2libGluZ310aHJvdyBFcnJvcihwKDE4OCkpO31pZihjLnJldHVybiE9PWQucmV0dXJuKWM9ZSxkPWY7ZWxzZXtmb3IodmFyIGc9ITEsaD1lLmNoaWxkO2g7KXtpZihoPT09Yyl7Zz0hMDtjPWU7ZD1mO2JyZWFrfWlmKGg9PT1kKXtnPSEwO2Q9ZTtjPWY7YnJlYWt9aD1oLnNpYmxpbmd9aWYoIWcpe2ZvcihoPWYuY2hpbGQ7aDspe2lmKGg9PT1cbmMpe2c9ITA7Yz1mO2Q9ZTticmVha31pZihoPT09ZCl7Zz0hMDtkPWY7Yz1lO2JyZWFrfWg9aC5zaWJsaW5nfWlmKCFnKXRocm93IEVycm9yKHAoMTg5KSk7fX1pZihjLmFsdGVybmF0ZSE9PWQpdGhyb3cgRXJyb3IocCgxOTApKTt9aWYoMyE9PWMudGFnKXRocm93IEVycm9yKHAoMTg4KSk7cmV0dXJuIGMuc3RhdGVOb2RlLmN1cnJlbnQ9PT1jP2E6Yn1mdW5jdGlvbiBaYihhKXthPVliKGEpO3JldHVybiBudWxsIT09YT8kYihhKTpudWxsfWZ1bmN0aW9uICRiKGEpe2lmKDU9PT1hLnRhZ3x8Nj09PWEudGFnKXJldHVybiBhO2ZvcihhPWEuY2hpbGQ7bnVsbCE9PWE7KXt2YXIgYj0kYihhKTtpZihudWxsIT09YilyZXR1cm4gYjthPWEuc2libGluZ31yZXR1cm4gbnVsbH1cbnZhciBhYz1jYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGJjPWNhLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrLGNjPWNhLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGRjPWNhLnVuc3RhYmxlX3JlcXVlc3RQYWludCxCPWNhLnVuc3RhYmxlX25vdyxlYz1jYS51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCxmYz1jYS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxnYz1jYS51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxoYz1jYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxpYz1jYS51bnN0YWJsZV9Mb3dQcmlvcml0eSxqYz1jYS51bnN0YWJsZV9JZGxlUHJpb3JpdHksa2M9bnVsbCxsYz1udWxsO2Z1bmN0aW9uIG1jKGEpe2lmKGxjJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgbGMub25Db21taXRGaWJlclJvb3QpdHJ5e2xjLm9uQ29tbWl0RmliZXJSb290KGtjLGEsdm9pZCAwLDEyOD09PShhLmN1cnJlbnQuZmxhZ3MmMTI4KSl9Y2F0Y2goYil7fX1cbnZhciBvYz1NYXRoLmNsejMyP01hdGguY2x6MzI6bmMscGM9TWF0aC5sb2cscWM9TWF0aC5MTjI7ZnVuY3Rpb24gbmMoYSl7YT4+Pj0wO3JldHVybiAwPT09YT8zMjozMS0ocGMoYSkvcWN8MCl8MH12YXIgcmM9NjQsc2M9NDE5NDMwNDtcbmZ1bmN0aW9uIHRjKGEpe3N3aXRjaChhJi1hKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYSY0MTk0MjQwO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuIGEmMTMwMDIzNDI0O2Nhc2UgMTM0MjE3NzI4OnJldHVybiAxMzQyMTc3Mjg7Y2FzZSAyNjg0MzU0NTY6cmV0dXJuIDI2ODQzNTQ1NjtjYXNlIDUzNjg3MDkxMjpyZXR1cm4gNTM2ODcwOTEyO2Nhc2UgMTA3Mzc0MTgyNDpyZXR1cm4gMTA3Mzc0MTgyNDtcbmRlZmF1bHQ6cmV0dXJuIGF9fWZ1bmN0aW9uIHVjKGEsYil7dmFyIGM9YS5wZW5kaW5nTGFuZXM7aWYoMD09PWMpcmV0dXJuIDA7dmFyIGQ9MCxlPWEuc3VzcGVuZGVkTGFuZXMsZj1hLnBpbmdlZExhbmVzLGc9YyYyNjg0MzU0NTU7aWYoMCE9PWcpe3ZhciBoPWcmfmU7MCE9PWg/ZD10YyhoKTooZiY9ZywwIT09ZiYmKGQ9dGMoZikpKX1lbHNlIGc9YyZ+ZSwwIT09Zz9kPXRjKGcpOjAhPT1mJiYoZD10YyhmKSk7aWYoMD09PWQpcmV0dXJuIDA7aWYoMCE9PWImJmIhPT1kJiYwPT09KGImZSkmJihlPWQmLWQsZj1iJi1iLGU+PWZ8fDE2PT09ZSYmMCE9PShmJjQxOTQyNDApKSlyZXR1cm4gYjswIT09KGQmNCkmJihkfD1jJjE2KTtiPWEuZW50YW5nbGVkTGFuZXM7aWYoMCE9PWIpZm9yKGE9YS5lbnRhbmdsZW1lbnRzLGImPWQ7MDxiOyljPTMxLW9jKGIpLGU9MTw8YyxkfD1hW2NdLGImPX5lO3JldHVybiBkfVxuZnVuY3Rpb24gdmMoYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOmNhc2UgMjpjYXNlIDQ6cmV0dXJuIGIrMjUwO2Nhc2UgODpjYXNlIDE2OmNhc2UgMzI6Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gYis1RTM7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4tMTtjYXNlIDEzNDIxNzcyODpjYXNlIDI2ODQzNTQ1NjpjYXNlIDUzNjg3MDkxMjpjYXNlIDEwNzM3NDE4MjQ6cmV0dXJuLTE7ZGVmYXVsdDpyZXR1cm4tMX19XG5mdW5jdGlvbiB3YyhhLGIpe2Zvcih2YXIgYz1hLnN1c3BlbmRlZExhbmVzLGQ9YS5waW5nZWRMYW5lcyxlPWEuZXhwaXJhdGlvblRpbWVzLGY9YS5wZW5kaW5nTGFuZXM7MDxmOyl7dmFyIGc9MzEtb2MoZiksaD0xPDxnLGs9ZVtnXTtpZigtMT09PWspe2lmKDA9PT0oaCZjKXx8MCE9PShoJmQpKWVbZ109dmMoaCxiKX1lbHNlIGs8PWImJihhLmV4cGlyZWRMYW5lc3w9aCk7ZiY9fmh9fWZ1bmN0aW9uIHhjKGEpe2E9YS5wZW5kaW5nTGFuZXMmLTEwNzM3NDE4MjU7cmV0dXJuIDAhPT1hP2E6YSYxMDczNzQxODI0PzEwNzM3NDE4MjQ6MH1mdW5jdGlvbiB5Yygpe3ZhciBhPXJjO3JjPDw9MTswPT09KHJjJjQxOTQyNDApJiYocmM9NjQpO3JldHVybiBhfWZ1bmN0aW9uIHpjKGEpe2Zvcih2YXIgYj1bXSxjPTA7MzE+YztjKyspYi5wdXNoKGEpO3JldHVybiBifVxuZnVuY3Rpb24gQWMoYSxiLGMpe2EucGVuZGluZ0xhbmVzfD1iOzUzNjg3MDkxMiE9PWImJihhLnN1c3BlbmRlZExhbmVzPTAsYS5waW5nZWRMYW5lcz0wKTthPWEuZXZlbnRUaW1lcztiPTMxLW9jKGIpO2FbYl09Y31mdW5jdGlvbiBCYyhhLGIpe3ZhciBjPWEucGVuZGluZ0xhbmVzJn5iO2EucGVuZGluZ0xhbmVzPWI7YS5zdXNwZW5kZWRMYW5lcz0wO2EucGluZ2VkTGFuZXM9MDthLmV4cGlyZWRMYW5lcyY9YjthLm11dGFibGVSZWFkTGFuZXMmPWI7YS5lbnRhbmdsZWRMYW5lcyY9YjtiPWEuZW50YW5nbGVtZW50czt2YXIgZD1hLmV2ZW50VGltZXM7Zm9yKGE9YS5leHBpcmF0aW9uVGltZXM7MDxjOyl7dmFyIGU9MzEtb2MoYyksZj0xPDxlO2JbZV09MDtkW2VdPS0xO2FbZV09LTE7YyY9fmZ9fVxuZnVuY3Rpb24gQ2MoYSxiKXt2YXIgYz1hLmVudGFuZ2xlZExhbmVzfD1iO2ZvcihhPWEuZW50YW5nbGVtZW50cztjOyl7dmFyIGQ9MzEtb2MoYyksZT0xPDxkO2UmYnxhW2RdJmImJihhW2RdfD1iKTtjJj1+ZX19dmFyIEM9MDtmdW5jdGlvbiBEYyhhKXthJj0tYTtyZXR1cm4gMTxhPzQ8YT8wIT09KGEmMjY4NDM1NDU1KT8xNjo1MzY4NzA5MTI6NDoxfXZhciBFYyxGYyxHYyxIYyxJYyxKYz0hMSxLYz1bXSxMYz1udWxsLE1jPW51bGwsTmM9bnVsbCxPYz1uZXcgTWFwLFBjPW5ldyBNYXAsUWM9W10sUmM9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0XCIuc3BsaXQoXCIgXCIpO1xuZnVuY3Rpb24gU2MoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImZvY3VzaW5cIjpjYXNlIFwiZm9jdXNvdXRcIjpMYz1udWxsO2JyZWFrO2Nhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6TWM9bnVsbDticmVhaztjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcIm1vdXNlb3V0XCI6TmM9bnVsbDticmVhaztjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwicG9pbnRlcm91dFwiOk9jLmRlbGV0ZShiLnBvaW50ZXJJZCk7YnJlYWs7Y2FzZSBcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZSBcImxvc3Rwb2ludGVyY2FwdHVyZVwiOlBjLmRlbGV0ZShiLnBvaW50ZXJJZCl9fVxuZnVuY3Rpb24gVGMoYSxiLGMsZCxlLGYpe2lmKG51bGw9PT1hfHxhLm5hdGl2ZUV2ZW50IT09ZilyZXR1cm4gYT17YmxvY2tlZE9uOmIsZG9tRXZlbnROYW1lOmMsZXZlbnRTeXN0ZW1GbGFnczpkLG5hdGl2ZUV2ZW50OmYsdGFyZ2V0Q29udGFpbmVyczpbZV19LG51bGwhPT1iJiYoYj1DYihiKSxudWxsIT09YiYmRmMoYikpLGE7YS5ldmVudFN5c3RlbUZsYWdzfD1kO2I9YS50YXJnZXRDb250YWluZXJzO251bGwhPT1lJiYtMT09PWIuaW5kZXhPZihlKSYmYi5wdXNoKGUpO3JldHVybiBhfVxuZnVuY3Rpb24gVWMoYSxiLGMsZCxlKXtzd2l0Y2goYil7Y2FzZSBcImZvY3VzaW5cIjpyZXR1cm4gTGM9VGMoTGMsYSxiLGMsZCxlKSwhMDtjYXNlIFwiZHJhZ2VudGVyXCI6cmV0dXJuIE1jPVRjKE1jLGEsYixjLGQsZSksITA7Y2FzZSBcIm1vdXNlb3ZlclwiOnJldHVybiBOYz1UYyhOYyxhLGIsYyxkLGUpLCEwO2Nhc2UgXCJwb2ludGVyb3ZlclwiOnZhciBmPWUucG9pbnRlcklkO09jLnNldChmLFRjKE9jLmdldChmKXx8bnVsbCxhLGIsYyxkLGUpKTtyZXR1cm4hMDtjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gZj1lLnBvaW50ZXJJZCxQYy5zZXQoZixUYyhQYy5nZXQoZil8fG51bGwsYSxiLGMsZCxlKSksITB9cmV0dXJuITF9XG5mdW5jdGlvbiBWYyhhKXt2YXIgYj1XYyhhLnRhcmdldCk7aWYobnVsbCE9PWIpe3ZhciBjPVZiKGIpO2lmKG51bGwhPT1jKWlmKGI9Yy50YWcsMTM9PT1iKXtpZihiPVdiKGMpLG51bGwhPT1iKXthLmJsb2NrZWRPbj1iO0ljKGEucHJpb3JpdHksZnVuY3Rpb24oKXtHYyhjKX0pO3JldHVybn19ZWxzZSBpZigzPT09YiYmYy5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7YS5ibG9ja2VkT249Mz09PWMudGFnP2Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fWEuYmxvY2tlZE9uPW51bGx9XG5mdW5jdGlvbiBYYyhhKXtpZihudWxsIT09YS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBiPWEudGFyZ2V0Q29udGFpbmVyczswPGIubGVuZ3RoOyl7dmFyIGM9WWMoYS5kb21FdmVudE5hbWUsYS5ldmVudFN5c3RlbUZsYWdzLGJbMF0sYS5uYXRpdmVFdmVudCk7aWYobnVsbD09PWMpe2M9YS5uYXRpdmVFdmVudDt2YXIgZD1uZXcgYy5jb25zdHJ1Y3RvcihjLnR5cGUsYyk7d2I9ZDtjLnRhcmdldC5kaXNwYXRjaEV2ZW50KGQpO3diPW51bGx9ZWxzZSByZXR1cm4gYj1DYihjKSxudWxsIT09YiYmRmMoYiksYS5ibG9ja2VkT249YywhMTtiLnNoaWZ0KCl9cmV0dXJuITB9ZnVuY3Rpb24gWmMoYSxiLGMpe1hjKGEpJiZjLmRlbGV0ZShiKX1mdW5jdGlvbiAkYygpe0pjPSExO251bGwhPT1MYyYmWGMoTGMpJiYoTGM9bnVsbCk7bnVsbCE9PU1jJiZYYyhNYykmJihNYz1udWxsKTtudWxsIT09TmMmJlhjKE5jKSYmKE5jPW51bGwpO09jLmZvckVhY2goWmMpO1BjLmZvckVhY2goWmMpfVxuZnVuY3Rpb24gYWQoYSxiKXthLmJsb2NrZWRPbj09PWImJihhLmJsb2NrZWRPbj1udWxsLEpjfHwoSmM9ITAsY2EudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhjYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSwkYykpKX1cbmZ1bmN0aW9uIGJkKGEpe2Z1bmN0aW9uIGIoYil7cmV0dXJuIGFkKGIsYSl9aWYoMDxLYy5sZW5ndGgpe2FkKEtjWzBdLGEpO2Zvcih2YXIgYz0xO2M8S2MubGVuZ3RoO2MrKyl7dmFyIGQ9S2NbY107ZC5ibG9ja2VkT249PT1hJiYoZC5ibG9ja2VkT249bnVsbCl9fW51bGwhPT1MYyYmYWQoTGMsYSk7bnVsbCE9PU1jJiZhZChNYyxhKTtudWxsIT09TmMmJmFkKE5jLGEpO09jLmZvckVhY2goYik7UGMuZm9yRWFjaChiKTtmb3IoYz0wO2M8UWMubGVuZ3RoO2MrKylkPVFjW2NdLGQuYmxvY2tlZE9uPT09YSYmKGQuYmxvY2tlZE9uPW51bGwpO2Zvcig7MDxRYy5sZW5ndGgmJihjPVFjWzBdLG51bGw9PT1jLmJsb2NrZWRPbik7KVZjKGMpLG51bGw9PT1jLmJsb2NrZWRPbiYmUWMuc2hpZnQoKX12YXIgY2Q9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsZGQ9ITA7XG5mdW5jdGlvbiBlZChhLGIsYyxkKXt2YXIgZT1DLGY9Y2QudHJhbnNpdGlvbjtjZC50cmFuc2l0aW9uPW51bGw7dHJ5e0M9MSxmZChhLGIsYyxkKX1maW5hbGx5e0M9ZSxjZC50cmFuc2l0aW9uPWZ9fWZ1bmN0aW9uIGdkKGEsYixjLGQpe3ZhciBlPUMsZj1jZC50cmFuc2l0aW9uO2NkLnRyYW5zaXRpb249bnVsbDt0cnl7Qz00LGZkKGEsYixjLGQpfWZpbmFsbHl7Qz1lLGNkLnRyYW5zaXRpb249Zn19XG5mdW5jdGlvbiBmZChhLGIsYyxkKXtpZihkZCl7dmFyIGU9WWMoYSxiLGMsZCk7aWYobnVsbD09PWUpaGQoYSxiLGQsaWQsYyksU2MoYSxkKTtlbHNlIGlmKFVjKGUsYSxiLGMsZCkpZC5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKFNjKGEsZCksYiY0JiYtMTxSYy5pbmRleE9mKGEpKXtmb3IoO251bGwhPT1lOyl7dmFyIGY9Q2IoZSk7bnVsbCE9PWYmJkVjKGYpO2Y9WWMoYSxiLGMsZCk7bnVsbD09PWYmJmhkKGEsYixkLGlkLGMpO2lmKGY9PT1lKWJyZWFrO2U9Zn1udWxsIT09ZSYmZC5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIGhkKGEsYixkLG51bGwsYyl9fXZhciBpZD1udWxsO1xuZnVuY3Rpb24gWWMoYSxiLGMsZCl7aWQ9bnVsbDthPXhiKGQpO2E9V2MoYSk7aWYobnVsbCE9PWEpaWYoYj1WYihhKSxudWxsPT09YilhPW51bGw7ZWxzZSBpZihjPWIudGFnLDEzPT09Yyl7YT1XYihiKTtpZihudWxsIT09YSlyZXR1cm4gYTthPW51bGx9ZWxzZSBpZigzPT09Yyl7aWYoYi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZClyZXR1cm4gMz09PWIudGFnP2Iuc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDthPW51bGx9ZWxzZSBiIT09YSYmKGE9bnVsbCk7aWQ9YTtyZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIGpkKGEpe3N3aXRjaChhKXtjYXNlIFwiY2FuY2VsXCI6Y2FzZSBcImNsaWNrXCI6Y2FzZSBcImNsb3NlXCI6Y2FzZSBcImNvbnRleHRtZW51XCI6Y2FzZSBcImNvcHlcIjpjYXNlIFwiY3V0XCI6Y2FzZSBcImF1eGNsaWNrXCI6Y2FzZSBcImRibGNsaWNrXCI6Y2FzZSBcImRyYWdlbmRcIjpjYXNlIFwiZHJhZ3N0YXJ0XCI6Y2FzZSBcImRyb3BcIjpjYXNlIFwiZm9jdXNpblwiOmNhc2UgXCJmb2N1c291dFwiOmNhc2UgXCJpbnB1dFwiOmNhc2UgXCJpbnZhbGlkXCI6Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5cHJlc3NcIjpjYXNlIFwia2V5dXBcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNldXBcIjpjYXNlIFwicGFzdGVcIjpjYXNlIFwicGF1c2VcIjpjYXNlIFwicGxheVwiOmNhc2UgXCJwb2ludGVyY2FuY2VsXCI6Y2FzZSBcInBvaW50ZXJkb3duXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOmNhc2UgXCJyYXRlY2hhbmdlXCI6Y2FzZSBcInJlc2V0XCI6Y2FzZSBcInJlc2l6ZVwiOmNhc2UgXCJzZWVrZWRcIjpjYXNlIFwic3VibWl0XCI6Y2FzZSBcInRvdWNoY2FuY2VsXCI6Y2FzZSBcInRvdWNoZW5kXCI6Y2FzZSBcInRvdWNoc3RhcnRcIjpjYXNlIFwidm9sdW1lY2hhbmdlXCI6Y2FzZSBcImNoYW5nZVwiOmNhc2UgXCJzZWxlY3Rpb25jaGFuZ2VcIjpjYXNlIFwidGV4dElucHV0XCI6Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjpjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpjYXNlIFwiYmVmb3JlYmx1clwiOmNhc2UgXCJhZnRlcmJsdXJcIjpjYXNlIFwiYmVmb3JlaW5wdXRcIjpjYXNlIFwiYmx1clwiOmNhc2UgXCJmdWxsc2NyZWVuY2hhbmdlXCI6Y2FzZSBcImZvY3VzXCI6Y2FzZSBcImhhc2hjaGFuZ2VcIjpjYXNlIFwicG9wc3RhdGVcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInNlbGVjdHN0YXJ0XCI6cmV0dXJuIDE7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VudGVyXCI6Y2FzZSBcImRyYWdleGl0XCI6Y2FzZSBcImRyYWdsZWF2ZVwiOmNhc2UgXCJkcmFnb3ZlclwiOmNhc2UgXCJtb3VzZW1vdmVcIjpjYXNlIFwibW91c2VvdXRcIjpjYXNlIFwibW91c2VvdmVyXCI6Y2FzZSBcInBvaW50ZXJtb3ZlXCI6Y2FzZSBcInBvaW50ZXJvdXRcIjpjYXNlIFwicG9pbnRlcm92ZXJcIjpjYXNlIFwic2Nyb2xsXCI6Y2FzZSBcInRvZ2dsZVwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwid2hlZWxcIjpjYXNlIFwibW91c2VlbnRlclwiOmNhc2UgXCJtb3VzZWxlYXZlXCI6Y2FzZSBcInBvaW50ZXJlbnRlclwiOmNhc2UgXCJwb2ludGVybGVhdmVcIjpyZXR1cm4gNDtcbmNhc2UgXCJtZXNzYWdlXCI6c3dpdGNoKGVjKCkpe2Nhc2UgZmM6cmV0dXJuIDE7Y2FzZSBnYzpyZXR1cm4gNDtjYXNlIGhjOmNhc2UgaWM6cmV0dXJuIDE2O2Nhc2UgamM6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIGtkPW51bGwsbGQ9bnVsbCxtZD1udWxsO2Z1bmN0aW9uIG5kKCl7aWYobWQpcmV0dXJuIG1kO3ZhciBhLGI9bGQsYz1iLmxlbmd0aCxkLGU9XCJ2YWx1ZVwiaW4ga2Q/a2QudmFsdWU6a2QudGV4dENvbnRlbnQsZj1lLmxlbmd0aDtmb3IoYT0wO2E8YyYmYlthXT09PWVbYV07YSsrKTt2YXIgZz1jLWE7Zm9yKGQ9MTtkPD1nJiZiW2MtZF09PT1lW2YtZF07ZCsrKTtyZXR1cm4gbWQ9ZS5zbGljZShhLDE8ZD8xLWQ6dm9pZCAwKX1cbmZ1bmN0aW9uIG9kKGEpe3ZhciBiPWEua2V5Q29kZTtcImNoYXJDb2RlXCJpbiBhPyhhPWEuY2hhckNvZGUsMD09PWEmJjEzPT09YiYmKGE9MTMpKTphPWI7MTA9PT1hJiYoYT0xMyk7cmV0dXJuIDMyPD1hfHwxMz09PWE/YTowfWZ1bmN0aW9uIHBkKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWQoKXtyZXR1cm4hMX1cbmZ1bmN0aW9uIHJkKGEpe2Z1bmN0aW9uIGIoYixkLGUsZixnKXt0aGlzLl9yZWFjdE5hbWU9Yjt0aGlzLl90YXJnZXRJbnN0PWU7dGhpcy50eXBlPWQ7dGhpcy5uYXRpdmVFdmVudD1mO3RoaXMudGFyZ2V0PWc7dGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9YVtjXSx0aGlzW2NdPWI/YihmKTpmW2NdKTt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9Zi5kZWZhdWx0UHJldmVudGVkP2YuZGVmYXVsdFByZXZlbnRlZDohMT09PWYucmV0dXJuVmFsdWUpP3BkOnFkO3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cWQ7cmV0dXJuIHRoaXN9QShiLnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGE9dGhpcy5uYXRpdmVFdmVudDthJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPT10eXBlb2YgYS5yZXR1cm5WYWx1ZSYmXG4oYS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGQpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdGl2ZUV2ZW50O2EmJihhLnN0b3BQcm9wYWdhdGlvbj9hLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT09dHlwZW9mIGEuY2FuY2VsQnViYmxlJiYoYS5jYW5jZWxCdWJibGU9ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9cGQpfSxwZXJzaXN0OmZ1bmN0aW9uKCl7fSxpc1BlcnNpc3RlbnQ6cGR9KTtyZXR1cm4gYn1cbnZhciBzZD17ZXZlbnRQaGFzZTowLGJ1YmJsZXM6MCxjYW5jZWxhYmxlOjAsdGltZVN0YW1wOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVsdFByZXZlbnRlZDowLGlzVHJ1c3RlZDowfSx0ZD1yZChzZCksdWQ9QSh7fSxzZCx7dmlldzowLGRldGFpbDowfSksdmQ9cmQodWQpLHdkLHhkLHlkLEFkPUEoe30sdWQse3NjcmVlblg6MCxzY3JlZW5ZOjAsY2xpZW50WDowLGNsaWVudFk6MCxwYWdlWDowLHBhZ2VZOjAsY3RybEtleTowLHNoaWZ0S2V5OjAsYWx0S2V5OjAsbWV0YUtleTowLGdldE1vZGlmaWVyU3RhdGU6emQsYnV0dG9uOjAsYnV0dG9uczowLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWEucmVsYXRlZFRhcmdldD9hLmZyb21FbGVtZW50PT09YS5zcmNFbGVtZW50P2EudG9FbGVtZW50OmEuZnJvbUVsZW1lbnQ6YS5yZWxhdGVkVGFyZ2V0fSxtb3ZlbWVudFg6ZnVuY3Rpb24oYSl7aWYoXCJtb3ZlbWVudFhcImluXG5hKXJldHVybiBhLm1vdmVtZW50WDthIT09eWQmJih5ZCYmXCJtb3VzZW1vdmVcIj09PWEudHlwZT8od2Q9YS5zY3JlZW5YLXlkLnNjcmVlblgseGQ9YS5zY3JlZW5ZLXlkLnNjcmVlblkpOnhkPXdkPTAseWQ9YSk7cmV0dXJuIHdkfSxtb3ZlbWVudFk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJtb3ZlbWVudFlcImluIGE/YS5tb3ZlbWVudFk6eGR9fSksQmQ9cmQoQWQpLENkPUEoe30sQWQse2RhdGFUcmFuc2ZlcjowfSksRGQ9cmQoQ2QpLEVkPUEoe30sdWQse3JlbGF0ZWRUYXJnZXQ6MH0pLEZkPXJkKEVkKSxHZD1BKHt9LHNkLHthbmltYXRpb25OYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxIZD1yZChHZCksSWQ9QSh7fSxzZCx7Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5cImNsaXBib2FyZERhdGFcImluIGE/YS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX0pLEpkPXJkKElkKSxLZD1BKHt9LHNkLHtkYXRhOjB9KSxMZD1yZChLZCksTWQ9e0VzYzpcIkVzY2FwZVwiLFxuU3BhY2ViYXI6XCIgXCIsTGVmdDpcIkFycm93TGVmdFwiLFVwOlwiQXJyb3dVcFwiLFJpZ2h0OlwiQXJyb3dSaWdodFwiLERvd246XCJBcnJvd0Rvd25cIixEZWw6XCJEZWxldGVcIixXaW46XCJPU1wiLE1lbnU6XCJDb250ZXh0TWVudVwiLEFwcHM6XCJDb250ZXh0TWVudVwiLFNjcm9sbDpcIlNjcm9sbExvY2tcIixNb3pQcmludGFibGVLZXk6XCJVbmlkZW50aWZpZWRcIn0sTmQ9ezg6XCJCYWNrc3BhY2VcIiw5OlwiVGFiXCIsMTI6XCJDbGVhclwiLDEzOlwiRW50ZXJcIiwxNjpcIlNoaWZ0XCIsMTc6XCJDb250cm9sXCIsMTg6XCJBbHRcIiwxOTpcIlBhdXNlXCIsMjA6XCJDYXBzTG9ja1wiLDI3OlwiRXNjYXBlXCIsMzI6XCIgXCIsMzM6XCJQYWdlVXBcIiwzNDpcIlBhZ2VEb3duXCIsMzU6XCJFbmRcIiwzNjpcIkhvbWVcIiwzNzpcIkFycm93TGVmdFwiLDM4OlwiQXJyb3dVcFwiLDM5OlwiQXJyb3dSaWdodFwiLDQwOlwiQXJyb3dEb3duXCIsNDU6XCJJbnNlcnRcIiw0NjpcIkRlbGV0ZVwiLDExMjpcIkYxXCIsMTEzOlwiRjJcIiwxMTQ6XCJGM1wiLDExNTpcIkY0XCIsMTE2OlwiRjVcIiwxMTc6XCJGNlwiLDExODpcIkY3XCIsXG4xMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LE9kPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiBQZChhKXt2YXIgYj10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiBiLmdldE1vZGlmaWVyU3RhdGU/Yi5nZXRNb2RpZmllclN0YXRlKGEpOihhPU9kW2FdKT8hIWJbYV06ITF9ZnVuY3Rpb24gemQoKXtyZXR1cm4gUGR9XG52YXIgUWQ9QSh7fSx1ZCx7a2V5OmZ1bmN0aW9uKGEpe2lmKGEua2V5KXt2YXIgYj1NZFthLmtleV18fGEua2V5O2lmKFwiVW5pZGVudGlmaWVkXCIhPT1iKXJldHVybiBifXJldHVyblwia2V5cHJlc3NcIj09PWEudHlwZT8oYT1vZChhKSwxMz09PWE/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoYSkpOlwia2V5ZG93blwiPT09YS50eXBlfHxcImtleXVwXCI9PT1hLnR5cGU/TmRbYS5rZXlDb2RlXXx8XCJVbmlkZW50aWZpZWRcIjpcIlwifSxjb2RlOjAsbG9jYXRpb246MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAscmVwZWF0OjAsbG9jYWxlOjAsZ2V0TW9kaWZpZXJTdGF0ZTp6ZCxjaGFyQ29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1hLnR5cGU/b2QoYSk6MH0sa2V5Q29kZTpmdW5jdGlvbihhKXtyZXR1cm5cImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihhKXtyZXR1cm5cImtleXByZXNzXCI9PT1cbmEudHlwZT9vZChhKTpcImtleWRvd25cIj09PWEudHlwZXx8XCJrZXl1cFwiPT09YS50eXBlP2Eua2V5Q29kZTowfX0pLFJkPXJkKFFkKSxTZD1BKHt9LEFkLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLFRkPXJkKFNkKSxVZD1BKHt9LHVkLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6emR9KSxWZD1yZChVZCksV2Q9QSh7fSxzZCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxYZD1yZChXZCksWWQ9QSh7fSxBZCx7ZGVsdGFYOmZ1bmN0aW9uKGEpe3JldHVyblwiZGVsdGFYXCJpbiBhP2EuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGE/LWEud2hlZWxEZWx0YVg6MH0sXG5kZWx0YVk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJkZWx0YVlcImluIGE/YS5kZWx0YVk6XCJ3aGVlbERlbHRhWVwiaW4gYT8tYS53aGVlbERlbHRhWTpcIndoZWVsRGVsdGFcImluIGE/LWEud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLFpkPXJkKFlkKSwkZD1bOSwxMywyNywzMl0sYWU9aWEmJlwiQ29tcG9zaXRpb25FdmVudFwiaW4gd2luZG93LGJlPW51bGw7aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmKGJlPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGNlPWlhJiZcIlRleHRFdmVudFwiaW4gd2luZG93JiYhYmUsZGU9aWEmJighYWV8fGJlJiY4PGJlJiYxMT49YmUpLGVlPVN0cmluZy5mcm9tQ2hhckNvZGUoMzIpLGZlPSExO1xuZnVuY3Rpb24gZ2UoYSxiKXtzd2l0Y2goYSl7Y2FzZSBcImtleXVwXCI6cmV0dXJuLTEhPT0kZC5pbmRleE9mKGIua2V5Q29kZSk7Y2FzZSBcImtleWRvd25cIjpyZXR1cm4gMjI5IT09Yi5rZXlDb2RlO2Nhc2UgXCJrZXlwcmVzc1wiOmNhc2UgXCJtb3VzZWRvd25cIjpjYXNlIFwiZm9jdXNvdXRcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBoZShhKXthPWEuZGV0YWlsO3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmXCJkYXRhXCJpbiBhP2EuZGF0YTpudWxsfXZhciBpZT0hMTtmdW5jdGlvbiBqZShhLGIpe3N3aXRjaChhKXtjYXNlIFwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gaGUoYik7Y2FzZSBcImtleXByZXNzXCI6aWYoMzIhPT1iLndoaWNoKXJldHVybiBudWxsO2ZlPSEwO3JldHVybiBlZTtjYXNlIFwidGV4dElucHV0XCI6cmV0dXJuIGE9Yi5kYXRhLGE9PT1lZSYmZmU/bnVsbDphO2RlZmF1bHQ6cmV0dXJuIG51bGx9fVxuZnVuY3Rpb24ga2UoYSxiKXtpZihpZSlyZXR1cm5cImNvbXBvc2l0aW9uZW5kXCI9PT1hfHwhYWUmJmdlKGEsYik/KGE9bmQoKSxtZD1sZD1rZD1udWxsLGllPSExLGEpOm51bGw7c3dpdGNoKGEpe2Nhc2UgXCJwYXN0ZVwiOnJldHVybiBudWxsO2Nhc2UgXCJrZXlwcmVzc1wiOmlmKCEoYi5jdHJsS2V5fHxiLmFsdEtleXx8Yi5tZXRhS2V5KXx8Yi5jdHJsS2V5JiZiLmFsdEtleSl7aWYoYi5jaGFyJiYxPGIuY2hhci5sZW5ndGgpcmV0dXJuIGIuY2hhcjtpZihiLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGIud2hpY2gpfXJldHVybiBudWxsO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBkZSYmXCJrb1wiIT09Yi5sb2NhbGU/bnVsbDpiLmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19XG52YXIgbGU9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsXCJkYXRldGltZS1sb2NhbFwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gbWUoYSl7dmFyIGI9YSYmYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVyblwiaW5wdXRcIj09PWI/ISFsZVthLnR5cGVdOlwidGV4dGFyZWFcIj09PWI/ITA6ITF9ZnVuY3Rpb24gbmUoYSxiLGMsZCl7RWIoZCk7Yj1vZShiLFwib25DaGFuZ2VcIik7MDxiLmxlbmd0aCYmKGM9bmV3IHRkKFwib25DaGFuZ2VcIixcImNoYW5nZVwiLG51bGwsYyxkKSxhLnB1c2goe2V2ZW50OmMsbGlzdGVuZXJzOmJ9KSl9dmFyIHBlPW51bGwscWU9bnVsbDtmdW5jdGlvbiByZShhKXtzZShhLDApfWZ1bmN0aW9uIHRlKGEpe3ZhciBiPXVlKGEpO2lmKFdhKGIpKXJldHVybiBhfVxuZnVuY3Rpb24gdmUoYSxiKXtpZihcImNoYW5nZVwiPT09YSlyZXR1cm4gYn12YXIgd2U9ITE7aWYoaWEpe3ZhciB4ZTtpZihpYSl7dmFyIHllPVwib25pbnB1dFwiaW4gZG9jdW1lbnQ7aWYoIXllKXt2YXIgemU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt6ZS5zZXRBdHRyaWJ1dGUoXCJvbmlucHV0XCIsXCJyZXR1cm47XCIpO3llPVwiZnVuY3Rpb25cIj09PXR5cGVvZiB6ZS5vbmlucHV0fXhlPXllfWVsc2UgeGU9ITE7d2U9eGUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gQWUoKXtwZSYmKHBlLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSxxZT1wZT1udWxsKX1mdW5jdGlvbiBCZShhKXtpZihcInZhbHVlXCI9PT1hLnByb3BlcnR5TmFtZSYmdGUocWUpKXt2YXIgYj1bXTtuZShiLHFlLGEseGIoYSkpO0piKHJlLGIpfX1cbmZ1bmN0aW9uIENlKGEsYixjKXtcImZvY3VzaW5cIj09PWE/KEFlKCkscGU9YixxZT1jLHBlLmF0dGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLEJlKSk6XCJmb2N1c291dFwiPT09YSYmQWUoKX1mdW5jdGlvbiBEZShhKXtpZihcInNlbGVjdGlvbmNoYW5nZVwiPT09YXx8XCJrZXl1cFwiPT09YXx8XCJrZXlkb3duXCI9PT1hKXJldHVybiB0ZShxZSl9ZnVuY3Rpb24gRWUoYSxiKXtpZihcImNsaWNrXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBGZShhLGIpe2lmKFwiaW5wdXRcIj09PWF8fFwiY2hhbmdlXCI9PT1hKXJldHVybiB0ZShiKX1mdW5jdGlvbiBHZShhLGIpe3JldHVybiBhPT09YiYmKDAhPT1hfHwxL2E9PT0xL2IpfHxhIT09YSYmYiE9PWJ9dmFyIEhlPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOkdlO1xuZnVuY3Rpb24gSWUoYSxiKXtpZihIZShhLGIpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYXx8bnVsbD09PWF8fFwib2JqZWN0XCIhPT10eXBlb2YgYnx8bnVsbD09PWIpcmV0dXJuITE7dmFyIGM9T2JqZWN0LmtleXMoYSksZD1PYmplY3Qua2V5cyhiKTtpZihjLmxlbmd0aCE9PWQubGVuZ3RoKXJldHVybiExO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07aWYoIWphLmNhbGwoYixlKXx8IUhlKGFbZV0sYltlXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gSmUoYSl7Zm9yKDthJiZhLmZpcnN0Q2hpbGQ7KWE9YS5maXJzdENoaWxkO3JldHVybiBhfVxuZnVuY3Rpb24gS2UoYSxiKXt2YXIgYz1KZShhKTthPTA7Zm9yKHZhciBkO2M7KXtpZigzPT09Yy5ub2RlVHlwZSl7ZD1hK2MudGV4dENvbnRlbnQubGVuZ3RoO2lmKGE8PWImJmQ+PWIpcmV0dXJue25vZGU6YyxvZmZzZXQ6Yi1hfTthPWR9YTp7Zm9yKDtjOyl7aWYoYy5uZXh0U2libGluZyl7Yz1jLm5leHRTaWJsaW5nO2JyZWFrIGF9Yz1jLnBhcmVudE5vZGV9Yz12b2lkIDB9Yz1KZShjKX19ZnVuY3Rpb24gTGUoYSxiKXtyZXR1cm4gYSYmYj9hPT09Yj8hMDphJiYzPT09YS5ub2RlVHlwZT8hMTpiJiYzPT09Yi5ub2RlVHlwZT9MZShhLGIucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gYT9hLmNvbnRhaW5zKGIpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24/ISEoYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNik6ITE6ITF9XG5mdW5jdGlvbiBNZSgpe2Zvcih2YXIgYT13aW5kb3csYj1YYSgpO2IgaW5zdGFuY2VvZiBhLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBjPVwic3RyaW5nXCI9PT10eXBlb2YgYi5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZCl7Yz0hMX1pZihjKWE9Yi5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7Yj1YYShhLmRvY3VtZW50KX1yZXR1cm4gYn1mdW5jdGlvbiBOZShhKXt2YXIgYj1hJiZhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGImJihcImlucHV0XCI9PT1iJiYoXCJ0ZXh0XCI9PT1hLnR5cGV8fFwic2VhcmNoXCI9PT1hLnR5cGV8fFwidGVsXCI9PT1hLnR5cGV8fFwidXJsXCI9PT1hLnR5cGV8fFwicGFzc3dvcmRcIj09PWEudHlwZSl8fFwidGV4dGFyZWFcIj09PWJ8fFwidHJ1ZVwiPT09YS5jb250ZW50RWRpdGFibGUpfVxuZnVuY3Rpb24gT2UoYSl7dmFyIGI9TWUoKSxjPWEuZm9jdXNlZEVsZW0sZD1hLnNlbGVjdGlvblJhbmdlO2lmKGIhPT1jJiZjJiZjLm93bmVyRG9jdW1lbnQmJkxlKGMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYykpe2lmKG51bGwhPT1kJiZOZShjKSlpZihiPWQuc3RhcnQsYT1kLmVuZCx2b2lkIDA9PT1hJiYoYT1iKSxcInNlbGVjdGlvblN0YXJ0XCJpbiBjKWMuc2VsZWN0aW9uU3RhcnQ9YixjLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihhLGMudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGE9KGI9Yy5vd25lckRvY3VtZW50fHxkb2N1bWVudCkmJmIuZGVmYXVsdFZpZXd8fHdpbmRvdyxhLmdldFNlbGVjdGlvbil7YT1hLmdldFNlbGVjdGlvbigpO3ZhciBlPWMudGV4dENvbnRlbnQubGVuZ3RoLGY9TWF0aC5taW4oZC5zdGFydCxlKTtkPXZvaWQgMD09PWQuZW5kP2Y6TWF0aC5taW4oZC5lbmQsZSk7IWEuZXh0ZW5kJiZmPmQmJihlPWQsZD1mLGY9ZSk7ZT1LZShjLGYpO3ZhciBnPUtlKGMsXG5kKTtlJiZnJiYoMSE9PWEucmFuZ2VDb3VudHx8YS5hbmNob3JOb2RlIT09ZS5ub2RlfHxhLmFuY2hvck9mZnNldCE9PWUub2Zmc2V0fHxhLmZvY3VzTm9kZSE9PWcubm9kZXx8YS5mb2N1c09mZnNldCE9PWcub2Zmc2V0KSYmKGI9Yi5jcmVhdGVSYW5nZSgpLGIuc2V0U3RhcnQoZS5ub2RlLGUub2Zmc2V0KSxhLnJlbW92ZUFsbFJhbmdlcygpLGY+ZD8oYS5hZGRSYW5nZShiKSxhLmV4dGVuZChnLm5vZGUsZy5vZmZzZXQpKTooYi5zZXRFbmQoZy5ub2RlLGcub2Zmc2V0KSxhLmFkZFJhbmdlKGIpKSl9Yj1bXTtmb3IoYT1jO2E9YS5wYXJlbnROb2RlOykxPT09YS5ub2RlVHlwZSYmYi5wdXNoKHtlbGVtZW50OmEsbGVmdDphLnNjcm9sbExlZnQsdG9wOmEuc2Nyb2xsVG9wfSk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGMuZm9jdXMmJmMuZm9jdXMoKTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWE9YltjXSxhLmVsZW1lbnQuc2Nyb2xsTGVmdD1hLmxlZnQsYS5lbGVtZW50LnNjcm9sbFRvcD1hLnRvcH19XG52YXIgUGU9aWEmJlwiZG9jdW1lbnRNb2RlXCJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSxRZT1udWxsLFJlPW51bGwsU2U9bnVsbCxUZT0hMTtcbmZ1bmN0aW9uIFVlKGEsYixjKXt2YXIgZD1jLndpbmRvdz09PWM/Yy5kb2N1bWVudDo5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudDtUZXx8bnVsbD09UWV8fFFlIT09WGEoZCl8fChkPVFlLFwic2VsZWN0aW9uU3RhcnRcImluIGQmJk5lKGQpP2Q9e3N0YXJ0OmQuc2VsZWN0aW9uU3RhcnQsZW5kOmQuc2VsZWN0aW9uRW5kfTooZD0oZC5vd25lckRvY3VtZW50JiZkLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uKCksZD17YW5jaG9yTm9kZTpkLmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OmQuYW5jaG9yT2Zmc2V0LGZvY3VzTm9kZTpkLmZvY3VzTm9kZSxmb2N1c09mZnNldDpkLmZvY3VzT2Zmc2V0fSksU2UmJkllKFNlLGQpfHwoU2U9ZCxkPW9lKFJlLFwib25TZWxlY3RcIiksMDxkLmxlbmd0aCYmKGI9bmV3IHRkKFwib25TZWxlY3RcIixcInNlbGVjdFwiLG51bGwsYixjKSxhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmR9KSxiLnRhcmdldD1RZSkpKX1cbmZ1bmN0aW9uIFZlKGEsYil7dmFyIGM9e307Y1thLnRvTG93ZXJDYXNlKCldPWIudG9Mb3dlckNhc2UoKTtjW1wiV2Via2l0XCIrYV09XCJ3ZWJraXRcIitiO2NbXCJNb3pcIithXT1cIm1velwiK2I7cmV0dXJuIGN9dmFyIFdlPXthbmltYXRpb25lbmQ6VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkVuZFwiKSxhbmltYXRpb25pdGVyYXRpb246VmUoXCJBbmltYXRpb25cIixcIkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxhbmltYXRpb25zdGFydDpWZShcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmVuZDpWZShcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LFhlPXt9LFllPXt9O1xuaWEmJihZZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBXZS5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBXZS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBXZS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO2Z1bmN0aW9uIFplKGEpe2lmKFhlW2FdKXJldHVybiBYZVthXTtpZighV2VbYV0pcmV0dXJuIGE7dmFyIGI9V2VbYV0sYztmb3IoYyBpbiBiKWlmKGIuaGFzT3duUHJvcGVydHkoYykmJmMgaW4gWWUpcmV0dXJuIFhlW2FdPWJbY107cmV0dXJuIGF9dmFyICRlPVplKFwiYW5pbWF0aW9uZW5kXCIpLGFmPVplKFwiYW5pbWF0aW9uaXRlcmF0aW9uXCIpLGJmPVplKFwiYW5pbWF0aW9uc3RhcnRcIiksY2Y9WmUoXCJ0cmFuc2l0aW9uZW5kXCIpLGRmPW5ldyBNYXAsZWY9XCJhYm9ydCBhdXhDbGljayBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbFwiLnNwbGl0KFwiIFwiKTtcbmZ1bmN0aW9uIGZmKGEsYil7ZGYuc2V0KGEsYik7ZmEoYixbYV0pfWZvcih2YXIgZ2Y9MDtnZjxlZi5sZW5ndGg7Z2YrKyl7dmFyIGhmPWVmW2dmXSxqZj1oZi50b0xvd2VyQ2FzZSgpLGtmPWhmWzBdLnRvVXBwZXJDYXNlKCkraGYuc2xpY2UoMSk7ZmYoamYsXCJvblwiK2tmKX1mZigkZSxcIm9uQW5pbWF0aW9uRW5kXCIpO2ZmKGFmLFwib25BbmltYXRpb25JdGVyYXRpb25cIik7ZmYoYmYsXCJvbkFuaW1hdGlvblN0YXJ0XCIpO2ZmKFwiZGJsY2xpY2tcIixcIm9uRG91YmxlQ2xpY2tcIik7ZmYoXCJmb2N1c2luXCIsXCJvbkZvY3VzXCIpO2ZmKFwiZm9jdXNvdXRcIixcIm9uQmx1clwiKTtmZihjZixcIm9uVHJhbnNpdGlvbkVuZFwiKTtoYShcIm9uTW91c2VFbnRlclwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pO2hhKFwib25Nb3VzZUxlYXZlXCIsW1wibW91c2VvdXRcIixcIm1vdXNlb3ZlclwiXSk7aGEoXCJvblBvaW50ZXJFbnRlclwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKTtcbmhhKFwib25Qb2ludGVyTGVhdmVcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSk7ZmEoXCJvbkNoYW5nZVwiLFwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2VcIi5zcGxpdChcIiBcIikpO2ZhKFwib25TZWxlY3RcIixcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSk7ZmEoXCJvbkJlZm9yZUlucHV0XCIsW1wiY29tcG9zaXRpb25lbmRcIixcImtleXByZXNzXCIsXCJ0ZXh0SW5wdXRcIixcInBhc3RlXCJdKTtmYShcIm9uQ29tcG9zaXRpb25FbmRcIixcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTtmYShcIm9uQ29tcG9zaXRpb25TdGFydFwiLFwiY29tcG9zaXRpb25zdGFydCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93blwiLnNwbGl0KFwiIFwiKSk7XG5mYShcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTt2YXIgbGY9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxtZj1uZXcgU2V0KFwiY2FuY2VsIGNsb3NlIGludmFsaWQgbG9hZCBzY3JvbGwgdG9nZ2xlXCIuc3BsaXQoXCIgXCIpLmNvbmNhdChsZikpO1xuZnVuY3Rpb24gbmYoYSxiLGMpe3ZhciBkPWEudHlwZXx8XCJ1bmtub3duLWV2ZW50XCI7YS5jdXJyZW50VGFyZ2V0PWM7VWIoZCxiLHZvaWQgMCxhKTthLmN1cnJlbnRUYXJnZXQ9bnVsbH1cbmZ1bmN0aW9uIHNlKGEsYil7Yj0wIT09KGImNCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10sZT1kLmV2ZW50O2Q9ZC5saXN0ZW5lcnM7YTp7dmFyIGY9dm9pZCAwO2lmKGIpZm9yKHZhciBnPWQubGVuZ3RoLTE7MDw9ZztnLS0pe3ZhciBoPWRbZ10saz1oLmluc3RhbmNlLGw9aC5jdXJyZW50VGFyZ2V0O2g9aC5saXN0ZW5lcjtpZihrIT09ZiYmZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGE7bmYoZSxoLGwpO2Y9a31lbHNlIGZvcihnPTA7ZzxkLmxlbmd0aDtnKyspe2g9ZFtnXTtrPWguaW5zdGFuY2U7bD1oLmN1cnJlbnRUYXJnZXQ7aD1oLmxpc3RlbmVyO2lmKGshPT1mJiZlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgYTtuZihlLGgsbCk7Zj1rfX19aWYoUWIpdGhyb3cgYT1SYixRYj0hMSxSYj1udWxsLGE7fVxuZnVuY3Rpb24gRChhLGIpe3ZhciBjPWJbb2ZdO3ZvaWQgMD09PWMmJihjPWJbb2ZdPW5ldyBTZXQpO3ZhciBkPWErXCJfX2J1YmJsZVwiO2MuaGFzKGQpfHwocGYoYixhLDIsITEpLGMuYWRkKGQpKX1mdW5jdGlvbiBxZihhLGIsYyl7dmFyIGQ9MDtiJiYoZHw9NCk7cGYoYyxhLGQsYil9dmFyIHJmPVwiX3JlYWN0TGlzdGVuaW5nXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gc2YoYSl7aWYoIWFbcmZdKXthW3JmXT0hMDtkYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe1wic2VsZWN0aW9uY2hhbmdlXCIhPT1iJiYobWYuaGFzKGIpfHxxZihiLCExLGEpLHFmKGIsITAsYSkpfSk7dmFyIGI9OT09PWEubm9kZVR5cGU/YTphLm93bmVyRG9jdW1lbnQ7bnVsbD09PWJ8fGJbcmZdfHwoYltyZl09ITAscWYoXCJzZWxlY3Rpb25jaGFuZ2VcIiwhMSxiKSl9fVxuZnVuY3Rpb24gcGYoYSxiLGMsZCl7c3dpdGNoKGpkKGIpKXtjYXNlIDE6dmFyIGU9ZWQ7YnJlYWs7Y2FzZSA0OmU9Z2Q7YnJlYWs7ZGVmYXVsdDplPWZkfWM9ZS5iaW5kKG51bGwsYixjLGEpO2U9dm9pZCAwOyFMYnx8XCJ0b3VjaHN0YXJ0XCIhPT1iJiZcInRvdWNobW92ZVwiIT09YiYmXCJ3aGVlbFwiIT09Ynx8KGU9ITApO2Q/dm9pZCAwIT09ZT9hLmFkZEV2ZW50TGlzdGVuZXIoYixjLHtjYXB0dXJlOiEwLHBhc3NpdmU6ZX0pOmEuYWRkRXZlbnRMaXN0ZW5lcihiLGMsITApOnZvaWQgMCE9PWU/YS5hZGRFdmVudExpc3RlbmVyKGIsYyx7cGFzc2l2ZTplfSk6YS5hZGRFdmVudExpc3RlbmVyKGIsYywhMSl9XG5mdW5jdGlvbiBoZChhLGIsYyxkLGUpe3ZhciBmPWQ7aWYoMD09PShiJjEpJiYwPT09KGImMikmJm51bGwhPT1kKWE6Zm9yKDs7KXtpZihudWxsPT09ZClyZXR1cm47dmFyIGc9ZC50YWc7aWYoMz09PWd8fDQ9PT1nKXt2YXIgaD1kLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO2lmKGg9PT1lfHw4PT09aC5ub2RlVHlwZSYmaC5wYXJlbnROb2RlPT09ZSlicmVhaztpZig0PT09Zylmb3IoZz1kLnJldHVybjtudWxsIT09Zzspe3ZhciBrPWcudGFnO2lmKDM9PT1rfHw0PT09aylpZihrPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8saz09PWV8fDg9PT1rLm5vZGVUeXBlJiZrLnBhcmVudE5vZGU9PT1lKXJldHVybjtnPWcucmV0dXJufWZvcig7bnVsbCE9PWg7KXtnPVdjKGgpO2lmKG51bGw9PT1nKXJldHVybjtrPWcudGFnO2lmKDU9PT1rfHw2PT09ayl7ZD1mPWc7Y29udGludWUgYX1oPWgucGFyZW50Tm9kZX19ZD1kLnJldHVybn1KYihmdW5jdGlvbigpe3ZhciBkPWYsZT14YihjKSxnPVtdO1xuYTp7dmFyIGg9ZGYuZ2V0KGEpO2lmKHZvaWQgMCE9PWgpe3ZhciBrPXRkLG49YTtzd2l0Y2goYSl7Y2FzZSBcImtleXByZXNzXCI6aWYoMD09PW9kKGMpKWJyZWFrIGE7Y2FzZSBcImtleWRvd25cIjpjYXNlIFwia2V5dXBcIjprPVJkO2JyZWFrO2Nhc2UgXCJmb2N1c2luXCI6bj1cImZvY3VzXCI7az1GZDticmVhaztjYXNlIFwiZm9jdXNvdXRcIjpuPVwiYmx1clwiO2s9RmQ7YnJlYWs7Y2FzZSBcImJlZm9yZWJsdXJcIjpjYXNlIFwiYWZ0ZXJibHVyXCI6az1GZDticmVhaztjYXNlIFwiY2xpY2tcIjppZigyPT09Yy5idXR0b24pYnJlYWsgYTtjYXNlIFwiYXV4Y2xpY2tcIjpjYXNlIFwiZGJsY2xpY2tcIjpjYXNlIFwibW91c2Vkb3duXCI6Y2FzZSBcIm1vdXNlbW92ZVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcIm1vdXNlb3V0XCI6Y2FzZSBcIm1vdXNlb3ZlclwiOmNhc2UgXCJjb250ZXh0bWVudVwiOms9QmQ7YnJlYWs7Y2FzZSBcImRyYWdcIjpjYXNlIFwiZHJhZ2VuZFwiOmNhc2UgXCJkcmFnZW50ZXJcIjpjYXNlIFwiZHJhZ2V4aXRcIjpjYXNlIFwiZHJhZ2xlYXZlXCI6Y2FzZSBcImRyYWdvdmVyXCI6Y2FzZSBcImRyYWdzdGFydFwiOmNhc2UgXCJkcm9wXCI6az1cbkRkO2JyZWFrO2Nhc2UgXCJ0b3VjaGNhbmNlbFwiOmNhc2UgXCJ0b3VjaGVuZFwiOmNhc2UgXCJ0b3VjaG1vdmVcIjpjYXNlIFwidG91Y2hzdGFydFwiOms9VmQ7YnJlYWs7Y2FzZSAkZTpjYXNlIGFmOmNhc2UgYmY6az1IZDticmVhaztjYXNlIGNmOms9WGQ7YnJlYWs7Y2FzZSBcInNjcm9sbFwiOms9dmQ7YnJlYWs7Y2FzZSBcIndoZWVsXCI6az1aZDticmVhaztjYXNlIFwiY29weVwiOmNhc2UgXCJjdXRcIjpjYXNlIFwicGFzdGVcIjprPUpkO2JyZWFrO2Nhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpjYXNlIFwicG9pbnRlcmNhbmNlbFwiOmNhc2UgXCJwb2ludGVyZG93blwiOmNhc2UgXCJwb2ludGVybW92ZVwiOmNhc2UgXCJwb2ludGVyb3V0XCI6Y2FzZSBcInBvaW50ZXJvdmVyXCI6Y2FzZSBcInBvaW50ZXJ1cFwiOms9VGR9dmFyIHQ9MCE9PShiJjQpLEo9IXQmJlwic2Nyb2xsXCI9PT1hLHg9dD9udWxsIT09aD9oK1wiQ2FwdHVyZVwiOm51bGw6aDt0PVtdO2Zvcih2YXIgdz1kLHU7bnVsbCE9PVxudzspe3U9dzt2YXIgRj11LnN0YXRlTm9kZTs1PT09dS50YWcmJm51bGwhPT1GJiYodT1GLG51bGwhPT14JiYoRj1LYih3LHgpLG51bGwhPUYmJnQucHVzaCh0Zih3LEYsdSkpKSk7aWYoSilicmVhazt3PXcucmV0dXJufTA8dC5sZW5ndGgmJihoPW5ldyBrKGgsbixudWxsLGMsZSksZy5wdXNoKHtldmVudDpoLGxpc3RlbmVyczp0fSkpfX1pZigwPT09KGImNykpe2E6e2g9XCJtb3VzZW92ZXJcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWE7az1cIm1vdXNlb3V0XCI9PT1hfHxcInBvaW50ZXJvdXRcIj09PWE7aWYoaCYmYyE9PXdiJiYobj1jLnJlbGF0ZWRUYXJnZXR8fGMuZnJvbUVsZW1lbnQpJiYoV2Mobil8fG5bdWZdKSlicmVhayBhO2lmKGt8fGgpe2g9ZS53aW5kb3c9PT1lP2U6KGg9ZS5vd25lckRvY3VtZW50KT9oLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvdzp3aW5kb3c7aWYoayl7aWYobj1jLnJlbGF0ZWRUYXJnZXR8fGMudG9FbGVtZW50LGs9ZCxuPW4/V2Mobik6bnVsbCxudWxsIT09XG5uJiYoSj1WYihuKSxuIT09Snx8NSE9PW4udGFnJiY2IT09bi50YWcpKW49bnVsbH1lbHNlIGs9bnVsbCxuPWQ7aWYoayE9PW4pe3Q9QmQ7Rj1cIm9uTW91c2VMZWF2ZVwiO3g9XCJvbk1vdXNlRW50ZXJcIjt3PVwibW91c2VcIjtpZihcInBvaW50ZXJvdXRcIj09PWF8fFwicG9pbnRlcm92ZXJcIj09PWEpdD1UZCxGPVwib25Qb2ludGVyTGVhdmVcIix4PVwib25Qb2ludGVyRW50ZXJcIix3PVwicG9pbnRlclwiO0o9bnVsbD09az9oOnVlKGspO3U9bnVsbD09bj9oOnVlKG4pO2g9bmV3IHQoRix3K1wibGVhdmVcIixrLGMsZSk7aC50YXJnZXQ9SjtoLnJlbGF0ZWRUYXJnZXQ9dTtGPW51bGw7V2MoZSk9PT1kJiYodD1uZXcgdCh4LHcrXCJlbnRlclwiLG4sYyxlKSx0LnRhcmdldD11LHQucmVsYXRlZFRhcmdldD1KLEY9dCk7Sj1GO2lmKGsmJm4pYjp7dD1rO3g9bjt3PTA7Zm9yKHU9dDt1O3U9dmYodSkpdysrO3U9MDtmb3IoRj14O0Y7Rj12ZihGKSl1Kys7Zm9yKDswPHctdTspdD12Zih0KSx3LS07Zm9yKDswPHUtdzspeD1cbnZmKHgpLHUtLTtmb3IoO3ctLTspe2lmKHQ9PT14fHxudWxsIT09eCYmdD09PXguYWx0ZXJuYXRlKWJyZWFrIGI7dD12Zih0KTt4PXZmKHgpfXQ9bnVsbH1lbHNlIHQ9bnVsbDtudWxsIT09ayYmd2YoZyxoLGssdCwhMSk7bnVsbCE9PW4mJm51bGwhPT1KJiZ3ZihnLEosbix0LCEwKX19fWE6e2g9ZD91ZShkKTp3aW5kb3c7az1oLm5vZGVOYW1lJiZoLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoXCJzZWxlY3RcIj09PWt8fFwiaW5wdXRcIj09PWsmJlwiZmlsZVwiPT09aC50eXBlKXZhciBuYT12ZTtlbHNlIGlmKG1lKGgpKWlmKHdlKW5hPUZlO2Vsc2V7bmE9RGU7dmFyIHhhPUNlfWVsc2Uoaz1oLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09ay50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09aC50eXBlfHxcInJhZGlvXCI9PT1oLnR5cGUpJiYobmE9RWUpO2lmKG5hJiYobmE9bmEoYSxkKSkpe25lKGcsbmEsYyxlKTticmVhayBhfXhhJiZ4YShhLGgsZCk7XCJmb2N1c291dFwiPT09YSYmKHhhPWguX3dyYXBwZXJTdGF0ZSkmJlxueGEuY29udHJvbGxlZCYmXCJudW1iZXJcIj09PWgudHlwZSYmY2IoaCxcIm51bWJlclwiLGgudmFsdWUpfXhhPWQ/dWUoZCk6d2luZG93O3N3aXRjaChhKXtjYXNlIFwiZm9jdXNpblwiOmlmKG1lKHhhKXx8XCJ0cnVlXCI9PT14YS5jb250ZW50RWRpdGFibGUpUWU9eGEsUmU9ZCxTZT1udWxsO2JyZWFrO2Nhc2UgXCJmb2N1c291dFwiOlNlPVJlPVFlPW51bGw7YnJlYWs7Y2FzZSBcIm1vdXNlZG93blwiOlRlPSEwO2JyZWFrO2Nhc2UgXCJjb250ZXh0bWVudVwiOmNhc2UgXCJtb3VzZXVwXCI6Y2FzZSBcImRyYWdlbmRcIjpUZT0hMTtVZShnLGMsZSk7YnJlYWs7Y2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOmlmKFBlKWJyZWFrO2Nhc2UgXCJrZXlkb3duXCI6Y2FzZSBcImtleXVwXCI6VWUoZyxjLGUpfXZhciAkYTtpZihhZSliOntzd2l0Y2goYSl7Y2FzZSBcImNvbXBvc2l0aW9uc3RhcnRcIjp2YXIgYmE9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIjticmVhayBiO2Nhc2UgXCJjb21wb3NpdGlvbmVuZFwiOmJhPVwib25Db21wb3NpdGlvbkVuZFwiO1xuYnJlYWsgYjtjYXNlIFwiY29tcG9zaXRpb251cGRhdGVcIjpiYT1cIm9uQ29tcG9zaXRpb25VcGRhdGVcIjticmVhayBifWJhPXZvaWQgMH1lbHNlIGllP2dlKGEsYykmJihiYT1cIm9uQ29tcG9zaXRpb25FbmRcIik6XCJrZXlkb3duXCI9PT1hJiYyMjk9PT1jLmtleUNvZGUmJihiYT1cIm9uQ29tcG9zaXRpb25TdGFydFwiKTtiYSYmKGRlJiZcImtvXCIhPT1jLmxvY2FsZSYmKGllfHxcIm9uQ29tcG9zaXRpb25TdGFydFwiIT09YmE/XCJvbkNvbXBvc2l0aW9uRW5kXCI9PT1iYSYmaWUmJigkYT1uZCgpKTooa2Q9ZSxsZD1cInZhbHVlXCJpbiBrZD9rZC52YWx1ZTprZC50ZXh0Q29udGVudCxpZT0hMCkpLHhhPW9lKGQsYmEpLDA8eGEubGVuZ3RoJiYoYmE9bmV3IExkKGJhLGEsbnVsbCxjLGUpLGcucHVzaCh7ZXZlbnQ6YmEsbGlzdGVuZXJzOnhhfSksJGE/YmEuZGF0YT0kYTooJGE9aGUoYyksbnVsbCE9PSRhJiYoYmEuZGF0YT0kYSkpKSk7aWYoJGE9Y2U/amUoYSxjKTprZShhLGMpKWQ9b2UoZCxcIm9uQmVmb3JlSW5wdXRcIiksXG4wPGQubGVuZ3RoJiYoZT1uZXcgTGQoXCJvbkJlZm9yZUlucHV0XCIsXCJiZWZvcmVpbnB1dFwiLG51bGwsYyxlKSxnLnB1c2goe2V2ZW50OmUsbGlzdGVuZXJzOmR9KSxlLmRhdGE9JGEpfXNlKGcsYil9KX1mdW5jdGlvbiB0ZihhLGIsYyl7cmV0dXJue2luc3RhbmNlOmEsbGlzdGVuZXI6YixjdXJyZW50VGFyZ2V0OmN9fWZ1bmN0aW9uIG9lKGEsYil7Zm9yKHZhciBjPWIrXCJDYXB0dXJlXCIsZD1bXTtudWxsIT09YTspe3ZhciBlPWEsZj1lLnN0YXRlTm9kZTs1PT09ZS50YWcmJm51bGwhPT1mJiYoZT1mLGY9S2IoYSxjKSxudWxsIT1mJiZkLnVuc2hpZnQodGYoYSxmLGUpKSxmPUtiKGEsYiksbnVsbCE9ZiYmZC5wdXNoKHRmKGEsZixlKSkpO2E9YS5yZXR1cm59cmV0dXJuIGR9ZnVuY3Rpb24gdmYoYSl7aWYobnVsbD09PWEpcmV0dXJuIG51bGw7ZG8gYT1hLnJldHVybjt3aGlsZShhJiY1IT09YS50YWcpO3JldHVybiBhP2E6bnVsbH1cbmZ1bmN0aW9uIHdmKGEsYixjLGQsZSl7Zm9yKHZhciBmPWIuX3JlYWN0TmFtZSxnPVtdO251bGwhPT1jJiZjIT09ZDspe3ZhciBoPWMsaz1oLmFsdGVybmF0ZSxsPWguc3RhdGVOb2RlO2lmKG51bGwhPT1rJiZrPT09ZClicmVhazs1PT09aC50YWcmJm51bGwhPT1sJiYoaD1sLGU/KGs9S2IoYyxmKSxudWxsIT1rJiZnLnVuc2hpZnQodGYoYyxrLGgpKSk6ZXx8KGs9S2IoYyxmKSxudWxsIT1rJiZnLnB1c2godGYoYyxrLGgpKSkpO2M9Yy5yZXR1cm59MCE9PWcubGVuZ3RoJiZhLnB1c2goe2V2ZW50OmIsbGlzdGVuZXJzOmd9KX12YXIgeGY9L1xcclxcbj8vZyx5Zj0vXFx1MDAwMHxcXHVGRkZEL2c7ZnVuY3Rpb24gemYoYSl7cmV0dXJuKFwic3RyaW5nXCI9PT10eXBlb2YgYT9hOlwiXCIrYSkucmVwbGFjZSh4ZixcIlxcblwiKS5yZXBsYWNlKHlmLFwiXCIpfWZ1bmN0aW9uIEFmKGEsYixjKXtiPXpmKGIpO2lmKHpmKGEpIT09YiYmYyl0aHJvdyBFcnJvcihwKDQyNSkpO31mdW5jdGlvbiBCZigpe31cbnZhciBDZj1udWxsLERmPW51bGw7ZnVuY3Rpb24gRWYoYSxiKXtyZXR1cm5cInRleHRhcmVhXCI9PT1hfHxcIm5vc2NyaXB0XCI9PT1hfHxcInN0cmluZ1wiPT09dHlwZW9mIGIuY2hpbGRyZW58fFwibnVtYmVyXCI9PT10eXBlb2YgYi5jaGlsZHJlbnx8XCJvYmplY3RcIj09PXR5cGVvZiBiLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZudWxsIT09Yi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWx9XG52YXIgRmY9XCJmdW5jdGlvblwiPT09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsR2Y9XCJmdW5jdGlvblwiPT09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6dm9pZCAwLEhmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBQcm9taXNlP1Byb21pc2U6dm9pZCAwLEpmPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazpcInVuZGVmaW5lZFwiIT09dHlwZW9mIEhmP2Z1bmN0aW9uKGEpe3JldHVybiBIZi5yZXNvbHZlKG51bGwpLnRoZW4oYSkuY2F0Y2goSWYpfTpGZjtmdW5jdGlvbiBJZihhKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9KX1cbmZ1bmN0aW9uIEtmKGEsYil7dmFyIGM9YixkPTA7ZG97dmFyIGU9Yy5uZXh0U2libGluZzthLnJlbW92ZUNoaWxkKGMpO2lmKGUmJjg9PT1lLm5vZGVUeXBlKWlmKGM9ZS5kYXRhLFwiLyRcIj09PWMpe2lmKDA9PT1kKXthLnJlbW92ZUNoaWxkKGUpO2JkKGIpO3JldHVybn1kLS19ZWxzZVwiJFwiIT09YyYmXCIkP1wiIT09YyYmXCIkIVwiIT09Y3x8ZCsrO2M9ZX13aGlsZShjKTtiZChiKX1mdW5jdGlvbiBMZihhKXtmb3IoO251bGwhPWE7YT1hLm5leHRTaWJsaW5nKXt2YXIgYj1hLm5vZGVUeXBlO2lmKDE9PT1ifHwzPT09YilicmVhaztpZig4PT09Yil7Yj1hLmRhdGE7aWYoXCIkXCI9PT1ifHxcIiQhXCI9PT1ifHxcIiQ/XCI9PT1iKWJyZWFrO2lmKFwiLyRcIj09PWIpcmV0dXJuIG51bGx9fXJldHVybiBhfVxuZnVuY3Rpb24gTWYoYSl7YT1hLnByZXZpb3VzU2libGluZztmb3IodmFyIGI9MDthOyl7aWYoOD09PWEubm9kZVR5cGUpe3ZhciBjPWEuZGF0YTtpZihcIiRcIj09PWN8fFwiJCFcIj09PWN8fFwiJD9cIj09PWMpe2lmKDA9PT1iKXJldHVybiBhO2ItLX1lbHNlXCIvJFwiPT09YyYmYisrfWE9YS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5mPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLE9mPVwiX19yZWFjdEZpYmVyJFwiK05mLFBmPVwiX19yZWFjdFByb3BzJFwiK05mLHVmPVwiX19yZWFjdENvbnRhaW5lciRcIitOZixvZj1cIl9fcmVhY3RFdmVudHMkXCIrTmYsUWY9XCJfX3JlYWN0TGlzdGVuZXJzJFwiK05mLFJmPVwiX19yZWFjdEhhbmRsZXMkXCIrTmY7XG5mdW5jdGlvbiBXYyhhKXt2YXIgYj1hW09mXTtpZihiKXJldHVybiBiO2Zvcih2YXIgYz1hLnBhcmVudE5vZGU7Yzspe2lmKGI9Y1t1Zl18fGNbT2ZdKXtjPWIuYWx0ZXJuYXRlO2lmKG51bGwhPT1iLmNoaWxkfHxudWxsIT09YyYmbnVsbCE9PWMuY2hpbGQpZm9yKGE9TWYoYSk7bnVsbCE9PWE7KXtpZihjPWFbT2ZdKXJldHVybiBjO2E9TWYoYSl9cmV0dXJuIGJ9YT1jO2M9YS5wYXJlbnROb2RlfXJldHVybiBudWxsfWZ1bmN0aW9uIENiKGEpe2E9YVtPZl18fGFbdWZdO3JldHVybiFhfHw1IT09YS50YWcmJjYhPT1hLnRhZyYmMTMhPT1hLnRhZyYmMyE9PWEudGFnP251bGw6YX1mdW5jdGlvbiB1ZShhKXtpZig1PT09YS50YWd8fDY9PT1hLnRhZylyZXR1cm4gYS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IocCgzMykpO31mdW5jdGlvbiBEYihhKXtyZXR1cm4gYVtQZl18fG51bGx9dmFyIFNmPVtdLFRmPS0xO2Z1bmN0aW9uIFVmKGEpe3JldHVybntjdXJyZW50OmF9fVxuZnVuY3Rpb24gRShhKXswPlRmfHwoYS5jdXJyZW50PVNmW1RmXSxTZltUZl09bnVsbCxUZi0tKX1mdW5jdGlvbiBHKGEsYil7VGYrKztTZltUZl09YS5jdXJyZW50O2EuY3VycmVudD1ifXZhciBWZj17fSxIPVVmKFZmKSxXZj1VZighMSksWGY9VmY7ZnVuY3Rpb24gWWYoYSxiKXt2YXIgYz1hLnR5cGUuY29udGV4dFR5cGVzO2lmKCFjKXJldHVybiBWZjt2YXIgZD1hLnN0YXRlTm9kZTtpZihkJiZkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT1iKXJldHVybiBkLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBlPXt9LGY7Zm9yKGYgaW4gYyllW2ZdPWJbZl07ZCYmKGE9YS5zdGF0ZU5vZGUsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PWIsYS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1lKTtyZXR1cm4gZX1cbmZ1bmN0aW9uIFpmKGEpe2E9YS5jaGlsZENvbnRleHRUeXBlcztyZXR1cm4gbnVsbCE9PWEmJnZvaWQgMCE9PWF9ZnVuY3Rpb24gJGYoKXtFKFdmKTtFKEgpfWZ1bmN0aW9uIGFnKGEsYixjKXtpZihILmN1cnJlbnQhPT1WZil0aHJvdyBFcnJvcihwKDE2OCkpO0coSCxiKTtHKFdmLGMpfWZ1bmN0aW9uIGJnKGEsYixjKXt2YXIgZD1hLnN0YXRlTm9kZTtiPWIuY2hpbGRDb250ZXh0VHlwZXM7aWYoXCJmdW5jdGlvblwiIT09dHlwZW9mIGQuZ2V0Q2hpbGRDb250ZXh0KXJldHVybiBjO2Q9ZC5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIGUgaW4gZClpZighKGUgaW4gYikpdGhyb3cgRXJyb3IocCgxMDgsUmEoYSl8fFwiVW5rbm93blwiLGUpKTtyZXR1cm4gQSh7fSxjLGQpfVxuZnVuY3Rpb24gY2coYSl7YT0oYT1hLnN0YXRlTm9kZSkmJmEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFZmO1hmPUguY3VycmVudDtHKEgsYSk7RyhXZixXZi5jdXJyZW50KTtyZXR1cm4hMH1mdW5jdGlvbiBkZyhhLGIsYyl7dmFyIGQ9YS5zdGF0ZU5vZGU7aWYoIWQpdGhyb3cgRXJyb3IocCgxNjkpKTtjPyhhPWJnKGEsYixYZiksZC5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dD1hLEUoV2YpLEUoSCksRyhILGEpKTpFKFdmKTtHKFdmLGMpfXZhciBlZz1udWxsLGZnPSExLGdnPSExO2Z1bmN0aW9uIGhnKGEpe251bGw9PT1lZz9lZz1bYV06ZWcucHVzaChhKX1mdW5jdGlvbiBpZyhhKXtmZz0hMDtoZyhhKX1cbmZ1bmN0aW9uIGpnKCl7aWYoIWdnJiZudWxsIT09ZWcpe2dnPSEwO3ZhciBhPTAsYj1DO3RyeXt2YXIgYz1lZztmb3IoQz0xO2E8Yy5sZW5ndGg7YSsrKXt2YXIgZD1jW2FdO2RvIGQ9ZCghMCk7d2hpbGUobnVsbCE9PWQpfWVnPW51bGw7Zmc9ITF9Y2F0Y2goZSl7dGhyb3cgbnVsbCE9PWVnJiYoZWc9ZWcuc2xpY2UoYSsxKSksYWMoZmMsamcpLGU7fWZpbmFsbHl7Qz1iLGdnPSExfX1yZXR1cm4gbnVsbH12YXIga2c9W10sbGc9MCxtZz1udWxsLG5nPTAsb2c9W10scGc9MCxxZz1udWxsLHJnPTEsc2c9XCJcIjtmdW5jdGlvbiB0ZyhhLGIpe2tnW2xnKytdPW5nO2tnW2xnKytdPW1nO21nPWE7bmc9Yn1cbmZ1bmN0aW9uIHVnKGEsYixjKXtvZ1twZysrXT1yZztvZ1twZysrXT1zZztvZ1twZysrXT1xZztxZz1hO3ZhciBkPXJnO2E9c2c7dmFyIGU9MzItb2MoZCktMTtkJj1+KDE8PGUpO2MrPTE7dmFyIGY9MzItb2MoYikrZTtpZigzMDxmKXt2YXIgZz1lLWUlNTtmPShkJigxPDxnKS0xKS50b1N0cmluZygzMik7ZD4+PWc7ZS09ZztyZz0xPDwzMi1vYyhiKStlfGM8PGV8ZDtzZz1mK2F9ZWxzZSByZz0xPDxmfGM8PGV8ZCxzZz1hfWZ1bmN0aW9uIHZnKGEpe251bGwhPT1hLnJldHVybiYmKHRnKGEsMSksdWcoYSwxLDApKX1mdW5jdGlvbiB3ZyhhKXtmb3IoO2E9PT1tZzspbWc9a2dbLS1sZ10sa2dbbGddPW51bGwsbmc9a2dbLS1sZ10sa2dbbGddPW51bGw7Zm9yKDthPT09cWc7KXFnPW9nWy0tcGddLG9nW3BnXT1udWxsLHNnPW9nWy0tcGddLG9nW3BnXT1udWxsLHJnPW9nWy0tcGddLG9nW3BnXT1udWxsfXZhciB4Zz1udWxsLHlnPW51bGwsST0hMSx6Zz1udWxsO1xuZnVuY3Rpb24gQWcoYSxiKXt2YXIgYz1CZyg1LG51bGwsbnVsbCwwKTtjLmVsZW1lbnRUeXBlPVwiREVMRVRFRFwiO2Muc3RhdGVOb2RlPWI7Yy5yZXR1cm49YTtiPWEuZGVsZXRpb25zO251bGw9PT1iPyhhLmRlbGV0aW9ucz1bY10sYS5mbGFnc3w9MTYpOmIucHVzaChjKX1cbmZ1bmN0aW9uIENnKGEsYil7c3dpdGNoKGEudGFnKXtjYXNlIDU6dmFyIGM9YS50eXBlO2I9MSE9PWIubm9kZVR5cGV8fGMudG9Mb3dlckNhc2UoKSE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOmI7cmV0dXJuIG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9TGYoYi5maXJzdENoaWxkKSwhMCk6ITE7Y2FzZSA2OnJldHVybiBiPVwiXCI9PT1hLnBlbmRpbmdQcm9wc3x8MyE9PWIubm9kZVR5cGU/bnVsbDpiLG51bGwhPT1iPyhhLnN0YXRlTm9kZT1iLHhnPWEseWc9bnVsbCwhMCk6ITE7Y2FzZSAxMzpyZXR1cm4gYj04IT09Yi5ub2RlVHlwZT9udWxsOmIsbnVsbCE9PWI/KGM9bnVsbCE9PXFnP3tpZDpyZyxvdmVyZmxvdzpzZ306bnVsbCxhLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6Yix0cmVlQ29udGV4dDpjLHJldHJ5TGFuZToxMDczNzQxODI0fSxjPUJnKDE4LG51bGwsbnVsbCwwKSxjLnN0YXRlTm9kZT1iLGMucmV0dXJuPWEsYS5jaGlsZD1jLHhnPWEseWc9XG5udWxsLCEwKTohMTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBEZyhhKXtyZXR1cm4gMCE9PShhLm1vZGUmMSkmJjA9PT0oYS5mbGFncyYxMjgpfWZ1bmN0aW9uIEVnKGEpe2lmKEkpe3ZhciBiPXlnO2lmKGIpe3ZhciBjPWI7aWYoIUNnKGEsYikpe2lmKERnKGEpKXRocm93IEVycm9yKHAoNDE4KSk7Yj1MZihjLm5leHRTaWJsaW5nKTt2YXIgZD14ZztiJiZDZyhhLGIpP0FnKGQsYyk6KGEuZmxhZ3M9YS5mbGFncyYtNDA5N3wyLEk9ITEseGc9YSl9fWVsc2V7aWYoRGcoYSkpdGhyb3cgRXJyb3IocCg0MTgpKTthLmZsYWdzPWEuZmxhZ3MmLTQwOTd8MjtJPSExO3hnPWF9fX1mdW5jdGlvbiBGZyhhKXtmb3IoYT1hLnJldHVybjtudWxsIT09YSYmNSE9PWEudGFnJiYzIT09YS50YWcmJjEzIT09YS50YWc7KWE9YS5yZXR1cm47eGc9YX1cbmZ1bmN0aW9uIEdnKGEpe2lmKGEhPT14ZylyZXR1cm4hMTtpZighSSlyZXR1cm4gRmcoYSksST0hMCwhMTt2YXIgYjsoYj0zIT09YS50YWcpJiYhKGI9NSE9PWEudGFnKSYmKGI9YS50eXBlLGI9XCJoZWFkXCIhPT1iJiZcImJvZHlcIiE9PWImJiFFZihhLnR5cGUsYS5tZW1vaXplZFByb3BzKSk7aWYoYiYmKGI9eWcpKXtpZihEZyhhKSl0aHJvdyBIZygpLEVycm9yKHAoNDE4KSk7Zm9yKDtiOylBZyhhLGIpLGI9TGYoYi5uZXh0U2libGluZyl9RmcoYSk7aWYoMTM9PT1hLnRhZyl7YT1hLm1lbW9pemVkU3RhdGU7YT1udWxsIT09YT9hLmRlaHlkcmF0ZWQ6bnVsbDtpZighYSl0aHJvdyBFcnJvcihwKDMxNykpO2E6e2E9YS5uZXh0U2libGluZztmb3IoYj0wO2E7KXtpZig4PT09YS5ub2RlVHlwZSl7dmFyIGM9YS5kYXRhO2lmKFwiLyRcIj09PWMpe2lmKDA9PT1iKXt5Zz1MZihhLm5leHRTaWJsaW5nKTticmVhayBhfWItLX1lbHNlXCIkXCIhPT1jJiZcIiQhXCIhPT1jJiZcIiQ/XCIhPT1jfHxiKyt9YT1hLm5leHRTaWJsaW5nfXlnPVxubnVsbH19ZWxzZSB5Zz14Zz9MZihhLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBIZygpe2Zvcih2YXIgYT15ZzthOylhPUxmKGEubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIElnKCl7eWc9eGc9bnVsbDtJPSExfWZ1bmN0aW9uIEpnKGEpe251bGw9PT16Zz96Zz1bYV06emcucHVzaChhKX12YXIgS2c9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc7ZnVuY3Rpb24gTGcoYSxiKXtpZihhJiZhLmRlZmF1bHRQcm9wcyl7Yj1BKHt9LGIpO2E9YS5kZWZhdWx0UHJvcHM7Zm9yKHZhciBjIGluIGEpdm9pZCAwPT09YltjXSYmKGJbY109YVtjXSk7cmV0dXJuIGJ9cmV0dXJuIGJ9dmFyIE1nPVVmKG51bGwpLE5nPW51bGwsT2c9bnVsbCxQZz1udWxsO2Z1bmN0aW9uIFFnKCl7UGc9T2c9Tmc9bnVsbH1mdW5jdGlvbiBSZyhhKXt2YXIgYj1NZy5jdXJyZW50O0UoTWcpO2EuX2N1cnJlbnRWYWx1ZT1ifVxuZnVuY3Rpb24gU2coYSxiLGMpe2Zvcig7bnVsbCE9PWE7KXt2YXIgZD1hLmFsdGVybmF0ZTsoYS5jaGlsZExhbmVzJmIpIT09Yj8oYS5jaGlsZExhbmVzfD1iLG51bGwhPT1kJiYoZC5jaGlsZExhbmVzfD1iKSk6bnVsbCE9PWQmJihkLmNoaWxkTGFuZXMmYikhPT1iJiYoZC5jaGlsZExhbmVzfD1iKTtpZihhPT09YylicmVhazthPWEucmV0dXJufX1mdW5jdGlvbiBUZyhhLGIpe05nPWE7UGc9T2c9bnVsbDthPWEuZGVwZW5kZW5jaWVzO251bGwhPT1hJiZudWxsIT09YS5maXJzdENvbnRleHQmJigwIT09KGEubGFuZXMmYikmJihVZz0hMCksYS5maXJzdENvbnRleHQ9bnVsbCl9XG5mdW5jdGlvbiBWZyhhKXt2YXIgYj1hLl9jdXJyZW50VmFsdWU7aWYoUGchPT1hKWlmKGE9e2NvbnRleHQ6YSxtZW1vaXplZFZhbHVlOmIsbmV4dDpudWxsfSxudWxsPT09T2cpe2lmKG51bGw9PT1OZyl0aHJvdyBFcnJvcihwKDMwOCkpO09nPWE7TmcuZGVwZW5kZW5jaWVzPXtsYW5lczowLGZpcnN0Q29udGV4dDphfX1lbHNlIE9nPU9nLm5leHQ9YTtyZXR1cm4gYn12YXIgV2c9bnVsbDtmdW5jdGlvbiBYZyhhKXtudWxsPT09V2c/V2c9W2FdOldnLnB1c2goYSl9ZnVuY3Rpb24gWWcoYSxiLGMsZCl7dmFyIGU9Yi5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYy5uZXh0PWMsWGcoYikpOihjLm5leHQ9ZS5uZXh0LGUubmV4dD1jKTtiLmludGVybGVhdmVkPWM7cmV0dXJuIFpnKGEsZCl9XG5mdW5jdGlvbiBaZyhhLGIpe2EubGFuZXN8PWI7dmFyIGM9YS5hbHRlcm5hdGU7bnVsbCE9PWMmJihjLmxhbmVzfD1iKTtjPWE7Zm9yKGE9YS5yZXR1cm47bnVsbCE9PWE7KWEuY2hpbGRMYW5lc3w9YixjPWEuYWx0ZXJuYXRlLG51bGwhPT1jJiYoYy5jaGlsZExhbmVzfD1iKSxjPWEsYT1hLnJldHVybjtyZXR1cm4gMz09PWMudGFnP2Muc3RhdGVOb2RlOm51bGx9dmFyICRnPSExO2Z1bmN0aW9uIGFoKGEpe2EudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjB9LGVmZmVjdHM6bnVsbH19XG5mdW5jdGlvbiBiaChhLGIpe2E9YS51cGRhdGVRdWV1ZTtiLnVwZGF0ZVF1ZXVlPT09YSYmKGIudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTphLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6YS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6YS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6YS5zaGFyZWQsZWZmZWN0czphLmVmZmVjdHN9KX1mdW5jdGlvbiBjaChhLGIpe3JldHVybntldmVudFRpbWU6YSxsYW5lOmIsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1cbmZ1bmN0aW9uIGRoKGEsYixjKXt2YXIgZD1hLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1kKXJldHVybiBudWxsO2Q9ZC5zaGFyZWQ7aWYoMCE9PShLJjIpKXt2YXIgZT1kLnBlbmRpbmc7bnVsbD09PWU/Yi5uZXh0PWI6KGIubmV4dD1lLm5leHQsZS5uZXh0PWIpO2QucGVuZGluZz1iO3JldHVybiBaZyhhLGMpfWU9ZC5pbnRlcmxlYXZlZDtudWxsPT09ZT8oYi5uZXh0PWIsWGcoZCkpOihiLm5leHQ9ZS5uZXh0LGUubmV4dD1iKTtkLmludGVybGVhdmVkPWI7cmV0dXJuIFpnKGEsYyl9ZnVuY3Rpb24gZWgoYSxiLGMpe2I9Yi51cGRhdGVRdWV1ZTtpZihudWxsIT09YiYmKGI9Yi5zaGFyZWQsMCE9PShjJjQxOTQyNDApKSl7dmFyIGQ9Yi5sYW5lcztkJj1hLnBlbmRpbmdMYW5lcztjfD1kO2IubGFuZXM9YztDYyhhLGMpfX1cbmZ1bmN0aW9uIGZoKGEsYil7dmFyIGM9YS51cGRhdGVRdWV1ZSxkPWEuYWx0ZXJuYXRlO2lmKG51bGwhPT1kJiYoZD1kLnVwZGF0ZVF1ZXVlLGM9PT1kKSl7dmFyIGU9bnVsbCxmPW51bGw7Yz1jLmZpcnN0QmFzZVVwZGF0ZTtpZihudWxsIT09Yyl7ZG97dmFyIGc9e2V2ZW50VGltZTpjLmV2ZW50VGltZSxsYW5lOmMubGFuZSx0YWc6Yy50YWcscGF5bG9hZDpjLnBheWxvYWQsY2FsbGJhY2s6Yy5jYWxsYmFjayxuZXh0Om51bGx9O251bGw9PT1mP2U9Zj1nOmY9Zi5uZXh0PWc7Yz1jLm5leHR9d2hpbGUobnVsbCE9PWMpO251bGw9PT1mP2U9Zj1iOmY9Zi5uZXh0PWJ9ZWxzZSBlPWY9YjtjPXtiYXNlU3RhdGU6ZC5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmUsbGFzdEJhc2VVcGRhdGU6ZixzaGFyZWQ6ZC5zaGFyZWQsZWZmZWN0czpkLmVmZmVjdHN9O2EudXBkYXRlUXVldWU9YztyZXR1cm59YT1jLmxhc3RCYXNlVXBkYXRlO251bGw9PT1hP2MuZmlyc3RCYXNlVXBkYXRlPWI6YS5uZXh0PVxuYjtjLmxhc3RCYXNlVXBkYXRlPWJ9XG5mdW5jdGlvbiBnaChhLGIsYyxkKXt2YXIgZT1hLnVwZGF0ZVF1ZXVlOyRnPSExO3ZhciBmPWUuZmlyc3RCYXNlVXBkYXRlLGc9ZS5sYXN0QmFzZVVwZGF0ZSxoPWUuc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PWgpe2Uuc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgaz1oLGw9ay5uZXh0O2submV4dD1udWxsO251bGw9PT1nP2Y9bDpnLm5leHQ9bDtnPWs7dmFyIG09YS5hbHRlcm5hdGU7bnVsbCE9PW0mJihtPW0udXBkYXRlUXVldWUsaD1tLmxhc3RCYXNlVXBkYXRlLGghPT1nJiYobnVsbD09PWg/bS5maXJzdEJhc2VVcGRhdGU9bDpoLm5leHQ9bCxtLmxhc3RCYXNlVXBkYXRlPWspKX1pZihudWxsIT09Zil7dmFyIHE9ZS5iYXNlU3RhdGU7Zz0wO209bD1rPW51bGw7aD1mO2Rve3ZhciByPWgubGFuZSx5PWguZXZlbnRUaW1lO2lmKChkJnIpPT09cil7bnVsbCE9PW0mJihtPW0ubmV4dD17ZXZlbnRUaW1lOnksbGFuZTowLHRhZzpoLnRhZyxwYXlsb2FkOmgucGF5bG9hZCxjYWxsYmFjazpoLmNhbGxiYWNrLFxubmV4dDpudWxsfSk7YTp7dmFyIG49YSx0PWg7cj1iO3k9Yztzd2l0Y2godC50YWcpe2Nhc2UgMTpuPXQucGF5bG9hZDtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygbil7cT1uLmNhbGwoeSxxLHIpO2JyZWFrIGF9cT1uO2JyZWFrIGE7Y2FzZSAzOm4uZmxhZ3M9bi5mbGFncyYtNjU1Mzd8MTI4O2Nhc2UgMDpuPXQucGF5bG9hZDtyPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBuP24uY2FsbCh5LHEscik6bjtpZihudWxsPT09cnx8dm9pZCAwPT09cilicmVhayBhO3E9QSh7fSxxLHIpO2JyZWFrIGE7Y2FzZSAyOiRnPSEwfX1udWxsIT09aC5jYWxsYmFjayYmMCE9PWgubGFuZSYmKGEuZmxhZ3N8PTY0LHI9ZS5lZmZlY3RzLG51bGw9PT1yP2UuZWZmZWN0cz1baF06ci5wdXNoKGgpKX1lbHNlIHk9e2V2ZW50VGltZTp5LGxhbmU6cix0YWc6aC50YWcscGF5bG9hZDpoLnBheWxvYWQsY2FsbGJhY2s6aC5jYWxsYmFjayxuZXh0Om51bGx9LG51bGw9PT1tPyhsPW09eSxrPXEpOm09bS5uZXh0PXksZ3w9cjtcbmg9aC5uZXh0O2lmKG51bGw9PT1oKWlmKGg9ZS5zaGFyZWQucGVuZGluZyxudWxsPT09aClicmVhaztlbHNlIHI9aCxoPXIubmV4dCxyLm5leHQ9bnVsbCxlLmxhc3RCYXNlVXBkYXRlPXIsZS5zaGFyZWQucGVuZGluZz1udWxsfXdoaWxlKDEpO251bGw9PT1tJiYoaz1xKTtlLmJhc2VTdGF0ZT1rO2UuZmlyc3RCYXNlVXBkYXRlPWw7ZS5sYXN0QmFzZVVwZGF0ZT1tO2I9ZS5zaGFyZWQuaW50ZXJsZWF2ZWQ7aWYobnVsbCE9PWIpe2U9YjtkbyBnfD1lLmxhbmUsZT1lLm5leHQ7d2hpbGUoZSE9PWIpfWVsc2UgbnVsbD09PWYmJihlLnNoYXJlZC5sYW5lcz0wKTtoaHw9ZzthLmxhbmVzPWc7YS5tZW1vaXplZFN0YXRlPXF9fVxuZnVuY3Rpb24gaWgoYSxiLGMpe2E9Yi5lZmZlY3RzO2IuZWZmZWN0cz1udWxsO2lmKG51bGwhPT1hKWZvcihiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBkPWFbYl0sZT1kLmNhbGxiYWNrO2lmKG51bGwhPT1lKXtkLmNhbGxiYWNrPW51bGw7ZD1jO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlKXRocm93IEVycm9yKHAoMTkxLGUpKTtlLmNhbGwoZCl9fX12YXIgamg9KG5ldyBhYS5Db21wb25lbnQpLnJlZnM7ZnVuY3Rpb24ga2goYSxiLGMsZCl7Yj1hLm1lbW9pemVkU3RhdGU7Yz1jKGQsYik7Yz1udWxsPT09Y3x8dm9pZCAwPT09Yz9iOkEoe30sYixjKTthLm1lbW9pemVkU3RhdGU9YzswPT09YS5sYW5lcyYmKGEudXBkYXRlUXVldWUuYmFzZVN0YXRlPWMpfVxudmFyIG5oPXtpc01vdW50ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5fcmVhY3RJbnRlcm5hbHMpP1ZiKGEpPT09YTohMX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPUwoKSxlPWxoKGEpLGY9Y2goZCxlKTtmLnBheWxvYWQ9Yjt2b2lkIDAhPT1jJiZudWxsIT09YyYmKGYuY2FsbGJhY2s9Yyk7Yj1kaChhLGYsZSk7bnVsbCE9PWImJihtaChiLGEsZSxkKSxlaChiLGEsZSkpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGEsYixjKXthPWEuX3JlYWN0SW50ZXJuYWxzO3ZhciBkPUwoKSxlPWxoKGEpLGY9Y2goZCxlKTtmLnRhZz0xO2YucGF5bG9hZD1iO3ZvaWQgMCE9PWMmJm51bGwhPT1jJiYoZi5jYWxsYmFjaz1jKTtiPWRoKGEsZixlKTtudWxsIT09YiYmKG1oKGIsYSxlLGQpLGVoKGIsYSxlKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihhLGIpe2E9YS5fcmVhY3RJbnRlcm5hbHM7dmFyIGM9TCgpLGQ9XG5saChhKSxlPWNoKGMsZCk7ZS50YWc9Mjt2b2lkIDAhPT1iJiZudWxsIT09YiYmKGUuY2FsbGJhY2s9Yik7Yj1kaChhLGUsZCk7bnVsbCE9PWImJihtaChiLGEsZCxjKSxlaChiLGEsZCkpfX07ZnVuY3Rpb24gb2goYSxiLGMsZCxlLGYsZyl7YT1hLnN0YXRlTm9kZTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYS5zaG91bGRDb21wb25lbnRVcGRhdGU/YS5zaG91bGRDb21wb25lbnRVcGRhdGUoZCxmLGcpOmIucHJvdG90eXBlJiZiLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hSWUoYyxkKXx8IUllKGUsZik6ITB9XG5mdW5jdGlvbiBwaChhLGIsYyl7dmFyIGQ9ITEsZT1WZjt2YXIgZj1iLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgZiYmbnVsbCE9PWY/Zj1WZyhmKTooZT1aZihiKT9YZjpILmN1cnJlbnQsZD1iLmNvbnRleHRUeXBlcyxmPShkPW51bGwhPT1kJiZ2b2lkIDAhPT1kKT9ZZihhLGUpOlZmKTtiPW5ldyBiKGMsZik7YS5tZW1vaXplZFN0YXRlPW51bGwhPT1iLnN0YXRlJiZ2b2lkIDAhPT1iLnN0YXRlP2Iuc3RhdGU6bnVsbDtiLnVwZGF0ZXI9bmg7YS5zdGF0ZU5vZGU9YjtiLl9yZWFjdEludGVybmFscz1hO2QmJihhPWEuc3RhdGVOb2RlLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD1lLGEuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9Zik7cmV0dXJuIGJ9XG5mdW5jdGlvbiBxaChhLGIsYyxkKXthPWIuc3RhdGU7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmYi5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMsZCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJmIuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoYyxkKTtiLnN0YXRlIT09YSYmbmguZW5xdWV1ZVJlcGxhY2VTdGF0ZShiLGIuc3RhdGUsbnVsbCl9XG5mdW5jdGlvbiByaChhLGIsYyxkKXt2YXIgZT1hLnN0YXRlTm9kZTtlLnByb3BzPWM7ZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGU7ZS5yZWZzPWpoO2FoKGEpO3ZhciBmPWIuY29udGV4dFR5cGU7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zj9lLmNvbnRleHQ9VmcoZik6KGY9WmYoYik/WGY6SC5jdXJyZW50LGUuY29udGV4dD1ZZihhLGYpKTtlLnN0YXRlPWEubWVtb2l6ZWRTdGF0ZTtmPWIuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYoa2goYSxiLGYsYyksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBiLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT09dHlwZW9mIGUuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudHx8KGI9ZS5zdGF0ZSxcblwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudFdpbGxNb3VudCYmZS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZlLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSxiIT09ZS5zdGF0ZSYmbmguZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLGUuc3RhdGUsbnVsbCksZ2goYSxjLGUsZCksZS5zdGF0ZT1hLm1lbW9pemVkU3RhdGUpO1wiZnVuY3Rpb25cIj09PXR5cGVvZiBlLmNvbXBvbmVudERpZE1vdW50JiYoYS5mbGFnc3w9NDE5NDMwOCl9XG5mdW5jdGlvbiBzaChhLGIsYyl7YT1jLnJlZjtpZihudWxsIT09YSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJlwib2JqZWN0XCIhPT10eXBlb2YgYSl7aWYoYy5fb3duZXIpe2M9Yy5fb3duZXI7aWYoYyl7aWYoMSE9PWMudGFnKXRocm93IEVycm9yKHAoMzA5KSk7dmFyIGQ9Yy5zdGF0ZU5vZGV9aWYoIWQpdGhyb3cgRXJyb3IocCgxNDcsYSkpO3ZhciBlPWQsZj1cIlwiK2E7aWYobnVsbCE9PWImJm51bGwhPT1iLnJlZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGIucmVmJiZiLnJlZi5fc3RyaW5nUmVmPT09ZilyZXR1cm4gYi5yZWY7Yj1mdW5jdGlvbihhKXt2YXIgYj1lLnJlZnM7Yj09PWpoJiYoYj1lLnJlZnM9e30pO251bGw9PT1hP2RlbGV0ZSBiW2ZdOmJbZl09YX07Yi5fc3RyaW5nUmVmPWY7cmV0dXJuIGJ9aWYoXCJzdHJpbmdcIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKHAoMjg0KSk7aWYoIWMuX293bmVyKXRocm93IEVycm9yKHAoMjkwLGEpKTt9cmV0dXJuIGF9XG5mdW5jdGlvbiB0aChhLGIpe2E9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpO3Rocm93IEVycm9yKHAoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PWE/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyhiKS5qb2luKFwiLCBcIikrXCJ9XCI6YSkpO31mdW5jdGlvbiB1aChhKXt2YXIgYj1hLl9pbml0O3JldHVybiBiKGEuX3BheWxvYWQpfVxuZnVuY3Rpb24gdmgoYSl7ZnVuY3Rpb24gYihiLGMpe2lmKGEpe3ZhciBkPWIuZGVsZXRpb25zO251bGw9PT1kPyhiLmRlbGV0aW9ucz1bY10sYi5mbGFnc3w9MTYpOmQucHVzaChjKX19ZnVuY3Rpb24gYyhjLGQpe2lmKCFhKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PWQ7KWIoYyxkKSxkPWQuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGEsYil7Zm9yKGE9bmV3IE1hcDtudWxsIT09YjspbnVsbCE9PWIua2V5P2Euc2V0KGIua2V5LGIpOmEuc2V0KGIuaW5kZXgsYiksYj1iLnNpYmxpbmc7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2E9d2goYSxiKTthLmluZGV4PTA7YS5zaWJsaW5nPW51bGw7cmV0dXJuIGF9ZnVuY3Rpb24gZihiLGMsZCl7Yi5pbmRleD1kO2lmKCFhKXJldHVybiBiLmZsYWdzfD0xMDQ4NTc2LGM7ZD1iLmFsdGVybmF0ZTtpZihudWxsIT09ZClyZXR1cm4gZD1kLmluZGV4LGQ8Yz8oYi5mbGFnc3w9MixjKTpkO2IuZmxhZ3N8PTI7cmV0dXJuIGN9ZnVuY3Rpb24gZyhiKXthJiZcbm51bGw9PT1iLmFsdGVybmF0ZSYmKGIuZmxhZ3N8PTIpO3JldHVybiBifWZ1bmN0aW9uIGgoYSxiLGMsZCl7aWYobnVsbD09PWJ8fDYhPT1iLnRhZylyZXR1cm4gYj14aChjLGEubW9kZSxkKSxiLnJldHVybj1hLGI7Yj1lKGIsYyk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBmPWMudHlwZTtpZihmPT09eWEpcmV0dXJuIG0oYSxiLGMucHJvcHMuY2hpbGRyZW4sZCxjLmtleSk7aWYobnVsbCE9PWImJihiLmVsZW1lbnRUeXBlPT09Znx8XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi4kJHR5cGVvZj09PUhhJiZ1aChmKT09PWIudHlwZSkpcmV0dXJuIGQ9ZShiLGMucHJvcHMpLGQucmVmPXNoKGEsYixjKSxkLnJldHVybj1hLGQ7ZD15aChjLnR5cGUsYy5rZXksYy5wcm9wcyxudWxsLGEubW9kZSxkKTtkLnJlZj1zaChhLGIsYyk7ZC5yZXR1cm49YTtyZXR1cm4gZH1mdW5jdGlvbiBsKGEsYixjLGQpe2lmKG51bGw9PT1ifHw0IT09Yi50YWd8fFxuYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyE9PWMuY29udGFpbmVySW5mb3x8Yi5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24hPT1jLmltcGxlbWVudGF0aW9uKXJldHVybiBiPXpoKGMsYS5tb2RlLGQpLGIucmV0dXJuPWEsYjtiPWUoYixjLmNoaWxkcmVufHxbXSk7Yi5yZXR1cm49YTtyZXR1cm4gYn1mdW5jdGlvbiBtKGEsYixjLGQsZil7aWYobnVsbD09PWJ8fDchPT1iLnRhZylyZXR1cm4gYj1BaChjLGEubW9kZSxkLGYpLGIucmV0dXJuPWEsYjtiPWUoYixjKTtiLnJldHVybj1hO3JldHVybiBifWZ1bmN0aW9uIHEoYSxiLGMpe2lmKFwic3RyaW5nXCI9PT10eXBlb2YgYiYmXCJcIiE9PWJ8fFwibnVtYmVyXCI9PT10eXBlb2YgYilyZXR1cm4gYj14aChcIlwiK2IsYS5tb2RlLGMpLGIucmV0dXJuPWEsYjtpZihcIm9iamVjdFwiPT09dHlwZW9mIGImJm51bGwhPT1iKXtzd2l0Y2goYi4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYz15aChiLnR5cGUsYi5rZXksYi5wcm9wcyxudWxsLGEubW9kZSxjKSxcbmMucmVmPXNoKGEsbnVsbCxiKSxjLnJldHVybj1hLGM7Y2FzZSB3YTpyZXR1cm4gYj16aChiLGEubW9kZSxjKSxiLnJldHVybj1hLGI7Y2FzZSBIYTp2YXIgZD1iLl9pbml0O3JldHVybiBxKGEsZChiLl9wYXlsb2FkKSxjKX1pZihlYihiKXx8S2EoYikpcmV0dXJuIGI9QWgoYixhLm1vZGUsYyxudWxsKSxiLnJldHVybj1hLGI7dGgoYSxiKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiByKGEsYixjLGQpe3ZhciBlPW51bGwhPT1iP2Iua2V5Om51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBjJiZcIlwiIT09Y3x8XCJudW1iZXJcIj09PXR5cGVvZiBjKXJldHVybiBudWxsIT09ZT9udWxsOmgoYSxiLFwiXCIrYyxkKTtpZihcIm9iamVjdFwiPT09dHlwZW9mIGMmJm51bGwhPT1jKXtzd2l0Y2goYy4kJHR5cGVvZil7Y2FzZSB2YTpyZXR1cm4gYy5rZXk9PT1lP2soYSxiLGMsZCk6bnVsbDtjYXNlIHdhOnJldHVybiBjLmtleT09PWU/bChhLGIsYyxkKTpudWxsO2Nhc2UgSGE6cmV0dXJuIGU9Yy5faW5pdCxyKGEsXG5iLGUoYy5fcGF5bG9hZCksZCl9aWYoZWIoYyl8fEthKGMpKXJldHVybiBudWxsIT09ZT9udWxsOm0oYSxiLGMsZCxudWxsKTt0aChhLGMpfXJldHVybiBudWxsfWZ1bmN0aW9uIHkoYSxiLGMsZCxlKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGQmJlwiXCIhPT1kfHxcIm51bWJlclwiPT09dHlwZW9mIGQpcmV0dXJuIGE9YS5nZXQoYyl8fG51bGwsaChiLGEsXCJcIitkLGUpO2lmKFwib2JqZWN0XCI9PT10eXBlb2YgZCYmbnVsbCE9PWQpe3N3aXRjaChkLiQkdHlwZW9mKXtjYXNlIHZhOnJldHVybiBhPWEuZ2V0KG51bGw9PT1kLmtleT9jOmQua2V5KXx8bnVsbCxrKGIsYSxkLGUpO2Nhc2Ugd2E6cmV0dXJuIGE9YS5nZXQobnVsbD09PWQua2V5P2M6ZC5rZXkpfHxudWxsLGwoYixhLGQsZSk7Y2FzZSBIYTp2YXIgZj1kLl9pbml0O3JldHVybiB5KGEsYixjLGYoZC5fcGF5bG9hZCksZSl9aWYoZWIoZCl8fEthKGQpKXJldHVybiBhPWEuZ2V0KGMpfHxudWxsLG0oYixhLGQsZSxudWxsKTt0aChiLGQpfXJldHVybiBudWxsfVxuZnVuY3Rpb24gbihlLGcsaCxrKXtmb3IodmFyIGw9bnVsbCxtPW51bGwsdT1nLHc9Zz0wLHg9bnVsbDtudWxsIT09dSYmdzxoLmxlbmd0aDt3Kyspe3UuaW5kZXg+dz8oeD11LHU9bnVsbCk6eD11LnNpYmxpbmc7dmFyIG49cihlLHUsaFt3XSxrKTtpZihudWxsPT09bil7bnVsbD09PXUmJih1PXgpO2JyZWFrfWEmJnUmJm51bGw9PT1uLmFsdGVybmF0ZSYmYihlLHUpO2c9ZihuLGcsdyk7bnVsbD09PW0/bD1uOm0uc2libGluZz1uO209bjt1PXh9aWYodz09PWgubGVuZ3RoKXJldHVybiBjKGUsdSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT11KXtmb3IoO3c8aC5sZW5ndGg7dysrKXU9cShlLGhbd10sayksbnVsbCE9PXUmJihnPWYodSxnLHcpLG51bGw9PT1tP2w9dTptLnNpYmxpbmc9dSxtPXUpO0kmJnRnKGUsdyk7cmV0dXJuIGx9Zm9yKHU9ZChlLHUpO3c8aC5sZW5ndGg7dysrKXg9eSh1LGUsdyxoW3ddLGspLG51bGwhPT14JiYoYSYmbnVsbCE9PXguYWx0ZXJuYXRlJiZ1LmRlbGV0ZShudWxsPT09XG54LmtleT93Ongua2V5KSxnPWYoeCxnLHcpLG51bGw9PT1tP2w9eDptLnNpYmxpbmc9eCxtPXgpO2EmJnUuZm9yRWFjaChmdW5jdGlvbihhKXtyZXR1cm4gYihlLGEpfSk7SSYmdGcoZSx3KTtyZXR1cm4gbH1mdW5jdGlvbiB0KGUsZyxoLGspe3ZhciBsPUthKGgpO2lmKFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBsKXRocm93IEVycm9yKHAoMTUwKSk7aD1sLmNhbGwoaCk7aWYobnVsbD09aCl0aHJvdyBFcnJvcihwKDE1MSkpO2Zvcih2YXIgdT1sPW51bGwsbT1nLHc9Zz0wLHg9bnVsbCxuPWgubmV4dCgpO251bGwhPT1tJiYhbi5kb25lO3crKyxuPWgubmV4dCgpKXttLmluZGV4Pnc/KHg9bSxtPW51bGwpOng9bS5zaWJsaW5nO3ZhciB0PXIoZSxtLG4udmFsdWUsayk7aWYobnVsbD09PXQpe251bGw9PT1tJiYobT14KTticmVha31hJiZtJiZudWxsPT09dC5hbHRlcm5hdGUmJmIoZSxtKTtnPWYodCxnLHcpO251bGw9PT11P2w9dDp1LnNpYmxpbmc9dDt1PXQ7bT14fWlmKG4uZG9uZSlyZXR1cm4gYyhlLFxubSksSSYmdGcoZSx3KSxsO2lmKG51bGw9PT1tKXtmb3IoOyFuLmRvbmU7dysrLG49aC5uZXh0KCkpbj1xKGUsbi52YWx1ZSxrKSxudWxsIT09biYmKGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7SSYmdGcoZSx3KTtyZXR1cm4gbH1mb3IobT1kKGUsbSk7IW4uZG9uZTt3Kyssbj1oLm5leHQoKSluPXkobSxlLHcsbi52YWx1ZSxrKSxudWxsIT09biYmKGEmJm51bGwhPT1uLmFsdGVybmF0ZSYmbS5kZWxldGUobnVsbD09PW4ua2V5P3c6bi5rZXkpLGc9ZihuLGcsdyksbnVsbD09PXU/bD1uOnUuc2libGluZz1uLHU9bik7YSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiKGUsYSl9KTtJJiZ0ZyhlLHcpO3JldHVybiBsfWZ1bmN0aW9uIEooYSxkLGYsaCl7XCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09ZiYmZi50eXBlPT09eWEmJm51bGw9PT1mLmtleSYmKGY9Zi5wcm9wcy5jaGlsZHJlbik7aWYoXCJvYmplY3RcIj09PXR5cGVvZiBmJiZudWxsIT09Zil7c3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgdmE6YTp7Zm9yKHZhciBrPVxuZi5rZXksbD1kO251bGwhPT1sOyl7aWYobC5rZXk9PT1rKXtrPWYudHlwZTtpZihrPT09eWEpe2lmKDc9PT1sLnRhZyl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcy5jaGlsZHJlbik7ZC5yZXR1cm49YTthPWQ7YnJlYWsgYX19ZWxzZSBpZihsLmVsZW1lbnRUeXBlPT09a3x8XCJvYmplY3RcIj09PXR5cGVvZiBrJiZudWxsIT09ayYmay4kJHR5cGVvZj09PUhhJiZ1aChrKT09PWwudHlwZSl7YyhhLGwuc2libGluZyk7ZD1lKGwsZi5wcm9wcyk7ZC5yZWY9c2goYSxsLGYpO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9YyhhLGwpO2JyZWFrfWVsc2UgYihhLGwpO2w9bC5zaWJsaW5nfWYudHlwZT09PXlhPyhkPUFoKGYucHJvcHMuY2hpbGRyZW4sYS5tb2RlLGgsZi5rZXkpLGQucmV0dXJuPWEsYT1kKTooaD15aChmLnR5cGUsZi5rZXksZi5wcm9wcyxudWxsLGEubW9kZSxoKSxoLnJlZj1zaChhLGQsZiksaC5yZXR1cm49YSxhPWgpfXJldHVybiBnKGEpO2Nhc2Ugd2E6YTp7Zm9yKGw9Zi5rZXk7bnVsbCE9PVxuZDspe2lmKGQua2V5PT09bClpZig0PT09ZC50YWcmJmQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1mLmNvbnRhaW5lckluZm8mJmQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09Zi5pbXBsZW1lbnRhdGlvbil7YyhhLGQuc2libGluZyk7ZD1lKGQsZi5jaGlsZHJlbnx8W10pO2QucmV0dXJuPWE7YT1kO2JyZWFrIGF9ZWxzZXtjKGEsZCk7YnJlYWt9ZWxzZSBiKGEsZCk7ZD1kLnNpYmxpbmd9ZD16aChmLGEubW9kZSxoKTtkLnJldHVybj1hO2E9ZH1yZXR1cm4gZyhhKTtjYXNlIEhhOnJldHVybiBsPWYuX2luaXQsSihhLGQsbChmLl9wYXlsb2FkKSxoKX1pZihlYihmKSlyZXR1cm4gbihhLGQsZixoKTtpZihLYShmKSlyZXR1cm4gdChhLGQsZixoKTt0aChhLGYpfXJldHVyblwic3RyaW5nXCI9PT10eXBlb2YgZiYmXCJcIiE9PWZ8fFwibnVtYmVyXCI9PT10eXBlb2YgZj8oZj1cIlwiK2YsbnVsbCE9PWQmJjY9PT1kLnRhZz8oYyhhLGQuc2libGluZyksZD1lKGQsZiksZC5yZXR1cm49YSxhPWQpOlxuKGMoYSxkKSxkPXhoKGYsYS5tb2RlLGgpLGQucmV0dXJuPWEsYT1kKSxnKGEpKTpjKGEsZCl9cmV0dXJuIEp9dmFyIEJoPXZoKCEwKSxDaD12aCghMSksRGg9e30sRWg9VWYoRGgpLEZoPVVmKERoKSxHaD1VZihEaCk7ZnVuY3Rpb24gSGgoYSl7aWYoYT09PURoKXRocm93IEVycm9yKHAoMTc0KSk7cmV0dXJuIGF9ZnVuY3Rpb24gSWgoYSxiKXtHKEdoLGIpO0coRmgsYSk7RyhFaCxEaCk7YT1iLm5vZGVUeXBlO3N3aXRjaChhKXtjYXNlIDk6Y2FzZSAxMTpiPShiPWIuZG9jdW1lbnRFbGVtZW50KT9iLm5hbWVzcGFjZVVSSTpsYihudWxsLFwiXCIpO2JyZWFrO2RlZmF1bHQ6YT04PT09YT9iLnBhcmVudE5vZGU6YixiPWEubmFtZXNwYWNlVVJJfHxudWxsLGE9YS50YWdOYW1lLGI9bGIoYixhKX1FKEVoKTtHKEVoLGIpfWZ1bmN0aW9uIEpoKCl7RShFaCk7RShGaCk7RShHaCl9XG5mdW5jdGlvbiBLaChhKXtIaChHaC5jdXJyZW50KTt2YXIgYj1IaChFaC5jdXJyZW50KTt2YXIgYz1sYihiLGEudHlwZSk7YiE9PWMmJihHKEZoLGEpLEcoRWgsYykpfWZ1bmN0aW9uIExoKGEpe0ZoLmN1cnJlbnQ9PT1hJiYoRShFaCksRShGaCkpfXZhciBNPVVmKDApO1xuZnVuY3Rpb24gTWgoYSl7Zm9yKHZhciBiPWE7bnVsbCE9PWI7KXtpZigxMz09PWIudGFnKXt2YXIgYz1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJihjPWMuZGVoeWRyYXRlZCxudWxsPT09Y3x8XCIkP1wiPT09Yy5kYXRhfHxcIiQhXCI9PT1jLmRhdGEpKXJldHVybiBifWVsc2UgaWYoMTk9PT1iLnRhZyYmdm9pZCAwIT09Yi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKXtpZigwIT09KGIuZmxhZ3MmMTI4KSlyZXR1cm4gYn1lbHNlIGlmKG51bGwhPT1iLmNoaWxkKXtiLmNoaWxkLnJldHVybj1iO2I9Yi5jaGlsZDtjb250aW51ZX1pZihiPT09YSlicmVhaztmb3IoO251bGw9PT1iLnNpYmxpbmc7KXtpZihudWxsPT09Yi5yZXR1cm58fGIucmV0dXJuPT09YSlyZXR1cm4gbnVsbDtiPWIucmV0dXJufWIuc2libGluZy5yZXR1cm49Yi5yZXR1cm47Yj1iLnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIE5oPVtdO1xuZnVuY3Rpb24gT2goKXtmb3IodmFyIGE9MDthPE5oLmxlbmd0aDthKyspTmhbYV0uX3dvcmtJblByb2dyZXNzVmVyc2lvblByaW1hcnk9bnVsbDtOaC5sZW5ndGg9MH12YXIgUGg9dWEuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcixRaD11YS5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxSaD0wLE49bnVsbCxPPW51bGwsUD1udWxsLFNoPSExLFRoPSExLFVoPTAsVmg9MDtmdW5jdGlvbiBRKCl7dGhyb3cgRXJyb3IocCgzMjEpKTt9ZnVuY3Rpb24gV2goYSxiKXtpZihudWxsPT09YilyZXR1cm4hMTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoJiZjPGEubGVuZ3RoO2MrKylpZighSGUoYVtjXSxiW2NdKSlyZXR1cm4hMTtyZXR1cm4hMH1cbmZ1bmN0aW9uIFhoKGEsYixjLGQsZSxmKXtSaD1mO049YjtiLm1lbW9pemVkU3RhdGU9bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7Yi5sYW5lcz0wO1BoLmN1cnJlbnQ9bnVsbD09PWF8fG51bGw9PT1hLm1lbW9pemVkU3RhdGU/WWg6Wmg7YT1jKGQsZSk7aWYoVGgpe2Y9MDtkb3tUaD0hMTtVaD0wO2lmKDI1PD1mKXRocm93IEVycm9yKHAoMzAxKSk7Zis9MTtQPU89bnVsbDtiLnVwZGF0ZVF1ZXVlPW51bGw7UGguY3VycmVudD0kaDthPWMoZCxlKX13aGlsZShUaCl9UGguY3VycmVudD1haTtiPW51bGwhPT1PJiZudWxsIT09Ty5uZXh0O1JoPTA7UD1PPU49bnVsbDtTaD0hMTtpZihiKXRocm93IEVycm9yKHAoMzAwKSk7cmV0dXJuIGF9ZnVuY3Rpb24gYmkoKXt2YXIgYT0wIT09VWg7VWg9MDtyZXR1cm4gYX1cbmZ1bmN0aW9uIGNpKCl7dmFyIGE9e21lbW9pemVkU3RhdGU6bnVsbCxiYXNlU3RhdGU6bnVsbCxiYXNlUXVldWU6bnVsbCxxdWV1ZTpudWxsLG5leHQ6bnVsbH07bnVsbD09PVA/Ti5tZW1vaXplZFN0YXRlPVA9YTpQPVAubmV4dD1hO3JldHVybiBQfWZ1bmN0aW9uIGRpKCl7aWYobnVsbD09PU8pe3ZhciBhPU4uYWx0ZXJuYXRlO2E9bnVsbCE9PWE/YS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBhPU8ubmV4dDt2YXIgYj1udWxsPT09UD9OLm1lbW9pemVkU3RhdGU6UC5uZXh0O2lmKG51bGwhPT1iKVA9YixPPWE7ZWxzZXtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDMxMCkpO089YTthPXttZW1vaXplZFN0YXRlOk8ubWVtb2l6ZWRTdGF0ZSxiYXNlU3RhdGU6Ty5iYXNlU3RhdGUsYmFzZVF1ZXVlOk8uYmFzZVF1ZXVlLHF1ZXVlOk8ucXVldWUsbmV4dDpudWxsfTtudWxsPT09UD9OLm1lbW9pemVkU3RhdGU9UD1hOlA9UC5uZXh0PWF9cmV0dXJuIFB9XG5mdW5jdGlvbiBlaShhLGIpe3JldHVyblwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yn1cbmZ1bmN0aW9uIGZpKGEpe3ZhciBiPWRpKCksYz1iLnF1ZXVlO2lmKG51bGw9PT1jKXRocm93IEVycm9yKHAoMzExKSk7Yy5sYXN0UmVuZGVyZWRSZWR1Y2VyPWE7dmFyIGQ9TyxlPWQuYmFzZVF1ZXVlLGY9Yy5wZW5kaW5nO2lmKG51bGwhPT1mKXtpZihudWxsIT09ZSl7dmFyIGc9ZS5uZXh0O2UubmV4dD1mLm5leHQ7Zi5uZXh0PWd9ZC5iYXNlUXVldWU9ZT1mO2MucGVuZGluZz1udWxsfWlmKG51bGwhPT1lKXtmPWUubmV4dDtkPWQuYmFzZVN0YXRlO3ZhciBoPWc9bnVsbCxrPW51bGwsbD1mO2Rve3ZhciBtPWwubGFuZTtpZigoUmgmbSk9PT1tKW51bGwhPT1rJiYoaz1rLm5leHQ9e2xhbmU6MCxhY3Rpb246bC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpsLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpsLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD1sLmhhc0VhZ2VyU3RhdGU/bC5lYWdlclN0YXRlOmEoZCxsLmFjdGlvbik7ZWxzZXt2YXIgcT17bGFuZTptLGFjdGlvbjpsLmFjdGlvbixoYXNFYWdlclN0YXRlOmwuaGFzRWFnZXJTdGF0ZSxcbmVhZ2VyU3RhdGU6bC5lYWdlclN0YXRlLG5leHQ6bnVsbH07bnVsbD09PWs/KGg9az1xLGc9ZCk6az1rLm5leHQ9cTtOLmxhbmVzfD1tO2hofD1tfWw9bC5uZXh0fXdoaWxlKG51bGwhPT1sJiZsIT09Zik7bnVsbD09PWs/Zz1kOmsubmV4dD1oO0hlKGQsYi5tZW1vaXplZFN0YXRlKXx8KFVnPSEwKTtiLm1lbW9pemVkU3RhdGU9ZDtiLmJhc2VTdGF0ZT1nO2IuYmFzZVF1ZXVlPWs7Yy5sYXN0UmVuZGVyZWRTdGF0ZT1kfWE9Yy5pbnRlcmxlYXZlZDtpZihudWxsIT09YSl7ZT1hO2RvIGY9ZS5sYW5lLE4ubGFuZXN8PWYsaGh8PWYsZT1lLm5leHQ7d2hpbGUoZSE9PWEpfWVsc2UgbnVsbD09PWUmJihjLmxhbmVzPTApO3JldHVybltiLm1lbW9pemVkU3RhdGUsYy5kaXNwYXRjaF19XG5mdW5jdGlvbiBnaShhKXt2YXIgYj1kaSgpLGM9Yi5xdWV1ZTtpZihudWxsPT09Yyl0aHJvdyBFcnJvcihwKDMxMSkpO2MubGFzdFJlbmRlcmVkUmVkdWNlcj1hO3ZhciBkPWMuZGlzcGF0Y2gsZT1jLnBlbmRpbmcsZj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWUpe2MucGVuZGluZz1udWxsO3ZhciBnPWU9ZS5uZXh0O2RvIGY9YShmLGcuYWN0aW9uKSxnPWcubmV4dDt3aGlsZShnIT09ZSk7SGUoZixiLm1lbW9pemVkU3RhdGUpfHwoVWc9ITApO2IubWVtb2l6ZWRTdGF0ZT1mO251bGw9PT1iLmJhc2VRdWV1ZSYmKGIuYmFzZVN0YXRlPWYpO2MubGFzdFJlbmRlcmVkU3RhdGU9Zn1yZXR1cm5bZixkXX1mdW5jdGlvbiBoaSgpe31cbmZ1bmN0aW9uIGlpKGEsYil7dmFyIGM9TixkPWRpKCksZT1iKCksZj0hSGUoZC5tZW1vaXplZFN0YXRlLGUpO2YmJihkLm1lbW9pemVkU3RhdGU9ZSxVZz0hMCk7ZD1kLnF1ZXVlO2ppKGtpLmJpbmQobnVsbCxjLGQsYSksW2FdKTtpZihkLmdldFNuYXBzaG90IT09Ynx8Znx8bnVsbCE9PVAmJlAubWVtb2l6ZWRTdGF0ZS50YWcmMSl7Yy5mbGFnc3w9MjA0ODtsaSg5LG1pLmJpbmQobnVsbCxjLGQsZSxiKSx2b2lkIDAsbnVsbCk7aWYobnVsbD09PVIpdGhyb3cgRXJyb3IocCgzNDkpKTswIT09KFJoJjMwKXx8bmkoYyxiLGUpfXJldHVybiBlfWZ1bmN0aW9uIG5pKGEsYixjKXthLmZsYWdzfD0xNjM4NDthPXtnZXRTbmFwc2hvdDpiLHZhbHVlOmN9O2I9Ti51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxOLnVwZGF0ZVF1ZXVlPWIsYi5zdG9yZXM9W2FdKTooYz1iLnN0b3JlcyxudWxsPT09Yz9iLnN0b3Jlcz1bYV06Yy5wdXNoKGEpKX1cbmZ1bmN0aW9uIG1pKGEsYixjLGQpe2IudmFsdWU9YztiLmdldFNuYXBzaG90PWQ7b2koYikmJnBpKGEpfWZ1bmN0aW9uIGtpKGEsYixjKXtyZXR1cm4gYyhmdW5jdGlvbigpe29pKGIpJiZwaShhKX0pfWZ1bmN0aW9uIG9pKGEpe3ZhciBiPWEuZ2V0U25hcHNob3Q7YT1hLnZhbHVlO3RyeXt2YXIgYz1iKCk7cmV0dXJuIUhlKGEsYyl9Y2F0Y2goZCl7cmV0dXJuITB9fWZ1bmN0aW9uIHBpKGEpe3ZhciBiPVpnKGEsMSk7bnVsbCE9PWImJm1oKGIsYSwxLC0xKX1cbmZ1bmN0aW9uIHFpKGEpe3ZhciBiPWNpKCk7XCJmdW5jdGlvblwiPT09dHlwZW9mIGEmJihhPWEoKSk7Yi5tZW1vaXplZFN0YXRlPWIuYmFzZVN0YXRlPWE7YT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZWksbGFzdFJlbmRlcmVkU3RhdGU6YX07Yi5xdWV1ZT1hO2E9YS5kaXNwYXRjaD1yaS5iaW5kKG51bGwsTixhKTtyZXR1cm5bYi5tZW1vaXplZFN0YXRlLGFdfVxuZnVuY3Rpb24gbGkoYSxiLGMsZCl7YT17dGFnOmEsY3JlYXRlOmIsZGVzdHJveTpjLGRlcHM6ZCxuZXh0Om51bGx9O2I9Ti51cGRhdGVRdWV1ZTtudWxsPT09Yj8oYj17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxOLnVwZGF0ZVF1ZXVlPWIsYi5sYXN0RWZmZWN0PWEubmV4dD1hKTooYz1iLmxhc3RFZmZlY3QsbnVsbD09PWM/Yi5sYXN0RWZmZWN0PWEubmV4dD1hOihkPWMubmV4dCxjLm5leHQ9YSxhLm5leHQ9ZCxiLmxhc3RFZmZlY3Q9YSkpO3JldHVybiBhfWZ1bmN0aW9uIHNpKCl7cmV0dXJuIGRpKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiB0aShhLGIsYyxkKXt2YXIgZT1jaSgpO04uZmxhZ3N8PWE7ZS5tZW1vaXplZFN0YXRlPWxpKDF8YixjLHZvaWQgMCx2b2lkIDA9PT1kP251bGw6ZCl9XG5mdW5jdGlvbiB1aShhLGIsYyxkKXt2YXIgZT1kaSgpO2Q9dm9pZCAwPT09ZD9udWxsOmQ7dmFyIGY9dm9pZCAwO2lmKG51bGwhPT1PKXt2YXIgZz1PLm1lbW9pemVkU3RhdGU7Zj1nLmRlc3Ryb3k7aWYobnVsbCE9PWQmJldoKGQsZy5kZXBzKSl7ZS5tZW1vaXplZFN0YXRlPWxpKGIsYyxmLGQpO3JldHVybn19Ti5mbGFnc3w9YTtlLm1lbW9pemVkU3RhdGU9bGkoMXxiLGMsZixkKX1mdW5jdGlvbiB2aShhLGIpe3JldHVybiB0aSg4MzkwNjU2LDgsYSxiKX1mdW5jdGlvbiBqaShhLGIpe3JldHVybiB1aSgyMDQ4LDgsYSxiKX1mdW5jdGlvbiB3aShhLGIpe3JldHVybiB1aSg0LDIsYSxiKX1mdW5jdGlvbiB4aShhLGIpe3JldHVybiB1aSg0LDQsYSxiKX1cbmZ1bmN0aW9uIHlpKGEsYil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIpcmV0dXJuIGE9YSgpLGIoYSksZnVuY3Rpb24oKXtiKG51bGwpfTtpZihudWxsIT09YiYmdm9pZCAwIT09YilyZXR1cm4gYT1hKCksYi5jdXJyZW50PWEsZnVuY3Rpb24oKXtiLmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gemkoYSxiLGMpe2M9bnVsbCE9PWMmJnZvaWQgMCE9PWM/Yy5jb25jYXQoW2FdKTpudWxsO3JldHVybiB1aSg0LDQseWkuYmluZChudWxsLGIsYSksYyl9ZnVuY3Rpb24gQWkoKXt9ZnVuY3Rpb24gQmkoYSxiKXt2YXIgYz1kaSgpO2I9dm9pZCAwPT09Yj9udWxsOmI7dmFyIGQ9Yy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1kJiZudWxsIT09YiYmV2goYixkWzFdKSlyZXR1cm4gZFswXTtjLm1lbW9pemVkU3RhdGU9W2EsYl07cmV0dXJuIGF9XG5mdW5jdGlvbiBDaShhLGIpe3ZhciBjPWRpKCk7Yj12b2lkIDA9PT1iP251bGw6Yjt2YXIgZD1jLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWQmJm51bGwhPT1iJiZXaChiLGRbMV0pKXJldHVybiBkWzBdO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX1mdW5jdGlvbiBEaShhLGIsYyl7aWYoMD09PShSaCYyMSkpcmV0dXJuIGEuYmFzZVN0YXRlJiYoYS5iYXNlU3RhdGU9ITEsVWc9ITApLGEubWVtb2l6ZWRTdGF0ZT1jO0hlKGMsYil8fChjPXljKCksTi5sYW5lc3w9YyxoaHw9YyxhLmJhc2VTdGF0ZT0hMCk7cmV0dXJuIGJ9ZnVuY3Rpb24gRWkoYSxiKXt2YXIgYz1DO0M9MCE9PWMmJjQ+Yz9jOjQ7YSghMCk7dmFyIGQ9UWgudHJhbnNpdGlvbjtRaC50cmFuc2l0aW9uPXt9O3RyeXthKCExKSxiKCl9ZmluYWxseXtDPWMsUWgudHJhbnNpdGlvbj1kfX1mdW5jdGlvbiBGaSgpe3JldHVybiBkaSgpLm1lbW9pemVkU3RhdGV9XG5mdW5jdGlvbiBHaShhLGIsYyl7dmFyIGQ9bGgoYSk7Yz17bGFuZTpkLGFjdGlvbjpjLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoSGkoYSkpSWkoYixjKTtlbHNlIGlmKGM9WWcoYSxiLGMsZCksbnVsbCE9PWMpe3ZhciBlPUwoKTttaChjLGEsZCxlKTtKaShjLGIsZCl9fVxuZnVuY3Rpb24gcmkoYSxiLGMpe3ZhciBkPWxoKGEpLGU9e2xhbmU6ZCxhY3Rpb246YyxoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKEhpKGEpKUlpKGIsZSk7ZWxzZXt2YXIgZj1hLmFsdGVybmF0ZTtpZigwPT09YS5sYW5lcyYmKG51bGw9PT1mfHwwPT09Zi5sYW5lcykmJihmPWIubGFzdFJlbmRlcmVkUmVkdWNlcixudWxsIT09ZikpdHJ5e3ZhciBnPWIubGFzdFJlbmRlcmVkU3RhdGUsaD1mKGcsYyk7ZS5oYXNFYWdlclN0YXRlPSEwO2UuZWFnZXJTdGF0ZT1oO2lmKEhlKGgsZykpe3ZhciBrPWIuaW50ZXJsZWF2ZWQ7bnVsbD09PWs/KGUubmV4dD1lLFhnKGIpKTooZS5uZXh0PWsubmV4dCxrLm5leHQ9ZSk7Yi5pbnRlcmxlYXZlZD1lO3JldHVybn19Y2F0Y2gobCl7fWZpbmFsbHl7fWM9WWcoYSxiLGUsZCk7bnVsbCE9PWMmJihlPUwoKSxtaChjLGEsZCxlKSxKaShjLGIsZCkpfX1cbmZ1bmN0aW9uIEhpKGEpe3ZhciBiPWEuYWx0ZXJuYXRlO3JldHVybiBhPT09Tnx8bnVsbCE9PWImJmI9PT1OfWZ1bmN0aW9uIElpKGEsYil7VGg9U2g9ITA7dmFyIGM9YS5wZW5kaW5nO251bGw9PT1jP2IubmV4dD1iOihiLm5leHQ9Yy5uZXh0LGMubmV4dD1iKTthLnBlbmRpbmc9Yn1mdW5jdGlvbiBKaShhLGIsYyl7aWYoMCE9PShjJjQxOTQyNDApKXt2YXIgZD1iLmxhbmVzO2QmPWEucGVuZGluZ0xhbmVzO2N8PWQ7Yi5sYW5lcz1jO0NjKGEsYyl9fVxudmFyIGFpPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpRLHVzZUNvbnRleHQ6USx1c2VFZmZlY3Q6USx1c2VJbXBlcmF0aXZlSGFuZGxlOlEsdXNlSW5zZXJ0aW9uRWZmZWN0OlEsdXNlTGF5b3V0RWZmZWN0OlEsdXNlTWVtbzpRLHVzZVJlZHVjZXI6USx1c2VSZWY6USx1c2VTdGF0ZTpRLHVzZURlYnVnVmFsdWU6USx1c2VEZWZlcnJlZFZhbHVlOlEsdXNlVHJhbnNpdGlvbjpRLHVzZU11dGFibGVTb3VyY2U6USx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpRLHVzZUlkOlEsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxZaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXtjaSgpLm1lbW9pemVkU3RhdGU9W2Esdm9pZCAwPT09Yj9udWxsOmJdO3JldHVybiBhfSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDp2aSx1c2VJbXBlcmF0aXZlSGFuZGxlOmZ1bmN0aW9uKGEsYixjKXtjPW51bGwhPT1jJiZ2b2lkIDAhPT1jP2MuY29uY2F0KFthXSk6bnVsbDtyZXR1cm4gdGkoNDE5NDMwOCxcbjQseWkuYmluZChudWxsLGIsYSksYyl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihhLGIpe3JldHVybiB0aSg0MTk0MzA4LDQsYSxiKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRpKDQsMixhLGIpfSx1c2VNZW1vOmZ1bmN0aW9uKGEsYil7dmFyIGM9Y2koKTtiPXZvaWQgMD09PWI/bnVsbDpiO2E9YSgpO2MubWVtb2l6ZWRTdGF0ZT1bYSxiXTtyZXR1cm4gYX0sdXNlUmVkdWNlcjpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Y2koKTtiPXZvaWQgMCE9PWM/YyhiKTpiO2QubWVtb2l6ZWRTdGF0ZT1kLmJhc2VTdGF0ZT1iO2E9e3BlbmRpbmc6bnVsbCxpbnRlcmxlYXZlZDpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmEsbGFzdFJlbmRlcmVkU3RhdGU6Yn07ZC5xdWV1ZT1hO2E9YS5kaXNwYXRjaD1HaS5iaW5kKG51bGwsTixhKTtyZXR1cm5bZC5tZW1vaXplZFN0YXRlLGFdfSx1c2VSZWY6ZnVuY3Rpb24oYSl7dmFyIGI9XG5jaSgpO2E9e2N1cnJlbnQ6YX07cmV0dXJuIGIubWVtb2l6ZWRTdGF0ZT1hfSx1c2VTdGF0ZTpxaSx1c2VEZWJ1Z1ZhbHVlOkFpLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oYSl7cmV0dXJuIGNpKCkubWVtb2l6ZWRTdGF0ZT1hfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9cWkoITEpLGI9YVswXTthPUVpLmJpbmQobnVsbCxhWzFdKTtjaSgpLm1lbW9pemVkU3RhdGU9YTtyZXR1cm5bYixhXX0sdXNlTXV0YWJsZVNvdXJjZTpmdW5jdGlvbigpe30sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU4sZT1jaSgpO2lmKEkpe2lmKHZvaWQgMD09PWMpdGhyb3cgRXJyb3IocCg0MDcpKTtjPWMoKX1lbHNle2M9YigpO2lmKG51bGw9PT1SKXRocm93IEVycm9yKHAoMzQ5KSk7MCE9PShSaCYzMCl8fG5pKGQsYixjKX1lLm1lbW9pemVkU3RhdGU9Yzt2YXIgZj17dmFsdWU6YyxnZXRTbmFwc2hvdDpifTtlLnF1ZXVlPWY7dmkoa2kuYmluZChudWxsLGQsXG5mLGEpLFthXSk7ZC5mbGFnc3w9MjA0ODtsaSg5LG1pLmJpbmQobnVsbCxkLGYsYyxiKSx2b2lkIDAsbnVsbCk7cmV0dXJuIGN9LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGE9Y2koKSxiPVIuaWRlbnRpZmllclByZWZpeDtpZihJKXt2YXIgYz1zZzt2YXIgZD1yZztjPShkJn4oMTw8MzItb2MoZCktMSkpLnRvU3RyaW5nKDMyKStjO2I9XCI6XCIrYitcIlJcIitjO2M9VWgrKzswPGMmJihiKz1cIkhcIitjLnRvU3RyaW5nKDMyKSk7Yis9XCI6XCJ9ZWxzZSBjPVZoKyssYj1cIjpcIitiK1wiclwiK2MudG9TdHJpbmcoMzIpK1wiOlwiO3JldHVybiBhLm1lbW9pemVkU3RhdGU9Yn0sdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxaaD17cmVhZENvbnRleHQ6VmcsdXNlQ2FsbGJhY2s6QmksdXNlQ29udGV4dDpWZyx1c2VFZmZlY3Q6amksdXNlSW1wZXJhdGl2ZUhhbmRsZTp6aSx1c2VJbnNlcnRpb25FZmZlY3Q6d2ksdXNlTGF5b3V0RWZmZWN0OnhpLHVzZU1lbW86Q2ksdXNlUmVkdWNlcjpmaSx1c2VSZWY6c2ksdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZmkoZWkpfSxcbnVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1kaSgpO3JldHVybiBEaShiLE8ubWVtb2l6ZWRTdGF0ZSxhKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBhPWZpKGVpKVswXSxiPWRpKCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bYSxiXX0sdXNlTXV0YWJsZVNvdXJjZTpoaSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTppaSx1c2VJZDpGaSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LCRoPXtyZWFkQ29udGV4dDpWZyx1c2VDYWxsYmFjazpCaSx1c2VDb250ZXh0OlZnLHVzZUVmZmVjdDpqaSx1c2VJbXBlcmF0aXZlSGFuZGxlOnppLHVzZUluc2VydGlvbkVmZmVjdDp3aSx1c2VMYXlvdXRFZmZlY3Q6eGksdXNlTWVtbzpDaSx1c2VSZWR1Y2VyOmdpLHVzZVJlZjpzaSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBnaShlaSl9LHVzZURlYnVnVmFsdWU6QWksdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihhKXt2YXIgYj1kaSgpO3JldHVybiBudWxsPT09XG5PP2IubWVtb2l6ZWRTdGF0ZT1hOkRpKGIsTy5tZW1vaXplZFN0YXRlLGEpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9Z2koZWkpWzBdLGI9ZGkoKS5tZW1vaXplZFN0YXRlO3JldHVyblthLGJdfSx1c2VNdXRhYmxlU291cmNlOmhpLHVzZVN5bmNFeHRlcm5hbFN0b3JlOmlpLHVzZUlkOkZpLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX07ZnVuY3Rpb24gS2koYSxiKXt0cnl7dmFyIGM9XCJcIixkPWI7ZG8gYys9UGEoZCksZD1kLnJldHVybjt3aGlsZShkKTt2YXIgZT1jfWNhdGNoKGYpe2U9XCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIitmLm1lc3NhZ2UrXCJcXG5cIitmLnN0YWNrfXJldHVybnt2YWx1ZTphLHNvdXJjZTpiLHN0YWNrOmUsZGlnZXN0Om51bGx9fWZ1bmN0aW9uIExpKGEsYixjKXtyZXR1cm57dmFsdWU6YSxzb3VyY2U6bnVsbCxzdGFjazpudWxsIT1jP2M6bnVsbCxkaWdlc3Q6bnVsbCE9Yj9iOm51bGx9fVxuZnVuY3Rpb24gTWkoYSxiKXt0cnl7Y29uc29sZS5lcnJvcihiLnZhbHVlKX1jYXRjaChjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYzt9KX19dmFyIE5pPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwO2Z1bmN0aW9uIE9pKGEsYixjKXtjPWNoKC0xLGMpO2MudGFnPTM7Yy5wYXlsb2FkPXtlbGVtZW50Om51bGx9O3ZhciBkPWIudmFsdWU7Yy5jYWxsYmFjaz1mdW5jdGlvbigpe1BpfHwoUGk9ITAsUWk9ZCk7TWkoYSxiKX07cmV0dXJuIGN9XG5mdW5jdGlvbiBSaShhLGIsYyl7Yz1jaCgtMSxjKTtjLnRhZz0zO3ZhciBkPWEudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3ZhciBlPWIudmFsdWU7Yy5wYXlsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIGQoZSl9O2MuY2FsbGJhY2s9ZnVuY3Rpb24oKXtNaShhLGIpfX12YXIgZj1hLnN0YXRlTm9kZTtudWxsIT09ZiYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGYuY29tcG9uZW50RGlkQ2F0Y2gmJihjLmNhbGxiYWNrPWZ1bmN0aW9uKCl7TWkoYSxiKTtcImZ1bmN0aW9uXCIhPT10eXBlb2YgZCYmKG51bGw9PT1TaT9TaT1uZXcgU2V0KFt0aGlzXSk6U2kuYWRkKHRoaXMpKTt2YXIgYz1iLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goYi52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWM/YzpcIlwifSl9KTtyZXR1cm4gY31cbmZ1bmN0aW9uIFRpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtpZihudWxsPT09ZCl7ZD1hLnBpbmdDYWNoZT1uZXcgTmk7dmFyIGU9bmV3IFNldDtkLnNldChiLGUpfWVsc2UgZT1kLmdldChiKSx2b2lkIDA9PT1lJiYoZT1uZXcgU2V0LGQuc2V0KGIsZSkpO2UuaGFzKGMpfHwoZS5hZGQoYyksYT1VaS5iaW5kKG51bGwsYSxiLGMpLGIudGhlbihhLGEpKX1mdW5jdGlvbiBWaShhKXtkb3t2YXIgYjtpZihiPTEzPT09YS50YWcpYj1hLm1lbW9pemVkU3RhdGUsYj1udWxsIT09Yj9udWxsIT09Yi5kZWh5ZHJhdGVkPyEwOiExOiEwO2lmKGIpcmV0dXJuIGE7YT1hLnJldHVybn13aGlsZShudWxsIT09YSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBXaShhLGIsYyxkLGUpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiBhPT09Yj9hLmZsYWdzfD02NTUzNjooYS5mbGFnc3w9MTI4LGMuZmxhZ3N8PTEzMTA3MixjLmZsYWdzJj0tNTI4MDUsMT09PWMudGFnJiYobnVsbD09PWMuYWx0ZXJuYXRlP2MudGFnPTE3OihiPWNoKC0xLDEpLGIudGFnPTIsZGgoYyxiLDEpKSksYy5sYW5lc3w9MSksYTthLmZsYWdzfD02NTUzNjthLmxhbmVzPWU7cmV0dXJuIGF9dmFyIFhpPXVhLlJlYWN0Q3VycmVudE93bmVyLFVnPSExO2Z1bmN0aW9uIFlpKGEsYixjLGQpe2IuY2hpbGQ9bnVsbD09PWE/Q2goYixudWxsLGMsZCk6QmgoYixhLmNoaWxkLGMsZCl9XG5mdW5jdGlvbiBaaShhLGIsYyxkLGUpe2M9Yy5yZW5kZXI7dmFyIGY9Yi5yZWY7VGcoYixlKTtkPVhoKGEsYixjLGQsZixlKTtjPWJpKCk7aWYobnVsbCE9PWEmJiFVZylyZXR1cm4gYi51cGRhdGVRdWV1ZT1hLnVwZGF0ZVF1ZXVlLGIuZmxhZ3MmPS0yMDUzLGEubGFuZXMmPX5lLCRpKGEsYixlKTtJJiZjJiZ2ZyhiKTtiLmZsYWdzfD0xO1lpKGEsYixkLGUpO3JldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gYWooYSxiLGMsZCxlKXtpZihudWxsPT09YSl7dmFyIGY9Yy50eXBlO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBmJiYhYmooZikmJnZvaWQgMD09PWYuZGVmYXVsdFByb3BzJiZudWxsPT09Yy5jb21wYXJlJiZ2b2lkIDA9PT1jLmRlZmF1bHRQcm9wcylyZXR1cm4gYi50YWc9MTUsYi50eXBlPWYsY2ooYSxiLGYsZCxlKTthPXloKGMudHlwZSxudWxsLGQsYixiLm1vZGUsZSk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfWY9YS5jaGlsZDtpZigwPT09KGEubGFuZXMmZSkpe3ZhciBnPWYubWVtb2l6ZWRQcm9wcztjPWMuY29tcGFyZTtjPW51bGwhPT1jP2M6SWU7aWYoYyhnLGQpJiZhLnJlZj09PWIucmVmKXJldHVybiAkaShhLGIsZSl9Yi5mbGFnc3w9MTthPXdoKGYsZCk7YS5yZWY9Yi5yZWY7YS5yZXR1cm49YjtyZXR1cm4gYi5jaGlsZD1hfVxuZnVuY3Rpb24gY2ooYSxiLGMsZCxlKXtpZihudWxsIT09YSl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKEllKGYsZCkmJmEucmVmPT09Yi5yZWYpaWYoVWc9ITEsYi5wZW5kaW5nUHJvcHM9ZD1mLDAhPT0oYS5sYW5lcyZlKSkwIT09KGEuZmxhZ3MmMTMxMDcyKSYmKFVnPSEwKTtlbHNlIHJldHVybiBiLmxhbmVzPWEubGFuZXMsJGkoYSxiLGUpfXJldHVybiBkaihhLGIsYyxkLGUpfVxuZnVuY3Rpb24gZWooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzLGU9ZC5jaGlsZHJlbixmPW51bGwhPT1hP2EubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKFwiaGlkZGVuXCI9PT1kLm1vZGUpaWYoMD09PShiLm1vZGUmMSkpYi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpudWxsfSxHKGZqLGdqKSxnanw9YztlbHNle2lmKDA9PT0oYyYxMDczNzQxODI0KSlyZXR1cm4gYT1udWxsIT09Zj9mLmJhc2VMYW5lc3xjOmMsYi5sYW5lcz1iLmNoaWxkTGFuZXM9MTA3Mzc0MTgyNCxiLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczphLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGIudXBkYXRlUXVldWU9bnVsbCxHKGZqLGdqKSxnanw9YSxudWxsO2IubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOjAsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH07ZD1udWxsIT09Zj9mLmJhc2VMYW5lczpjO0coZmosZ2opO2dqfD1kfWVsc2UgbnVsbCE9PVxuZj8oZD1mLmJhc2VMYW5lc3xjLGIubWVtb2l6ZWRTdGF0ZT1udWxsKTpkPWMsRyhmaixnaiksZ2p8PWQ7WWkoYSxiLGUsYyk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gaGooYSxiKXt2YXIgYz1iLnJlZjtpZihudWxsPT09YSYmbnVsbCE9PWN8fG51bGwhPT1hJiZhLnJlZiE9PWMpYi5mbGFnc3w9NTEyLGIuZmxhZ3N8PTIwOTcxNTJ9ZnVuY3Rpb24gZGooYSxiLGMsZCxlKXt2YXIgZj1aZihjKT9YZjpILmN1cnJlbnQ7Zj1ZZihiLGYpO1RnKGIsZSk7Yz1YaChhLGIsYyxkLGYsZSk7ZD1iaSgpO2lmKG51bGwhPT1hJiYhVWcpcmV0dXJuIGIudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZSxiLmZsYWdzJj0tMjA1MyxhLmxhbmVzJj1+ZSwkaShhLGIsZSk7SSYmZCYmdmcoYik7Yi5mbGFnc3w9MTtZaShhLGIsYyxlKTtyZXR1cm4gYi5jaGlsZH1cbmZ1bmN0aW9uIGlqKGEsYixjLGQsZSl7aWYoWmYoYykpe3ZhciBmPSEwO2NnKGIpfWVsc2UgZj0hMTtUZyhiLGUpO2lmKG51bGw9PT1iLnN0YXRlTm9kZSlqaihhLGIpLHBoKGIsYyxkKSxyaChiLGMsZCxlKSxkPSEwO2Vsc2UgaWYobnVsbD09PWEpe3ZhciBnPWIuc3RhdGVOb2RlLGg9Yi5tZW1vaXplZFByb3BzO2cucHJvcHM9aDt2YXIgaz1nLmNvbnRleHQsbD1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgbCYmbnVsbCE9PWw/bD1WZyhsKToobD1aZihjKT9YZjpILmN1cnJlbnQsbD1ZZihiLGwpKTt2YXIgbT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyxxPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBtfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc3x8XG4oaCE9PWR8fGshPT1sKSYmcWgoYixnLGQsbCk7JGc9ITE7dmFyIHI9Yi5tZW1vaXplZFN0YXRlO2cuc3RhdGU9cjtnaChiLGQsZyxlKTtrPWIubWVtb2l6ZWRTdGF0ZTtoIT09ZHx8ciE9PWt8fFdmLmN1cnJlbnR8fCRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgbSYmKGtoKGIsYyxtLGQpLGs9Yi5tZW1vaXplZFN0YXRlKSwoaD0kZ3x8b2goYixjLGgsZCxyLGssbCkpPyhxfHxcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnR8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsTW91bnQmJmcuY29tcG9uZW50V2lsbE1vdW50KCksXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmZy5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCkpOlxuKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLmNvbXBvbmVudERpZE1vdW50JiYoYi5mbGFnc3w9NDE5NDMwOCksYi5tZW1vaXplZFByb3BzPWQsYi5tZW1vaXplZFN0YXRlPWspLGcucHJvcHM9ZCxnLnN0YXRlPWssZy5jb250ZXh0PWwsZD1oKTooXCJmdW5jdGlvblwiPT09dHlwZW9mIGcuY29tcG9uZW50RGlkTW91bnQmJihiLmZsYWdzfD00MTk0MzA4KSxkPSExKX1lbHNle2c9Yi5zdGF0ZU5vZGU7YmgoYSxiKTtoPWIubWVtb2l6ZWRQcm9wcztsPWIudHlwZT09PWIuZWxlbWVudFR5cGU/aDpMZyhiLnR5cGUsaCk7Zy5wcm9wcz1sO3E9Yi5wZW5kaW5nUHJvcHM7cj1nLmNvbnRleHQ7az1jLmNvbnRleHRUeXBlO1wib2JqZWN0XCI9PT10eXBlb2YgayYmbnVsbCE9PWs/az1WZyhrKTooaz1aZihjKT9YZjpILmN1cnJlbnQsaz1ZZihiLGspKTt2YXIgeT1jLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczsobT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgeXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcblwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwoaCE9PXF8fHIhPT1rKSYmcWgoYixnLGQsayk7JGc9ITE7cj1iLm1lbW9pemVkU3RhdGU7Zy5zdGF0ZT1yO2doKGIsZCxnLGUpO3ZhciBuPWIubWVtb2l6ZWRTdGF0ZTtoIT09cXx8ciE9PW58fFdmLmN1cnJlbnR8fCRnPyhcImZ1bmN0aW9uXCI9PT10eXBlb2YgeSYmKGtoKGIsYyx5LGQpLG49Yi5tZW1vaXplZFN0YXRlKSwobD0kZ3x8b2goYixjLGwsZCxyLG4sayl8fCExKT8obXx8XCJmdW5jdGlvblwiIT09dHlwZW9mIGcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJlwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmNvbXBvbmVudFdpbGxVcGRhdGV8fChcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnRXaWxsVXBkYXRlJiZnLmNvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspLFwiZnVuY3Rpb25cIj09PXR5cGVvZiBnLlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlJiZcbmcuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoZCxuLGspKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGUmJihiLmZsYWdzfD00KSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZy5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKGIuZmxhZ3N8PTEwMjQpKTooXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuY29tcG9uZW50RGlkVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT09dHlwZW9mIGcuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1hLm1lbW9pemVkU3RhdGV8fChiLmZsYWdzfD0xMDI0KSxiLm1lbW9pemVkUHJvcHM9ZCxiLm1lbW9pemVkU3RhdGU9biksZy5wcm9wcz1kLGcuc3RhdGU9bixnLmNvbnRleHQ9ayxkPWwpOihcImZ1bmN0aW9uXCIhPT10eXBlb2YgZy5jb21wb25lbnREaWRVcGRhdGV8fGg9PT1hLm1lbW9pemVkUHJvcHMmJnI9PT1cbmEubWVtb2l6ZWRTdGF0ZXx8KGIuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBnLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHxoPT09YS5tZW1vaXplZFByb3BzJiZyPT09YS5tZW1vaXplZFN0YXRlfHwoYi5mbGFnc3w9MTAyNCksZD0hMSl9cmV0dXJuIGtqKGEsYixjLGQsZixlKX1cbmZ1bmN0aW9uIGtqKGEsYixjLGQsZSxmKXtoaihhLGIpO3ZhciBnPTAhPT0oYi5mbGFncyYxMjgpO2lmKCFkJiYhZylyZXR1cm4gZSYmZGcoYixjLCExKSwkaShhLGIsZik7ZD1iLnN0YXRlTm9kZTtYaS5jdXJyZW50PWI7dmFyIGg9ZyYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGMuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6ZC5yZW5kZXIoKTtiLmZsYWdzfD0xO251bGwhPT1hJiZnPyhiLmNoaWxkPUJoKGIsYS5jaGlsZCxudWxsLGYpLGIuY2hpbGQ9QmgoYixudWxsLGgsZikpOllpKGEsYixoLGYpO2IubWVtb2l6ZWRTdGF0ZT1kLnN0YXRlO2UmJmRnKGIsYywhMCk7cmV0dXJuIGIuY2hpbGR9ZnVuY3Rpb24gbGooYSl7dmFyIGI9YS5zdGF0ZU5vZGU7Yi5wZW5kaW5nQ29udGV4dD9hZyhhLGIucGVuZGluZ0NvbnRleHQsYi5wZW5kaW5nQ29udGV4dCE9PWIuY29udGV4dCk6Yi5jb250ZXh0JiZhZyhhLGIuY29udGV4dCwhMSk7SWgoYSxiLmNvbnRhaW5lckluZm8pfVxuZnVuY3Rpb24gbWooYSxiLGMsZCxlKXtJZygpO0pnKGUpO2IuZmxhZ3N8PTI1NjtZaShhLGIsYyxkKTtyZXR1cm4gYi5jaGlsZH12YXIgbmo9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBvaihhKXtyZXR1cm57YmFzZUxhbmVzOmEsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19XG5mdW5jdGlvbiBwaihhLGIsYyl7dmFyIGQ9Yi5wZW5kaW5nUHJvcHMsZT1NLmN1cnJlbnQsZj0hMSxnPTAhPT0oYi5mbGFncyYxMjgpLGg7KGg9Zyl8fChoPW51bGwhPT1hJiZudWxsPT09YS5tZW1vaXplZFN0YXRlPyExOjAhPT0oZSYyKSk7aWYoaClmPSEwLGIuZmxhZ3MmPS0xMjk7ZWxzZSBpZihudWxsPT09YXx8bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSllfD0xO0coTSxlJjEpO2lmKG51bGw9PT1hKXtFZyhiKTthPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmKGE9YS5kZWh5ZHJhdGVkLG51bGwhPT1hKSlyZXR1cm4gMD09PShiLm1vZGUmMSk/Yi5sYW5lcz0xOlwiJCFcIj09PWEuZGF0YT9iLmxhbmVzPTg6Yi5sYW5lcz0xMDczNzQxODI0LG51bGw7Zz1kLmNoaWxkcmVuO2E9ZC5mYWxsYmFjaztyZXR1cm4gZj8oZD1iLm1vZGUsZj1iLmNoaWxkLGc9e21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpnfSwwPT09KGQmMSkmJm51bGwhPT1mPyhmLmNoaWxkTGFuZXM9MCxmLnBlbmRpbmdQcm9wcz1cbmcpOmY9cWooZyxkLDAsbnVsbCksYT1BaChhLGQsYyxudWxsKSxmLnJldHVybj1iLGEucmV0dXJuPWIsZi5zaWJsaW5nPWEsYi5jaGlsZD1mLGIuY2hpbGQubWVtb2l6ZWRTdGF0ZT1vaihjKSxiLm1lbW9pemVkU3RhdGU9bmosYSk6cmooYixnKX1lPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZSYmKGg9ZS5kZWh5ZHJhdGVkLG51bGwhPT1oKSlyZXR1cm4gc2ooYSxiLGcsZCxoLGUsYyk7aWYoZil7Zj1kLmZhbGxiYWNrO2c9Yi5tb2RlO2U9YS5jaGlsZDtoPWUuc2libGluZzt2YXIgaz17bW9kZTpcImhpZGRlblwiLGNoaWxkcmVuOmQuY2hpbGRyZW59OzA9PT0oZyYxKSYmYi5jaGlsZCE9PWU/KGQ9Yi5jaGlsZCxkLmNoaWxkTGFuZXM9MCxkLnBlbmRpbmdQcm9wcz1rLGIuZGVsZXRpb25zPW51bGwpOihkPXdoKGUsayksZC5zdWJ0cmVlRmxhZ3M9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQpO251bGwhPT1oP2Y9d2goaCxmKTooZj1BaChmLGcsYyxudWxsKSxmLmZsYWdzfD0yKTtmLnJldHVybj1cbmI7ZC5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7ZD1mO2Y9Yi5jaGlsZDtnPWEuY2hpbGQubWVtb2l6ZWRTdGF0ZTtnPW51bGw9PT1nP29qKGMpOntiYXNlTGFuZXM6Zy5iYXNlTGFuZXN8YyxjYWNoZVBvb2w6bnVsbCx0cmFuc2l0aW9uczpnLnRyYW5zaXRpb25zfTtmLm1lbW9pemVkU3RhdGU9ZztmLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzJn5jO2IubWVtb2l6ZWRTdGF0ZT1uajtyZXR1cm4gZH1mPWEuY2hpbGQ7YT1mLnNpYmxpbmc7ZD13aChmLHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOmQuY2hpbGRyZW59KTswPT09KGIubW9kZSYxKSYmKGQubGFuZXM9Yyk7ZC5yZXR1cm49YjtkLnNpYmxpbmc9bnVsbDtudWxsIT09YSYmKGM9Yi5kZWxldGlvbnMsbnVsbD09PWM/KGIuZGVsZXRpb25zPVthXSxiLmZsYWdzfD0xNik6Yy5wdXNoKGEpKTtiLmNoaWxkPWQ7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGR9XG5mdW5jdGlvbiByaihhLGIpe2I9cWooe21vZGU6XCJ2aXNpYmxlXCIsY2hpbGRyZW46Yn0sYS5tb2RlLDAsbnVsbCk7Yi5yZXR1cm49YTtyZXR1cm4gYS5jaGlsZD1ifWZ1bmN0aW9uIHRqKGEsYixjLGQpe251bGwhPT1kJiZKZyhkKTtCaChiLGEuY2hpbGQsbnVsbCxjKTthPXJqKGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pO2EuZmxhZ3N8PTI7Yi5tZW1vaXplZFN0YXRlPW51bGw7cmV0dXJuIGF9XG5mdW5jdGlvbiBzaihhLGIsYyxkLGUsZixnKXtpZihjKXtpZihiLmZsYWdzJjI1NilyZXR1cm4gYi5mbGFncyY9LTI1NyxkPUxpKEVycm9yKHAoNDIyKSkpLHRqKGEsYixnLGQpO2lmKG51bGwhPT1iLm1lbW9pemVkU3RhdGUpcmV0dXJuIGIuY2hpbGQ9YS5jaGlsZCxiLmZsYWdzfD0xMjgsbnVsbDtmPWQuZmFsbGJhY2s7ZT1iLm1vZGU7ZD1xaih7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpkLmNoaWxkcmVufSxlLDAsbnVsbCk7Zj1BaChmLGUsZyxudWxsKTtmLmZsYWdzfD0yO2QucmV0dXJuPWI7Zi5yZXR1cm49YjtkLnNpYmxpbmc9ZjtiLmNoaWxkPWQ7MCE9PShiLm1vZGUmMSkmJkJoKGIsYS5jaGlsZCxudWxsLGcpO2IuY2hpbGQubWVtb2l6ZWRTdGF0ZT1vaihnKTtiLm1lbW9pemVkU3RhdGU9bmo7cmV0dXJuIGZ9aWYoMD09PShiLm1vZGUmMSkpcmV0dXJuIHRqKGEsYixnLG51bGwpO2lmKFwiJCFcIj09PWUuZGF0YSl7ZD1lLm5leHRTaWJsaW5nJiZlLm5leHRTaWJsaW5nLmRhdGFzZXQ7XG5pZihkKXZhciBoPWQuZGdzdDtkPWg7Zj1FcnJvcihwKDQxOSkpO2Q9TGkoZixkLHZvaWQgMCk7cmV0dXJuIHRqKGEsYixnLGQpfWg9MCE9PShnJmEuY2hpbGRMYW5lcyk7aWYoVWd8fGgpe2Q9UjtpZihudWxsIT09ZCl7c3dpdGNoKGcmLWcpe2Nhc2UgNDplPTI7YnJlYWs7Y2FzZSAxNjplPTg7YnJlYWs7Y2FzZSA2NDpjYXNlIDEyODpjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMTY3NzcyMTY6Y2FzZSAzMzU1NDQzMjpjYXNlIDY3MTA4ODY0OmU9MzI7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6ZT0yNjg0MzU0NTY7YnJlYWs7ZGVmYXVsdDplPTB9ZT0wIT09KGUmKGQuc3VzcGVuZGVkTGFuZXN8ZykpPzA6ZTtcbjAhPT1lJiZlIT09Zi5yZXRyeUxhbmUmJihmLnJldHJ5TGFuZT1lLFpnKGEsZSksbWgoZCxhLGUsLTEpKX11aigpO2Q9TGkoRXJyb3IocCg0MjEpKSk7cmV0dXJuIHRqKGEsYixnLGQpfWlmKFwiJD9cIj09PWUuZGF0YSlyZXR1cm4gYi5mbGFnc3w9MTI4LGIuY2hpbGQ9YS5jaGlsZCxiPXZqLmJpbmQobnVsbCxhKSxlLl9yZWFjdFJldHJ5PWIsbnVsbDthPWYudHJlZUNvbnRleHQ7eWc9TGYoZS5uZXh0U2libGluZyk7eGc9YjtJPSEwO3pnPW51bGw7bnVsbCE9PWEmJihvZ1twZysrXT1yZyxvZ1twZysrXT1zZyxvZ1twZysrXT1xZyxyZz1hLmlkLHNnPWEub3ZlcmZsb3cscWc9Yik7Yj1yaihiLGQuY2hpbGRyZW4pO2IuZmxhZ3N8PTQwOTY7cmV0dXJuIGJ9ZnVuY3Rpb24gd2ooYSxiLGMpe2EubGFuZXN8PWI7dmFyIGQ9YS5hbHRlcm5hdGU7bnVsbCE9PWQmJihkLmxhbmVzfD1iKTtTZyhhLnJldHVybixiLGMpfVxuZnVuY3Rpb24geGooYSxiLGMsZCxlKXt2YXIgZj1hLm1lbW9pemVkU3RhdGU7bnVsbD09PWY/YS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczpiLHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6ZCx0YWlsOmMsdGFpbE1vZGU6ZX06KGYuaXNCYWNrd2FyZHM9YixmLnJlbmRlcmluZz1udWxsLGYucmVuZGVyaW5nU3RhcnRUaW1lPTAsZi5sYXN0PWQsZi50YWlsPWMsZi50YWlsTW9kZT1lKX1cbmZ1bmN0aW9uIHlqKGEsYixjKXt2YXIgZD1iLnBlbmRpbmdQcm9wcyxlPWQucmV2ZWFsT3JkZXIsZj1kLnRhaWw7WWkoYSxiLGQuY2hpbGRyZW4sYyk7ZD1NLmN1cnJlbnQ7aWYoMCE9PShkJjIpKWQ9ZCYxfDIsYi5mbGFnc3w9MTI4O2Vsc2V7aWYobnVsbCE9PWEmJjAhPT0oYS5mbGFncyYxMjgpKWE6Zm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2lmKDEzPT09YS50YWcpbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSYmd2ooYSxjLGIpO2Vsc2UgaWYoMTk9PT1hLnRhZyl3aihhLGMsYik7ZWxzZSBpZihudWxsIT09YS5jaGlsZCl7YS5jaGlsZC5yZXR1cm49YTthPWEuY2hpbGQ7Y29udGludWV9aWYoYT09PWIpYnJlYWsgYTtmb3IoO251bGw9PT1hLnNpYmxpbmc7KXtpZihudWxsPT09YS5yZXR1cm58fGEucmV0dXJuPT09YilicmVhayBhO2E9YS5yZXR1cm59YS5zaWJsaW5nLnJldHVybj1hLnJldHVybjthPWEuc2libGluZ31kJj0xfUcoTSxkKTtpZigwPT09KGIubW9kZSYxKSliLm1lbW9pemVkU3RhdGU9XG5udWxsO2Vsc2Ugc3dpdGNoKGUpe2Nhc2UgXCJmb3J3YXJkc1wiOmM9Yi5jaGlsZDtmb3IoZT1udWxsO251bGwhPT1jOylhPWMuYWx0ZXJuYXRlLG51bGwhPT1hJiZudWxsPT09TWgoYSkmJihlPWMpLGM9Yy5zaWJsaW5nO2M9ZTtudWxsPT09Yz8oZT1iLmNoaWxkLGIuY2hpbGQ9bnVsbCk6KGU9Yy5zaWJsaW5nLGMuc2libGluZz1udWxsKTt4aihiLCExLGUsYyxmKTticmVhaztjYXNlIFwiYmFja3dhcmRzXCI6Yz1udWxsO2U9Yi5jaGlsZDtmb3IoYi5jaGlsZD1udWxsO251bGwhPT1lOyl7YT1lLmFsdGVybmF0ZTtpZihudWxsIT09YSYmbnVsbD09PU1oKGEpKXtiLmNoaWxkPWU7YnJlYWt9YT1lLnNpYmxpbmc7ZS5zaWJsaW5nPWM7Yz1lO2U9YX14aihiLCEwLGMsbnVsbCxmKTticmVhaztjYXNlIFwidG9nZXRoZXJcIjp4aihiLCExLG51bGwsbnVsbCx2b2lkIDApO2JyZWFrO2RlZmF1bHQ6Yi5tZW1vaXplZFN0YXRlPW51bGx9cmV0dXJuIGIuY2hpbGR9XG5mdW5jdGlvbiBqaihhLGIpezA9PT0oYi5tb2RlJjEpJiZudWxsIT09YSYmKGEuYWx0ZXJuYXRlPW51bGwsYi5hbHRlcm5hdGU9bnVsbCxiLmZsYWdzfD0yKX1mdW5jdGlvbiAkaShhLGIsYyl7bnVsbCE9PWEmJihiLmRlcGVuZGVuY2llcz1hLmRlcGVuZGVuY2llcyk7aGh8PWIubGFuZXM7aWYoMD09PShjJmIuY2hpbGRMYW5lcykpcmV0dXJuIG51bGw7aWYobnVsbCE9PWEmJmIuY2hpbGQhPT1hLmNoaWxkKXRocm93IEVycm9yKHAoMTUzKSk7aWYobnVsbCE9PWIuY2hpbGQpe2E9Yi5jaGlsZDtjPXdoKGEsYS5wZW5kaW5nUHJvcHMpO2IuY2hpbGQ9Yztmb3IoYy5yZXR1cm49YjtudWxsIT09YS5zaWJsaW5nOylhPWEuc2libGluZyxjPWMuc2libGluZz13aChhLGEucGVuZGluZ1Byb3BzKSxjLnJldHVybj1iO2Muc2libGluZz1udWxsfXJldHVybiBiLmNoaWxkfVxuZnVuY3Rpb24gemooYSxiLGMpe3N3aXRjaChiLnRhZyl7Y2FzZSAzOmxqKGIpO0lnKCk7YnJlYWs7Y2FzZSA1OktoKGIpO2JyZWFrO2Nhc2UgMTpaZihiLnR5cGUpJiZjZyhiKTticmVhaztjYXNlIDQ6SWgoYixiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTticmVhaztjYXNlIDEwOnZhciBkPWIudHlwZS5fY29udGV4dCxlPWIubWVtb2l6ZWRQcm9wcy52YWx1ZTtHKE1nLGQuX2N1cnJlbnRWYWx1ZSk7ZC5fY3VycmVudFZhbHVlPWU7YnJlYWs7Y2FzZSAxMzpkPWIubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09ZCl7aWYobnVsbCE9PWQuZGVoeWRyYXRlZClyZXR1cm4gRyhNLE0uY3VycmVudCYxKSxiLmZsYWdzfD0xMjgsbnVsbDtpZigwIT09KGMmYi5jaGlsZC5jaGlsZExhbmVzKSlyZXR1cm4gcGooYSxiLGMpO0coTSxNLmN1cnJlbnQmMSk7YT0kaShhLGIsYyk7cmV0dXJuIG51bGwhPT1hP2Euc2libGluZzpudWxsfUcoTSxNLmN1cnJlbnQmMSk7YnJlYWs7Y2FzZSAxOTpkPTAhPT0oYyZcbmIuY2hpbGRMYW5lcyk7aWYoMCE9PShhLmZsYWdzJjEyOCkpe2lmKGQpcmV0dXJuIHlqKGEsYixjKTtiLmZsYWdzfD0xMjh9ZT1iLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihlLnJlbmRlcmluZz1udWxsLGUudGFpbD1udWxsLGUubGFzdEVmZmVjdD1udWxsKTtHKE0sTS5jdXJyZW50KTtpZihkKWJyZWFrO2Vsc2UgcmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBiLmxhbmVzPTAsZWooYSxiLGMpfXJldHVybiAkaShhLGIsYyl9dmFyIEFqLEJqLENqLERqO1xuQWo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Yi5jaGlsZDtudWxsIT09Yzspe2lmKDU9PT1jLnRhZ3x8Nj09PWMudGFnKWEuYXBwZW5kQ2hpbGQoYy5zdGF0ZU5vZGUpO2Vsc2UgaWYoNCE9PWMudGFnJiZudWxsIT09Yy5jaGlsZCl7Yy5jaGlsZC5yZXR1cm49YztjPWMuY2hpbGQ7Y29udGludWV9aWYoYz09PWIpYnJlYWs7Zm9yKDtudWxsPT09Yy5zaWJsaW5nOyl7aWYobnVsbD09PWMucmV0dXJufHxjLnJldHVybj09PWIpcmV0dXJuO2M9Yy5yZXR1cm59Yy5zaWJsaW5nLnJldHVybj1jLnJldHVybjtjPWMuc2libGluZ319O0JqPWZ1bmN0aW9uKCl7fTtcbkNqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEubWVtb2l6ZWRQcm9wcztpZihlIT09ZCl7YT1iLnN0YXRlTm9kZTtIaChFaC5jdXJyZW50KTt2YXIgZj1udWxsO3N3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjplPVlhKGEsZSk7ZD1ZYShhLGQpO2Y9W107YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmU9QSh7fSxlLHt2YWx1ZTp2b2lkIDB9KTtkPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7Zj1bXTticmVhaztjYXNlIFwidGV4dGFyZWFcIjplPWdiKGEsZSk7ZD1nYihhLGQpO2Y9W107YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCIhPT10eXBlb2YgZS5vbkNsaWNrJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5vbkNsaWNrJiYoYS5vbmNsaWNrPUJmKX11YihjLGQpO3ZhciBnO2M9bnVsbDtmb3IobCBpbiBlKWlmKCFkLmhhc093blByb3BlcnR5KGwpJiZlLmhhc093blByb3BlcnR5KGwpJiZudWxsIT1lW2xdKWlmKFwic3R5bGVcIj09PWwpe3ZhciBoPWVbbF07Zm9yKGcgaW4gaCloLmhhc093blByb3BlcnR5KGcpJiZcbihjfHwoYz17fSksY1tnXT1cIlwiKX1lbHNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiIT09bCYmXCJjaGlsZHJlblwiIT09bCYmXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWwmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1sJiZcImF1dG9Gb2N1c1wiIT09bCYmKGVhLmhhc093blByb3BlcnR5KGwpP2Z8fChmPVtdKTooZj1mfHxbXSkucHVzaChsLG51bGwpKTtmb3IobCBpbiBkKXt2YXIgaz1kW2xdO2g9bnVsbCE9ZT9lW2xdOnZvaWQgMDtpZihkLmhhc093blByb3BlcnR5KGwpJiZrIT09aCYmKG51bGwhPWt8fG51bGwhPWgpKWlmKFwic3R5bGVcIj09PWwpaWYoaCl7Zm9yKGcgaW4gaCkhaC5oYXNPd25Qcm9wZXJ0eShnKXx8ayYmay5oYXNPd25Qcm9wZXJ0eShnKXx8KGN8fChjPXt9KSxjW2ddPVwiXCIpO2ZvcihnIGluIGspay5oYXNPd25Qcm9wZXJ0eShnKSYmaFtnXSE9PWtbZ10mJihjfHwoYz17fSksY1tnXT1rW2ddKX1lbHNlIGN8fChmfHwoZj1bXSksZi5wdXNoKGwsXG5jKSksYz1rO2Vsc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI9PT1sPyhrPWs/ay5fX2h0bWw6dm9pZCAwLGg9aD9oLl9faHRtbDp2b2lkIDAsbnVsbCE9ayYmaCE9PWsmJihmPWZ8fFtdKS5wdXNoKGwsaykpOlwiY2hpbGRyZW5cIj09PWw/XCJzdHJpbmdcIiE9PXR5cGVvZiBrJiZcIm51bWJlclwiIT09dHlwZW9mIGt8fChmPWZ8fFtdKS5wdXNoKGwsXCJcIitrKTpcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiIT09bCYmXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIiE9PWwmJihlYS5oYXNPd25Qcm9wZXJ0eShsKT8obnVsbCE9ayYmXCJvblNjcm9sbFwiPT09bCYmRChcInNjcm9sbFwiLGEpLGZ8fGg9PT1rfHwoZj1bXSkpOihmPWZ8fFtdKS5wdXNoKGwsaykpfWMmJihmPWZ8fFtdKS5wdXNoKFwic3R5bGVcIixjKTt2YXIgbD1mO2lmKGIudXBkYXRlUXVldWU9bCliLmZsYWdzfD00fX07RGo9ZnVuY3Rpb24oYSxiLGMsZCl7YyE9PWQmJihiLmZsYWdzfD00KX07XG5mdW5jdGlvbiBFaihhLGIpe2lmKCFJKXN3aXRjaChhLnRhaWxNb2RlKXtjYXNlIFwiaGlkZGVuXCI6Yj1hLnRhaWw7Zm9yKHZhciBjPW51bGw7bnVsbCE9PWI7KW51bGwhPT1iLmFsdGVybmF0ZSYmKGM9YiksYj1iLnNpYmxpbmc7bnVsbD09PWM/YS50YWlsPW51bGw6Yy5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSBcImNvbGxhcHNlZFwiOmM9YS50YWlsO2Zvcih2YXIgZD1udWxsO251bGwhPT1jOyludWxsIT09Yy5hbHRlcm5hdGUmJihkPWMpLGM9Yy5zaWJsaW5nO251bGw9PT1kP2J8fG51bGw9PT1hLnRhaWw/YS50YWlsPW51bGw6YS50YWlsLnNpYmxpbmc9bnVsbDpkLnNpYmxpbmc9bnVsbH19XG5mdW5jdGlvbiBTKGEpe3ZhciBiPW51bGwhPT1hLmFsdGVybmF0ZSYmYS5hbHRlcm5hdGUuY2hpbGQ9PT1hLmNoaWxkLGM9MCxkPTA7aWYoYilmb3IodmFyIGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQsZHw9ZS5mbGFncyYxNDY4MDA2NCxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Vsc2UgZm9yKGU9YS5jaGlsZDtudWxsIT09ZTspY3w9ZS5sYW5lc3xlLmNoaWxkTGFuZXMsZHw9ZS5zdWJ0cmVlRmxhZ3MsZHw9ZS5mbGFncyxlLnJldHVybj1hLGU9ZS5zaWJsaW5nO2Euc3VidHJlZUZsYWdzfD1kO2EuY2hpbGRMYW5lcz1jO3JldHVybiBifVxuZnVuY3Rpb24gRmooYSxiLGMpe3ZhciBkPWIucGVuZGluZ1Byb3BzO3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAyOmNhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6cmV0dXJuIFMoYiksbnVsbDtjYXNlIDE6cmV0dXJuIFpmKGIudHlwZSkmJiRmKCksUyhiKSxudWxsO2Nhc2UgMzpkPWIuc3RhdGVOb2RlO0poKCk7RShXZik7RShIKTtPaCgpO2QucGVuZGluZ0NvbnRleHQmJihkLmNvbnRleHQ9ZC5wZW5kaW5nQ29udGV4dCxkLnBlbmRpbmdDb250ZXh0PW51bGwpO2lmKG51bGw9PT1hfHxudWxsPT09YS5jaGlsZClHZyhiKT9iLmZsYWdzfD00Om51bGw9PT1hfHxhLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkJiYwPT09KGIuZmxhZ3MmMjU2KXx8KGIuZmxhZ3N8PTEwMjQsbnVsbCE9PXpnJiYoR2ooemcpLHpnPW51bGwpKTtCaihhLGIpO1MoYik7cmV0dXJuIG51bGw7Y2FzZSA1OkxoKGIpO3ZhciBlPUhoKEdoLmN1cnJlbnQpO1xuYz1iLnR5cGU7aWYobnVsbCE9PWEmJm51bGwhPWIuc3RhdGVOb2RlKUNqKGEsYixjLGQsZSksYS5yZWYhPT1iLnJlZiYmKGIuZmxhZ3N8PTUxMixiLmZsYWdzfD0yMDk3MTUyKTtlbHNle2lmKCFkKXtpZihudWxsPT09Yi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IocCgxNjYpKTtTKGIpO3JldHVybiBudWxsfWE9SGgoRWguY3VycmVudCk7aWYoR2coYikpe2Q9Yi5zdGF0ZU5vZGU7Yz1iLnR5cGU7dmFyIGY9Yi5tZW1vaXplZFByb3BzO2RbT2ZdPWI7ZFtQZl09ZjthPTAhPT0oYi5tb2RlJjEpO3N3aXRjaChjKXtjYXNlIFwiZGlhbG9nXCI6RChcImNhbmNlbFwiLGQpO0QoXCJjbG9zZVwiLGQpO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixkKTticmVhaztjYXNlIFwidmlkZW9cIjpjYXNlIFwiYXVkaW9cIjpmb3IoZT0wO2U8bGYubGVuZ3RoO2UrKylEKGxmW2VdLGQpO2JyZWFrO2Nhc2UgXCJzb3VyY2VcIjpEKFwiZXJyb3JcIixkKTticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmQpO0QoXCJsb2FkXCIsZCk7YnJlYWs7Y2FzZSBcImRldGFpbHNcIjpEKFwidG9nZ2xlXCIsZCk7YnJlYWs7Y2FzZSBcImlucHV0XCI6WmEoZCxmKTtEKFwiaW52YWxpZFwiLGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpkLl93cmFwcGVyU3RhdGU9e3dhc011bHRpcGxlOiEhZi5tdWx0aXBsZX07RChcImludmFsaWRcIixkKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihkLGYpLEQoXCJpbnZhbGlkXCIsZCl9dWIoYyxmKTtlPW51bGw7Zm9yKHZhciBnIGluIGYpaWYoZi5oYXNPd25Qcm9wZXJ0eShnKSl7dmFyIGg9ZltnXTtcImNoaWxkcmVuXCI9PT1nP1wic3RyaW5nXCI9PT10eXBlb2YgaD9kLnRleHRDb250ZW50IT09aCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsaCxhKSxlPVtcImNoaWxkcmVuXCIsaF0pOlwibnVtYmVyXCI9PT10eXBlb2YgaCYmZC50ZXh0Q29udGVudCE9PVwiXCIraCYmKCEwIT09Zi5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmcmJkFmKGQudGV4dENvbnRlbnQsXG5oLGEpLGU9W1wiY2hpbGRyZW5cIixcIlwiK2hdKTplYS5oYXNPd25Qcm9wZXJ0eShnKSYmbnVsbCE9aCYmXCJvblNjcm9sbFwiPT09ZyYmRChcInNjcm9sbFwiLGQpfXN3aXRjaChjKXtjYXNlIFwiaW5wdXRcIjpWYShkKTtkYihkLGYsITApO2JyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOlZhKGQpO2piKGQpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjpjYXNlIFwib3B0aW9uXCI6YnJlYWs7ZGVmYXVsdDpcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5vbkNsaWNrJiYoZC5vbmNsaWNrPUJmKX1kPWU7Yi51cGRhdGVRdWV1ZT1kO251bGwhPT1kJiYoYi5mbGFnc3w9NCl9ZWxzZXtnPTk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50O1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YSYmKGE9a2IoYykpO1wiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiPT09YT9cInNjcmlwdFwiPT09Yz8oYT1nLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksYS5pbm5lckhUTUw9XCI8c2NyaXB0PlxceDNjL3NjcmlwdD5cIixhPWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKSk6XG5cInN0cmluZ1wiPT09dHlwZW9mIGQuaXM/YT1nLmNyZWF0ZUVsZW1lbnQoYyx7aXM6ZC5pc30pOihhPWcuY3JlYXRlRWxlbWVudChjKSxcInNlbGVjdFwiPT09YyYmKGc9YSxkLm11bHRpcGxlP2cubXVsdGlwbGU9ITA6ZC5zaXplJiYoZy5zaXplPWQuc2l6ZSkpKTphPWcuY3JlYXRlRWxlbWVudE5TKGEsYyk7YVtPZl09YjthW1BmXT1kO0FqKGEsYiwhMSwhMSk7Yi5zdGF0ZU5vZGU9YTthOntnPXZiKGMsZCk7c3dpdGNoKGMpe2Nhc2UgXCJkaWFsb2dcIjpEKFwiY2FuY2VsXCIsYSk7RChcImNsb3NlXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJpZnJhbWVcIjpjYXNlIFwib2JqZWN0XCI6Y2FzZSBcImVtYmVkXCI6RChcImxvYWRcIixhKTtlPWQ7YnJlYWs7Y2FzZSBcInZpZGVvXCI6Y2FzZSBcImF1ZGlvXCI6Zm9yKGU9MDtlPGxmLmxlbmd0aDtlKyspRChsZltlXSxhKTtlPWQ7YnJlYWs7Y2FzZSBcInNvdXJjZVwiOkQoXCJlcnJvclwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW1nXCI6Y2FzZSBcImltYWdlXCI6Y2FzZSBcImxpbmtcIjpEKFwiZXJyb3JcIixcbmEpO0QoXCJsb2FkXCIsYSk7ZT1kO2JyZWFrO2Nhc2UgXCJkZXRhaWxzXCI6RChcInRvZ2dsZVwiLGEpO2U9ZDticmVhaztjYXNlIFwiaW5wdXRcIjpaYShhLGQpO2U9WWEoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2Nhc2UgXCJvcHRpb25cIjplPWQ7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmEuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFkLm11bHRpcGxlfTtlPUEoe30sZCx7dmFsdWU6dm9pZCAwfSk7RChcImludmFsaWRcIixhKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjpoYihhLGQpO2U9Z2IoYSxkKTtEKFwiaW52YWxpZFwiLGEpO2JyZWFrO2RlZmF1bHQ6ZT1kfXViKGMsZSk7aD1lO2ZvcihmIGluIGgpaWYoaC5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGs9aFtmXTtcInN0eWxlXCI9PT1mP3NiKGEsayk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09Zj8oaz1rP2suX19odG1sOnZvaWQgMCxudWxsIT1rJiZuYihhLGspKTpcImNoaWxkcmVuXCI9PT1mP1wic3RyaW5nXCI9PT10eXBlb2Ygaz8oXCJ0ZXh0YXJlYVwiIT09XG5jfHxcIlwiIT09aykmJm9iKGEsayk6XCJudW1iZXJcIj09PXR5cGVvZiBrJiZvYihhLFwiXCIrayk6XCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIiE9PWYmJlwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCIhPT1mJiZcImF1dG9Gb2N1c1wiIT09ZiYmKGVhLmhhc093blByb3BlcnR5KGYpP251bGwhPWsmJlwib25TY3JvbGxcIj09PWYmJkQoXCJzY3JvbGxcIixhKTpudWxsIT1rJiZ0YShhLGYsayxnKSl9c3dpdGNoKGMpe2Nhc2UgXCJpbnB1dFwiOlZhKGEpO2RiKGEsZCwhMSk7YnJlYWs7Y2FzZSBcInRleHRhcmVhXCI6VmEoYSk7amIoYSk7YnJlYWs7Y2FzZSBcIm9wdGlvblwiOm51bGwhPWQudmFsdWUmJmEuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiK1NhKGQudmFsdWUpKTticmVhaztjYXNlIFwic2VsZWN0XCI6YS5tdWx0aXBsZT0hIWQubXVsdGlwbGU7Zj1kLnZhbHVlO251bGwhPWY/ZmIoYSwhIWQubXVsdGlwbGUsZiwhMSk6bnVsbCE9ZC5kZWZhdWx0VmFsdWUmJmZiKGEsISFkLm11bHRpcGxlLGQuZGVmYXVsdFZhbHVlLFxuITApO2JyZWFrO2RlZmF1bHQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIGUub25DbGljayYmKGEub25jbGljaz1CZil9c3dpdGNoKGMpe2Nhc2UgXCJidXR0b25cIjpjYXNlIFwiaW5wdXRcIjpjYXNlIFwic2VsZWN0XCI6Y2FzZSBcInRleHRhcmVhXCI6ZD0hIWQuYXV0b0ZvY3VzO2JyZWFrIGE7Y2FzZSBcImltZ1wiOmQ9ITA7YnJlYWsgYTtkZWZhdWx0OmQ9ITF9fWQmJihiLmZsYWdzfD00KX1udWxsIT09Yi5yZWYmJihiLmZsYWdzfD01MTIsYi5mbGFnc3w9MjA5NzE1Mil9UyhiKTtyZXR1cm4gbnVsbDtjYXNlIDY6aWYoYSYmbnVsbCE9Yi5zdGF0ZU5vZGUpRGooYSxiLGEubWVtb2l6ZWRQcm9wcyxkKTtlbHNle2lmKFwic3RyaW5nXCIhPT10eXBlb2YgZCYmbnVsbD09PWIuc3RhdGVOb2RlKXRocm93IEVycm9yKHAoMTY2KSk7Yz1IaChHaC5jdXJyZW50KTtIaChFaC5jdXJyZW50KTtpZihHZyhiKSl7ZD1iLnN0YXRlTm9kZTtjPWIubWVtb2l6ZWRQcm9wcztkW09mXT1iO2lmKGY9ZC5ub2RlVmFsdWUhPT1jKWlmKGE9XG54ZyxudWxsIT09YSlzd2l0Y2goYS50YWcpe2Nhc2UgMzpBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKTticmVhaztjYXNlIDU6ITAhPT1hLm1lbW9pemVkUHJvcHMuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nJiZBZihkLm5vZGVWYWx1ZSxjLDAhPT0oYS5tb2RlJjEpKX1mJiYoYi5mbGFnc3w9NCl9ZWxzZSBkPSg5PT09Yy5ub2RlVHlwZT9jOmMub3duZXJEb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoZCksZFtPZl09YixiLnN0YXRlTm9kZT1kfVMoYik7cmV0dXJuIG51bGw7Y2FzZSAxMzpFKE0pO2Q9Yi5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT1hfHxudWxsIT09YS5tZW1vaXplZFN0YXRlJiZudWxsIT09YS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2lmKEkmJm51bGwhPT15ZyYmMCE9PShiLm1vZGUmMSkmJjA9PT0oYi5mbGFncyYxMjgpKUhnKCksSWcoKSxiLmZsYWdzfD05ODU2MCxmPSExO2Vsc2UgaWYoZj1HZyhiKSxudWxsIT09ZCYmbnVsbCE9PWQuZGVoeWRyYXRlZCl7aWYobnVsbD09PVxuYSl7aWYoIWYpdGhyb3cgRXJyb3IocCgzMTgpKTtmPWIubWVtb2l6ZWRTdGF0ZTtmPW51bGwhPT1mP2YuZGVoeWRyYXRlZDpudWxsO2lmKCFmKXRocm93IEVycm9yKHAoMzE3KSk7ZltPZl09Yn1lbHNlIElnKCksMD09PShiLmZsYWdzJjEyOCkmJihiLm1lbW9pemVkU3RhdGU9bnVsbCksYi5mbGFnc3w9NDtTKGIpO2Y9ITF9ZWxzZSBudWxsIT09emcmJihHaih6Zyksemc9bnVsbCksZj0hMDtpZighZilyZXR1cm4gYi5mbGFncyY2NTUzNj9iOm51bGx9aWYoMCE9PShiLmZsYWdzJjEyOCkpcmV0dXJuIGIubGFuZXM9YyxiO2Q9bnVsbCE9PWQ7ZCE9PShudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSkmJmQmJihiLmNoaWxkLmZsYWdzfD04MTkyLDAhPT0oYi5tb2RlJjEpJiYobnVsbD09PWF8fDAhPT0oTS5jdXJyZW50JjEpPzA9PT1UJiYoVD0zKTp1aigpKSk7bnVsbCE9PWIudXBkYXRlUXVldWUmJihiLmZsYWdzfD00KTtTKGIpO3JldHVybiBudWxsO2Nhc2UgNDpyZXR1cm4gSmgoKSxcbkJqKGEsYiksbnVsbD09PWEmJnNmKGIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFMoYiksbnVsbDtjYXNlIDEwOnJldHVybiBSZyhiLnR5cGUuX2NvbnRleHQpLFMoYiksbnVsbDtjYXNlIDE3OnJldHVybiBaZihiLnR5cGUpJiYkZigpLFMoYiksbnVsbDtjYXNlIDE5OkUoTSk7Zj1iLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PWYpcmV0dXJuIFMoYiksbnVsbDtkPTAhPT0oYi5mbGFncyYxMjgpO2c9Zi5yZW5kZXJpbmc7aWYobnVsbD09PWcpaWYoZClFaihmLCExKTtlbHNle2lmKDAhPT1UfHxudWxsIT09YSYmMCE9PShhLmZsYWdzJjEyOCkpZm9yKGE9Yi5jaGlsZDtudWxsIT09YTspe2c9TWgoYSk7aWYobnVsbCE9PWcpe2IuZmxhZ3N8PTEyODtFaihmLCExKTtkPWcudXBkYXRlUXVldWU7bnVsbCE9PWQmJihiLnVwZGF0ZVF1ZXVlPWQsYi5mbGFnc3w9NCk7Yi5zdWJ0cmVlRmxhZ3M9MDtkPWM7Zm9yKGM9Yi5jaGlsZDtudWxsIT09YzspZj1jLGE9ZCxmLmZsYWdzJj0xNDY4MDA2Nixcbmc9Zi5hbHRlcm5hdGUsbnVsbD09PWc/KGYuY2hpbGRMYW5lcz0wLGYubGFuZXM9YSxmLmNoaWxkPW51bGwsZi5zdWJ0cmVlRmxhZ3M9MCxmLm1lbW9pemVkUHJvcHM9bnVsbCxmLm1lbW9pemVkU3RhdGU9bnVsbCxmLnVwZGF0ZVF1ZXVlPW51bGwsZi5kZXBlbmRlbmNpZXM9bnVsbCxmLnN0YXRlTm9kZT1udWxsKTooZi5jaGlsZExhbmVzPWcuY2hpbGRMYW5lcyxmLmxhbmVzPWcubGFuZXMsZi5jaGlsZD1nLmNoaWxkLGYuc3VidHJlZUZsYWdzPTAsZi5kZWxldGlvbnM9bnVsbCxmLm1lbW9pemVkUHJvcHM9Zy5tZW1vaXplZFByb3BzLGYubWVtb2l6ZWRTdGF0ZT1nLm1lbW9pemVkU3RhdGUsZi51cGRhdGVRdWV1ZT1nLnVwZGF0ZVF1ZXVlLGYudHlwZT1nLnR5cGUsYT1nLmRlcGVuZGVuY2llcyxmLmRlcGVuZGVuY2llcz1udWxsPT09YT9udWxsOntsYW5lczphLmxhbmVzLGZpcnN0Q29udGV4dDphLmZpcnN0Q29udGV4dH0pLGM9Yy5zaWJsaW5nO0coTSxNLmN1cnJlbnQmMXwyKTtyZXR1cm4gYi5jaGlsZH1hPVxuYS5zaWJsaW5nfW51bGwhPT1mLnRhaWwmJkIoKT5IaiYmKGIuZmxhZ3N8PTEyOCxkPSEwLEVqKGYsITEpLGIubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighZClpZihhPU1oKGcpLG51bGwhPT1hKXtpZihiLmZsYWdzfD0xMjgsZD0hMCxjPWEudXBkYXRlUXVldWUsbnVsbCE9PWMmJihiLnVwZGF0ZVF1ZXVlPWMsYi5mbGFnc3w9NCksRWooZiwhMCksbnVsbD09PWYudGFpbCYmXCJoaWRkZW5cIj09PWYudGFpbE1vZGUmJiFnLmFsdGVybmF0ZSYmIUkpcmV0dXJuIFMoYiksbnVsbH1lbHNlIDIqQigpLWYucmVuZGVyaW5nU3RhcnRUaW1lPkhqJiYxMDczNzQxODI0IT09YyYmKGIuZmxhZ3N8PTEyOCxkPSEwLEVqKGYsITEpLGIubGFuZXM9NDE5NDMwNCk7Zi5pc0JhY2t3YXJkcz8oZy5zaWJsaW5nPWIuY2hpbGQsYi5jaGlsZD1nKTooYz1mLmxhc3QsbnVsbCE9PWM/Yy5zaWJsaW5nPWc6Yi5jaGlsZD1nLGYubGFzdD1nKX1pZihudWxsIT09Zi50YWlsKXJldHVybiBiPWYudGFpbCxmLnJlbmRlcmluZz1cbmIsZi50YWlsPWIuc2libGluZyxmLnJlbmRlcmluZ1N0YXJ0VGltZT1CKCksYi5zaWJsaW5nPW51bGwsYz1NLmN1cnJlbnQsRyhNLGQ/YyYxfDI6YyYxKSxiO1MoYik7cmV0dXJuIG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBJaigpLGQ9bnVsbCE9PWIubWVtb2l6ZWRTdGF0ZSxudWxsIT09YSYmbnVsbCE9PWEubWVtb2l6ZWRTdGF0ZSE9PWQmJihiLmZsYWdzfD04MTkyKSxkJiYwIT09KGIubW9kZSYxKT8wIT09KGdqJjEwNzM3NDE4MjQpJiYoUyhiKSxiLnN1YnRyZWVGbGFncyY2JiYoYi5mbGFnc3w9ODE5MikpOlMoYiksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9XG5mdW5jdGlvbiBKaihhLGIpe3dnKGIpO3N3aXRjaChiLnRhZyl7Y2FzZSAxOnJldHVybiBaZihiLnR5cGUpJiYkZigpLGE9Yi5mbGFncyxhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMzpyZXR1cm4gSmgoKSxFKFdmKSxFKEgpLE9oKCksYT1iLmZsYWdzLDAhPT0oYSY2NTUzNikmJjA9PT0oYSYxMjgpPyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgNTpyZXR1cm4gTGgoYiksbnVsbDtjYXNlIDEzOkUoTSk7YT1iLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWEmJm51bGwhPT1hLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1iLmFsdGVybmF0ZSl0aHJvdyBFcnJvcihwKDM0MCkpO0lnKCl9YT1iLmZsYWdzO3JldHVybiBhJjY1NTM2PyhiLmZsYWdzPWEmLTY1NTM3fDEyOCxiKTpudWxsO2Nhc2UgMTk6cmV0dXJuIEUoTSksbnVsbDtjYXNlIDQ6cmV0dXJuIEpoKCksbnVsbDtjYXNlIDEwOnJldHVybiBSZyhiLnR5cGUuX2NvbnRleHQpLG51bGw7Y2FzZSAyMjpjYXNlIDIzOnJldHVybiBJaigpLFxubnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fXZhciBLaj0hMSxVPSExLExqPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBXZWFrU2V0P1dlYWtTZXQ6U2V0LFY9bnVsbDtmdW5jdGlvbiBNaihhLGIpe3ZhciBjPWEucmVmO2lmKG51bGwhPT1jKWlmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBjKXRyeXtjKG51bGwpfWNhdGNoKGQpe1coYSxiLGQpfWVsc2UgYy5jdXJyZW50PW51bGx9ZnVuY3Rpb24gTmooYSxiLGMpe3RyeXtjKCl9Y2F0Y2goZCl7VyhhLGIsZCl9fXZhciBPaj0hMTtcbmZ1bmN0aW9uIFBqKGEsYil7Q2Y9ZGQ7YT1NZSgpO2lmKE5lKGEpKXtpZihcInNlbGVjdGlvblN0YXJ0XCJpbiBhKXZhciBjPXtzdGFydDphLnNlbGVjdGlvblN0YXJ0LGVuZDphLnNlbGVjdGlvbkVuZH07ZWxzZSBhOntjPShjPWEub3duZXJEb2N1bWVudCkmJmMuZGVmYXVsdFZpZXd8fHdpbmRvdzt2YXIgZD1jLmdldFNlbGVjdGlvbiYmYy5nZXRTZWxlY3Rpb24oKTtpZihkJiYwIT09ZC5yYW5nZUNvdW50KXtjPWQuYW5jaG9yTm9kZTt2YXIgZT1kLmFuY2hvck9mZnNldCxmPWQuZm9jdXNOb2RlO2Q9ZC5mb2N1c09mZnNldDt0cnl7Yy5ub2RlVHlwZSxmLm5vZGVUeXBlfWNhdGNoKEYpe2M9bnVsbDticmVhayBhfXZhciBnPTAsaD0tMSxrPS0xLGw9MCxtPTAscT1hLHI9bnVsbDtiOmZvcig7Oyl7Zm9yKHZhciB5Ozspe3EhPT1jfHwwIT09ZSYmMyE9PXEubm9kZVR5cGV8fChoPWcrZSk7cSE9PWZ8fDAhPT1kJiYzIT09cS5ub2RlVHlwZXx8KGs9ZytkKTszPT09cS5ub2RlVHlwZSYmKGcrPVxucS5ub2RlVmFsdWUubGVuZ3RoKTtpZihudWxsPT09KHk9cS5maXJzdENoaWxkKSlicmVhaztyPXE7cT15fWZvcig7Oyl7aWYocT09PWEpYnJlYWsgYjtyPT09YyYmKytsPT09ZSYmKGg9Zyk7cj09PWYmJisrbT09PWQmJihrPWcpO2lmKG51bGwhPT0oeT1xLm5leHRTaWJsaW5nKSlicmVhaztxPXI7cj1xLnBhcmVudE5vZGV9cT15fWM9LTE9PT1ofHwtMT09PWs/bnVsbDp7c3RhcnQ6aCxlbmQ6a319ZWxzZSBjPW51bGx9Yz1jfHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBjPW51bGw7RGY9e2ZvY3VzZWRFbGVtOmEsc2VsZWN0aW9uUmFuZ2U6Y307ZGQ9ITE7Zm9yKFY9YjtudWxsIT09VjspaWYoYj1WLGE9Yi5jaGlsZCwwIT09KGIuc3VidHJlZUZsYWdzJjEwMjgpJiZudWxsIT09YSlhLnJldHVybj1iLFY9YTtlbHNlIGZvcig7bnVsbCE9PVY7KXtiPVY7dHJ5e3ZhciBuPWIuYWx0ZXJuYXRlO2lmKDAhPT0oYi5mbGFncyYxMDI0KSlzd2l0Y2goYi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6YnJlYWs7XG5jYXNlIDE6aWYobnVsbCE9PW4pe3ZhciB0PW4ubWVtb2l6ZWRQcm9wcyxKPW4ubWVtb2l6ZWRTdGF0ZSx4PWIuc3RhdGVOb2RlLHc9eC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZShiLmVsZW1lbnRUeXBlPT09Yi50eXBlP3Q6TGcoYi50eXBlLHQpLEopO3guX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9d31icmVhaztjYXNlIDM6dmFyIHU9Yi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzsxPT09dS5ub2RlVHlwZT91LnRleHRDb250ZW50PVwiXCI6OT09PXUubm9kZVR5cGUmJnUuZG9jdW1lbnRFbGVtZW50JiZ1LnJlbW92ZUNoaWxkKHUuZG9jdW1lbnRFbGVtZW50KTticmVhaztjYXNlIDU6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IocCgxNjMpKTt9fWNhdGNoKEYpe1coYixiLnJldHVybixGKX1hPWIuc2libGluZztpZihudWxsIT09YSl7YS5yZXR1cm49Yi5yZXR1cm47Vj1hO2JyZWFrfVY9Yi5yZXR1cm59bj1PajtPaj0hMTtyZXR1cm4gbn1cbmZ1bmN0aW9uIFFqKGEsYixjKXt2YXIgZD1iLnVwZGF0ZVF1ZXVlO2Q9bnVsbCE9PWQ/ZC5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWQpe3ZhciBlPWQ9ZC5uZXh0O2Rve2lmKChlLnRhZyZhKT09PWEpe3ZhciBmPWUuZGVzdHJveTtlLmRlc3Ryb3k9dm9pZCAwO3ZvaWQgMCE9PWYmJk5qKGIsYyxmKX1lPWUubmV4dH13aGlsZShlIT09ZCl9fWZ1bmN0aW9uIFJqKGEsYil7Yj1iLnVwZGF0ZVF1ZXVlO2I9bnVsbCE9PWI/Yi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWIpe3ZhciBjPWI9Yi5uZXh0O2Rve2lmKChjLnRhZyZhKT09PWEpe3ZhciBkPWMuY3JlYXRlO2MuZGVzdHJveT1kKCl9Yz1jLm5leHR9d2hpbGUoYyE9PWIpfX1mdW5jdGlvbiBTaihhKXt2YXIgYj1hLnJlZjtpZihudWxsIT09Yil7dmFyIGM9YS5zdGF0ZU5vZGU7c3dpdGNoKGEudGFnKXtjYXNlIDU6YT1jO2JyZWFrO2RlZmF1bHQ6YT1jfVwiZnVuY3Rpb25cIj09PXR5cGVvZiBiP2IoYSk6Yi5jdXJyZW50PWF9fVxuZnVuY3Rpb24gVGooYSl7dmFyIGI9YS5hbHRlcm5hdGU7bnVsbCE9PWImJihhLmFsdGVybmF0ZT1udWxsLFRqKGIpKTthLmNoaWxkPW51bGw7YS5kZWxldGlvbnM9bnVsbDthLnNpYmxpbmc9bnVsbDs1PT09YS50YWcmJihiPWEuc3RhdGVOb2RlLG51bGwhPT1iJiYoZGVsZXRlIGJbT2ZdLGRlbGV0ZSBiW1BmXSxkZWxldGUgYltvZl0sZGVsZXRlIGJbUWZdLGRlbGV0ZSBiW1JmXSkpO2Euc3RhdGVOb2RlPW51bGw7YS5yZXR1cm49bnVsbDthLmRlcGVuZGVuY2llcz1udWxsO2EubWVtb2l6ZWRQcm9wcz1udWxsO2EubWVtb2l6ZWRTdGF0ZT1udWxsO2EucGVuZGluZ1Byb3BzPW51bGw7YS5zdGF0ZU5vZGU9bnVsbDthLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gVWooYSl7cmV0dXJuIDU9PT1hLnRhZ3x8Mz09PWEudGFnfHw0PT09YS50YWd9XG5mdW5jdGlvbiBWaihhKXthOmZvcig7Oyl7Zm9yKDtudWxsPT09YS5zaWJsaW5nOyl7aWYobnVsbD09PWEucmV0dXJufHxVaihhLnJldHVybikpcmV0dXJuIG51bGw7YT1hLnJldHVybn1hLnNpYmxpbmcucmV0dXJuPWEucmV0dXJuO2ZvcihhPWEuc2libGluZzs1IT09YS50YWcmJjYhPT1hLnRhZyYmMTghPT1hLnRhZzspe2lmKGEuZmxhZ3MmMiljb250aW51ZSBhO2lmKG51bGw9PT1hLmNoaWxkfHw0PT09YS50YWcpY29udGludWUgYTtlbHNlIGEuY2hpbGQucmV0dXJuPWEsYT1hLmNoaWxkfWlmKCEoYS5mbGFncyYyKSlyZXR1cm4gYS5zdGF0ZU5vZGV9fVxuZnVuY3Rpb24gV2ooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/OD09PWMubm9kZVR5cGU/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLGIpOmMuaW5zZXJ0QmVmb3JlKGEsYik6KDg9PT1jLm5vZGVUeXBlPyhiPWMucGFyZW50Tm9kZSxiLmluc2VydEJlZm9yZShhLGMpKTooYj1jLGIuYXBwZW5kQ2hpbGQoYSkpLGM9Yy5fcmVhY3RSb290Q29udGFpbmVyLG51bGwhPT1jJiZ2b2lkIDAhPT1jfHxudWxsIT09Yi5vbmNsaWNrfHwoYi5vbmNsaWNrPUJmKSk7ZWxzZSBpZig0IT09ZCYmKGE9YS5jaGlsZCxudWxsIT09YSkpZm9yKFdqKGEsYixjKSxhPWEuc2libGluZztudWxsIT09YTspV2ooYSxiLGMpLGE9YS5zaWJsaW5nfVxuZnVuY3Rpb24gWGooYSxiLGMpe3ZhciBkPWEudGFnO2lmKDU9PT1kfHw2PT09ZClhPWEuc3RhdGVOb2RlLGI/Yy5pbnNlcnRCZWZvcmUoYSxiKTpjLmFwcGVuZENoaWxkKGEpO2Vsc2UgaWYoNCE9PWQmJihhPWEuY2hpbGQsbnVsbCE9PWEpKWZvcihYaihhLGIsYyksYT1hLnNpYmxpbmc7bnVsbCE9PWE7KVhqKGEsYixjKSxhPWEuc2libGluZ312YXIgWD1udWxsLFlqPSExO2Z1bmN0aW9uIFpqKGEsYixjKXtmb3IoYz1jLmNoaWxkO251bGwhPT1jOylhayhhLGIsYyksYz1jLnNpYmxpbmd9XG5mdW5jdGlvbiBhayhhLGIsYyl7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vbkNvbW1pdEZpYmVyVW5tb3VudCl0cnl7bGMub25Db21taXRGaWJlclVubW91bnQoa2MsYyl9Y2F0Y2goaCl7fXN3aXRjaChjLnRhZyl7Y2FzZSA1OlV8fE1qKGMsYik7Y2FzZSA2OnZhciBkPVgsZT1ZajtYPW51bGw7WmooYSxiLGMpO1g9ZDtZaj1lO251bGwhPT1YJiYoWWo/KGE9WCxjPWMuc3RhdGVOb2RlLDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKTphLnJlbW92ZUNoaWxkKGMpKTpYLnJlbW92ZUNoaWxkKGMuc3RhdGVOb2RlKSk7YnJlYWs7Y2FzZSAxODpudWxsIT09WCYmKFlqPyhhPVgsYz1jLnN0YXRlTm9kZSw4PT09YS5ub2RlVHlwZT9LZihhLnBhcmVudE5vZGUsYyk6MT09PWEubm9kZVR5cGUmJktmKGEsYyksYmQoYSkpOktmKFgsYy5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDQ6ZD1YO2U9WWo7WD1jLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1lqPSEwO1xuWmooYSxiLGMpO1g9ZDtZaj1lO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighVSYmKGQ9Yy51cGRhdGVRdWV1ZSxudWxsIT09ZCYmKGQ9ZC5sYXN0RWZmZWN0LG51bGwhPT1kKSkpe2U9ZD1kLm5leHQ7ZG97dmFyIGY9ZSxnPWYuZGVzdHJveTtmPWYudGFnO3ZvaWQgMCE9PWcmJigwIT09KGYmMik/TmooYyxiLGcpOjAhPT0oZiY0KSYmTmooYyxiLGcpKTtlPWUubmV4dH13aGlsZShlIT09ZCl9WmooYSxiLGMpO2JyZWFrO2Nhc2UgMTppZighVSYmKE1qKGMsYiksZD1jLnN0YXRlTm9kZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZC5jb21wb25lbnRXaWxsVW5tb3VudCkpdHJ5e2QucHJvcHM9Yy5tZW1vaXplZFByb3BzLGQuc3RhdGU9Yy5tZW1vaXplZFN0YXRlLGQuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChoKXtXKGMsYixoKX1aaihhLGIsYyk7YnJlYWs7Y2FzZSAyMTpaaihhLGIsYyk7YnJlYWs7Y2FzZSAyMjpjLm1vZGUmMT8oVT0oZD1VKXx8bnVsbCE9PVxuYy5tZW1vaXplZFN0YXRlLFpqKGEsYixjKSxVPWQpOlpqKGEsYixjKTticmVhaztkZWZhdWx0OlpqKGEsYixjKX19ZnVuY3Rpb24gYmsoYSl7dmFyIGI9YS51cGRhdGVRdWV1ZTtpZihudWxsIT09Yil7YS51cGRhdGVRdWV1ZT1udWxsO3ZhciBjPWEuc3RhdGVOb2RlO251bGw9PT1jJiYoYz1hLnN0YXRlTm9kZT1uZXcgTGopO2IuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD1jay5iaW5kKG51bGwsYSxiKTtjLmhhcyhiKXx8KGMuYWRkKGIpLGIudGhlbihkLGQpKX0pfX1cbmZ1bmN0aW9uIGRrKGEsYil7dmFyIGM9Yi5kZWxldGlvbnM7aWYobnVsbCE9PWMpZm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF07dHJ5e3ZhciBmPWEsZz1iLGg9ZzthOmZvcig7bnVsbCE9PWg7KXtzd2l0Y2goaC50YWcpe2Nhc2UgNTpYPWguc3RhdGVOb2RlO1lqPSExO2JyZWFrIGE7Y2FzZSAzOlg9aC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztZaj0hMDticmVhayBhO2Nhc2UgNDpYPWguc3RhdGVOb2RlLmNvbnRhaW5lckluZm87WWo9ITA7YnJlYWsgYX1oPWgucmV0dXJufWlmKG51bGw9PT1YKXRocm93IEVycm9yKHAoMTYwKSk7YWsoZixnLGUpO1g9bnVsbDtZaj0hMTt2YXIgaz1lLmFsdGVybmF0ZTtudWxsIT09ayYmKGsucmV0dXJuPW51bGwpO2UucmV0dXJuPW51bGx9Y2F0Y2gobCl7VyhlLGIsbCl9fWlmKGIuc3VidHJlZUZsYWdzJjEyODU0KWZvcihiPWIuY2hpbGQ7bnVsbCE9PWI7KWVrKGIsYSksYj1iLnNpYmxpbmd9XG5mdW5jdGlvbiBlayhhLGIpe3ZhciBjPWEuYWx0ZXJuYXRlLGQ9YS5mbGFncztzd2l0Y2goYS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpkayhiLGEpO2ZrKGEpO2lmKGQmNCl7dHJ5e1FqKDMsYSxhLnJldHVybiksUmooMyxhKX1jYXRjaCh0KXtXKGEsYS5yZXR1cm4sdCl9dHJ5e1FqKDUsYSxhLnJldHVybil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDE6ZGsoYixhKTtmayhhKTtkJjUxMiYmbnVsbCE9PWMmJk1qKGMsYy5yZXR1cm4pO2JyZWFrO2Nhc2UgNTpkayhiLGEpO2ZrKGEpO2QmNTEyJiZudWxsIT09YyYmTWooYyxjLnJldHVybik7aWYoYS5mbGFncyYzMil7dmFyIGU9YS5zdGF0ZU5vZGU7dHJ5e29iKGUsXCJcIil9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1pZihkJjQmJihlPWEuc3RhdGVOb2RlLG51bGwhPWUpKXt2YXIgZj1hLm1lbW9pemVkUHJvcHMsZz1udWxsIT09Yz9jLm1lbW9pemVkUHJvcHM6ZixoPWEudHlwZSxrPWEudXBkYXRlUXVldWU7XG5hLnVwZGF0ZVF1ZXVlPW51bGw7aWYobnVsbCE9PWspdHJ5e1wiaW5wdXRcIj09PWgmJlwicmFkaW9cIj09PWYudHlwZSYmbnVsbCE9Zi5uYW1lJiZhYihlLGYpO3ZiKGgsZyk7dmFyIGw9dmIoaCxmKTtmb3IoZz0wO2c8ay5sZW5ndGg7Zys9Mil7dmFyIG09a1tnXSxxPWtbZysxXTtcInN0eWxlXCI9PT1tP3NiKGUscSk6XCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiPT09bT9uYihlLHEpOlwiY2hpbGRyZW5cIj09PW0/b2IoZSxxKTp0YShlLG0scSxsKX1zd2l0Y2goaCl7Y2FzZSBcImlucHV0XCI6YmIoZSxmKTticmVhaztjYXNlIFwidGV4dGFyZWFcIjppYihlLGYpO2JyZWFrO2Nhc2UgXCJzZWxlY3RcIjp2YXIgcj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhZi5tdWx0aXBsZTt2YXIgeT1mLnZhbHVlO251bGwhPXk/ZmIoZSwhIWYubXVsdGlwbGUseSwhMSk6ciE9PSEhZi5tdWx0aXBsZSYmKG51bGwhPWYuZGVmYXVsdFZhbHVlP2ZiKGUsISFmLm11bHRpcGxlLFxuZi5kZWZhdWx0VmFsdWUsITApOmZiKGUsISFmLm11bHRpcGxlLGYubXVsdGlwbGU/W106XCJcIiwhMSkpfWVbUGZdPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDY6ZGsoYixhKTtmayhhKTtpZihkJjQpe2lmKG51bGw9PT1hLnN0YXRlTm9kZSl0aHJvdyBFcnJvcihwKDE2MikpO2U9YS5zdGF0ZU5vZGU7Zj1hLm1lbW9pemVkUHJvcHM7dHJ5e2Uubm9kZVZhbHVlPWZ9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1icmVhaztjYXNlIDM6ZGsoYixhKTtmayhhKTtpZihkJjQmJm51bGwhPT1jJiZjLm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXRyeXtiZChiLmNvbnRhaW5lckluZm8pfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX1icmVhaztjYXNlIDQ6ZGsoYixhKTtmayhhKTticmVhaztjYXNlIDEzOmRrKGIsYSk7ZmsoYSk7ZT1hLmNoaWxkO2UuZmxhZ3MmODE5MiYmKGY9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSxlLnN0YXRlTm9kZS5pc0hpZGRlbj1mLCFmfHxcbm51bGwhPT1lLmFsdGVybmF0ZSYmbnVsbCE9PWUuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGV8fChnaz1CKCkpKTtkJjQmJmJrKGEpO2JyZWFrO2Nhc2UgMjI6bT1udWxsIT09YyYmbnVsbCE9PWMubWVtb2l6ZWRTdGF0ZTthLm1vZGUmMT8oVT0obD1VKXx8bSxkayhiLGEpLFU9bCk6ZGsoYixhKTtmayhhKTtpZihkJjgxOTIpe2w9bnVsbCE9PWEubWVtb2l6ZWRTdGF0ZTtpZigoYS5zdGF0ZU5vZGUuaXNIaWRkZW49bCkmJiFtJiYwIT09KGEubW9kZSYxKSlmb3IoVj1hLG09YS5jaGlsZDtudWxsIT09bTspe2ZvcihxPVY9bTtudWxsIT09Vjspe3I9Vjt5PXIuY2hpbGQ7c3dpdGNoKHIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6UWooNCxyLHIucmV0dXJuKTticmVhaztjYXNlIDE6TWoocixyLnJldHVybik7dmFyIG49ci5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIG4uY29tcG9uZW50V2lsbFVubW91bnQpe2Q9cjtjPXIucmV0dXJuO3RyeXtiPWQsbi5wcm9wcz1cbmIubWVtb2l6ZWRQcm9wcyxuLnN0YXRlPWIubWVtb2l6ZWRTdGF0ZSxuLmNvbXBvbmVudFdpbGxVbm1vdW50KCl9Y2F0Y2godCl7VyhkLGMsdCl9fWJyZWFrO2Nhc2UgNTpNaihyLHIucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKG51bGwhPT1yLm1lbW9pemVkU3RhdGUpe2hrKHEpO2NvbnRpbnVlfX1udWxsIT09eT8oeS5yZXR1cm49cixWPXkpOmhrKHEpfW09bS5zaWJsaW5nfWE6Zm9yKG09bnVsbCxxPWE7Oyl7aWYoNT09PXEudGFnKXtpZihudWxsPT09bSl7bT1xO3RyeXtlPXEuc3RhdGVOb2RlLGw/KGY9ZS5zdHlsZSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZi5zZXRQcm9wZXJ0eT9mLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpOmYuZGlzcGxheT1cIm5vbmVcIik6KGg9cS5zdGF0ZU5vZGUsaz1xLm1lbW9pemVkUHJvcHMuc3R5bGUsZz12b2lkIDAhPT1rJiZudWxsIT09ayYmay5oYXNPd25Qcm9wZXJ0eShcImRpc3BsYXlcIik/ay5kaXNwbGF5Om51bGwsaC5zdHlsZS5kaXNwbGF5PVxucmIoXCJkaXNwbGF5XCIsZykpfWNhdGNoKHQpe1coYSxhLnJldHVybix0KX19fWVsc2UgaWYoNj09PXEudGFnKXtpZihudWxsPT09bSl0cnl7cS5zdGF0ZU5vZGUubm9kZVZhbHVlPWw/XCJcIjpxLm1lbW9pemVkUHJvcHN9Y2F0Y2godCl7VyhhLGEucmV0dXJuLHQpfX1lbHNlIGlmKCgyMiE9PXEudGFnJiYyMyE9PXEudGFnfHxudWxsPT09cS5tZW1vaXplZFN0YXRlfHxxPT09YSkmJm51bGwhPT1xLmNoaWxkKXtxLmNoaWxkLnJldHVybj1xO3E9cS5jaGlsZDtjb250aW51ZX1pZihxPT09YSlicmVhayBhO2Zvcig7bnVsbD09PXEuc2libGluZzspe2lmKG51bGw9PT1xLnJldHVybnx8cS5yZXR1cm49PT1hKWJyZWFrIGE7bT09PXEmJihtPW51bGwpO3E9cS5yZXR1cm59bT09PXEmJihtPW51bGwpO3Euc2libGluZy5yZXR1cm49cS5yZXR1cm47cT1xLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6ZGsoYixhKTtmayhhKTtkJjQmJmJrKGEpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpkayhiLFxuYSksZmsoYSl9fWZ1bmN0aW9uIGZrKGEpe3ZhciBiPWEuZmxhZ3M7aWYoYiYyKXt0cnl7YTp7Zm9yKHZhciBjPWEucmV0dXJuO251bGwhPT1jOyl7aWYoVWooYykpe3ZhciBkPWM7YnJlYWsgYX1jPWMucmV0dXJufXRocm93IEVycm9yKHAoMTYwKSk7fXN3aXRjaChkLnRhZyl7Y2FzZSA1OnZhciBlPWQuc3RhdGVOb2RlO2QuZmxhZ3MmMzImJihvYihlLFwiXCIpLGQuZmxhZ3MmPS0zMyk7dmFyIGY9VmooYSk7WGooYSxmLGUpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGc9ZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxoPVZqKGEpO1dqKGEsaCxnKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMTYxKSk7fX1jYXRjaChrKXtXKGEsYS5yZXR1cm4sayl9YS5mbGFncyY9LTN9YiY0MDk2JiYoYS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIGlrKGEsYixjKXtWPWE7amsoYSxiLGMpfVxuZnVuY3Rpb24gamsoYSxiLGMpe2Zvcih2YXIgZD0wIT09KGEubW9kZSYxKTtudWxsIT09Vjspe3ZhciBlPVYsZj1lLmNoaWxkO2lmKDIyPT09ZS50YWcmJmQpe3ZhciBnPW51bGwhPT1lLm1lbW9pemVkU3RhdGV8fEtqO2lmKCFnKXt2YXIgaD1lLmFsdGVybmF0ZSxrPW51bGwhPT1oJiZudWxsIT09aC5tZW1vaXplZFN0YXRlfHxVO2g9S2o7dmFyIGw9VTtLaj1nO2lmKChVPWspJiYhbClmb3IoVj1lO251bGwhPT1WOylnPVYsaz1nLmNoaWxkLDIyPT09Zy50YWcmJm51bGwhPT1nLm1lbW9pemVkU3RhdGU/a2soZSk6bnVsbCE9PWs/KGsucmV0dXJuPWcsVj1rKTprayhlKTtmb3IoO251bGwhPT1mOylWPWYsamsoZixiLGMpLGY9Zi5zaWJsaW5nO1Y9ZTtLaj1oO1U9bH1sayhhLGIsYyl9ZWxzZSAwIT09KGUuc3VidHJlZUZsYWdzJjg3NzIpJiZudWxsIT09Zj8oZi5yZXR1cm49ZSxWPWYpOmxrKGEsYixjKX19XG5mdW5jdGlvbiBsayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZigwIT09KGIuZmxhZ3MmODc3Mikpe3ZhciBjPWIuYWx0ZXJuYXRlO3RyeXtpZigwIT09KGIuZmxhZ3MmODc3Mikpc3dpdGNoKGIudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlV8fFJqKDUsYik7YnJlYWs7Y2FzZSAxOnZhciBkPWIuc3RhdGVOb2RlO2lmKGIuZmxhZ3MmNCYmIVUpaWYobnVsbD09PWMpZC5jb21wb25lbnREaWRNb3VudCgpO2Vsc2V7dmFyIGU9Yi5lbGVtZW50VHlwZT09PWIudHlwZT9jLm1lbW9pemVkUHJvcHM6TGcoYi50eXBlLGMubWVtb2l6ZWRQcm9wcyk7ZC5jb21wb25lbnREaWRVcGRhdGUoZSxjLm1lbW9pemVkU3RhdGUsZC5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSl9dmFyIGY9Yi51cGRhdGVRdWV1ZTtudWxsIT09ZiYmaWgoYixmLGQpO2JyZWFrO2Nhc2UgMzp2YXIgZz1iLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1nKXtjPW51bGw7aWYobnVsbCE9PWIuY2hpbGQpc3dpdGNoKGIuY2hpbGQudGFnKXtjYXNlIDU6Yz1cbmIuY2hpbGQuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMTpjPWIuY2hpbGQuc3RhdGVOb2RlfWloKGIsZyxjKX1icmVhaztjYXNlIDU6dmFyIGg9Yi5zdGF0ZU5vZGU7aWYobnVsbD09PWMmJmIuZmxhZ3MmNCl7Yz1oO3ZhciBrPWIubWVtb2l6ZWRQcm9wcztzd2l0Y2goYi50eXBlKXtjYXNlIFwiYnV0dG9uXCI6Y2FzZSBcImlucHV0XCI6Y2FzZSBcInNlbGVjdFwiOmNhc2UgXCJ0ZXh0YXJlYVwiOmsuYXV0b0ZvY3VzJiZjLmZvY3VzKCk7YnJlYWs7Y2FzZSBcImltZ1wiOmsuc3JjJiYoYy5zcmM9ay5zcmMpfX1icmVhaztjYXNlIDY6YnJlYWs7Y2FzZSA0OmJyZWFrO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzppZihudWxsPT09Yi5tZW1vaXplZFN0YXRlKXt2YXIgbD1iLmFsdGVybmF0ZTtpZihudWxsIT09bCl7dmFyIG09bC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1tKXt2YXIgcT1tLmRlaHlkcmF0ZWQ7bnVsbCE9PXEmJmJkKHEpfX19YnJlYWs7Y2FzZSAxOTpjYXNlIDE3OmNhc2UgMjE6Y2FzZSAyMjpjYXNlIDIzOmNhc2UgMjU6YnJlYWs7XG5kZWZhdWx0OnRocm93IEVycm9yKHAoMTYzKSk7fVV8fGIuZmxhZ3MmNTEyJiZTaihiKX1jYXRjaChyKXtXKGIsYi5yZXR1cm4scil9fWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9Yz1iLnNpYmxpbmc7aWYobnVsbCE9PWMpe2MucmV0dXJuPWIucmV0dXJuO1Y9YzticmVha31WPWIucmV0dXJufX1mdW5jdGlvbiBoayhhKXtmb3IoO251bGwhPT1WOyl7dmFyIGI9VjtpZihiPT09YSl7Vj1udWxsO2JyZWFrfXZhciBjPWIuc2libGluZztpZihudWxsIT09Yyl7Yy5yZXR1cm49Yi5yZXR1cm47Vj1jO2JyZWFrfVY9Yi5yZXR1cm59fVxuZnVuY3Rpb24ga2soYSl7Zm9yKDtudWxsIT09Vjspe3ZhciBiPVY7dHJ5e3N3aXRjaChiLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp2YXIgYz1iLnJldHVybjt0cnl7UmooNCxiKX1jYXRjaChrKXtXKGIsYyxrKX1icmVhaztjYXNlIDE6dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuY29tcG9uZW50RGlkTW91bnQpe3ZhciBlPWIucmV0dXJuO3RyeXtkLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2goayl7VyhiLGUsayl9fXZhciBmPWIucmV0dXJuO3RyeXtTaihiKX1jYXRjaChrKXtXKGIsZixrKX1icmVhaztjYXNlIDU6dmFyIGc9Yi5yZXR1cm47dHJ5e1NqKGIpfWNhdGNoKGspe1coYixnLGspfX19Y2F0Y2goayl7VyhiLGIucmV0dXJuLGspfWlmKGI9PT1hKXtWPW51bGw7YnJlYWt9dmFyIGg9Yi5zaWJsaW5nO2lmKG51bGwhPT1oKXtoLnJldHVybj1iLnJldHVybjtWPWg7YnJlYWt9Vj1iLnJldHVybn19XG52YXIgbWs9TWF0aC5jZWlsLG5rPXVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsb2s9dWEuUmVhY3RDdXJyZW50T3duZXIscGs9dWEuUmVhY3RDdXJyZW50QmF0Y2hDb25maWcsSz0wLFI9bnVsbCxZPW51bGwsWj0wLGdqPTAsZmo9VWYoMCksVD0wLHFrPW51bGwsaGg9MCxyaz0wLHNrPTAsdGs9bnVsbCx1az1udWxsLGdrPTAsSGo9SW5maW5pdHksdms9bnVsbCxQaT0hMSxRaT1udWxsLFNpPW51bGwsd2s9ITEseGs9bnVsbCx5az0wLHprPTAsQWs9bnVsbCxCaz0tMSxDaz0wO2Z1bmN0aW9uIEwoKXtyZXR1cm4gMCE9PShLJjYpP0IoKTotMSE9PUJrP0JrOkJrPUIoKX1cbmZ1bmN0aW9uIGxoKGEpe2lmKDA9PT0oYS5tb2RlJjEpKXJldHVybiAxO2lmKDAhPT0oSyYyKSYmMCE9PVopcmV0dXJuIFomLVo7aWYobnVsbCE9PUtnLnRyYW5zaXRpb24pcmV0dXJuIDA9PT1DayYmKENrPXljKCkpLENrO2E9QztpZigwIT09YSlyZXR1cm4gYTthPXdpbmRvdy5ldmVudDthPXZvaWQgMD09PWE/MTY6amQoYS50eXBlKTtyZXR1cm4gYX1mdW5jdGlvbiBtaChhLGIsYyxkKXtpZig1MDx6ayl0aHJvdyB6az0wLEFrPW51bGwsRXJyb3IocCgxODUpKTtBYyhhLGMsZCk7aWYoMD09PShLJjIpfHxhIT09UilhPT09UiYmKDA9PT0oSyYyKSYmKHJrfD1jKSw0PT09VCYmRGsoYSxaKSksRWsoYSxkKSwxPT09YyYmMD09PUsmJjA9PT0oYi5tb2RlJjEpJiYoSGo9QigpKzUwMCxmZyYmamcoKSl9XG5mdW5jdGlvbiBFayhhLGIpe3ZhciBjPWEuY2FsbGJhY2tOb2RlO3djKGEsYik7dmFyIGQ9dWMoYSxhPT09Uj9aOjApO2lmKDA9PT1kKW51bGwhPT1jJiZiYyhjKSxhLmNhbGxiYWNrTm9kZT1udWxsLGEuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYoYj1kJi1kLGEuY2FsbGJhY2tQcmlvcml0eSE9PWIpe251bGwhPWMmJmJjKGMpO2lmKDE9PT1iKTA9PT1hLnRhZz9pZyhGay5iaW5kKG51bGwsYSkpOmhnKEZrLmJpbmQobnVsbCxhKSksSmYoZnVuY3Rpb24oKXswPT09KEsmNikmJmpnKCl9KSxjPW51bGw7ZWxzZXtzd2l0Y2goRGMoZCkpe2Nhc2UgMTpjPWZjO2JyZWFrO2Nhc2UgNDpjPWdjO2JyZWFrO2Nhc2UgMTY6Yz1oYzticmVhaztjYXNlIDUzNjg3MDkxMjpjPWpjO2JyZWFrO2RlZmF1bHQ6Yz1oY31jPUdrKGMsSGsuYmluZChudWxsLGEpKX1hLmNhbGxiYWNrUHJpb3JpdHk9YjthLmNhbGxiYWNrTm9kZT1jfX1cbmZ1bmN0aW9uIEhrKGEsYil7Qms9LTE7Q2s9MDtpZigwIT09KEsmNikpdGhyb3cgRXJyb3IocCgzMjcpKTt2YXIgYz1hLmNhbGxiYWNrTm9kZTtpZihJaygpJiZhLmNhbGxiYWNrTm9kZSE9PWMpcmV0dXJuIG51bGw7dmFyIGQ9dWMoYSxhPT09Uj9aOjApO2lmKDA9PT1kKXJldHVybiBudWxsO2lmKDAhPT0oZCYzMCl8fDAhPT0oZCZhLmV4cGlyZWRMYW5lcyl8fGIpYj1KayhhLGQpO2Vsc2V7Yj1kO3ZhciBlPUs7S3w9Mjt2YXIgZj1LaygpO2lmKFIhPT1hfHxaIT09Yil2az1udWxsLEhqPUIoKSs1MDAsTGsoYSxiKTtkbyB0cnl7TWsoKTticmVha31jYXRjaChoKXtOayhhLGgpfXdoaWxlKDEpO1FnKCk7bmsuY3VycmVudD1mO0s9ZTtudWxsIT09WT9iPTA6KFI9bnVsbCxaPTAsYj1UKX1pZigwIT09Yil7Mj09PWImJihlPXhjKGEpLDAhPT1lJiYoZD1lLGI9T2soYSxlKSkpO2lmKDE9PT1iKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGQpLEVrKGEsQigpKSxjO2lmKDY9PT1iKURrKGEsZCk7XG5lbHNle2U9YS5jdXJyZW50LmFsdGVybmF0ZTtpZigwPT09KGQmMzApJiYhUGsoZSkmJihiPUprKGEsZCksMj09PWImJihmPXhjKGEpLDAhPT1mJiYoZD1mLGI9T2soYSxmKSkpLDE9PT1iKSl0aHJvdyBjPXFrLExrKGEsMCksRGsoYSxkKSxFayhhLEIoKSksYzthLmZpbmlzaGVkV29yaz1lO2EuZmluaXNoZWRMYW5lcz1kO3N3aXRjaChiKXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKHAoMzQ1KSk7Y2FzZSAyOlFrKGEsdWssdmspO2JyZWFrO2Nhc2UgMzpEayhhLGQpO2lmKChkJjEzMDAyMzQyNCk9PT1kJiYoYj1nays1MDAtQigpLDEwPGIpKXtpZigwIT09dWMoYSwwKSlicmVhaztlPWEuc3VzcGVuZGVkTGFuZXM7aWYoKGUmZCkhPT1kKXtMKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZlO2JyZWFrfWEudGltZW91dEhhbmRsZT1GZihRay5iaW5kKG51bGwsYSx1ayx2ayksYik7YnJlYWt9UWsoYSx1ayx2ayk7YnJlYWs7Y2FzZSA0OkRrKGEsZCk7aWYoKGQmNDE5NDI0MCk9PT1cbmQpYnJlYWs7Yj1hLmV2ZW50VGltZXM7Zm9yKGU9LTE7MDxkOyl7dmFyIGc9MzEtb2MoZCk7Zj0xPDxnO2c9YltnXTtnPmUmJihlPWcpO2QmPX5mfWQ9ZTtkPUIoKS1kO2Q9KDEyMD5kPzEyMDo0ODA+ZD80ODA6MTA4MD5kPzEwODA6MTkyMD5kPzE5MjA6M0UzPmQ/M0UzOjQzMjA+ZD80MzIwOjE5NjAqbWsoZC8xOTYwKSktZDtpZigxMDxkKXthLnRpbWVvdXRIYW5kbGU9RmYoUWsuYmluZChudWxsLGEsdWssdmspLGQpO2JyZWFrfVFrKGEsdWssdmspO2JyZWFrO2Nhc2UgNTpRayhhLHVrLHZrKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKHAoMzI5KSk7fX19RWsoYSxCKCkpO3JldHVybiBhLmNhbGxiYWNrTm9kZT09PWM/SGsuYmluZChudWxsLGEpOm51bGx9XG5mdW5jdGlvbiBPayhhLGIpe3ZhciBjPXRrO2EuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKExrKGEsYikuZmxhZ3N8PTI1Nik7YT1KayhhLGIpOzIhPT1hJiYoYj11ayx1az1jLG51bGwhPT1iJiZHaihiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gR2ooYSl7bnVsbD09PXVrP3VrPWE6dWsucHVzaC5hcHBseSh1ayxhKX1cbmZ1bmN0aW9uIFBrKGEpe2Zvcih2YXIgYj1hOzspe2lmKGIuZmxhZ3MmMTYzODQpe3ZhciBjPWIudXBkYXRlUXVldWU7aWYobnVsbCE9PWMmJihjPWMuc3RvcmVzLG51bGwhPT1jKSlmb3IodmFyIGQ9MDtkPGMubGVuZ3RoO2QrKyl7dmFyIGU9Y1tkXSxmPWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXtpZighSGUoZigpLGUpKXJldHVybiExfWNhdGNoKGcpe3JldHVybiExfX19Yz1iLmNoaWxkO2lmKGIuc3VidHJlZUZsYWdzJjE2Mzg0JiZudWxsIT09YyljLnJldHVybj1iLGI9YztlbHNle2lmKGI9PT1hKWJyZWFrO2Zvcig7bnVsbD09PWIuc2libGluZzspe2lmKG51bGw9PT1iLnJldHVybnx8Yi5yZXR1cm49PT1hKXJldHVybiEwO2I9Yi5yZXR1cm59Yi5zaWJsaW5nLnJldHVybj1iLnJldHVybjtiPWIuc2libGluZ319cmV0dXJuITB9XG5mdW5jdGlvbiBEayhhLGIpe2ImPX5zaztiJj1+cms7YS5zdXNwZW5kZWRMYW5lc3w9YjthLnBpbmdlZExhbmVzJj1+Yjtmb3IoYT1hLmV4cGlyYXRpb25UaW1lczswPGI7KXt2YXIgYz0zMS1vYyhiKSxkPTE8PGM7YVtjXT0tMTtiJj1+ZH19ZnVuY3Rpb24gRmsoYSl7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7SWsoKTt2YXIgYj11YyhhLDApO2lmKDA9PT0oYiYxKSlyZXR1cm4gRWsoYSxCKCkpLG51bGw7dmFyIGM9SmsoYSxiKTtpZigwIT09YS50YWcmJjI9PT1jKXt2YXIgZD14YyhhKTswIT09ZCYmKGI9ZCxjPU9rKGEsZCkpfWlmKDE9PT1jKXRocm93IGM9cWssTGsoYSwwKSxEayhhLGIpLEVrKGEsQigpKSxjO2lmKDY9PT1jKXRocm93IEVycm9yKHAoMzQ1KSk7YS5maW5pc2hlZFdvcms9YS5jdXJyZW50LmFsdGVybmF0ZTthLmZpbmlzaGVkTGFuZXM9YjtRayhhLHVrLHZrKTtFayhhLEIoKSk7cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBSayhhLGIpe3ZhciBjPUs7S3w9MTt0cnl7cmV0dXJuIGEoYil9ZmluYWxseXtLPWMsMD09PUsmJihIaj1CKCkrNTAwLGZnJiZqZygpKX19ZnVuY3Rpb24gU2soYSl7bnVsbCE9PXhrJiYwPT09eGsudGFnJiYwPT09KEsmNikmJklrKCk7dmFyIGI9SztLfD0xO3ZhciBjPXBrLnRyYW5zaXRpb24sZD1DO3RyeXtpZihway50cmFuc2l0aW9uPW51bGwsQz0xLGEpcmV0dXJuIGEoKX1maW5hbGx5e0M9ZCxway50cmFuc2l0aW9uPWMsSz1iLDA9PT0oSyY2KSYmamcoKX19ZnVuY3Rpb24gSWooKXtnaj1mai5jdXJyZW50O0UoZmopfVxuZnVuY3Rpb24gTGsoYSxiKXthLmZpbmlzaGVkV29yaz1udWxsO2EuZmluaXNoZWRMYW5lcz0wO3ZhciBjPWEudGltZW91dEhhbmRsZTstMSE9PWMmJihhLnRpbWVvdXRIYW5kbGU9LTEsR2YoYykpO2lmKG51bGwhPT1ZKWZvcihjPVkucmV0dXJuO251bGwhPT1jOyl7dmFyIGQ9Yzt3ZyhkKTtzd2l0Y2goZC50YWcpe2Nhc2UgMTpkPWQudHlwZS5jaGlsZENvbnRleHRUeXBlcztudWxsIT09ZCYmdm9pZCAwIT09ZCYmJGYoKTticmVhaztjYXNlIDM6SmgoKTtFKFdmKTtFKEgpO09oKCk7YnJlYWs7Y2FzZSA1OkxoKGQpO2JyZWFrO2Nhc2UgNDpKaCgpO2JyZWFrO2Nhc2UgMTM6RShNKTticmVhaztjYXNlIDE5OkUoTSk7YnJlYWs7Y2FzZSAxMDpSZyhkLnR5cGUuX2NvbnRleHQpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpJaigpfWM9Yy5yZXR1cm59Uj1hO1k9YT13aChhLmN1cnJlbnQsbnVsbCk7Wj1naj1iO1Q9MDtxaz1udWxsO3NrPXJrPWhoPTA7dWs9dGs9bnVsbDtpZihudWxsIT09V2cpe2ZvcihiPVxuMDtiPFdnLmxlbmd0aDtiKyspaWYoYz1XZ1tiXSxkPWMuaW50ZXJsZWF2ZWQsbnVsbCE9PWQpe2MuaW50ZXJsZWF2ZWQ9bnVsbDt2YXIgZT1kLm5leHQsZj1jLnBlbmRpbmc7aWYobnVsbCE9PWYpe3ZhciBnPWYubmV4dDtmLm5leHQ9ZTtkLm5leHQ9Z31jLnBlbmRpbmc9ZH1XZz1udWxsfXJldHVybiBhfVxuZnVuY3Rpb24gTmsoYSxiKXtkb3t2YXIgYz1ZO3RyeXtRZygpO1BoLmN1cnJlbnQ9YWk7aWYoU2gpe2Zvcih2YXIgZD1OLm1lbW9pemVkU3RhdGU7bnVsbCE9PWQ7KXt2YXIgZT1kLnF1ZXVlO251bGwhPT1lJiYoZS5wZW5kaW5nPW51bGwpO2Q9ZC5uZXh0fVNoPSExfVJoPTA7UD1PPU49bnVsbDtUaD0hMTtVaD0wO29rLmN1cnJlbnQ9bnVsbDtpZihudWxsPT09Y3x8bnVsbD09PWMucmV0dXJuKXtUPTE7cWs9YjtZPW51bGw7YnJlYWt9YTp7dmFyIGY9YSxnPWMucmV0dXJuLGg9YyxrPWI7Yj1aO2guZmxhZ3N8PTMyNzY4O2lmKG51bGwhPT1rJiZcIm9iamVjdFwiPT09dHlwZW9mIGsmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBrLnRoZW4pe3ZhciBsPWssbT1oLHE9bS50YWc7aWYoMD09PShtLm1vZGUmMSkmJigwPT09cXx8MTE9PT1xfHwxNT09PXEpKXt2YXIgcj1tLmFsdGVybmF0ZTtyPyhtLnVwZGF0ZVF1ZXVlPXIudXBkYXRlUXVldWUsbS5tZW1vaXplZFN0YXRlPXIubWVtb2l6ZWRTdGF0ZSxcbm0ubGFuZXM9ci5sYW5lcyk6KG0udXBkYXRlUXVldWU9bnVsbCxtLm1lbW9pemVkU3RhdGU9bnVsbCl9dmFyIHk9VmkoZyk7aWYobnVsbCE9PXkpe3kuZmxhZ3MmPS0yNTc7V2koeSxnLGgsZixiKTt5Lm1vZGUmMSYmVGkoZixsLGIpO2I9eTtrPWw7dmFyIG49Yi51cGRhdGVRdWV1ZTtpZihudWxsPT09bil7dmFyIHQ9bmV3IFNldDt0LmFkZChrKTtiLnVwZGF0ZVF1ZXVlPXR9ZWxzZSBuLmFkZChrKTticmVhayBhfWVsc2V7aWYoMD09PShiJjEpKXtUaShmLGwsYik7dWooKTticmVhayBhfWs9RXJyb3IocCg0MjYpKX19ZWxzZSBpZihJJiZoLm1vZGUmMSl7dmFyIEo9VmkoZyk7aWYobnVsbCE9PUopezA9PT0oSi5mbGFncyY2NTUzNikmJihKLmZsYWdzfD0yNTYpO1dpKEosZyxoLGYsYik7SmcoS2koayxoKSk7YnJlYWsgYX19Zj1rPUtpKGssaCk7NCE9PVQmJihUPTIpO251bGw9PT10az90az1bZl06dGsucHVzaChmKTtmPWc7ZG97c3dpdGNoKGYudGFnKXtjYXNlIDM6Zi5mbGFnc3w9NjU1MzY7XG5iJj0tYjtmLmxhbmVzfD1iO3ZhciB4PU9pKGYsayxiKTtmaChmLHgpO2JyZWFrIGE7Y2FzZSAxOmg9azt2YXIgdz1mLnR5cGUsdT1mLnN0YXRlTm9kZTtpZigwPT09KGYuZmxhZ3MmMTI4KSYmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiB3LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PXUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB1LmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVNpfHwhU2kuaGFzKHUpKSkpe2YuZmxhZ3N8PTY1NTM2O2ImPS1iO2YubGFuZXN8PWI7dmFyIEY9UmkoZixoLGIpO2ZoKGYsRik7YnJlYWsgYX19Zj1mLnJldHVybn13aGlsZShudWxsIT09Zil9VGsoYyl9Y2F0Y2gobmEpe2I9bmE7WT09PWMmJm51bGwhPT1jJiYoWT1jPWMucmV0dXJuKTtjb250aW51ZX1icmVha313aGlsZSgxKX1mdW5jdGlvbiBLaygpe3ZhciBhPW5rLmN1cnJlbnQ7bmsuY3VycmVudD1haTtyZXR1cm4gbnVsbD09PWE/YWk6YX1cbmZ1bmN0aW9uIHVqKCl7aWYoMD09PVR8fDM9PT1UfHwyPT09VClUPTQ7bnVsbD09PVJ8fDA9PT0oaGgmMjY4NDM1NDU1KSYmMD09PShyayYyNjg0MzU0NTUpfHxEayhSLFopfWZ1bmN0aW9uIEprKGEsYil7dmFyIGM9SztLfD0yO3ZhciBkPUtrKCk7aWYoUiE9PWF8fFohPT1iKXZrPW51bGwsTGsoYSxiKTtkbyB0cnl7VWsoKTticmVha31jYXRjaChlKXtOayhhLGUpfXdoaWxlKDEpO1FnKCk7Sz1jO25rLmN1cnJlbnQ9ZDtpZihudWxsIT09WSl0aHJvdyBFcnJvcihwKDI2MSkpO1I9bnVsbDtaPTA7cmV0dXJuIFR9ZnVuY3Rpb24gVWsoKXtmb3IoO251bGwhPT1ZOylWayhZKX1mdW5jdGlvbiBNaygpe2Zvcig7bnVsbCE9PVkmJiFjYygpOylWayhZKX1mdW5jdGlvbiBWayhhKXt2YXIgYj1XayhhLmFsdGVybmF0ZSxhLGdqKTthLm1lbW9pemVkUHJvcHM9YS5wZW5kaW5nUHJvcHM7bnVsbD09PWI/VGsoYSk6WT1iO29rLmN1cnJlbnQ9bnVsbH1cbmZ1bmN0aW9uIFRrKGEpe3ZhciBiPWE7ZG97dmFyIGM9Yi5hbHRlcm5hdGU7YT1iLnJldHVybjtpZigwPT09KGIuZmxhZ3MmMzI3NjgpKXtpZihjPUZqKGMsYixnaiksbnVsbCE9PWMpe1k9YztyZXR1cm59fWVsc2V7Yz1KaihjLGIpO2lmKG51bGwhPT1jKXtjLmZsYWdzJj0zMjc2NztZPWM7cmV0dXJufWlmKG51bGwhPT1hKWEuZmxhZ3N8PTMyNzY4LGEuc3VidHJlZUZsYWdzPTAsYS5kZWxldGlvbnM9bnVsbDtlbHNle1Q9NjtZPW51bGw7cmV0dXJufX1iPWIuc2libGluZztpZihudWxsIT09Yil7WT1iO3JldHVybn1ZPWI9YX13aGlsZShudWxsIT09Yik7MD09PVQmJihUPTUpfWZ1bmN0aW9uIFFrKGEsYixjKXt2YXIgZD1DLGU9cGsudHJhbnNpdGlvbjt0cnl7cGsudHJhbnNpdGlvbj1udWxsLEM9MSxYayhhLGIsYyxkKX1maW5hbGx5e3BrLnRyYW5zaXRpb249ZSxDPWR9cmV0dXJuIG51bGx9XG5mdW5jdGlvbiBYayhhLGIsYyxkKXtkbyBJaygpO3doaWxlKG51bGwhPT14ayk7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzI3KSk7Yz1hLmZpbmlzaGVkV29yazt2YXIgZT1hLmZpbmlzaGVkTGFuZXM7aWYobnVsbD09PWMpcmV0dXJuIG51bGw7YS5maW5pc2hlZFdvcms9bnVsbDthLmZpbmlzaGVkTGFuZXM9MDtpZihjPT09YS5jdXJyZW50KXRocm93IEVycm9yKHAoMTc3KSk7YS5jYWxsYmFja05vZGU9bnVsbDthLmNhbGxiYWNrUHJpb3JpdHk9MDt2YXIgZj1jLmxhbmVzfGMuY2hpbGRMYW5lcztCYyhhLGYpO2E9PT1SJiYoWT1SPW51bGwsWj0wKTswPT09KGMuc3VidHJlZUZsYWdzJjIwNjQpJiYwPT09KGMuZmxhZ3MmMjA2NCl8fHdrfHwod2s9ITAsR2soaGMsZnVuY3Rpb24oKXtJaygpO3JldHVybiBudWxsfSkpO2Y9MCE9PShjLmZsYWdzJjE1OTkwKTtpZigwIT09KGMuc3VidHJlZUZsYWdzJjE1OTkwKXx8Zil7Zj1way50cmFuc2l0aW9uO3BrLnRyYW5zaXRpb249bnVsbDtcbnZhciBnPUM7Qz0xO3ZhciBoPUs7S3w9NDtvay5jdXJyZW50PW51bGw7UGooYSxjKTtlayhjLGEpO09lKERmKTtkZD0hIUNmO0RmPUNmPW51bGw7YS5jdXJyZW50PWM7aWsoYyxhLGUpO2RjKCk7Sz1oO0M9Zztway50cmFuc2l0aW9uPWZ9ZWxzZSBhLmN1cnJlbnQ9Yzt3ayYmKHdrPSExLHhrPWEseWs9ZSk7Zj1hLnBlbmRpbmdMYW5lczswPT09ZiYmKFNpPW51bGwpO21jKGMuc3RhdGVOb2RlLGQpO0VrKGEsQigpKTtpZihudWxsIT09Yilmb3IoZD1hLm9uUmVjb3ZlcmFibGVFcnJvcixjPTA7YzxiLmxlbmd0aDtjKyspZT1iW2NdLGQoZS52YWx1ZSx7Y29tcG9uZW50U3RhY2s6ZS5zdGFjayxkaWdlc3Q6ZS5kaWdlc3R9KTtpZihQaSl0aHJvdyBQaT0hMSxhPVFpLFFpPW51bGwsYTswIT09KHlrJjEpJiYwIT09YS50YWcmJklrKCk7Zj1hLnBlbmRpbmdMYW5lczswIT09KGYmMSk/YT09PUFrP3prKys6KHprPTAsQWs9YSk6ems9MDtqZygpO3JldHVybiBudWxsfVxuZnVuY3Rpb24gSWsoKXtpZihudWxsIT09eGspe3ZhciBhPURjKHlrKSxiPXBrLnRyYW5zaXRpb24sYz1DO3RyeXtway50cmFuc2l0aW9uPW51bGw7Qz0xNj5hPzE2OmE7aWYobnVsbD09PXhrKXZhciBkPSExO2Vsc2V7YT14azt4az1udWxsO3lrPTA7aWYoMCE9PShLJjYpKXRocm93IEVycm9yKHAoMzMxKSk7dmFyIGU9SztLfD00O2ZvcihWPWEuY3VycmVudDtudWxsIT09Vjspe3ZhciBmPVYsZz1mLmNoaWxkO2lmKDAhPT0oVi5mbGFncyYxNikpe3ZhciBoPWYuZGVsZXRpb25zO2lmKG51bGwhPT1oKXtmb3IodmFyIGs9MDtrPGgubGVuZ3RoO2srKyl7dmFyIGw9aFtrXTtmb3IoVj1sO251bGwhPT1WOyl7dmFyIG09Vjtzd2l0Y2gobS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UWooOCxtLGYpfXZhciBxPW0uY2hpbGQ7aWYobnVsbCE9PXEpcS5yZXR1cm49bSxWPXE7ZWxzZSBmb3IoO251bGwhPT1WOyl7bT1WO3ZhciByPW0uc2libGluZyx5PW0ucmV0dXJuO1RqKG0pO2lmKG09PT1cbmwpe1Y9bnVsbDticmVha31pZihudWxsIT09cil7ci5yZXR1cm49eTtWPXI7YnJlYWt9Vj15fX19dmFyIG49Zi5hbHRlcm5hdGU7aWYobnVsbCE9PW4pe3ZhciB0PW4uY2hpbGQ7aWYobnVsbCE9PXQpe24uY2hpbGQ9bnVsbDtkb3t2YXIgSj10LnNpYmxpbmc7dC5zaWJsaW5nPW51bGw7dD1KfXdoaWxlKG51bGwhPT10KX19Vj1mfX1pZigwIT09KGYuc3VidHJlZUZsYWdzJjIwNjQpJiZudWxsIT09ZylnLnJldHVybj1mLFY9ZztlbHNlIGI6Zm9yKDtudWxsIT09Vjspe2Y9VjtpZigwIT09KGYuZmxhZ3MmMjA0OCkpc3dpdGNoKGYudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlFqKDksZixmLnJldHVybil9dmFyIHg9Zi5zaWJsaW5nO2lmKG51bGwhPT14KXt4LnJldHVybj1mLnJldHVybjtWPXg7YnJlYWsgYn1WPWYucmV0dXJufX12YXIgdz1hLmN1cnJlbnQ7Zm9yKFY9dztudWxsIT09Vjspe2c9Vjt2YXIgdT1nLmNoaWxkO2lmKDAhPT0oZy5zdWJ0cmVlRmxhZ3MmMjA2NCkmJm51bGwhPT1cbnUpdS5yZXR1cm49ZyxWPXU7ZWxzZSBiOmZvcihnPXc7bnVsbCE9PVY7KXtoPVY7aWYoMCE9PShoLmZsYWdzJjIwNDgpKXRyeXtzd2l0Y2goaC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6UmooOSxoKX19Y2F0Y2gobmEpe1coaCxoLnJldHVybixuYSl9aWYoaD09PWcpe1Y9bnVsbDticmVhayBifXZhciBGPWguc2libGluZztpZihudWxsIT09Ril7Ri5yZXR1cm49aC5yZXR1cm47Vj1GO2JyZWFrIGJ9Vj1oLnJldHVybn19Sz1lO2pnKCk7aWYobGMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBsYy5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2xjLm9uUG9zdENvbW1pdEZpYmVyUm9vdChrYyxhKX1jYXRjaChuYSl7fWQ9ITB9cmV0dXJuIGR9ZmluYWxseXtDPWMscGsudHJhbnNpdGlvbj1ifX1yZXR1cm4hMX1mdW5jdGlvbiBZayhhLGIsYyl7Yj1LaShjLGIpO2I9T2koYSxiLDEpO2E9ZGgoYSxiLDEpO2I9TCgpO251bGwhPT1hJiYoQWMoYSwxLGIpLEVrKGEsYikpfVxuZnVuY3Rpb24gVyhhLGIsYyl7aWYoMz09PWEudGFnKVlrKGEsYSxjKTtlbHNlIGZvcig7bnVsbCE9PWI7KXtpZigzPT09Yi50YWcpe1lrKGIsYSxjKTticmVha31lbHNlIGlmKDE9PT1iLnRhZyl7dmFyIGQ9Yi5zdGF0ZU5vZGU7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGIudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PVNpfHwhU2kuaGFzKGQpKSl7YT1LaShjLGEpO2E9UmkoYixhLDEpO2I9ZGgoYixhLDEpO2E9TCgpO251bGwhPT1iJiYoQWMoYiwxLGEpLEVrKGIsYSkpO2JyZWFrfX1iPWIucmV0dXJufX1cbmZ1bmN0aW9uIFVpKGEsYixjKXt2YXIgZD1hLnBpbmdDYWNoZTtudWxsIT09ZCYmZC5kZWxldGUoYik7Yj1MKCk7YS5waW5nZWRMYW5lc3w9YS5zdXNwZW5kZWRMYW5lcyZjO1I9PT1hJiYoWiZjKT09PWMmJig0PT09VHx8Mz09PVQmJihaJjEzMDAyMzQyNCk9PT1aJiY1MDA+QigpLWdrP0xrKGEsMCk6c2t8PWMpO0VrKGEsYil9ZnVuY3Rpb24gWmsoYSxiKXswPT09YiYmKDA9PT0oYS5tb2RlJjEpP2I9MTooYj1zYyxzYzw8PTEsMD09PShzYyYxMzAwMjM0MjQpJiYoc2M9NDE5NDMwNCkpKTt2YXIgYz1MKCk7YT1aZyhhLGIpO251bGwhPT1hJiYoQWMoYSxiLGMpLEVrKGEsYykpfWZ1bmN0aW9uIHZqKGEpe3ZhciBiPWEubWVtb2l6ZWRTdGF0ZSxjPTA7bnVsbCE9PWImJihjPWIucmV0cnlMYW5lKTtaayhhLGMpfVxuZnVuY3Rpb24gY2soYSxiKXt2YXIgYz0wO3N3aXRjaChhLnRhZyl7Y2FzZSAxMzp2YXIgZD1hLnN0YXRlTm9kZTt2YXIgZT1hLm1lbW9pemVkU3RhdGU7bnVsbCE9PWUmJihjPWUucmV0cnlMYW5lKTticmVhaztjYXNlIDE5OmQ9YS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihwKDMxNCkpO31udWxsIT09ZCYmZC5kZWxldGUoYik7WmsoYSxjKX12YXIgV2s7XG5Xaz1mdW5jdGlvbihhLGIsYyl7aWYobnVsbCE9PWEpaWYoYS5tZW1vaXplZFByb3BzIT09Yi5wZW5kaW5nUHJvcHN8fFdmLmN1cnJlbnQpVWc9ITA7ZWxzZXtpZigwPT09KGEubGFuZXMmYykmJjA9PT0oYi5mbGFncyYxMjgpKXJldHVybiBVZz0hMSx6aihhLGIsYyk7VWc9MCE9PShhLmZsYWdzJjEzMTA3Mik/ITA6ITF9ZWxzZSBVZz0hMSxJJiYwIT09KGIuZmxhZ3MmMTA0ODU3NikmJnVnKGIsbmcsYi5pbmRleCk7Yi5sYW5lcz0wO3N3aXRjaChiLnRhZyl7Y2FzZSAyOnZhciBkPWIudHlwZTtqaihhLGIpO2E9Yi5wZW5kaW5nUHJvcHM7dmFyIGU9WWYoYixILmN1cnJlbnQpO1RnKGIsYyk7ZT1YaChudWxsLGIsZCxhLGUsYyk7dmFyIGY9YmkoKTtiLmZsYWdzfD0xO1wib2JqZWN0XCI9PT10eXBlb2YgZSYmbnVsbCE9PWUmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBlLnJlbmRlciYmdm9pZCAwPT09ZS4kJHR5cGVvZj8oYi50YWc9MSxiLm1lbW9pemVkU3RhdGU9bnVsbCxiLnVwZGF0ZVF1ZXVlPVxubnVsbCxaZihkKT8oZj0hMCxjZyhiKSk6Zj0hMSxiLm1lbW9pemVkU3RhdGU9bnVsbCE9PWUuc3RhdGUmJnZvaWQgMCE9PWUuc3RhdGU/ZS5zdGF0ZTpudWxsLGFoKGIpLGUudXBkYXRlcj1uaCxiLnN0YXRlTm9kZT1lLGUuX3JlYWN0SW50ZXJuYWxzPWIscmgoYixkLGEsYyksYj1raihudWxsLGIsZCwhMCxmLGMpKTooYi50YWc9MCxJJiZmJiZ2ZyhiKSxZaShudWxsLGIsZSxjKSxiPWIuY2hpbGQpO3JldHVybiBiO2Nhc2UgMTY6ZD1iLmVsZW1lbnRUeXBlO2E6e2pqKGEsYik7YT1iLnBlbmRpbmdQcm9wcztlPWQuX2luaXQ7ZD1lKGQuX3BheWxvYWQpO2IudHlwZT1kO2U9Yi50YWc9JGsoZCk7YT1MZyhkLGEpO3N3aXRjaChlKXtjYXNlIDA6Yj1kaihudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxOmI9aWoobnVsbCxiLGQsYSxjKTticmVhayBhO2Nhc2UgMTE6Yj1aaShudWxsLGIsZCxhLGMpO2JyZWFrIGE7Y2FzZSAxNDpiPWFqKG51bGwsYixkLExnKGQudHlwZSxhKSxjKTticmVhayBhfXRocm93IEVycm9yKHAoMzA2LFxuZCxcIlwiKSk7fXJldHVybiBiO2Nhc2UgMDpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxkaihhLGIsZCxlLGMpO2Nhc2UgMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxpaihhLGIsZCxlLGMpO2Nhc2UgMzphOntsaihiKTtpZihudWxsPT09YSl0aHJvdyBFcnJvcihwKDM4NykpO2Q9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkU3RhdGU7ZT1mLmVsZW1lbnQ7YmgoYSxiKTtnaChiLGQsbnVsbCxjKTt2YXIgZz1iLm1lbW9pemVkU3RhdGU7ZD1nLmVsZW1lbnQ7aWYoZi5pc0RlaHlkcmF0ZWQpaWYoZj17ZWxlbWVudDpkLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpnLmNhY2hlLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6Zy5wZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzLHRyYW5zaXRpb25zOmcudHJhbnNpdGlvbnN9LGIudXBkYXRlUXVldWUuYmFzZVN0YXRlPVxuZixiLm1lbW9pemVkU3RhdGU9ZixiLmZsYWdzJjI1Nil7ZT1LaShFcnJvcihwKDQyMykpLGIpO2I9bWooYSxiLGQsYyxlKTticmVhayBhfWVsc2UgaWYoZCE9PWUpe2U9S2koRXJyb3IocCg0MjQpKSxiKTtiPW1qKGEsYixkLGMsZSk7YnJlYWsgYX1lbHNlIGZvcih5Zz1MZihiLnN0YXRlTm9kZS5jb250YWluZXJJbmZvLmZpcnN0Q2hpbGQpLHhnPWIsST0hMCx6Zz1udWxsLGM9Q2goYixudWxsLGQsYyksYi5jaGlsZD1jO2M7KWMuZmxhZ3M9Yy5mbGFncyYtM3w0MDk2LGM9Yy5zaWJsaW5nO2Vsc2V7SWcoKTtpZihkPT09ZSl7Yj0kaShhLGIsYyk7YnJlYWsgYX1ZaShhLGIsZCxjKX1iPWIuY2hpbGR9cmV0dXJuIGI7Y2FzZSA1OnJldHVybiBLaChiKSxudWxsPT09YSYmRWcoYiksZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxmPW51bGwhPT1hP2EubWVtb2l6ZWRQcm9wczpudWxsLGc9ZS5jaGlsZHJlbixFZihkLGUpP2c9bnVsbDpudWxsIT09ZiYmRWYoZCxmKSYmKGIuZmxhZ3N8PTMyKSxcbmhqKGEsYiksWWkoYSxiLGcsYyksYi5jaGlsZDtjYXNlIDY6cmV0dXJuIG51bGw9PT1hJiZFZyhiKSxudWxsO2Nhc2UgMTM6cmV0dXJuIHBqKGEsYixjKTtjYXNlIDQ6cmV0dXJuIEloKGIsYi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksZD1iLnBlbmRpbmdQcm9wcyxudWxsPT09YT9iLmNoaWxkPUJoKGIsbnVsbCxkLGMpOllpKGEsYixkLGMpLGIuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gZD1iLnR5cGUsZT1iLnBlbmRpbmdQcm9wcyxlPWIuZWxlbWVudFR5cGU9PT1kP2U6TGcoZCxlKSxaaShhLGIsZCxlLGMpO2Nhc2UgNzpyZXR1cm4gWWkoYSxiLGIucGVuZGluZ1Byb3BzLGMpLGIuY2hpbGQ7Y2FzZSA4OnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEyOnJldHVybiBZaShhLGIsYi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sYyksYi5jaGlsZDtjYXNlIDEwOmE6e2Q9Yi50eXBlLl9jb250ZXh0O2U9Yi5wZW5kaW5nUHJvcHM7Zj1iLm1lbW9pemVkUHJvcHM7XG5nPWUudmFsdWU7RyhNZyxkLl9jdXJyZW50VmFsdWUpO2QuX2N1cnJlbnRWYWx1ZT1nO2lmKG51bGwhPT1mKWlmKEhlKGYudmFsdWUsZykpe2lmKGYuY2hpbGRyZW49PT1lLmNoaWxkcmVuJiYhV2YuY3VycmVudCl7Yj0kaShhLGIsYyk7YnJlYWsgYX19ZWxzZSBmb3IoZj1iLmNoaWxkLG51bGwhPT1mJiYoZi5yZXR1cm49Yik7bnVsbCE9PWY7KXt2YXIgaD1mLmRlcGVuZGVuY2llcztpZihudWxsIT09aCl7Zz1mLmNoaWxkO2Zvcih2YXIgaz1oLmZpcnN0Q29udGV4dDtudWxsIT09azspe2lmKGsuY29udGV4dD09PWQpe2lmKDE9PT1mLnRhZyl7az1jaCgtMSxjJi1jKTtrLnRhZz0yO3ZhciBsPWYudXBkYXRlUXVldWU7aWYobnVsbCE9PWwpe2w9bC5zaGFyZWQ7dmFyIG09bC5wZW5kaW5nO251bGw9PT1tP2submV4dD1rOihrLm5leHQ9bS5uZXh0LG0ubmV4dD1rKTtsLnBlbmRpbmc9a319Zi5sYW5lc3w9YztrPWYuYWx0ZXJuYXRlO251bGwhPT1rJiYoay5sYW5lc3w9Yyk7U2coZi5yZXR1cm4sXG5jLGIpO2gubGFuZXN8PWM7YnJlYWt9az1rLm5leHR9fWVsc2UgaWYoMTA9PT1mLnRhZylnPWYudHlwZT09PWIudHlwZT9udWxsOmYuY2hpbGQ7ZWxzZSBpZigxOD09PWYudGFnKXtnPWYucmV0dXJuO2lmKG51bGw9PT1nKXRocm93IEVycm9yKHAoMzQxKSk7Zy5sYW5lc3w9YztoPWcuYWx0ZXJuYXRlO251bGwhPT1oJiYoaC5sYW5lc3w9Yyk7U2coZyxjLGIpO2c9Zi5zaWJsaW5nfWVsc2UgZz1mLmNoaWxkO2lmKG51bGwhPT1nKWcucmV0dXJuPWY7ZWxzZSBmb3IoZz1mO251bGwhPT1nOyl7aWYoZz09PWIpe2c9bnVsbDticmVha31mPWcuc2libGluZztpZihudWxsIT09Zil7Zi5yZXR1cm49Zy5yZXR1cm47Zz1mO2JyZWFrfWc9Zy5yZXR1cm59Zj1nfVlpKGEsYixlLmNoaWxkcmVuLGMpO2I9Yi5jaGlsZH1yZXR1cm4gYjtjYXNlIDk6cmV0dXJuIGU9Yi50eXBlLGQ9Yi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sVGcoYixjKSxlPVZnKGUpLGQ9ZChlKSxiLmZsYWdzfD0xLFlpKGEsYixkLGMpLFxuYi5jaGlsZDtjYXNlIDE0OnJldHVybiBkPWIudHlwZSxlPUxnKGQsYi5wZW5kaW5nUHJvcHMpLGU9TGcoZC50eXBlLGUpLGFqKGEsYixkLGUsYyk7Y2FzZSAxNTpyZXR1cm4gY2ooYSxiLGIudHlwZSxiLnBlbmRpbmdQcm9wcyxjKTtjYXNlIDE3OnJldHVybiBkPWIudHlwZSxlPWIucGVuZGluZ1Byb3BzLGU9Yi5lbGVtZW50VHlwZT09PWQ/ZTpMZyhkLGUpLGpqKGEsYiksYi50YWc9MSxaZihkKT8oYT0hMCxjZyhiKSk6YT0hMSxUZyhiLGMpLHBoKGIsZCxlKSxyaChiLGQsZSxjKSxraihudWxsLGIsZCwhMCxhLGMpO2Nhc2UgMTk6cmV0dXJuIHlqKGEsYixjKTtjYXNlIDIyOnJldHVybiBlaihhLGIsYyl9dGhyb3cgRXJyb3IocCgxNTYsYi50YWcpKTt9O2Z1bmN0aW9uIEdrKGEsYil7cmV0dXJuIGFjKGEsYil9XG5mdW5jdGlvbiBhbChhLGIsYyxkKXt0aGlzLnRhZz1hO3RoaXMua2V5PWM7dGhpcy5zaWJsaW5nPXRoaXMuY2hpbGQ9dGhpcy5yZXR1cm49dGhpcy5zdGF0ZU5vZGU9dGhpcy50eXBlPXRoaXMuZWxlbWVudFR5cGU9bnVsbDt0aGlzLmluZGV4PTA7dGhpcy5yZWY9bnVsbDt0aGlzLnBlbmRpbmdQcm9wcz1iO3RoaXMuZGVwZW5kZW5jaWVzPXRoaXMubWVtb2l6ZWRTdGF0ZT10aGlzLnVwZGF0ZVF1ZXVlPXRoaXMubWVtb2l6ZWRQcm9wcz1udWxsO3RoaXMubW9kZT1kO3RoaXMuc3VidHJlZUZsYWdzPXRoaXMuZmxhZ3M9MDt0aGlzLmRlbGV0aW9ucz1udWxsO3RoaXMuY2hpbGRMYW5lcz10aGlzLmxhbmVzPTA7dGhpcy5hbHRlcm5hdGU9bnVsbH1mdW5jdGlvbiBCZyhhLGIsYyxkKXtyZXR1cm4gbmV3IGFsKGEsYixjLGQpfWZ1bmN0aW9uIGJqKGEpe2E9YS5wcm90b3R5cGU7cmV0dXJuISghYXx8IWEuaXNSZWFjdENvbXBvbmVudCl9XG5mdW5jdGlvbiAkayhhKXtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgYSlyZXR1cm4gYmooYSk/MTowO2lmKHZvaWQgMCE9PWEmJm51bGwhPT1hKXthPWEuJCR0eXBlb2Y7aWYoYT09PURhKXJldHVybiAxMTtpZihhPT09R2EpcmV0dXJuIDE0fXJldHVybiAyfVxuZnVuY3Rpb24gd2goYSxiKXt2YXIgYz1hLmFsdGVybmF0ZTtudWxsPT09Yz8oYz1CZyhhLnRhZyxiLGEua2V5LGEubW9kZSksYy5lbGVtZW50VHlwZT1hLmVsZW1lbnRUeXBlLGMudHlwZT1hLnR5cGUsYy5zdGF0ZU5vZGU9YS5zdGF0ZU5vZGUsYy5hbHRlcm5hdGU9YSxhLmFsdGVybmF0ZT1jKTooYy5wZW5kaW5nUHJvcHM9YixjLnR5cGU9YS50eXBlLGMuZmxhZ3M9MCxjLnN1YnRyZWVGbGFncz0wLGMuZGVsZXRpb25zPW51bGwpO2MuZmxhZ3M9YS5mbGFncyYxNDY4MDA2NDtjLmNoaWxkTGFuZXM9YS5jaGlsZExhbmVzO2MubGFuZXM9YS5sYW5lcztjLmNoaWxkPWEuY2hpbGQ7Yy5tZW1vaXplZFByb3BzPWEubWVtb2l6ZWRQcm9wcztjLm1lbW9pemVkU3RhdGU9YS5tZW1vaXplZFN0YXRlO2MudXBkYXRlUXVldWU9YS51cGRhdGVRdWV1ZTtiPWEuZGVwZW5kZW5jaWVzO2MuZGVwZW5kZW5jaWVzPW51bGw9PT1iP251bGw6e2xhbmVzOmIubGFuZXMsZmlyc3RDb250ZXh0OmIuZmlyc3RDb250ZXh0fTtcbmMuc2libGluZz1hLnNpYmxpbmc7Yy5pbmRleD1hLmluZGV4O2MucmVmPWEucmVmO3JldHVybiBjfVxuZnVuY3Rpb24geWgoYSxiLGMsZCxlLGYpe3ZhciBnPTI7ZD1hO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBhKWJqKGEpJiYoZz0xKTtlbHNlIGlmKFwic3RyaW5nXCI9PT10eXBlb2YgYSlnPTU7ZWxzZSBhOnN3aXRjaChhKXtjYXNlIHlhOnJldHVybiBBaChjLmNoaWxkcmVuLGUsZixiKTtjYXNlIHphOmc9ODtlfD04O2JyZWFrO2Nhc2UgQWE6cmV0dXJuIGE9QmcoMTIsYyxiLGV8MiksYS5lbGVtZW50VHlwZT1BYSxhLmxhbmVzPWYsYTtjYXNlIEVhOnJldHVybiBhPUJnKDEzLGMsYixlKSxhLmVsZW1lbnRUeXBlPUVhLGEubGFuZXM9ZixhO2Nhc2UgRmE6cmV0dXJuIGE9QmcoMTksYyxiLGUpLGEuZWxlbWVudFR5cGU9RmEsYS5sYW5lcz1mLGE7Y2FzZSBJYTpyZXR1cm4gcWooYyxlLGYsYik7ZGVmYXVsdDppZihcIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hKXN3aXRjaChhLiQkdHlwZW9mKXtjYXNlIEJhOmc9MTA7YnJlYWsgYTtjYXNlIENhOmc9OTticmVhayBhO2Nhc2UgRGE6Zz0xMTtcbmJyZWFrIGE7Y2FzZSBHYTpnPTE0O2JyZWFrIGE7Y2FzZSBIYTpnPTE2O2Q9bnVsbDticmVhayBhfXRocm93IEVycm9yKHAoMTMwLG51bGw9PWE/YTp0eXBlb2YgYSxcIlwiKSk7fWI9QmcoZyxjLGIsZSk7Yi5lbGVtZW50VHlwZT1hO2IudHlwZT1kO2IubGFuZXM9ZjtyZXR1cm4gYn1mdW5jdGlvbiBBaChhLGIsYyxkKXthPUJnKDcsYSxkLGIpO2EubGFuZXM9YztyZXR1cm4gYX1mdW5jdGlvbiBxaihhLGIsYyxkKXthPUJnKDIyLGEsZCxiKTthLmVsZW1lbnRUeXBlPUlhO2EubGFuZXM9YzthLnN0YXRlTm9kZT17aXNIaWRkZW46ITF9O3JldHVybiBhfWZ1bmN0aW9uIHhoKGEsYixjKXthPUJnKDYsYSxudWxsLGIpO2EubGFuZXM9YztyZXR1cm4gYX1cbmZ1bmN0aW9uIHpoKGEsYixjKXtiPUJnKDQsbnVsbCE9PWEuY2hpbGRyZW4/YS5jaGlsZHJlbjpbXSxhLmtleSxiKTtiLmxhbmVzPWM7Yi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86YS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmEuaW1wbGVtZW50YXRpb259O3JldHVybiBifVxuZnVuY3Rpb24gYmwoYSxiLGMsZCxlKXt0aGlzLnRhZz1iO3RoaXMuY29udGFpbmVySW5mbz1hO3RoaXMuZmluaXNoZWRXb3JrPXRoaXMucGluZ0NhY2hlPXRoaXMuY3VycmVudD10aGlzLnBlbmRpbmdDaGlsZHJlbj1udWxsO3RoaXMudGltZW91dEhhbmRsZT0tMTt0aGlzLmNhbGxiYWNrTm9kZT10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD1udWxsO3RoaXMuY2FsbGJhY2tQcmlvcml0eT0wO3RoaXMuZXZlbnRUaW1lcz16YygwKTt0aGlzLmV4cGlyYXRpb25UaW1lcz16YygtMSk7dGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLmZpbmlzaGVkTGFuZXM9dGhpcy5tdXRhYmxlUmVhZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wO3RoaXMuZW50YW5nbGVtZW50cz16YygwKTt0aGlzLmlkZW50aWZpZXJQcmVmaXg9ZDt0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1lO3RoaXMubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT1cbm51bGx9ZnVuY3Rpb24gY2woYSxiLGMsZCxlLGYsZyxoLGspe2E9bmV3IGJsKGEsYixjLGgsayk7MT09PWI/KGI9MSwhMD09PWYmJihifD04KSk6Yj0wO2Y9QmcoMyxudWxsLG51bGwsYik7YS5jdXJyZW50PWY7Zi5zdGF0ZU5vZGU9YTtmLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6ZCxpc0RlaHlkcmF0ZWQ6YyxjYWNoZTpudWxsLHRyYW5zaXRpb25zOm51bGwscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpudWxsfTthaChmKTtyZXR1cm4gYX1mdW5jdGlvbiBkbChhLGIsYyl7dmFyIGQ9Mzxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOndhLGtleTpudWxsPT1kP251bGw6XCJcIitkLGNoaWxkcmVuOmEsY29udGFpbmVySW5mbzpiLGltcGxlbWVudGF0aW9uOmN9fVxuZnVuY3Rpb24gZWwoYSl7aWYoIWEpcmV0dXJuIFZmO2E9YS5fcmVhY3RJbnRlcm5hbHM7YTp7aWYoVmIoYSkhPT1hfHwxIT09YS50YWcpdGhyb3cgRXJyb3IocCgxNzApKTt2YXIgYj1hO2Rve3N3aXRjaChiLnRhZyl7Y2FzZSAzOmI9Yi5zdGF0ZU5vZGUuY29udGV4dDticmVhayBhO2Nhc2UgMTppZihaZihiLnR5cGUpKXtiPWIuc3RhdGVOb2RlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0O2JyZWFrIGF9fWI9Yi5yZXR1cm59d2hpbGUobnVsbCE9PWIpO3Rocm93IEVycm9yKHAoMTcxKSk7fWlmKDE9PT1hLnRhZyl7dmFyIGM9YS50eXBlO2lmKFpmKGMpKXJldHVybiBiZyhhLGMsYil9cmV0dXJuIGJ9XG5mdW5jdGlvbiBmbChhLGIsYyxkLGUsZixnLGgsayl7YT1jbChjLGQsITAsYSxlLGYsZyxoLGspO2EuY29udGV4dD1lbChudWxsKTtjPWEuY3VycmVudDtkPUwoKTtlPWxoKGMpO2Y9Y2goZCxlKTtmLmNhbGxiYWNrPXZvaWQgMCE9PWImJm51bGwhPT1iP2I6bnVsbDtkaChjLGYsZSk7YS5jdXJyZW50LmxhbmVzPWU7QWMoYSxlLGQpO0VrKGEsZCk7cmV0dXJuIGF9ZnVuY3Rpb24gZ2woYSxiLGMsZCl7dmFyIGU9Yi5jdXJyZW50LGY9TCgpLGc9bGgoZSk7Yz1lbChjKTtudWxsPT09Yi5jb250ZXh0P2IuY29udGV4dD1jOmIucGVuZGluZ0NvbnRleHQ9YztiPWNoKGYsZyk7Yi5wYXlsb2FkPXtlbGVtZW50OmF9O2Q9dm9pZCAwPT09ZD9udWxsOmQ7bnVsbCE9PWQmJihiLmNhbGxiYWNrPWQpO2E9ZGgoZSxiLGcpO251bGwhPT1hJiYobWgoYSxlLGcsZiksZWgoYSxlLGcpKTtyZXR1cm4gZ31cbmZ1bmN0aW9uIGhsKGEpe2E9YS5jdXJyZW50O2lmKCFhLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChhLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBhLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gaWwoYSxiKXthPWEubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09YSYmbnVsbCE9PWEuZGVoeWRyYXRlZCl7dmFyIGM9YS5yZXRyeUxhbmU7YS5yZXRyeUxhbmU9MCE9PWMmJmM8Yj9jOmJ9fWZ1bmN0aW9uIGpsKGEsYil7aWwoYSxiKTsoYT1hLmFsdGVybmF0ZSkmJmlsKGEsYil9ZnVuY3Rpb24ga2woKXtyZXR1cm4gbnVsbH12YXIgbGw9XCJmdW5jdGlvblwiPT09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGEpe2NvbnNvbGUuZXJyb3IoYSl9O2Z1bmN0aW9uIG1sKGEpe3RoaXMuX2ludGVybmFsUm9vdD1hfVxubmwucHJvdG90eXBlLnJlbmRlcj1tbC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09Yil0aHJvdyBFcnJvcihwKDQwOSkpO2dsKGEsYixudWxsLG51bGwpfTtubC5wcm90b3R5cGUudW5tb3VudD1tbC5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsIT09YSl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIGI9YS5jb250YWluZXJJbmZvO1NrKGZ1bmN0aW9uKCl7Z2wobnVsbCxhLG51bGwsbnVsbCl9KTtiW3VmXT1udWxsfX07ZnVuY3Rpb24gbmwoYSl7dGhpcy5faW50ZXJuYWxSb290PWF9XG5ubC5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb249ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI9SGMoKTthPXtibG9ja2VkT246bnVsbCx0YXJnZXQ6YSxwcmlvcml0eTpifTtmb3IodmFyIGM9MDtjPFFjLmxlbmd0aCYmMCE9PWImJmI8UWNbY10ucHJpb3JpdHk7YysrKTtRYy5zcGxpY2UoYywwLGEpOzA9PT1jJiZWYyhhKX19O2Z1bmN0aW9uIG9sKGEpe3JldHVybiEoIWF8fDEhPT1hLm5vZGVUeXBlJiY5IT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlKX1mdW5jdGlvbiBwbChhKXtyZXR1cm4hKCFhfHwxIT09YS5ub2RlVHlwZSYmOSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZSYmKDghPT1hLm5vZGVUeXBlfHxcIiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSBcIiE9PWEubm9kZVZhbHVlKSl9ZnVuY3Rpb24gcWwoKXt9XG5mdW5jdGlvbiBybChhLGIsYyxkLGUpe2lmKGUpe2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgZj1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1obChnKTtmLmNhbGwoYSl9fXZhciBnPWZsKGIsZCxhLDAsbnVsbCwhMSwhMSxcIlwiLHFsKTthLl9yZWFjdFJvb3RDb250YWluZXI9ZzthW3VmXT1nLmN1cnJlbnQ7c2YoOD09PWEubm9kZVR5cGU/YS5wYXJlbnROb2RlOmEpO1NrKCk7cmV0dXJuIGd9Zm9yKDtlPWEubGFzdENoaWxkOylhLnJlbW92ZUNoaWxkKGUpO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBkKXt2YXIgaD1kO2Q9ZnVuY3Rpb24oKXt2YXIgYT1obChrKTtoLmNhbGwoYSl9fXZhciBrPWNsKGEsMCwhMSxudWxsLG51bGwsITEsITEsXCJcIixxbCk7YS5fcmVhY3RSb290Q29udGFpbmVyPWs7YVt1Zl09ay5jdXJyZW50O3NmKDg9PT1hLm5vZGVUeXBlP2EucGFyZW50Tm9kZTphKTtTayhmdW5jdGlvbigpe2dsKGIsayxjLGQpfSk7cmV0dXJuIGt9XG5mdW5jdGlvbiBzbChhLGIsYyxkLGUpe3ZhciBmPWMuX3JlYWN0Um9vdENvbnRhaW5lcjtpZihmKXt2YXIgZz1mO2lmKFwiZnVuY3Rpb25cIj09PXR5cGVvZiBlKXt2YXIgaD1lO2U9ZnVuY3Rpb24oKXt2YXIgYT1obChnKTtoLmNhbGwoYSl9fWdsKGIsZyxhLGUpfWVsc2UgZz1ybChjLGIsYSxlLGQpO3JldHVybiBobChnKX1FYz1mdW5jdGlvbihhKXtzd2l0Y2goYS50YWcpe2Nhc2UgMzp2YXIgYj1hLnN0YXRlTm9kZTtpZihiLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBjPXRjKGIucGVuZGluZ0xhbmVzKTswIT09YyYmKENjKGIsY3wxKSxFayhiLEIoKSksMD09PShLJjYpJiYoSGo9QigpKzUwMCxqZygpKSl9YnJlYWs7Y2FzZSAxMzpTayhmdW5jdGlvbigpe3ZhciBiPVpnKGEsMSk7aWYobnVsbCE9PWIpe3ZhciBjPUwoKTttaChiLGEsMSxjKX19KSxqbChhLDEpfX07XG5GYz1mdW5jdGlvbihhKXtpZigxMz09PWEudGFnKXt2YXIgYj1aZyhhLDEzNDIxNzcyOCk7aWYobnVsbCE9PWIpe3ZhciBjPUwoKTttaChiLGEsMTM0MjE3NzI4LGMpfWpsKGEsMTM0MjE3NzI4KX19O0djPWZ1bmN0aW9uKGEpe2lmKDEzPT09YS50YWcpe3ZhciBiPWxoKGEpLGM9WmcoYSxiKTtpZihudWxsIT09Yyl7dmFyIGQ9TCgpO21oKGMsYSxiLGQpfWpsKGEsYil9fTtIYz1mdW5jdGlvbigpe3JldHVybiBDfTtJYz1mdW5jdGlvbihhLGIpe3ZhciBjPUM7dHJ5e3JldHVybiBDPWEsYigpfWZpbmFsbHl7Qz1jfX07XG55Yj1mdW5jdGlvbihhLGIsYyl7c3dpdGNoKGIpe2Nhc2UgXCJpbnB1dFwiOmJiKGEsYyk7Yj1jLm5hbWU7aWYoXCJyYWRpb1wiPT09Yy50eXBlJiZudWxsIT1iKXtmb3IoYz1hO2MucGFyZW50Tm9kZTspYz1jLnBhcmVudE5vZGU7Yz1jLnF1ZXJ5U2VsZWN0b3JBbGwoXCJpbnB1dFtuYW1lPVwiK0pTT04uc3RyaW5naWZ5KFwiXCIrYikrJ11bdHlwZT1cInJhZGlvXCJdJyk7Zm9yKGI9MDtiPGMubGVuZ3RoO2IrKyl7dmFyIGQ9Y1tiXTtpZihkIT09YSYmZC5mb3JtPT09YS5mb3JtKXt2YXIgZT1EYihkKTtpZighZSl0aHJvdyBFcnJvcihwKDkwKSk7V2EoZCk7YmIoZCxlKX19fWJyZWFrO2Nhc2UgXCJ0ZXh0YXJlYVwiOmliKGEsYyk7YnJlYWs7Y2FzZSBcInNlbGVjdFwiOmI9Yy52YWx1ZSxudWxsIT1iJiZmYihhLCEhYy5tdWx0aXBsZSxiLCExKX19O0diPVJrO0hiPVNrO1xudmFyIHRsPXt1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ITEsRXZlbnRzOltDYix1ZSxEYixFYixGYixSa119LHVsPXtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpXYyxidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE4LjIuMFwiLHJlbmRlcmVyUGFja2FnZU5hbWU6XCJyZWFjdC1kb21cIn07XG52YXIgdmw9e2J1bmRsZVR5cGU6dWwuYnVuZGxlVHlwZSx2ZXJzaW9uOnVsLnZlcnNpb24scmVuZGVyZXJQYWNrYWdlTmFtZTp1bC5yZW5kZXJlclBhY2thZ2VOYW1lLHJlbmRlcmVyQ29uZmlnOnVsLnJlbmRlcmVyQ29uZmlnLG92ZXJyaWRlSG9va1N0YXRlOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVIb29rU3RhdGVSZW5hbWVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wczpudWxsLG92ZXJyaWRlUHJvcHNEZWxldGVQYXRoOm51bGwsb3ZlcnJpZGVQcm9wc1JlbmFtZVBhdGg6bnVsbCxzZXRFcnJvckhhbmRsZXI6bnVsbCxzZXRTdXNwZW5zZUhhbmRsZXI6bnVsbCxzY2hlZHVsZVVwZGF0ZTpudWxsLGN1cnJlbnREaXNwYXRjaGVyUmVmOnVhLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oYSl7YT1aYihhKTtyZXR1cm4gbnVsbD09PWE/bnVsbDphLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6dWwuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2V8fFxua2wsZmluZEhvc3RJbnN0YW5jZXNGb3JSZWZyZXNoOm51bGwsc2NoZWR1bGVSZWZyZXNoOm51bGwsc2NoZWR1bGVSb290Om51bGwsc2V0UmVmcmVzaEhhbmRsZXI6bnVsbCxnZXRDdXJyZW50RmliZXI6bnVsbCxyZWNvbmNpbGVyVmVyc2lvbjpcIjE4LjIuMC1uZXh0LTllM2I3NzJiOC0yMDIyMDYwOFwifTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIHdsPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighd2wuaXNEaXNhYmxlZCYmd2wuc3VwcG9ydHNGaWJlcil0cnl7a2M9d2wuaW5qZWN0KHZsKSxsYz13bH1jYXRjaChhKXt9fWV4cG9ydHMuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9dGw7XG5leHBvcnRzLmNyZWF0ZVBvcnRhbD1mdW5jdGlvbihhLGIpe3ZhciBjPTI8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpudWxsO2lmKCFvbChiKSl0aHJvdyBFcnJvcihwKDIwMCkpO3JldHVybiBkbChhLGIsbnVsbCxjKX07ZXhwb3J0cy5jcmVhdGVSb290PWZ1bmN0aW9uKGEsYil7aWYoIW9sKGEpKXRocm93IEVycm9yKHAoMjk5KSk7dmFyIGM9ITEsZD1cIlwiLGU9bGw7bnVsbCE9PWImJnZvaWQgMCE9PWImJighMD09PWIudW5zdGFibGVfc3RyaWN0TW9kZSYmKGM9ITApLHZvaWQgMCE9PWIuaWRlbnRpZmllclByZWZpeCYmKGQ9Yi5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1iLm9uUmVjb3ZlcmFibGVFcnJvciYmKGU9Yi5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWNsKGEsMSwhMSxudWxsLG51bGwsYywhMSxkLGUpO2FbdWZdPWIuY3VycmVudDtzZig4PT09YS5ub2RlVHlwZT9hLnBhcmVudE5vZGU6YSk7cmV0dXJuIG5ldyBtbChiKX07XG5leHBvcnRzLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGEpe2lmKG51bGw9PWEpcmV0dXJuIG51bGw7aWYoMT09PWEubm9kZVR5cGUpcmV0dXJuIGE7dmFyIGI9YS5fcmVhY3RJbnRlcm5hbHM7aWYodm9pZCAwPT09Yil7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGEucmVuZGVyKXRocm93IEVycm9yKHAoMTg4KSk7YT1PYmplY3Qua2V5cyhhKS5qb2luKFwiLFwiKTt0aHJvdyBFcnJvcihwKDI2OCxhKSk7fWE9WmIoYik7YT1udWxsPT09YT9udWxsOmEuc3RhdGVOb2RlO3JldHVybiBhfTtleHBvcnRzLmZsdXNoU3luYz1mdW5jdGlvbihhKXtyZXR1cm4gU2soYSl9O2V4cG9ydHMuaHlkcmF0ZT1mdW5jdGlvbihhLGIsYyl7aWYoIXBsKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHNsKG51bGwsYSxiLCEwLGMpfTtcbmV4cG9ydHMuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oYSxiLGMpe2lmKCFvbChhKSl0aHJvdyBFcnJvcihwKDQwNSkpO3ZhciBkPW51bGwhPWMmJmMuaHlkcmF0ZWRTb3VyY2VzfHxudWxsLGU9ITEsZj1cIlwiLGc9bGw7bnVsbCE9PWMmJnZvaWQgMCE9PWMmJighMD09PWMudW5zdGFibGVfc3RyaWN0TW9kZSYmKGU9ITApLHZvaWQgMCE9PWMuaWRlbnRpZmllclByZWZpeCYmKGY9Yy5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT1jLm9uUmVjb3ZlcmFibGVFcnJvciYmKGc9Yy5vblJlY292ZXJhYmxlRXJyb3IpKTtiPWZsKGIsbnVsbCxhLDEsbnVsbCE9Yz9jOm51bGwsZSwhMSxmLGcpO2FbdWZdPWIuY3VycmVudDtzZihhKTtpZihkKWZvcihhPTA7YTxkLmxlbmd0aDthKyspYz1kW2FdLGU9Yy5fZ2V0VmVyc2lvbixlPWUoYy5fc291cmNlKSxudWxsPT1iLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE/Yi5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtjLGVdOmIubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKGMsXG5lKTtyZXR1cm4gbmV3IG5sKGIpfTtleHBvcnRzLnJlbmRlcj1mdW5jdGlvbihhLGIsYyl7aWYoIXBsKGIpKXRocm93IEVycm9yKHAoMjAwKSk7cmV0dXJuIHNsKG51bGwsYSxiLCExLGMpfTtleHBvcnRzLnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oYSl7aWYoIXBsKGEpKXRocm93IEVycm9yKHAoNDApKTtyZXR1cm4gYS5fcmVhY3RSb290Q29udGFpbmVyPyhTayhmdW5jdGlvbigpe3NsKG51bGwsbnVsbCxhLCExLGZ1bmN0aW9uKCl7YS5fcmVhY3RSb290Q29udGFpbmVyPW51bGw7YVt1Zl09bnVsbH0pfSksITApOiExfTtleHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPVJrO1xuZXhwb3J0cy51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihhLGIsYyxkKXtpZighcGwoYykpdGhyb3cgRXJyb3IocCgyMDApKTtpZihudWxsPT1hfHx2b2lkIDA9PT1hLl9yZWFjdEludGVybmFscyl0aHJvdyBFcnJvcihwKDM4KSk7cmV0dXJuIHNsKGEsYixjLCExLGQpfTtleHBvcnRzLnZlcnNpb249XCIxOC4yLjAtbmV4dC05ZTNiNzcyYjgtMjAyMjA2MDhcIjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG0gPSByZXF1aXJlKCdyZWFjdC1kb20nKTtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGV4cG9ydHMuY3JlYXRlUm9vdCA9IG0uY3JlYXRlUm9vdDtcbiAgZXhwb3J0cy5oeWRyYXRlUm9vdCA9IG0uaHlkcmF0ZVJvb3Q7XG59IGVsc2Uge1xuICB2YXIgaSA9IG0uX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG4gIGV4cG9ydHMuY3JlYXRlUm9vdCA9IGZ1bmN0aW9uKGMsIG8pIHtcbiAgICBpLnVzaW5nQ2xpZW50RW50cnlQb2ludCA9IHRydWU7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBtLmNyZWF0ZVJvb3QoYywgbyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gZmFsc2U7XG4gICAgfVxuICB9O1xuICBleHBvcnRzLmh5ZHJhdGVSb290ID0gZnVuY3Rpb24oYywgaCwgbykge1xuICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gdHJ1ZTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIG0uaHlkcmF0ZVJvb3QoYywgaCwgbyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGkudXNpbmdDbGllbnRFbnRyeVBvaW50ID0gZmFsc2U7XG4gICAgfVxuICB9O1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBjaGVja0RDRSgpIHtcbiAgLyogZ2xvYmFsIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAoXG4gICAgdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFICE9PSAnZnVuY3Rpb24nXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoaXMgYnJhbmNoIGlzIHVucmVhY2hhYmxlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZFxuICAgIC8vIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgY29uZGl0aW9uIGlzIHRydWUgb25seSBpbiBkZXZlbG9wbWVudC5cbiAgICAvLyBUaGVyZWZvcmUgaWYgdGhlIGJyYW5jaCBpcyBzdGlsbCBoZXJlLCBkZWFkIGNvZGUgZWxpbWluYXRpb24gd2Fzbid0XG4gICAgLy8gcHJvcGVybHkgYXBwbGllZC5cbiAgICAvLyBEb24ndCBjaGFuZ2UgdGhlIG1lc3NhZ2UuIFJlYWN0IERldlRvb2xzIHJlbGllcyBvbiBpdC4gQWxzbyBtYWtlIHN1cmVcbiAgICAvLyB0aGlzIG1lc3NhZ2UgZG9lc24ndCBvY2N1ciBlbHNld2hlcmUgaW4gdGhpcyBmdW5jdGlvbiwgb3IgaXQgd2lsbCBjYXVzZVxuICAgIC8vIGEgZmFsc2UgcG9zaXRpdmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKCdeX14nKTtcbiAgfVxuICB0cnkge1xuICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBjb2RlIGFib3ZlIGhhcyBiZWVuIGRlYWQgY29kZSBlbGltaW5hdGVkIChEQ0UnZCkuXG4gICAgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKGNoZWNrRENFKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgLy8gRGV2VG9vbHMgc2hvdWxkbid0IGNyYXNoIFJlYWN0LCBubyBtYXR0ZXIgd2hhdC5cbiAgICAvLyBXZSBzaG91bGQgc3RpbGwgcmVwb3J0IGluIGNhc2Ugd2UgYnJlYWsgdGhpcyBjb2RlLlxuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICAvLyBEQ0UgY2hlY2sgc2hvdWxkIGhhcHBlbiBiZWZvcmUgUmVhY3RET00gYnVuZGxlIGV4ZWN1dGVzIHNvIHRoYXRcbiAgLy8gRGV2VG9vbHMgY2FuIHJlcG9ydCBiYWQgbWluaWZpY2F0aW9uIGR1cmluZyBpbmplY3Rpb24uXG4gIGNoZWNrRENFKCk7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyogZ2xvYmFsIE1hcDpyZWFkb25seSwgU2V0OnJlYWRvbmx5LCBBcnJheUJ1ZmZlcjpyZWFkb25seSAqL1xuXG52YXIgaGFzRWxlbWVudFR5cGUgPSB0eXBlb2YgRWxlbWVudCAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgaGFzTWFwID0gdHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJztcbnZhciBoYXNTZXQgPSB0eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nO1xudmFyIGhhc0FycmF5QnVmZmVyID0gdHlwZW9mIEFycmF5QnVmZmVyID09PSAnZnVuY3Rpb24nICYmICEhQXJyYXlCdWZmZXIuaXNWaWV3O1xuXG4vLyBOb3RlOiBXZSAqKmRvbid0KiogbmVlZCBgZW52SGFzQmlnSW50NjRBcnJheWAgaW4gZmRlIGVzNi9pbmRleC5qc1xuXG5mdW5jdGlvbiBlcXVhbChhLCBiKSB7XG4gIC8vIFNUQVJUOiBmYXN0LWRlZXAtZXF1YWwgZXM2L2luZGV4LmpzIDMuMS4xXG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnICYmIHR5cGVvZiBiID09ICdvYmplY3QnKSB7XG4gICAgaWYgKGEuY29uc3RydWN0b3IgIT09IGIuY29uc3RydWN0b3IpIHJldHVybiBmYWxzZTtcblxuICAgIHZhciBsZW5ndGgsIGksIGtleXM7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KVxuICAgICAgICBpZiAoIWVxdWFsKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBTVEFSVDogTW9kaWZpY2F0aW9uczpcbiAgICAvLyAxLiBFeHRyYSBgaGFzPFR5cGU+ICYmYCBoZWxwZXJzIGluIGluaXRpYWwgY29uZGl0aW9uIGFsbG93IGVzNiBjb2RlXG4gICAgLy8gICAgdG8gY28tZXhpc3Qgd2l0aCBlczUuXG4gICAgLy8gMi4gUmVwbGFjZSBgZm9yIG9mYCB3aXRoIGVzNSBjb21wbGlhbnQgaXRlcmF0aW9uIHVzaW5nIGBmb3JgLlxuICAgIC8vICAgIEJhc2ljYWxseSwgdGFrZTpcbiAgICAvL1xuICAgIC8vICAgIGBgYGpzXG4gICAgLy8gICAgZm9yIChpIG9mIGEuZW50cmllcygpKVxuICAgIC8vICAgICAgaWYgKCFiLmhhcyhpWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vICAgIGBgYFxuICAgIC8vXG4gICAgLy8gICAgLi4uIGFuZCBjb252ZXJ0IHRvOlxuICAgIC8vXG4gICAgLy8gICAgYGBganNcbiAgICAvLyAgICBpdCA9IGEuZW50cmllcygpO1xuICAgIC8vICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpXG4gICAgLy8gICAgICBpZiAoIWIuaGFzKGkudmFsdWVbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gICAgYGBgXG4gICAgLy9cbiAgICAvLyAgICAqKk5vdGUqKjogYGlgIGFjY2VzcyBzd2l0Y2hlcyB0byBgaS52YWx1ZWAuXG4gICAgdmFyIGl0O1xuICAgIGlmIChoYXNNYXAgJiYgKGEgaW5zdGFuY2VvZiBNYXApICYmIChiIGluc3RhbmNlb2YgTWFwKSkge1xuICAgICAgaWYgKGEuc2l6ZSAhPT0gYi5zaXplKSByZXR1cm4gZmFsc2U7XG4gICAgICBpdCA9IGEuZW50cmllcygpO1xuICAgICAgd2hpbGUgKCEoaSA9IGl0Lm5leHQoKSkuZG9uZSlcbiAgICAgICAgaWYgKCFiLmhhcyhpLnZhbHVlWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpXG4gICAgICAgIGlmICghZXF1YWwoaS52YWx1ZVsxXSwgYi5nZXQoaS52YWx1ZVswXSkpKSByZXR1cm4gZmFsc2U7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoaGFzU2V0ICYmIChhIGluc3RhbmNlb2YgU2V0KSAmJiAoYiBpbnN0YW5jZW9mIFNldCkpIHtcbiAgICAgIGlmIChhLnNpemUgIT09IGIuc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgaXQgPSBhLmVudHJpZXMoKTtcbiAgICAgIHdoaWxlICghKGkgPSBpdC5uZXh0KCkpLmRvbmUpXG4gICAgICAgIGlmICghYi5oYXMoaS52YWx1ZVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvLyBFTkQ6IE1vZGlmaWNhdGlvbnNcblxuICAgIGlmIChoYXNBcnJheUJ1ZmZlciAmJiBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KGIpKSB7XG4gICAgICBsZW5ndGggPSBhLmxlbmd0aDtcbiAgICAgIGlmIChsZW5ndGggIT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgICAgaWYgKGFbaV0gIT09IGJbaV0pIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChhLmNvbnN0cnVjdG9yID09PSBSZWdFeHApIHJldHVybiBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncztcbiAgICBpZiAoYS52YWx1ZU9mICE9PSBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YpIHJldHVybiBhLnZhbHVlT2YoKSA9PT0gYi52YWx1ZU9mKCk7XG4gICAgaWYgKGEudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHJldHVybiBhLnRvU3RyaW5nKCkgPT09IGIudG9TdHJpbmcoKTtcblxuICAgIGtleXMgPSBPYmplY3Qua2V5cyhhKTtcbiAgICBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOylcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIGtleXNbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gRU5EOiBmYXN0LWRlZXAtZXF1YWxcblxuICAgIC8vIFNUQVJUOiByZWFjdC1mYXN0LWNvbXBhcmVcbiAgICAvLyBjdXN0b20gaGFuZGxpbmcgZm9yIERPTSBlbGVtZW50c1xuICAgIGlmIChoYXNFbGVtZW50VHlwZSAmJiBhIGluc3RhbmNlb2YgRWxlbWVudCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gY3VzdG9tIGhhbmRsaW5nIGZvciBSZWFjdC9QcmVhY3RcbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICgoa2V5c1tpXSA9PT0gJ19vd25lcicgfHwga2V5c1tpXSA9PT0gJ19fdicgfHwga2V5c1tpXSA9PT0gJ19fbycpICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgLy8gUmVhY3Qtc3BlY2lmaWM6IGF2b2lkIHRyYXZlcnNpbmcgUmVhY3QgZWxlbWVudHMnIF9vd25lclxuICAgICAgICAvLyBQcmVhY3Qtc3BlY2lmaWM6IGF2b2lkIHRyYXZlcnNpbmcgUHJlYWN0IGVsZW1lbnRzJyBfX3YgYW5kIF9fb1xuICAgICAgICAvLyAgICBfX3YgPSAkX29yaWdpbmFsIC8gJF92bm9kZVxuICAgICAgICAvLyAgICBfX28gPSAkX293bmVyXG4gICAgICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgY29udGFpbiBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCBhcmUgbm90IG5lZWRlZCB3aGVuXG4gICAgICAgIC8vIGNvbXBhcmluZyB0aGUgYWN0dWFsIGVsZW1lbnRzIChhbmQgbm90IHRoZWlyIG93bmVycylcbiAgICAgICAgLy8gLiQkdHlwZW9mIGFuZCAuX3N0b3JlIG9uIGp1c3QgcmVhc29uYWJsZSBtYXJrZXJzIG9mIGVsZW1lbnRzXG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIGFsbCBvdGhlciBwcm9wZXJ0aWVzIHNob3VsZCBiZSB0cmF2ZXJzZWQgYXMgdXN1YWxcbiAgICAgIGlmICghZXF1YWwoYVtrZXlzW2ldXSwgYltrZXlzW2ldXSkpIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gRU5EOiByZWFjdC1mYXN0LWNvbXBhcmVcblxuICAgIC8vIFNUQVJUOiBmYXN0LWRlZXAtZXF1YWxcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBhICE9PSBhICYmIGIgIT09IGI7XG59XG4vLyBlbmQgZmFzdC1kZWVwLWVxdWFsXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNFcXVhbChhLCBiKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVxdWFsKGEsIGIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmICgoKGVycm9yLm1lc3NhZ2UgfHwgJycpLm1hdGNoKC9zdGFja3xyZWN1cnNpb24vaSkpKSB7XG4gICAgICAvLyB3YXJuIG9uIGNpcmN1bGFyIHJlZmVyZW5jZXMsIGRvbid0IGNyYXNoXG4gICAgICAvLyBicm93c2VycyBnaXZlIHRoaXMgZGlmZmVyZW50IGVycm9ycyBuYW1lIGFuZCBtZXNzYWdlczpcbiAgICAgIC8vIGNocm9tZS9zYWZhcmk6IFwiUmFuZ2VFcnJvclwiLCBcIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCJcbiAgICAgIC8vIGZpcmVmb3g6IFwiSW50ZXJuYWxFcnJvclwiLCB0b28gbXVjaCByZWN1cnNpb25cIlxuICAgICAgLy8gZWRnZTogXCJFcnJvclwiLCBcIk91dCBvZiBzdGFjayBzcGFjZVwiXG4gICAgICBjb25zb2xlLndhcm4oJ3JlYWN0LWZhc3QtY29tcGFyZSBjYW5ub3QgaGFuZGxlIGNpcmN1bGFyIHJlZnMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gc29tZSBvdGhlciBlcnJvci4gd2Ugc2hvdWxkIGRlZmluaXRlbHkga25vdyBhYm91dCB0aGVzZVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuIiwiLyoqIEBsaWNlbnNlIFJlYWN0IHYxNi4xMy4xXG4gKiByZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbid1c2Ugc3RyaWN0Jzt2YXIgYj1cImZ1bmN0aW9uXCI9PT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yLGM9Yj9TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKTo2MDEwMyxkPWI/U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKTo2MDEwNixlPWI/U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpOjYwMTA3LGY9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIik6NjAxMDgsZz1iP1N5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKTo2MDExNCxoPWI/U3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpOjYwMTA5LGs9Yj9TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKTo2MDExMCxsPWI/U3ltYm9sLmZvcihcInJlYWN0LmFzeW5jX21vZGVcIik6NjAxMTEsbT1iP1N5bWJvbC5mb3IoXCJyZWFjdC5jb25jdXJyZW50X21vZGVcIik6NjAxMTEsbj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKTo2MDExMixwPWI/U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpOjYwMTEzLHE9Yj9cblN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpOjYwMTIwLHI9Yj9TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKTo2MDExNSx0PWI/U3ltYm9sLmZvcihcInJlYWN0LmxhenlcIik6NjAxMTYsdj1iP1N5bWJvbC5mb3IoXCJyZWFjdC5ibG9ja1wiKTo2MDEyMSx3PWI/U3ltYm9sLmZvcihcInJlYWN0LmZ1bmRhbWVudGFsXCIpOjYwMTE3LHg9Yj9TeW1ib2wuZm9yKFwicmVhY3QucmVzcG9uZGVyXCIpOjYwMTE4LHk9Yj9TeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik6NjAxMTk7XG5mdW5jdGlvbiB6KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciB1PWEuJCR0eXBlb2Y7c3dpdGNoKHUpe2Nhc2UgYzpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBsOmNhc2UgbTpjYXNlIGU6Y2FzZSBnOmNhc2UgZjpjYXNlIHA6cmV0dXJuIGE7ZGVmYXVsdDpzd2l0Y2goYT1hJiZhLiQkdHlwZW9mLGEpe2Nhc2UgazpjYXNlIG46Y2FzZSB0OmNhc2UgcjpjYXNlIGg6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gdX19Y2FzZSBkOnJldHVybiB1fX19ZnVuY3Rpb24gQShhKXtyZXR1cm4geihhKT09PW19ZXhwb3J0cy5Bc3luY01vZGU9bDtleHBvcnRzLkNvbmN1cnJlbnRNb2RlPW07ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aztleHBvcnRzLkNvbnRleHRQcm92aWRlcj1oO2V4cG9ydHMuRWxlbWVudD1jO2V4cG9ydHMuRm9yd2FyZFJlZj1uO2V4cG9ydHMuRnJhZ21lbnQ9ZTtleHBvcnRzLkxhenk9dDtleHBvcnRzLk1lbW89cjtleHBvcnRzLlBvcnRhbD1kO1xuZXhwb3J0cy5Qcm9maWxlcj1nO2V4cG9ydHMuU3RyaWN0TW9kZT1mO2V4cG9ydHMuU3VzcGVuc2U9cDtleHBvcnRzLmlzQXN5bmNNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiBBKGEpfHx6KGEpPT09bH07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPUE7ZXhwb3J0cy5pc0NvbnRleHRDb25zdW1lcj1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PWt9O2V4cG9ydHMuaXNDb250ZXh0UHJvdmlkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ofTtleHBvcnRzLmlzRWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIGEmJm51bGwhPT1hJiZhLiQkdHlwZW9mPT09Y307ZXhwb3J0cy5pc0ZvcndhcmRSZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1ufTtleHBvcnRzLmlzRnJhZ21lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1lfTtleHBvcnRzLmlzTGF6eT1mdW5jdGlvbihhKXtyZXR1cm4geihhKT09PXR9O1xuZXhwb3J0cy5pc01lbW89ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1yfTtleHBvcnRzLmlzUG9ydGFsPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09ZH07ZXhwb3J0cy5pc1Byb2ZpbGVyPWZ1bmN0aW9uKGEpe3JldHVybiB6KGEpPT09Z307ZXhwb3J0cy5pc1N0cmljdE1vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1mfTtleHBvcnRzLmlzU3VzcGVuc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHooYSk9PT1wfTtcbmV4cG9ydHMuaXNWYWxpZEVsZW1lbnRUeXBlPWZ1bmN0aW9uKGEpe3JldHVyblwic3RyaW5nXCI9PT10eXBlb2YgYXx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGF8fGE9PT1lfHxhPT09bXx8YT09PWd8fGE9PT1mfHxhPT09cHx8YT09PXF8fFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJihhLiQkdHlwZW9mPT09dHx8YS4kJHR5cGVvZj09PXJ8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09a3x8YS4kJHR5cGVvZj09PW58fGEuJCR0eXBlb2Y9PT13fHxhLiQkdHlwZW9mPT09eHx8YS4kJHR5cGVvZj09PXl8fGEuJCR0eXBlb2Y9PT12KX07ZXhwb3J0cy50eXBlT2Y9ejtcbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1pcy5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3Byb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG52YXIgX2xvZGFzaCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcImxvZGFzaC50aHJvdHRsZVwiKSk7XG5cbnZhciBfc2hhbGxvd2VxdWFsID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwic2hhbGxvd2VxdWFsXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiB7fTsgaWYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIFRyYWNrVmlzaWJpbGl0eSA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX1B1cmVDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoVHJhY2tWaXNpYmlsaXR5LCBfUHVyZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gVHJhY2tWaXNpYmlsaXR5KHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX3RoaXMgPSBfUHVyZUNvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKSB8fCB0aGlzO1xuXG4gICAgX3RoaXMuaXNWaXNpYmxlID0gZnVuY3Rpb24gKF9yZWYsIHdpbmRvd1dpZHRoLCB3aW5kb3dIZWlnaHQpIHtcbiAgICAgIHZhciB0b3AgPSBfcmVmLnRvcCxcbiAgICAgICAgICBsZWZ0ID0gX3JlZi5sZWZ0LFxuICAgICAgICAgIGJvdHRvbSA9IF9yZWYuYm90dG9tLFxuICAgICAgICAgIHJpZ2h0ID0gX3JlZi5yaWdodCxcbiAgICAgICAgICB3aWR0aCA9IF9yZWYud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3JlZi5oZWlnaHQ7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBvZmZzZXQgPSBfdGhpcyRwcm9wcy5vZmZzZXQsXG4gICAgICAgICAgcGFydGlhbFZpc2liaWxpdHkgPSBfdGhpcyRwcm9wcy5wYXJ0aWFsVmlzaWJpbGl0eTtcblxuICAgICAgaWYgKHRvcCArIHJpZ2h0ICsgYm90dG9tICsgbGVmdCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHZhciB0b3BUaHJlc2hvbGQgPSAwIC0gb2Zmc2V0O1xuICAgICAgdmFyIGxlZnRUaHJlc2hvbGQgPSAwIC0gb2Zmc2V0O1xuICAgICAgdmFyIHdpZHRoQ2hlY2sgPSB3aW5kb3dXaWR0aCArIG9mZnNldDtcbiAgICAgIHZhciBoZWlnaHRDaGVjayA9IHdpbmRvd0hlaWdodCArIG9mZnNldDtcbiAgICAgIHJldHVybiBwYXJ0aWFsVmlzaWJpbGl0eSA/IHRvcCArIGhlaWdodCA+PSB0b3BUaHJlc2hvbGQgJiYgbGVmdCArIHdpZHRoID49IGxlZnRUaHJlc2hvbGQgJiYgYm90dG9tIC0gaGVpZ2h0IDw9IGhlaWdodENoZWNrICYmIHJpZ2h0IC0gd2lkdGggPD0gd2lkdGhDaGVjayA6IHRvcCA+PSB0b3BUaHJlc2hvbGQgJiYgbGVmdCA+PSBsZWZ0VGhyZXNob2xkICYmIGJvdHRvbSA8PSBoZWlnaHRDaGVjayAmJiByaWdodCA8PSB3aWR0aENoZWNrO1xuICAgIH07XG5cbiAgICBfdGhpcy5pc0NvbXBvbmVudFZpc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgLy8gaXNDb21wb25lbnRWaXNpYmxlIG1pZ2h0IGJlIGNhbGxlZCBmcm9tIGNvbXBvbmVudERpZE1vdW50LCBiZWZvcmUgY29tcG9uZW50IHJlZiBpcyBhc3NpZ25lZFxuICAgICAgICBpZiAoIV90aGlzLm5vZGVSZWYgfHwgIV90aGlzLm5vZGVSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KSByZXR1cm47XG4gICAgICAgIHZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICB2YXIgb25jZSA9IF90aGlzLnByb3BzLm9uY2U7XG5cbiAgICAgICAgdmFyIGJvdW5kaW5nQ2xpZW50UmVjdCA9IF90aGlzLm5vZGVSZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgdmFyIHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgaHRtbC5jbGllbnRXaWR0aDtcbiAgICAgICAgdmFyIHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBodG1sLmNsaWVudEhlaWdodDtcblxuICAgICAgICB2YXIgaXNWaXNpYmxlID0gX3RoaXMuaXNWaXNpYmxlKGJvdW5kaW5nQ2xpZW50UmVjdCwgd2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCk7XG5cbiAgICAgICAgaWYgKGlzVmlzaWJsZSAmJiBvbmNlKSB7XG4gICAgICAgICAgX3RoaXMucmVtb3ZlTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZVxuICAgICAgICB9KTtcbiAgICAgIH0sIDApO1xuICAgIH07XG5cbiAgICBfdGhpcy5zZXROb2RlUmVmID0gZnVuY3Rpb24gKHJlZikge1xuICAgICAgcmV0dXJuIF90aGlzLm5vZGVSZWYgPSByZWY7XG4gICAgfTtcblxuICAgIF90aGlzLm93blByb3BzID0gT2JqZWN0LmtleXMoVHJhY2tWaXNpYmlsaXR5LnByb3BUeXBlcyk7XG4gICAgX3RoaXMuc3RhdGUgPSB7XG4gICAgICBpc1Zpc2libGU6IGZhbHNlXG4gICAgfTtcbiAgICBfdGhpcy50aHJvdHRsZUNiID0gKDAsIF9sb2Rhc2guZGVmYXVsdCkoX3RoaXMuaXNDb21wb25lbnRWaXNpYmxlLCBfdGhpcy5wcm9wcy50aHJvdHRsZUludGVydmFsKTtcbiAgICBwcm9wcy5ub2RlUmVmICYmIF90aGlzLnNldE5vZGVSZWYocHJvcHMubm9kZVJlZik7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFRyYWNrVmlzaWJpbGl0eS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5hdHRhY2hMaXN0ZW5lcigpO1xuICAgIHRoaXMuaXNDb21wb25lbnRWaXNpYmxlKCk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBpZiAoISgwLCBfc2hhbGxvd2VxdWFsLmRlZmF1bHQpKHRoaXMuZ2V0Q2hpbGRQcm9wcyh0aGlzLnByb3BzKSwgdGhpcy5nZXRDaGlsZFByb3BzKHByZXZQcm9wcykpKSB7XG4gICAgICB0aGlzLmlzQ29tcG9uZW50VmlzaWJsZSgpO1xuICAgIH1cbiAgfTtcblxuICBfcHJvdG8uY29tcG9uZW50V2lsbFVubW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCk7XG4gIH07XG5cbiAgX3Byb3RvLmF0dGFjaExpc3RlbmVyID0gZnVuY3Rpb24gYXR0YWNoTGlzdGVuZXIoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMudGhyb3R0bGVDYik7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMudGhyb3R0bGVDYik7XG4gIH07XG5cbiAgX3Byb3RvLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMudGhyb3R0bGVDYik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMudGhyb3R0bGVDYik7XG4gIH07XG5cbiAgX3Byb3RvLmdldENoaWxkUHJvcHMgPSBmdW5jdGlvbiBnZXRDaGlsZFByb3BzKHByb3BzKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgICAgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgIH1cblxuICAgIHZhciBjaGlsZFByb3BzID0ge307XG4gICAgT2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKF90aGlzMi5vd25Qcm9wcy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICAgIGNoaWxkUHJvcHNba2V5XSA9IHByb3BzW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNoaWxkUHJvcHM7XG4gIH07XG5cbiAgX3Byb3RvLmdldENoaWxkcmVuID0gZnVuY3Rpb24gZ2V0Q2hpbGRyZW4oKSB7XG4gICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMuY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuKF9leHRlbmRzKHt9LCB0aGlzLmdldENoaWxkUHJvcHMoKSwge1xuICAgICAgICBpc1Zpc2libGU6IHRoaXMuc3RhdGUuaXNWaXNpYmxlXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIF9yZWFjdC5kZWZhdWx0LkNoaWxkcmVuLm1hcCh0aGlzLnByb3BzLmNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgIHJldHVybiBfcmVhY3QuZGVmYXVsdC5jbG9uZUVsZW1lbnQoY2hpbGQsIF9leHRlbmRzKHt9LCBfdGhpczMuZ2V0Q2hpbGRQcm9wcygpLCB7XG4gICAgICAgIGlzVmlzaWJsZTogX3RoaXMzLnN0YXRlLmlzVmlzaWJsZVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgIGNsYXNzTmFtZSA9IF90aGlzJHByb3BzMi5jbGFzc05hbWUsXG4gICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHMyLnN0eWxlLFxuICAgICAgICBub2RlUmVmID0gX3RoaXMkcHJvcHMyLm5vZGVSZWYsXG4gICAgICAgIFRhZyA9IF90aGlzJHByb3BzMi50YWc7XG5cbiAgICB2YXIgcHJvcHMgPSBfZXh0ZW5kcyh7fSwgY2xhc3NOYW1lICYmIHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lXG4gICAgfSwgc3R5bGUgJiYge1xuICAgICAgc3R5bGU6IHN0eWxlXG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3JlYWN0LmRlZmF1bHQuY3JlYXRlRWxlbWVudChUYWcsIF9leHRlbmRzKHtcbiAgICAgIHJlZjogIW5vZGVSZWYgJiYgdGhpcy5zZXROb2RlUmVmXG4gICAgfSwgcHJvcHMpLCB0aGlzLmdldENoaWxkcmVuKCkpO1xuICB9O1xuXG4gIHJldHVybiBUcmFja1Zpc2liaWxpdHk7XG59KF9yZWFjdC5QdXJlQ29tcG9uZW50KTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gVHJhY2tWaXNpYmlsaXR5O1xuVHJhY2tWaXNpYmlsaXR5LnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIERlZmluZSBpZiB0aGUgdmlzaWJpbGl0eSBuZWVkIHRvIGJlIHRyYWNrZWQgb25jZVxuICAgKi9cbiAgb25jZTogX3Byb3BUeXBlcy5kZWZhdWx0LmJvb2wsXG5cbiAgLyoqXG4gICAqIFR3ZWFrIHRoZSB0aHJvdHRsZSBpbnRlcnZhbFxuICAgKiBDaGVjayBodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvIGZvciBtb3JlIGRldGFpbHNcbiAgICovXG4gIHRocm90dGxlSW50ZXJ2YWw6IGZ1bmN0aW9uIHRocm90dGxlSW50ZXJ2YWwocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnQpIHtcbiAgICB2YXIgY3VycmVudFByb3AgPSBwcm9wc1twcm9wTmFtZV07XG5cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIoY3VycmVudFByb3ApIHx8IGN1cnJlbnRQcm9wIDwgMCkge1xuICAgICAgcmV0dXJuIG5ldyBFcnJvcihcIlRoZSBcIiArIHByb3BOYW1lICsgXCIgcHJvcCB5b3UgcHJvdmlkZWQgdG8gXCIgKyBjb21wb25lbnQgKyBcIiBpcyBub3QgYSB2YWxpZCBpbnRlZ2VyID49IDAuXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBQYXNzIG9uZSBvciBtb3JlIGNoaWxkcmVuIHRvIHRyYWNrXG4gICAqL1xuICBjaGlsZHJlbjogX3Byb3BUeXBlcy5kZWZhdWx0Lm9uZU9mVHlwZShbX3Byb3BUeXBlcy5kZWZhdWx0LmZ1bmMsIF9wcm9wVHlwZXMuZGVmYXVsdC5lbGVtZW50LCBfcHJvcFR5cGVzLmRlZmF1bHQuYXJyYXlPZihfcHJvcFR5cGVzLmRlZmF1bHQuZWxlbWVudCldKSxcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBzdHlsZSB0byBhcHBseVxuICAgKi9cbiAgc3R5bGU6IF9wcm9wVHlwZXMuZGVmYXVsdC5vYmplY3QsXG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY2xhc3NOYW1lIHRvIGFwcGx5XG4gICAqL1xuICBjbGFzc05hbWU6IF9wcm9wVHlwZXMuZGVmYXVsdC5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIERlZmluZSBhbiBvZmZzZXQuIENhbiBiZSB1c2VmdWwgZm9yIGxhenkgbG9hZGluZ1xuICAgKi9cbiAgb2Zmc2V0OiBfcHJvcFR5cGVzLmRlZmF1bHQubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHZpc2liaWxpdHkgc3RhdGUgYXMgc29vbiBhcyBhIHBhcnQgb2YgdGhlIHRyYWNrZWQgY29tcG9uZW50IGlzIHZpc2libGVcbiAgICovXG4gIHBhcnRpYWxWaXNpYmlsaXR5OiBfcHJvcFR5cGVzLmRlZmF1bHQuYm9vbCxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdGVzdGluZyBidXQgYWxsb3dzIG5vZGUgb3RoZXIgdGhhbiBpbnRlcm5hbCB3cmFwcGluZyA8ZGl2IC8+IHRvIGJlIHRyYWNrZWRcbiAgICogZm9yIHZpc2liaWxpdHlcbiAgICovXG4gIG5vZGVSZWY6IF9wcm9wVHlwZXMuZGVmYXVsdC5vYmplY3QsXG5cbiAgLyoqXG4gICAqIERlZmluZSBhIGN1c3RvbSB0YWdcbiAgICovXG4gIHRhZzogX3Byb3BUeXBlcy5kZWZhdWx0LnN0cmluZ1xufTtcblRyYWNrVmlzaWJpbGl0eS5kZWZhdWx0UHJvcHMgPSB7XG4gIG9uY2U6IGZhbHNlLFxuICB0aHJvdHRsZUludGVydmFsOiAxNTAsXG4gIG9mZnNldDogMCxcbiAgcGFydGlhbFZpc2liaWxpdHk6IGZhbHNlLFxuICB0YWc6ICdkaXYnXG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX1RyYWNrVmlzaWJpbGl0eSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vVHJhY2tWaXNpYmlsaXR5XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLypcbiogVGhpcyBmaWxlIHNlZW1zIGEgYml0IHVzZWxlc3MgYW55d2F5XG4qICovXG52YXIgX2RlZmF1bHQgPSBfVHJhY2tWaXNpYmlsaXR5LmRlZmF1bHQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KHJlcXVpcmUoXCJyZWFjdFwiKSk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXCJyZWFjdFwiXSx0KTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLlJlYWN0UGFnaW5hdGU9dChyZXF1aXJlKFwicmVhY3RcIikpOmUuUmVhY3RQYWdpbmF0ZT10KGUuUmVhY3QpfSh0aGlzLChlPT4oKCk9Pnt2YXIgdD17NzAzOihlLHQsYSk9PntcInVzZSBzdHJpY3RcIjt2YXIgcj1hKDQxNCk7ZnVuY3Rpb24gbigpe31mdW5jdGlvbiBpKCl7fWkucmVzZXRXYXJuaW5nQ2FjaGU9bixlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxhLG4saSxvKXtpZihvIT09cil7dmFyIHM9bmV3IEVycm9yKFwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwgdGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlc1wiKTt0aHJvdyBzLm5hbWU9XCJJbnZhcmlhbnQgVmlvbGF0aW9uXCIsc319ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUuaXNSZXF1aXJlZD1lO3ZhciBhPXthcnJheTplLGJpZ2ludDplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxlbGVtZW50VHlwZTplLGluc3RhbmNlT2Y6dCxub2RlOmUsb2JqZWN0T2Y6dCxvbmVPZjp0LG9uZU9mVHlwZTp0LHNoYXBlOnQsZXhhY3Q6dCxjaGVja1Byb3BUeXBlczppLHJlc2V0V2FybmluZ0NhY2hlOm59O3JldHVybiBhLlByb3BUeXBlcz1hLGF9fSw2OTc6KGUsdCxhKT0+e2UuZXhwb3J0cz1hKDcwMykoKX0sNDE0OmU9PntcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifSw5ODp0PT57XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWV9fSxhPXt9O2Z1bmN0aW9uIHIoZSl7dmFyIG49YVtlXTtpZih2b2lkIDAhPT1uKXJldHVybiBuLmV4cG9ydHM7dmFyIGk9YVtlXT17ZXhwb3J0czp7fX07cmV0dXJuIHRbZV0oaSxpLmV4cG9ydHMsciksaS5leHBvcnRzfXIubj1lPT57dmFyIHQ9ZSYmZS5fX2VzTW9kdWxlPygpPT5lLmRlZmF1bHQ6KCk9PmU7cmV0dXJuIHIuZCh0LHthOnR9KSx0fSxyLmQ9KGUsdCk9Pntmb3IodmFyIGEgaW4gdClyLm8odCxhKSYmIXIubyhlLGEpJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxhLHtlbnVtZXJhYmxlOiEwLGdldDp0W2FdfSl9LHIubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksci5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfTt2YXIgbj17fTtyZXR1cm4oKCk9PntcInVzZSBzdHJpY3RcIjtyLnIobiksci5kKG4se2RlZmF1bHQ6KCk9Pmt9KTt2YXIgZT1yKDk4KSx0PXIubihlKSxhPXIoNjk3KSxpPXIubihhKTtmdW5jdGlvbiBvKCl7cmV0dXJuIG89T2JqZWN0LmFzc2lnbj9PYmplY3QuYXNzaWduLmJpbmQoKTpmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgYT1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEscikmJihlW3JdPWFbcl0pfXJldHVybiBlfSxvLmFwcGx5KHRoaXMsYXJndW1lbnRzKX12YXIgcz1mdW5jdGlvbihlKXt2YXIgYT1lLnBhZ2VDbGFzc05hbWUscj1lLnBhZ2VMaW5rQ2xhc3NOYW1lLG49ZS5wYWdlLGk9ZS5zZWxlY3RlZCxzPWUuYWN0aXZlQ2xhc3NOYW1lLGw9ZS5hY3RpdmVMaW5rQ2xhc3NOYW1lLGM9ZS5nZXRFdmVudExpc3RlbmVyLHA9ZS5wYWdlU2VsZWN0ZWRIYW5kbGVyLHU9ZS5ocmVmLGc9ZS5leHRyYUFyaWFDb250ZXh0LGQ9ZS5wYWdlTGFiZWxCdWlsZGVyLGY9ZS5yZWwsdj1lLmFyaWFMYWJlbHx8XCJQYWdlIFwiK24rKGc/XCIgXCIrZzpcIlwiKSxiPW51bGw7cmV0dXJuIGkmJihiPVwicGFnZVwiLHY9ZS5hcmlhTGFiZWx8fFwiUGFnZSBcIituK1wiIGlzIHlvdXIgY3VycmVudCBwYWdlXCIsYT12b2lkIDAhPT1hP2ErXCIgXCIrczpzLHZvaWQgMCE9PXI/dm9pZCAwIT09bCYmKHI9citcIiBcIitsKTpyPWwpLHQoKS5jcmVhdGVFbGVtZW50KFwibGlcIix7Y2xhc3NOYW1lOmF9LHQoKS5jcmVhdGVFbGVtZW50KFwiYVwiLG8oe3JlbDpmLHJvbGU6dT92b2lkIDA6XCJidXR0b25cIixjbGFzc05hbWU6cixocmVmOnUsdGFiSW5kZXg6aT9cIi0xXCI6XCIwXCIsXCJhcmlhLWxhYmVsXCI6dixcImFyaWEtY3VycmVudFwiOmIsb25LZXlQcmVzczpwfSxjKHApKSxkKG4pKSl9O3MucHJvcFR5cGVzPXtwYWdlU2VsZWN0ZWRIYW5kbGVyOmkoKS5mdW5jLmlzUmVxdWlyZWQsc2VsZWN0ZWQ6aSgpLmJvb2wuaXNSZXF1aXJlZCxwYWdlQ2xhc3NOYW1lOmkoKS5zdHJpbmcscGFnZUxpbmtDbGFzc05hbWU6aSgpLnN0cmluZyxhY3RpdmVDbGFzc05hbWU6aSgpLnN0cmluZyxhY3RpdmVMaW5rQ2xhc3NOYW1lOmkoKS5zdHJpbmcsZXh0cmFBcmlhQ29udGV4dDppKCkuc3RyaW5nLGhyZWY6aSgpLnN0cmluZyxhcmlhTGFiZWw6aSgpLnN0cmluZyxwYWdlOmkoKS5udW1iZXIuaXNSZXF1aXJlZCxnZXRFdmVudExpc3RlbmVyOmkoKS5mdW5jLmlzUmVxdWlyZWQscGFnZUxhYmVsQnVpbGRlcjppKCkuZnVuYy5pc1JlcXVpcmVkLHJlbDppKCkuc3RyaW5nfTtjb25zdCBsPXM7ZnVuY3Rpb24gYygpe3JldHVybiBjPU9iamVjdC5hc3NpZ24/T2JqZWN0LmFzc2lnbi5iaW5kKCk6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGE9YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLHIpJiYoZVtyXT1hW3JdKX1yZXR1cm4gZX0sYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIHA9ZnVuY3Rpb24oZSl7dmFyIGE9ZS5icmVha0xhYmVsLHI9ZS5icmVha0NsYXNzTmFtZSxuPWUuYnJlYWtMaW5rQ2xhc3NOYW1lLGk9ZS5icmVha0hhbmRsZXIsbz1lLmdldEV2ZW50TGlzdGVuZXIscz1yfHxcImJyZWFrXCI7cmV0dXJuIHQoKS5jcmVhdGVFbGVtZW50KFwibGlcIix7Y2xhc3NOYW1lOnN9LHQoKS5jcmVhdGVFbGVtZW50KFwiYVwiLGMoe2NsYXNzTmFtZTpuLHJvbGU6XCJidXR0b25cIix0YWJJbmRleDpcIjBcIixvbktleVByZXNzOml9LG8oaSkpLGEpKX07cC5wcm9wVHlwZXM9e2JyZWFrTGFiZWw6aSgpLm9uZU9mVHlwZShbaSgpLnN0cmluZyxpKCkubm9kZV0pLGJyZWFrQ2xhc3NOYW1lOmkoKS5zdHJpbmcsYnJlYWtMaW5rQ2xhc3NOYW1lOmkoKS5zdHJpbmcsYnJlYWtIYW5kbGVyOmkoKS5mdW5jLmlzUmVxdWlyZWQsZ2V0RXZlbnRMaXN0ZW5lcjppKCkuZnVuYy5pc1JlcXVpcmVkfTtjb25zdCB1PXA7ZnVuY3Rpb24gZyhlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06XCJcIjtyZXR1cm4gbnVsbCE9ZT9lOnR9ZnVuY3Rpb24gZChlKXtyZXR1cm4gZD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwic3ltYm9sXCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT9cInN5bWJvbFwiOnR5cGVvZiBlfSxkKGUpfWZ1bmN0aW9uIGYoKXtyZXR1cm4gZj1PYmplY3QuYXNzaWduP09iamVjdC5hc3NpZ24uYmluZCgpOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBhPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxyKSYmKGVbcl09YVtyXSl9cmV0dXJuIGV9LGYuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIHYoZSx0KXtmb3IodmFyIGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIHI9dFthXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4gYj1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbihlLHQpe3JldHVybiBlLl9fcHJvdG9fXz10LGV9LGIoZSx0KX1mdW5jdGlvbiBoKGUsdCl7aWYodCYmKFwib2JqZWN0XCI9PT1kKHQpfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KSlyZXR1cm4gdDtpZih2b2lkIDAhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtyZXR1cm4gbShlKX1mdW5jdGlvbiBtKGUpe2lmKHZvaWQgMD09PWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiBlfWZ1bmN0aW9uIHkoZSl7cmV0dXJuIHk9T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YoZSl9LHkoZSl9ZnVuY3Rpb24gQyhlLHQsYSl7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1hLGV9dmFyIFA9ZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcInByb3RvdHlwZVwiLHt3cml0YWJsZTohMX0pLHQmJmIoZSx0KX0ocyxlKTt2YXIgYSxyLG4saSxvPShuPXMsaT1mdW5jdGlvbigpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2goZSl7cmV0dXJuITF9fSgpLGZ1bmN0aW9uKCl7dmFyIGUsdD15KG4pO2lmKGkpe3ZhciBhPXkodGhpcykuY29uc3RydWN0b3I7ZT1SZWZsZWN0LmNvbnN0cnVjdCh0LGFyZ3VtZW50cyxhKX1lbHNlIGU9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGgodGhpcyxlKX0pO2Z1bmN0aW9uIHMoZSl7dmFyIGEscjtyZXR1cm4gZnVuY3Rpb24oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHMpLEMobShhPW8uY2FsbCh0aGlzLGUpKSxcImhhbmRsZVByZXZpb3VzUGFnZVwiLChmdW5jdGlvbihlKXt2YXIgdD1hLnN0YXRlLnNlbGVjdGVkO2EuaGFuZGxlQ2xpY2soZSxudWxsLHQ+MD90LTE6dm9pZCAwLHtpc1ByZXZpb3VzOiEwfSl9KSksQyhtKGEpLFwiaGFuZGxlTmV4dFBhZ2VcIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YS5zdGF0ZS5zZWxlY3RlZCxyPWEucHJvcHMucGFnZUNvdW50O2EuaGFuZGxlQ2xpY2soZSxudWxsLHQ8ci0xP3QrMTp2b2lkIDAse2lzTmV4dDohMH0pfSkpLEMobShhKSxcImhhbmRsZVBhZ2VTZWxlY3RlZFwiLChmdW5jdGlvbihlLHQpe2lmKGEuc3RhdGUuc2VsZWN0ZWQ9PT1lKXJldHVybiBhLmNhbGxBY3RpdmVDYWxsYmFjayhlKSx2b2lkIGEuaGFuZGxlQ2xpY2sodCxudWxsLHZvaWQgMCx7aXNBY3RpdmU6ITB9KTthLmhhbmRsZUNsaWNrKHQsbnVsbCxlKX0pKSxDKG0oYSksXCJoYW5kbGVQYWdlQ2hhbmdlXCIsKGZ1bmN0aW9uKGUpe2Euc3RhdGUuc2VsZWN0ZWQhPT1lJiYoYS5zZXRTdGF0ZSh7c2VsZWN0ZWQ6ZX0pLGEuY2FsbENhbGxiYWNrKGUpKX0pKSxDKG0oYSksXCJnZXRFdmVudExpc3RlbmVyXCIsKGZ1bmN0aW9uKGUpe3JldHVybiBDKHt9LGEucHJvcHMuZXZlbnRMaXN0ZW5lcixlKX0pKSxDKG0oYSksXCJoYW5kbGVDbGlja1wiLChmdW5jdGlvbihlLHQscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOnt9LGk9bi5pc1ByZXZpb3VzLG89dm9pZCAwIT09aSYmaSxzPW4uaXNOZXh0LGw9dm9pZCAwIT09cyYmcyxjPW4uaXNCcmVhayxwPXZvaWQgMCE9PWMmJmMsdT1uLmlzQWN0aXZlLGc9dm9pZCAwIT09dSYmdTtlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKTplLnJldHVyblZhbHVlPSExO3ZhciBkPWEuc3RhdGUuc2VsZWN0ZWQsZj1hLnByb3BzLm9uQ2xpY2ssdj1yO2lmKGYpe3ZhciBiPWYoe2luZGV4OnQsc2VsZWN0ZWQ6ZCxuZXh0U2VsZWN0ZWRQYWdlOnIsZXZlbnQ6ZSxpc1ByZXZpb3VzOm8saXNOZXh0OmwsaXNCcmVhazpwLGlzQWN0aXZlOmd9KTtpZighMT09PWIpcmV0dXJuO051bWJlci5pc0ludGVnZXIoYikmJih2PWIpfXZvaWQgMCE9PXYmJmEuaGFuZGxlUGFnZUNoYW5nZSh2KX0pKSxDKG0oYSksXCJoYW5kbGVCcmVha0NsaWNrXCIsKGZ1bmN0aW9uKGUsdCl7dmFyIHI9YS5zdGF0ZS5zZWxlY3RlZDthLmhhbmRsZUNsaWNrKHQsZSxyPGU/YS5nZXRGb3J3YXJkSnVtcCgpOmEuZ2V0QmFja3dhcmRKdW1wKCkse2lzQnJlYWs6ITB9KX0pKSxDKG0oYSksXCJjYWxsQ2FsbGJhY2tcIiwoZnVuY3Rpb24oZSl7dm9pZCAwIT09YS5wcm9wcy5vblBhZ2VDaGFuZ2UmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGEucHJvcHMub25QYWdlQ2hhbmdlJiZhLnByb3BzLm9uUGFnZUNoYW5nZSh7c2VsZWN0ZWQ6ZX0pfSkpLEMobShhKSxcImNhbGxBY3RpdmVDYWxsYmFja1wiLChmdW5jdGlvbihlKXt2b2lkIDAhPT1hLnByb3BzLm9uUGFnZUFjdGl2ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgYS5wcm9wcy5vblBhZ2VBY3RpdmUmJmEucHJvcHMub25QYWdlQWN0aXZlKHtzZWxlY3RlZDplfSl9KSksQyhtKGEpLFwiZ2V0RWxlbWVudFBhZ2VSZWxcIiwoZnVuY3Rpb24oZSl7dmFyIHQ9YS5zdGF0ZS5zZWxlY3RlZCxyPWEucHJvcHMsbj1yLm5leHRQYWdlUmVsLGk9ci5wcmV2UGFnZVJlbCxvPXIuc2VsZWN0ZWRQYWdlUmVsO3JldHVybiB0LTE9PT1lP2k6dD09PWU/bzp0KzE9PT1lP246dm9pZCAwfSkpLEMobShhKSxcInBhZ2luYXRpb25cIiwoZnVuY3Rpb24oKXt2YXIgZT1bXSxyPWEucHJvcHMsbj1yLnBhZ2VSYW5nZURpc3BsYXllZCxpPXIucGFnZUNvdW50LG89ci5tYXJnaW5QYWdlc0Rpc3BsYXllZCxzPXIuYnJlYWtMYWJlbCxsPXIuYnJlYWtDbGFzc05hbWUsYz1yLmJyZWFrTGlua0NsYXNzTmFtZSxwPWEuc3RhdGUuc2VsZWN0ZWQ7aWYoaTw9bilmb3IodmFyIGc9MDtnPGk7ZysrKWUucHVzaChhLmdldFBhZ2VFbGVtZW50KGcpKTtlbHNle3ZhciBkPW4vMixmPW4tZDtwPmktbi8yP2Q9bi0oZj1pLXApOnA8bi8yJiYoZj1uLShkPXApKTt2YXIgdixiLGg9ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZ2V0UGFnZUVsZW1lbnQoZSl9LG09W107Zm9yKHY9MDt2PGk7disrKXt2YXIgeT12KzE7eTw9b3x8eT5pLW98fHY+PXAtZCYmdjw9cCsoMD09PXAmJm4+MT9mLTE6Zik/bS5wdXNoKHt0eXBlOlwicGFnZVwiLGluZGV4OnYsZGlzcGxheTpoKHYpfSk6cyYmbS5sZW5ndGg+MCYmbVttLmxlbmd0aC0xXS5kaXNwbGF5IT09YiYmKG4+MHx8bz4wKSYmKGI9dCgpLmNyZWF0ZUVsZW1lbnQodSx7a2V5OnYsYnJlYWtMYWJlbDpzLGJyZWFrQ2xhc3NOYW1lOmwsYnJlYWtMaW5rQ2xhc3NOYW1lOmMsYnJlYWtIYW5kbGVyOmEuaGFuZGxlQnJlYWtDbGljay5iaW5kKG51bGwsdiksZ2V0RXZlbnRMaXN0ZW5lcjphLmdldEV2ZW50TGlzdGVuZXJ9KSxtLnB1c2goe3R5cGU6XCJicmVha1wiLGluZGV4OnYsZGlzcGxheTpifSkpfW0uZm9yRWFjaCgoZnVuY3Rpb24odCxhKXt2YXIgcj10O1wiYnJlYWtcIj09PXQudHlwZSYmbVthLTFdJiZcInBhZ2VcIj09PW1bYS0xXS50eXBlJiZtW2ErMV0mJlwicGFnZVwiPT09bVthKzFdLnR5cGUmJm1bYSsxXS5pbmRleC1tW2EtMV0uaW5kZXg8PTImJihyPXt0eXBlOlwicGFnZVwiLGluZGV4OnQuaW5kZXgsZGlzcGxheTpoKHQuaW5kZXgpfSksZS5wdXNoKHIuZGlzcGxheSl9KSl9cmV0dXJuIGV9KSksdm9pZCAwIT09ZS5pbml0aWFsUGFnZSYmdm9pZCAwIT09ZS5mb3JjZVBhZ2UmJmNvbnNvbGUud2FybihcIihyZWFjdC1wYWdpbmF0ZSk6IEJvdGggaW5pdGlhbFBhZ2UgKFwiLmNvbmNhdChlLmluaXRpYWxQYWdlLFwiKSBhbmQgZm9yY2VQYWdlIChcIikuY29uY2F0KGUuZm9yY2VQYWdlLFwiKSBwcm9wcyBhcmUgcHJvdmlkZWQsIHdoaWNoIGlzIGRpc2NvdXJhZ2VkLlwiKStcIiBVc2UgZXhjbHVzaXZlbHkgZm9yY2VQYWdlIHByb3AgZm9yIGEgY29udHJvbGxlZCBjb21wb25lbnQuXFxuU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9mb3Jtcy5odG1sI2NvbnRyb2xsZWQtY29tcG9uZW50c1wiKSxyPWUuaW5pdGlhbFBhZ2U/ZS5pbml0aWFsUGFnZTplLmZvcmNlUGFnZT9lLmZvcmNlUGFnZTowLGEuc3RhdGU9e3NlbGVjdGVkOnJ9LGF9cmV0dXJuIGE9cywocj1be2tleTpcImNvbXBvbmVudERpZE1vdW50XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS5pbml0aWFsUGFnZSxhPWUuZGlzYWJsZUluaXRpYWxDYWxsYmFjayxyPWUuZXh0cmFBcmlhQ29udGV4dCxuPWUucGFnZUNvdW50LGk9ZS5mb3JjZVBhZ2U7dm9pZCAwPT09dHx8YXx8dGhpcy5jYWxsQ2FsbGJhY2sodCksciYmY29uc29sZS53YXJuKFwiREVQUkVDQVRFRCAocmVhY3QtcGFnaW5hdGUpOiBUaGUgZXh0cmFBcmlhQ29udGV4dCBwcm9wIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgbm93IHVzZSB0aGUgYXJpYUxhYmVsQnVpbGRlciBpbnN0ZWFkLlwiKSxOdW1iZXIuaXNJbnRlZ2VyKG4pfHxjb25zb2xlLndhcm4oXCIocmVhY3QtcGFnaW5hdGUpOiBUaGUgcGFnZUNvdW50IHByb3AgdmFsdWUgcHJvdmlkZWQgaXMgbm90IGFuIGludGVnZXIgKFwiLmNvbmNhdChuLFwiKS4gRGlkIHlvdSBmb3JnZXQgYSBNYXRoLmNlaWwoKT9cIikpLHZvaWQgMCE9PXQmJnQ+bi0xJiZjb25zb2xlLndhcm4oXCIocmVhY3QtcGFnaW5hdGUpOiBUaGUgaW5pdGlhbFBhZ2UgcHJvcCBwcm92aWRlZCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcGFnZSBpbmRleCBmcm9tIHBhZ2VDb3VudCBwcm9wIChcIi5jb25jYXQodCxcIiA+IFwiKS5jb25jYXQobi0xLFwiKS5cIikpLHZvaWQgMCE9PWkmJmk+bi0xJiZjb25zb2xlLndhcm4oXCIocmVhY3QtcGFnaW5hdGUpOiBUaGUgZm9yY2VQYWdlIHByb3AgcHJvdmlkZWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHBhZ2UgaW5kZXggZnJvbSBwYWdlQ291bnQgcHJvcCAoXCIuY29uY2F0KGksXCIgPiBcIikuY29uY2F0KG4tMSxcIikuXCIpKX19LHtrZXk6XCJjb21wb25lbnREaWRVcGRhdGVcIix2YWx1ZTpmdW5jdGlvbihlKXt2b2lkIDAhPT10aGlzLnByb3BzLmZvcmNlUGFnZSYmdGhpcy5wcm9wcy5mb3JjZVBhZ2UhPT1lLmZvcmNlUGFnZSYmKHRoaXMucHJvcHMuZm9yY2VQYWdlPnRoaXMucHJvcHMucGFnZUNvdW50LTEmJmNvbnNvbGUud2FybihcIihyZWFjdC1wYWdpbmF0ZSk6IFRoZSBmb3JjZVBhZ2UgcHJvcCBwcm92aWRlZCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcGFnZSBpbmRleCBmcm9tIHBhZ2VDb3VudCBwcm9wIChcIi5jb25jYXQodGhpcy5wcm9wcy5mb3JjZVBhZ2UsXCIgPiBcIikuY29uY2F0KHRoaXMucHJvcHMucGFnZUNvdW50LTEsXCIpLlwiKSksdGhpcy5zZXRTdGF0ZSh7c2VsZWN0ZWQ6dGhpcy5wcm9wcy5mb3JjZVBhZ2V9KSksTnVtYmVyLmlzSW50ZWdlcihlLnBhZ2VDb3VudCkmJiFOdW1iZXIuaXNJbnRlZ2VyKHRoaXMucHJvcHMucGFnZUNvdW50KSYmY29uc29sZS53YXJuKFwiKHJlYWN0LXBhZ2luYXRlKTogVGhlIHBhZ2VDb3VudCBwcm9wIHZhbHVlIHByb3ZpZGVkIGlzIG5vdCBhbiBpbnRlZ2VyIChcIi5jb25jYXQodGhpcy5wcm9wcy5wYWdlQ291bnQsXCIpLiBEaWQgeW91IGZvcmdldCBhIE1hdGguY2VpbCgpP1wiKSl9fSx7a2V5OlwiZ2V0Rm9yd2FyZEp1bXBcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGUuc2VsZWN0ZWQsdD10aGlzLnByb3BzLGE9dC5wYWdlQ291bnQscj1lK3QucGFnZVJhbmdlRGlzcGxheWVkO3JldHVybiByPj1hP2EtMTpyfX0se2tleTpcImdldEJhY2t3YXJkSnVtcFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZS5zZWxlY3RlZC10aGlzLnByb3BzLnBhZ2VSYW5nZURpc3BsYXllZDtyZXR1cm4gZTwwPzA6ZX19LHtrZXk6XCJnZXRFbGVtZW50SHJlZlwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsYT10LmhyZWZCdWlsZGVyLHI9dC5wYWdlQ291bnQsbj10LmhyZWZBbGxDb250cm9scztpZihhKXJldHVybiBufHxlPj0wJiZlPHI/YShlKzEscix0aGlzLnN0YXRlLnNlbGVjdGVkKTp2b2lkIDB9fSx7a2V5OlwiYXJpYUxhYmVsQnVpbGRlclwiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWU9PT10aGlzLnN0YXRlLnNlbGVjdGVkO2lmKHRoaXMucHJvcHMuYXJpYUxhYmVsQnVpbGRlciYmZT49MCYmZTx0aGlzLnByb3BzLnBhZ2VDb3VudCl7dmFyIGE9dGhpcy5wcm9wcy5hcmlhTGFiZWxCdWlsZGVyKGUrMSx0KTtyZXR1cm4gdGhpcy5wcm9wcy5leHRyYUFyaWFDb250ZXh0JiYhdCYmKGE9YStcIiBcIit0aGlzLnByb3BzLmV4dHJhQXJpYUNvbnRleHQpLGF9fX0se2tleTpcImdldFBhZ2VFbGVtZW50XCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIGE9dGhpcy5zdGF0ZS5zZWxlY3RlZCxyPXRoaXMucHJvcHMsbj1yLnBhZ2VDbGFzc05hbWUsaT1yLnBhZ2VMaW5rQ2xhc3NOYW1lLG89ci5hY3RpdmVDbGFzc05hbWUscz1yLmFjdGl2ZUxpbmtDbGFzc05hbWUsYz1yLmV4dHJhQXJpYUNvbnRleHQscD1yLnBhZ2VMYWJlbEJ1aWxkZXI7cmV0dXJuIHQoKS5jcmVhdGVFbGVtZW50KGwse2tleTplLHBhZ2VTZWxlY3RlZEhhbmRsZXI6dGhpcy5oYW5kbGVQYWdlU2VsZWN0ZWQuYmluZChudWxsLGUpLHNlbGVjdGVkOmE9PT1lLHJlbDp0aGlzLmdldEVsZW1lbnRQYWdlUmVsKGUpLHBhZ2VDbGFzc05hbWU6bixwYWdlTGlua0NsYXNzTmFtZTppLGFjdGl2ZUNsYXNzTmFtZTpvLGFjdGl2ZUxpbmtDbGFzc05hbWU6cyxleHRyYUFyaWFDb250ZXh0OmMsaHJlZjp0aGlzLmdldEVsZW1lbnRIcmVmKGUpLGFyaWFMYWJlbDp0aGlzLmFyaWFMYWJlbEJ1aWxkZXIoZSkscGFnZTplKzEscGFnZUxhYmVsQnVpbGRlcjpwLGdldEV2ZW50TGlzdGVuZXI6dGhpcy5nZXRFdmVudExpc3RlbmVyfSl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLnJlbmRlck9uWmVyb1BhZ2VDb3VudDtpZigwPT09dGhpcy5wcm9wcy5wYWdlQ291bnQmJnZvaWQgMCE9PWUpcmV0dXJuIGU/ZSh0aGlzLnByb3BzKTplO3ZhciBhPXRoaXMucHJvcHMscj1hLmRpc2FibGVkQ2xhc3NOYW1lLG49YS5kaXNhYmxlZExpbmtDbGFzc05hbWUsaT1hLnBhZ2VDb3VudCxvPWEuY2xhc3NOYW1lLHM9YS5jb250YWluZXJDbGFzc05hbWUsbD1hLnByZXZpb3VzTGFiZWwsYz1hLnByZXZpb3VzQ2xhc3NOYW1lLHA9YS5wcmV2aW91c0xpbmtDbGFzc05hbWUsdT1hLnByZXZpb3VzQXJpYUxhYmVsLGQ9YS5wcmV2UmVsLHY9YS5uZXh0TGFiZWwsYj1hLm5leHRDbGFzc05hbWUsaD1hLm5leHRMaW5rQ2xhc3NOYW1lLG09YS5uZXh0QXJpYUxhYmVsLHk9YS5uZXh0UmVsLEM9dGhpcy5zdGF0ZS5zZWxlY3RlZCxQPTA9PT1DLGs9Qz09PWktMSx4PVwiXCIuY29uY2F0KGcoYykpLmNvbmNhdChQP1wiIFwiLmNvbmNhdChnKHIpKTpcIlwiKSxOPVwiXCIuY29uY2F0KGcoYikpLmNvbmNhdChrP1wiIFwiLmNvbmNhdChnKHIpKTpcIlwiKSxMPVwiXCIuY29uY2F0KGcocCkpLmNvbmNhdChQP1wiIFwiLmNvbmNhdChnKG4pKTpcIlwiKSxPPVwiXCIuY29uY2F0KGcoaCkpLmNvbmNhdChrP1wiIFwiLmNvbmNhdChnKG4pKTpcIlwiKSxSPVA/XCJ0cnVlXCI6XCJmYWxzZVwiLEU9az9cInRydWVcIjpcImZhbHNlXCI7cmV0dXJuIHQoKS5jcmVhdGVFbGVtZW50KFwidWxcIix7Y2xhc3NOYW1lOm98fHMscm9sZTpcIm5hdmlnYXRpb25cIixcImFyaWEtbGFiZWxcIjpcIlBhZ2luYXRpb25cIn0sdCgpLmNyZWF0ZUVsZW1lbnQoXCJsaVwiLHtjbGFzc05hbWU6eH0sdCgpLmNyZWF0ZUVsZW1lbnQoXCJhXCIsZih7Y2xhc3NOYW1lOkwsaHJlZjp0aGlzLmdldEVsZW1lbnRIcmVmKEMtMSksdGFiSW5kZXg6UD9cIi0xXCI6XCIwXCIscm9sZTpcImJ1dHRvblwiLG9uS2V5UHJlc3M6dGhpcy5oYW5kbGVQcmV2aW91c1BhZ2UsXCJhcmlhLWRpc2FibGVkXCI6UixcImFyaWEtbGFiZWxcIjp1LHJlbDpkfSx0aGlzLmdldEV2ZW50TGlzdGVuZXIodGhpcy5oYW5kbGVQcmV2aW91c1BhZ2UpKSxsKSksdGhpcy5wYWdpbmF0aW9uKCksdCgpLmNyZWF0ZUVsZW1lbnQoXCJsaVwiLHtjbGFzc05hbWU6Tn0sdCgpLmNyZWF0ZUVsZW1lbnQoXCJhXCIsZih7Y2xhc3NOYW1lOk8saHJlZjp0aGlzLmdldEVsZW1lbnRIcmVmKEMrMSksdGFiSW5kZXg6az9cIi0xXCI6XCIwXCIscm9sZTpcImJ1dHRvblwiLG9uS2V5UHJlc3M6dGhpcy5oYW5kbGVOZXh0UGFnZSxcImFyaWEtZGlzYWJsZWRcIjpFLFwiYXJpYS1sYWJlbFwiOm0scmVsOnl9LHRoaXMuZ2V0RXZlbnRMaXN0ZW5lcih0aGlzLmhhbmRsZU5leHRQYWdlKSksdikpKX19XSkmJnYoYS5wcm90b3R5cGUsciksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsXCJwcm90b3R5cGVcIix7d3JpdGFibGU6ITF9KSxzfShlLkNvbXBvbmVudCk7QyhQLFwicHJvcFR5cGVzXCIse3BhZ2VDb3VudDppKCkubnVtYmVyLmlzUmVxdWlyZWQscGFnZVJhbmdlRGlzcGxheWVkOmkoKS5udW1iZXIsbWFyZ2luUGFnZXNEaXNwbGF5ZWQ6aSgpLm51bWJlcixwcmV2aW91c0xhYmVsOmkoKS5ub2RlLHByZXZpb3VzQXJpYUxhYmVsOmkoKS5zdHJpbmcscHJldlBhZ2VSZWw6aSgpLnN0cmluZyxwcmV2UmVsOmkoKS5zdHJpbmcsbmV4dExhYmVsOmkoKS5ub2RlLG5leHRBcmlhTGFiZWw6aSgpLnN0cmluZyxuZXh0UGFnZVJlbDppKCkuc3RyaW5nLG5leHRSZWw6aSgpLnN0cmluZyxicmVha0xhYmVsOmkoKS5vbmVPZlR5cGUoW2koKS5zdHJpbmcsaSgpLm5vZGVdKSxocmVmQnVpbGRlcjppKCkuZnVuYyxocmVmQWxsQ29udHJvbHM6aSgpLmJvb2wsb25QYWdlQ2hhbmdlOmkoKS5mdW5jLG9uUGFnZUFjdGl2ZTppKCkuZnVuYyxvbkNsaWNrOmkoKS5mdW5jLGluaXRpYWxQYWdlOmkoKS5udW1iZXIsZm9yY2VQYWdlOmkoKS5udW1iZXIsZGlzYWJsZUluaXRpYWxDYWxsYmFjazppKCkuYm9vbCxjb250YWluZXJDbGFzc05hbWU6aSgpLnN0cmluZyxjbGFzc05hbWU6aSgpLnN0cmluZyxwYWdlQ2xhc3NOYW1lOmkoKS5zdHJpbmcscGFnZUxpbmtDbGFzc05hbWU6aSgpLnN0cmluZyxwYWdlTGFiZWxCdWlsZGVyOmkoKS5mdW5jLGFjdGl2ZUNsYXNzTmFtZTppKCkuc3RyaW5nLGFjdGl2ZUxpbmtDbGFzc05hbWU6aSgpLnN0cmluZyxwcmV2aW91c0NsYXNzTmFtZTppKCkuc3RyaW5nLG5leHRDbGFzc05hbWU6aSgpLnN0cmluZyxwcmV2aW91c0xpbmtDbGFzc05hbWU6aSgpLnN0cmluZyxuZXh0TGlua0NsYXNzTmFtZTppKCkuc3RyaW5nLGRpc2FibGVkQ2xhc3NOYW1lOmkoKS5zdHJpbmcsZGlzYWJsZWRMaW5rQ2xhc3NOYW1lOmkoKS5zdHJpbmcsYnJlYWtDbGFzc05hbWU6aSgpLnN0cmluZyxicmVha0xpbmtDbGFzc05hbWU6aSgpLnN0cmluZyxleHRyYUFyaWFDb250ZXh0OmkoKS5zdHJpbmcsYXJpYUxhYmVsQnVpbGRlcjppKCkuZnVuYyxldmVudExpc3RlbmVyOmkoKS5zdHJpbmcscmVuZGVyT25aZXJvUGFnZUNvdW50OmkoKS5mdW5jLHNlbGVjdGVkUGFnZVJlbDppKCkuc3RyaW5nfSksQyhQLFwiZGVmYXVsdFByb3BzXCIse3BhZ2VSYW5nZURpc3BsYXllZDoyLG1hcmdpblBhZ2VzRGlzcGxheWVkOjMsYWN0aXZlQ2xhc3NOYW1lOlwic2VsZWN0ZWRcIixwcmV2aW91c0xhYmVsOlwiUHJldmlvdXNcIixwcmV2aW91c0NsYXNzTmFtZTpcInByZXZpb3VzXCIscHJldmlvdXNBcmlhTGFiZWw6XCJQcmV2aW91cyBwYWdlXCIscHJldlBhZ2VSZWw6XCJwcmV2XCIscHJldlJlbDpcInByZXZcIixuZXh0TGFiZWw6XCJOZXh0XCIsbmV4dENsYXNzTmFtZTpcIm5leHRcIixuZXh0QXJpYUxhYmVsOlwiTmV4dCBwYWdlXCIsbmV4dFBhZ2VSZWw6XCJuZXh0XCIsbmV4dFJlbDpcIm5leHRcIixicmVha0xhYmVsOlwiLi4uXCIsZGlzYWJsZWRDbGFzc05hbWU6XCJkaXNhYmxlZFwiLGRpc2FibGVJbml0aWFsQ2FsbGJhY2s6ITEscGFnZUxhYmVsQnVpbGRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZX0sZXZlbnRMaXN0ZW5lcjpcIm9uQ2xpY2tcIixyZW5kZXJPblplcm9QYWdlQ291bnQ6dm9pZCAwLHNlbGVjdGVkUGFnZVJlbDpcImNhbm9uaWNhbFwiLGhyZWZBbGxDb250cm9sczohMX0pO2NvbnN0IGs9UH0pKCksbn0pKCkpKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJlYWN0LXBhZ2luYXRlLmpzLm1hcCIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfcmVhY3RGYXN0Q29tcGFyZSA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInJlYWN0LWZhc3QtY29tcGFyZVwiKSk7XG5cbnZhciBfcHJvcHMgPSByZXF1aXJlKFwiLi9wcm9wc1wiKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNFRUtfT05fUExBWV9FWFBJUlkgPSA1MDAwO1xuXG52YXIgUGxheWVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhQbGF5ZXIsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUGxheWVyKTtcblxuICBmdW5jdGlvbiBQbGF5ZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFBsYXllcik7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgX2FyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBfYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChfYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm1vdW50ZWRcIiwgZmFsc2UpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImlzUmVhZHlcIiwgZmFsc2UpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImlzUGxheWluZ1wiLCBmYWxzZSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaXNMb2FkaW5nXCIsIHRydWUpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImxvYWRPblJlYWR5XCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXJ0T25QbGF5XCIsIHRydWUpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInNlZWtPblBsYXlcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25EdXJhdGlvbkNhbGxlZFwiLCBmYWxzZSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlUGxheWVyTW91bnRcIiwgZnVuY3Rpb24gKHBsYXllcikge1xuICAgICAgaWYgKF90aGlzLnBsYXllcikge1xuICAgICAgICBfdGhpcy5wcm9ncmVzcygpOyAvLyBFbnN1cmUgb25Qcm9ncmVzcyBpcyBzdGlsbCBjYWxsZWQgaW4gc3RyaWN0IG1vZGVcblxuXG4gICAgICAgIHJldHVybjsgLy8gUmV0dXJuIGhlcmUgdG8gcHJldmVudCBsb2FkaW5nIHR3aWNlIGluIHN0cmljdCBtb2RlXG4gICAgICB9XG5cbiAgICAgIF90aGlzLnBsYXllciA9IHBsYXllcjtcblxuICAgICAgX3RoaXMucGxheWVyLmxvYWQoX3RoaXMucHJvcHMudXJsKTtcblxuICAgICAgX3RoaXMucHJvZ3Jlc3MoKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJnZXRJbnRlcm5hbFBsYXllclwiLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAoIV90aGlzLnBsYXllcikgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gX3RoaXMucGxheWVyW2tleV07XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicHJvZ3Jlc3NcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLnVybCAmJiBfdGhpcy5wbGF5ZXIgJiYgX3RoaXMuaXNSZWFkeSkge1xuICAgICAgICB2YXIgcGxheWVkU2Vjb25kcyA9IF90aGlzLmdldEN1cnJlbnRUaW1lKCkgfHwgMDtcblxuICAgICAgICB2YXIgbG9hZGVkU2Vjb25kcyA9IF90aGlzLmdldFNlY29uZHNMb2FkZWQoKTtcblxuICAgICAgICB2YXIgZHVyYXRpb24gPSBfdGhpcy5nZXREdXJhdGlvbigpO1xuXG4gICAgICAgIGlmIChkdXJhdGlvbikge1xuICAgICAgICAgIHZhciBwcm9ncmVzcyA9IHtcbiAgICAgICAgICAgIHBsYXllZFNlY29uZHM6IHBsYXllZFNlY29uZHMsXG4gICAgICAgICAgICBwbGF5ZWQ6IHBsYXllZFNlY29uZHMgLyBkdXJhdGlvblxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZiAobG9hZGVkU2Vjb25kcyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcHJvZ3Jlc3MubG9hZGVkU2Vjb25kcyA9IGxvYWRlZFNlY29uZHM7XG4gICAgICAgICAgICBwcm9ncmVzcy5sb2FkZWQgPSBsb2FkZWRTZWNvbmRzIC8gZHVyYXRpb247XG4gICAgICAgICAgfSAvLyBPbmx5IGNhbGwgb25Qcm9ncmVzcyBpZiB2YWx1ZXMgaGF2ZSBjaGFuZ2VkXG5cblxuICAgICAgICAgIGlmIChwcm9ncmVzcy5wbGF5ZWRTZWNvbmRzICE9PSBfdGhpcy5wcmV2UGxheWVkIHx8IHByb2dyZXNzLmxvYWRlZFNlY29uZHMgIT09IF90aGlzLnByZXZMb2FkZWQpIHtcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uUHJvZ3Jlc3MocHJvZ3Jlc3MpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzLnByZXZQbGF5ZWQgPSBwcm9ncmVzcy5wbGF5ZWRTZWNvbmRzO1xuICAgICAgICAgIF90aGlzLnByZXZMb2FkZWQgPSBwcm9ncmVzcy5sb2FkZWRTZWNvbmRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIF90aGlzLnByb2dyZXNzVGltZW91dCA9IHNldFRpbWVvdXQoX3RoaXMucHJvZ3Jlc3MsIF90aGlzLnByb3BzLnByb2dyZXNzRnJlcXVlbmN5IHx8IF90aGlzLnByb3BzLnByb2dyZXNzSW50ZXJ2YWwpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZVJlYWR5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghX3RoaXMubW91bnRlZCkgcmV0dXJuO1xuICAgICAgX3RoaXMuaXNSZWFkeSA9IHRydWU7XG4gICAgICBfdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9uUmVhZHkgPSBfdGhpcyRwcm9wcy5vblJlYWR5LFxuICAgICAgICAgIHBsYXlpbmcgPSBfdGhpcyRwcm9wcy5wbGF5aW5nLFxuICAgICAgICAgIHZvbHVtZSA9IF90aGlzJHByb3BzLnZvbHVtZSxcbiAgICAgICAgICBtdXRlZCA9IF90aGlzJHByb3BzLm11dGVkO1xuICAgICAgb25SZWFkeSgpO1xuXG4gICAgICBpZiAoIW11dGVkICYmIHZvbHVtZSAhPT0gbnVsbCkge1xuICAgICAgICBfdGhpcy5wbGF5ZXIuc2V0Vm9sdW1lKHZvbHVtZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChfdGhpcy5sb2FkT25SZWFkeSkge1xuICAgICAgICBfdGhpcy5wbGF5ZXIubG9hZChfdGhpcy5sb2FkT25SZWFkeSwgdHJ1ZSk7XG5cbiAgICAgICAgX3RoaXMubG9hZE9uUmVhZHkgPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChwbGF5aW5nKSB7XG4gICAgICAgIF90aGlzLnBsYXllci5wbGF5KCk7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmhhbmRsZUR1cmF0aW9uQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJoYW5kbGVQbGF5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmlzUGxheWluZyA9IHRydWU7XG4gICAgICBfdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBvblN0YXJ0ID0gX3RoaXMkcHJvcHMyLm9uU3RhcnQsXG4gICAgICAgICAgb25QbGF5ID0gX3RoaXMkcHJvcHMyLm9uUGxheSxcbiAgICAgICAgICBwbGF5YmFja1JhdGUgPSBfdGhpcyRwcm9wczIucGxheWJhY2tSYXRlO1xuXG4gICAgICBpZiAoX3RoaXMuc3RhcnRPblBsYXkpIHtcbiAgICAgICAgaWYgKF90aGlzLnBsYXllci5zZXRQbGF5YmFja1JhdGUgJiYgcGxheWJhY2tSYXRlICE9PSAxKSB7XG4gICAgICAgICAgX3RoaXMucGxheWVyLnNldFBsYXliYWNrUmF0ZShwbGF5YmFja1JhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgb25TdGFydCgpO1xuICAgICAgICBfdGhpcy5zdGFydE9uUGxheSA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBvblBsYXkoKTtcblxuICAgICAgaWYgKF90aGlzLnNlZWtPblBsYXkpIHtcbiAgICAgICAgX3RoaXMuc2Vla1RvKF90aGlzLnNlZWtPblBsYXkpO1xuXG4gICAgICAgIF90aGlzLnNlZWtPblBsYXkgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5oYW5kbGVEdXJhdGlvbkNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlUGF1c2VcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLmlzUGxheWluZyA9IGZhbHNlO1xuXG4gICAgICBpZiAoIV90aGlzLmlzTG9hZGluZykge1xuICAgICAgICBfdGhpcy5wcm9wcy5vblBhdXNlKGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUVuZGVkXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcyxcbiAgICAgICAgICBhY3RpdmVQbGF5ZXIgPSBfdGhpcyRwcm9wczMuYWN0aXZlUGxheWVyLFxuICAgICAgICAgIGxvb3AgPSBfdGhpcyRwcm9wczMubG9vcCxcbiAgICAgICAgICBvbkVuZGVkID0gX3RoaXMkcHJvcHMzLm9uRW5kZWQ7XG5cbiAgICAgIGlmIChhY3RpdmVQbGF5ZXIubG9vcE9uRW5kZWQgJiYgbG9vcCkge1xuICAgICAgICBfdGhpcy5zZWVrVG8oMCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghbG9vcCkge1xuICAgICAgICBfdGhpcy5pc1BsYXlpbmcgPSBmYWxzZTtcbiAgICAgICAgb25FbmRlZCgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUVycm9yXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQ7XG5cbiAgICAgIF90aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLm9uRXJyb3IuYXBwbHkoX3RoaXMkcHJvcHM0LCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUR1cmF0aW9uQ2hlY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgY2xlYXJUaW1lb3V0KF90aGlzLmR1cmF0aW9uQ2hlY2tUaW1lb3V0KTtcblxuICAgICAgdmFyIGR1cmF0aW9uID0gX3RoaXMuZ2V0RHVyYXRpb24oKTtcblxuICAgICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIGlmICghX3RoaXMub25EdXJhdGlvbkNhbGxlZCkge1xuICAgICAgICAgIF90aGlzLnByb3BzLm9uRHVyYXRpb24oZHVyYXRpb24pO1xuXG4gICAgICAgICAgX3RoaXMub25EdXJhdGlvbkNhbGxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIF90aGlzLmR1cmF0aW9uQ2hlY2tUaW1lb3V0ID0gc2V0VGltZW91dChfdGhpcy5oYW5kbGVEdXJhdGlvbkNoZWNrLCAxMDApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUxvYWRlZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBTb21ldGltZXMgd2Uga25vdyBsb2FkaW5nIGhhcyBzdG9wcGVkIGJ1dCBvblJlYWR5L29uUGxheSBhcmUgbmV2ZXIgY2FsbGVkXG4gICAgICAvLyBzbyB0aGlzIHByb3ZpZGVzIGEgd2F5IGZvciBwbGF5ZXJzIHRvIGF2b2lkIGdldHRpbmcgc3R1Y2tcbiAgICAgIF90aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFBsYXllciwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLm1vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnByb2dyZXNzVGltZW91dCk7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kdXJhdGlvbkNoZWNrVGltZW91dCk7XG5cbiAgICAgIGlmICh0aGlzLmlzUmVhZHkgJiYgdGhpcy5wcm9wcy5zdG9wT25Vbm1vdW50KSB7XG4gICAgICAgIHRoaXMucGxheWVyLnN0b3AoKTtcblxuICAgICAgICBpZiAodGhpcy5wbGF5ZXIuZGlzYWJsZVBJUCkge1xuICAgICAgICAgIHRoaXMucGxheWVyLmRpc2FibGVQSVAoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLm1vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAvLyBJZiB0aGVyZSBpc27igJl0IGEgcGxheWVyIGF2YWlsYWJsZSwgZG9u4oCZdCBkbyBhbnl0aGluZ1xuICAgICAgaWYgKCF0aGlzLnBsYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9IC8vIEludm9rZSBwbGF5ZXIgbWV0aG9kcyBiYXNlZCBvbiBjaGFuZ2VkIHByb3BzXG5cblxuICAgICAgdmFyIF90aGlzJHByb3BzNSA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgdXJsID0gX3RoaXMkcHJvcHM1LnVybCxcbiAgICAgICAgICBwbGF5aW5nID0gX3RoaXMkcHJvcHM1LnBsYXlpbmcsXG4gICAgICAgICAgdm9sdW1lID0gX3RoaXMkcHJvcHM1LnZvbHVtZSxcbiAgICAgICAgICBtdXRlZCA9IF90aGlzJHByb3BzNS5tdXRlZCxcbiAgICAgICAgICBwbGF5YmFja1JhdGUgPSBfdGhpcyRwcm9wczUucGxheWJhY2tSYXRlLFxuICAgICAgICAgIHBpcCA9IF90aGlzJHByb3BzNS5waXAsXG4gICAgICAgICAgbG9vcCA9IF90aGlzJHByb3BzNS5sb29wLFxuICAgICAgICAgIGFjdGl2ZVBsYXllciA9IF90aGlzJHByb3BzNS5hY3RpdmVQbGF5ZXIsXG4gICAgICAgICAgZGlzYWJsZURlZmVycmVkTG9hZGluZyA9IF90aGlzJHByb3BzNS5kaXNhYmxlRGVmZXJyZWRMb2FkaW5nO1xuXG4gICAgICBpZiAoISgwLCBfcmVhY3RGYXN0Q29tcGFyZVtcImRlZmF1bHRcIl0pKHByZXZQcm9wcy51cmwsIHVybCkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nICYmICFhY3RpdmVQbGF5ZXIuZm9yY2VMb2FkICYmICFkaXNhYmxlRGVmZXJyZWRMb2FkaW5nICYmICEoMCwgX3V0aWxzLmlzTWVkaWFTdHJlYW0pKHVybCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJSZWFjdFBsYXllcjogdGhlIGF0dGVtcHQgdG8gbG9hZCBcIi5jb25jYXQodXJsLCBcIiBpcyBiZWluZyBkZWZlcnJlZCB1bnRpbCB0aGUgcGxheWVyIGhhcyBsb2FkZWRcIikpO1xuICAgICAgICAgIHRoaXMubG9hZE9uUmVhZHkgPSB1cmw7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0YXJ0T25QbGF5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbkR1cmF0aW9uQ2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucGxheWVyLmxvYWQodXJsLCB0aGlzLmlzUmVhZHkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXByZXZQcm9wcy5wbGF5aW5nICYmIHBsYXlpbmcgJiYgIXRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGxheWVyLnBsYXkoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZQcm9wcy5wbGF5aW5nICYmICFwbGF5aW5nICYmIHRoaXMuaXNQbGF5aW5nKSB7XG4gICAgICAgIHRoaXMucGxheWVyLnBhdXNlKCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghcHJldlByb3BzLnBpcCAmJiBwaXAgJiYgdGhpcy5wbGF5ZXIuZW5hYmxlUElQKSB7XG4gICAgICAgIHRoaXMucGxheWVyLmVuYWJsZVBJUCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldlByb3BzLnBpcCAmJiAhcGlwICYmIHRoaXMucGxheWVyLmRpc2FibGVQSVApIHtcbiAgICAgICAgdGhpcy5wbGF5ZXIuZGlzYWJsZVBJUCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJldlByb3BzLnZvbHVtZSAhPT0gdm9sdW1lICYmIHZvbHVtZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnBsYXllci5zZXRWb2x1bWUodm9sdW1lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZQcm9wcy5tdXRlZCAhPT0gbXV0ZWQpIHtcbiAgICAgICAgaWYgKG11dGVkKSB7XG4gICAgICAgICAgdGhpcy5wbGF5ZXIubXV0ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucGxheWVyLnVubXV0ZSgpO1xuXG4gICAgICAgICAgaWYgKHZvbHVtZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gU2V0IHZvbHVtZSBuZXh0IHRpY2sgdG8gZml4IGEgYnVnIHdpdGggRGFpbHlNb3Rpb25cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnBsYXllci5zZXRWb2x1bWUodm9sdW1lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJldlByb3BzLnBsYXliYWNrUmF0ZSAhPT0gcGxheWJhY2tSYXRlICYmIHRoaXMucGxheWVyLnNldFBsYXliYWNrUmF0ZSkge1xuICAgICAgICB0aGlzLnBsYXllci5zZXRQbGF5YmFja1JhdGUocGxheWJhY2tSYXRlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZXZQcm9wcy5sb29wICE9PSBsb29wICYmIHRoaXMucGxheWVyLnNldExvb3ApIHtcbiAgICAgICAgdGhpcy5wbGF5ZXIuc2V0TG9vcChsb29wKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuaXNSZWFkeSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICBpZiAoIXRoaXMuaXNSZWFkeSkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgaWYgKCF0aGlzLmlzUmVhZHkpIHJldHVybiBudWxsO1xuICAgICAgcmV0dXJuIHRoaXMucGxheWVyLmdldFNlY29uZHNMb2FkZWQoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhhbW91bnQsIHR5cGUpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAvLyBXaGVuIHNlZWtpbmcgYmVmb3JlIHBsYXllciBpcyByZWFkeSwgc3RvcmUgdmFsdWUgYW5kIHNlZWsgbGF0ZXJcbiAgICAgIGlmICghdGhpcy5pc1JlYWR5KSB7XG4gICAgICAgIGlmIChhbW91bnQgIT09IDApIHtcbiAgICAgICAgICB0aGlzLnNlZWtPblBsYXkgPSBhbW91bnQ7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfdGhpczMuc2Vla09uUGxheSA9IG51bGw7XG4gICAgICAgICAgfSwgU0VFS19PTl9QTEFZX0VYUElSWSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBpc0ZyYWN0aW9uID0gIXR5cGUgPyBhbW91bnQgPiAwICYmIGFtb3VudCA8IDEgOiB0eXBlID09PSAnZnJhY3Rpb24nO1xuXG4gICAgICBpZiAoaXNGcmFjdGlvbikge1xuICAgICAgICAvLyBDb252ZXJ0IGZyYWN0aW9uIHRvIHNlY29uZHMgYmFzZWQgb24gZHVyYXRpb25cbiAgICAgICAgdmFyIGR1cmF0aW9uID0gdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKTtcblxuICAgICAgICBpZiAoIWR1cmF0aW9uKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZWFjdFBsYXllcjogY291bGQgbm90IHNlZWsgdXNpbmcgZnJhY3Rpb24g4oCTwqBkdXJhdGlvbiBub3QgeWV0IGF2YWlsYWJsZScpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGxheWVyLnNlZWtUbyhkdXJhdGlvbiAqIGFtb3VudCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wbGF5ZXIuc2Vla1RvKGFtb3VudCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgUGxheWVyID0gdGhpcy5wcm9wcy5hY3RpdmVQbGF5ZXI7XG5cbiAgICAgIGlmICghUGxheWVyKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChQbGF5ZXIsIF9leHRlbmRzKHt9LCB0aGlzLnByb3BzLCB7XG4gICAgICAgIG9uTW91bnQ6IHRoaXMuaGFuZGxlUGxheWVyTW91bnQsXG4gICAgICAgIG9uUmVhZHk6IHRoaXMuaGFuZGxlUmVhZHksXG4gICAgICAgIG9uUGxheTogdGhpcy5oYW5kbGVQbGF5LFxuICAgICAgICBvblBhdXNlOiB0aGlzLmhhbmRsZVBhdXNlLFxuICAgICAgICBvbkVuZGVkOiB0aGlzLmhhbmRsZUVuZGVkLFxuICAgICAgICBvbkxvYWRlZDogdGhpcy5oYW5kbGVMb2FkZWQsXG4gICAgICAgIG9uRXJyb3I6IHRoaXMuaGFuZGxlRXJyb3JcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGxheWVyO1xufShfcmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBQbGF5ZXI7XG5cbl9kZWZpbmVQcm9wZXJ0eShQbGF5ZXIsIFwiZGlzcGxheU5hbWVcIiwgJ1BsYXllcicpO1xuXG5fZGVmaW5lUHJvcGVydHkoUGxheWVyLCBcInByb3BUeXBlc1wiLCBfcHJvcHMucHJvcFR5cGVzKTtcblxuX2RlZmluZVByb3BlcnR5KFBsYXllciwgXCJkZWZhdWx0UHJvcHNcIiwgX3Byb3BzLmRlZmF1bHRQcm9wcyk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBJQ09OX1NJWkUgPSAnNjRweCc7XG52YXIgY2FjaGUgPSB7fTtcblxudmFyIFByZXZpZXcgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFByZXZpZXcsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoUHJldmlldyk7XG5cbiAgZnVuY3Rpb24gUHJldmlldygpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJldmlldyk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm1vdW50ZWRcIiwgZmFsc2UpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHtcbiAgICAgIGltYWdlOiBudWxsXG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlS2V5UHJlc3NcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XG4gICAgICAgIF90aGlzLnByb3BzLm9uQ2xpY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhQcmV2aWV3LCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMubW91bnRlZCA9IHRydWU7XG4gICAgICB0aGlzLmZldGNoSW1hZ2UodGhpcy5wcm9wcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHVybCA9IF90aGlzJHByb3BzLnVybCxcbiAgICAgICAgICBsaWdodCA9IF90aGlzJHByb3BzLmxpZ2h0O1xuXG4gICAgICBpZiAocHJldlByb3BzLnVybCAhPT0gdXJsIHx8IHByZXZQcm9wcy5saWdodCAhPT0gbGlnaHQpIHtcbiAgICAgICAgdGhpcy5mZXRjaEltYWdlKHRoaXMucHJvcHMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMubW91bnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmZXRjaEltYWdlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGZldGNoSW1hZ2UoX3JlZikge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciB1cmwgPSBfcmVmLnVybCxcbiAgICAgICAgICBsaWdodCA9IF9yZWYubGlnaHQsXG4gICAgICAgICAgb0VtYmVkVXJsID0gX3JlZi5vRW1iZWRVcmw7XG5cbiAgICAgIGlmICggLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uaXNWYWxpZEVsZW1lbnQobGlnaHQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsaWdodCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaW1hZ2U6IGxpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChjYWNoZVt1cmxdKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGltYWdlOiBjYWNoZVt1cmxdXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpbWFnZTogbnVsbFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gd2luZG93LmZldGNoKG9FbWJlZFVybC5yZXBsYWNlKCd7dXJsfScsIHVybCkpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7XG4gICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLnRodW1ibmFpbF91cmwgJiYgX3RoaXMyLm1vdW50ZWQpIHtcbiAgICAgICAgICB2YXIgaW1hZ2UgPSBkYXRhLnRodW1ibmFpbF91cmwucmVwbGFjZSgnaGVpZ2h0PTEwMCcsICdoZWlnaHQ9NDgwJyk7XG5cbiAgICAgICAgICBfdGhpczIuc2V0U3RhdGUoe1xuICAgICAgICAgICAgaW1hZ2U6IGltYWdlXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYWNoZVt1cmxdID0gaW1hZ2U7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMiA9IHRoaXMucHJvcHMsXG4gICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wczIubGlnaHQsXG4gICAgICAgICAgb25DbGljayA9IF90aGlzJHByb3BzMi5vbkNsaWNrLFxuICAgICAgICAgIHBsYXlJY29uID0gX3RoaXMkcHJvcHMyLnBsYXlJY29uLFxuICAgICAgICAgIHByZXZpZXdUYWJJbmRleCA9IF90aGlzJHByb3BzMi5wcmV2aWV3VGFiSW5kZXg7XG4gICAgICB2YXIgaW1hZ2UgPSB0aGlzLnN0YXRlLmltYWdlO1xuXG4gICAgICB2YXIgaXNFbGVtZW50ID0gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uaXNWYWxpZEVsZW1lbnQobGlnaHQpO1xuXG4gICAgICB2YXIgZmxleENlbnRlciA9IHtcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInXG4gICAgICB9O1xuICAgICAgdmFyIHN0eWxlcyA9IHtcbiAgICAgICAgcHJldmlldzogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGltYWdlICYmICFpc0VsZW1lbnQgPyBcInVybChcIi5jb25jYXQoaW1hZ2UsIFwiKVwiKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBiYWNrZ3JvdW5kU2l6ZTogJ2NvdmVyJyxcbiAgICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICdjZW50ZXInLFxuICAgICAgICAgIGN1cnNvcjogJ3BvaW50ZXInXG4gICAgICAgIH0sIGZsZXhDZW50ZXIpLFxuICAgICAgICBzaGFkb3c6IF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIGJhY2tncm91bmQ6ICdyYWRpYWwtZ3JhZGllbnQocmdiKDAsIDAsIDAsIDAuMyksIHJnYmEoMCwgMCwgMCwgMCkgNjAlKScsXG4gICAgICAgICAgYm9yZGVyUmFkaXVzOiBJQ09OX1NJWkUsXG4gICAgICAgICAgd2lkdGg6IElDT05fU0laRSxcbiAgICAgICAgICBoZWlnaHQ6IElDT05fU0laRSxcbiAgICAgICAgICBwb3NpdGlvbjogaXNFbGVtZW50ID8gJ2Fic29sdXRlJyA6IHVuZGVmaW5lZFxuICAgICAgICB9LCBmbGV4Q2VudGVyKSxcbiAgICAgICAgcGxheUljb246IHtcbiAgICAgICAgICBib3JkZXJTdHlsZTogJ3NvbGlkJyxcbiAgICAgICAgICBib3JkZXJXaWR0aDogJzE2cHggMCAxNnB4IDI2cHgnLFxuICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgd2hpdGUnLFxuICAgICAgICAgIG1hcmdpbkxlZnQ6ICc3cHgnXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHZhciBkZWZhdWx0UGxheUljb24gPSAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgc3R5bGU6IHN0eWxlcy5zaGFkb3csXG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWFjdC1wbGF5ZXJfX3NoYWRvd1wiXG4gICAgICB9LCAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgc3R5bGU6IHN0eWxlcy5wbGF5SWNvbixcbiAgICAgICAgY2xhc3NOYW1lOiBcInJlYWN0LXBsYXllcl9fcGxheS1pY29uXCJcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBzdHlsZTogc3R5bGVzLnByZXZpZXcsXG4gICAgICAgIGNsYXNzTmFtZTogXCJyZWFjdC1wbGF5ZXJfX3ByZXZpZXdcIixcbiAgICAgICAgb25DbGljazogb25DbGljayxcbiAgICAgICAgdGFiSW5kZXg6IHByZXZpZXdUYWJJbmRleCxcbiAgICAgICAgb25LZXlQcmVzczogdGhpcy5oYW5kbGVLZXlQcmVzc1xuICAgICAgfSwgaXNFbGVtZW50ID8gbGlnaHQgOiBudWxsLCBwbGF5SWNvbiB8fCBkZWZhdWx0UGxheUljb24pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBQcmV2aWV3O1xufShfcmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBQcmV2aWV3OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jcmVhdGVSZWFjdFBsYXllciA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfZGVlcG1lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiZGVlcG1lcmdlXCIpKTtcblxudmFyIF9tZW1vaXplT25lID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwibWVtb2l6ZS1vbmVcIikpO1xuXG52YXIgX3JlYWN0RmFzdENvbXBhcmUgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJyZWFjdC1mYXN0LWNvbXBhcmVcIikpO1xuXG52YXIgX3Byb3BzID0gcmVxdWlyZShcIi4vcHJvcHNcIik7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi91dGlsc1wiKTtcblxudmFyIF9QbGF5ZXIzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9QbGF5ZXJcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyByZXR1cm4gX2FycmF5V2l0aG91dEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIpIHx8IF9ub25JdGVyYWJsZVNwcmVhZCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkoaXRlcikgeyBpZiAodHlwZW9mIFN5bWJvbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGl0ZXIpKSByZXR1cm4gQXJyYXkuZnJvbShpdGVyKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShhcnIpOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVTdXBlcihEZXJpdmVkKSB7IHZhciBoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpOyByZXR1cm4gZnVuY3Rpb24gX2NyZWF0ZVN1cGVySW50ZXJuYWwoKSB7IHZhciBTdXBlciA9IF9nZXRQcm90b3R5cGVPZihEZXJpdmVkKSwgcmVzdWx0OyBpZiAoaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCkgeyB2YXIgTmV3VGFyZ2V0ID0gX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yOyByZXN1bHQgPSBSZWZsZWN0LmNvbnN0cnVjdChTdXBlciwgYXJndW1lbnRzLCBOZXdUYXJnZXQpOyB9IGVsc2UgeyByZXN1bHQgPSBTdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9IHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCByZXN1bHQpOyB9OyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKSB7IGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhUmVmbGVjdC5jb25zdHJ1Y3QpIHJldHVybiBmYWxzZTsgaWYgKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pIHJldHVybiBmYWxzZTsgaWYgKHR5cGVvZiBQcm94eSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdHJ1ZTsgdHJ5IHsgRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLCBbXSwgZnVuY3Rpb24gKCkge30pKTsgcmV0dXJuIHRydWU7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIGZhbHNlOyB9IH1cblxuZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKG8pIHsgcmV0dXJuIG8uX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihvKTsgfTsgcmV0dXJuIF9nZXRQcm90b3R5cGVPZihvKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG52YXIgUHJldmlldyA9IC8qI19fUFVSRV9fKi8oMCwgX3JlYWN0LmxhenkpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKCcuL1ByZXZpZXcnKSk7XG4gIH0pO1xufSk7XG52YXIgSVNfQlJPV1NFUiA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kb2N1bWVudDtcbnZhciBJU19HTE9CQUwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwud2luZG93ICYmIGdsb2JhbC53aW5kb3cuZG9jdW1lbnQ7XG52YXIgU1VQUE9SVEVEX1BST1BTID0gT2JqZWN0LmtleXMoX3Byb3BzLnByb3BUeXBlcyk7IC8vIFJldHVybiBudWxsIHdoZW4gcmVuZGVyaW5nIG9uIHRoZSBzZXJ2ZXJcbi8vIGFzIFN1c3BlbnNlIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XG5cbnZhciBVbml2ZXJzYWxTdXNwZW5zZSA9IElTX0JST1dTRVIgfHwgSVNfR0xPQkFMID8gX3JlYWN0LlN1c3BlbnNlIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG52YXIgY3VzdG9tUGxheWVycyA9IFtdO1xuXG52YXIgY3JlYXRlUmVhY3RQbGF5ZXIgPSBmdW5jdGlvbiBjcmVhdGVSZWFjdFBsYXllcihwbGF5ZXJzLCBmYWxsYmFjaykge1xuICB2YXIgX2NsYXNzLCBfdGVtcDtcblxuICByZXR1cm4gX3RlbXAgPSBfY2xhc3MgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoUmVhY3RQbGF5ZXIsIF9Db21wb25lbnQpO1xuXG4gICAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihSZWFjdFBsYXllcik7XG5cbiAgICBmdW5jdGlvbiBSZWFjdFBsYXllcigpIHtcbiAgICAgIHZhciBfdGhpcztcblxuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0UGxheWVyKTtcblxuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInN0YXRlXCIsIHtcbiAgICAgICAgc2hvd1ByZXZpZXc6ICEhX3RoaXMucHJvcHMubGlnaHRcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVmZXJlbmNlc1wiLCB7XG4gICAgICAgIHdyYXBwZXI6IGZ1bmN0aW9uIHdyYXBwZXIoX3dyYXBwZXIpIHtcbiAgICAgICAgICBfdGhpcy53cmFwcGVyID0gX3dyYXBwZXI7XG4gICAgICAgIH0sXG4gICAgICAgIHBsYXllcjogZnVuY3Rpb24gcGxheWVyKF9wbGF5ZXIpIHtcbiAgICAgICAgICBfdGhpcy5wbGF5ZXIgPSBfcGxheWVyO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUNsaWNrUHJldmlld1wiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgc2hvd1ByZXZpZXc6IGZhbHNlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIF90aGlzLnByb3BzLm9uQ2xpY2tQcmV2aWV3KGUpO1xuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzaG93UHJldmlld1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBzaG93UHJldmlldzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZ2V0RHVyYXRpb25cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzLnBsYXllcikgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZ2V0Q3VycmVudFRpbWVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIV90aGlzLnBsYXllcikgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBfdGhpcy5wbGF5ZXIuZ2V0Q3VycmVudFRpbWUoKTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZ2V0U2Vjb25kc0xvYWRlZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghX3RoaXMucGxheWVyKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzLnBsYXllci5nZXRTZWNvbmRzTG9hZGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImdldEludGVybmFsUGxheWVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3BsYXllcic7XG4gICAgICAgIGlmICghX3RoaXMucGxheWVyKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIF90aGlzLnBsYXllci5nZXRJbnRlcm5hbFBsYXllcihrZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzZWVrVG9cIiwgZnVuY3Rpb24gKGZyYWN0aW9uLCB0eXBlKSB7XG4gICAgICAgIGlmICghX3RoaXMucGxheWVyKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBfdGhpcy5wbGF5ZXIuc2Vla1RvKGZyYWN0aW9uLCB0eXBlKTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlUmVhZHlcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICBfdGhpcy5wcm9wcy5vblJlYWR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpKTtcbiAgICAgIH0pO1xuXG4gICAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZ2V0QWN0aXZlUGxheWVyXCIsICgwLCBfbWVtb2l6ZU9uZVtcImRlZmF1bHRcIl0pKGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgICAgZm9yICh2YXIgX2kgPSAwLCBfYXJyID0gW10uY29uY2F0KGN1c3RvbVBsYXllcnMsIF90b0NvbnN1bWFibGVBcnJheShwbGF5ZXJzKSk7IF9pIDwgX2Fyci5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICB2YXIgcGxheWVyID0gX2FycltfaV07XG5cbiAgICAgICAgICBpZiAocGxheWVyLmNhblBsYXkodXJsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHBsYXllcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pKTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImdldENvbmZpZ1wiLCAoMCwgX21lbW9pemVPbmVbXCJkZWZhdWx0XCJdKShmdW5jdGlvbiAodXJsLCBrZXkpIHtcbiAgICAgICAgdmFyIGNvbmZpZyA9IF90aGlzLnByb3BzLmNvbmZpZztcbiAgICAgICAgcmV0dXJuIF9kZWVwbWVyZ2VbXCJkZWZhdWx0XCJdLmFsbChbX3Byb3BzLmRlZmF1bHRQcm9wcy5jb25maWcsIF9wcm9wcy5kZWZhdWx0UHJvcHMuY29uZmlnW2tleV0gfHwge30sIGNvbmZpZywgY29uZmlnW2tleV0gfHwge31dKTtcbiAgICAgIH0pKTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImdldEF0dHJpYnV0ZXNcIiwgKDAsIF9tZW1vaXplT25lW1wiZGVmYXVsdFwiXSkoZnVuY3Rpb24gKHVybCkge1xuICAgICAgICByZXR1cm4gKDAsIF91dGlscy5vbWl0KShfdGhpcy5wcm9wcywgU1VQUE9SVEVEX1BST1BTKTtcbiAgICAgIH0pKTtcblxuICAgICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlbmRlckFjdGl2ZVBsYXllclwiLCBmdW5jdGlvbiAodXJsKSB7XG4gICAgICAgIGlmICghdXJsKSByZXR1cm4gbnVsbDtcblxuICAgICAgICB2YXIgcGxheWVyID0gX3RoaXMuZ2V0QWN0aXZlUGxheWVyKHVybCk7XG5cbiAgICAgICAgaWYgKCFwbGF5ZXIpIHJldHVybiBudWxsO1xuXG4gICAgICAgIHZhciBjb25maWcgPSBfdGhpcy5nZXRDb25maWcodXJsLCBwbGF5ZXIua2V5KTtcblxuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChfUGxheWVyM1tcImRlZmF1bHRcIl0sIF9leHRlbmRzKHt9LCBfdGhpcy5wcm9wcywge1xuICAgICAgICAgIGtleTogcGxheWVyLmtleSxcbiAgICAgICAgICByZWY6IF90aGlzLnJlZmVyZW5jZXMucGxheWVyLFxuICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgIGFjdGl2ZVBsYXllcjogcGxheWVyLmxhenlQbGF5ZXIgfHwgcGxheWVyLFxuICAgICAgICAgIG9uUmVhZHk6IF90aGlzLmhhbmRsZVJlYWR5XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFJlYWN0UGxheWVyLCBbe1xuICAgICAga2V5OiBcInNob3VsZENvbXBvbmVudFVwZGF0ZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNob3VsZENvbXBvbmVudFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSkge1xuICAgICAgICByZXR1cm4gISgwLCBfcmVhY3RGYXN0Q29tcGFyZVtcImRlZmF1bHRcIl0pKHRoaXMucHJvcHMsIG5leHRQcm9wcykgfHwgISgwLCBfcmVhY3RGYXN0Q29tcGFyZVtcImRlZmF1bHRcIl0pKHRoaXMuc3RhdGUsIG5leHRTdGF0ZSk7XG4gICAgICB9XG4gICAgfSwge1xuICAgICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgICAgdmFyIGxpZ2h0ID0gdGhpcy5wcm9wcy5saWdodDtcblxuICAgICAgICBpZiAoIXByZXZQcm9wcy5saWdodCAmJiBsaWdodCkge1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgICAgc2hvd1ByZXZpZXc6IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcmV2UHJvcHMubGlnaHQgJiYgIWxpZ2h0KSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICBzaG93UHJldmlldzogZmFsc2VcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJQcmV2aWV3XCIsXG4gICAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyUHJldmlldyh1cmwpIHtcbiAgICAgICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgbGlnaHQgPSBfdGhpcyRwcm9wcy5saWdodCxcbiAgICAgICAgICAgIHBsYXlJY29uID0gX3RoaXMkcHJvcHMucGxheUljb24sXG4gICAgICAgICAgICBwcmV2aWV3VGFiSW5kZXggPSBfdGhpcyRwcm9wcy5wcmV2aWV3VGFiSW5kZXgsXG4gICAgICAgICAgICBvRW1iZWRVcmwgPSBfdGhpcyRwcm9wcy5vRW1iZWRVcmw7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFByZXZpZXcsIHtcbiAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICBsaWdodDogbGlnaHQsXG4gICAgICAgICAgcGxheUljb246IHBsYXlJY29uLFxuICAgICAgICAgIHByZXZpZXdUYWJJbmRleDogcHJldmlld1RhYkluZGV4LFxuICAgICAgICAgIG9FbWJlZFVybDogb0VtYmVkVXJsLFxuICAgICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2tQcmV2aWV3XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIHtcbiAgICAgIGtleTogXCJyZW5kZXJcIixcbiAgICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgICAgdXJsID0gX3RoaXMkcHJvcHMyLnVybCxcbiAgICAgICAgICAgIHN0eWxlID0gX3RoaXMkcHJvcHMyLnN0eWxlLFxuICAgICAgICAgICAgd2lkdGggPSBfdGhpcyRwcm9wczIud2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQgPSBfdGhpcyRwcm9wczIuaGVpZ2h0LFxuICAgICAgICAgICAgZmFsbGJhY2sgPSBfdGhpcyRwcm9wczIuZmFsbGJhY2ssXG4gICAgICAgICAgICBXcmFwcGVyID0gX3RoaXMkcHJvcHMyLndyYXBwZXI7XG4gICAgICAgIHZhciBzaG93UHJldmlldyA9IHRoaXMuc3RhdGUuc2hvd1ByZXZpZXc7XG4gICAgICAgIHZhciBhdHRyaWJ1dGVzID0gdGhpcy5nZXRBdHRyaWJ1dGVzKHVybCk7XG4gICAgICAgIHZhciB3cmFwcGVyUmVmID0gdHlwZW9mIFdyYXBwZXIgPT09ICdzdHJpbmcnID8gdGhpcy5yZWZlcmVuY2VzLndyYXBwZXIgOiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFdyYXBwZXIsIF9leHRlbmRzKHtcbiAgICAgICAgICByZWY6IHdyYXBwZXJSZWYsXG4gICAgICAgICAgc3R5bGU6IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgc3R5bGUpLCB7fSwge1xuICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiBoZWlnaHRcbiAgICAgICAgICB9KVxuICAgICAgICB9LCBhdHRyaWJ1dGVzKSwgLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChVbml2ZXJzYWxTdXNwZW5zZSwge1xuICAgICAgICAgIGZhbGxiYWNrOiBmYWxsYmFja1xuICAgICAgICB9LCBzaG93UHJldmlldyA/IHRoaXMucmVuZGVyUHJldmlldyh1cmwpIDogdGhpcy5yZW5kZXJBY3RpdmVQbGF5ZXIodXJsKSkpO1xuICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBSZWFjdFBsYXllcjtcbiAgfShfcmVhY3QuQ29tcG9uZW50KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJkaXNwbGF5TmFtZVwiLCAnUmVhY3RQbGF5ZXInKSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJwcm9wVHlwZXNcIiwgX3Byb3BzLnByb3BUeXBlcyksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiZGVmYXVsdFByb3BzXCIsIF9wcm9wcy5kZWZhdWx0UHJvcHMpLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcImFkZEN1c3RvbVBsYXllclwiLCBmdW5jdGlvbiAocGxheWVyKSB7XG4gICAgY3VzdG9tUGxheWVycy5wdXNoKHBsYXllcik7XG4gIH0pLCBfZGVmaW5lUHJvcGVydHkoX2NsYXNzLCBcInJlbW92ZUN1c3RvbVBsYXllcnNcIiwgZnVuY3Rpb24gKCkge1xuICAgIGN1c3RvbVBsYXllcnMubGVuZ3RoID0gMDtcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfY2xhc3MsIFwiY2FuUGxheVwiLCBmdW5jdGlvbiAodXJsKSB7XG4gICAgZm9yICh2YXIgX2kyID0gMCwgX2FycjIgPSBbXS5jb25jYXQoY3VzdG9tUGxheWVycywgX3RvQ29uc3VtYWJsZUFycmF5KHBsYXllcnMpKTsgX2kyIDwgX2FycjIubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9QbGF5ZXIgPSBfYXJyMltfaTJdO1xuXG4gICAgICBpZiAoX1BsYXllci5jYW5QbGF5KHVybCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KSwgX2RlZmluZVByb3BlcnR5KF9jbGFzcywgXCJjYW5FbmFibGVQSVBcIiwgZnVuY3Rpb24gKHVybCkge1xuICAgIGZvciAodmFyIF9pMyA9IDAsIF9hcnIzID0gW10uY29uY2F0KGN1c3RvbVBsYXllcnMsIF90b0NvbnN1bWFibGVBcnJheShwbGF5ZXJzKSk7IF9pMyA8IF9hcnIzLmxlbmd0aDsgX2kzKyspIHtcbiAgICAgIHZhciBfUGxheWVyMiA9IF9hcnIzW19pM107XG5cbiAgICAgIGlmIChfUGxheWVyMi5jYW5FbmFibGVQSVAgJiYgX1BsYXllcjIuY2FuRW5hYmxlUElQKHVybCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KSwgX3RlbXA7XG59O1xuXG5leHBvcnRzLmNyZWF0ZVJlYWN0UGxheWVyID0gY3JlYXRlUmVhY3RQbGF5ZXI7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9wbGF5ZXJzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9wbGF5ZXJzXCIpKTtcblxudmFyIF9SZWFjdFBsYXllciA9IHJlcXVpcmUoXCIuL1JlYWN0UGxheWVyXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxuLy8gRmFsbCBiYWNrIHRvIEZpbGVQbGF5ZXIgaWYgbm90aGluZyBlbHNlIGNhbiBwbGF5IHRoZSBVUkxcbnZhciBmYWxsYmFjayA9IF9wbGF5ZXJzW1wiZGVmYXVsdFwiXVtfcGxheWVyc1tcImRlZmF1bHRcIl0ubGVuZ3RoIC0gMV07XG5cbnZhciBfZGVmYXVsdCA9ICgwLCBfUmVhY3RQbGF5ZXIuY3JlYXRlUmVhY3RQbGF5ZXIpKF9wbGF5ZXJzW1wiZGVmYXVsdFwiXSwgZmFsbGJhY2spO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IF9kZWZhdWx0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5jYW5QbGF5ID0gZXhwb3J0cy5GTFZfRVhURU5TSU9OUyA9IGV4cG9ydHMuREFTSF9FWFRFTlNJT05TID0gZXhwb3J0cy5ITFNfRVhURU5TSU9OUyA9IGV4cG9ydHMuVklERU9fRVhURU5TSU9OUyA9IGV4cG9ydHMuQVVESU9fRVhURU5TSU9OUyA9IGV4cG9ydHMuTUFUQ0hfVVJMX0tBTFRVUkEgPSBleHBvcnRzLk1BVENIX1VSTF9WSURZQVJEID0gZXhwb3J0cy5NQVRDSF9VUkxfTUlYQ0xPVUQgPSBleHBvcnRzLk1BVENIX1VSTF9EQUlMWU1PVElPTiA9IGV4cG9ydHMuTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMID0gZXhwb3J0cy5NQVRDSF9VUkxfVFdJVENIX1ZJREVPID0gZXhwb3J0cy5NQVRDSF9VUkxfV0lTVElBID0gZXhwb3J0cy5NQVRDSF9VUkxfU1RSRUFNQUJMRSA9IGV4cG9ydHMuTUFUQ0hfVVJMX0ZBQ0VCT09LX1dBVENIID0gZXhwb3J0cy5NQVRDSF9VUkxfRkFDRUJPT0sgPSBleHBvcnRzLk1BVENIX1VSTF9WSU1FTyA9IGV4cG9ydHMuTUFUQ0hfVVJMX1NPVU5EQ0xPVUQgPSBleHBvcnRzLk1BVENIX1VSTF9ZT1VUVUJFID0gdm9pZCAwO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4vdXRpbHNcIik7XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdDsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgb1tTeW1ib2wuaXRlcmF0b3JdID09IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkobykgfHwgKGl0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8pKSB8fCBhbGxvd0FycmF5TGlrZSAmJiBvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgeyBpZiAoaXQpIG8gPSBpdDsgdmFyIGkgPSAwOyB2YXIgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgaWYgKGkgPj0gby5sZW5ndGgpIHJldHVybiB7IGRvbmU6IHRydWUgfTsgcmV0dXJuIHsgZG9uZTogZmFsc2UsIHZhbHVlOiBvW2krK10gfTsgfSwgZTogZnVuY3Rpb24gZShfZSkgeyB0aHJvdyBfZTsgfSwgZjogRiB9OyB9IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfSB2YXIgbm9ybWFsQ29tcGxldGlvbiA9IHRydWUsIGRpZEVyciA9IGZhbHNlLCBlcnI7IHJldHVybiB7IHM6IGZ1bmN0aW9uIHMoKSB7IGl0ID0gb1tTeW1ib2wuaXRlcmF0b3JdKCk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXRbXCJyZXR1cm5cIl0gIT0gbnVsbCkgaXRbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbnZhciBNQVRDSF9VUkxfWU9VVFVCRSA9IC8oPzp5b3V0dVxcLmJlXFwvfHlvdXR1YmUoPzotbm9jb29raWUpP1xcLmNvbVxcLyg/OmVtYmVkXFwvfHZcXC98d2F0Y2hcXC98d2F0Y2hcXD92PXx3YXRjaFxcPy4rJnY9fHNob3J0c1xcLykpKChcXHd8LSl7MTF9KXx5b3V0dWJlXFwuY29tXFwvcGxheWxpc3RcXD9saXN0PXx5b3V0dWJlXFwuY29tXFwvdXNlclxcLy87XG5leHBvcnRzLk1BVENIX1VSTF9ZT1VUVUJFID0gTUFUQ0hfVVJMX1lPVVRVQkU7XG52YXIgTUFUQ0hfVVJMX1NPVU5EQ0xPVUQgPSAvKD86c291bmRjbG91ZFxcLmNvbXxzbmRcXC5zYylcXC9bXi5dKyQvO1xuZXhwb3J0cy5NQVRDSF9VUkxfU09VTkRDTE9VRCA9IE1BVENIX1VSTF9TT1VORENMT1VEO1xudmFyIE1BVENIX1VSTF9WSU1FTyA9IC92aW1lb1xcLmNvbVxcLyg/IXByb2dyZXNzaXZlX3JlZGlyZWN0KS4rLztcbmV4cG9ydHMuTUFUQ0hfVVJMX1ZJTUVPID0gTUFUQ0hfVVJMX1ZJTUVPO1xudmFyIE1BVENIX1VSTF9GQUNFQk9PSyA9IC9eaHR0cHM/OlxcL1xcLyh3d3dcXC4pP2ZhY2Vib29rXFwuY29tLipcXC8odmlkZW8ocyk/fHdhdGNofHN0b3J5KShcXC5waHA/fFxcLykuKyQvO1xuZXhwb3J0cy5NQVRDSF9VUkxfRkFDRUJPT0sgPSBNQVRDSF9VUkxfRkFDRUJPT0s7XG52YXIgTUFUQ0hfVVJMX0ZBQ0VCT09LX1dBVENIID0gL15odHRwcz86XFwvXFwvZmJcXC53YXRjaFxcLy4rJC87XG5leHBvcnRzLk1BVENIX1VSTF9GQUNFQk9PS19XQVRDSCA9IE1BVENIX1VSTF9GQUNFQk9PS19XQVRDSDtcbnZhciBNQVRDSF9VUkxfU1RSRUFNQUJMRSA9IC9zdHJlYW1hYmxlXFwuY29tXFwvKFthLXowLTldKykkLztcbmV4cG9ydHMuTUFUQ0hfVVJMX1NUUkVBTUFCTEUgPSBNQVRDSF9VUkxfU1RSRUFNQUJMRTtcbnZhciBNQVRDSF9VUkxfV0lTVElBID0gLyg/Ondpc3RpYVxcLig/OmNvbXxuZXQpfHdpXFwuc3QpXFwvKD86bWVkaWFzfGVtYmVkKVxcLyg/OmlmcmFtZVxcLyk/KC4qKSQvO1xuZXhwb3J0cy5NQVRDSF9VUkxfV0lTVElBID0gTUFUQ0hfVVJMX1dJU1RJQTtcbnZhciBNQVRDSF9VUkxfVFdJVENIX1ZJREVPID0gLyg/Ond3d1xcLnxnb1xcLik/dHdpdGNoXFwudHZcXC92aWRlb3NcXC8oXFxkKykoJHxcXD8pLztcbmV4cG9ydHMuTUFUQ0hfVVJMX1RXSVRDSF9WSURFTyA9IE1BVENIX1VSTF9UV0lUQ0hfVklERU87XG52YXIgTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMID0gLyg/Ond3d1xcLnxnb1xcLik/dHdpdGNoXFwudHZcXC8oW2EtekEtWjAtOV9dKykoJHxcXD8pLztcbmV4cG9ydHMuTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMID0gTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMO1xudmFyIE1BVENIX1VSTF9EQUlMWU1PVElPTiA9IC9eKD86KD86aHR0cHM/KTopPyg/OlxcL1xcLyk/KD86d3d3XFwuKT8oPzooPzpkYWlseW1vdGlvblxcLmNvbSg/OlxcL2VtYmVkKT9cXC92aWRlbyl8ZGFpXFwubHkpXFwvKFthLXpBLVowLTldKykoPzpfW1xcd18tXSspPyQvO1xuZXhwb3J0cy5NQVRDSF9VUkxfREFJTFlNT1RJT04gPSBNQVRDSF9VUkxfREFJTFlNT1RJT047XG52YXIgTUFUQ0hfVVJMX01JWENMT1VEID0gL21peGNsb3VkXFwuY29tXFwvKFteL10rXFwvW14vXSspLztcbmV4cG9ydHMuTUFUQ0hfVVJMX01JWENMT1VEID0gTUFUQ0hfVVJMX01JWENMT1VEO1xudmFyIE1BVENIX1VSTF9WSURZQVJEID0gL3ZpZHlhcmQuY29tXFwvKD86d2F0Y2hcXC8pPyhbYS16QS1aMC05LV9dKykvO1xuZXhwb3J0cy5NQVRDSF9VUkxfVklEWUFSRCA9IE1BVENIX1VSTF9WSURZQVJEO1xudmFyIE1BVENIX1VSTF9LQUxUVVJBID0gL15odHRwcz86XFwvXFwvW2EtekEtWl0rXFwua2FsdHVyYS4oY29tfG9yZylcXC9wXFwvKFswLTldKylcXC9zcFxcLyhbMC05XSspMDBcXC9lbWJlZElmcmFtZUpzXFwvdWljb25mX2lkXFwvKFswLTldKylcXC9wYXJ0bmVyX2lkXFwvKFswLTldKykoLiopZW50cnlfaWQuKFthLXpBLVowLTktX10uKikkLztcbmV4cG9ydHMuTUFUQ0hfVVJMX0tBTFRVUkEgPSBNQVRDSF9VUkxfS0FMVFVSQTtcbnZhciBBVURJT19FWFRFTlNJT05TID0gL1xcLihtNGF8bTRifG1wNGF8bXBnYXxtcDJ8bXAyYXxtcDN8bTJhfG0zYXx3YXZ8d2ViYXxhYWN8b2dhfHNweCkoJHxcXD8pL2k7XG5leHBvcnRzLkFVRElPX0VYVEVOU0lPTlMgPSBBVURJT19FWFRFTlNJT05TO1xudmFyIFZJREVPX0VYVEVOU0lPTlMgPSAvXFwuKG1wNHxvZ1tndl18d2VibXxtb3Z8bTR2KSgjdD1bLFxcZCtdKyk/KCR8XFw/KS9pO1xuZXhwb3J0cy5WSURFT19FWFRFTlNJT05TID0gVklERU9fRVhURU5TSU9OUztcbnZhciBITFNfRVhURU5TSU9OUyA9IC9cXC4obTN1OCkoJHxcXD8pL2k7XG5leHBvcnRzLkhMU19FWFRFTlNJT05TID0gSExTX0VYVEVOU0lPTlM7XG52YXIgREFTSF9FWFRFTlNJT05TID0gL1xcLihtcGQpKCR8XFw/KS9pO1xuZXhwb3J0cy5EQVNIX0VYVEVOU0lPTlMgPSBEQVNIX0VYVEVOU0lPTlM7XG52YXIgRkxWX0VYVEVOU0lPTlMgPSAvXFwuKGZsdikoJHxcXD8pL2k7XG5leHBvcnRzLkZMVl9FWFRFTlNJT05TID0gRkxWX0VYVEVOU0lPTlM7XG5cbnZhciBjYW5QbGF5RmlsZSA9IGZ1bmN0aW9uIGNhblBsYXlGaWxlKHVybCkge1xuICBpZiAodXJsIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodXJsKSxcbiAgICAgICAgX3N0ZXA7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcC52YWx1ZTtcblxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnICYmIGNhblBsYXlGaWxlKGl0ZW0pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2FuUGxheUZpbGUoaXRlbS5zcmMpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIF9pdGVyYXRvci5lKGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIF9pdGVyYXRvci5mKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCgwLCBfdXRpbHMuaXNNZWRpYVN0cmVhbSkodXJsKSB8fCAoMCwgX3V0aWxzLmlzQmxvYlVybCkodXJsKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIEFVRElPX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IFZJREVPX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IEhMU19FWFRFTlNJT05TLnRlc3QodXJsKSB8fCBEQVNIX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IEZMVl9FWFRFTlNJT05TLnRlc3QodXJsKTtcbn07XG5cbnZhciBjYW5QbGF5ID0ge1xuICB5b3V0dWJlOiBmdW5jdGlvbiB5b3V0dWJlKHVybCkge1xuICAgIGlmICh1cmwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIHVybC5ldmVyeShmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gTUFUQ0hfVVJMX1lPVVRVQkUudGVzdChpdGVtKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBNQVRDSF9VUkxfWU9VVFVCRS50ZXN0KHVybCk7XG4gIH0sXG4gIHNvdW5kY2xvdWQ6IGZ1bmN0aW9uIHNvdW5kY2xvdWQodXJsKSB7XG4gICAgcmV0dXJuIE1BVENIX1VSTF9TT1VORENMT1VELnRlc3QodXJsKSAmJiAhQVVESU9fRVhURU5TSU9OUy50ZXN0KHVybCk7XG4gIH0sXG4gIHZpbWVvOiBmdW5jdGlvbiB2aW1lbyh1cmwpIHtcbiAgICByZXR1cm4gTUFUQ0hfVVJMX1ZJTUVPLnRlc3QodXJsKSAmJiAhVklERU9fRVhURU5TSU9OUy50ZXN0KHVybCkgJiYgIUhMU19FWFRFTlNJT05TLnRlc3QodXJsKTtcbiAgfSxcbiAgZmFjZWJvb2s6IGZ1bmN0aW9uIGZhY2Vib29rKHVybCkge1xuICAgIHJldHVybiBNQVRDSF9VUkxfRkFDRUJPT0sudGVzdCh1cmwpIHx8IE1BVENIX1VSTF9GQUNFQk9PS19XQVRDSC50ZXN0KHVybCk7XG4gIH0sXG4gIHN0cmVhbWFibGU6IGZ1bmN0aW9uIHN0cmVhbWFibGUodXJsKSB7XG4gICAgcmV0dXJuIE1BVENIX1VSTF9TVFJFQU1BQkxFLnRlc3QodXJsKTtcbiAgfSxcbiAgd2lzdGlhOiBmdW5jdGlvbiB3aXN0aWEodXJsKSB7XG4gICAgcmV0dXJuIE1BVENIX1VSTF9XSVNUSUEudGVzdCh1cmwpO1xuICB9LFxuICB0d2l0Y2g6IGZ1bmN0aW9uIHR3aXRjaCh1cmwpIHtcbiAgICByZXR1cm4gTUFUQ0hfVVJMX1RXSVRDSF9WSURFTy50ZXN0KHVybCkgfHwgTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMLnRlc3QodXJsKTtcbiAgfSxcbiAgZGFpbHltb3Rpb246IGZ1bmN0aW9uIGRhaWx5bW90aW9uKHVybCkge1xuICAgIHJldHVybiBNQVRDSF9VUkxfREFJTFlNT1RJT04udGVzdCh1cmwpO1xuICB9LFxuICBtaXhjbG91ZDogZnVuY3Rpb24gbWl4Y2xvdWQodXJsKSB7XG4gICAgcmV0dXJuIE1BVENIX1VSTF9NSVhDTE9VRC50ZXN0KHVybCk7XG4gIH0sXG4gIHZpZHlhcmQ6IGZ1bmN0aW9uIHZpZHlhcmQodXJsKSB7XG4gICAgcmV0dXJuIE1BVENIX1VSTF9WSURZQVJELnRlc3QodXJsKTtcbiAgfSxcbiAga2FsdHVyYTogZnVuY3Rpb24ga2FsdHVyYSh1cmwpIHtcbiAgICByZXR1cm4gTUFUQ0hfVVJMX0tBTFRVUkEudGVzdCh1cmwpO1xuICB9LFxuICBmaWxlOiBjYW5QbGF5RmlsZVxufTtcbmV4cG9ydHMuY2FuUGxheSA9IGNhblBsYXk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vYXBpLmRtY2RuLm5ldC9hbGwuanMnO1xudmFyIFNES19HTE9CQUwgPSAnRE0nO1xudmFyIFNES19HTE9CQUxfUkVBRFkgPSAnZG1Bc3luY0luaXQnO1xuXG52YXIgRGFpbHlNb3Rpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKERhaWx5TW90aW9uLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKERhaWx5TW90aW9uKTtcblxuICBmdW5jdGlvbiBEYWlseU1vdGlvbigpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRGFpbHlNb3Rpb24pO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvbkR1cmF0aW9uQ2hhbmdlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBkdXJhdGlvbiA9IF90aGlzLmdldER1cmF0aW9uKCk7XG5cbiAgICAgIF90aGlzLnByb3BzLm9uRHVyYXRpb24oZHVyYXRpb24pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcignc2V0TXV0ZWQnLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJ1bm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcignc2V0TXV0ZWQnLCBmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVmXCIsIGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAgIF90aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhEYWlseU1vdGlvbiwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnByb3BzLm9uTW91bnQgJiYgdGhpcy5wcm9wcy5vbk1vdW50KHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWQodXJsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBjb250cm9scyA9IF90aGlzJHByb3BzLmNvbnRyb2xzLFxuICAgICAgICAgIGNvbmZpZyA9IF90aGlzJHByb3BzLmNvbmZpZyxcbiAgICAgICAgICBvbkVycm9yID0gX3RoaXMkcHJvcHMub25FcnJvcixcbiAgICAgICAgICBwbGF5aW5nID0gX3RoaXMkcHJvcHMucGxheWluZztcblxuICAgICAgdmFyIF91cmwkbWF0Y2ggPSB1cmwubWF0Y2goX3BhdHRlcm5zLk1BVENIX1VSTF9EQUlMWU1PVElPTiksXG4gICAgICAgICAgX3VybCRtYXRjaDIgPSBfc2xpY2VkVG9BcnJheShfdXJsJG1hdGNoLCAyKSxcbiAgICAgICAgICBpZCA9IF91cmwkbWF0Y2gyWzFdO1xuXG4gICAgICBpZiAodGhpcy5wbGF5ZXIpIHtcbiAgICAgICAgdGhpcy5wbGF5ZXIubG9hZChpZCwge1xuICAgICAgICAgIHN0YXJ0OiAoMCwgX3V0aWxzLnBhcnNlU3RhcnRUaW1lKSh1cmwpLFxuICAgICAgICAgIGF1dG9wbGF5OiBwbGF5aW5nXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMLCBTREtfR0xPQkFMX1JFQURZLCBmdW5jdGlvbiAoRE0pIHtcbiAgICAgICAgcmV0dXJuIERNLnBsYXllcjtcbiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKERNKSB7XG4gICAgICAgIGlmICghX3RoaXMyLmNvbnRhaW5lcikgcmV0dXJuO1xuICAgICAgICB2YXIgUGxheWVyID0gRE0ucGxheWVyO1xuICAgICAgICBfdGhpczIucGxheWVyID0gbmV3IFBsYXllcihfdGhpczIuY29udGFpbmVyLCB7XG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICB2aWRlbzogaWQsXG4gICAgICAgICAgcGFyYW1zOiBfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICAgIGNvbnRyb2xzOiBjb250cm9scyxcbiAgICAgICAgICAgIGF1dG9wbGF5OiBfdGhpczIucHJvcHMucGxheWluZyxcbiAgICAgICAgICAgIG11dGU6IF90aGlzMi5wcm9wcy5tdXRlZCxcbiAgICAgICAgICAgIHN0YXJ0OiAoMCwgX3V0aWxzLnBhcnNlU3RhcnRUaW1lKSh1cmwpLFxuICAgICAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luXG4gICAgICAgICAgfSwgY29uZmlnLnBhcmFtcyksXG4gICAgICAgICAgZXZlbnRzOiB7XG4gICAgICAgICAgICBhcGlyZWFkeTogX3RoaXMyLnByb3BzLm9uUmVhZHksXG4gICAgICAgICAgICBzZWVrZWQ6IGZ1bmN0aW9uIHNlZWtlZCgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5wcm9wcy5vblNlZWsoX3RoaXMyLnBsYXllci5jdXJyZW50VGltZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdmlkZW9fZW5kOiBfdGhpczIucHJvcHMub25FbmRlZCxcbiAgICAgICAgICAgIGR1cmF0aW9uY2hhbmdlOiBfdGhpczIub25EdXJhdGlvbkNoYW5nZSxcbiAgICAgICAgICAgIHBhdXNlOiBfdGhpczIucHJvcHMub25QYXVzZSxcbiAgICAgICAgICAgIHBsYXlpbmc6IF90aGlzMi5wcm9wcy5vblBsYXksXG4gICAgICAgICAgICB3YWl0aW5nOiBfdGhpczIucHJvcHMub25CdWZmZXIsXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gZXJyb3IoZXZlbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9uRXJyb3IoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LCBvbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7Ly8gTm90aGluZyB0byBkb1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZWVrVG9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vla1RvKHNlY29uZHMpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2VlaycsIHNlY29uZHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWb2x1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vm9sdW1lKGZyYWN0aW9uKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldFZvbHVtZScsIGZyYWN0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5ZXIuZHVyYXRpb24gfHwgbnVsbDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGF5ZXIuY3VycmVudFRpbWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNlY29uZHNMb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2Vjb25kc0xvYWRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXllci5idWZmZXJlZFRpbWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheTtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIGRpc3BsYXk6IGRpc3BsYXlcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogdGhpcy5yZWZcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRGFpbHlNb3Rpb247XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IERhaWx5TW90aW9uO1xuXG5fZGVmaW5lUHJvcGVydHkoRGFpbHlNb3Rpb24sIFwiZGlzcGxheU5hbWVcIiwgJ0RhaWx5TW90aW9uJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShEYWlseU1vdGlvbiwgXCJjYW5QbGF5XCIsIF9wYXR0ZXJucy5jYW5QbGF5LmRhaWx5bW90aW9uKTtcblxuX2RlZmluZVByb3BlcnR5KERhaWx5TW90aW9uLCBcImxvb3BPbkVuZGVkXCIsIHRydWUpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5cbnZhciBfcGF0dGVybnMgPSByZXF1aXJlKFwiLi4vcGF0dGVybnNcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvc2RrLmpzJztcbnZhciBTREtfR0xPQkFMID0gJ0ZCJztcbnZhciBTREtfR0xPQkFMX1JFQURZID0gJ2ZiQXN5bmNJbml0JztcbnZhciBQTEFZRVJfSURfUFJFRklYID0gJ2ZhY2Vib29rLXBsYXllci0nO1xuXG52YXIgRmFjZWJvb2sgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKEZhY2Vib29rLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEZhY2Vib29rKTtcblxuICBmdW5jdGlvbiBGYWNlYm9vaygpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRmFjZWJvb2spO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwbGF5ZXJJRFwiLCBfdGhpcy5wcm9wcy5jb25maWcucGxheWVySWQgfHwgXCJcIi5jb25jYXQoUExBWUVSX0lEX1BSRUZJWCkuY29uY2F0KCgwLCBfdXRpbHMucmFuZG9tU3RyaW5nKSgpKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwibXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jYWxsUGxheWVyKCdtdXRlJyk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwidW5tdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNhbGxQbGF5ZXIoJ3VubXV0ZScpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEZhY2Vib29rLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZCh1cmwsIGlzUmVhZHkpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICAoMCwgX3V0aWxzLmdldFNESykoU0RLX1VSTCwgU0RLX0dMT0JBTCwgU0RLX0dMT0JBTF9SRUFEWSkudGhlbihmdW5jdGlvbiAoRkIpIHtcbiAgICAgICAgICByZXR1cm4gRkIuWEZCTUwucGFyc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgKDAsIF91dGlscy5nZXRTREspKFNES19VUkwsIFNES19HTE9CQUwsIFNES19HTE9CQUxfUkVBRFkpLnRoZW4oZnVuY3Rpb24gKEZCKSB7XG4gICAgICAgIEZCLmluaXQoe1xuICAgICAgICAgIGFwcElkOiBfdGhpczIucHJvcHMuY29uZmlnLmFwcElkLFxuICAgICAgICAgIHhmYm1sOiB0cnVlLFxuICAgICAgICAgIHZlcnNpb246IF90aGlzMi5wcm9wcy5jb25maWcudmVyc2lvblxuICAgICAgICB9KTtcbiAgICAgICAgRkIuRXZlbnQuc3Vic2NyaWJlKCd4ZmJtbC5yZW5kZXInLCBmdW5jdGlvbiAobXNnKSB7XG4gICAgICAgICAgLy8gSGVyZSB3ZSBrbm93IHRoZSBTREsgaGFzIGxvYWRlZCwgZXZlbiBpZiBvblJlYWR5L29uUGxheVxuICAgICAgICAgIC8vIGlzIG5vdCBjYWxsZWQgZHVlIHRvIGEgdmlkZW8gdGhhdCBjYW5ub3QgYmUgZW1iZWRkZWRcbiAgICAgICAgICBfdGhpczIucHJvcHMub25Mb2FkZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIEZCLkV2ZW50LnN1YnNjcmliZSgneGZibWwucmVhZHknLCBmdW5jdGlvbiAobXNnKSB7XG4gICAgICAgICAgaWYgKG1zZy50eXBlID09PSAndmlkZW8nICYmIG1zZy5pZCA9PT0gX3RoaXMyLnBsYXllcklEKSB7XG4gICAgICAgICAgICBfdGhpczIucGxheWVyID0gbXNnLmluc3RhbmNlO1xuXG4gICAgICAgICAgICBfdGhpczIucGxheWVyLnN1YnNjcmliZSgnc3RhcnRlZFBsYXlpbmcnLCBfdGhpczIucHJvcHMub25QbGF5KTtcblxuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5zdWJzY3JpYmUoJ3BhdXNlZCcsIF90aGlzMi5wcm9wcy5vblBhdXNlKTtcblxuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5zdWJzY3JpYmUoJ2ZpbmlzaGVkUGxheWluZycsIF90aGlzMi5wcm9wcy5vbkVuZGVkKTtcblxuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5zdWJzY3JpYmUoJ3N0YXJ0ZWRCdWZmZXJpbmcnLCBfdGhpczIucHJvcHMub25CdWZmZXIpO1xuXG4gICAgICAgICAgICBfdGhpczIucGxheWVyLnN1YnNjcmliZSgnZmluaXNoZWRCdWZmZXJpbmcnLCBfdGhpczIucHJvcHMub25CdWZmZXJFbmQpO1xuXG4gICAgICAgICAgICBfdGhpczIucGxheWVyLnN1YnNjcmliZSgnZXJyb3InLCBfdGhpczIucHJvcHMub25FcnJvcik7XG5cbiAgICAgICAgICAgIGlmIChfdGhpczIucHJvcHMubXV0ZWQpIHtcbiAgICAgICAgICAgICAgX3RoaXMyLmNhbGxQbGF5ZXIoJ211dGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIF90aGlzMi5jYWxsUGxheWVyKCd1bm11dGUnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3RoaXMyLnByb3BzLm9uUmVhZHkoKTsgLy8gRm9yIHNvbWUgcmVhc29uIEZhY2Vib29rIGhhdmUgYWRkZWQgYHZpc2liaWxpdHk6IGhpZGRlbmBcbiAgICAgICAgICAgIC8vIHRvIHRoZSBpZnJhbWUgd2hlbiBhdXRvcGxheSBmYWlscywgc28gaGVyZSB3ZSBzZXQgaXQgYmFja1xuXG5cbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF90aGlzMi5wbGF5ZXJJRCkucXVlcnlTZWxlY3RvcignaWZyYW1lJykuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBsYXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGxheSgpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcigncGxheScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYXVzZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwYXVzZSgpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcigncGF1c2UnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkgey8vIE5vdGhpbmcgdG8gZG9cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhzZWNvbmRzKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NlZWsnLCBzZWNvbmRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZShmcmFjdGlvbikge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZXRWb2x1bWUnLCBmcmFjdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldER1cmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldER1cmF0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbFBsYXllcignZ2V0RHVyYXRpb24nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsUGxheWVyKCdnZXRDdXJyZW50UG9zaXRpb24nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMucHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM7XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX2V4dGVuZHMoe1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGlkOiB0aGlzLnBsYXllcklELFxuICAgICAgICBjbGFzc05hbWU6IFwiZmItdmlkZW9cIixcbiAgICAgICAgXCJkYXRhLWhyZWZcIjogdGhpcy5wcm9wcy51cmwsXG4gICAgICAgIFwiZGF0YS1hdXRvcGxheVwiOiB0aGlzLnByb3BzLnBsYXlpbmcgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBcImRhdGEtYWxsb3dmdWxsc2NyZWVuXCI6IFwidHJ1ZVwiLFxuICAgICAgICBcImRhdGEtY29udHJvbHNcIjogdGhpcy5wcm9wcy5jb250cm9scyA/ICd0cnVlJyA6ICdmYWxzZSdcbiAgICAgIH0sIGF0dHJpYnV0ZXMpKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gRmFjZWJvb2s7XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEZhY2Vib29rO1xuXG5fZGVmaW5lUHJvcGVydHkoRmFjZWJvb2ssIFwiZGlzcGxheU5hbWVcIiwgJ0ZhY2Vib29rJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShGYWNlYm9vaywgXCJjYW5QbGF5XCIsIF9wYXR0ZXJucy5jYW5QbGF5LmZhY2Vib29rKTtcblxuX2RlZmluZVByb3BlcnR5KEZhY2Vib29rLCBcImxvb3BPbkVuZGVkXCIsIHRydWUpOyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IHZvaWQgMDtcblxudmFyIF9yZWFjdCA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5cbnZhciBfdXRpbHMgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG5cbnZhciBfcGF0dGVybnMgPSByZXF1aXJlKFwiLi4vcGF0dGVybnNcIik7XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBIQVNfTkFWSUdBVE9SID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCc7XG52YXIgSVNfSVBBRF9QUk8gPSBIQVNfTkFWSUdBVE9SICYmIG5hdmlnYXRvci5wbGF0Zm9ybSA9PT0gJ01hY0ludGVsJyAmJiBuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHMgPiAxO1xudmFyIElTX0lPUyA9IEhBU19OQVZJR0FUT1IgJiYgKC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpIHx8IElTX0lQQURfUFJPKSAmJiAhd2luZG93Lk1TU3RyZWFtO1xudmFyIEhMU19TREtfVVJMID0gJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vaGxzLmpzQFZFUlNJT04vZGlzdC9obHMubWluLmpzJztcbnZhciBITFNfR0xPQkFMID0gJ0hscyc7XG52YXIgREFTSF9TREtfVVJMID0gJ2h0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2Rhc2hqcy9WRVJTSU9OL2Rhc2guYWxsLm1pbi5qcyc7XG52YXIgREFTSF9HTE9CQUwgPSAnZGFzaGpzJztcbnZhciBGTFZfU0RLX1VSTCA9ICdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2Zsdi5qc0BWRVJTSU9OL2Rpc3QvZmx2Lm1pbi5qcyc7XG52YXIgRkxWX0dMT0JBTCA9ICdmbHZqcyc7XG52YXIgTUFUQ0hfRFJPUEJPWF9VUkwgPSAvd3d3XFwuZHJvcGJveFxcLmNvbVxcLy4rLztcbnZhciBNQVRDSF9DTE9VREZMQVJFX1NUUkVBTSA9IC9odHRwczpcXC9cXC93YXRjaFxcLmNsb3VkZmxhcmVzdHJlYW1cXC5jb21cXC8oW2EtejAtOV0rKS87XG52YXIgUkVQTEFDRV9DTE9VREZMQVJFX1NUUkVBTSA9ICdodHRwczovL3ZpZGVvZGVsaXZlcnkubmV0L3tpZH0vbWFuaWZlc3QvdmlkZW8ubTN1OCc7XG5cbnZhciBGaWxlUGxheWVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhGaWxlUGxheWVyLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEZpbGVQbGF5ZXIpO1xuXG4gIGZ1bmN0aW9uIEZpbGVQbGF5ZXIoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEZpbGVQbGF5ZXIpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF9hcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgX2FyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoX2FyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvblJlYWR5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcztcblxuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzKS5vblJlYWR5LmFwcGx5KF90aGlzJHByb3BzLCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm9uUGxheVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyO1xuXG4gICAgICByZXR1cm4gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5vblBsYXkuYXBwbHkoX3RoaXMkcHJvcHMyLCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm9uQnVmZmVyXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczM7XG5cbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHMzID0gX3RoaXMucHJvcHMpLm9uQnVmZmVyLmFwcGx5KF90aGlzJHByb3BzMywgYXJndW1lbnRzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvbkJ1ZmZlckVuZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM0O1xuXG4gICAgICByZXR1cm4gKF90aGlzJHByb3BzNCA9IF90aGlzLnByb3BzKS5vbkJ1ZmZlckVuZC5hcHBseShfdGhpcyRwcm9wczQsIGFyZ3VtZW50cyk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25QYXVzZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHM1O1xuXG4gICAgICByZXR1cm4gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5vblBhdXNlLmFwcGx5KF90aGlzJHByb3BzNSwgYXJndW1lbnRzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvbkVuZGVkXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczY7XG5cbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHM2ID0gX3RoaXMucHJvcHMpLm9uRW5kZWQuYXBwbHkoX3RoaXMkcHJvcHM2LCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm9uRXJyb3JcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzNztcblxuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wczcgPSBfdGhpcy5wcm9wcykub25FcnJvci5hcHBseShfdGhpcyRwcm9wczcsIGFyZ3VtZW50cyk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25QbGF5QmFja1JhdGVDaGFuZ2VcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMub25QbGF5YmFja1JhdGVDaGFuZ2UoZXZlbnQudGFyZ2V0LnBsYXliYWNrUmF0ZSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25FbmFibGVQSVBcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzODtcblxuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wczggPSBfdGhpcy5wcm9wcykub25FbmFibGVQSVAuYXBwbHkoX3RoaXMkcHJvcHM4LCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm9uRGlzYWJsZVBJUFwiLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyIF90aGlzJHByb3BzOSA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9uRGlzYWJsZVBJUCA9IF90aGlzJHByb3BzOS5vbkRpc2FibGVQSVAsXG4gICAgICAgICAgcGxheWluZyA9IF90aGlzJHByb3BzOS5wbGF5aW5nO1xuICAgICAgb25EaXNhYmxlUElQKGUpO1xuXG4gICAgICBpZiAocGxheWluZykge1xuICAgICAgICBfdGhpcy5wbGF5KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25QcmVzZW50YXRpb25Nb2RlQ2hhbmdlXCIsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBpZiAoX3RoaXMucGxheWVyICYmICgwLCBfdXRpbHMuc3VwcG9ydHNXZWJLaXRQcmVzZW50YXRpb25Nb2RlKShfdGhpcy5wbGF5ZXIpKSB7XG4gICAgICAgIHZhciB3ZWJraXRQcmVzZW50YXRpb25Nb2RlID0gX3RoaXMucGxheWVyLndlYmtpdFByZXNlbnRhdGlvbk1vZGU7XG5cbiAgICAgICAgaWYgKHdlYmtpdFByZXNlbnRhdGlvbk1vZGUgPT09ICdwaWN0dXJlLWluLXBpY3R1cmUnKSB7XG4gICAgICAgICAgX3RoaXMub25FbmFibGVQSVAoZSk7XG4gICAgICAgIH0gZWxzZSBpZiAod2Via2l0UHJlc2VudGF0aW9uTW9kZSA9PT0gJ2lubGluZScpIHtcbiAgICAgICAgICBfdGhpcy5vbkRpc2FibGVQSVAoZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvblNlZWtcIiwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIF90aGlzLnByb3BzLm9uU2VlayhlLnRhcmdldC5jdXJyZW50VGltZSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwibXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5wbGF5ZXIubXV0ZWQgPSB0cnVlO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVubXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5wbGF5ZXIubXV0ZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZW5kZXJTb3VyY2VFbGVtZW50XCIsIGZ1bmN0aW9uIChzb3VyY2UsIGluZGV4KSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJzb3VyY2VcIiwge1xuICAgICAgICAgIGtleTogaW5kZXgsXG4gICAgICAgICAgc3JjOiBzb3VyY2VcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwic291cmNlXCIsIF9leHRlbmRzKHtcbiAgICAgICAga2V5OiBpbmRleFxuICAgICAgfSwgc291cmNlKSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVuZGVyVHJhY2tcIiwgZnVuY3Rpb24gKHRyYWNrLCBpbmRleCkge1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJ0cmFja1wiLCBfZXh0ZW5kcyh7XG4gICAgICAgIGtleTogaW5kZXhcbiAgICAgIH0sIHRyYWNrKSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVmXCIsIGZ1bmN0aW9uIChwbGF5ZXIpIHtcbiAgICAgIGlmIChfdGhpcy5wbGF5ZXIpIHtcbiAgICAgICAgLy8gU3RvcmUgcHJldmlvdXMgcGxheWVyIHRvIGJlIHVzZWQgYnkgcmVtb3ZlTGlzdGVuZXJzKClcbiAgICAgICAgX3RoaXMucHJldlBsYXllciA9IF90aGlzLnBsYXllcjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMucGxheWVyID0gcGxheWVyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEZpbGVQbGF5ZXIsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1vdW50ICYmIHRoaXMucHJvcHMub25Nb3VudCh0aGlzKTtcbiAgICAgIHRoaXMuYWRkTGlzdGVuZXJzKHRoaXMucGxheWVyKTtcblxuICAgICAgaWYgKElTX0lPUykge1xuICAgICAgICB0aGlzLnBsYXllci5sb2FkKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudERpZFVwZGF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgICBpZiAodGhpcy5zaG91bGRVc2VBdWRpbyh0aGlzLnByb3BzKSAhPT0gdGhpcy5zaG91bGRVc2VBdWRpbyhwcmV2UHJvcHMpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXJzKHRoaXMucHJldlBsYXllciwgcHJldlByb3BzLnVybCk7XG4gICAgICAgIHRoaXMuYWRkTGlzdGVuZXJzKHRoaXMucGxheWVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucHJvcHMudXJsICE9PSBwcmV2UHJvcHMudXJsICYmICEoMCwgX3V0aWxzLmlzTWVkaWFTdHJlYW0pKHRoaXMucHJvcHMudXJsKSkge1xuICAgICAgICB0aGlzLnBsYXllci5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb21wb25lbnRXaWxsVW5tb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIHRoaXMucGxheWVyLnNyYyA9ICcnO1xuICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcnModGhpcy5wbGF5ZXIpO1xuXG4gICAgICBpZiAodGhpcy5obHMpIHtcbiAgICAgICAgdGhpcy5obHMuZGVzdHJveSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhZGRMaXN0ZW5lcnNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYWRkTGlzdGVuZXJzKHBsYXllcikge1xuICAgICAgdmFyIF90aGlzJHByb3BzMTAgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHVybCA9IF90aGlzJHByb3BzMTAudXJsLFxuICAgICAgICAgIHBsYXlzaW5saW5lID0gX3RoaXMkcHJvcHMxMC5wbGF5c2lubGluZTtcbiAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgdGhpcy5vblBsYXkpO1xuICAgICAgcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCB0aGlzLm9uQnVmZmVyKTtcbiAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgdGhpcy5vbkJ1ZmZlckVuZCk7XG4gICAgICBwbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCB0aGlzLm9uUGF1c2UpO1xuICAgICAgcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoJ3NlZWtlZCcsIHRoaXMub25TZWVrKTtcbiAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsIHRoaXMub25FbmRlZCk7XG4gICAgICBwbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCB0aGlzLm9uRXJyb3IpO1xuICAgICAgcGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoJ3JhdGVjaGFuZ2UnLCB0aGlzLm9uUGxheUJhY2tSYXRlQ2hhbmdlKTtcbiAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdlbnRlcnBpY3R1cmVpbnBpY3R1cmUnLCB0aGlzLm9uRW5hYmxlUElQKTtcbiAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdsZWF2ZXBpY3R1cmVpbnBpY3R1cmUnLCB0aGlzLm9uRGlzYWJsZVBJUCk7XG4gICAgICBwbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcignd2Via2l0cHJlc2VudGF0aW9ubW9kZWNoYW5nZWQnLCB0aGlzLm9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSk7XG5cbiAgICAgIGlmICghdGhpcy5zaG91bGRVc2VITFModXJsKSkge1xuICAgICAgICAvLyBvblJlYWR5IGlzIGhhbmRsZWQgYnkgaGxzLmpzXG4gICAgICAgIHBsYXllci5hZGRFdmVudExpc3RlbmVyKCdjYW5wbGF5JywgdGhpcy5vblJlYWR5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBsYXlzaW5saW5lKSB7XG4gICAgICAgIHBsYXllci5zZXRBdHRyaWJ1dGUoJ3BsYXlzaW5saW5lJywgJycpO1xuICAgICAgICBwbGF5ZXIuc2V0QXR0cmlidXRlKCd3ZWJraXQtcGxheXNpbmxpbmUnLCAnJyk7XG4gICAgICAgIHBsYXllci5zZXRBdHRyaWJ1dGUoJ3g1LXBsYXlzaW5saW5lJywgJycpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW1vdmVMaXN0ZW5lcnNcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXJzKHBsYXllciwgdXJsKSB7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2FucGxheScsIHRoaXMub25SZWFkeSk7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMub25QbGF5KTtcbiAgICAgIHBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgdGhpcy5vbkJ1ZmZlcik7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMub25CdWZmZXJFbmQpO1xuICAgICAgcGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5vblBhdXNlKTtcbiAgICAgIHBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKCdzZWVrZWQnLCB0aGlzLm9uU2Vlayk7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW5kZWQnLCB0aGlzLm9uRW5kZWQpO1xuICAgICAgcGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdGhpcy5vbkVycm9yKTtcbiAgICAgIHBsYXllci5yZW1vdmVFdmVudExpc3RlbmVyKCdyYXRlY2hhbmdlJywgdGhpcy5vblBsYXlCYWNrUmF0ZUNoYW5nZSk7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignZW50ZXJwaWN0dXJlaW5waWN0dXJlJywgdGhpcy5vbkVuYWJsZVBJUCk7XG4gICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignbGVhdmVwaWN0dXJlaW5waWN0dXJlJywgdGhpcy5vbkRpc2FibGVQSVApO1xuICAgICAgcGxheWVyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkJywgdGhpcy5vblByZXNlbnRhdGlvbk1vZGVDaGFuZ2UpO1xuXG4gICAgICBpZiAoIXRoaXMuc2hvdWxkVXNlSExTKHVybCkpIHtcbiAgICAgICAgLy8gb25SZWFkeSBpcyBoYW5kbGVkIGJ5IGhscy5qc1xuICAgICAgICBwbGF5ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2FucGxheScsIHRoaXMub25SZWFkeSk7XG4gICAgICB9XG4gICAgfSAvLyBQcm94eSBtZXRob2RzIHRvIHByZXZlbnQgbGlzdGVuZXIgbGVha3NcblxuICB9LCB7XG4gICAga2V5OiBcInNob3VsZFVzZUF1ZGlvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNob3VsZFVzZUF1ZGlvKHByb3BzKSB7XG4gICAgICBpZiAocHJvcHMuY29uZmlnLmZvcmNlVmlkZW8pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuY29uZmlnLmF0dHJpYnV0ZXMucG9zdGVyKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTsgLy8gVXNlIDx2aWRlbz4gc28gdGhhdCBwb3N0ZXIgaXMgc2hvd25cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9wYXR0ZXJucy5BVURJT19FWFRFTlNJT05TLnRlc3QocHJvcHMudXJsKSB8fCBwcm9wcy5jb25maWcuZm9yY2VBdWRpbztcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hvdWxkVXNlSExTXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNob3VsZFVzZUhMUyh1cmwpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbmZpZy5mb3JjZUhMUykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKElTX0lPUykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcGF0dGVybnMuSExTX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IE1BVENIX0NMT1VERkxBUkVfU1RSRUFNLnRlc3QodXJsKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hvdWxkVXNlREFTSFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaG91bGRVc2VEQVNIKHVybCkge1xuICAgICAgcmV0dXJuIF9wYXR0ZXJucy5EQVNIX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IHRoaXMucHJvcHMuY29uZmlnLmZvcmNlREFTSDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hvdWxkVXNlRkxWXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNob3VsZFVzZUZMVih1cmwpIHtcbiAgICAgIHJldHVybiBfcGF0dGVybnMuRkxWX0VYVEVOU0lPTlMudGVzdCh1cmwpIHx8IHRoaXMucHJvcHMuY29uZmlnLmZvcmNlRkxWO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWQodXJsKSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzJGNvbmZpZyA9IHRoaXMucHJvcHMuY29uZmlnLFxuICAgICAgICAgIGhsc1ZlcnNpb24gPSBfdGhpcyRwcm9wcyRjb25maWcuaGxzVmVyc2lvbixcbiAgICAgICAgICBobHNPcHRpb25zID0gX3RoaXMkcHJvcHMkY29uZmlnLmhsc09wdGlvbnMsXG4gICAgICAgICAgZGFzaFZlcnNpb24gPSBfdGhpcyRwcm9wcyRjb25maWcuZGFzaFZlcnNpb24sXG4gICAgICAgICAgZmx2VmVyc2lvbiA9IF90aGlzJHByb3BzJGNvbmZpZy5mbHZWZXJzaW9uO1xuXG4gICAgICBpZiAodGhpcy5obHMpIHtcbiAgICAgICAgdGhpcy5obHMuZGVzdHJveSgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5kYXNoKSB7XG4gICAgICAgIHRoaXMuZGFzaC5yZXNldCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zaG91bGRVc2VITFModXJsKSkge1xuICAgICAgICAoMCwgX3V0aWxzLmdldFNESykoSExTX1NES19VUkwucmVwbGFjZSgnVkVSU0lPTicsIGhsc1ZlcnNpb24pLCBITFNfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChIbHMpIHtcbiAgICAgICAgICBfdGhpczIuaGxzID0gbmV3IEhscyhobHNPcHRpb25zKTtcblxuICAgICAgICAgIF90aGlzMi5obHMub24oSGxzLkV2ZW50cy5NQU5JRkVTVF9QQVJTRUQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5wcm9wcy5vblJlYWR5KCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBfdGhpczIuaGxzLm9uKEhscy5FdmVudHMuRVJST1IsIGZ1bmN0aW9uIChlLCBkYXRhKSB7XG4gICAgICAgICAgICBfdGhpczIucHJvcHMub25FcnJvcihlLCBkYXRhLCBfdGhpczIuaGxzLCBIbHMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKE1BVENIX0NMT1VERkxBUkVfU1RSRUFNLnRlc3QodXJsKSkge1xuICAgICAgICAgICAgdmFyIGlkID0gdXJsLm1hdGNoKE1BVENIX0NMT1VERkxBUkVfU1RSRUFNKVsxXTtcblxuICAgICAgICAgICAgX3RoaXMyLmhscy5sb2FkU291cmNlKFJFUExBQ0VfQ0xPVURGTEFSRV9TVFJFQU0ucmVwbGFjZSgne2lkfScsIGlkKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF90aGlzMi5obHMubG9hZFNvdXJjZSh1cmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF90aGlzMi5obHMuYXR0YWNoTWVkaWEoX3RoaXMyLnBsYXllcik7XG5cbiAgICAgICAgICBfdGhpczIucHJvcHMub25Mb2FkZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3VsZFVzZURBU0godXJsKSkge1xuICAgICAgICAoMCwgX3V0aWxzLmdldFNESykoREFTSF9TREtfVVJMLnJlcGxhY2UoJ1ZFUlNJT04nLCBkYXNoVmVyc2lvbiksIERBU0hfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChkYXNoanMpIHtcbiAgICAgICAgICBfdGhpczIuZGFzaCA9IGRhc2hqcy5NZWRpYVBsYXllcigpLmNyZWF0ZSgpO1xuXG4gICAgICAgICAgX3RoaXMyLmRhc2guaW5pdGlhbGl6ZShfdGhpczIucGxheWVyLCB1cmwsIF90aGlzMi5wcm9wcy5wbGF5aW5nKTtcblxuICAgICAgICAgIF90aGlzMi5kYXNoLm9uKCdlcnJvcicsIF90aGlzMi5wcm9wcy5vbkVycm9yKTtcblxuICAgICAgICAgIGlmIChwYXJzZUludChkYXNoVmVyc2lvbikgPCAzKSB7XG4gICAgICAgICAgICBfdGhpczIuZGFzaC5nZXREZWJ1ZygpLnNldExvZ1RvQnJvd3NlckNvbnNvbGUoZmFsc2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpczIuZGFzaC51cGRhdGVTZXR0aW5ncyh7XG4gICAgICAgICAgICAgIGRlYnVnOiB7XG4gICAgICAgICAgICAgICAgbG9nTGV2ZWw6IGRhc2hqcy5EZWJ1Zy5MT0dfTEVWRUxfTk9ORVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpczIucHJvcHMub25Mb2FkZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3VsZFVzZUZMVih1cmwpKSB7XG4gICAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShGTFZfU0RLX1VSTC5yZXBsYWNlKCdWRVJTSU9OJywgZmx2VmVyc2lvbiksIEZMVl9HTE9CQUwpLnRoZW4oZnVuY3Rpb24gKGZsdmpzKSB7XG4gICAgICAgICAgX3RoaXMyLmZsdiA9IGZsdmpzLmNyZWF0ZVBsYXllcih7XG4gICAgICAgICAgICB0eXBlOiAnZmx2JyxcbiAgICAgICAgICAgIHVybDogdXJsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBfdGhpczIuZmx2LmF0dGFjaE1lZGlhRWxlbWVudChfdGhpczIucGxheWVyKTtcblxuICAgICAgICAgIF90aGlzMi5mbHYub24oZmx2anMuRXZlbnRzLkVSUk9SLCBmdW5jdGlvbiAoZSwgZGF0YSkge1xuICAgICAgICAgICAgX3RoaXMyLnByb3BzLm9uRXJyb3IoZSwgZGF0YSwgX3RoaXMyLmZsdiwgZmx2anMpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMyLmZsdi5sb2FkKCk7XG5cbiAgICAgICAgICBfdGhpczIucHJvcHMub25Mb2FkZWQoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh1cmwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAvLyBXaGVuIHNldHRpbmcgbmV3IHVybHMgKDxzb3VyY2U+KSBvbiBhbiBhbHJlYWR5IGxvYWRlZCB2aWRlbyxcbiAgICAgICAgLy8gSFRNTE1lZGlhRWxlbWVudC5sb2FkKCkgaXMgbmVlZGVkIHRvIHJlc2V0IHRoZSBtZWRpYSBlbGVtZW50XG4gICAgICAgIC8vIGFuZCByZXN0YXJ0IHRoZSBtZWRpYSByZXNvdXJjZS4gSnVzdCByZXBsYWNpbmcgY2hpbGRyZW4gc291cmNlXG4gICAgICAgIC8vIGRvbSBub2RlcyBpcyBub3QgZW5vdWdoXG4gICAgICAgIHRoaXMucGxheWVyLmxvYWQoKTtcbiAgICAgIH0gZWxzZSBpZiAoKDAsIF91dGlscy5pc01lZGlhU3RyZWFtKSh1cmwpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdGhpcy5wbGF5ZXIuc3JjT2JqZWN0ID0gdXJsO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5wbGF5ZXIuc3JjID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodXJsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICB2YXIgcHJvbWlzZSA9IHRoaXMucGxheWVyLnBsYXkoKTtcblxuICAgICAgaWYgKHByb21pc2UpIHtcbiAgICAgICAgcHJvbWlzZVtcImNhdGNoXCJdKHRoaXMucHJvcHMub25FcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5wbGF5ZXIucGF1c2UoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RvcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5wbGF5ZXIucmVtb3ZlQXR0cmlidXRlKCdzcmMnKTtcblxuICAgICAgaWYgKHRoaXMuZGFzaCkge1xuICAgICAgICB0aGlzLmRhc2gucmVzZXQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhzZWNvbmRzKSB7XG4gICAgICB0aGlzLnBsYXllci5jdXJyZW50VGltZSA9IHNlY29uZHM7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWb2x1bWUoZnJhY3Rpb24pIHtcbiAgICAgIHRoaXMucGxheWVyLnZvbHVtZSA9IGZyYWN0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJlbmFibGVQSVBcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5hYmxlUElQKCkge1xuICAgICAgaWYgKHRoaXMucGxheWVyLnJlcXVlc3RQaWN0dXJlSW5QaWN0dXJlICYmIGRvY3VtZW50LnBpY3R1cmVJblBpY3R1cmVFbGVtZW50ICE9PSB0aGlzLnBsYXllcikge1xuICAgICAgICB0aGlzLnBsYXllci5yZXF1ZXN0UGljdHVyZUluUGljdHVyZSgpO1xuICAgICAgfSBlbHNlIGlmICgoMCwgX3V0aWxzLnN1cHBvcnRzV2ViS2l0UHJlc2VudGF0aW9uTW9kZSkodGhpcy5wbGF5ZXIpICYmIHRoaXMucGxheWVyLndlYmtpdFByZXNlbnRhdGlvbk1vZGUgIT09ICdwaWN0dXJlLWluLXBpY3R1cmUnKSB7XG4gICAgICAgIHRoaXMucGxheWVyLndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUoJ3BpY3R1cmUtaW4tcGljdHVyZScpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJkaXNhYmxlUElQXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGRpc2FibGVQSVAoKSB7XG4gICAgICBpZiAoZG9jdW1lbnQuZXhpdFBpY3R1cmVJblBpY3R1cmUgJiYgZG9jdW1lbnQucGljdHVyZUluUGljdHVyZUVsZW1lbnQgPT09IHRoaXMucGxheWVyKSB7XG4gICAgICAgIGRvY3VtZW50LmV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7XG4gICAgICB9IGVsc2UgaWYgKCgwLCBfdXRpbHMuc3VwcG9ydHNXZWJLaXRQcmVzZW50YXRpb25Nb2RlKSh0aGlzLnBsYXllcikgJiYgdGhpcy5wbGF5ZXIud2Via2l0UHJlc2VudGF0aW9uTW9kZSAhPT0gJ2lubGluZScpIHtcbiAgICAgICAgdGhpcy5wbGF5ZXIud2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZSgnaW5saW5lJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFBsYXliYWNrUmF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQbGF5YmFja1JhdGUocmF0ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5wbGF5ZXIucGxheWJhY2tSYXRlID0gcmF0ZTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25FcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldER1cmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldER1cmF0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLnBsYXllcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgX3RoaXMkcGxheWVyID0gdGhpcy5wbGF5ZXIsXG4gICAgICAgICAgZHVyYXRpb24gPSBfdGhpcyRwbGF5ZXIuZHVyYXRpb24sXG4gICAgICAgICAgc2Vla2FibGUgPSBfdGhpcyRwbGF5ZXIuc2Vla2FibGU7IC8vIG9uIGlPUywgbGl2ZSBzdHJlYW1zIHJldHVybiBJbmZpbml0eSBmb3IgdGhlIGR1cmF0aW9uXG4gICAgICAvLyBzbyBpbnN0ZWFkIHdlIHVzZSB0aGUgZW5kIG9mIHRoZSBzZWVrYWJsZSB0aW1lcmFuZ2VcblxuICAgICAgaWYgKGR1cmF0aW9uID09PSBJbmZpbml0eSAmJiBzZWVrYWJsZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiBzZWVrYWJsZS5lbmQoc2Vla2FibGUubGVuZ3RoIC0gMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkdXJhdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICBpZiAoIXRoaXMucGxheWVyKSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiB0aGlzLnBsYXllci5jdXJyZW50VGltZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgaWYgKCF0aGlzLnBsYXllcikgcmV0dXJuIG51bGw7XG4gICAgICB2YXIgYnVmZmVyZWQgPSB0aGlzLnBsYXllci5idWZmZXJlZDtcblxuICAgICAgaWYgKGJ1ZmZlcmVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cblxuICAgICAgdmFyIGVuZCA9IGJ1ZmZlcmVkLmVuZChidWZmZXJlZC5sZW5ndGggLSAxKTtcbiAgICAgIHZhciBkdXJhdGlvbiA9IHRoaXMuZ2V0RHVyYXRpb24oKTtcblxuICAgICAgaWYgKGVuZCA+IGR1cmF0aW9uKSB7XG4gICAgICAgIHJldHVybiBkdXJhdGlvbjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVuZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U291cmNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNvdXJjZSh1cmwpIHtcbiAgICAgIHZhciB1c2VITFMgPSB0aGlzLnNob3VsZFVzZUhMUyh1cmwpO1xuICAgICAgdmFyIHVzZURBU0ggPSB0aGlzLnNob3VsZFVzZURBU0godXJsKTtcbiAgICAgIHZhciB1c2VGTFYgPSB0aGlzLnNob3VsZFVzZUZMVih1cmwpO1xuXG4gICAgICBpZiAodXJsIGluc3RhbmNlb2YgQXJyYXkgfHwgKDAsIF91dGlscy5pc01lZGlhU3RyZWFtKSh1cmwpIHx8IHVzZUhMUyB8fCB1c2VEQVNIIHx8IHVzZUZMVikge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBpZiAoTUFUQ0hfRFJPUEJPWF9VUkwudGVzdCh1cmwpKSB7XG4gICAgICAgIHJldHVybiB1cmwucmVwbGFjZSgnd3d3LmRyb3Bib3guY29tJywgJ2RsLmRyb3Bib3h1c2VyY29udGVudC5jb20nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczExID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB1cmwgPSBfdGhpcyRwcm9wczExLnVybCxcbiAgICAgICAgICBwbGF5aW5nID0gX3RoaXMkcHJvcHMxMS5wbGF5aW5nLFxuICAgICAgICAgIGxvb3AgPSBfdGhpcyRwcm9wczExLmxvb3AsXG4gICAgICAgICAgY29udHJvbHMgPSBfdGhpcyRwcm9wczExLmNvbnRyb2xzLFxuICAgICAgICAgIG11dGVkID0gX3RoaXMkcHJvcHMxMS5tdXRlZCxcbiAgICAgICAgICBjb25maWcgPSBfdGhpcyRwcm9wczExLmNvbmZpZyxcbiAgICAgICAgICB3aWR0aCA9IF90aGlzJHByb3BzMTEud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0ID0gX3RoaXMkcHJvcHMxMS5oZWlnaHQ7XG4gICAgICB2YXIgdXNlQXVkaW8gPSB0aGlzLnNob3VsZFVzZUF1ZGlvKHRoaXMucHJvcHMpO1xuICAgICAgdmFyIEVsZW1lbnQgPSB1c2VBdWRpbyA/ICdhdWRpbycgOiAndmlkZW8nO1xuICAgICAgdmFyIHN0eWxlID0ge1xuICAgICAgICB3aWR0aDogd2lkdGggPT09ICdhdXRvJyA/IHdpZHRoIDogJzEwMCUnLFxuICAgICAgICBoZWlnaHQ6IGhlaWdodCA9PT0gJ2F1dG8nID8gaGVpZ2h0IDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoRWxlbWVudCwgX2V4dGVuZHMoe1xuICAgICAgICByZWY6IHRoaXMucmVmLFxuICAgICAgICBzcmM6IHRoaXMuZ2V0U291cmNlKHVybCksXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgcHJlbG9hZDogXCJhdXRvXCIsXG4gICAgICAgIGF1dG9QbGF5OiBwbGF5aW5nIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgY29udHJvbHM6IGNvbnRyb2xzLFxuICAgICAgICBtdXRlZDogbXV0ZWQsXG4gICAgICAgIGxvb3A6IGxvb3BcbiAgICAgIH0sIGNvbmZpZy5hdHRyaWJ1dGVzKSwgdXJsIGluc3RhbmNlb2YgQXJyYXkgJiYgdXJsLm1hcCh0aGlzLnJlbmRlclNvdXJjZUVsZW1lbnQpLCBjb25maWcudHJhY2tzLm1hcCh0aGlzLnJlbmRlclRyYWNrKSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZpbGVQbGF5ZXI7XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEZpbGVQbGF5ZXI7XG5cbl9kZWZpbmVQcm9wZXJ0eShGaWxlUGxheWVyLCBcImRpc3BsYXlOYW1lXCIsICdGaWxlUGxheWVyJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShGaWxlUGxheWVyLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkuZmlsZSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNES19VUkwgPSAnaHR0cHM6Ly9jZG4uZW1iZWQubHkvcGxheWVyLTAuMS4wLm1pbi5qcyc7XG52YXIgU0RLX0dMT0JBTCA9ICdwbGF5ZXJqcyc7XG5cbnZhciBLYWx0dXJhID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhLYWx0dXJhLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKEthbHR1cmEpO1xuXG4gIGZ1bmN0aW9uIEthbHR1cmEoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEthbHR1cmEpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJkdXJhdGlvblwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjdXJyZW50VGltZVwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzZWNvbmRzTG9hZGVkXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcignbXV0ZScpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVubXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jYWxsUGxheWVyKCd1bm11dGUnKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZWZcIiwgZnVuY3Rpb24gKGlmcmFtZSkge1xuICAgICAgX3RoaXMuaWZyYW1lID0gaWZyYW1lO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKEthbHR1cmEsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1vdW50ICYmIHRoaXMucHJvcHMub25Nb3VudCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKHVybCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChwbGF5ZXJqcykge1xuICAgICAgICBpZiAoIV90aGlzMi5pZnJhbWUpIHJldHVybjtcbiAgICAgICAgX3RoaXMyLnBsYXllciA9IG5ldyBwbGF5ZXJqcy5QbGF5ZXIoX3RoaXMyLmlmcmFtZSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigncmVhZHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgLy8gQW4gYXJiaXRyYXJ5IHRpbWVvdXQgaXMgcmVxdWlyZWQgb3RoZXJ3aXNlXG4gICAgICAgICAgLy8gdGhlIGV2ZW50IGxpc3RlbmVycyB3b27igJl0IHdvcmtcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIF90aGlzMi5wbGF5ZXIuaXNSZWFkeSA9IHRydWU7XG5cbiAgICAgICAgICAgIF90aGlzMi5wbGF5ZXIuc2V0TG9vcChfdGhpczIucHJvcHMubG9vcCk7XG5cbiAgICAgICAgICAgIGlmIChfdGhpczIucHJvcHMubXV0ZWQpIHtcbiAgICAgICAgICAgICAgX3RoaXMyLnBsYXllci5tdXRlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF90aGlzMi5hZGRMaXN0ZW5lcnMoX3RoaXMyLnBsYXllciwgX3RoaXMyLnByb3BzKTtcblxuICAgICAgICAgICAgX3RoaXMyLnByb3BzLm9uUmVhZHkoKTtcbiAgICAgICAgICB9LCA1MDApO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHRoaXMucHJvcHMub25FcnJvcik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFkZExpc3RlbmVyc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRMaXN0ZW5lcnMocGxheWVyLCBwcm9wcykge1xuICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgIHBsYXllci5vbigncGxheScsIHByb3BzLm9uUGxheSk7XG4gICAgICBwbGF5ZXIub24oJ3BhdXNlJywgcHJvcHMub25QYXVzZSk7XG4gICAgICBwbGF5ZXIub24oJ2VuZGVkJywgcHJvcHMub25FbmRlZCk7XG4gICAgICBwbGF5ZXIub24oJ2Vycm9yJywgcHJvcHMub25FcnJvcik7XG4gICAgICBwbGF5ZXIub24oJ3RpbWV1cGRhdGUnLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICB2YXIgZHVyYXRpb24gPSBfcmVmLmR1cmF0aW9uLFxuICAgICAgICAgICAgc2Vjb25kcyA9IF9yZWYuc2Vjb25kcztcbiAgICAgICAgX3RoaXMzLmR1cmF0aW9uID0gZHVyYXRpb247XG4gICAgICAgIF90aGlzMy5jdXJyZW50VGltZSA9IHNlY29uZHM7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7Ly8gTm90aGluZyB0byBkb1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZWVrVG9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vla1RvKHNlY29uZHMpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0Q3VycmVudFRpbWUnLCBzZWNvbmRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZShmcmFjdGlvbikge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZXRWb2x1bWUnLCBmcmFjdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldExvb3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9vcChsb29wKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldExvb3AnLCBsb29wKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kdXJhdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGltZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Vjb25kc0xvYWRlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJSdcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImlmcmFtZVwiLCB7XG4gICAgICAgIHJlZjogdGhpcy5yZWYsXG4gICAgICAgIHNyYzogdGhpcy5wcm9wcy51cmwsXG4gICAgICAgIGZyYW1lQm9yZGVyOiBcIjBcIixcbiAgICAgICAgc2Nyb2xsaW5nOiBcIm5vXCIsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgYWxsb3c6IFwiZW5jcnlwdGVkLW1lZGlhOyBhdXRvcGxheTsgZnVsbHNjcmVlbjtcIixcbiAgICAgICAgcmVmZXJyZXJQb2xpY3k6IFwibm8tcmVmZXJyZXItd2hlbi1kb3duZ3JhZGVcIlxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEthbHR1cmE7XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IEthbHR1cmE7XG5cbl9kZWZpbmVQcm9wZXJ0eShLYWx0dXJhLCBcImRpc3BsYXlOYW1lXCIsICdLYWx0dXJhJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShLYWx0dXJhLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkua2FsdHVyYSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vd2lkZ2V0Lm1peGNsb3VkLmNvbS9tZWRpYS9qcy93aWRnZXRBcGkuanMnO1xudmFyIFNES19HTE9CQUwgPSAnTWl4Y2xvdWQnO1xuXG52YXIgTWl4Y2xvdWQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKE1peGNsb3VkLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKE1peGNsb3VkKTtcblxuICBmdW5jdGlvbiBNaXhjbG91ZCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWl4Y2xvdWQpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJkdXJhdGlvblwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjdXJyZW50VGltZVwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzZWNvbmRzTG9hZGVkXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkgey8vIE5vIHZvbHVtZSBzdXBwb3J0XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwidW5tdXRlXCIsIGZ1bmN0aW9uICgpIHsvLyBObyB2b2x1bWUgc3VwcG9ydFxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlZlwiLCBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICBfdGhpcy5pZnJhbWUgPSBpZnJhbWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoTWl4Y2xvdWQsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1vdW50ICYmIHRoaXMucHJvcHMub25Nb3VudCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKHVybCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChNaXhjbG91ZCkge1xuICAgICAgICBfdGhpczIucGxheWVyID0gTWl4Y2xvdWQuUGxheWVyV2lkZ2V0KF90aGlzMi5pZnJhbWUpO1xuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIucmVhZHkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnBsYXllci5ldmVudHMucGxheS5vbihfdGhpczIucHJvcHMub25QbGF5KTtcblxuICAgICAgICAgIF90aGlzMi5wbGF5ZXIuZXZlbnRzLnBhdXNlLm9uKF90aGlzMi5wcm9wcy5vblBhdXNlKTtcblxuICAgICAgICAgIF90aGlzMi5wbGF5ZXIuZXZlbnRzLmVuZGVkLm9uKF90aGlzMi5wcm9wcy5vbkVuZGVkKTtcblxuICAgICAgICAgIF90aGlzMi5wbGF5ZXIuZXZlbnRzLmVycm9yLm9uKF90aGlzMi5wcm9wcy5lcnJvcik7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLmV2ZW50cy5wcm9ncmVzcy5vbihmdW5jdGlvbiAoc2Vjb25kcywgZHVyYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzMi5jdXJyZW50VGltZSA9IHNlY29uZHM7XG4gICAgICAgICAgICBfdGhpczIuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIF90aGlzMi5wcm9wcy5vblJlYWR5KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgdGhpcy5wcm9wcy5vbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7Ly8gTm90aGluZyB0byBkb1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZWVrVG9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vla1RvKHNlY29uZHMpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2VlaycsIHNlY29uZHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWb2x1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vm9sdW1lKGZyYWN0aW9uKSB7Ly8gTm8gdm9sdW1lIHN1cHBvcnRcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kdXJhdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGltZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHVybCA9IF90aGlzJHByb3BzLnVybCxcbiAgICAgICAgICBjb25maWcgPSBfdGhpcyRwcm9wcy5jb25maWc7XG4gICAgICB2YXIgaWQgPSB1cmwubWF0Y2goX3BhdHRlcm5zLk1BVENIX1VSTF9NSVhDTE9VRClbMV07XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgdmFyIHF1ZXJ5ID0gKDAsIF91dGlscy5xdWVyeVN0cmluZykoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBjb25maWcub3B0aW9ucyksIHt9LCB7XG4gICAgICAgIGZlZWQ6IFwiL1wiLmNvbmNhdChpZCwgXCIvXCIpXG4gICAgICB9KSk7IC8vIFdlIGhhdmUgdG8gZ2l2ZSB0aGUgaWZyYW1lIGEga2V5IGhlcmUgdG8gcHJldmVudCBhXG4gICAgICAvLyB3ZWlyZCBkaWFsb2cgYXBwZWFyaW5nIHdoZW4gbG9hZGluZyBhIG5ldyB0cmFja1xuXG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImlmcmFtZVwiLCB7XG4gICAgICAgIGtleTogaWQsXG4gICAgICAgIHJlZjogdGhpcy5yZWYsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgc3JjOiBcImh0dHBzOi8vd3d3Lm1peGNsb3VkLmNvbS93aWRnZXQvaWZyYW1lLz9cIi5jb25jYXQocXVlcnkpLFxuICAgICAgICBmcmFtZUJvcmRlcjogXCIwXCIsXG4gICAgICAgIGFsbG93OiBcImF1dG9wbGF5XCJcbiAgICAgIH0pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBNaXhjbG91ZDtcbn0oX3JlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gTWl4Y2xvdWQ7XG5cbl9kZWZpbmVQcm9wZXJ0eShNaXhjbG91ZCwgXCJkaXNwbGF5TmFtZVwiLCAnTWl4Y2xvdWQnKTtcblxuX2RlZmluZVByb3BlcnR5KE1peGNsb3VkLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkubWl4Y2xvdWQpO1xuXG5fZGVmaW5lUHJvcGVydHkoTWl4Y2xvdWQsIFwibG9vcE9uRW5kZWRcIiwgdHJ1ZSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vdy5zb3VuZGNsb3VkLmNvbS9wbGF5ZXIvYXBpLmpzJztcbnZhciBTREtfR0xPQkFMID0gJ1NDJztcblxudmFyIFNvdW5kQ2xvdWQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgX2luaGVyaXRzKFNvdW5kQ2xvdWQsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoU291bmRDbG91ZCk7XG5cbiAgZnVuY3Rpb24gU291bmRDbG91ZCgpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU291bmRDbG91ZCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImNhbGxQbGF5ZXJcIiwgX3V0aWxzLmNhbGxQbGF5ZXIpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImR1cmF0aW9uXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImN1cnJlbnRUaW1lXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImZyYWN0aW9uTG9hZGVkXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuc2V0Vm9sdW1lKDApO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVubXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMucHJvcHMudm9sdW1lICE9PSBudWxsKSB7XG4gICAgICAgIF90aGlzLnNldFZvbHVtZShfdGhpcy5wcm9wcy52b2x1bWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInJlZlwiLCBmdW5jdGlvbiAoaWZyYW1lKSB7XG4gICAgICBfdGhpcy5pZnJhbWUgPSBpZnJhbWU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoU291bmRDbG91ZCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnByb3BzLm9uTW91bnQgJiYgdGhpcy5wcm9wcy5vbk1vdW50KHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWQodXJsLCBpc1JlYWR5KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgKDAsIF91dGlscy5nZXRTREspKFNES19VUkwsIFNES19HTE9CQUwpLnRoZW4oZnVuY3Rpb24gKFNDKSB7XG4gICAgICAgIGlmICghX3RoaXMyLmlmcmFtZSkgcmV0dXJuO1xuICAgICAgICB2YXIgX1NDJFdpZGdldCRFdmVudHMgPSBTQy5XaWRnZXQuRXZlbnRzLFxuICAgICAgICAgICAgUExBWSA9IF9TQyRXaWRnZXQkRXZlbnRzLlBMQVksXG4gICAgICAgICAgICBQTEFZX1BST0dSRVNTID0gX1NDJFdpZGdldCRFdmVudHMuUExBWV9QUk9HUkVTUyxcbiAgICAgICAgICAgIFBBVVNFID0gX1NDJFdpZGdldCRFdmVudHMuUEFVU0UsXG4gICAgICAgICAgICBGSU5JU0ggPSBfU0MkV2lkZ2V0JEV2ZW50cy5GSU5JU0gsXG4gICAgICAgICAgICBFUlJPUiA9IF9TQyRXaWRnZXQkRXZlbnRzLkVSUk9SO1xuXG4gICAgICAgIGlmICghaXNSZWFkeSkge1xuICAgICAgICAgIF90aGlzMi5wbGF5ZXIgPSBTQy5XaWRnZXQoX3RoaXMyLmlmcmFtZSk7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLmJpbmQoUExBWSwgX3RoaXMyLnByb3BzLm9uUGxheSk7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLmJpbmQoUEFVU0UsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZW1haW5pbmcgPSBfdGhpczIuZHVyYXRpb24gLSBfdGhpczIuY3VycmVudFRpbWU7XG5cbiAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPCAwLjA1KSB7XG4gICAgICAgICAgICAgIC8vIFByZXZlbnQgb25QYXVzZSBmaXJpbmcgcmlnaHQgYmVmb3JlIG9uRW5kZWRcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfdGhpczIucHJvcHMub25QYXVzZSgpO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMyLnBsYXllci5iaW5kKFBMQVlfUFJPR1JFU1MsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBfdGhpczIuY3VycmVudFRpbWUgPSBlLmN1cnJlbnRQb3NpdGlvbiAvIDEwMDA7XG4gICAgICAgICAgICBfdGhpczIuZnJhY3Rpb25Mb2FkZWQgPSBlLmxvYWRlZFByb2dyZXNzO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgX3RoaXMyLnBsYXllci5iaW5kKEZJTklTSCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5wcm9wcy5vbkVuZGVkKCk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLmJpbmQoRVJST1IsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMyLnByb3BzLm9uRXJyb3IoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBfdGhpczIucGxheWVyLmxvYWQodXJsLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIF90aGlzMi5wcm9wcy5jb25maWcub3B0aW9ucyksIHt9LCB7XG4gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uIGNhbGxiYWNrKCkge1xuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5nZXREdXJhdGlvbihmdW5jdGlvbiAoZHVyYXRpb24pIHtcbiAgICAgICAgICAgICAgX3RoaXMyLmR1cmF0aW9uID0gZHVyYXRpb24gLyAxMDAwO1xuXG4gICAgICAgICAgICAgIF90aGlzMi5wcm9wcy5vblJlYWR5KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3BsYXknKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3BhdXNlJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcCgpIHsvLyBOb3RoaW5nIHRvIGRvXG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlZWtUb1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWVrVG8oc2Vjb25kcykge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZWVrVG8nLCBzZWNvbmRzICogMTAwMCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWb2x1bWUoZnJhY3Rpb24pIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0Vm9sdW1lJywgZnJhY3Rpb24gKiAxMDApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREdXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREdXJhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmR1cmF0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50VGltZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRUaW1lO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRTZWNvbmRzTG9hZGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNlY29uZHNMb2FkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5mcmFjdGlvbkxvYWRlZCAqIHRoaXMuZHVyYXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheTtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIGRpc3BsYXk6IGRpc3BsYXlcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImlmcmFtZVwiLCB7XG4gICAgICAgIHJlZjogdGhpcy5yZWYsXG4gICAgICAgIHNyYzogXCJodHRwczovL3cuc291bmRjbG91ZC5jb20vcGxheWVyLz91cmw9XCIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLnByb3BzLnVybCkpLFxuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGZyYW1lQm9yZGVyOiAwLFxuICAgICAgICBhbGxvdzogXCJhdXRvcGxheVwiXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gU291bmRDbG91ZDtcbn0oX3JlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gU291bmRDbG91ZDtcblxuX2RlZmluZVByb3BlcnR5KFNvdW5kQ2xvdWQsIFwiZGlzcGxheU5hbWVcIiwgJ1NvdW5kQ2xvdWQnKTtcblxuX2RlZmluZVByb3BlcnR5KFNvdW5kQ2xvdWQsIFwiY2FuUGxheVwiLCBfcGF0dGVybnMuY2FuUGxheS5zb3VuZGNsb3VkKTtcblxuX2RlZmluZVByb3BlcnR5KFNvdW5kQ2xvdWQsIFwibG9vcE9uRW5kZWRcIiwgdHJ1ZSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNES19VUkwgPSAnaHR0cHM6Ly9jZG4uZW1iZWQubHkvcGxheWVyLTAuMS4wLm1pbi5qcyc7XG52YXIgU0RLX0dMT0JBTCA9ICdwbGF5ZXJqcyc7XG5cbnZhciBTdHJlYW1hYmxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhTdHJlYW1hYmxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFN0cmVhbWFibGUpO1xuXG4gIGZ1bmN0aW9uIFN0cmVhbWFibGUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN0cmVhbWFibGUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJkdXJhdGlvblwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjdXJyZW50VGltZVwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzZWNvbmRzTG9hZGVkXCIsIG51bGwpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcignbXV0ZScpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVubXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jYWxsUGxheWVyKCd1bm11dGUnKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZWZcIiwgZnVuY3Rpb24gKGlmcmFtZSkge1xuICAgICAgX3RoaXMuaWZyYW1lID0gaWZyYW1lO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFN0cmVhbWFibGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1vdW50ICYmIHRoaXMucHJvcHMub25Nb3VudCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKHVybCkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChwbGF5ZXJqcykge1xuICAgICAgICBpZiAoIV90aGlzMi5pZnJhbWUpIHJldHVybjtcbiAgICAgICAgX3RoaXMyLnBsYXllciA9IG5ldyBwbGF5ZXJqcy5QbGF5ZXIoX3RoaXMyLmlmcmFtZSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5zZXRMb29wKF90aGlzMi5wcm9wcy5sb29wKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdyZWFkeScsIF90aGlzMi5wcm9wcy5vblJlYWR5KTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdwbGF5JywgX3RoaXMyLnByb3BzLm9uUGxheSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigncGF1c2UnLCBfdGhpczIucHJvcHMub25QYXVzZSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignc2Vla2VkJywgX3RoaXMyLnByb3BzLm9uU2Vlayk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignZW5kZWQnLCBfdGhpczIucHJvcHMub25FbmRlZCk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignZXJyb3InLCBfdGhpczIucHJvcHMub25FcnJvcik7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigndGltZXVwZGF0ZScsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgdmFyIGR1cmF0aW9uID0gX3JlZi5kdXJhdGlvbixcbiAgICAgICAgICAgICAgc2Vjb25kcyA9IF9yZWYuc2Vjb25kcztcbiAgICAgICAgICBfdGhpczIuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgICAgICBfdGhpczIuY3VycmVudFRpbWUgPSBzZWNvbmRzO1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdidWZmZXJlZCcsIGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgIHZhciBwZXJjZW50ID0gX3JlZjIucGVyY2VudDtcblxuICAgICAgICAgIGlmIChfdGhpczIuZHVyYXRpb24pIHtcbiAgICAgICAgICAgIF90aGlzMi5zZWNvbmRzTG9hZGVkID0gX3RoaXMyLmR1cmF0aW9uICogcGVyY2VudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChfdGhpczIucHJvcHMubXV0ZWQpIHtcbiAgICAgICAgICBfdGhpczIucGxheWVyLm11dGUoKTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcy5wcm9wcy5vbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7Ly8gTm90aGluZyB0byBkb1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZWVrVG9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2Vla1RvKHNlY29uZHMpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0Q3VycmVudFRpbWUnLCBzZWNvbmRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZShmcmFjdGlvbikge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZXRWb2x1bWUnLCBmcmFjdGlvbiAqIDEwMCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldExvb3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0TG9vcChsb29wKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldExvb3AnLCBsb29wKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5kdXJhdGlvbjtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW50VGltZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Vjb25kc0xvYWRlZDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBpZCA9IHRoaXMucHJvcHMudXJsLm1hdGNoKF9wYXR0ZXJucy5NQVRDSF9VUkxfU1RSRUFNQUJMRSlbMV07XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIiwge1xuICAgICAgICByZWY6IHRoaXMucmVmLFxuICAgICAgICBzcmM6IFwiaHR0cHM6Ly9zdHJlYW1hYmxlLmNvbS9vL1wiLmNvbmNhdChpZCksXG4gICAgICAgIGZyYW1lQm9yZGVyOiBcIjBcIixcbiAgICAgICAgc2Nyb2xsaW5nOiBcIm5vXCIsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgYWxsb3c6IFwiZW5jcnlwdGVkLW1lZGlhOyBhdXRvcGxheTsgZnVsbHNjcmVlbjtcIlxuICAgICAgfSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFN0cmVhbWFibGU7XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFN0cmVhbWFibGU7XG5cbl9kZWZpbmVQcm9wZXJ0eShTdHJlYW1hYmxlLCBcImRpc3BsYXlOYW1lXCIsICdTdHJlYW1hYmxlJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShTdHJlYW1hYmxlLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkuc3RyZWFtYWJsZSk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vcGxheWVyLnR3aXRjaC50di9qcy9lbWJlZC92MS5qcyc7XG52YXIgU0RLX0dMT0JBTCA9ICdUd2l0Y2gnO1xudmFyIFBMQVlFUl9JRF9QUkVGSVggPSAndHdpdGNoLXBsYXllci0nO1xuXG52YXIgVHdpdGNoID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUd2l0Y2gsIF9Db21wb25lbnQpO1xuXG4gIHZhciBfc3VwZXIgPSBfY3JlYXRlU3VwZXIoVHdpdGNoKTtcblxuICBmdW5jdGlvbiBUd2l0Y2goKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFR3aXRjaCk7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoYXJncykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImNhbGxQbGF5ZXJcIiwgX3V0aWxzLmNhbGxQbGF5ZXIpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInBsYXllcklEXCIsIF90aGlzLnByb3BzLmNvbmZpZy5wbGF5ZXJJZCB8fCBcIlwiLmNvbmNhdChQTEFZRVJfSURfUFJFRklYKS5jb25jYXQoKDAsIF91dGlscy5yYW5kb21TdHJpbmcpKCkpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJtdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNhbGxQbGF5ZXIoJ3NldE11dGVkJywgdHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwidW5tdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNhbGxQbGF5ZXIoJ3NldE11dGVkJywgZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFR3aXRjaCwgW3tcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkTW91bnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICB0aGlzLnByb3BzLm9uTW91bnQgJiYgdGhpcy5wcm9wcy5vbk1vdW50KHRoaXMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJsb2FkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGxvYWQodXJsLCBpc1JlYWR5KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIF90aGlzJHByb3BzID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwbGF5c2lubGluZSA9IF90aGlzJHByb3BzLnBsYXlzaW5saW5lLFxuICAgICAgICAgIG9uRXJyb3IgPSBfdGhpcyRwcm9wcy5vbkVycm9yLFxuICAgICAgICAgIGNvbmZpZyA9IF90aGlzJHByb3BzLmNvbmZpZyxcbiAgICAgICAgICBjb250cm9scyA9IF90aGlzJHByb3BzLmNvbnRyb2xzO1xuXG4gICAgICB2YXIgaXNDaGFubmVsID0gX3BhdHRlcm5zLk1BVENIX1VSTF9UV0lUQ0hfQ0hBTk5FTC50ZXN0KHVybCk7XG5cbiAgICAgIHZhciBpZCA9IGlzQ2hhbm5lbCA/IHVybC5tYXRjaChfcGF0dGVybnMuTUFUQ0hfVVJMX1RXSVRDSF9DSEFOTkVMKVsxXSA6IHVybC5tYXRjaChfcGF0dGVybnMuTUFUQ0hfVVJMX1RXSVRDSF9WSURFTylbMV07XG5cbiAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgIGlmIChpc0NoYW5uZWwpIHtcbiAgICAgICAgICB0aGlzLnBsYXllci5zZXRDaGFubmVsKGlkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBsYXllci5zZXRWaWRlbygndicgKyBpZCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChUd2l0Y2gpIHtcbiAgICAgICAgX3RoaXMyLnBsYXllciA9IG5ldyBUd2l0Y2guUGxheWVyKF90aGlzMi5wbGF5ZXJJRCwgX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgdmlkZW86IGlzQ2hhbm5lbCA/ICcnIDogaWQsXG4gICAgICAgICAgY2hhbm5lbDogaXNDaGFubmVsID8gaWQgOiAnJyxcbiAgICAgICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICAgIHBsYXlzaW5saW5lOiBwbGF5c2lubGluZSxcbiAgICAgICAgICBhdXRvcGxheTogX3RoaXMyLnByb3BzLnBsYXlpbmcsXG4gICAgICAgICAgbXV0ZWQ6IF90aGlzMi5wcm9wcy5tdXRlZCxcbiAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vQ29va1BldGUvcmVhY3QtcGxheWVyL2lzc3Vlcy83MzMjaXNzdWVjb21tZW50LTU0OTA4NTg1OVxuICAgICAgICAgIGNvbnRyb2xzOiBpc0NoYW5uZWwgPyB0cnVlIDogY29udHJvbHMsXG4gICAgICAgICAgdGltZTogKDAsIF91dGlscy5wYXJzZVN0YXJ0VGltZSkodXJsKVxuICAgICAgICB9LCBjb25maWcub3B0aW9ucykpO1xuICAgICAgICB2YXIgX1R3aXRjaCRQbGF5ZXIgPSBUd2l0Y2guUGxheWVyLFxuICAgICAgICAgICAgUkVBRFkgPSBfVHdpdGNoJFBsYXllci5SRUFEWSxcbiAgICAgICAgICAgIFBMQVlJTkcgPSBfVHdpdGNoJFBsYXllci5QTEFZSU5HLFxuICAgICAgICAgICAgUEFVU0UgPSBfVHdpdGNoJFBsYXllci5QQVVTRSxcbiAgICAgICAgICAgIEVOREVEID0gX1R3aXRjaCRQbGF5ZXIuRU5ERUQsXG4gICAgICAgICAgICBPTkxJTkUgPSBfVHdpdGNoJFBsYXllci5PTkxJTkUsXG4gICAgICAgICAgICBPRkZMSU5FID0gX1R3aXRjaCRQbGF5ZXIuT0ZGTElORSxcbiAgICAgICAgICAgIFNFRUsgPSBfVHdpdGNoJFBsYXllci5TRUVLO1xuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihSRUFEWSwgX3RoaXMyLnByb3BzLm9uUmVhZHkpO1xuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihQTEFZSU5HLCBfdGhpczIucHJvcHMub25QbGF5KTtcblxuICAgICAgICBfdGhpczIucGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoUEFVU0UsIF90aGlzMi5wcm9wcy5vblBhdXNlKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoRU5ERUQsIF90aGlzMi5wcm9wcy5vbkVuZGVkKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoU0VFSywgX3RoaXMyLnByb3BzLm9uU2Vlayk7IC8vIFByZXZlbnQgd2VpcmQgaXNMb2FkaW5nIGJlaGF2aW91ciB3aGVuIHN0cmVhbXMgYXJlIG9mZmxpbmVcblxuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIuYWRkRXZlbnRMaXN0ZW5lcihPTkxJTkUsIF90aGlzMi5wcm9wcy5vbkxvYWRlZCk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5hZGRFdmVudExpc3RlbmVyKE9GRkxJTkUsIF90aGlzMi5wcm9wcy5vbkxvYWRlZCk7XG4gICAgICB9LCBvbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3BhdXNlJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlZWtUb1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWVrVG8oc2Vjb25kcykge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZWVrJywgc2Vjb25kcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWb2x1bWUoZnJhY3Rpb24pIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0Vm9sdW1lJywgZnJhY3Rpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREdXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREdXJhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxQbGF5ZXIoJ2dldER1cmF0aW9uJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEN1cnJlbnRUaW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbFBsYXllcignZ2V0Q3VycmVudFRpbWUnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBzdHlsZTogc3R5bGUsXG4gICAgICAgIGlkOiB0aGlzLnBsYXllcklEXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVHdpdGNoO1xufShfcmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBUd2l0Y2g7XG5cbl9kZWZpbmVQcm9wZXJ0eShUd2l0Y2gsIFwiZGlzcGxheU5hbWVcIiwgJ1R3aXRjaCcpO1xuXG5fZGVmaW5lUHJvcGVydHkoVHdpdGNoLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkudHdpdGNoKTtcblxuX2RlZmluZVByb3BlcnR5KFR3aXRjaCwgXCJsb29wT25FbmRlZFwiLCB0cnVlKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuXG52YXIgX3BhdHRlcm5zID0gcmVxdWlyZShcIi4uL3BhdHRlcm5zXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNES19VUkwgPSAnaHR0cHM6Ly9wbGF5LnZpZHlhcmQuY29tL2VtYmVkL3Y0LmpzJztcbnZhciBTREtfR0xPQkFMID0gJ1ZpZHlhcmRWNCc7XG52YXIgU0RLX0dMT0JBTF9SRUFEWSA9ICdvblZpZHlhcmRBUEknO1xuXG52YXIgVmlkeWFyZCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoVmlkeWFyZCwgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihWaWR5YXJkKTtcblxuICBmdW5jdGlvbiBWaWR5YXJkKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBWaWR5YXJkKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiY2FsbFBsYXllclwiLCBfdXRpbHMuY2FsbFBsYXllcik7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwibXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5zZXRWb2x1bWUoMCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwidW5tdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5wcm9wcy52b2x1bWUgIT09IG51bGwpIHtcbiAgICAgICAgX3RoaXMuc2V0Vm9sdW1lKF90aGlzLnByb3BzLnZvbHVtZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwicmVmXCIsIGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAgIF90aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhWaWR5YXJkLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZCh1cmwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHBsYXlpbmcgPSBfdGhpcyRwcm9wcy5wbGF5aW5nLFxuICAgICAgICAgIGNvbmZpZyA9IF90aGlzJHByb3BzLmNvbmZpZyxcbiAgICAgICAgICBvbkVycm9yID0gX3RoaXMkcHJvcHMub25FcnJvcixcbiAgICAgICAgICBvbkR1cmF0aW9uID0gX3RoaXMkcHJvcHMub25EdXJhdGlvbjtcbiAgICAgIHZhciBpZCA9IHVybCAmJiB1cmwubWF0Y2goX3BhdHRlcm5zLk1BVENIX1VSTF9WSURZQVJEKVsxXTtcblxuICAgICAgaWYgKHRoaXMucGxheWVyKSB7XG4gICAgICAgIHRoaXMuc3RvcCgpO1xuICAgICAgfVxuXG4gICAgICAoMCwgX3V0aWxzLmdldFNESykoU0RLX1VSTCwgU0RLX0dMT0JBTCwgU0RLX0dMT0JBTF9SRUFEWSkudGhlbihmdW5jdGlvbiAoVmlkeWFyZCkge1xuICAgICAgICBpZiAoIV90aGlzMi5jb250YWluZXIpIHJldHVybjtcbiAgICAgICAgVmlkeWFyZC5hcGkuYWRkUmVhZHlMaXN0ZW5lcihmdW5jdGlvbiAoZGF0YSwgcGxheWVyKSB7XG4gICAgICAgICAgaWYgKF90aGlzMi5wbGF5ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyID0gcGxheWVyO1xuXG4gICAgICAgICAgX3RoaXMyLnBsYXllci5vbigncmVhZHknLCBfdGhpczIucHJvcHMub25SZWFkeSk7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLm9uKCdwbGF5JywgX3RoaXMyLnByb3BzLm9uUGxheSk7XG5cbiAgICAgICAgICBfdGhpczIucGxheWVyLm9uKCdwYXVzZScsIF90aGlzMi5wcm9wcy5vblBhdXNlKTtcblxuICAgICAgICAgIF90aGlzMi5wbGF5ZXIub24oJ3NlZWsnLCBfdGhpczIucHJvcHMub25TZWVrKTtcblxuICAgICAgICAgIF90aGlzMi5wbGF5ZXIub24oJ3BsYXllckNvbXBsZXRlJywgX3RoaXMyLnByb3BzLm9uRW5kZWQpO1xuICAgICAgICB9LCBpZCk7XG4gICAgICAgIFZpZHlhcmQuYXBpLnJlbmRlclBsYXllcihfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICB1dWlkOiBpZCxcbiAgICAgICAgICBjb250YWluZXI6IF90aGlzMi5jb250YWluZXIsXG4gICAgICAgICAgYXV0b3BsYXk6IHBsYXlpbmcgPyAxIDogMFxuICAgICAgICB9LCBjb25maWcub3B0aW9ucykpO1xuICAgICAgICBWaWR5YXJkLmFwaS5nZXRQbGF5ZXJNZXRhZGF0YShpZCkudGhlbihmdW5jdGlvbiAobWV0YSkge1xuICAgICAgICAgIF90aGlzMi5kdXJhdGlvbiA9IG1ldGEubGVuZ3RoX2luX3NlY29uZHM7XG4gICAgICAgICAgb25EdXJhdGlvbihtZXRhLmxlbmd0aF9pbl9zZWNvbmRzKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBvbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB3aW5kb3cuVmlkeWFyZFY0LmFwaS5kZXN0cm95UGxheWVyKHRoaXMucGxheWVyKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhhbW91bnQpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2VlaycsIGFtb3VudCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFZvbHVtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRWb2x1bWUoZnJhY3Rpb24pIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0Vm9sdW1lJywgZnJhY3Rpb24pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRQbGF5YmFja1JhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UGxheWJhY2tSYXRlKHJhdGUpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0UGxheWJhY2tTcGVlZCcsIHJhdGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXREdXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREdXJhdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLmR1cmF0aW9uO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50VGltZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxQbGF5ZXIoJ2N1cnJlbnRUaW1lJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNlY29uZHNMb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2Vjb25kc0xvYWRlZCgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIGRpc3BsYXkgPSB0aGlzLnByb3BzLmRpc3BsYXk7XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBkaXNwbGF5OiBkaXNwbGF5XG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBzdHlsZTogc3R5bGVcbiAgICAgIH0sIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHRoaXMucmVmXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpZHlhcmQ7XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFZpZHlhcmQ7XG5cbl9kZWZpbmVQcm9wZXJ0eShWaWR5YXJkLCBcImRpc3BsYXlOYW1lXCIsICdWaWR5YXJkJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShWaWR5YXJkLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkudmlkeWFyZCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZShcInJlYWN0XCIpKTtcblxudmFyIF91dGlscyA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcblxudmFyIF9wYXR0ZXJucyA9IHJlcXVpcmUoXCIuLi9wYXR0ZXJuc1wiKTtcblxuZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7IHZhciBjYWNoZSA9IG5ldyBXZWFrTWFwKCk7IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSA9IGZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgcmV0dXJuIGNhY2hlOyB9OyByZXR1cm4gY2FjaGU7IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBpZiAob2JqID09PSBudWxsIHx8IF90eXBlb2Yob2JqKSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHsgcmV0dXJuIHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9IHZhciBjYWNoZSA9IF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpOyBpZiAoY2FjaGUgJiYgY2FjaGUuaGFzKG9iaikpIHsgcmV0dXJuIGNhY2hlLmdldChvYmopOyB9IHZhciBuZXdPYmogPSB7fTsgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7IHZhciBkZXNjID0gaGFzUHJvcGVydHlEZXNjcmlwdG9yID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkgOiBudWxsOyBpZiAoZGVzYyAmJiAoZGVzYy5nZXQgfHwgZGVzYy5zZXQpKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7IH0gZWxzZSB7IG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSB9IG5ld09ialtcImRlZmF1bHRcIl0gPSBvYmo7IGlmIChjYWNoZSkgeyBjYWNoZS5zZXQob2JqLCBuZXdPYmopOyB9IHJldHVybiBuZXdPYmo7IH1cblxuZnVuY3Rpb24gb3duS2V5cyhvYmplY3QsIGVudW1lcmFibGVPbmx5KSB7IHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTsgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHsgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iamVjdCk7IGlmIChlbnVtZXJhYmxlT25seSkgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7IH0pOyBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxuZnVuY3Rpb24gX2NyZWF0ZVN1cGVyKERlcml2ZWQpIHsgdmFyIGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCk7IHJldHVybiBmdW5jdGlvbiBfY3JlYXRlU3VwZXJJbnRlcm5hbCgpIHsgdmFyIFN1cGVyID0gX2dldFByb3RvdHlwZU9mKERlcml2ZWQpLCByZXN1bHQ7IGlmIChoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KSB7IHZhciBOZXdUYXJnZXQgPSBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3I7IHJlc3VsdCA9IFJlZmxlY3QuY29uc3RydWN0KFN1cGVyLCBhcmd1bWVudHMsIE5ld1RhcmdldCk7IH0gZWxzZSB7IHJlc3VsdCA9IFN1cGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0gcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIHJlc3VsdCk7IH07IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBTREtfVVJMID0gJ2h0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS9hcGkvcGxheWVyLmpzJztcbnZhciBTREtfR0xPQkFMID0gJ1ZpbWVvJztcblxudmFyIFZpbWVvID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhWaW1lbywgX0NvbXBvbmVudCk7XG5cbiAgdmFyIF9zdXBlciA9IF9jcmVhdGVTdXBlcihWaW1lbyk7XG5cbiAgZnVuY3Rpb24gVmltZW8oKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZpbWVvKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlci5jYWxsLmFwcGx5KF9zdXBlciwgW3RoaXNdLmNvbmNhdChhcmdzKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiY2FsbFBsYXllclwiLCBfdXRpbHMuY2FsbFBsYXllcik7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiZHVyYXRpb25cIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiY3VycmVudFRpbWVcIiwgbnVsbCk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic2Vjb25kc0xvYWRlZFwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJtdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLnNldFZvbHVtZSgwKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJ1bm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzLnByb3BzLnZvbHVtZSAhPT0gbnVsbCkge1xuICAgICAgICBfdGhpcy5zZXRWb2x1bWUoX3RoaXMucHJvcHMudm9sdW1lKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZWZcIiwgZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgICAgX3RoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpbWVvLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZCh1cmwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB0aGlzLmR1cmF0aW9uID0gbnVsbDtcbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChWaW1lbykge1xuICAgICAgICBpZiAoIV90aGlzMi5jb250YWluZXIpIHJldHVybjtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRjb25maWcgPSBfdGhpczIucHJvcHMuY29uZmlnLFxuICAgICAgICAgICAgcGxheWVyT3B0aW9ucyA9IF90aGlzMiRwcm9wcyRjb25maWcucGxheWVyT3B0aW9ucyxcbiAgICAgICAgICAgIHRpdGxlID0gX3RoaXMyJHByb3BzJGNvbmZpZy50aXRsZTtcbiAgICAgICAgX3RoaXMyLnBsYXllciA9IG5ldyBWaW1lby5QbGF5ZXIoX3RoaXMyLmNvbnRhaW5lciwgX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgICAgYXV0b3BsYXk6IF90aGlzMi5wcm9wcy5wbGF5aW5nLFxuICAgICAgICAgIG11dGVkOiBfdGhpczIucHJvcHMubXV0ZWQsXG4gICAgICAgICAgbG9vcDogX3RoaXMyLnByb3BzLmxvb3AsXG4gICAgICAgICAgcGxheXNpbmxpbmU6IF90aGlzMi5wcm9wcy5wbGF5c2lubGluZSxcbiAgICAgICAgICBjb250cm9sczogX3RoaXMyLnByb3BzLmNvbnRyb2xzXG4gICAgICAgIH0sIHBsYXllck9wdGlvbnMpKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLnJlYWR5KCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFyIGlmcmFtZSA9IF90aGlzMi5jb250YWluZXIucXVlcnlTZWxlY3RvcignaWZyYW1lJyk7XG5cbiAgICAgICAgICBpZnJhbWUuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcblxuICAgICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgaWZyYW1lLnRpdGxlID0gdGl0bGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KVtcImNhdGNoXCJdKF90aGlzMi5wcm9wcy5vbkVycm9yKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdsb2FkZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgX3RoaXMyLnByb3BzLm9uUmVhZHkoKTtcblxuICAgICAgICAgIF90aGlzMi5yZWZyZXNoRHVyYXRpb24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigncGxheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBfdGhpczIucHJvcHMub25QbGF5KCk7XG5cbiAgICAgICAgICBfdGhpczIucmVmcmVzaER1cmF0aW9uKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIub24oJ3BhdXNlJywgX3RoaXMyLnByb3BzLm9uUGF1c2UpO1xuXG4gICAgICAgIF90aGlzMi5wbGF5ZXIub24oJ3NlZWtlZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzMi5wcm9wcy5vblNlZWsoZS5zZWNvbmRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignZW5kZWQnLCBfdGhpczIucHJvcHMub25FbmRlZCk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignZXJyb3InLCBfdGhpczIucHJvcHMub25FcnJvcik7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigndGltZXVwZGF0ZScsIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgdmFyIHNlY29uZHMgPSBfcmVmLnNlY29uZHM7XG4gICAgICAgICAgX3RoaXMyLmN1cnJlbnRUaW1lID0gc2Vjb25kcztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbigncHJvZ3Jlc3MnLCBmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICB2YXIgc2Vjb25kcyA9IF9yZWYyLnNlY29uZHM7XG4gICAgICAgICAgX3RoaXMyLnNlY29uZHNMb2FkZWQgPSBzZWNvbmRzO1xuICAgICAgICB9KTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdidWZmZXJzdGFydCcsIF90aGlzMi5wcm9wcy5vbkJ1ZmZlcik7XG5cbiAgICAgICAgX3RoaXMyLnBsYXllci5vbignYnVmZmVyZW5kJywgX3RoaXMyLnByb3BzLm9uQnVmZmVyRW5kKTtcblxuICAgICAgICBfdGhpczIucGxheWVyLm9uKCdwbGF5YmFja3JhdGVjaGFuZ2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczIucHJvcHMub25QbGF5YmFja1JhdGVDaGFuZ2UoZS5wbGF5YmFja1JhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIHRoaXMucHJvcHMub25FcnJvcik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlZnJlc2hEdXJhdGlvblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZWZyZXNoRHVyYXRpb24oKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdGhpcy5wbGF5ZXIuZ2V0RHVyYXRpb24oKS50aGVuKGZ1bmN0aW9uIChkdXJhdGlvbikge1xuICAgICAgICBfdGhpczMuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwbGF5XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBsYXkoKSB7XG4gICAgICB2YXIgcHJvbWlzZSA9IHRoaXMuY2FsbFBsYXllcigncGxheScpO1xuXG4gICAgICBpZiAocHJvbWlzZSkge1xuICAgICAgICBwcm9taXNlW1wiY2F0Y2hcIl0odGhpcy5wcm9wcy5vbkVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGF1c2VcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGF1c2UoKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3BhdXNlJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcigndW5sb2FkJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlZWtUb1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZWVrVG8oc2Vjb25kcykge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZXRDdXJyZW50VGltZScsIHNlY29uZHMpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWb2x1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vm9sdW1lKGZyYWN0aW9uKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldFZvbHVtZScsIGZyYWN0aW9uKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0TG9vcFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRMb29wKGxvb3ApIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0TG9vcCcsIGxvb3ApO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRQbGF5YmFja1JhdGVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0UGxheWJhY2tSYXRlKHJhdGUpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2V0UGxheWJhY2tSYXRlJywgcmF0ZSk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldER1cmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldER1cmF0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuZHVyYXRpb247XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldEN1cnJlbnRUaW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRpbWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldFNlY29uZHNMb2FkZWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0U2Vjb25kc0xvYWRlZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlY29uZHNMb2FkZWQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheTtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgZGlzcGxheTogZGlzcGxheVxuICAgICAgfTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovX3JlYWN0W1wiZGVmYXVsdFwiXS5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAga2V5OiB0aGlzLnByb3BzLnVybCxcbiAgICAgICAgcmVmOiB0aGlzLnJlZixcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVmltZW87XG59KF9yZWFjdC5Db21wb25lbnQpO1xuXG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IFZpbWVvO1xuXG5fZGVmaW5lUHJvcGVydHkoVmltZW8sIFwiZGlzcGxheU5hbWVcIiwgJ1ZpbWVvJyk7XG5cbl9kZWZpbmVQcm9wZXJ0eShWaW1lbywgXCJjYW5QbGF5XCIsIF9wYXR0ZXJucy5jYW5QbGF5LnZpbWVvKTtcblxuX2RlZmluZVByb3BlcnR5KFZpbWVvLCBcImZvcmNlTG9hZFwiLCB0cnVlKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuXG52YXIgX3BhdHRlcm5zID0gcmVxdWlyZShcIi4uL3BhdHRlcm5zXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNES19VUkwgPSAnaHR0cHM6Ly9mYXN0Lndpc3RpYS5jb20vYXNzZXRzL2V4dGVybmFsL0UtdjEuanMnO1xudmFyIFNES19HTE9CQUwgPSAnV2lzdGlhJztcbnZhciBQTEFZRVJfSURfUFJFRklYID0gJ3dpc3RpYS1wbGF5ZXItJztcblxudmFyIFdpc3RpYSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHMoV2lzdGlhLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFdpc3RpYSk7XG5cbiAgZnVuY3Rpb24gV2lzdGlhKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXaXN0aWEpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIF9hcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgX2FyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgX3RoaXMgPSBfc3VwZXIuY2FsbC5hcHBseShfc3VwZXIsIFt0aGlzXS5jb25jYXQoX2FyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwbGF5ZXJJRFwiLCBfdGhpcy5wcm9wcy5jb25maWcucGxheWVySWQgfHwgXCJcIi5jb25jYXQoUExBWUVSX0lEX1BSRUZJWCkuY29uY2F0KCgwLCBfdXRpbHMucmFuZG9tU3RyaW5nKSgpKSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25QbGF5XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wcztcblxuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzKS5vblBsYXkuYXBwbHkoX3RoaXMkcHJvcHMsIGFyZ3VtZW50cyk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25QYXVzZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3RoaXMkcHJvcHMyO1xuXG4gICAgICByZXR1cm4gKF90aGlzJHByb3BzMiA9IF90aGlzLnByb3BzKS5vblBhdXNlLmFwcGx5KF90aGlzJHByb3BzMiwgYXJndW1lbnRzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvblNlZWtcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF90aGlzJHByb3BzMztcblxuICAgICAgcmV0dXJuIChfdGhpcyRwcm9wczMgPSBfdGhpcy5wcm9wcykub25TZWVrLmFwcGx5KF90aGlzJHByb3BzMywgYXJndW1lbnRzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJvbkVuZGVkXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczQ7XG5cbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLm9uRW5kZWQuYXBwbHkoX3RoaXMkcHJvcHM0LCBhcmd1bWVudHMpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm9uUGxheWJhY2tSYXRlQ2hhbmdlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfdGhpcyRwcm9wczU7XG5cbiAgICAgIHJldHVybiAoX3RoaXMkcHJvcHM1ID0gX3RoaXMucHJvcHMpLm9uUGxheWJhY2tSYXRlQ2hhbmdlLmFwcGx5KF90aGlzJHByb3BzNSwgYXJndW1lbnRzKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJtdXRlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLmNhbGxQbGF5ZXIoJ211dGUnKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJ1bm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcigndW5tdXRlJyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoV2lzdGlhLCBbe1xuICAgIGtleTogXCJjb21wb25lbnREaWRNb3VudFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIHRoaXMucHJvcHMub25Nb3VudCAmJiB0aGlzLnByb3BzLm9uTW91bnQodGhpcyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvYWRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZCh1cmwpIHtcbiAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM2ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICBwbGF5aW5nID0gX3RoaXMkcHJvcHM2LnBsYXlpbmcsXG4gICAgICAgICAgbXV0ZWQgPSBfdGhpcyRwcm9wczYubXV0ZWQsXG4gICAgICAgICAgY29udHJvbHMgPSBfdGhpcyRwcm9wczYuY29udHJvbHMsXG4gICAgICAgICAgX29uUmVhZHkgPSBfdGhpcyRwcm9wczYub25SZWFkeSxcbiAgICAgICAgICBjb25maWcgPSBfdGhpcyRwcm9wczYuY29uZmlnLFxuICAgICAgICAgIG9uRXJyb3IgPSBfdGhpcyRwcm9wczYub25FcnJvcjtcbiAgICAgICgwLCBfdXRpbHMuZ2V0U0RLKShTREtfVVJMLCBTREtfR0xPQkFMKS50aGVuKGZ1bmN0aW9uIChXaXN0aWEpIHtcbiAgICAgICAgaWYgKGNvbmZpZy5jdXN0b21Db250cm9scykge1xuICAgICAgICAgIGNvbmZpZy5jdXN0b21Db250cm9scy5mb3JFYWNoKGZ1bmN0aW9uIChjb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gV2lzdGlhLmRlZmluZUNvbnRyb2woY29udHJvbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB3aW5kb3cuX3dxID0gd2luZG93Ll93cSB8fCBbXTtcblxuICAgICAgICB3aW5kb3cuX3dxLnB1c2goe1xuICAgICAgICAgIGlkOiBfdGhpczIucGxheWVySUQsXG4gICAgICAgICAgb3B0aW9uczogX29iamVjdFNwcmVhZCh7XG4gICAgICAgICAgICBhdXRvUGxheTogcGxheWluZyxcbiAgICAgICAgICAgIHNpbGVudEF1dG9QbGF5OiAnYWxsb3cnLFxuICAgICAgICAgICAgbXV0ZWQ6IG11dGVkLFxuICAgICAgICAgICAgY29udHJvbHNWaXNpYmxlT25Mb2FkOiBjb250cm9scyxcbiAgICAgICAgICAgIGZ1bGxzY3JlZW5CdXR0b246IGNvbnRyb2xzLFxuICAgICAgICAgICAgcGxheWJhcjogY29udHJvbHMsXG4gICAgICAgICAgICBwbGF5YmFja1JhdGVDb250cm9sOiBjb250cm9scyxcbiAgICAgICAgICAgIHF1YWxpdHlDb250cm9sOiBjb250cm9scyxcbiAgICAgICAgICAgIHZvbHVtZUNvbnRyb2w6IGNvbnRyb2xzLFxuICAgICAgICAgICAgc2V0dGluZ3NDb250cm9sOiBjb250cm9scyxcbiAgICAgICAgICAgIHNtYWxsUGxheUJ1dHRvbjogY29udHJvbHNcbiAgICAgICAgICB9LCBjb25maWcub3B0aW9ucyksXG4gICAgICAgICAgb25SZWFkeTogZnVuY3Rpb24gb25SZWFkeShwbGF5ZXIpIHtcbiAgICAgICAgICAgIF90aGlzMi5wbGF5ZXIgPSBwbGF5ZXI7XG5cbiAgICAgICAgICAgIF90aGlzMi51bmJpbmQoKTtcblxuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5iaW5kKCdwbGF5JywgX3RoaXMyLm9uUGxheSk7XG5cbiAgICAgICAgICAgIF90aGlzMi5wbGF5ZXIuYmluZCgncGF1c2UnLCBfdGhpczIub25QYXVzZSk7XG5cbiAgICAgICAgICAgIF90aGlzMi5wbGF5ZXIuYmluZCgnc2VlaycsIF90aGlzMi5vblNlZWspO1xuXG4gICAgICAgICAgICBfdGhpczIucGxheWVyLmJpbmQoJ2VuZCcsIF90aGlzMi5vbkVuZGVkKTtcblxuICAgICAgICAgICAgX3RoaXMyLnBsYXllci5iaW5kKCdwbGF5YmFja3JhdGVjaGFuZ2UnLCBfdGhpczIub25QbGF5YmFja1JhdGVDaGFuZ2UpO1xuXG4gICAgICAgICAgICBfb25SZWFkeSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LCBvbkVycm9yKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5iaW5kXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuYmluZCgpIHtcbiAgICAgIHRoaXMucGxheWVyLnVuYmluZCgncGxheScsIHRoaXMub25QbGF5KTtcbiAgICAgIHRoaXMucGxheWVyLnVuYmluZCgncGF1c2UnLCB0aGlzLm9uUGF1c2UpO1xuICAgICAgdGhpcy5wbGF5ZXIudW5iaW5kKCdzZWVrJywgdGhpcy5vblNlZWspO1xuICAgICAgdGhpcy5wbGF5ZXIudW5iaW5kKCdlbmQnLCB0aGlzLm9uRW5kZWQpO1xuICAgICAgdGhpcy5wbGF5ZXIudW5iaW5kKCdwbGF5YmFja3JhdGVjaGFuZ2UnLCB0aGlzLm9uUGxheWJhY2tSYXRlQ2hhbmdlKTtcbiAgICB9IC8vIFByb3h5IG1ldGhvZHMgdG8gcHJldmVudCBsaXN0ZW5lciBsZWFrc1xuXG4gIH0sIHtcbiAgICBrZXk6IFwicGxheVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwbGF5KCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5Jyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzdG9wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB0aGlzLnVuYmluZCgpO1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdyZW1vdmUnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhzZWNvbmRzKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3RpbWUnLCBzZWNvbmRzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0Vm9sdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFZvbHVtZShmcmFjdGlvbikge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCd2b2x1bWUnLCBmcmFjdGlvbik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNldFBsYXliYWNrUmF0ZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRQbGF5YmFja1JhdGUocmF0ZSkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwbGF5YmFja1JhdGUnLCByYXRlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0RHVyYXRpb25cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0RHVyYXRpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsUGxheWVyKCdkdXJhdGlvbicpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRDdXJyZW50VGltZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRDdXJyZW50VGltZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGxQbGF5ZXIoJ3RpbWUnKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0U2Vjb25kc0xvYWRlZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZWNvbmRzTG9hZGVkKCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgdXJsID0gdGhpcy5wcm9wcy51cmw7XG4gICAgICB2YXIgdmlkZW9JRCA9IHVybCAmJiB1cmwubWF0Y2goX3BhdHRlcm5zLk1BVENIX1VSTF9XSVNUSUEpWzFdO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IFwid2lzdGlhX2VtYmVkIHdpc3RpYV9hc3luY19cIi5jb25jYXQodmlkZW9JRCk7XG4gICAgICB2YXIgc3R5bGUgPSB7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9fcmVhY3RbXCJkZWZhdWx0XCJdLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICBpZDogdGhpcy5wbGF5ZXJJRCxcbiAgICAgICAga2V5OiB2aWRlb0lELFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlXG4gICAgICB9KTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gV2lzdGlhO1xufShfcmVhY3QuQ29tcG9uZW50KTtcblxuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBXaXN0aWE7XG5cbl9kZWZpbmVQcm9wZXJ0eShXaXN0aWEsIFwiZGlzcGxheU5hbWVcIiwgJ1dpc3RpYScpO1xuXG5fZGVmaW5lUHJvcGVydHkoV2lzdGlhLCBcImNhblBsYXlcIiwgX3BhdHRlcm5zLmNhblBsYXkud2lzdGlhKTtcblxuX2RlZmluZVByb3BlcnR5KFdpc3RpYSwgXCJsb29wT25FbmRlZFwiLCB0cnVlKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgXCJAYmFiZWwvaGVscGVycyAtIHR5cGVvZlwiOyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSB2b2lkIDA7XG5cbnZhciBfcmVhY3QgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKFwicmVhY3RcIikpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuXG52YXIgX3BhdHRlcm5zID0gcmVxdWlyZShcIi4uL3BhdHRlcm5zXCIpO1xuXG5mdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IGlmICh0eXBlb2YgV2Vha01hcCAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gbnVsbDsgdmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTsgX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCkgeyByZXR1cm4gY2FjaGU7IH07IHJldHVybiBjYWNoZTsgfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGlmIChvYmogPT09IG51bGwgfHwgX3R5cGVvZihvYmopICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBcImRlZmF1bHRcIjogb2JqIH07IH0gdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKCk7IGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgeyByZXR1cm4gY2FjaGUuZ2V0KG9iaik7IH0gdmFyIG5ld09iaiA9IHt9OyB2YXIgaGFzUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmRlZmluZVByb3BlcnR5ICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHsgdmFyIGRlc2MgPSBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5KSA6IG51bGw7IGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ld09iaiwga2V5LCBkZXNjKTsgfSBlbHNlIHsgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IH0gbmV3T2JqW1wiZGVmYXVsdFwiXSA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwidW5kZWZpbmVkXCIgfHwgIShTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpKSByZXR1cm47IHZhciBfYXJyID0gW107IHZhciBfbiA9IHRydWU7IHZhciBfZCA9IGZhbHNlOyB2YXIgX2UgPSB1bmRlZmluZWQ7IHRyeSB7IGZvciAodmFyIF9pID0gYXJyW1N5bWJvbC5pdGVyYXRvcl0oKSwgX3M7ICEoX24gPSAoX3MgPSBfaS5uZXh0KCkpLmRvbmUpOyBfbiA9IHRydWUpIHsgX2Fyci5wdXNoKF9zLnZhbHVlKTsgaWYgKGkgJiYgX2Fyci5sZW5ndGggPT09IGkpIGJyZWFrOyB9IH0gY2F0Y2ggKGVycikgeyBfZCA9IHRydWU7IF9lID0gZXJyOyB9IGZpbmFsbHkgeyB0cnkgeyBpZiAoIV9uICYmIF9pW1wicmV0dXJuXCJdICE9IG51bGwpIF9pW1wicmV0dXJuXCJdKCk7IH0gZmluYWxseSB7IGlmIChfZCkgdGhyb3cgX2U7IH0gfSByZXR1cm4gX2FycjsgfVxuXG5mdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHJldHVybiBhcnI7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfY3JlYXRlU3VwZXIoRGVyaXZlZCkgeyB2YXIgaGFzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QoKTsgcmV0dXJuIGZ1bmN0aW9uIF9jcmVhdGVTdXBlckludGVybmFsKCkgeyB2YXIgU3VwZXIgPSBfZ2V0UHJvdG90eXBlT2YoRGVyaXZlZCksIHJlc3VsdDsgaWYgKGhhc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QpIHsgdmFyIE5ld1RhcmdldCA9IF9nZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3RvcjsgcmVzdWx0ID0gUmVmbGVjdC5jb25zdHJ1Y3QoU3VwZXIsIGFyZ3VtZW50cywgTmV3VGFyZ2V0KTsgfSBlbHNlIHsgcmVzdWx0ID0gU3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfSByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgcmVzdWx0KTsgfTsgfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxudmFyIFNES19VUkwgPSAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vaWZyYW1lX2FwaSc7XG52YXIgU0RLX0dMT0JBTCA9ICdZVCc7XG52YXIgU0RLX0dMT0JBTF9SRUFEWSA9ICdvbllvdVR1YmVJZnJhbWVBUElSZWFkeSc7XG52YXIgTUFUQ0hfUExBWUxJU1QgPSAvWz8mXSg/Omxpc3R8Y2hhbm5lbCk9KFthLXpBLVowLTlfLV0rKS87XG52YXIgTUFUQ0hfVVNFUl9VUExPQURTID0gL3VzZXJcXC8oW2EtekEtWjAtOV8tXSspXFwvPy87XG52YXIgTUFUQ0hfTk9DT09LSUUgPSAveW91dHViZS1ub2Nvb2tpZVxcLmNvbS87XG52YXIgTk9DT09LSUVfSE9TVCA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbSc7XG5cbnZhciBZb3VUdWJlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhZb3VUdWJlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFlvdVR1YmUpO1xuXG4gIGZ1bmN0aW9uIFlvdVR1YmUoKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFlvdVR1YmUpO1xuXG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIF90aGlzID0gX3N1cGVyLmNhbGwuYXBwbHkoX3N1cGVyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJjYWxsUGxheWVyXCIsIF91dGlscy5jYWxsUGxheWVyKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJwYXJzZVBsYXlsaXN0XCIsIGZ1bmN0aW9uICh1cmwpIHtcbiAgICAgIGlmICh1cmwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpc3RUeXBlOiAncGxheWxpc3QnLFxuICAgICAgICAgIHBsYXlsaXN0OiB1cmwubWFwKF90aGlzLmdldElEKS5qb2luKCcsJylcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKE1BVENIX1BMQVlMSVNULnRlc3QodXJsKSkge1xuICAgICAgICB2YXIgX3VybCRtYXRjaCA9IHVybC5tYXRjaChNQVRDSF9QTEFZTElTVCksXG4gICAgICAgICAgICBfdXJsJG1hdGNoMiA9IF9zbGljZWRUb0FycmF5KF91cmwkbWF0Y2gsIDIpLFxuICAgICAgICAgICAgcGxheWxpc3RJZCA9IF91cmwkbWF0Y2gyWzFdO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGlzdFR5cGU6ICdwbGF5bGlzdCcsXG4gICAgICAgICAgbGlzdDogcGxheWxpc3RJZC5yZXBsYWNlKC9eVUMvLCAnVVUnKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoTUFUQ0hfVVNFUl9VUExPQURTLnRlc3QodXJsKSkge1xuICAgICAgICB2YXIgX3VybCRtYXRjaDMgPSB1cmwubWF0Y2goTUFUQ0hfVVNFUl9VUExPQURTKSxcbiAgICAgICAgICAgIF91cmwkbWF0Y2g0ID0gX3NsaWNlZFRvQXJyYXkoX3VybCRtYXRjaDMsIDIpLFxuICAgICAgICAgICAgdXNlcm5hbWUgPSBfdXJsJG1hdGNoNFsxXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGxpc3RUeXBlOiAndXNlcl91cGxvYWRzJyxcbiAgICAgICAgICBsaXN0OiB1c2VybmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge307XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwib25TdGF0ZUNoYW5nZVwiLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHZhciBkYXRhID0gZXZlbnQuZGF0YTtcbiAgICAgIHZhciBfdGhpcyRwcm9wcyA9IF90aGlzLnByb3BzLFxuICAgICAgICAgIG9uUGxheSA9IF90aGlzJHByb3BzLm9uUGxheSxcbiAgICAgICAgICBvblBhdXNlID0gX3RoaXMkcHJvcHMub25QYXVzZSxcbiAgICAgICAgICBvbkJ1ZmZlciA9IF90aGlzJHByb3BzLm9uQnVmZmVyLFxuICAgICAgICAgIG9uQnVmZmVyRW5kID0gX3RoaXMkcHJvcHMub25CdWZmZXJFbmQsXG4gICAgICAgICAgb25FbmRlZCA9IF90aGlzJHByb3BzLm9uRW5kZWQsXG4gICAgICAgICAgb25SZWFkeSA9IF90aGlzJHByb3BzLm9uUmVhZHksXG4gICAgICAgICAgbG9vcCA9IF90aGlzJHByb3BzLmxvb3AsXG4gICAgICAgICAgX3RoaXMkcHJvcHMkY29uZmlnID0gX3RoaXMkcHJvcHMuY29uZmlnLFxuICAgICAgICAgIHBsYXllclZhcnMgPSBfdGhpcyRwcm9wcyRjb25maWcucGxheWVyVmFycyxcbiAgICAgICAgICBvblVuc3RhcnRlZCA9IF90aGlzJHByb3BzJGNvbmZpZy5vblVuc3RhcnRlZDtcbiAgICAgIHZhciBfd2luZG93JFNES19HTE9CQUwkUGwgPSB3aW5kb3dbU0RLX0dMT0JBTF0uUGxheWVyU3RhdGUsXG4gICAgICAgICAgVU5TVEFSVEVEID0gX3dpbmRvdyRTREtfR0xPQkFMJFBsLlVOU1RBUlRFRCxcbiAgICAgICAgICBQTEFZSU5HID0gX3dpbmRvdyRTREtfR0xPQkFMJFBsLlBMQVlJTkcsXG4gICAgICAgICAgUEFVU0VEID0gX3dpbmRvdyRTREtfR0xPQkFMJFBsLlBBVVNFRCxcbiAgICAgICAgICBCVUZGRVJJTkcgPSBfd2luZG93JFNES19HTE9CQUwkUGwuQlVGRkVSSU5HLFxuICAgICAgICAgIEVOREVEID0gX3dpbmRvdyRTREtfR0xPQkFMJFBsLkVOREVELFxuICAgICAgICAgIENVRUQgPSBfd2luZG93JFNES19HTE9CQUwkUGwuQ1VFRDtcbiAgICAgIGlmIChkYXRhID09PSBVTlNUQVJURUQpIG9uVW5zdGFydGVkKCk7XG5cbiAgICAgIGlmIChkYXRhID09PSBQTEFZSU5HKSB7XG4gICAgICAgIG9uUGxheSgpO1xuICAgICAgICBvbkJ1ZmZlckVuZCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YSA9PT0gUEFVU0VEKSBvblBhdXNlKCk7XG4gICAgICBpZiAoZGF0YSA9PT0gQlVGRkVSSU5HKSBvbkJ1ZmZlcigpO1xuXG4gICAgICBpZiAoZGF0YSA9PT0gRU5ERUQpIHtcbiAgICAgICAgdmFyIGlzUGxheWxpc3QgPSAhIV90aGlzLmNhbGxQbGF5ZXIoJ2dldFBsYXlsaXN0Jyk7IC8vIE9ubHkgbG9vcCBtYW51YWxseSBpZiBub3QgcGxheWluZyBhIHBsYXlsaXN0XG5cbiAgICAgICAgaWYgKGxvb3AgJiYgIWlzUGxheWxpc3QpIHtcbiAgICAgICAgICBpZiAocGxheWVyVmFycy5zdGFydCkge1xuICAgICAgICAgICAgX3RoaXMuc2Vla1RvKHBsYXllclZhcnMuc3RhcnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfdGhpcy5wbGF5KCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb25FbmRlZCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YSA9PT0gQ1VFRCkgb25SZWFkeSgpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcIm11dGVcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuY2FsbFBsYXllcignbXV0ZScpO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcInVubXV0ZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5jYWxsUGxheWVyKCd1bk11dGUnKTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJyZWZcIiwgZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgICAgX3RoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFlvdVR1YmUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5wcm9wcy5vbk1vdW50ICYmIHRoaXMucHJvcHMub25Nb3VudCh0aGlzKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0SURcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0SUQodXJsKSB7XG4gICAgICBpZiAoIXVybCB8fCB1cmwgaW5zdGFuY2VvZiBBcnJheSB8fCBNQVRDSF9QTEFZTElTVC50ZXN0KHVybCkpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1cmwubWF0Y2goX3BhdHRlcm5zLk1BVENIX1VSTF9ZT1VUVUJFKVsxXTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwibG9hZFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBsb2FkKHVybCwgaXNSZWFkeSkge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczIgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIHBsYXlpbmcgPSBfdGhpcyRwcm9wczIucGxheWluZyxcbiAgICAgICAgICBtdXRlZCA9IF90aGlzJHByb3BzMi5tdXRlZCxcbiAgICAgICAgICBwbGF5c2lubGluZSA9IF90aGlzJHByb3BzMi5wbGF5c2lubGluZSxcbiAgICAgICAgICBjb250cm9scyA9IF90aGlzJHByb3BzMi5jb250cm9scyxcbiAgICAgICAgICBsb29wID0gX3RoaXMkcHJvcHMyLmxvb3AsXG4gICAgICAgICAgY29uZmlnID0gX3RoaXMkcHJvcHMyLmNvbmZpZyxcbiAgICAgICAgICBfb25FcnJvciA9IF90aGlzJHByb3BzMi5vbkVycm9yO1xuICAgICAgdmFyIHBsYXllclZhcnMgPSBjb25maWcucGxheWVyVmFycyxcbiAgICAgICAgICBlbWJlZE9wdGlvbnMgPSBjb25maWcuZW1iZWRPcHRpb25zO1xuICAgICAgdmFyIGlkID0gdGhpcy5nZXRJRCh1cmwpO1xuXG4gICAgICBpZiAoaXNSZWFkeSkge1xuICAgICAgICBpZiAoTUFUQ0hfUExBWUxJU1QudGVzdCh1cmwpIHx8IE1BVENIX1VTRVJfVVBMT0FEUy50ZXN0KHVybCkgfHwgdXJsIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICB0aGlzLnBsYXllci5sb2FkUGxheWxpc3QodGhpcy5wYXJzZVBsYXlsaXN0KHVybCkpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGxheWVyLmN1ZVZpZGVvQnlJZCh7XG4gICAgICAgICAgdmlkZW9JZDogaWQsXG4gICAgICAgICAgc3RhcnRTZWNvbmRzOiAoMCwgX3V0aWxzLnBhcnNlU3RhcnRUaW1lKSh1cmwpIHx8IHBsYXllclZhcnMuc3RhcnQsXG4gICAgICAgICAgZW5kU2Vjb25kczogKDAsIF91dGlscy5wYXJzZUVuZFRpbWUpKHVybCkgfHwgcGxheWVyVmFycy5lbmRcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgKDAsIF91dGlscy5nZXRTREspKFNES19VUkwsIFNES19HTE9CQUwsIFNES19HTE9CQUxfUkVBRFksIGZ1bmN0aW9uIChZVCkge1xuICAgICAgICByZXR1cm4gWVQubG9hZGVkO1xuICAgICAgfSkudGhlbihmdW5jdGlvbiAoWVQpIHtcbiAgICAgICAgaWYgKCFfdGhpczIuY29udGFpbmVyKSByZXR1cm47XG4gICAgICAgIF90aGlzMi5wbGF5ZXIgPSBuZXcgWVQuUGxheWVyKF90aGlzMi5jb250YWluZXIsIF9vYmplY3RTcHJlYWQoe1xuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgICAgdmlkZW9JZDogaWQsXG4gICAgICAgICAgcGxheWVyVmFyczogX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHtcbiAgICAgICAgICAgIGF1dG9wbGF5OiBwbGF5aW5nID8gMSA6IDAsXG4gICAgICAgICAgICBtdXRlOiBtdXRlZCA/IDEgOiAwLFxuICAgICAgICAgICAgY29udHJvbHM6IGNvbnRyb2xzID8gMSA6IDAsXG4gICAgICAgICAgICBzdGFydDogKDAsIF91dGlscy5wYXJzZVN0YXJ0VGltZSkodXJsKSxcbiAgICAgICAgICAgIGVuZDogKDAsIF91dGlscy5wYXJzZUVuZFRpbWUpKHVybCksXG4gICAgICAgICAgICBvcmlnaW46IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgICAgICAgICBwbGF5c2lubGluZTogcGxheXNpbmxpbmUgPyAxIDogMFxuICAgICAgICAgIH0sIF90aGlzMi5wYXJzZVBsYXlsaXN0KHVybCkpLCBwbGF5ZXJWYXJzKSxcbiAgICAgICAgICBldmVudHM6IHtcbiAgICAgICAgICAgIG9uUmVhZHk6IGZ1bmN0aW9uIG9uUmVhZHkoKSB7XG4gICAgICAgICAgICAgIGlmIChsb29wKSB7XG4gICAgICAgICAgICAgICAgX3RoaXMyLnBsYXllci5zZXRMb29wKHRydWUpOyAvLyBFbmFibGUgcGxheWxpc3QgbG9vcGluZ1xuXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBfdGhpczIucHJvcHMub25SZWFkeSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uUGxheWJhY2tSYXRlQ2hhbmdlOiBmdW5jdGlvbiBvblBsYXliYWNrUmF0ZUNoYW5nZShldmVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnByb3BzLm9uUGxheWJhY2tSYXRlQ2hhbmdlKGV2ZW50LmRhdGEpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uU3RhdGVDaGFuZ2U6IF90aGlzMi5vblN0YXRlQ2hhbmdlLFxuICAgICAgICAgICAgb25FcnJvcjogZnVuY3Rpb24gb25FcnJvcihldmVudCkge1xuICAgICAgICAgICAgICByZXR1cm4gX29uRXJyb3IoZXZlbnQuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBob3N0OiBNQVRDSF9OT0NPT0tJRS50ZXN0KHVybCkgPyBOT0NPT0tJRV9IT1NUIDogdW5kZWZpbmVkXG4gICAgICAgIH0sIGVtYmVkT3B0aW9ucykpO1xuICAgICAgfSwgX29uRXJyb3IpO1xuXG4gICAgICBpZiAoZW1iZWRPcHRpb25zLmV2ZW50cykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1VzaW5nIGBlbWJlZE9wdGlvbnMuZXZlbnRzYCB3aWxsIGxpa2VseSBicmVhayB0aGluZ3MuIFVzZSBSZWFjdFBsYXllcuKAmXMgY2FsbGJhY2sgcHJvcHMgaW5zdGVhZCwgZWcgb25SZWFkeSwgb25QbGF5LCBvblBhdXNlJyk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBsYXlcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcGxheSgpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcigncGxheVZpZGVvJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInBhdXNlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHBhdXNlKCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdwYXVzZVZpZGVvJyk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInN0b3BcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc3RvcCgpIHtcbiAgICAgIGlmICghZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLmNhbGxQbGF5ZXIoJ2dldElmcmFtZScpKSkgcmV0dXJuO1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzdG9wVmlkZW8nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2Vla1RvXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlZWtUbyhhbW91bnQpIHtcbiAgICAgIHRoaXMuY2FsbFBsYXllcignc2Vla1RvJywgYW1vdW50KTtcblxuICAgICAgaWYgKCF0aGlzLnByb3BzLnBsYXlpbmcpIHtcbiAgICAgICAgdGhpcy5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRWb2x1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0Vm9sdW1lKGZyYWN0aW9uKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldFZvbHVtZScsIGZyYWN0aW9uICogMTAwKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2V0UGxheWJhY2tSYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldFBsYXliYWNrUmF0ZShyYXRlKSB7XG4gICAgICB0aGlzLmNhbGxQbGF5ZXIoJ3NldFBsYXliYWNrUmF0ZScsIHJhdGUpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzZXRMb29wXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNldExvb3AobG9vcCkge1xuICAgICAgdGhpcy5jYWxsUGxheWVyKCdzZXRMb29wJywgbG9vcCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImdldER1cmF0aW9uXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldER1cmF0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2FsbFBsYXllcignZ2V0RHVyYXRpb24nKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZ2V0Q3VycmVudFRpbWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZ2V0Q3VycmVudFRpbWUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsUGxheWVyKCdnZXRDdXJyZW50VGltZScpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJnZXRTZWNvbmRzTG9hZGVkXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGdldFNlY29uZHNMb2FkZWQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxsUGxheWVyKCdnZXRWaWRlb0xvYWRlZEZyYWN0aW9uJykgKiB0aGlzLmdldER1cmF0aW9uKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgZGlzcGxheSA9IHRoaXMucHJvcHMuZGlzcGxheTtcbiAgICAgIHZhciBzdHlsZSA9IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIGRpc3BsYXk6IGRpc3BsYXlcbiAgICAgIH07XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHN0eWxlOiBzdHlsZVxuICAgICAgfSwgLyojX19QVVJFX18qL19yZWFjdFtcImRlZmF1bHRcIl0uY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgIHJlZjogdGhpcy5yZWZcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gWW91VHViZTtcbn0oX3JlYWN0LkNvbXBvbmVudCk7XG5cbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gWW91VHViZTtcblxuX2RlZmluZVByb3BlcnR5KFlvdVR1YmUsIFwiZGlzcGxheU5hbWVcIiwgJ1lvdVR1YmUnKTtcblxuX2RlZmluZVByb3BlcnR5KFlvdVR1YmUsIFwiY2FuUGxheVwiLCBfcGF0dGVybnMuY2FuUGxheS55b3V0dWJlKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gdm9pZCAwO1xuXG52YXIgX3JlYWN0ID0gcmVxdWlyZShcInJlYWN0XCIpO1xuXG52YXIgX3V0aWxzID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuXG52YXIgX3BhdHRlcm5zID0gcmVxdWlyZShcIi4uL3BhdHRlcm5zXCIpO1xuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCBfdHlwZW9mKG9iaikgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG9iaiAhPT0gXCJmdW5jdGlvblwiKSB7IHJldHVybiB7IFwiZGVmYXVsdFwiOiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmpbXCJkZWZhdWx0XCJdID0gb2JqOyBpZiAoY2FjaGUpIHsgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTsgfSByZXR1cm4gbmV3T2JqOyB9XG5cbnZhciBfZGVmYXVsdCA9IFt7XG4gIGtleTogJ3lvdXR1YmUnLFxuICBuYW1lOiAnWW91VHViZScsXG4gIGNhblBsYXk6IF9wYXR0ZXJucy5jYW5QbGF5LnlvdXR1YmUsXG4gIGxhenlQbGF5ZXI6IC8qI19fUFVSRV9fKi8oMCwgX3JlYWN0LmxhenkpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZSgnLi9Zb3VUdWJlJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICdzb3VuZGNsb3VkJyxcbiAgbmFtZTogJ1NvdW5kQ2xvdWQnLFxuICBjYW5QbGF5OiBfcGF0dGVybnMuY2FuUGxheS5zb3VuZGNsb3VkLFxuICBsYXp5UGxheWVyOiAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5sYXp5KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoJy4vU291bmRDbG91ZCcpKTtcbiAgICB9KTtcbiAgfSlcbn0sIHtcbiAga2V5OiAndmltZW8nLFxuICBuYW1lOiAnVmltZW8nLFxuICBjYW5QbGF5OiBfcGF0dGVybnMuY2FuUGxheS52aW1lbyxcbiAgbGF6eVBsYXllcjogLyojX19QVVJFX18qLygwLCBfcmVhY3QubGF6eSkoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKCcuL1ZpbWVvJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICdmYWNlYm9vaycsXG4gIG5hbWU6ICdGYWNlYm9vaycsXG4gIGNhblBsYXk6IF9wYXR0ZXJucy5jYW5QbGF5LmZhY2Vib29rLFxuICBsYXp5UGxheWVyOiAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5sYXp5KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoJy4vRmFjZWJvb2snKSk7XG4gICAgfSk7XG4gIH0pXG59LCB7XG4gIGtleTogJ3N0cmVhbWFibGUnLFxuICBuYW1lOiAnU3RyZWFtYWJsZScsXG4gIGNhblBsYXk6IF9wYXR0ZXJucy5jYW5QbGF5LnN0cmVhbWFibGUsXG4gIGxhenlQbGF5ZXI6IC8qI19fUFVSRV9fKi8oMCwgX3JlYWN0LmxhenkpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZSgnLi9TdHJlYW1hYmxlJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICd3aXN0aWEnLFxuICBuYW1lOiAnV2lzdGlhJyxcbiAgY2FuUGxheTogX3BhdHRlcm5zLmNhblBsYXkud2lzdGlhLFxuICBsYXp5UGxheWVyOiAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5sYXp5KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoJy4vV2lzdGlhJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICd0d2l0Y2gnLFxuICBuYW1lOiAnVHdpdGNoJyxcbiAgY2FuUGxheTogX3BhdHRlcm5zLmNhblBsYXkudHdpdGNoLFxuICBsYXp5UGxheWVyOiAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5sYXp5KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoJy4vVHdpdGNoJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICdkYWlseW1vdGlvbicsXG4gIG5hbWU6ICdEYWlseU1vdGlvbicsXG4gIGNhblBsYXk6IF9wYXR0ZXJucy5jYW5QbGF5LmRhaWx5bW90aW9uLFxuICBsYXp5UGxheWVyOiAvKiNfX1BVUkVfXyovKDAsIF9yZWFjdC5sYXp5KShmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoJy4vRGFpbHlNb3Rpb24nKSk7XG4gICAgfSk7XG4gIH0pXG59LCB7XG4gIGtleTogJ21peGNsb3VkJyxcbiAgbmFtZTogJ01peGNsb3VkJyxcbiAgY2FuUGxheTogX3BhdHRlcm5zLmNhblBsYXkubWl4Y2xvdWQsXG4gIGxhenlQbGF5ZXI6IC8qI19fUFVSRV9fKi8oMCwgX3JlYWN0LmxhenkpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZSgnLi9NaXhjbG91ZCcpKTtcbiAgICB9KTtcbiAgfSlcbn0sIHtcbiAga2V5OiAndmlkeWFyZCcsXG4gIG5hbWU6ICdWaWR5YXJkJyxcbiAgY2FuUGxheTogX3BhdHRlcm5zLmNhblBsYXkudmlkeWFyZCxcbiAgbGF6eVBsYXllcjogLyojX19QVVJFX18qLygwLCBfcmVhY3QubGF6eSkoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKCcuL1ZpZHlhcmQnKSk7XG4gICAgfSk7XG4gIH0pXG59LCB7XG4gIGtleTogJ2thbHR1cmEnLFxuICBuYW1lOiAnS2FsdHVyYScsXG4gIGNhblBsYXk6IF9wYXR0ZXJucy5jYW5QbGF5LmthbHR1cmEsXG4gIGxhenlQbGF5ZXI6IC8qI19fUFVSRV9fKi8oMCwgX3JlYWN0LmxhenkpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQocmVxdWlyZSgnLi9LYWx0dXJhJykpO1xuICAgIH0pO1xuICB9KVxufSwge1xuICBrZXk6ICdmaWxlJyxcbiAgbmFtZTogJ0ZpbGVQbGF5ZXInLFxuICBjYW5QbGF5OiBfcGF0dGVybnMuY2FuUGxheS5maWxlLFxuICBjYW5FbmFibGVQSVA6IGZ1bmN0aW9uIGNhbkVuYWJsZVBJUCh1cmwpIHtcbiAgICByZXR1cm4gX3BhdHRlcm5zLmNhblBsYXkuZmlsZSh1cmwpICYmIChkb2N1bWVudC5waWN0dXJlSW5QaWN0dXJlRW5hYmxlZCB8fCAoMCwgX3V0aWxzLnN1cHBvcnRzV2ViS2l0UHJlc2VudGF0aW9uTW9kZSkoKSkgJiYgIV9wYXR0ZXJucy5BVURJT19FWFRFTlNJT05TLnRlc3QodXJsKTtcbiAgfSxcbiAgbGF6eVBsYXllcjogLyojX19QVVJFX18qLygwLCBfcmVhY3QubGF6eSkoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChyZXF1aXJlKCcuL0ZpbGVQbGF5ZXInKSk7XG4gICAgfSk7XG4gIH0pXG59XTtcbmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gX2RlZmF1bHQ7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHRQcm9wcyA9IGV4cG9ydHMucHJvcFR5cGVzID0gdm9pZCAwO1xuXG52YXIgX3Byb3BUeXBlcyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcInByb3AtdHlwZXNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBcImRlZmF1bHRcIjogb2JqIH07IH1cblxudmFyIHN0cmluZyA9IF9wcm9wVHlwZXNbXCJkZWZhdWx0XCJdLnN0cmluZyxcbiAgICBib29sID0gX3Byb3BUeXBlc1tcImRlZmF1bHRcIl0uYm9vbCxcbiAgICBudW1iZXIgPSBfcHJvcFR5cGVzW1wiZGVmYXVsdFwiXS5udW1iZXIsXG4gICAgYXJyYXkgPSBfcHJvcFR5cGVzW1wiZGVmYXVsdFwiXS5hcnJheSxcbiAgICBvbmVPZlR5cGUgPSBfcHJvcFR5cGVzW1wiZGVmYXVsdFwiXS5vbmVPZlR5cGUsXG4gICAgc2hhcGUgPSBfcHJvcFR5cGVzW1wiZGVmYXVsdFwiXS5zaGFwZSxcbiAgICBvYmplY3QgPSBfcHJvcFR5cGVzW1wiZGVmYXVsdFwiXS5vYmplY3QsXG4gICAgZnVuYyA9IF9wcm9wVHlwZXNbXCJkZWZhdWx0XCJdLmZ1bmMsXG4gICAgbm9kZSA9IF9wcm9wVHlwZXNbXCJkZWZhdWx0XCJdLm5vZGU7XG52YXIgcHJvcFR5cGVzID0ge1xuICB1cmw6IG9uZU9mVHlwZShbc3RyaW5nLCBhcnJheSwgb2JqZWN0XSksXG4gIHBsYXlpbmc6IGJvb2wsXG4gIGxvb3A6IGJvb2wsXG4gIGNvbnRyb2xzOiBib29sLFxuICB2b2x1bWU6IG51bWJlcixcbiAgbXV0ZWQ6IGJvb2wsXG4gIHBsYXliYWNrUmF0ZTogbnVtYmVyLFxuICB3aWR0aDogb25lT2ZUeXBlKFtzdHJpbmcsIG51bWJlcl0pLFxuICBoZWlnaHQ6IG9uZU9mVHlwZShbc3RyaW5nLCBudW1iZXJdKSxcbiAgc3R5bGU6IG9iamVjdCxcbiAgcHJvZ3Jlc3NJbnRlcnZhbDogbnVtYmVyLFxuICBwbGF5c2lubGluZTogYm9vbCxcbiAgcGlwOiBib29sLFxuICBzdG9wT25Vbm1vdW50OiBib29sLFxuICBsaWdodDogb25lT2ZUeXBlKFtib29sLCBzdHJpbmcsIG9iamVjdF0pLFxuICBwbGF5SWNvbjogbm9kZSxcbiAgcHJldmlld1RhYkluZGV4OiBudW1iZXIsXG4gIGZhbGxiYWNrOiBub2RlLFxuICBvRW1iZWRVcmw6IHN0cmluZyxcbiAgd3JhcHBlcjogb25lT2ZUeXBlKFtzdHJpbmcsIGZ1bmMsIHNoYXBlKHtcbiAgICByZW5kZXI6IGZ1bmMuaXNSZXF1aXJlZFxuICB9KV0pLFxuICBjb25maWc6IHNoYXBlKHtcbiAgICBzb3VuZGNsb3VkOiBzaGFwZSh7XG4gICAgICBvcHRpb25zOiBvYmplY3RcbiAgICB9KSxcbiAgICB5b3V0dWJlOiBzaGFwZSh7XG4gICAgICBwbGF5ZXJWYXJzOiBvYmplY3QsXG4gICAgICBlbWJlZE9wdGlvbnM6IG9iamVjdCxcbiAgICAgIG9uVW5zdGFydGVkOiBmdW5jXG4gICAgfSksXG4gICAgZmFjZWJvb2s6IHNoYXBlKHtcbiAgICAgIGFwcElkOiBzdHJpbmcsXG4gICAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICAgICBwbGF5ZXJJZDogc3RyaW5nLFxuICAgICAgYXR0cmlidXRlczogb2JqZWN0XG4gICAgfSksXG4gICAgZGFpbHltb3Rpb246IHNoYXBlKHtcbiAgICAgIHBhcmFtczogb2JqZWN0XG4gICAgfSksXG4gICAgdmltZW86IHNoYXBlKHtcbiAgICAgIHBsYXllck9wdGlvbnM6IG9iamVjdCxcbiAgICAgIHRpdGxlOiBzdHJpbmdcbiAgICB9KSxcbiAgICBmaWxlOiBzaGFwZSh7XG4gICAgICBhdHRyaWJ1dGVzOiBvYmplY3QsXG4gICAgICB0cmFja3M6IGFycmF5LFxuICAgICAgZm9yY2VWaWRlbzogYm9vbCxcbiAgICAgIGZvcmNlQXVkaW86IGJvb2wsXG4gICAgICBmb3JjZUhMUzogYm9vbCxcbiAgICAgIGZvcmNlREFTSDogYm9vbCxcbiAgICAgIGZvcmNlRkxWOiBib29sLFxuICAgICAgaGxzT3B0aW9uczogb2JqZWN0LFxuICAgICAgaGxzVmVyc2lvbjogc3RyaW5nLFxuICAgICAgZGFzaFZlcnNpb246IHN0cmluZyxcbiAgICAgIGZsdlZlcnNpb246IHN0cmluZ1xuICAgIH0pLFxuICAgIHdpc3RpYTogc2hhcGUoe1xuICAgICAgb3B0aW9uczogb2JqZWN0LFxuICAgICAgcGxheWVySWQ6IHN0cmluZyxcbiAgICAgIGN1c3RvbUNvbnRyb2xzOiBhcnJheVxuICAgIH0pLFxuICAgIG1peGNsb3VkOiBzaGFwZSh7XG4gICAgICBvcHRpb25zOiBvYmplY3RcbiAgICB9KSxcbiAgICB0d2l0Y2g6IHNoYXBlKHtcbiAgICAgIG9wdGlvbnM6IG9iamVjdCxcbiAgICAgIHBsYXllcklkOiBzdHJpbmdcbiAgICB9KSxcbiAgICB2aWR5YXJkOiBzaGFwZSh7XG4gICAgICBvcHRpb25zOiBvYmplY3RcbiAgICB9KVxuICB9KSxcbiAgb25SZWFkeTogZnVuYyxcbiAgb25TdGFydDogZnVuYyxcbiAgb25QbGF5OiBmdW5jLFxuICBvblBhdXNlOiBmdW5jLFxuICBvbkJ1ZmZlcjogZnVuYyxcbiAgb25CdWZmZXJFbmQ6IGZ1bmMsXG4gIG9uRW5kZWQ6IGZ1bmMsXG4gIG9uRXJyb3I6IGZ1bmMsXG4gIG9uRHVyYXRpb246IGZ1bmMsXG4gIG9uU2VlazogZnVuYyxcbiAgb25QbGF5YmFja1JhdGVDaGFuZ2U6IGZ1bmMsXG4gIG9uUHJvZ3Jlc3M6IGZ1bmMsXG4gIG9uQ2xpY2tQcmV2aWV3OiBmdW5jLFxuICBvbkVuYWJsZVBJUDogZnVuYyxcbiAgb25EaXNhYmxlUElQOiBmdW5jXG59O1xuZXhwb3J0cy5wcm9wVHlwZXMgPSBwcm9wVHlwZXM7XG5cbnZhciBub29wID0gZnVuY3Rpb24gbm9vcCgpIHt9O1xuXG52YXIgZGVmYXVsdFByb3BzID0ge1xuICBwbGF5aW5nOiBmYWxzZSxcbiAgbG9vcDogZmFsc2UsXG4gIGNvbnRyb2xzOiBmYWxzZSxcbiAgdm9sdW1lOiBudWxsLFxuICBtdXRlZDogZmFsc2UsXG4gIHBsYXliYWNrUmF0ZTogMSxcbiAgd2lkdGg6ICc2NDBweCcsXG4gIGhlaWdodDogJzM2MHB4JyxcbiAgc3R5bGU6IHt9LFxuICBwcm9ncmVzc0ludGVydmFsOiAxMDAwLFxuICBwbGF5c2lubGluZTogZmFsc2UsXG4gIHBpcDogZmFsc2UsXG4gIHN0b3BPblVubW91bnQ6IHRydWUsXG4gIGxpZ2h0OiBmYWxzZSxcbiAgZmFsbGJhY2s6IG51bGwsXG4gIHdyYXBwZXI6ICdkaXYnLFxuICBwcmV2aWV3VGFiSW5kZXg6IDAsXG4gIG9FbWJlZFVybDogJ2h0dHBzOi8vbm9lbWJlZC5jb20vZW1iZWQ/dXJsPXt1cmx9JyxcbiAgY29uZmlnOiB7XG4gICAgc291bmRjbG91ZDoge1xuICAgICAgb3B0aW9uczoge1xuICAgICAgICB2aXN1YWw6IHRydWUsXG4gICAgICAgIC8vIFVuZG9jdW1lbnRlZCwgYnV0IG1ha2VzIHBsYXllciBmaWxsIGNvbnRhaW5lciBhbmQgbG9vayBiZXR0ZXJcbiAgICAgICAgYnV5aW5nOiBmYWxzZSxcbiAgICAgICAgbGlraW5nOiBmYWxzZSxcbiAgICAgICAgZG93bmxvYWQ6IGZhbHNlLFxuICAgICAgICBzaGFyaW5nOiBmYWxzZSxcbiAgICAgICAgc2hvd19jb21tZW50czogZmFsc2UsXG4gICAgICAgIHNob3dfcGxheWNvdW50OiBmYWxzZVxuICAgICAgfVxuICAgIH0sXG4gICAgeW91dHViZToge1xuICAgICAgcGxheWVyVmFyczoge1xuICAgICAgICBwbGF5c2lubGluZTogMSxcbiAgICAgICAgc2hvd2luZm86IDAsXG4gICAgICAgIHJlbDogMCxcbiAgICAgICAgaXZfbG9hZF9wb2xpY3k6IDMsXG4gICAgICAgIG1vZGVzdGJyYW5kaW5nOiAxXG4gICAgICB9LFxuICAgICAgZW1iZWRPcHRpb25zOiB7fSxcbiAgICAgIG9uVW5zdGFydGVkOiBub29wXG4gICAgfSxcbiAgICBmYWNlYm9vazoge1xuICAgICAgYXBwSWQ6ICcxMzA5Njk3MjA1NzcyODE5JyxcbiAgICAgIHZlcnNpb246ICd2My4zJyxcbiAgICAgIHBsYXllcklkOiBudWxsLFxuICAgICAgYXR0cmlidXRlczoge31cbiAgICB9LFxuICAgIGRhaWx5bW90aW9uOiB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgYXBpOiAxLFxuICAgICAgICAnZW5kc2NyZWVuLWVuYWJsZSc6IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICB2aW1lbzoge1xuICAgICAgcGxheWVyT3B0aW9uczoge1xuICAgICAgICBhdXRvcGF1c2U6IGZhbHNlLFxuICAgICAgICBieWxpbmU6IGZhbHNlLFxuICAgICAgICBwb3J0cmFpdDogZmFsc2UsXG4gICAgICAgIHRpdGxlOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHRpdGxlOiBudWxsXG4gICAgfSxcbiAgICBmaWxlOiB7XG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHRyYWNrczogW10sXG4gICAgICBmb3JjZVZpZGVvOiBmYWxzZSxcbiAgICAgIGZvcmNlQXVkaW86IGZhbHNlLFxuICAgICAgZm9yY2VITFM6IGZhbHNlLFxuICAgICAgZm9yY2VEQVNIOiBmYWxzZSxcbiAgICAgIGZvcmNlRkxWOiBmYWxzZSxcbiAgICAgIGhsc09wdGlvbnM6IHt9LFxuICAgICAgaGxzVmVyc2lvbjogJzEuMS40JyxcbiAgICAgIGRhc2hWZXJzaW9uOiAnMy4xLjMnLFxuICAgICAgZmx2VmVyc2lvbjogJzEuNS4wJ1xuICAgIH0sXG4gICAgd2lzdGlhOiB7XG4gICAgICBvcHRpb25zOiB7fSxcbiAgICAgIHBsYXllcklkOiBudWxsLFxuICAgICAgY3VzdG9tQ29udHJvbHM6IG51bGxcbiAgICB9LFxuICAgIG1peGNsb3VkOiB7XG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGhpZGVfY292ZXI6IDFcbiAgICAgIH1cbiAgICB9LFxuICAgIHR3aXRjaDoge1xuICAgICAgb3B0aW9uczoge30sXG4gICAgICBwbGF5ZXJJZDogbnVsbFxuICAgIH0sXG4gICAgdmlkeWFyZDoge1xuICAgICAgb3B0aW9uczoge31cbiAgICB9XG4gIH0sXG4gIG9uUmVhZHk6IG5vb3AsXG4gIG9uU3RhcnQ6IG5vb3AsXG4gIG9uUGxheTogbm9vcCxcbiAgb25QYXVzZTogbm9vcCxcbiAgb25CdWZmZXI6IG5vb3AsXG4gIG9uQnVmZmVyRW5kOiBub29wLFxuICBvbkVuZGVkOiBub29wLFxuICBvbkVycm9yOiBub29wLFxuICBvbkR1cmF0aW9uOiBub29wLFxuICBvblNlZWs6IG5vb3AsXG4gIG9uUGxheWJhY2tSYXRlQ2hhbmdlOiBub29wLFxuICBvblByb2dyZXNzOiBub29wLFxuICBvbkNsaWNrUHJldmlldzogbm9vcCxcbiAgb25FbmFibGVQSVA6IG5vb3AsXG4gIG9uRGlzYWJsZVBJUDogbm9vcFxufTtcbmV4cG9ydHMuZGVmYXVsdFByb3BzID0gZGVmYXVsdFByb3BzOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5wYXJzZVN0YXJ0VGltZSA9IHBhcnNlU3RhcnRUaW1lO1xuZXhwb3J0cy5wYXJzZUVuZFRpbWUgPSBwYXJzZUVuZFRpbWU7XG5leHBvcnRzLnJhbmRvbVN0cmluZyA9IHJhbmRvbVN0cmluZztcbmV4cG9ydHMucXVlcnlTdHJpbmcgPSBxdWVyeVN0cmluZztcbmV4cG9ydHMuZ2V0U0RLID0gZ2V0U0RLO1xuZXhwb3J0cy5nZXRDb25maWcgPSBnZXRDb25maWc7XG5leHBvcnRzLm9taXQgPSBvbWl0O1xuZXhwb3J0cy5jYWxsUGxheWVyID0gY2FsbFBsYXllcjtcbmV4cG9ydHMuaXNNZWRpYVN0cmVhbSA9IGlzTWVkaWFTdHJlYW07XG5leHBvcnRzLmlzQmxvYlVybCA9IGlzQmxvYlVybDtcbmV4cG9ydHMuc3VwcG9ydHNXZWJLaXRQcmVzZW50YXRpb25Nb2RlID0gc3VwcG9ydHNXZWJLaXRQcmVzZW50YXRpb25Nb2RlO1xuXG52YXIgX2xvYWRTY3JpcHQgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJsb2FkLXNjcmlwdFwiKSk7XG5cbnZhciBfZGVlcG1lcmdlID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiZGVlcG1lcmdlXCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgXCJkZWZhdWx0XCI6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH1cblxuZnVuY3Rpb24gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KG8sIG1pbkxlbikgeyBpZiAoIW8pIHJldHVybjsgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgdmFyIG4gPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobykuc2xpY2UoOCwgLTEpOyBpZiAobiA9PT0gXCJPYmplY3RcIiAmJiBvLmNvbnN0cnVjdG9yKSBuID0gby5jb25zdHJ1Y3Rvci5uYW1lOyBpZiAobiA9PT0gXCJNYXBcIiB8fCBuID09PSBcIlNldFwiKSByZXR1cm4gQXJyYXkuZnJvbShvKTsgaWYgKG4gPT09IFwiQXJndW1lbnRzXCIgfHwgL14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB9XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7IGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoOyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IG5ldyBBcnJheShsZW4pOyBpIDwgbGVuOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcInVuZGVmaW5lZFwiIHx8ICEoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChhcnIpKSkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbnZhciBNQVRDSF9TVEFSVF9RVUVSWSA9IC9bPyYjXSg/OnN0YXJ0fHQpPShbMC05aG1zXSspLztcbnZhciBNQVRDSF9FTkRfUVVFUlkgPSAvWz8mI11lbmQ9KFswLTlobXNdKykvO1xudmFyIE1BVENIX1NUQVJUX1NUQU1QID0gLyhcXGQrKShofG18cykvZztcbnZhciBNQVRDSF9OVU1FUklDID0gL15cXGQrJC87IC8vIFBhcnNlIFlvdVR1YmUgVVJMIGZvciBhIHN0YXJ0IHRpbWUgcGFyYW0sIGllID90PTFoMTRtMzBzXG4vLyBhbmQgcmV0dXJuIHRoZSBzdGFydCB0aW1lIGluIHNlY29uZHNcblxuZnVuY3Rpb24gcGFyc2VUaW1lUGFyYW0odXJsLCBwYXR0ZXJuKSB7XG4gIGlmICh1cmwgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2gocGF0dGVybik7XG5cbiAgaWYgKG1hdGNoKSB7XG4gICAgdmFyIHN0YW1wID0gbWF0Y2hbMV07XG5cbiAgICBpZiAoc3RhbXAubWF0Y2goTUFUQ0hfU1RBUlRfU1RBTVApKSB7XG4gICAgICByZXR1cm4gcGFyc2VUaW1lU3RyaW5nKHN0YW1wKTtcbiAgICB9XG5cbiAgICBpZiAoTUFUQ0hfTlVNRVJJQy50ZXN0KHN0YW1wKSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KHN0YW1wKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRpbWVTdHJpbmcoc3RhbXApIHtcbiAgdmFyIHNlY29uZHMgPSAwO1xuICB2YXIgYXJyYXkgPSBNQVRDSF9TVEFSVF9TVEFNUC5leGVjKHN0YW1wKTtcblxuICB3aGlsZSAoYXJyYXkgIT09IG51bGwpIHtcbiAgICB2YXIgX2FycmF5ID0gYXJyYXksXG4gICAgICAgIF9hcnJheTIgPSBfc2xpY2VkVG9BcnJheShfYXJyYXksIDMpLFxuICAgICAgICBjb3VudCA9IF9hcnJheTJbMV0sXG4gICAgICAgIHBlcmlvZCA9IF9hcnJheTJbMl07XG5cbiAgICBpZiAocGVyaW9kID09PSAnaCcpIHNlY29uZHMgKz0gcGFyc2VJbnQoY291bnQsIDEwKSAqIDYwICogNjA7XG4gICAgaWYgKHBlcmlvZCA9PT0gJ20nKSBzZWNvbmRzICs9IHBhcnNlSW50KGNvdW50LCAxMCkgKiA2MDtcbiAgICBpZiAocGVyaW9kID09PSAncycpIHNlY29uZHMgKz0gcGFyc2VJbnQoY291bnQsIDEwKTtcbiAgICBhcnJheSA9IE1BVENIX1NUQVJUX1NUQU1QLmV4ZWMoc3RhbXApO1xuICB9XG5cbiAgcmV0dXJuIHNlY29uZHM7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU3RhcnRUaW1lKHVybCkge1xuICByZXR1cm4gcGFyc2VUaW1lUGFyYW0odXJsLCBNQVRDSF9TVEFSVF9RVUVSWSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRW5kVGltZSh1cmwpIHtcbiAgcmV0dXJuIHBhcnNlVGltZVBhcmFtKHVybCwgTUFUQ0hfRU5EX1FVRVJZKTtcbn0gLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzg2MjI1NDVcblxuXG5mdW5jdGlvbiByYW5kb21TdHJpbmcoKSB7XG4gIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgNSk7XG59XG5cbmZ1bmN0aW9uIHF1ZXJ5U3RyaW5nKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBcIlwiLmNvbmNhdChrZXksIFwiPVwiKS5jb25jYXQob2JqZWN0W2tleV0pO1xuICB9KS5qb2luKCcmJyk7XG59XG5cbmZ1bmN0aW9uIGdldEdsb2JhbChrZXkpIHtcbiAgaWYgKHdpbmRvd1trZXldKSB7XG4gICAgcmV0dXJuIHdpbmRvd1trZXldO1xuICB9XG5cbiAgaWYgKHdpbmRvdy5leHBvcnRzICYmIHdpbmRvdy5leHBvcnRzW2tleV0pIHtcbiAgICByZXR1cm4gd2luZG93LmV4cG9ydHNba2V5XTtcbiAgfVxuXG4gIGlmICh3aW5kb3cubW9kdWxlICYmIHdpbmRvdy5tb2R1bGUuZXhwb3J0cyAmJiB3aW5kb3cubW9kdWxlLmV4cG9ydHNba2V5XSkge1xuICAgIHJldHVybiB3aW5kb3cubW9kdWxlLmV4cG9ydHNba2V5XTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufSAvLyBVdGlsIGZ1bmN0aW9uIHRvIGxvYWQgYW4gZXh0ZXJuYWwgU0RLXG4vLyBvciByZXR1cm4gdGhlIFNESyBpZiBpdCBpcyBhbHJlYWR5IGxvYWRlZFxuXG5cbnZhciByZXF1ZXN0cyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRTREsodXJsLCBzZGtHbG9iYWwpIHtcbiAgdmFyIHNka1JlYWR5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBudWxsO1xuICB2YXIgaXNMb2FkZWQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbiAgdmFyIGZldGNoU2NyaXB0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiBfbG9hZFNjcmlwdFtcImRlZmF1bHRcIl07XG4gIHZhciBleGlzdGluZ0dsb2JhbCA9IGdldEdsb2JhbChzZGtHbG9iYWwpO1xuXG4gIGlmIChleGlzdGluZ0dsb2JhbCAmJiBpc0xvYWRlZChleGlzdGluZ0dsb2JhbCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGV4aXN0aW5nR2xvYmFsKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgbG9hZGluZyB0aGUgU0RLLCBhZGQgdGhlIHJlc29sdmUgYW5kIHJlamVjdFxuICAgIC8vIGZ1bmN0aW9ucyB0byB0aGUgZXhpc3RpbmcgYXJyYXkgb2YgcmVxdWVzdHNcbiAgICBpZiAocmVxdWVzdHNbdXJsXSkge1xuICAgICAgcmVxdWVzdHNbdXJsXS5wdXNoKHtcbiAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgcmVqZWN0OiByZWplY3RcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJlcXVlc3RzW3VybF0gPSBbe1xuICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgfV07XG5cbiAgICB2YXIgb25Mb2FkZWQgPSBmdW5jdGlvbiBvbkxvYWRlZChzZGspIHtcbiAgICAgIC8vIFdoZW4gbG9hZGVkLCByZXNvbHZlIGFsbCBwZW5kaW5nIHJlcXVlc3QgcHJvbWlzZXNcbiAgICAgIHJlcXVlc3RzW3VybF0uZm9yRWFjaChmdW5jdGlvbiAocmVxdWVzdCkge1xuICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNvbHZlKHNkayk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgaWYgKHNka1JlYWR5KSB7XG4gICAgICB2YXIgcHJldmlvdXNPblJlYWR5ID0gd2luZG93W3Nka1JlYWR5XTtcblxuICAgICAgd2luZG93W3Nka1JlYWR5XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHByZXZpb3VzT25SZWFkeSkgcHJldmlvdXNPblJlYWR5KCk7XG4gICAgICAgIG9uTG9hZGVkKGdldEdsb2JhbChzZGtHbG9iYWwpKTtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZmV0Y2hTY3JpcHQodXJsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIC8vIExvYWRpbmcgdGhlIFNESyBmYWlsZWQg4oCTIHJlamVjdCBhbGwgcmVxdWVzdHMgYW5kXG4gICAgICAgIC8vIHJlc2V0IHRoZSBhcnJheSBvZiByZXF1ZXN0cyBmb3IgdGhpcyBTREtcbiAgICAgICAgcmVxdWVzdHNbdXJsXS5mb3JFYWNoKGZ1bmN0aW9uIChyZXF1ZXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlcXVlc3QucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgICByZXF1ZXN0c1t1cmxdID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoIXNka1JlYWR5KSB7XG4gICAgICAgIG9uTG9hZGVkKGdldEdsb2JhbChzZGtHbG9iYWwpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZyhwcm9wcywgZGVmYXVsdFByb3BzKSB7XG4gIHJldHVybiAoMCwgX2RlZXBtZXJnZVtcImRlZmF1bHRcIl0pKGRlZmF1bHRQcm9wcy5jb25maWcsIHByb3BzLmNvbmZpZyk7XG59XG5cbmZ1bmN0aW9uIG9taXQob2JqZWN0KSB7XG4gIHZhciBfcmVmO1xuXG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcnJheXMgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFycmF5c1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgb21pdEtleXMgPSAoX3JlZiA9IFtdKS5jb25jYXQuYXBwbHkoX3JlZiwgYXJyYXlzKTtcblxuICB2YXIgb3V0cHV0ID0ge307XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcblxuICBmb3IgKHZhciBfaTIgPSAwLCBfa2V5cyA9IGtleXM7IF9pMiA8IF9rZXlzLmxlbmd0aDsgX2kyKyspIHtcbiAgICB2YXIga2V5ID0gX2tleXNbX2kyXTtcblxuICAgIGlmIChvbWl0S2V5cy5pbmRleE9mKGtleSkgPT09IC0xKSB7XG4gICAgICBvdXRwdXRba2V5XSA9IG9iamVjdFtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmZ1bmN0aW9uIGNhbGxQbGF5ZXIobWV0aG9kKSB7XG4gIHZhciBfdGhpcyRwbGF5ZXI7XG5cbiAgLy8gVXRpbCBtZXRob2QgZm9yIGNhbGxpbmcgYSBtZXRob2Qgb24gdGhpcy5wbGF5ZXJcbiAgLy8gYnV0IGd1YXJkIGFnYWluc3QgZXJyb3JzIGFuZCBjb25zb2xlLndhcm4gaW5zdGVhZFxuICBpZiAoIXRoaXMucGxheWVyIHx8ICF0aGlzLnBsYXllclttZXRob2RdKSB7XG4gICAgdmFyIG1lc3NhZ2UgPSBcIlJlYWN0UGxheWVyOiBcIi5jb25jYXQodGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSwgXCIgcGxheWVyIGNvdWxkIG5vdCBjYWxsICVjXCIpLmNvbmNhdChtZXRob2QsIFwiJWMgXFx1MjAxMyBcIik7XG5cbiAgICBpZiAoIXRoaXMucGxheWVyKSB7XG4gICAgICBtZXNzYWdlICs9ICdUaGUgcGxheWVyIHdhcyBub3QgYXZhaWxhYmxlJztcbiAgICB9IGVsc2UgaWYgKCF0aGlzLnBsYXllclttZXRob2RdKSB7XG4gICAgICBtZXNzYWdlICs9ICdUaGUgbWV0aG9kIHdhcyBub3QgYXZhaWxhYmxlJztcbiAgICB9XG5cbiAgICBjb25zb2xlLndhcm4obWVzc2FnZSwgJ2ZvbnQtd2VpZ2h0OiBib2xkJywgJycpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xuICB9XG5cbiAgcmV0dXJuIChfdGhpcyRwbGF5ZXIgPSB0aGlzLnBsYXllcilbbWV0aG9kXS5hcHBseShfdGhpcyRwbGF5ZXIsIGFyZ3MpO1xufVxuXG5mdW5jdGlvbiBpc01lZGlhU3RyZWFtKHVybCkge1xuICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5NZWRpYVN0cmVhbSAhPT0gJ3VuZGVmaW5lZCcgJiYgdXJsIGluc3RhbmNlb2Ygd2luZG93Lk1lZGlhU3RyZWFtO1xufVxuXG5mdW5jdGlvbiBpc0Jsb2JVcmwodXJsKSB7XG4gIHJldHVybiAvXmJsb2I6Ly50ZXN0KHVybCk7XG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRzV2ViS2l0UHJlc2VudGF0aW9uTW9kZSgpIHtcbiAgdmFyIHZpZGVvID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycpO1xuICAvLyBDaGVjayBpZiBTYWZhcmkgc3VwcG9ydHMgUGlQLCBhbmQgaXMgbm90IG9uIG1vYmlsZSAob3RoZXIgdGhhbiBpUGFkKVxuICAvLyBpUGhvbmUgc2FmYXJpIGFwcGVhcnMgdG8gXCJzdXBwb3J0XCIgUGlQIHRocm91Z2ggdGhlIGNoZWNrLCBob3dldmVyIFBpUCBkb2VzIG5vdCBmdW5jdGlvblxuICB2YXIgbm90TW9iaWxlID0gL2lQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpID09PSBmYWxzZTtcbiAgcmV0dXJuIHZpZGVvLndlYmtpdFN1cHBvcnRzUHJlc2VudGF0aW9uTW9kZSAmJiB0eXBlb2YgdmlkZW8ud2Via2l0U2V0UHJlc2VudGF0aW9uTW9kZSA9PT0gJ2Z1bmN0aW9uJyAmJiBub3RNb2JpbGU7XG59IiwiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShyZXF1aXJlKFwicmVhY3RcIiksIHJlcXVpcmUoXCJyZWFjdC1kb21cIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wiUmVhY3RcIiwgXCJSZWFjdERPTVwiXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJyZWFjdC12aXNpYmlsaXR5LXNlbnNvclwiXSA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0XCIpLCByZXF1aXJlKFwicmVhY3QtZG9tXCIpKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJyZWFjdC12aXNpYmlsaXR5LXNlbnNvclwiXSA9IGZhY3Rvcnkocm9vdFtcIlJlYWN0XCJdLCByb290W1wiUmVhY3RET01cIl0pO1xufSkodGhpcywgZnVuY3Rpb24oX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMV9fLCBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18yX18pIHtcbnJldHVybiAvKioqKioqLyAoZnVuY3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbi8qKioqKiovIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuLyoqKioqKi8gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbi8qKioqKiovIFx0XHRcdGk6IG1vZHVsZUlkLFxuLyoqKioqKi8gXHRcdFx0bDogZmFsc2UsXG4vKioqKioqLyBcdFx0XHRleHBvcnRzOiB7fVxuLyoqKioqKi8gXHRcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuLyoqKioqKi8gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4vKioqKioqLyBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoqKioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9cbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuLyoqKioqKi8gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbi8qKioqKiovIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuLyoqKioqKi8gXHRcdH1cbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuLyoqKioqKi8gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuLyoqKioqKi8gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4vKioqKioqLyBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuLyoqKioqKi8gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3Rcbi8qKioqKiovIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4vKioqKioqLyBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbi8qKioqKiovIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuLyoqKioqKi8gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gbnM7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbi8qKioqKiovIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4vKioqKioqLyBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuLyoqKioqKi8gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbi8qKioqKiovIFx0XHRyZXR1cm4gZ2V0dGVyO1xuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG4vKioqKioqL1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDQpO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioqKioqLyAoW1xuLyogMCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbmlmIChmYWxzZSkgeyB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcywgUmVhY3RJczsgfSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNSkoKTtcbn1cblxuXG4vKioqLyB9KSxcbi8qIDEgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xX187XG5cbi8qKiovIH0pLFxuLyogMiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzJfXztcblxuLyoqKi8gfSksXG4vKiAzICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbi8vIFRlbGwgd2hldGhlciB0aGUgcmVjdCBpcyB2aXNpYmxlLCBnaXZlbiBhbiBvZmZzZXRcbi8vXG4vLyByZXR1cm46IGJvb2xlYW5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9mZnNldCwgcmVjdCwgY29udGFpbm1lbnRSZWN0KSB7XG4gIHZhciBvZmZzZXREaXIgPSBvZmZzZXQuZGlyZWN0aW9uO1xuICB2YXIgb2Zmc2V0VmFsID0gb2Zmc2V0LnZhbHVlOyAvLyBSdWxlcyBmb3IgY2hlY2tpbmcgZGlmZmVyZW50IGtpbmQgb2Ygb2Zmc2V0cy4gSW4gZXhhbXBsZSBpZiB0aGUgZWxlbWVudCBpc1xuICAvLyA5MHB4IGJlbG93IHZpZXdwb3J0IGFuZCBvZmZzZXRUb3AgaXMgMTAwLCBpdCBpcyBjb25zaWRlcmVkIHZpc2libGUuXG5cbiAgc3dpdGNoIChvZmZzZXREaXIpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgICAgcmV0dXJuIGNvbnRhaW5tZW50UmVjdC50b3AgKyBvZmZzZXRWYWwgPCByZWN0LnRvcCAmJiBjb250YWlubWVudFJlY3QuYm90dG9tID4gcmVjdC5ib3R0b20gJiYgY29udGFpbm1lbnRSZWN0LmxlZnQgPCByZWN0LmxlZnQgJiYgY29udGFpbm1lbnRSZWN0LnJpZ2h0ID4gcmVjdC5yaWdodDtcblxuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgcmV0dXJuIGNvbnRhaW5tZW50UmVjdC5sZWZ0ICsgb2Zmc2V0VmFsIDwgcmVjdC5sZWZ0ICYmIGNvbnRhaW5tZW50UmVjdC5ib3R0b20gPiByZWN0LmJvdHRvbSAmJiBjb250YWlubWVudFJlY3QudG9wIDwgcmVjdC50b3AgJiYgY29udGFpbm1lbnRSZWN0LnJpZ2h0ID4gcmVjdC5yaWdodDtcblxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICByZXR1cm4gY29udGFpbm1lbnRSZWN0LmJvdHRvbSAtIG9mZnNldFZhbCA+IHJlY3QuYm90dG9tICYmIGNvbnRhaW5tZW50UmVjdC5sZWZ0IDwgcmVjdC5sZWZ0ICYmIGNvbnRhaW5tZW50UmVjdC5yaWdodCA+IHJlY3QucmlnaHQgJiYgY29udGFpbm1lbnRSZWN0LnRvcCA8IHJlY3QudG9wO1xuXG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGNvbnRhaW5tZW50UmVjdC5yaWdodCAtIG9mZnNldFZhbCA+IHJlY3QucmlnaHQgJiYgY29udGFpbm1lbnRSZWN0LmxlZnQgPCByZWN0LmxlZnQgJiYgY29udGFpbm1lbnRSZWN0LnRvcCA8IHJlY3QudG9wICYmIGNvbnRhaW5tZW50UmVjdC5ib3R0b20gPiByZWN0LmJvdHRvbTtcbiAgfVxufTtcblxuLyoqKi8gfSksXG4vKiA0ICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yKF9fd2VicGFja19leHBvcnRzX18pO1xuLyogaGFybW9ueSBleHBvcnQgKGJpbmRpbmcpICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCBcImRlZmF1bHRcIiwgZnVuY3Rpb24oKSB7IHJldHVybiBWaXNpYmlsaXR5U2Vuc29yOyB9KTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciByZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciByZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQgPSAvKiNfX1BVUkVfXyovX193ZWJwYWNrX3JlcXVpcmVfXy5uKHJlYWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18pO1xuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIHJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciByZWFjdF9kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX19kZWZhdWx0ID0gLyojX19QVVJFX18qL19fd2VicGFja19yZXF1aXJlX18ubihyZWFjdF9kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4ocHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fKTtcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfbGliX2lzX3Zpc2libGVfd2l0aF9vZmZzZXRfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2xpYl9pc192aXNpYmxlX3dpdGhfb2Zmc2V0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCA9IC8qI19fUFVSRV9fKi9fX3dlYnBhY2tfcmVxdWlyZV9fLm4oX2xpYl9pc192aXNpYmxlX3dpdGhfb2Zmc2V0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX18pO1xuXG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgX3NldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5cblxuXG5cblxuZnVuY3Rpb24gbm9ybWFsaXplUmVjdChyZWN0KSB7XG4gIGlmIChyZWN0LndpZHRoID09PSB1bmRlZmluZWQpIHtcbiAgICByZWN0LndpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdDtcbiAgfVxuXG4gIGlmIChyZWN0LmhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmVjdC5oZWlnaHQgPSByZWN0LmJvdHRvbSAtIHJlY3QudG9wO1xuICB9XG5cbiAgcmV0dXJuIHJlY3Q7XG59XG5cbnZhciBWaXNpYmlsaXR5U2Vuc29yID1cbi8qI19fUFVSRV9fKi9cbmZ1bmN0aW9uIChfUmVhY3QkQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhWaXNpYmlsaXR5U2Vuc29yLCBfUmVhY3QkQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBWaXNpYmlsaXR5U2Vuc29yKHByb3BzKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZpc2liaWxpdHlTZW5zb3IpO1xuXG4gICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoVmlzaWJpbGl0eVNlbnNvcikuY2FsbCh0aGlzLCBwcm9wcykpO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImdldENvbnRhaW5lclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gX3RoaXMucHJvcHMuY29udGFpbm1lbnQgfHwgd2luZG93O1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImFkZEV2ZW50TGlzdGVuZXJcIiwgZnVuY3Rpb24gKHRhcmdldCwgZXZlbnQsIGRlbGF5LCB0aHJvdHRsZSkge1xuICAgICAgaWYgKCFfdGhpcy5kZWJvdW5jZUNoZWNrKSB7XG4gICAgICAgIF90aGlzLmRlYm91bmNlQ2hlY2sgPSB7fTtcbiAgICAgIH1cblxuICAgICAgdmFyIHRpbWVvdXQ7XG4gICAgICB2YXIgZnVuYztcblxuICAgICAgdmFyIGxhdGVyID0gZnVuY3Rpb24gbGF0ZXIoKSB7XG4gICAgICAgIHRpbWVvdXQgPSBudWxsO1xuXG4gICAgICAgIF90aGlzLmNoZWNrKCk7XG4gICAgICB9O1xuXG4gICAgICBpZiAodGhyb3R0bGUgPiAtMSkge1xuICAgICAgICBmdW5jID0gZnVuY3Rpb24gZnVuYygpIHtcbiAgICAgICAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB0aHJvdHRsZSB8fCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmdW5jID0gZnVuY3Rpb24gZnVuYygpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIGRlbGF5IHx8IDApO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB2YXIgaW5mbyA9IHtcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIGZuOiBmdW5jLFxuICAgICAgICBnZXRMYXN0VGltZW91dDogZnVuY3Rpb24gZ2V0TGFzdFRpbWVvdXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaW5mby5mbik7XG4gICAgICBfdGhpcy5kZWJvdW5jZUNoZWNrW2V2ZW50XSA9IGluZm87XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RhcnRXYXRjaGluZ1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoX3RoaXMuZGVib3VuY2VDaGVjayB8fCBfdGhpcy5pbnRlcnZhbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChfdGhpcy5wcm9wcy5pbnRlcnZhbENoZWNrKSB7XG4gICAgICAgIF90aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoX3RoaXMuY2hlY2ssIF90aGlzLnByb3BzLmludGVydmFsRGVsYXkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoX3RoaXMucHJvcHMuc2Nyb2xsQ2hlY2spIHtcbiAgICAgICAgX3RoaXMuYWRkRXZlbnRMaXN0ZW5lcihfdGhpcy5nZXRDb250YWluZXIoKSwgXCJzY3JvbGxcIiwgX3RoaXMucHJvcHMuc2Nyb2xsRGVsYXksIF90aGlzLnByb3BzLnNjcm9sbFRocm90dGxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKF90aGlzLnByb3BzLnJlc2l6ZUNoZWNrKSB7XG4gICAgICAgIF90aGlzLmFkZEV2ZW50TGlzdGVuZXIod2luZG93LCBcInJlc2l6ZVwiLCBfdGhpcy5wcm9wcy5yZXNpemVEZWxheSwgX3RoaXMucHJvcHMucmVzaXplVGhyb3R0bGUpO1xuICAgICAgfSAvLyBpZiBkb250IG5lZWQgZGVsYXllZCBjYWxsLCBjaGVjayBvbiBsb2FkICggYmVmb3JlIHRoZSBmaXJzdCBpbnRlcnZhbCBmaXJlcyApXG5cblxuICAgICAgIV90aGlzLnByb3BzLmRlbGF5ZWRDYWxsICYmIF90aGlzLmNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwic3RvcFdhdGNoaW5nXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpcy5kZWJvdW5jZUNoZWNrKSB7XG4gICAgICAgIC8vIGNsZWFuIHVwIGV2ZW50IGxpc3RlbmVycyBhbmQgdGhlaXIgZGVib3VuY2UgY2FsbGVyc1xuICAgICAgICBmb3IgKHZhciBkZWJvdW5jZUV2ZW50IGluIF90aGlzLmRlYm91bmNlQ2hlY2spIHtcbiAgICAgICAgICBpZiAoX3RoaXMuZGVib3VuY2VDaGVjay5oYXNPd25Qcm9wZXJ0eShkZWJvdW5jZUV2ZW50KSkge1xuICAgICAgICAgICAgdmFyIGRlYm91bmNlSW5mbyA9IF90aGlzLmRlYm91bmNlQ2hlY2tbZGVib3VuY2VFdmVudF07XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VJbmZvLmdldExhc3RUaW1lb3V0KCkpO1xuICAgICAgICAgICAgZGVib3VuY2VJbmZvLnRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGRlYm91bmNlRXZlbnQsIGRlYm91bmNlSW5mby5mbik7XG4gICAgICAgICAgICBfdGhpcy5kZWJvdW5jZUNoZWNrW2RlYm91bmNlRXZlbnRdID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgX3RoaXMuZGVib3VuY2VDaGVjayA9IG51bGw7XG5cbiAgICAgIGlmIChfdGhpcy5pbnRlcnZhbCkge1xuICAgICAgICBfdGhpcy5pbnRlcnZhbCA9IGNsZWFySW50ZXJ2YWwoX3RoaXMuaW50ZXJ2YWwpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImNoZWNrXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBlbCA9IF90aGlzLm5vZGU7XG4gICAgICB2YXIgcmVjdDtcbiAgICAgIHZhciBjb250YWlubWVudFJlY3Q7IC8vIGlmIHRoZSBjb21wb25lbnQgaGFzIHJlbmRlcmVkIHRvIG51bGwsIGRvbnQgdXBkYXRlIHZpc2liaWxpdHlcblxuICAgICAgaWYgKCFlbCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIHJlY3QgPSBub3JtYWxpemVSZWN0KF90aGlzLnJvdW5kUmVjdERvd24oZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpKTtcblxuICAgICAgaWYgKF90aGlzLnByb3BzLmNvbnRhaW5tZW50KSB7XG4gICAgICAgIHZhciBjb250YWlubWVudERPTVJlY3QgPSBfdGhpcy5wcm9wcy5jb250YWlubWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBjb250YWlubWVudFJlY3QgPSB7XG4gICAgICAgICAgdG9wOiBjb250YWlubWVudERPTVJlY3QudG9wLFxuICAgICAgICAgIGxlZnQ6IGNvbnRhaW5tZW50RE9NUmVjdC5sZWZ0LFxuICAgICAgICAgIGJvdHRvbTogY29udGFpbm1lbnRET01SZWN0LmJvdHRvbSxcbiAgICAgICAgICByaWdodDogY29udGFpbm1lbnRET01SZWN0LnJpZ2h0XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250YWlubWVudFJlY3QgPSB7XG4gICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxcbiAgICAgICAgICByaWdodDogd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoXG4gICAgICAgIH07XG4gICAgICB9IC8vIENoZWNrIGlmIHZpc2liaWxpdHkgaXMgd2FudGVkIHZpYSBvZmZzZXQ/XG5cblxuICAgICAgdmFyIG9mZnNldCA9IF90aGlzLnByb3BzLm9mZnNldCB8fCB7fTtcbiAgICAgIHZhciBoYXNWYWxpZE9mZnNldCA9IF90eXBlb2Yob2Zmc2V0KSA9PT0gXCJvYmplY3RcIjtcblxuICAgICAgaWYgKGhhc1ZhbGlkT2Zmc2V0KSB7XG4gICAgICAgIGNvbnRhaW5tZW50UmVjdC50b3AgKz0gb2Zmc2V0LnRvcCB8fCAwO1xuICAgICAgICBjb250YWlubWVudFJlY3QubGVmdCArPSBvZmZzZXQubGVmdCB8fCAwO1xuICAgICAgICBjb250YWlubWVudFJlY3QuYm90dG9tIC09IG9mZnNldC5ib3R0b20gfHwgMDtcbiAgICAgICAgY29udGFpbm1lbnRSZWN0LnJpZ2h0IC09IG9mZnNldC5yaWdodCB8fCAwO1xuICAgICAgfVxuXG4gICAgICB2YXIgdmlzaWJpbGl0eVJlY3QgPSB7XG4gICAgICAgIHRvcDogcmVjdC50b3AgPj0gY29udGFpbm1lbnRSZWN0LnRvcCxcbiAgICAgICAgbGVmdDogcmVjdC5sZWZ0ID49IGNvbnRhaW5tZW50UmVjdC5sZWZ0LFxuICAgICAgICBib3R0b206IHJlY3QuYm90dG9tIDw9IGNvbnRhaW5tZW50UmVjdC5ib3R0b20sXG4gICAgICAgIHJpZ2h0OiByZWN0LnJpZ2h0IDw9IGNvbnRhaW5tZW50UmVjdC5yaWdodFxuICAgICAgfTsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2pvc2h3bmovcmVhY3QtdmlzaWJpbGl0eS1zZW5zb3IvcHVsbC8xMTRcblxuICAgICAgdmFyIGhhc1NpemUgPSByZWN0LmhlaWdodCA+IDAgJiYgcmVjdC53aWR0aCA+IDA7XG4gICAgICB2YXIgaXNWaXNpYmxlID0gaGFzU2l6ZSAmJiB2aXNpYmlsaXR5UmVjdC50b3AgJiYgdmlzaWJpbGl0eVJlY3QubGVmdCAmJiB2aXNpYmlsaXR5UmVjdC5ib3R0b20gJiYgdmlzaWJpbGl0eVJlY3QucmlnaHQ7IC8vIGNoZWNrIGZvciBwYXJ0aWFsIHZpc2liaWxpdHlcblxuICAgICAgaWYgKGhhc1NpemUgJiYgX3RoaXMucHJvcHMucGFydGlhbFZpc2liaWxpdHkpIHtcbiAgICAgICAgdmFyIHBhcnRpYWxWaXNpYmxlID0gcmVjdC50b3AgPD0gY29udGFpbm1lbnRSZWN0LmJvdHRvbSAmJiByZWN0LmJvdHRvbSA+PSBjb250YWlubWVudFJlY3QudG9wICYmIHJlY3QubGVmdCA8PSBjb250YWlubWVudFJlY3QucmlnaHQgJiYgcmVjdC5yaWdodCA+PSBjb250YWlubWVudFJlY3QubGVmdDsgLy8gYWNjb3VudCBmb3IgcGFydGlhbCB2aXNpYmlsaXR5IG9uIGEgc2luZ2xlIGVkZ2VcblxuICAgICAgICBpZiAodHlwZW9mIF90aGlzLnByb3BzLnBhcnRpYWxWaXNpYmlsaXR5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcGFydGlhbFZpc2libGUgPSB2aXNpYmlsaXR5UmVjdFtfdGhpcy5wcm9wcy5wYXJ0aWFsVmlzaWJpbGl0eV07XG4gICAgICAgIH0gLy8gaWYgd2UgaGF2ZSBtaW5pbXVtIHRvcCB2aXNpYmlsaXR5IHNldCBieSBwcm9wcywgbGV0cyBjaGVjaywgaWYgaXQgbWVldHMgdGhlIHBhc3NlZCB2YWx1ZVxuICAgICAgICAvLyBzbyBpZiBmb3IgaW5zdGFuY2UgZWxlbWVudCBpcyBhdCBsZWFzdCAyMDBweCBpbiB2aWV3cG9ydCwgdGhlbiBzaG93IGl0LlxuXG5cbiAgICAgICAgaXNWaXNpYmxlID0gX3RoaXMucHJvcHMubWluVG9wVmFsdWUgPyBwYXJ0aWFsVmlzaWJsZSAmJiByZWN0LnRvcCA8PSBjb250YWlubWVudFJlY3QuYm90dG9tIC0gX3RoaXMucHJvcHMubWluVG9wVmFsdWUgOiBwYXJ0aWFsVmlzaWJsZTtcbiAgICAgIH0gLy8gRGVwcmVjYXRlZCBvcHRpb25zIGZvciBjYWxjdWxhdGluZyBvZmZzZXQuXG5cblxuICAgICAgaWYgKHR5cGVvZiBvZmZzZXQuZGlyZWN0aW9uID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiBvZmZzZXQudmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgY29uc29sZS53YXJuKFwiW25vdGljZV0gb2Zmc2V0LmRpcmVjdGlvbiBhbmQgb2Zmc2V0LnZhbHVlIGhhdmUgYmVlbiBkZXByZWNhdGVkLiBUaGV5IHN0aWxsIHdvcmsgZm9yIG5vdywgYnV0IHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IG1ham9yIHZlcnNpb24uIFBsZWFzZSB1cGdyYWRlIHRvIHRoZSBuZXcgc3ludGF4OiB7ICVzOiAlZCB9XCIsIG9mZnNldC5kaXJlY3Rpb24sIG9mZnNldC52YWx1ZSk7XG4gICAgICAgIGlzVmlzaWJsZSA9IF9saWJfaXNfdmlzaWJsZV93aXRoX29mZnNldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fX2RlZmF1bHQoKShvZmZzZXQsIHJlY3QsIGNvbnRhaW5tZW50UmVjdCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBzdGF0ZSA9IF90aGlzLnN0YXRlOyAvLyBub3RpZnkgdGhlIHBhcmVudCB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzXG5cbiAgICAgIGlmIChfdGhpcy5zdGF0ZS5pc1Zpc2libGUgIT09IGlzVmlzaWJsZSkge1xuICAgICAgICBzdGF0ZSA9IHtcbiAgICAgICAgICBpc1Zpc2libGU6IGlzVmlzaWJsZSxcbiAgICAgICAgICB2aXNpYmlsaXR5UmVjdDogdmlzaWJpbGl0eVJlY3RcbiAgICAgICAgfTtcblxuICAgICAgICBfdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG5cbiAgICAgICAgaWYgKF90aGlzLnByb3BzLm9uQ2hhbmdlKSBfdGhpcy5wcm9wcy5vbkNoYW5nZShpc1Zpc2libGUpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfSk7XG5cbiAgICBfdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGlzVmlzaWJsZTogbnVsbCxcbiAgICAgIHZpc2liaWxpdHlSZWN0OiB7fVxuICAgIH07XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFZpc2liaWxpdHlTZW5zb3IsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudERpZE1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgdGhpcy5ub2RlID0gcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLmZpbmRET01Ob2RlKHRoaXMpO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5hY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zdGFydFdhdGNoaW5nKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgdGhpcy5zdG9wV2F0Y2hpbmcoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY29tcG9uZW50RGlkVXBkYXRlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICAgIC8vIHJlLXJlZ2lzdGVyIG5vZGUgaW4gY29tcG9uZW50RGlkVXBkYXRlIGlmIGNoaWxkcmVuIGRpZmZzIFsjMTAzXVxuICAgICAgdGhpcy5ub2RlID0gcmVhY3RfZG9tX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19fZGVmYXVsdC5hLmZpbmRET01Ob2RlKHRoaXMpO1xuXG4gICAgICBpZiAodGhpcy5wcm9wcy5hY3RpdmUgJiYgIXByZXZQcm9wcy5hY3RpdmUpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgaXNWaXNpYmxlOiBudWxsLFxuICAgICAgICAgIHZpc2liaWxpdHlSZWN0OiB7fVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdGFydFdhdGNoaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLnByb3BzLmFjdGl2ZSkge1xuICAgICAgICB0aGlzLnN0b3BXYXRjaGluZygpO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJyb3VuZFJlY3REb3duXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJvdW5kUmVjdERvd24ocmVjdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9wOiBNYXRoLmZsb29yKHJlY3QudG9wKSxcbiAgICAgICAgbGVmdDogTWF0aC5mbG9vcihyZWN0LmxlZnQpLFxuICAgICAgICBib3R0b206IE1hdGguZmxvb3IocmVjdC5ib3R0b20pLFxuICAgICAgICByaWdodDogTWF0aC5mbG9vcihyZWN0LnJpZ2h0KVxuICAgICAgfTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgd2l0aGluIHRoZSB2aXNpYmxlIHZpZXdwb3J0XG4gICAgICovXG5cbiAgfSwge1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuY2hpbGRyZW4gaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbih7XG4gICAgICAgICAgaXNWaXNpYmxlOiB0aGlzLnN0YXRlLmlzVmlzaWJsZSxcbiAgICAgICAgICB2aXNpYmlsaXR5UmVjdDogdGhpcy5zdGF0ZS52aXNpYmlsaXR5UmVjdFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdC5hLkNoaWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIFZpc2liaWxpdHlTZW5zb3I7XG59KHJlYWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19fZGVmYXVsdC5hLkNvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShWaXNpYmlsaXR5U2Vuc29yLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGFjdGl2ZTogdHJ1ZSxcbiAgcGFydGlhbFZpc2liaWxpdHk6IGZhbHNlLFxuICBtaW5Ub3BWYWx1ZTogMCxcbiAgc2Nyb2xsQ2hlY2s6IGZhbHNlLFxuICBzY3JvbGxEZWxheTogMjUwLFxuICBzY3JvbGxUaHJvdHRsZTogLTEsXG4gIHJlc2l6ZUNoZWNrOiBmYWxzZSxcbiAgcmVzaXplRGVsYXk6IDI1MCxcbiAgcmVzaXplVGhyb3R0bGU6IC0xLFxuICBpbnRlcnZhbENoZWNrOiB0cnVlLFxuICBpbnRlcnZhbERlbGF5OiAxMDAsXG4gIGRlbGF5ZWRDYWxsOiBmYWxzZSxcbiAgb2Zmc2V0OiB7fSxcbiAgY29udGFpbm1lbnQ6IG51bGwsXG4gIGNoaWxkcmVuOiByZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQuYS5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsKVxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShWaXNpYmlsaXR5U2Vuc29yLCBcInByb3BUeXBlc1wiLCB7XG4gIG9uQ2hhbmdlOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLmZ1bmMsXG4gIGFjdGl2ZTogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5ib29sLFxuICBwYXJ0aWFsVmlzaWJpbGl0eTogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5vbmVPZlR5cGUoW3Byb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuYm9vbCwgcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5vbmVPZihbXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIl0pXSksXG4gIGRlbGF5ZWRDYWxsOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLmJvb2wsXG4gIG9mZnNldDogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5vbmVPZlR5cGUoW3Byb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuc2hhcGUoe1xuICAgIHRvcDogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXIsXG4gICAgbGVmdDogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXIsXG4gICAgYm90dG9tOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLm51bWJlcixcbiAgICByaWdodDogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXJcbiAgfSksIC8vIGRlcHJlY2F0ZWQgb2Zmc2V0IHByb3BlcnR5XG4gIHByb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuc2hhcGUoe1xuICAgIGRpcmVjdGlvbjogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5vbmVPZihbXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIl0pLFxuICAgIHZhbHVlOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLm51bWJlclxuICB9KV0pLFxuICBzY3JvbGxDaGVjazogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5ib29sLFxuICBzY3JvbGxEZWxheTogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXIsXG4gIHNjcm9sbFRocm90dGxlOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLm51bWJlcixcbiAgcmVzaXplQ2hlY2s6IHByb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuYm9vbCxcbiAgcmVzaXplRGVsYXk6IHByb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEubnVtYmVyLFxuICByZXNpemVUaHJvdHRsZTogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXIsXG4gIGludGVydmFsQ2hlY2s6IHByb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuYm9vbCxcbiAgaW50ZXJ2YWxEZWxheTogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5udW1iZXIsXG4gIGNvbnRhaW5tZW50OiB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5pbnN0YW5jZU9mKHdpbmRvdy5FbGVtZW50KSA6IHByb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuYW55LFxuICBjaGlsZHJlbjogcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5vbmVPZlR5cGUoW3Byb3BfdHlwZXNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfX19kZWZhdWx0LmEuZWxlbWVudCwgcHJvcF90eXBlc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fX2RlZmF1bHQuYS5mdW5jXSksXG4gIG1pblRvcFZhbHVlOiBwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdC5hLm51bWJlclxufSk7XG5cblxuXG4vKioqLyB9KSxcbi8qIDUgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblxuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXG5mdW5jdGlvbiBlbXB0eUZ1bmN0aW9uKCkge31cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQoKSB7fVxuZW1wdHlGdW5jdGlvbldpdGhSZXNldC5yZXNldFdhcm5pbmdDYWNoZSA9IGVtcHR5RnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG4gICAgKTtcbiAgICBlcnIubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB0aHJvdyBlcnI7XG4gIH07XG4gIHNoaW0uaXNSZXF1aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4gIH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxuICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAgICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAgIGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBlbGVtZW50VHlwZTogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBnZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25lT2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGltLFxuICAgIGV4YWN0OiBnZXRTaGltLFxuXG4gICAgY2hlY2tQcm9wVHlwZXM6IGVtcHR5RnVuY3Rpb25XaXRoUmVzZXQsXG4gICAgcmVzZXRXYXJuaW5nQ2FjaGU6IGVtcHR5RnVuY3Rpb25cbiAgfTtcblxuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cbi8qKiovIH0pLFxuLyogNiAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuXG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5cblxuLyoqKi8gfSlcbi8qKioqKiovIF0pO1xufSk7IiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtaXMucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBiPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLGM9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxkPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxlPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxmPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSxnPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSxoPVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LnNlcnZlcl9jb250ZXh0XCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLG09U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIikscD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHQ9U3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKSx1O3U9U3ltYm9sLmZvcihcInJlYWN0Lm1vZHVsZS5yZWZlcmVuY2VcIik7XG5mdW5jdGlvbiB2KGEpe2lmKFwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEpe3ZhciByPWEuJCR0eXBlb2Y7c3dpdGNoKHIpe2Nhc2UgYjpzd2l0Y2goYT1hLnR5cGUsYSl7Y2FzZSBkOmNhc2UgZjpjYXNlIGU6Y2FzZSBtOmNhc2UgbjpyZXR1cm4gYTtkZWZhdWx0OnN3aXRjaChhPWEmJmEuJCR0eXBlb2YsYSl7Y2FzZSBrOmNhc2UgaDpjYXNlIGw6Y2FzZSBxOmNhc2UgcDpjYXNlIGc6cmV0dXJuIGE7ZGVmYXVsdDpyZXR1cm4gcn19Y2FzZSBjOnJldHVybiByfX19ZXhwb3J0cy5Db250ZXh0Q29uc3VtZXI9aDtleHBvcnRzLkNvbnRleHRQcm92aWRlcj1nO2V4cG9ydHMuRWxlbWVudD1iO2V4cG9ydHMuRm9yd2FyZFJlZj1sO2V4cG9ydHMuRnJhZ21lbnQ9ZDtleHBvcnRzLkxhenk9cTtleHBvcnRzLk1lbW89cDtleHBvcnRzLlBvcnRhbD1jO2V4cG9ydHMuUHJvZmlsZXI9ZjtleHBvcnRzLlN0cmljdE1vZGU9ZTtleHBvcnRzLlN1c3BlbnNlPW07XG5leHBvcnRzLlN1c3BlbnNlTGlzdD1uO2V4cG9ydHMuaXNBc3luY01vZGU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07ZXhwb3J0cy5pc0NvbmN1cnJlbnRNb2RlPWZ1bmN0aW9uKCl7cmV0dXJuITF9O2V4cG9ydHMuaXNDb250ZXh0Q29uc3VtZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1ofTtleHBvcnRzLmlzQ29udGV4dFByb3ZpZGVyPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09Z307ZXhwb3J0cy5pc0VsZW1lbnQ9ZnVuY3Rpb24oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWJ9O2V4cG9ydHMuaXNGb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bH07ZXhwb3J0cy5pc0ZyYWdtZW50PWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZH07ZXhwb3J0cy5pc0xhenk9ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYSk9PT1xfTtleHBvcnRzLmlzTWVtbz1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PXB9O1xuZXhwb3J0cy5pc1BvcnRhbD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWN9O2V4cG9ydHMuaXNQcm9maWxlcj1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PWZ9O2V4cG9ydHMuaXNTdHJpY3RNb2RlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09ZX07ZXhwb3J0cy5pc1N1c3BlbnNlPWZ1bmN0aW9uKGEpe3JldHVybiB2KGEpPT09bX07ZXhwb3J0cy5pc1N1c3BlbnNlTGlzdD1mdW5jdGlvbihhKXtyZXR1cm4gdihhKT09PW59O1xuZXhwb3J0cy5pc1ZhbGlkRWxlbWVudFR5cGU9ZnVuY3Rpb24oYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhfHxcImZ1bmN0aW9uXCI9PT10eXBlb2YgYXx8YT09PWR8fGE9PT1mfHxhPT09ZXx8YT09PW18fGE9PT1ufHxhPT09dHx8XCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmKGEuJCR0eXBlb2Y9PT1xfHxhLiQkdHlwZW9mPT09cHx8YS4kJHR5cGVvZj09PWd8fGEuJCR0eXBlb2Y9PT1ofHxhLiQkdHlwZW9mPT09bHx8YS4kJHR5cGVvZj09PXV8fHZvaWQgMCE9PWEuZ2V0TW9kdWxlSWQpPyEwOiExfTtleHBvcnRzLnR5cGVPZj12O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWlzLmRldmVsb3BtZW50LmpzJyk7XG59XG4iLCIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG4ndXNlIHN0cmljdCc7dmFyIGY9cmVxdWlyZShcInJlYWN0XCIpLGs9U3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksbD1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIiksbT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LG49Zi5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixwPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBxKGMsYSxnKXt2YXIgYixkPXt9LGU9bnVsbCxoPW51bGw7dm9pZCAwIT09ZyYmKGU9XCJcIitnKTt2b2lkIDAhPT1hLmtleSYmKGU9XCJcIithLmtleSk7dm9pZCAwIT09YS5yZWYmJihoPWEucmVmKTtmb3IoYiBpbiBhKW0uY2FsbChhLGIpJiYhcC5oYXNPd25Qcm9wZXJ0eShiKSYmKGRbYl09YVtiXSk7aWYoYyYmYy5kZWZhdWx0UHJvcHMpZm9yKGIgaW4gYT1jLmRlZmF1bHRQcm9wcyxhKXZvaWQgMD09PWRbYl0mJihkW2JdPWFbYl0pO3JldHVybnskJHR5cGVvZjprLHR5cGU6YyxrZXk6ZSxyZWY6aCxwcm9wczpkLF9vd25lcjpuLmN1cnJlbnR9fWV4cG9ydHMuRnJhZ21lbnQ9bDtleHBvcnRzLmpzeD1xO2V4cG9ydHMuanN4cz1xO1xuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QucHJvZHVjdGlvbi5taW4uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuJ3VzZSBzdHJpY3QnO3ZhciBsPVN5bWJvbC5mb3IoXCJyZWFjdC5lbGVtZW50XCIpLG49U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxwPVN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxxPVN5bWJvbC5mb3IoXCJyZWFjdC5zdHJpY3RfbW9kZVwiKSxyPVN5bWJvbC5mb3IoXCJyZWFjdC5wcm9maWxlclwiKSx0PVN5bWJvbC5mb3IoXCJyZWFjdC5wcm92aWRlclwiKSx1PVN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLHY9U3ltYm9sLmZvcihcInJlYWN0LmZvcndhcmRfcmVmXCIpLHc9U3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlXCIpLHg9U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIikseT1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKSx6PVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBBKGEpe2lmKG51bGw9PT1hfHxcIm9iamVjdFwiIT09dHlwZW9mIGEpcmV0dXJuIG51bGw7YT16JiZhW3pdfHxhW1wiQEBpdGVyYXRvclwiXTtyZXR1cm5cImZ1bmN0aW9uXCI9PT10eXBlb2YgYT9hOm51bGx9XG52YXIgQj17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQz1PYmplY3QuYXNzaWduLEQ9e307ZnVuY3Rpb24gRShhLGIsZSl7dGhpcy5wcm9wcz1hO3RoaXMuY29udGV4dD1iO3RoaXMucmVmcz1EO3RoaXMudXBkYXRlcj1lfHxCfUUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e307XG5FLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihhLGIpe2lmKFwib2JqZWN0XCIhPT10eXBlb2YgYSYmXCJmdW5jdGlvblwiIT09dHlwZW9mIGEmJm51bGwhPWEpdGhyb3cgRXJyb3IoXCJzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGEsYixcInNldFN0YXRlXCIpfTtFLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsYSxcImZvcmNlVXBkYXRlXCIpfTtmdW5jdGlvbiBGKCl7fUYucHJvdG90eXBlPUUucHJvdG90eXBlO2Z1bmN0aW9uIEcoYSxiLGUpe3RoaXMucHJvcHM9YTt0aGlzLmNvbnRleHQ9Yjt0aGlzLnJlZnM9RDt0aGlzLnVwZGF0ZXI9ZXx8Qn12YXIgSD1HLnByb3RvdHlwZT1uZXcgRjtcbkguY29uc3RydWN0b3I9RztDKEgsRS5wcm90b3R5cGUpO0guaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIEk9QXJyYXkuaXNBcnJheSxKPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSz17Y3VycmVudDpudWxsfSxMPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07XG5mdW5jdGlvbiBNKGEsYixlKXt2YXIgZCxjPXt9LGs9bnVsbCxoPW51bGw7aWYobnVsbCE9Yilmb3IoZCBpbiB2b2lkIDAhPT1iLnJlZiYmKGg9Yi5yZWYpLHZvaWQgMCE9PWIua2V5JiYoaz1cIlwiK2Iua2V5KSxiKUouY2FsbChiLGQpJiYhTC5oYXNPd25Qcm9wZXJ0eShkKSYmKGNbZF09YltkXSk7dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1nKWMuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zyl7Zm9yKHZhciBmPUFycmF5KGcpLG09MDttPGc7bSsrKWZbbV09YXJndW1lbnRzW20rMl07Yy5jaGlsZHJlbj1mfWlmKGEmJmEuZGVmYXVsdFByb3BzKWZvcihkIGluIGc9YS5kZWZhdWx0UHJvcHMsZyl2b2lkIDA9PT1jW2RdJiYoY1tkXT1nW2RdKTtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEsa2V5OmsscmVmOmgscHJvcHM6Yyxfb3duZXI6Sy5jdXJyZW50fX1cbmZ1bmN0aW9uIE4oYSxiKXtyZXR1cm57JCR0eXBlb2Y6bCx0eXBlOmEudHlwZSxrZXk6YixyZWY6YS5yZWYscHJvcHM6YS5wcm9wcyxfb3duZXI6YS5fb3duZXJ9fWZ1bmN0aW9uIE8oYSl7cmV0dXJuXCJvYmplY3RcIj09PXR5cGVvZiBhJiZudWxsIT09YSYmYS4kJHR5cGVvZj09PWx9ZnVuY3Rpb24gZXNjYXBlKGEpe3ZhciBiPXtcIj1cIjpcIj0wXCIsXCI6XCI6XCI9MlwifTtyZXR1cm5cIiRcIithLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihhKXtyZXR1cm4gYlthXX0pfXZhciBQPS9cXC8rL2c7ZnVuY3Rpb24gUShhLGIpe3JldHVyblwib2JqZWN0XCI9PT10eXBlb2YgYSYmbnVsbCE9PWEmJm51bGwhPWEua2V5P2VzY2FwZShcIlwiK2Eua2V5KTpiLnRvU3RyaW5nKDM2KX1cbmZ1bmN0aW9uIFIoYSxiLGUsZCxjKXt2YXIgaz10eXBlb2YgYTtpZihcInVuZGVmaW5lZFwiPT09a3x8XCJib29sZWFuXCI9PT1rKWE9bnVsbDt2YXIgaD0hMTtpZihudWxsPT09YSloPSEwO2Vsc2Ugc3dpdGNoKGspe2Nhc2UgXCJzdHJpbmdcIjpjYXNlIFwibnVtYmVyXCI6aD0hMDticmVhaztjYXNlIFwib2JqZWN0XCI6c3dpdGNoKGEuJCR0eXBlb2Ype2Nhc2UgbDpjYXNlIG46aD0hMH19aWYoaClyZXR1cm4gaD1hLGM9YyhoKSxhPVwiXCI9PT1kP1wiLlwiK1EoaCwwKTpkLEkoYyk/KGU9XCJcIixudWxsIT1hJiYoZT1hLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIiksUihjLGIsZSxcIlwiLGZ1bmN0aW9uKGEpe3JldHVybiBhfSkpOm51bGwhPWMmJihPKGMpJiYoYz1OKGMsZSsoIWMua2V5fHxoJiZoLmtleT09PWMua2V5P1wiXCI6KFwiXCIrYy5rZXkpLnJlcGxhY2UoUCxcIiQmL1wiKStcIi9cIikrYSkpLGIucHVzaChjKSksMTtoPTA7ZD1cIlwiPT09ZD9cIi5cIjpkK1wiOlwiO2lmKEkoYSkpZm9yKHZhciBnPTA7ZzxhLmxlbmd0aDtnKyspe2s9XG5hW2ddO3ZhciBmPWQrUShrLGcpO2grPVIoayxiLGUsZixjKX1lbHNlIGlmKGY9QShhKSxcImZ1bmN0aW9uXCI9PT10eXBlb2YgZilmb3IoYT1mLmNhbGwoYSksZz0wOyEoaz1hLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLGY9ZCtRKGssZysrKSxoKz1SKGssYixlLGYsYyk7ZWxzZSBpZihcIm9iamVjdFwiPT09ayl0aHJvdyBiPVN0cmluZyhhKSxFcnJvcihcIk9iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogXCIrKFwiW29iamVjdCBPYmplY3RdXCI9PT1iP1wib2JqZWN0IHdpdGgga2V5cyB7XCIrT2JqZWN0LmtleXMoYSkuam9pbihcIiwgXCIpK1wifVwiOmIpK1wiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLlwiKTtyZXR1cm4gaH1cbmZ1bmN0aW9uIFMoYSxiLGUpe2lmKG51bGw9PWEpcmV0dXJuIGE7dmFyIGQ9W10sYz0wO1IoYSxkLFwiXCIsXCJcIixmdW5jdGlvbihhKXtyZXR1cm4gYi5jYWxsKGUsYSxjKyspfSk7cmV0dXJuIGR9ZnVuY3Rpb24gVChhKXtpZigtMT09PWEuX3N0YXR1cyl7dmFyIGI9YS5fcmVzdWx0O2I9YigpO2IudGhlbihmdW5jdGlvbihiKXtpZigwPT09YS5fc3RhdHVzfHwtMT09PWEuX3N0YXR1cylhLl9zdGF0dXM9MSxhLl9yZXN1bHQ9Yn0sZnVuY3Rpb24oYil7aWYoMD09PWEuX3N0YXR1c3x8LTE9PT1hLl9zdGF0dXMpYS5fc3RhdHVzPTIsYS5fcmVzdWx0PWJ9KTstMT09PWEuX3N0YXR1cyYmKGEuX3N0YXR1cz0wLGEuX3Jlc3VsdD1iKX1pZigxPT09YS5fc3RhdHVzKXJldHVybiBhLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBhLl9yZXN1bHQ7fVxudmFyIFU9e2N1cnJlbnQ6bnVsbH0sVj17dHJhbnNpdGlvbjpudWxsfSxXPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOlUsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6VixSZWFjdEN1cnJlbnRPd25lcjpLfTtleHBvcnRzLkNoaWxkcmVuPXttYXA6Uyxmb3JFYWNoOmZ1bmN0aW9uKGEsYixlKXtTKGEsZnVuY3Rpb24oKXtiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZSl9LGNvdW50OmZ1bmN0aW9uKGEpe3ZhciBiPTA7UyhhLGZ1bmN0aW9uKCl7YisrfSk7cmV0dXJuIGJ9LHRvQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIFMoYSxmdW5jdGlvbihhKXtyZXR1cm4gYX0pfHxbXX0sb25seTpmdW5jdGlvbihhKXtpZighTyhhKSl0aHJvdyBFcnJvcihcIlJlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBhIHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLlwiKTtyZXR1cm4gYX19O2V4cG9ydHMuQ29tcG9uZW50PUU7ZXhwb3J0cy5GcmFnbWVudD1wO1xuZXhwb3J0cy5Qcm9maWxlcj1yO2V4cG9ydHMuUHVyZUNvbXBvbmVudD1HO2V4cG9ydHMuU3RyaWN0TW9kZT1xO2V4cG9ydHMuU3VzcGVuc2U9dztleHBvcnRzLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVc7XG5leHBvcnRzLmNsb25lRWxlbWVudD1mdW5jdGlvbihhLGIsZSl7aWYobnVsbD09PWF8fHZvaWQgMD09PWEpdGhyb3cgRXJyb3IoXCJSZWFjdC5jbG9uZUVsZW1lbnQoLi4uKTogVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIithK1wiLlwiKTt2YXIgZD1DKHt9LGEucHJvcHMpLGM9YS5rZXksaz1hLnJlZixoPWEuX293bmVyO2lmKG51bGwhPWIpe3ZvaWQgMCE9PWIucmVmJiYoaz1iLnJlZixoPUsuY3VycmVudCk7dm9pZCAwIT09Yi5rZXkmJihjPVwiXCIrYi5rZXkpO2lmKGEudHlwZSYmYS50eXBlLmRlZmF1bHRQcm9wcyl2YXIgZz1hLnR5cGUuZGVmYXVsdFByb3BzO2ZvcihmIGluIGIpSi5jYWxsKGIsZikmJiFMLmhhc093blByb3BlcnR5KGYpJiYoZFtmXT12b2lkIDA9PT1iW2ZdJiZ2b2lkIDAhPT1nP2dbZl06YltmXSl9dmFyIGY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1mKWQuY2hpbGRyZW49ZTtlbHNlIGlmKDE8Zil7Zz1BcnJheShmKTtcbmZvcih2YXIgbT0wO208ZjttKyspZ1ttXT1hcmd1bWVudHNbbSsyXTtkLmNoaWxkcmVuPWd9cmV0dXJueyQkdHlwZW9mOmwsdHlwZTphLnR5cGUsa2V5OmMscmVmOmsscHJvcHM6ZCxfb3duZXI6aH19O2V4cG9ydHMuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhKXthPXskJHR5cGVvZjp1LF9jdXJyZW50VmFsdWU6YSxfY3VycmVudFZhbHVlMjphLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH07YS5Qcm92aWRlcj17JCR0eXBlb2Y6dCxfY29udGV4dDphfTtyZXR1cm4gYS5Db25zdW1lcj1hfTtleHBvcnRzLmNyZWF0ZUVsZW1lbnQ9TTtleHBvcnRzLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oYSl7dmFyIGI9TS5iaW5kKG51bGwsYSk7Yi50eXBlPWE7cmV0dXJuIGJ9O2V4cG9ydHMuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19O1xuZXhwb3J0cy5mb3J3YXJkUmVmPWZ1bmN0aW9uKGEpe3JldHVybnskJHR5cGVvZjp2LHJlbmRlcjphfX07ZXhwb3J0cy5pc1ZhbGlkRWxlbWVudD1PO2V4cG9ydHMubGF6eT1mdW5jdGlvbihhKXtyZXR1cm57JCR0eXBlb2Y6eSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0OmF9LF9pbml0OlR9fTtleHBvcnRzLm1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm57JCR0eXBlb2Y6eCx0eXBlOmEsY29tcGFyZTp2b2lkIDA9PT1iP251bGw6Yn19O2V4cG9ydHMuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPVYudHJhbnNpdGlvbjtWLnRyYW5zaXRpb249e307dHJ5e2EoKX1maW5hbGx5e1YudHJhbnNpdGlvbj1ifX07ZXhwb3J0cy51bnN0YWJsZV9hY3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO307XG5leHBvcnRzLnVzZUNhbGxiYWNrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VDYWxsYmFjayhhLGIpfTtleHBvcnRzLnVzZUNvbnRleHQ9ZnVuY3Rpb24oYSl7cmV0dXJuIFUuY3VycmVudC51c2VDb250ZXh0KGEpfTtleHBvcnRzLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9O2V4cG9ydHMudXNlRGVmZXJyZWRWYWx1ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZURlZmVycmVkVmFsdWUoYSl9O2V4cG9ydHMudXNlRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VFZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VJZD1mdW5jdGlvbigpe3JldHVybiBVLmN1cnJlbnQudXNlSWQoKX07ZXhwb3J0cy51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoYSxiLGUpfTtcbmV4cG9ydHMudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIFUuY3VycmVudC51c2VJbnNlcnRpb25FZmZlY3QoYSxiKX07ZXhwb3J0cy51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChhLGIpfTtleHBvcnRzLnVzZU1lbW89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVS5jdXJyZW50LnVzZU1lbW8oYSxiKX07ZXhwb3J0cy51c2VSZWR1Y2VyPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZHVjZXIoYSxiLGUpfTtleHBvcnRzLnVzZVJlZj1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVJlZihhKX07ZXhwb3J0cy51c2VTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN0YXRlKGEpfTtleHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlPWZ1bmN0aW9uKGEsYixlKXtyZXR1cm4gVS5jdXJyZW50LnVzZVN5bmNFeHRlcm5hbFN0b3JlKGEsYixlKX07XG5leHBvcnRzLnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gVS5jdXJyZW50LnVzZVRyYW5zaXRpb24oKX07ZXhwb3J0cy52ZXJzaW9uPVwiMTguMi4wXCI7XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtcnVudGltZS5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cbid1c2Ugc3RyaWN0JztmdW5jdGlvbiBmKGEsYil7dmFyIGM9YS5sZW5ndGg7YS5wdXNoKGIpO2E6Zm9yKDswPGM7KXt2YXIgZD1jLTE+Pj4xLGU9YVtkXTtpZigwPGcoZSxiKSlhW2RdPWIsYVtjXT1lLGM9ZDtlbHNlIGJyZWFrIGF9fWZ1bmN0aW9uIGgoYSl7cmV0dXJuIDA9PT1hLmxlbmd0aD9udWxsOmFbMF19ZnVuY3Rpb24gayhhKXtpZigwPT09YS5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGI9YVswXSxjPWEucG9wKCk7aWYoYyE9PWIpe2FbMF09YzthOmZvcih2YXIgZD0wLGU9YS5sZW5ndGgsdz1lPj4+MTtkPHc7KXt2YXIgbT0yKihkKzEpLTEsQz1hW21dLG49bSsxLHg9YVtuXTtpZigwPmcoQyxjKSluPGUmJjA+Zyh4LEMpPyhhW2RdPXgsYVtuXT1jLGQ9bik6KGFbZF09QyxhW21dPWMsZD1tKTtlbHNlIGlmKG48ZSYmMD5nKHgsYykpYVtkXT14LGFbbl09YyxkPW47ZWxzZSBicmVhayBhfX1yZXR1cm4gYn1cbmZ1bmN0aW9uIGcoYSxiKXt2YXIgYz1hLnNvcnRJbmRleC1iLnNvcnRJbmRleDtyZXR1cm4gMCE9PWM/YzphLmlkLWIuaWR9aWYoXCJvYmplY3RcIj09PXR5cGVvZiBwZXJmb3JtYW5jZSYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGw9cGVyZm9ybWFuY2U7ZXhwb3J0cy51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcD1EYXRlLHE9cC5ub3coKTtleHBvcnRzLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBwLm5vdygpLXF9fXZhciByPVtdLHQ9W10sdT0xLHY9bnVsbCx5PTMsej0hMSxBPSExLEI9ITEsRD1cImZ1bmN0aW9uXCI9PT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om51bGwsRT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLEY9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBzZXRJbW1lZGlhdGU/c2V0SW1tZWRpYXRlOm51bGw7XG5cInVuZGVmaW5lZFwiIT09dHlwZW9mIG5hdmlnYXRvciYmdm9pZCAwIT09bmF2aWdhdG9yLnNjaGVkdWxpbmcmJnZvaWQgMCE9PW5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBHKGEpe2Zvcih2YXIgYj1oKHQpO251bGwhPT1iOyl7aWYobnVsbD09PWIuY2FsbGJhY2spayh0KTtlbHNlIGlmKGIuc3RhcnRUaW1lPD1hKWsodCksYi5zb3J0SW5kZXg9Yi5leHBpcmF0aW9uVGltZSxmKHIsYik7ZWxzZSBicmVhaztiPWgodCl9fWZ1bmN0aW9uIEgoYSl7Qj0hMTtHKGEpO2lmKCFBKWlmKG51bGwhPT1oKHIpKUE9ITAsSShKKTtlbHNle3ZhciBiPWgodCk7bnVsbCE9PWImJksoSCxiLnN0YXJ0VGltZS1hKX19XG5mdW5jdGlvbiBKKGEsYil7QT0hMTtCJiYoQj0hMSxFKEwpLEw9LTEpO3o9ITA7dmFyIGM9eTt0cnl7RyhiKTtmb3Iodj1oKHIpO251bGwhPT12JiYoISh2LmV4cGlyYXRpb25UaW1lPmIpfHxhJiYhTSgpKTspe3ZhciBkPXYuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGQpe3YuY2FsbGJhY2s9bnVsbDt5PXYucHJpb3JpdHlMZXZlbDt2YXIgZT1kKHYuZXhwaXJhdGlvblRpbWU8PWIpO2I9ZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcImZ1bmN0aW9uXCI9PT10eXBlb2YgZT92LmNhbGxiYWNrPWU6dj09PWgocikmJmsocik7RyhiKX1lbHNlIGsocik7dj1oKHIpfWlmKG51bGwhPT12KXZhciB3PSEwO2Vsc2V7dmFyIG09aCh0KTtudWxsIT09bSYmSyhILG0uc3RhcnRUaW1lLWIpO3c9ITF9cmV0dXJuIHd9ZmluYWxseXt2PW51bGwseT1jLHo9ITF9fXZhciBOPSExLE89bnVsbCxMPS0xLFA9NSxRPS0xO1xuZnVuY3Rpb24gTSgpe3JldHVybiBleHBvcnRzLnVuc3RhYmxlX25vdygpLVE8UD8hMTohMH1mdW5jdGlvbiBSKCl7aWYobnVsbCE9PU8pe3ZhciBhPWV4cG9ydHMudW5zdGFibGVfbm93KCk7UT1hO3ZhciBiPSEwO3RyeXtiPU8oITAsYSl9ZmluYWxseXtiP1MoKTooTj0hMSxPPW51bGwpfX1lbHNlIE49ITF9dmFyIFM7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIEYpUz1mdW5jdGlvbigpe0YoUil9O2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIFQ9bmV3IE1lc3NhZ2VDaGFubmVsLFU9VC5wb3J0MjtULnBvcnQxLm9ubWVzc2FnZT1SO1M9ZnVuY3Rpb24oKXtVLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIFM9ZnVuY3Rpb24oKXtEKFIsMCl9O2Z1bmN0aW9uIEkoYSl7Tz1hO058fChOPSEwLFMoKSl9ZnVuY3Rpb24gSyhhLGIpe0w9RChmdW5jdGlvbigpe2EoZXhwb3J0cy51bnN0YWJsZV9ub3coKSl9LGIpfVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NTtleHBvcnRzLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTE7ZXhwb3J0cy51bnN0YWJsZV9Mb3dQcmlvcml0eT00O2V4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MztleHBvcnRzLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsO2V4cG9ydHMudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MjtleHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGEpe2EuY2FsbGJhY2s9bnVsbH07ZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fHp8fChBPSEwLEkoSikpfTtcbmV4cG9ydHMudW5zdGFibGVfZm9yY2VGcmFtZVJhdGU9ZnVuY3Rpb24oYSl7MD5hfHwxMjU8YT9jb25zb2xlLmVycm9yKFwiZm9yY2VGcmFtZVJhdGUgdGFrZXMgYSBwb3NpdGl2ZSBpbnQgYmV0d2VlbiAwIGFuZCAxMjUsIGZvcmNpbmcgZnJhbWUgcmF0ZXMgaGlnaGVyIHRoYW4gMTI1IGZwcyBpcyBub3Qgc3VwcG9ydGVkXCIpOlA9MDxhP01hdGguZmxvb3IoMUUzL2EpOjV9O2V4cG9ydHMudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4geX07ZXhwb3J0cy51bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZT1mdW5jdGlvbigpe3JldHVybiBoKHIpfTtleHBvcnRzLnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oYSl7c3dpdGNoKHkpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciBiPTM7YnJlYWs7ZGVmYXVsdDpiPXl9dmFyIGM9eTt5PWI7dHJ5e3JldHVybiBhKCl9ZmluYWxseXt5PWN9fTtleHBvcnRzLnVuc3RhYmxlX3BhdXNlRXhlY3V0aW9uPWZ1bmN0aW9uKCl7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50PWZ1bmN0aW9uKCl7fTtleHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihhLGIpe3N3aXRjaChhKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6YT0zfXZhciBjPXk7eT1hO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7eT1jfX07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWV4cG9ydHMudW5zdGFibGVfbm93KCk7XCJvYmplY3RcIj09PXR5cGVvZiBjJiZudWxsIT09Yz8oYz1jLmRlbGF5LGM9XCJudW1iZXJcIj09PXR5cGVvZiBjJiYwPGM/ZCtjOmQpOmM9ZDtzd2l0Y2goYSl7Y2FzZSAxOnZhciBlPS0xO2JyZWFrO2Nhc2UgMjplPTI1MDticmVhaztjYXNlIDU6ZT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDplPTFFNDticmVhaztkZWZhdWx0OmU9NUUzfWU9YytlO2E9e2lkOnUrKyxjYWxsYmFjazpiLHByaW9yaXR5TGV2ZWw6YSxzdGFydFRpbWU6YyxleHBpcmF0aW9uVGltZTplLHNvcnRJbmRleDotMX07Yz5kPyhhLnNvcnRJbmRleD1jLGYodCxhKSxudWxsPT09aChyKSYmYT09PWgodCkmJihCPyhFKEwpLEw9LTEpOkI9ITAsSyhILGMtZCkpKTooYS5zb3J0SW5kZXg9ZSxmKHIsYSksQXx8enx8KEE9ITAsSShKKSkpO3JldHVybiBhfTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQ9TTtleHBvcnRzLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihhKXt2YXIgYj15O3JldHVybiBmdW5jdGlvbigpe3ZhciBjPXk7eT1iO3RyeXtyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXt5PWN9fX07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwiLy9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQiwgY29tcGFyZSwgY29tcGFyZUNvbnRleHQpIHtcbiAgdmFyIHJldCA9IGNvbXBhcmUgPyBjb21wYXJlLmNhbGwoY29tcGFyZUNvbnRleHQsIG9iakEsIG9iakIpIDogdm9pZCAwO1xuXG4gIGlmIChyZXQgIT09IHZvaWQgMCkge1xuICAgIHJldHVybiAhIXJldDtcbiAgfVxuXG4gIGlmIChvYmpBID09PSBvYmpCKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iakEgIT09IFwib2JqZWN0XCIgfHwgIW9iakEgfHwgdHlwZW9mIG9iakIgIT09IFwib2JqZWN0XCIgfHwgIW9iakIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIga2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGJIYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuYmluZChvYmpCKTtcblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBrZXlzQS5sZW5ndGg7IGlkeCsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNBW2lkeF07XG5cbiAgICBpZiAoIWJIYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlQSA9IG9iakFba2V5XTtcbiAgICB2YXIgdmFsdWVCID0gb2JqQltrZXldO1xuXG4gICAgcmV0ID0gY29tcGFyZSA/IGNvbXBhcmUuY2FsbChjb21wYXJlQ29udGV4dCwgdmFsdWVBLCB2YWx1ZUIsIGtleSkgOiB2b2lkIDA7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSB8fCAocmV0ID09PSB2b2lkIDAgJiYgdmFsdWVBICE9PSB2YWx1ZUIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IGFwaSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgICAgICAgaW1wb3J0IGNvbnRlbnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2Rpc3QvbG9hZGVyLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVsxXSEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2VbMl0hLi4vLi4vbm9kZV9tb2R1bGVzL3Bvc3Rjc3MtbG9hZGVyL2Rpc3QvY2pzLmpzPz9ydWxlU2V0WzFdLnJ1bGVzWzFdLnVzZVszXSEuL3N0eWxlcy5zY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsInJlcXVpcmUoJy4vLi4vLi4vY3NzL3N0eWxlcy5zY3NzJyk7XHJcblxyXG5yZXF1aXJlKCcuLy4uL3JlYWN0LWluaXQnKTtcclxuXHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvc2hhcmVkL3RvZ2dsZS5qcycpO1xyXG5yZXF1aXJlKCcuLy4uLy4uL2pzL3NoYXJlZC92aWRlby10cmlnZ2VyLmpzJyk7XHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvc2hhcmVkL2luLXZpZXdwb3J0LmpzJyk7XHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvc2hhcmVkL2N1c3RvbWl6YWJsZS1maWxlLXVwbG9hZC1lbGVtZW50LWhhbmRsZXIuanMnKTtcclxucmVxdWlyZSgnLi8uLi8uLi9qcy9jb21wb25lbnRzL3BhZ2VIZWFkZXJVdGlsaXRpZXMuanMnKTtcclxucmVxdWlyZSgnLi8uLi8uLi9qcy9jb21wb25lbnRzL3JlbGF0ZWRBcnRpY2xlcy5qcycpO1xyXG5yZXF1aXJlKCcuLy4uLy4uL2pzL2NvbXBvbmVudHMvdGV4dENvbnRlbnQuanMnKTtcclxuLy9yZXF1aXJlKCcuLy4uLy4uL2pzL2NvbXBvbmVudHMvdGFicy5qcycpO1xyXG5yZXF1aXJlKCcuLy4uLy4uL2pzL2NvbXBvbmVudHMvZm9ybXMuanMnKTtcclxucmVxdWlyZSgnLi8uLi8uLi9qcy9jb21wb25lbnRzL2Z1bGxXaWR0aEhpZ2hsaWdodEJsb2NrLmpzJyk7XHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvY29tcG9uZW50cy9lcXVhbFdpZHRoJyk7XHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvY29tcG9uZW50cy9NYXRlcmlhbHNQYWdlJyk7XHJcbnJlcXVpcmUoJy4vLi4vLi4vanMvY29tcG9uZW50cy9NYXRlcmlhbEFkZFRvQ2FydCcpO1xyXG5yZXF1aXJlKCcuLy4uLy4uL2pzL2NvbXBvbmVudHMvZXZlbnRidXMnKTtcclxucmVxdWlyZSgnLi8uLi8uLi9qcy9jb21wb25lbnRzL2FkdmFuY2VkSGlnaGxpZ2h0LmpzJyk7Il0sIm5hbWVzIjpbImxlYWZQcm90b3R5cGVzIiwiZ2V0UHJvdG8iLCJTeW1ib2wiLCJmb3IiLCJEb2N1bWVudENhcnRFdmVudEtleSIsInByb3BzIiwidXNlU3RhdGUiLCJjYXJ0Iiwic2V0Q2FydCIsInVwZGF0ZUNhcmQiLCJwb3N0RGF0YSIsImxhbmciLCJ0aGVuIiwiZGF0YSIsInVybCIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsInJlc3BvbnNlIiwianNvbiIsInVzZUVmZmVjdCIsImNoYW5uZWwiLCJCcm9hZGNhc3RDaGFubmVsIiwib25tZXNzYWdlIiwiZXZlbnQiLCJjbG9zZSIsInRleHQiLCJpdGVtcyIsImxlbmd0aCIsImNsYXNzTmFtZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiQ3VzdG9tRHJvcGRvd24iLCJvcHRpb25zIiwic2VsZWN0ZWRWYWx1ZSIsInVuc2VsZWN0ZWRWYWx1ZSIsIm9uQ2hhbmdlIiwiaXNJbkJhc2tldCIsIm9uQ2xpY2siLCJsb2FkaW5nIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwiZHJvcGRvd25SZWYiLCJ1c2VSZWYiLCJoYW5kbGVPdXRzaWRlQ2xpY2siLCJlIiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZU9wdGlvblNlbGVjdCIsIm9wdGlvbiIsInJlZiIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwicHJldiIsImtleSIsIm1hcCIsImluZGV4IiwiYW1vdW50SW5CYXNrZXQiLCJzZWxlY3RlZFF1YW50aXR5Iiwic2V0U2VsZWN0ZWRRdWFudGl0eSIsInNldExvYWRpbmciLCJzZXRJc0luQmFza2V0Iiwib3JkZXJRdWFudGl0eSIsInF1YW50aXR5VGV4dCIsImkiLCJxdWFudGl0eSIsInBhcnNlSW50IiwiaWQiLCJwcm9kdWN0SWRGaWVsZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwieG1saHR0cCIsIlhNTEh0dHBSZXF1ZXN0Iiwib3BlbiIsInNlbmQiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJ0aGlzIiwicmVhZHlTdGF0ZSIsInN0YXR1cyIsInBvc3RNZXNzYWdlIiwiZXZlbnRidXMiLCJldmVudHMiLCJmaWxlVXJsIiwiaHJlZiIsIndpbmRvdyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb3JFYWNoIiwic2VjdGlvbnMiLCJwYXJlbnRFbGVtZW50IiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwicHJldmlvdXNFbGVtZW50U2libGluZyIsInF1ZXJ5U2VsZWN0b3IiLCJpbm5lckhUTUwiLCJtYXRlcmlhbEFyZWEiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJ0b2dnbGUiLCJpbm5lclRleHQiLCJ2aWRlb3MiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiZW50IiwiaXRlbSIsInNob3VsZFBsYXlPbmNlIiwiaGFzQmVlblBsYXllZCIsImludGVyc2VjdGlvblJhdGlvIiwicGF1c2UiLCJwbGF5IiwidGhyZXNob2xkIiwidGhyZXNob2xkcyIsInB1c2giLCJ2aWRlbyIsIm9ic2VydmUiLCJhZGQiLCJlcXVhbHMiLCJ3aWRlc3QiLCJlcXVhbCIsImNsaWVudFdpZHRoIiwic3R5bGUiLCJtaW5XaWR0aCIsImV2ZW50SWQiLCJjYWxsYmFjayIsImV2ZW50T2JzZXJ2ZXJzIiwiY2FsbGJhY2tzIiwiZXZlbnREYXRhIiwiZXJyb3IiLCJjb25zb2xlIiwibG9nIiwicHJvZHVjdEFkZGVkVG9DYXJ0RXZlbnQiLCJ2bUV2ZW50YnVzIiwidm1FdmVudGJ1c0V2ZW50cyIsImVwaUZvcm0iLCJDcmVhdGVUb29sVGlwIiwidGl0bGUiLCJsYWJlbCIsIm5ld1Rvb2xUaXAiLCJpbnNlcnRBZGphY2VudEhUTUwiLCJlcGlGb3JtRWxlbWVudHNJbnB1dCIsImVwaUZvcm1FbGVtZW50c1RleHRhcmVhIiwiZXBpRm9ybUVsZW1lbnRzQ2hvaWNlIiwiZXBpRm9ybUVsZW1lbnRzU2VsZWN0IiwiZXBpRm9ybUVsZW1lbnRJbnB1dCIsImluY2x1ZGVzIiwidHlwZSIsImhhc0F0dHJpYnV0ZSIsImVwaUZvcm1FbGVtZW50TGFiZWwiLCJjbG9zZXN0IiwiZXBpRm9ybUVsZW1lbnRJbnB1dFRpdGxlIiwiZ2V0QXR0cmlidXRlIiwiZXBpRm9ybUVsZW1lbnRUZXh0YXJlYSIsImVwaUZvcm1FbGVtZW50VGV4dGFyZWFUaXRsZSIsImVwaUZvcm1FbGVtZW50Q2hvaWNlIiwiZXBpRm9ybUVsZW1lbnRDaG9pY2VUaXRsZSIsImVwaUZvcm1FbGVtZW50U2VsZWN0IiwiZXBpRm9ybUVsZW1lbnRTZWxlY3RUaXRsZSIsImFsbEVsZW1lbnRzIiwid2luZG93SGVpZ2h0IiwiZWxlbXMiLCJpbm5lcldpZHRoIiwiaW5uZXJIZWlnaHQiLCJ0b3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib2R5Iiwic2V0VGltZW91dCIsImxhbmd1YWdlTWVudUNsb3NlIiwiaGVhZGVyU2VhcmNoQ2xvc2UiLCJtb2JpbGVOYXZpSXRlbSIsInNsaWRlUG9zIiwibGluayIsInRyYW5zZm9ybSIsImJpbmQiLCJsYW5ndWFnZSIsImNvb2tpZSIsImhlYWRlclNlYXJjaFRvZ2dsZXIiLCJoZWFkZXJTZWFyY2hGb3JtIiwiY2hlY2tWYWx1ZSIsImhlYWRlclNlYXJjaEZvcm1JbnB1dCIsInZhbHVlIiwiaGVhZGVyU2VhcmNoRm9ybVN1Ym1pdCIsImRpc2FibGVkIiwiaGVhZGVyU2VhcmNoRm9ybUNsb3NlIiwidGFyZ2V0QXJpYUV4cGFuZGVkU3RhdGUiLCJ0YXJnZXRBcmlhSGlkZGVuU3RhdGUiLCJzZXRBdHRyaWJ1dGUiLCJmb2N1cyIsImNsaWNrIiwiZXZ0IiwibGFuZ3VhZ2VNZW51VG9nZ2xlciIsImxhbmd1YWdlTWVudSIsImxhbmd1YWdlTWVudUNsb3NlQnV0dG9uIiwidGhpcmQiLCJtaW5IZWlnaHQiLCJvZmZzZXRIZWlnaHQiLCJyZW1vdmVQcm9wZXJ0eSIsImlzT2JqZWN0Iiwib2JqIiwiY29uc3RydWN0b3IiLCJPYmplY3QiLCJleHRlbmQiLCJzcmMiLCJrZXlzIiwic3NyRG9jdW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiYmx1ciIsIm5vZGVOYW1lIiwiZ2V0RWxlbWVudEJ5SWQiLCJjcmVhdGVFdmVudCIsImluaXRFdmVudCIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsImNoaWxkTm9kZXMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImNyZWF0ZUVsZW1lbnROUyIsImltcG9ydE5vZGUiLCJsb2NhdGlvbiIsImhhc2giLCJob3N0IiwiaG9zdG5hbWUiLCJvcmlnaW4iLCJwYXRobmFtZSIsInByb3RvY29sIiwic2VhcmNoIiwiZ2V0RG9jdW1lbnQiLCJkb2MiLCJzc3JXaW5kb3ciLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwicHVzaFN0YXRlIiwiZ28iLCJiYWNrIiwiQ3VzdG9tRXZlbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsIkltYWdlIiwiRGF0ZSIsInNjcmVlbiIsImNsZWFyVGltZW91dCIsIm1hdGNoTWVkaWEiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsIndpbiIsIl9nZXRQcm90b3R5cGVPZiIsIm8iLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiX3NldFByb3RvdHlwZU9mIiwicCIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2hhbSIsIlByb3h5IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJjYWxsIiwiX2NvbnN0cnVjdCIsIlBhcmVudCIsImFyZ3MiLCJDbGFzcyIsImEiLCJhcHBseSIsImluc3RhbmNlIiwiRnVuY3Rpb24iLCJhcmd1bWVudHMiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiX2NhY2hlIiwiTWFwIiwidW5kZWZpbmVkIiwiZm4iLCJpbmRleE9mIiwiVHlwZUVycm9yIiwiaGFzIiwiZ2V0Iiwic2V0IiwiV3JhcHBlciIsImNyZWF0ZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImNvbmZpZ3VyYWJsZSIsIkRvbTciLCJfQXJyYXkiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJfdGhpcyIsInByb3RvIiwic2VsZiIsIlJlZmVyZW5jZUVycm9yIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsImNvbmNhdCIsImRlZmluZVByb3BlcnR5IiwiQXJyYXkiLCJhcnJheUZsYXQiLCJhcnIiLCJyZXMiLCJlbCIsImlzQXJyYXkiLCJhcnJheUZpbHRlciIsImZpbHRlciIsIiQiLCJzZWxlY3RvciIsImNvbnRleHQiLCJodG1sIiwidHJpbSIsInRvQ3JlYXRlIiwidGVtcFBhcmVudCIsInFzYSIsIm5vZGVUeXBlIiwidW5pcXVlQXJyYXkiLCJhcnJheVVuaXF1ZSIsIm5vVHJpZ2dlciIsInNwbGl0Iiwic2hvcnRjdXQiLCJuYW1lIiwiX2xlbiIsIl9rZXkiLCJ0cmlnZ2VyIiwib24iLCJNZXRob2RzIiwiYWRkQ2xhc3MiLCJjbGFzc2VzIiwiY2xhc3NOYW1lcyIsImMiLCJfZWwkY2xhc3NMaXN0IiwicmVtb3ZlQ2xhc3MiLCJfbGVuMiIsIl9rZXkyIiwiX2VsJGNsYXNzTGlzdDIiLCJoYXNDbGFzcyIsIl9sZW40IiwiX2tleTQiLCJ0b2dnbGVDbGFzcyIsIl9sZW4zIiwiX2tleTMiLCJhdHRyIiwiYXR0cnMiLCJhdHRyTmFtZSIsInJlbW92ZUF0dHIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJ0cmFuc2l0aW9uIiwiZHVyYXRpb24iLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJfbGVuNSIsIl9rZXk1IiwiZXZlbnRUeXBlIiwidGFyZ2V0U2VsZWN0b3IiLCJsaXN0ZW5lciIsImNhcHR1cmUiLCJoYW5kbGVMaXZlRXZlbnQiLCJkb203RXZlbnREYXRhIiwidW5zaGlmdCIsImlzIiwiX3BhcmVudHMiLCJwYXJlbnRzIiwiayIsImhhbmRsZUV2ZW50IiwiaiIsIl9ldmVudCIsImRvbTdMaXZlTGlzdGVuZXJzIiwicHJveHlMaXN0ZW5lciIsImRvbTdMaXN0ZW5lcnMiLCJvZmYiLCJfbGVuNiIsIl9rZXk2IiwiaGFuZGxlcnMiLCJoYW5kbGVyIiwiZG9tN3Byb3h5Iiwic3BsaWNlIiwiX2xlbjkiLCJfa2V5OSIsImRldGFpbCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGF0YUluZGV4IiwiZGlzcGF0Y2hFdmVudCIsInRyYW5zaXRpb25FbmQiLCJkb20iLCJmaXJlQ2FsbEJhY2siLCJvdXRlcldpZHRoIiwiaW5jbHVkZU1hcmdpbnMiLCJfc3R5bGVzIiwic3R5bGVzIiwib2Zmc2V0V2lkdGgiLCJwYXJzZUZsb2F0Iiwib3V0ZXJIZWlnaHQiLCJfc3R5bGVzMiIsIm9mZnNldCIsImJveCIsImNsaWVudFRvcCIsImNsaWVudExlZnQiLCJzY3JvbGxUb3AiLCJzY3JvbGxZIiwic2Nyb2xsTGVmdCIsInNjcm9sbFgiLCJsZWZ0IiwiY3NzIiwiX3Byb3AiLCJlYWNoIiwidGV4dENvbnRlbnQiLCJjb21wYXJlV2l0aCIsIm1hdGNoZXMiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsImNoaWxkIiwicHJldmlvdXNTaWJsaW5nIiwiZXEiLCJyZXR1cm5JbmRleCIsImFwcGVuZCIsIm5ld0NoaWxkIiwidGVtcERpdiIsImZpcnN0Q2hpbGQiLCJhcHBlbmRDaGlsZCIsInByZXBlbmQiLCJpbnNlcnRCZWZvcmUiLCJuZXh0IiwibmV4dEFsbCIsIm5leHRFbHMiLCJfbmV4dCIsInByZXZBbGwiLCJwcmV2RWxzIiwiX3ByZXYiLCJwYXJlbnQiLCJwYXJlbnROb2RlIiwiX3BhcmVudCIsImZpbmQiLCJmb3VuZEVsZW1lbnRzIiwiZm91bmQiLCJyZW1vdmVDaGlsZCIsIm1ldGhvZE5hbWUiLCJuZXh0VGljayIsImRlbGF5Iiwibm93Iiwic2xpY2UiLCJpc05vZGUiLCJub2RlIiwiSFRNTEVsZW1lbnQiLCJ0byIsIm5vRXh0ZW5kIiwibmV4dFNvdXJjZSIsImtleXNBcnJheSIsIm5leHRJbmRleCIsImxlbiIsIm5leHRLZXkiLCJkZXNjIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX19zd2lwZXJfXyIsImJpbmRNb2R1bGVNZXRob2RzIiwic3ViS2V5IiwiY2xhc3Nlc1RvU2VsZWN0b3IiLCJyZXBsYWNlIiwiY3JlYXRlRWxlbWVudElmTm90RGVmaW5lZCIsIiRjb250YWluZXIiLCJwYXJhbXMiLCJjcmVhdGVFbGVtZW50cyIsImNoZWNrUHJvcHMiLCJhdXRvIiwiZWxlbWVudCIsInN1cHBvcnQiLCJkZXZpY2UiLCJicm93c2VyIiwiZ2V0U3VwcG9ydCIsInRvdWNoIiwiRG9jdW1lbnRUb3VjaCIsInBvaW50ZXJFdmVudHMiLCJQb2ludGVyRXZlbnQiLCJtYXhUb3VjaFBvaW50cyIsInBhc3NpdmVMaXN0ZW5lciIsInN1cHBvcnRzUGFzc2l2ZSIsIm9wdHMiLCJnZXN0dXJlcyIsImNhbGNTdXBwb3J0IiwiZ2V0RGV2aWNlIiwib3ZlcnJpZGVzIiwiX3RlbXAiLCJwbGF0Zm9ybSIsInVhIiwiaW9zIiwiYW5kcm9pZCIsInNjcmVlbldpZHRoIiwid2lkdGgiLCJzY3JlZW5IZWlnaHQiLCJoZWlnaHQiLCJtYXRjaCIsImlwYWQiLCJpcG9kIiwiaXBob25lIiwid2luZG93cyIsIm1hY29zIiwib3MiLCJjYWxjRGV2aWNlIiwiZ2V0QnJvd3NlciIsImlzRWRnZSIsImlzU2FmYXJpIiwidG9Mb3dlckNhc2UiLCJpc1dlYlZpZXciLCJ0ZXN0IiwiY2FsY0Jyb3dzZXIiLCJzd2lwZXIiLCJyZXNpemUiLCJjcmVhdGVPYnNlcnZlciIsImRlc3Ryb3llZCIsImluaXRpYWxpemVkIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwibmV3V2lkdGgiLCJuZXdIZWlnaHQiLCJfcmVmIiwiY29udGVudEJveFNpemUiLCJjb250ZW50UmVjdCIsImlubGluZVNpemUiLCJibG9ja1NpemUiLCJyZXNpemVIYW5kbGVyIiwicmVtb3ZlT2JzZXJ2ZXIiLCJ1bm9ic2VydmUiLCJlbWl0Iiwib3JpZW50YXRpb25DaGFuZ2VIYW5kbGVyIiwiaW5pdCIsInJlc2l6ZU9ic2VydmVyIiwiZGVzdHJveSIsIl9leHRlbmRzIiwiYXNzaWduIiwic291cmNlIiwiaGFzT3duUHJvcGVydHkiLCJPYnNlcnZlciIsImF0dGFjaCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJraXRNdXRhdGlvbk9ic2VydmVyIiwibXV0YXRpb25zIiwib2JzZXJ2ZXJVcGRhdGUiLCJhdHRyaWJ1dGVzIiwiY2hpbGRMaXN0IiwiY2hhcmFjdGVyRGF0YSIsIm9ic2VydmVycyIsIm9ic2VydmVQYXJlbnRzIiwiY29udGFpbmVyUGFyZW50cyIsIiRlbCIsIm9ic2VydmVTbGlkZUNoaWxkcmVuIiwiJHdyYXBwZXJFbCIsImRpc2Nvbm5lY3QiLCJwcmlvcml0eSIsImV2ZW50c0xpc3RlbmVycyIsIm9uY2UiLCJvbmNlSGFuZGxlciIsIl9fZW1pdHRlclByb3h5Iiwib25BbnkiLCJldmVudHNBbnlMaXN0ZW5lcnMiLCJvZmZBbnkiLCJldmVudEhhbmRsZXIiLCJldmVudHNBcnJheSIsInVwZGF0ZVNpemUiLCJjbGllbnRIZWlnaHQiLCJpc0hvcml6b250YWwiLCJpc1ZlcnRpY2FsIiwiTnVtYmVyIiwiaXNOYU4iLCJzaXplIiwidXBkYXRlU2xpZGVzIiwiZ2V0RGlyZWN0aW9uTGFiZWwiLCJwcm9wZXJ0eSIsImdldERpcmVjdGlvblByb3BlcnR5VmFsdWUiLCJzd2lwZXJTaXplIiwicnRsIiwicnRsVHJhbnNsYXRlIiwid3JvbmdSVEwiLCJpc1ZpcnR1YWwiLCJ2aXJ0dWFsIiwiZW5hYmxlZCIsInByZXZpb3VzU2xpZGVzTGVuZ3RoIiwic2xpZGVzIiwic2xpZGVDbGFzcyIsInNsaWRlc0xlbmd0aCIsInNuYXBHcmlkIiwic2xpZGVzR3JpZCIsInNsaWRlc1NpemVzR3JpZCIsIm9mZnNldEJlZm9yZSIsInNsaWRlc09mZnNldEJlZm9yZSIsIm9mZnNldEFmdGVyIiwic2xpZGVzT2Zmc2V0QWZ0ZXIiLCJwcmV2aW91c1NuYXBHcmlkTGVuZ3RoIiwicHJldmlvdXNTbGlkZXNHcmlkTGVuZ3RoIiwic3BhY2VCZXR3ZWVuIiwic2xpZGVQb3NpdGlvbiIsInByZXZTbGlkZVNpemUiLCJzbGlkZXNOdW1iZXJFdmVuVG9Sb3dzIiwic2xpZGVTaXplIiwidmlydHVhbFNpemUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luQm90dG9tIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJzbGlkZXNQZXJDb2x1bW4iLCJNYXRoIiwiZmxvb3IiLCJjZWlsIiwic2xpZGVzUGVyVmlldyIsInNsaWRlc1BlckNvbHVtbkZpbGwiLCJtYXgiLCJuZXdTbGlkZXNHcmlkIiwiXyR3cmFwcGVyRWwkY3NzIiwiXyR3cmFwcGVyRWwkY3NzMiIsInNsaWRlc1BlclJvdyIsIm51bUZ1bGxDb2x1bW5zIiwic2xpZGUiLCJuZXdTbGlkZU9yZGVySW5kZXgiLCJjb2x1bW4iLCJyb3ciLCJzbGlkZXNQZXJHcm91cCIsImdyb3VwSW5kZXgiLCJzbGlkZUluZGV4SW5Hcm91cCIsImNvbHVtbnNJbkdyb3VwIiwibWluIiwib3JkZXIiLCJzbGlkZVN0eWxlcyIsImN1cnJlbnRUcmFuc2Zvcm0iLCJjdXJyZW50V2ViS2l0VHJhbnNmb3JtIiwid2Via2l0VHJhbnNmb3JtIiwicm91bmRMZW5ndGhzIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJib3hTaXppbmciLCJfc2xpZGUkIiwic3dpcGVyU2xpZGVTaXplIiwiY2VudGVyZWRTbGlkZXMiLCJhYnMiLCJzbGlkZXNQZXJHcm91cFNraXAiLCJlZmZlY3QiLCJzZXRXcmFwcGVyU2l6ZSIsIl9pIiwic2xpZGVzR3JpZEl0ZW0iLCJfaTIiLCJfc2xpZGVzR3JpZEl0ZW0iLCJfc2xpZGVzJGZpbHRlciRjc3MiLCJfIiwic2xpZGVJbmRleCIsImNzc01vZGUiLCJjZW50ZXJlZFNsaWRlc0JvdW5kcyIsImFsbFNsaWRlc1NpemUiLCJzbGlkZVNpemVWYWx1ZSIsIm1heFNuYXAiLCJzbmFwIiwiY2VudGVySW5zdWZmaWNpZW50U2xpZGVzIiwiX2FsbFNsaWRlc1NpemUiLCJhbGxTbGlkZXNPZmZzZXQiLCJzbmFwSW5kZXgiLCJ3YXRjaE92ZXJmbG93IiwiY2hlY2tPdmVyZmxvdyIsIndhdGNoU2xpZGVzUHJvZ3Jlc3MiLCJ3YXRjaFNsaWRlc1Zpc2liaWxpdHkiLCJ1cGRhdGVTbGlkZXNPZmZzZXQiLCJ1cGRhdGVBdXRvSGVpZ2h0Iiwic3BlZWQiLCJhY3RpdmVTbGlkZXMiLCJzZXRUcmFuc2l0aW9uIiwiZ2V0U2xpZGVCeUluZGV4IiwidmlzaWJsZVNsaWRlcyIsImFjdGl2ZUluZGV4Iiwic3dpcGVyU2xpZGVPZmZzZXQiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwidXBkYXRlU2xpZGVzUHJvZ3Jlc3MiLCJ0cmFuc2xhdGUiLCJvZmZzZXRDZW50ZXIiLCJzbGlkZVZpc2libGVDbGFzcyIsInZpc2libGVTbGlkZXNJbmRleGVzIiwic2xpZGVQcm9ncmVzcyIsIm1pblRyYW5zbGF0ZSIsImF1dG9IZWlnaHQiLCJzbGlkZUJlZm9yZSIsInNsaWRlQWZ0ZXIiLCJwcm9ncmVzcyIsInVwZGF0ZVByb2dyZXNzIiwibXVsdGlwbGllciIsInRyYW5zbGF0ZXNEaWZmIiwibWF4VHJhbnNsYXRlIiwiaXNCZWdpbm5pbmciLCJpc0VuZCIsIndhc0JlZ2lubmluZyIsIndhc0VuZCIsInVwZGF0ZVNsaWRlc0NsYXNzZXMiLCJhY3RpdmVTbGlkZSIsInJlYWxJbmRleCIsInNsaWRlQWN0aXZlQ2xhc3MiLCJzbGlkZU5leHRDbGFzcyIsInNsaWRlUHJldkNsYXNzIiwic2xpZGVEdXBsaWNhdGVBY3RpdmVDbGFzcyIsInNsaWRlRHVwbGljYXRlTmV4dENsYXNzIiwic2xpZGVEdXBsaWNhdGVQcmV2Q2xhc3MiLCJsb29wIiwic2xpZGVEdXBsaWNhdGVDbGFzcyIsIm5leHRTbGlkZSIsInByZXZTbGlkZSIsImVtaXRTbGlkZXNDbGFzc2VzIiwidXBkYXRlQWN0aXZlSW5kZXgiLCJuZXdBY3RpdmVJbmRleCIsInByZXZpb3VzSW5kZXgiLCJwcmV2aW91c1JlYWxJbmRleCIsInByZXZpb3VzU25hcEluZGV4Iiwibm9ybWFsaXplU2xpZGVJbmRleCIsInNraXAiLCJydW5DYWxsYmFja3NPbkluaXQiLCJ1cGRhdGVDbGlja2VkU2xpZGUiLCJzbGlkZUZvdW5kIiwiY2xpY2tlZFNsaWRlIiwiY2xpY2tlZEluZGV4Iiwic2xpZGVUb0NsaWNrZWRTbGlkZSIsInNsaWRlVG8iLCJydW5DYWxsYmFja3MiLCJpbnRlcm5hbCIsImluaXRpYWwiLCJFcnJvciIsImluZGV4QXNOdW1iZXIiLCJpc0Zpbml0ZSIsIndyYXBwZXJFbCIsImFuaW1hdGluZyIsInByZXZlbnRJbnRlcmFjdGlvbk9uVHJhbnNpdGlvbiIsImluaXRpYWxTbGlkZSIsImRpcmVjdGlvbiIsIm5vcm1hbGl6ZWRUcmFuc2xhdGUiLCJub3JtYWxpemVkR2lyZCIsIm5vcm1hbGl6ZWRHcmlkTmV4dCIsImFsbG93U2xpZGVOZXh0IiwiYWxsb3dTbGlkZVByZXYiLCJzZXRUcmFuc2xhdGUiLCJ0cmFuc2l0aW9uU3RhcnQiLCJfd3JhcHBlckVsJHNjcm9sbFRvIiwiaXNIIiwidCIsInNjcm9sbFdpZHRoIiwic2Nyb2xsVG8iLCJiZWhhdmlvciIsIm9uU2xpZGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIiwic2xpZGVUb0xvb3AiLCJuZXdJbmRleCIsImxvb3BlZFNsaWRlcyIsInNsaWRlTmV4dCIsImluY3JlbWVudCIsImxvb3BQcmV2ZW50c1NsaWRlIiwibG9vcEZpeCIsIl9jbGllbnRMZWZ0Iiwic2xpZGVQcmV2Iiwibm9ybWFsaXplIiwidmFsIiwicHJldkluZGV4Iiwibm9ybWFsaXplZFNuYXBHcmlkIiwicHJldlNuYXAiLCJzbGlkZVJlc2V0Iiwic2xpZGVUb0Nsb3Nlc3QiLCJjdXJyZW50U25hcCIsInNsaWRlc1BlclZpZXdEeW5hbWljIiwic2xpZGVUb0luZGV4IiwibG9vcENyZWF0ZSIsImxvb3BGaWxsR3JvdXBXaXRoQmxhbmsiLCJibGFua1NsaWRlc051bSIsImJsYW5rTm9kZSIsInNsaWRlQmxhbmtDbGFzcyIsImxvb3BBZGRpdGlvbmFsU2xpZGVzIiwicHJlcGVuZFNsaWRlcyIsImFwcGVuZFNsaWRlcyIsImNsb25lTm9kZSIsImRpZmYiLCJnZXRUcmFuc2xhdGUiLCJsb29wRGVzdHJveSIsIm9uVG91Y2hTdGFydCIsInRvdWNoRXZlbnRzRGF0YSIsInRvdWNoZXMiLCJvcmlnaW5hbEV2ZW50IiwiJHRhcmdldEVsIiwidG91Y2hFdmVudHNUYXJnZXQiLCJpc1RvdWNoRXZlbnQiLCJ3aGljaCIsImJ1dHRvbiIsImlzVG91Y2hlZCIsImlzTW92ZWQiLCJub1N3aXBpbmdDbGFzcyIsInNoYWRvd1Jvb3QiLCJwYXRoIiwibm9Td2lwaW5nU2VsZWN0b3IiLCJpc1RhcmdldFNoYWRvdyIsIm5vU3dpcGluZyIsImJhc2UiLCJfX2Nsb3Nlc3RGcm9tIiwiYXNzaWduZWRTbG90IiwiZ2V0Um9vdE5vZGUiLCJjbG9zZXN0RWxlbWVudCIsImFsbG93Q2xpY2siLCJzd2lwZUhhbmRsZXIiLCJjdXJyZW50WCIsInRhcmdldFRvdWNoZXMiLCJwYWdlWCIsImN1cnJlbnRZIiwicGFnZVkiLCJzdGFydFgiLCJzdGFydFkiLCJlZGdlU3dpcGVEZXRlY3Rpb24iLCJpT1NFZGdlU3dpcGVEZXRlY3Rpb24iLCJlZGdlU3dpcGVUaHJlc2hvbGQiLCJpT1NFZGdlU3dpcGVUaHJlc2hvbGQiLCJhbGxvd1RvdWNoQ2FsbGJhY2tzIiwiaXNTY3JvbGxpbmciLCJzdGFydE1vdmluZyIsInRvdWNoU3RhcnRUaW1lIiwic3dpcGVEaXJlY3Rpb24iLCJhbGxvd1RocmVzaG9sZE1vdmUiLCJmb2N1c2FibGVFbGVtZW50cyIsInNob3VsZFByZXZlbnREZWZhdWx0IiwiYWxsb3dUb3VjaE1vdmUiLCJ0b3VjaFN0YXJ0UHJldmVudERlZmF1bHQiLCJ0b3VjaFN0YXJ0Rm9yY2VQcmV2ZW50RGVmYXVsdCIsImlzQ29udGVudEVkaXRhYmxlIiwib25Ub3VjaE1vdmUiLCJ0YXJnZXRUb3VjaCIsImNoYW5nZWRUb3VjaGVzIiwicHJldmVudGVkQnlOZXN0ZWRTd2lwZXIiLCJ0b3VjaFJlbGVhc2VPbkVkZ2VzIiwidG91Y2hBbmdsZSIsImRpZmZYIiwiZGlmZlkiLCJzcXJ0IiwicG93IiwiYXRhbjIiLCJQSSIsInRvdWNoTW92ZVN0b3BQcm9wYWdhdGlvbiIsIm5lc3RlZCIsInN0YXJ0VHJhbnNsYXRlIiwiYWxsb3dNb21lbnR1bUJvdW5jZSIsImdyYWJDdXJzb3IiLCJzZXRHcmFiQ3Vyc29yIiwidG91Y2hSYXRpbyIsImN1cnJlbnRUcmFuc2xhdGUiLCJkaXNhYmxlUGFyZW50U3dpcGVyIiwicmVzaXN0YW5jZVJhdGlvIiwicmVzaXN0YW5jZSIsImZvbGxvd0ZpbmdlciIsImZyZWVNb2RlIiwidmVsb2NpdGllcyIsInBvc2l0aW9uIiwidGltZSIsIm9uVG91Y2hFbmQiLCJjdXJyZW50UG9zIiwidG91Y2hFbmRUaW1lIiwidGltZURpZmYiLCJsYXN0Q2xpY2tUaW1lIiwiZnJlZU1vZGVNb21lbnR1bSIsImxhc3RNb3ZlRXZlbnQiLCJwb3AiLCJ2ZWxvY2l0eUV2ZW50IiwiZGlzdGFuY2UiLCJ2ZWxvY2l0eSIsImZyZWVNb2RlTWluaW11bVZlbG9jaXR5IiwiZnJlZU1vZGVNb21lbnR1bVZlbG9jaXR5UmF0aW8iLCJtb21lbnR1bUR1cmF0aW9uIiwiZnJlZU1vZGVNb21lbnR1bVJhdGlvIiwibW9tZW50dW1EaXN0YW5jZSIsIm5ld1Bvc2l0aW9uIiwiYWZ0ZXJCb3VuY2VQb3NpdGlvbiIsIm5lZWRzTG9vcEZpeCIsImRvQm91bmNlIiwiYm91bmNlQW1vdW50IiwiZnJlZU1vZGVNb21lbnR1bUJvdW5jZVJhdGlvIiwiZnJlZU1vZGVNb21lbnR1bUJvdW5jZSIsImZyZWVNb2RlU3RpY2t5IiwibW92ZURpc3RhbmNlIiwiY3VycmVudFNsaWRlU2l6ZSIsImxvbmdTd2lwZXNNcyIsInN0b3BJbmRleCIsImdyb3VwU2l6ZSIsIl9pbmNyZW1lbnQiLCJyYXRpbyIsImxvbmdTd2lwZXMiLCJsb25nU3dpcGVzUmF0aW8iLCJzaG9ydFN3aXBlcyIsIm5hdmlnYXRpb24iLCJuZXh0RWwiLCJwcmV2RWwiLCJvblJlc2l6ZSIsImJyZWFrcG9pbnRzIiwic2V0QnJlYWtwb2ludCIsImF1dG9wbGF5IiwicnVubmluZyIsInBhdXNlZCIsInJ1biIsInByZXZlbnRDbGlja3MiLCJwcmV2ZW50Q2xpY2tzUHJvcGFnYXRpb24iLCJzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24iLCJvblNjcm9sbCIsInByZXZpb3VzVHJhbnNsYXRlIiwiZHVtbXlFdmVudEF0dGFjaGVkIiwiZHVtbXlFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnRzIiwidG91Y2hFdmVudHMiLCJzdGFydCIsIm1vdmUiLCJlbmQiLCJwYXNzaXZlTGlzdGVuZXJzIiwicGFzc2l2ZSIsImNhbmNlbCIsInNpbXVsYXRlVG91Y2giLCJ1cGRhdGVPbldpbmRvd1Jlc2l6ZSIsImRldGFjaEV2ZW50cyIsImFkZENsYXNzZXMiLCJwcmVmaXgiLCJyZXN1bHRDbGFzc2VzIiwic3VmZml4ZXMiLCJjb250YWluZXJNb2RpZmllckNsYXNzIiwiam9pbiIsImVtaXRDb250YWluZXJDbGFzc2VzIiwicmVtb3ZlQ2xhc3NlcyIsInZpcnR1YWxUcmFuc2xhdGUiLCJicmVha3BvaW50c0Jhc2UiLCJ1bmlxdWVOYXZFbGVtZW50cyIsInByZWxvYWRJbWFnZXMiLCJ1cGRhdGVPbkltYWdlc1JlYWR5Iiwid3JhcHBlckNsYXNzIiwiX2VtaXRDbGFzc2VzIiwiX2RlZmluZVByb3BlcnRpZXMiLCJkZXNjcmlwdG9yIiwicHJvdG90eXBlcyIsIm1vZHVsYXIiLCJ1c2VQYXJhbXMiLCJpbnN0YW5jZVBhcmFtcyIsIm1vZHVsZXMiLCJtb2R1bGVOYW1lIiwibW9kdWxlIiwidXNlTW9kdWxlcyIsIm1vZHVsZXNQYXJhbXMiLCJtb2R1bGVQYXJhbXMiLCJtb2R1bGVFdmVudE5hbWUiLCJldmVudHNFbWl0dGVyIiwidXBkYXRlIiwiYXhpcyIsIm1hdHJpeCIsImN1clRyYW5zZm9ybSIsInRyYW5zZm9ybU1hdHJpeCIsImN1clN0eWxlIiwiY3VycmVudFN0eWxlIiwiV2ViS2l0Q1NTTWF0cml4IiwiTW96VHJhbnNmb3JtIiwiT1RyYW5zZm9ybSIsIk1zVHJhbnNmb3JtIiwibXNUcmFuc2Zvcm0iLCJtNDEiLCJtNDIiLCJieUNvbnRyb2xsZXIiLCJ4IiwieSIsInRyYW5zbGF0ZVRvIiwidHJhbnNsYXRlQm91bmRzIiwibmV3VHJhbnNsYXRlIiwib25UcmFuc2xhdGVUb1dyYXBwZXJUcmFuc2l0aW9uRW5kIiwiZGlyIiwibW92aW5nIiwiaXNMb2NrZWQiLCJjdXJzb3IiLCJ1bnNldEdyYWJDdXJzb3IiLCJtYW5pcHVsYXRpb24iLCJhcHBlbmRTbGlkZSIsInByZXBlbmRTbGlkZSIsImFkZFNsaWRlIiwiYWN0aXZlSW5kZXhCdWZmZXIiLCJiYXNlTGVuZ3RoIiwic2xpZGVzQnVmZmVyIiwiY3VycmVudFNsaWRlIiwicmVtb3ZlU2xpZGUiLCJzbGlkZXNJbmRleGVzIiwiaW5kZXhUb1JlbW92ZSIsInJlbW92ZUFsbFNsaWRlcyIsIl9zd2lwZXIkbG9vcGVkU2xpZGVzIiwiYnJlYWtwb2ludCIsImdldEJyZWFrcG9pbnQiLCJjdXJyZW50QnJlYWtwb2ludCIsImJyZWFrcG9pbnRPbmx5UGFyYW1zIiwicGFyYW0iLCJwYXJhbVZhbHVlIiwiYnJlYWtwb2ludFBhcmFtcyIsIm9yaWdpbmFsUGFyYW1zIiwid2FzTXVsdGlSb3ciLCJpc011bHRpUm93Iiwid2FzRW5hYmxlZCIsImRpcmVjdGlvbkNoYW5nZWQiLCJuZWVkc1JlTG9vcCIsImNoYW5nZURpcmVjdGlvbiIsImlzRW5hYmxlZCIsImRpc2FibGUiLCJlbmFibGUiLCJjb250YWluZXJFbCIsImN1cnJlbnRIZWlnaHQiLCJwb2ludHMiLCJwb2ludCIsIm1pblJhdGlvIiwic3Vic3RyIiwic29ydCIsImIiLCJfcG9pbnRzJGkiLCJ3YXNMb2NrZWQiLCJsYXN0U2xpZGVQb3NpdGlvbiIsImltYWdlcyIsImxvYWRJbWFnZSIsImltYWdlRWwiLCJzcmNzZXQiLCJzaXplcyIsImNoZWNrRm9yQ29tcGxldGUiLCJpbWFnZSIsIm9uUmVhZHkiLCJjb21wbGV0ZSIsIm9ubG9hZCIsIm9uZXJyb3IiLCJpbWFnZXNMb2FkZWQiLCJpbWFnZXNUb0xvYWQiLCJjdXJyZW50U3JjIiwiZXh0ZW5kZWREZWZhdWx0cyIsIlN3aXBlciIsInN3aXBlcnMiLCJuZXdQYXJhbXMiLCJtb2R1bGVQYXJhbU5hbWUiLCJkZXNrdG9wIiwic3dpcGVyUGFyYW1zIiwiZGVmYXVsdHMiLCJwYXNzZWRQYXJhbXMiLCJldmVudE5hbWUiLCJ0b3VjaEV2ZW50c1RvdWNoIiwidG91Y2hFdmVudHNEZXNrdG9wIiwiY2xpY2tUaW1lb3V0IiwiQ29uc3RydWN0b3IiLCJzdGF0aWNQcm9wcyIsIl9wcm90byIsInNldFByb2dyZXNzIiwiZ2V0U2xpZGVDbGFzc2VzIiwic2xpZGVFbCIsInVwZGF0ZXMiLCJzcHYiLCJicmVha0xvb3AiLCJ0cmFuc2xhdGVWYWx1ZSIsIm5ld0RpcmVjdGlvbiIsIm5lZWRVcGRhdGUiLCJjdXJyZW50RGlyZWN0aW9uIiwibW91bnQiLCJtb3VudGVkIiwiZ2V0V3JhcHBlclNlbGVjdG9yIiwiZ2V0V3JhcHBlciIsIndyYXBwZXIiLCJkZWxldGVJbnN0YW5jZSIsImNsZWFuU3R5bGVzIiwib2JqZWN0IiwiZXh0ZW5kRGVmYXVsdHMiLCJuZXdEZWZhdWx0cyIsImluc3RhbGxNb2R1bGUiLCJ1c2UiLCJtIiwicHJvdG90eXBlR3JvdXAiLCJwcm90b01ldGhvZCIsIk5hdmlnYXRpb24iLCJ0b2dnbGVFbCIsImRpc2FibGVkQ2xhc3MiLCJ0YWdOYW1lIiwiX3N3aXBlciRuYXZpZ2F0aW9uIiwiJG5leHRFbCIsIiRwcmV2RWwiLCJsb2NrQ2xhc3MiLCJvblByZXZDbGljayIsIm9uTmV4dENsaWNrIiwiX3N3aXBlciRuYXZpZ2F0aW9uMiIsImhpZGVPbkNsaWNrIiwiaGlkZGVuQ2xhc3MiLCJ0b0VkZ2UiLCJmcm9tRWRnZSIsIl9zd2lwZXIkbmF2aWdhdGlvbjMiLCJfc3dpcGVyJG5hdmlnYXRpb240IiwidGFyZ2V0RWwiLCJwYWdpbmF0aW9uIiwiY2xpY2thYmxlIiwiaXNIaWRkZW4iLCJQYWdpbmF0aW9uIiwidG90YWwiLCJwYWdpbmF0aW9uVHlwZSIsImJ1bGxldHMiLCJmaXJzdEluZGV4IiwibGFzdEluZGV4IiwibWlkSW5kZXgiLCJkeW5hbWljQnVsbGV0cyIsImJ1bGxldFNpemUiLCJkeW5hbWljTWFpbkJ1bGxldHMiLCJkeW5hbWljQnVsbGV0SW5kZXgiLCJidWxsZXRBY3RpdmVDbGFzcyIsImJ1bGxldCIsIiRidWxsZXQiLCJidWxsZXRJbmRleCIsIiRmaXJzdERpc3BsYXllZEJ1bGxldCIsIiRsYXN0RGlzcGxheWVkQnVsbGV0IiwiZHluYW1pY0J1bGxldHNMZW5ndGgiLCJidWxsZXRzT2Zmc2V0Iiwib2Zmc2V0UHJvcCIsImN1cnJlbnRDbGFzcyIsImZvcm1hdEZyYWN0aW9uQ3VycmVudCIsInRvdGFsQ2xhc3MiLCJmb3JtYXRGcmFjdGlvblRvdGFsIiwicHJvZ3Jlc3NiYXJEaXJlY3Rpb24iLCJwcm9ncmVzc2Jhck9wcG9zaXRlIiwic2NhbGUiLCJzY2FsZVgiLCJzY2FsZVkiLCJwcm9ncmVzc2JhckZpbGxDbGFzcyIsInJlbmRlckN1c3RvbSIsInJlbmRlciIsInBhZ2luYXRpb25IVE1MIiwibnVtYmVyT2ZCdWxsZXRzIiwicmVuZGVyQnVsbGV0IiwiYnVsbGV0Q2xhc3MiLCJidWxsZXRFbGVtZW50IiwicmVuZGVyRnJhY3Rpb24iLCJyZW5kZXJQcm9ncmVzc2JhciIsImNsaWNrYWJsZUNsYXNzIiwibW9kaWZpZXJDbGFzcyIsInByb2dyZXNzYmFyT3Bwb3NpdGVDbGFzcyIsIm51bWJlciIsImFjdGl2ZUluZGV4Q2hhbmdlIiwic25hcEluZGV4Q2hhbmdlIiwic2xpZGVzTGVuZ3RoQ2hhbmdlIiwic25hcEdyaWRMZW5ndGhDaGFuZ2UiLCJ0eHRDb250ZW50IiwidHh0Q29udGVudFRhYmxlIiwiZGl2IiwiYWx0Iiwic291cmNlcyIsInNyY1NldCIsIl9pbmhlcml0c0xvb3NlIiwiQ0FOX1VTRV9ET00iLCJtZW1vaXplZCIsImVuc3VyZUNhbk11dGF0ZU5leHRFdmVudEhhbmRsZXJzIiwiZXZlbnRIYW5kbGVycyIsIm5leHRIYW5kbGVycyIsIlRhcmdldEV2ZW50SGFuZGxlcnMiLCJnZXRFdmVudEhhbmRsZXJzIiwibm9ybWFsaXplZEV2ZW50T3B0aW9ucyIsIlN0cmluZyIsImlzU3Vic2NyaWJlZCIsIkVWRU5UX0hBTkRMRVJTX0tFWSIsImV2ZW50T3B0aW9ucyIsInN1cHBvcnRzUGFzc2l2ZU9wdGlvbiIsIm5vb3AiLCJ0ZXN0UGFzc2l2ZUV2ZW50TGlzdGVuZXJzIiwibm9ybWFsaXplRXZlbnRPcHRpb25zIiwiY29tcHV0ZU9mZnNldFBpeGVscyIsImNvbnRleHRIZWlnaHQiLCJzdHIiLCJwaXhlbE9mZnNldCIsInBlcmNlbnRPZmZzZXQiLCJwYXJzZU9mZnNldEFzUGVyY2VudGFnZSIsInRpbWVvdXQiLCJBQk9WRSIsIklOU0lERSIsIkJFTE9XIiwiSU5WSVNJQkxFIiwiaXNET01FbGVtZW50IiwiQ29tcG9uZW50IiwidGltZW91dFF1ZXVlIiwib25OZXh0VGljayIsImNiIiwic2hpZnQiLCJoYXNXaW5kb3ciLCJXYXlwb2ludCIsIl9SZWFjdCRQdXJlQ29tcG9uZW50IiwicmVmRWxlbWVudCIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMyIiwiY2FuY2VsT25OZXh0VGljayIsIl90aGlzMiRwcm9wcyIsImRlYnVnIiwiZW5zdXJlUmVmSXNQcm92aWRlZEJ5Q2hpbGQiLCJfaGFuZGxlU2Nyb2xsIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiX2ZpbmRTY3JvbGxhYmxlQW5jZXN0b3IiLCJzY3JvbGxFdmVudExpc3RlbmVyVW5zdWJzY3JpYmUiLCJyZXNpemVFdmVudExpc3RlbmVyVW5zdWJzY3JpYmUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpczMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsIl90aGlzJHByb3BzIiwiaG9yaXpvbnRhbCIsImciLCJyZXNvbHZlU2Nyb2xsYWJsZUFuY2VzdG9yUHJvcCIsIm92ZXJmbG93IiwiYm91bmRzIiwiX2dldEJvdW5kcyIsImN1cnJlbnRQb3NpdGlvbiIsInZpZXdwb3J0Qm90dG9tIiwidmlld3BvcnRUb3AiLCJ3YXlwb2ludFRvcCIsIndheXBvaW50Qm90dG9tIiwiZ2V0Q3VycmVudFBvc2l0aW9uIiwicHJldmlvdXNQb3NpdGlvbiIsIl9wcmV2aW91c1Bvc2l0aW9uIiwiX3RoaXMkcHJvcHMyIiwib25Qb3NpdGlvbkNoYW5nZSIsIm9uRW50ZXIiLCJvbkxlYXZlIiwiZmlyZU9uUmFwaWRTY3JvbGwiLCJjYWxsYmFja0FyZyIsImNvbnRleHRTY3JvbGxUb3AiLCJfdGhpcyRwcm9wczMiLCJfdGhpcyRfcmVmJGdldEJvdW5kaW4iLCJyaWdodCIsImJvdHRvbSIsIl90aGlzJHByb3BzNCIsImJvdHRvbU9mZnNldCIsInRvcE9mZnNldCIsIl90aGlzNCIsImlzRm9yd2FyZFJlZiIsImlubmVyUmVmIiwiZm9udFNpemUiLCJhYm92ZSIsImJlbG93IiwiaW5zaWRlIiwiaW52aXNpYmxlIiwiZGVmYXVsdFByb3BzIiwiZGlzcGxheU5hbWUiLCJzZWxlY3RlZCIsImNoZWNrU2VsZWN0ZWQiLCJjbGVhckxhYmVsIiwiaXNWaXNpYmxlIiwiaGVhZGluZyIsInB1Ymxpc2hEYXRlIiwidGFnIiwic3RhdGUiLCJmb3JtIiwicXVlcnkiLCJyZXN1bHRzIiwicGFnZSIsImhhbmRsZUNoYW5nZSIsImhhbmRsZVN1Ym1pdCIsInNldFN0YXRlIiwiZG9TZWFyY2giLCJoaXRzIiwicGljdHVyZSIsImlzRXh0ZXJuYWwiLCJleGNlcnB0IiwibGlua1RleHQiLCJvblN1Ym1pdCIsInBsYWNlaG9sZGVyIiwidG90YWxDb3VudCIsInJlc3VsdHNMYWJlbCIsInBhZ2VzQ291bnQiLCJicmVha0xhYmVsIiwibmV4dExhYmVsIiwicHJldmlvdXNMYWJlbCIsInBhZ2VSYW5nZURpc3BsYXllZCIsIm1hcmdpblBhZ2VzRGlzcGxheWVkIiwicGFnZUNvdW50IiwicmVuZGVyT25aZXJvUGFnZUNvdW50IiwiY29udGFpbmVyQ2xhc3NOYW1lIiwicGFnZUNsYXNzTmFtZSIsInByZXZpb3VzQ2xhc3NOYW1lIiwibmV4dENsYXNzTmFtZSIsImFjdGl2ZUNsYXNzTmFtZSIsIm9uUGFnZUNoYW5nZSIsImhhbmRsZVBhZ2VDaGFuZ2UiLCJSZWFjdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwiZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwiciIsImYiLCJuIiwiY29tcG9zZUNsYXNzZXMiLCJzbG90cyIsImdldFV0aWxpdHlDbGFzcyIsIm91dHB1dCIsInNsb3QiLCJyZWR1Y2UiLCJhY2MiLCJ1dGlsaXR5Q2xhc3MiLCJtZW1vaXplIiwiY2FjaGUiLCJhcmciLCJyZWFjdFByb3BzUmVnZXgiLCJpc1Byb3BWYWxpZCIsInByb3AiLCJjaGFyQ29kZUF0IiwiU3R5bGVTaGVldCIsIl9pbnNlcnRUYWciLCJiZWZvcmUiLCJ0YWdzIiwiaW5zZXJ0aW9uUG9pbnQiLCJuZXh0U2libGluZyIsImNvbnRhaW5lciIsImlzU3BlZWR5Iiwic3BlZWR5IiwiY3RyIiwibm9uY2UiLCJoeWRyYXRlIiwibm9kZXMiLCJpbnNlcnQiLCJydWxlIiwiY3JlYXRlVGV4dE5vZGUiLCJjcmVhdGVTdHlsZUVsZW1lbnQiLCJzaGVldCIsInN0eWxlU2hlZXRzIiwib3duZXJOb2RlIiwic2hlZXRGb3JUYWciLCJpbnNlcnRSdWxlIiwiY3NzUnVsZXMiLCJmbHVzaCIsImZyb21DaGFyQ29kZSIsInBhdHRlcm4iLCJyZXBsYWNlbWVudCIsImluZGV4b2YiLCJiZWdpbiIsImFycmF5IiwibGluZSIsImNoYXJhY3RlciIsImNoYXJhY3RlcnMiLCJyb290IiwicmV0dXJuIiwicGVlayIsImNhcmV0IiwidG9rZW4iLCJhbGxvYyIsImRlYWxsb2MiLCJkZWxpbWl0IiwiZGVsaW1pdGVyIiwid2hpdGVzcGFjZSIsImVzY2FwaW5nIiwiY291bnQiLCJjb21tZW50ZXIiLCJpZGVudGlmaWVyIiwiQ09NTUVOVCIsInN0cmluZ2lmeSIsImNvbXBpbGUiLCJwYXJzZSIsInJ1bGVzIiwicnVsZXNldHMiLCJwc2V1ZG8iLCJkZWNsYXJhdGlvbnMiLCJhdHJ1bGUiLCJwcmV2aW91cyIsInZhcmlhYmxlIiwic2Nhbm5pbmciLCJhbXBlcnNhbmQiLCJyZWZlcmVuY2UiLCJjb21tZW50IiwiZGVjbGFyYXRpb24iLCJydWxlc2V0IiwicG9zdCIsInoiLCJpZGVudGlmaWVyV2l0aFBvaW50VHJhY2tpbmciLCJmaXhlZEVsZW1lbnRzIiwiV2Vha01hcCIsImNvbXBhdCIsImlzSW1wbGljaXRSdWxlIiwicGFyc2VkIiwidG9SdWxlcyIsImdldFJ1bGVzIiwicGFyZW50UnVsZXMiLCJyZW1vdmVMYWJlbCIsImRlZmF1bHRTdHlsaXNQbHVnaW5zIiwiZXhlYyIsImNyZWF0ZUNhY2hlIiwic3NyU3R5bGVzIiwiaGVhZCIsIl9pbnNlcnQiLCJzdHlsaXNQbHVnaW5zIiwiaW5zZXJ0ZWQiLCJub2Rlc1RvSHlkcmF0ZSIsImF0dHJpYiIsImN1cnJlbnRTaGVldCIsImNvbGxlY3Rpb24iLCJmaW5hbGl6aW5nUGx1Z2lucyIsInNlcmlhbGl6ZXIiLCJzZXJpYWxpemVkIiwic2hvdWxkQ2FjaGUiLCJzdHlsaXMiLCJyZWdpc3RlcmVkIiwibXVybXVyMiIsImgiLCJ1bml0bGVzc0tleXMiLCJhbmltYXRpb25JdGVyYXRpb25Db3VudCIsImFzcGVjdFJhdGlvIiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VXaWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5Db3VudCIsImNvbHVtbnMiLCJmbGV4IiwiZmxleEdyb3ciLCJmbGV4UG9zaXRpdmUiLCJmbGV4U2hyaW5rIiwiZmxleE5lZ2F0aXZlIiwiZmxleE9yZGVyIiwiZ3JpZFJvdyIsImdyaWRSb3dFbmQiLCJncmlkUm93U3BhbiIsImdyaWRSb3dTdGFydCIsImdyaWRDb2x1bW4iLCJncmlkQ29sdW1uRW5kIiwiZ3JpZENvbHVtblNwYW4iLCJncmlkQ29sdW1uU3RhcnQiLCJtc0dyaWRSb3ciLCJtc0dyaWRSb3dTcGFuIiwibXNHcmlkQ29sdW1uIiwibXNHcmlkQ29sdW1uU3BhbiIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0Iiwib3BhY2l0eSIsIm9ycGhhbnMiLCJ0YWJTaXplIiwid2lkb3dzIiwiekluZGV4Iiwiem9vbSIsIldlYmtpdExpbmVDbGFtcCIsImZpbGxPcGFjaXR5IiwiZmxvb2RPcGFjaXR5Iiwic3RvcE9wYWNpdHkiLCJzdHJva2VEYXNoYXJyYXkiLCJzdHJva2VEYXNob2Zmc2V0Iiwic3Ryb2tlTWl0ZXJsaW1pdCIsInN0cm9rZU9wYWNpdHkiLCJzdHJva2VXaWR0aCIsImh5cGhlbmF0ZVJlZ2V4IiwiYW5pbWF0aW9uUmVnZXgiLCJpc0N1c3RvbVByb3BlcnR5IiwiaXNQcm9jZXNzYWJsZVZhbHVlIiwicHJvY2Vzc1N0eWxlTmFtZSIsInN0eWxlTmFtZSIsInByb2Nlc3NTdHlsZVZhbHVlIiwicDEiLCJwMiIsImhhbmRsZUludGVycG9sYXRpb24iLCJtZXJnZWRQcm9wcyIsImludGVycG9sYXRpb24iLCJfX2Vtb3Rpb25fc3R5bGVzIiwiYW5pbSIsInN0cmluZyIsImludGVycG9sYXRlZCIsImNyZWF0ZVN0cmluZ0Zyb21PYmplY3QiLCJwcmV2aW91c0N1cnNvciIsInJlc3VsdCIsImNhY2hlZCIsImxhYmVsUGF0dGVybiIsInN0cmluZ01vZGUiLCJzdHJpbmdzIiwicmF3IiwiaWRlbnRpZmllck5hbWUiLCJ1c2VJbnNlcnRpb25FZmZlY3QiLCJFbW90aW9uQ2FjaGVDb250ZXh0IiwiUHJvdmlkZXIiLCJmdW5jIiwiZm9yd2FyZFJlZiIsInVzZUNvbnRleHQiLCJyZWdpc3RlcmVkU3R5bGVzIiwicmF3Q2xhc3NOYW1lIiwiaXNTdHJpbmdUYWciLCJ0ZXN0T21pdFByb3BzT25TdHJpbmdUYWciLCJ0ZXN0T21pdFByb3BzT25Db21wb25lbnQiLCJnZXREZWZhdWx0U2hvdWxkRm9yd2FyZFByb3AiLCJjb21wb3NlU2hvdWxkRm9yd2FyZFByb3BzIiwiaXNSZWFsIiwic2hvdWxkRm9yd2FyZFByb3AiLCJvcHRpb25zU2hvdWxkRm9yd2FyZFByb3AiLCJfX2Vtb3Rpb25fZm9yd2FyZFByb3AiLCJwcm9wTmFtZSIsIm5ld1N0eWxlZCIsImNyZWF0ZVN0eWxlZCIsInRhcmdldENsYXNzTmFtZSIsIl9fZW1vdGlvbl9yZWFsIiwiYmFzZVRhZyIsIl9fZW1vdGlvbl9iYXNlIiwiZGVmYXVsdFNob3VsZEZvcndhcmRQcm9wIiwic2hvdWxkVXNlQXMiLCJTdHlsZWQiLCJGaW5hbFRhZyIsImFzIiwiY2xhc3NJbnRlcnBvbGF0aW9ucyIsInRoZW1lIiwiZmluYWxTaG91bGRGb3J3YXJkUHJvcCIsIm5ld1Byb3BzIiwid2l0aENvbXBvbmVudCIsIm5leHRUYWciLCJuZXh0T3B0aW9ucyIsInN0eWxlZCIsImlzUGxhaW5PYmplY3QiLCJkZWVwQ2xvbmUiLCJjbG9uZSIsIl9leGNsdWRlZCIsImJvcmRlclJhZGl1cyIsInZhbHVlcyIsInhzIiwic20iLCJtZCIsImxnIiwieGwiLCJkZWZhdWx0QnJlYWtwb2ludHMiLCJ1cCIsImhhbmRsZUJyZWFrcG9pbnRzIiwicHJvcFZhbHVlIiwic3R5bGVGcm9tUHJvcFZhbHVlIiwidGhlbWVCcmVha3BvaW50cyIsImNzc0tleSIsImZvcm1hdE11aUVycm9yTWVzc2FnZSIsImNvZGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJjYXBpdGFsaXplIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJnZXRQYXRoIiwiY2hlY2tWYXJzIiwidmFycyIsImdldFN0eWxlVmFsdWUiLCJ0aGVtZU1hcHBpbmciLCJwcm9wVmFsdWVGaW5hbCIsInVzZXJWYWx1ZSIsImNzc1Byb3BlcnR5IiwidGhlbWVLZXkiLCJwcm9wVHlwZXMiLCJmaWx0ZXJQcm9wcyIsInByb3BlcnRpZXMiLCJkaXJlY3Rpb25zIiwibCIsImFsaWFzZXMiLCJtYXJnaW5YIiwibWFyZ2luWSIsInBhZGRpbmdYIiwicGFkZGluZ1kiLCJnZXRDc3NQcm9wZXJ0aWVzIiwibWFyZ2luS2V5cyIsInBhZGRpbmdLZXlzIiwic3BhY2luZ0tleXMiLCJjcmVhdGVVbmFyeVVuaXQiLCJkZWZhdWx0VmFsdWUiLCJfZ2V0UGF0aCIsInRoZW1lU3BhY2luZyIsImNyZWF0ZVVuYXJ5U3BhY2luZyIsImdldFZhbHVlIiwidHJhbnNmb3JtZXIiLCJ0cmFuc2Zvcm1lZCIsImNzc1Byb3BlcnRpZXMiLCJnZXRTdHlsZUZyb21Qcm9wVmFsdWUiLCJyZXNvbHZlQ3NzUHJvcGVydHkiLCJtYXJnaW4iLCJwYWRkaW5nIiwic3BhY2luZyIsImJvcmRlclRyYW5zZm9ybSIsImJvcmRlciIsImJvcmRlclRvcCIsImJvcmRlclJpZ2h0IiwiYm9yZGVyQm90dG9tIiwiYm9yZGVyTGVmdCIsImJvcmRlckNvbG9yIiwiYm9yZGVyVG9wQ29sb3IiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJMZWZ0Q29sb3IiLCJnYXAiLCJjb2x1bW5HYXAiLCJyb3dHYXAiLCJwYWxldHRlVHJhbnNmb3JtIiwic2l6aW5nVHJhbnNmb3JtIiwibWF4V2lkdGgiLCJfcHJvcHMkdGhlbWUiLCJtYXhIZWlnaHQiLCJjb2xvciIsImJnY29sb3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJwdCIsInByIiwicGIiLCJwbCIsInB4IiwicHkiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSIsInBhZGRpbmdJbmxpbmUiLCJwYWRkaW5nSW5saW5lU3RhcnQiLCJwYWRkaW5nSW5saW5lRW5kIiwicGFkZGluZ0Jsb2NrIiwicGFkZGluZ0Jsb2NrU3RhcnQiLCJwYWRkaW5nQmxvY2tFbmQiLCJtdCIsIm1yIiwibWIiLCJtbCIsIm14IiwibXkiLCJtYXJnaW5JbmxpbmUiLCJtYXJnaW5JbmxpbmVTdGFydCIsIm1hcmdpbklubGluZUVuZCIsIm1hcmdpbkJsb2NrIiwibWFyZ2luQmxvY2tTdGFydCIsIm1hcmdpbkJsb2NrRW5kIiwiZGlzcGxheVByaW50IiwiZGlzcGxheSIsInRleHRPdmVyZmxvdyIsInZpc2liaWxpdHkiLCJ3aGl0ZVNwYWNlIiwiZmxleEJhc2lzIiwiZmxleERpcmVjdGlvbiIsImZsZXhXcmFwIiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiYWxpZ25Db250ZW50IiwiYWxpZ25TZWxmIiwianVzdGlmeUl0ZW1zIiwianVzdGlmeVNlbGYiLCJncmlkQXV0b0Zsb3ciLCJncmlkQXV0b0NvbHVtbnMiLCJncmlkQXV0b1Jvd3MiLCJncmlkVGVtcGxhdGVDb2x1bW5zIiwiZ3JpZFRlbXBsYXRlUm93cyIsImdyaWRUZW1wbGF0ZUFyZWFzIiwiZ3JpZEFyZWEiLCJib3hTaGFkb3ciLCJmb250RmFtaWx5IiwiZm9udFN0eWxlIiwibGV0dGVyU3BhY2luZyIsInRleHRUcmFuc2Zvcm0iLCJ0ZXh0QWxpZ24iLCJ0eXBvZ3JhcGh5Iiwic3R5bGVGdW5jdGlvblN4IiwiZ2V0VGhlbWVWYWx1ZSIsImNvbmZpZyIsIl90aGVtZSR1bnN0YWJsZV9zeENvbiIsInN4IiwidW5zdGFibGVfc3hDb25maWciLCJ0cmF2ZXJzZSIsInN4SW5wdXQiLCJzeE9iamVjdCIsImVtcHR5QnJlYWtwb2ludHMiLCJicmVha3BvaW50c0lucHV0IiwiX2JyZWFrcG9pbnRzSW5wdXQka2V5IiwiY3JlYXRlRW1wdHlCcmVha3BvaW50T2JqZWN0IiwiYnJlYWtwb2ludHNLZXlzIiwic3R5bGVLZXkiLCJtYXliZUZuIiwiYnJlYWtwb2ludHNWYWx1ZXMiLCJvYmplY3RzIiwiYWxsS2V5cyIsInVuaW9uIiwiU2V0IiwiZXZlcnkiLCJvYmplY3RzSGF2ZVNhbWVLZXlzIiwiYnJlYWtwb2ludE91dHB1dCIsInVuc3RhYmxlX2NyZWF0ZVN0eWxlRnVuY3Rpb25TeCIsInBhbGV0dGUiLCJwYWxldHRlSW5wdXQiLCJzcGFjaW5nSW5wdXQiLCJzaGFwZSIsInNoYXBlSW5wdXQiLCJvdGhlciIsInVuaXQiLCJzdGVwIiwic29ydGVkVmFsdWVzIiwiYnJlYWtwb2ludHNBc0FycmF5IiwiYnJlYWtwb2ludDEiLCJicmVha3BvaW50MiIsInNvcnRCcmVha3BvaW50c1ZhbHVlcyIsImRvd24iLCJiZXR3ZWVuIiwiZW5kSW5kZXgiLCJvbmx5Iiwibm90Iiwia2V5SW5kZXgiLCJjcmVhdGVCcmVha3BvaW50cyIsIm11aSIsImFyZ3NJbnB1dCIsImFyZ3VtZW50IiwiY3JlYXRlU3BhY2luZyIsIm11aVRoZW1lIiwiY29tcG9uZW50cyIsIm1vZGUiLCJ1bnN0YWJsZV9zeCIsImlzRW1wdHkiLCJwcm9wc1RvQ2xhc3NLZXkiLCJ2YXJpYW50IiwiY2xhc3NLZXkiLCJzeXN0ZW1EZWZhdWx0VGhlbWUiLCJsb3dlcmNhc2VGaXJzdExldHRlciIsInJlc29sdmVUaGVtZSIsImRlZmF1bHRUaGVtZSIsInRoZW1lSWQiLCJkZWZhdWx0T3ZlcnJpZGVzUmVzb2x2ZXIiLCJjbGFtcCIsImRlY29tcG9zZUNvbG9yIiwicmUiLCJSZWdFeHAiLCJjb2xvcnMiLCJyb3VuZCIsImhleFRvUmdiIiwibWFya2VyIiwic3Vic3RyaW5nIiwiY29sb3JTcGFjZSIsInJlY29tcG9zZUNvbG9yIiwiZ2V0THVtaW5hbmNlIiwicmdiIiwicyIsImhzbFRvUmdiIiwidG9GaXhlZCIsImJsYWNrIiwid2hpdGUiLCJBMTAwIiwiQTIwMCIsIkE0MDAiLCJBNzAwIiwibGlnaHQiLCJwcmltYXJ5Iiwic2Vjb25kYXJ5IiwiZGl2aWRlciIsImJhY2tncm91bmQiLCJwYXBlciIsImRlZmF1bHQiLCJhY3Rpb24iLCJhY3RpdmUiLCJob3ZlciIsImhvdmVyT3BhY2l0eSIsInNlbGVjdGVkT3BhY2l0eSIsImRpc2FibGVkQmFja2dyb3VuZCIsImRpc2FibGVkT3BhY2l0eSIsImZvY3VzT3BhY2l0eSIsImFjdGl2YXRlZE9wYWNpdHkiLCJkYXJrIiwiaWNvbiIsImFkZExpZ2h0T3JEYXJrIiwiaW50ZW50Iiwic2hhZGUiLCJ0b25hbE9mZnNldCIsInRvbmFsT2Zmc2V0TGlnaHQiLCJ0b25hbE9mZnNldERhcmsiLCJjb2VmZmljaWVudCIsImxpZ2h0ZW4iLCJtYWluIiwiZGFya2VuIiwiY2FzZUFsbENhcHMiLCJkZWZhdWx0Rm9udEZhbWlseSIsImNyZWF0ZVR5cG9ncmFwaHkiLCJmb250V2VpZ2h0TGlnaHQiLCJmb250V2VpZ2h0UmVndWxhciIsImZvbnRXZWlnaHRNZWRpdW0iLCJmb250V2VpZ2h0Qm9sZCIsImh0bWxGb250U2l6ZSIsImFsbFZhcmlhbnRzIiwicHhUb1JlbSIsInB4VG9SZW0yIiwiY29lZiIsImJ1aWxkVmFyaWFudCIsImNhc2luZyIsInZhcmlhbnRzIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2Iiwic3VidGl0bGUxIiwic3VidGl0bGUyIiwiYm9keTEiLCJib2R5MiIsImNhcHRpb24iLCJvdmVybGluZSIsImluaGVyaXQiLCJjcmVhdGVTaGFkb3ciLCJlYXNpbmciLCJlYXNlSW5PdXQiLCJlYXNlT3V0IiwiZWFzZUluIiwic2hhcnAiLCJzaG9ydGVzdCIsInNob3J0ZXIiLCJzaG9ydCIsInN0YW5kYXJkIiwiY29tcGxleCIsImVudGVyaW5nU2NyZWVuIiwibGVhdmluZ1NjcmVlbiIsImZvcm1hdE1zIiwibWlsbGlzZWNvbmRzIiwiZ2V0QXV0b0hlaWdodER1cmF0aW9uIiwiY29uc3RhbnQiLCJjcmVhdGVUcmFuc2l0aW9ucyIsImlucHV0VHJhbnNpdGlvbnMiLCJtZXJnZWRFYXNpbmciLCJtZXJnZWREdXJhdGlvbiIsImR1cmF0aW9uT3B0aW9uIiwiZWFzaW5nT3B0aW9uIiwiYW5pbWF0ZWRQcm9wIiwibW9iaWxlU3RlcHBlciIsImZhYiIsInNwZWVkRGlhbCIsImFwcEJhciIsImRyYXdlciIsIm1vZGFsIiwic25hY2tiYXIiLCJ0b29sdGlwIiwibWl4aW5zIiwibWl4aW5zSW5wdXQiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zSW5wdXQiLCJ0eXBvZ3JhcGh5SW5wdXQiLCJjb250cmFzdFRocmVzaG9sZCIsImdldERlZmF1bHRQcmltYXJ5IiwiZ2V0RGVmYXVsdFNlY29uZGFyeSIsImdldERlZmF1bHRFcnJvciIsImluZm8iLCJnZXREZWZhdWx0SW5mbyIsInN1Y2Nlc3MiLCJnZXREZWZhdWx0U3VjY2VzcyIsIndhcm5pbmciLCJnZXREZWZhdWx0V2FybmluZyIsImdldENvbnRyYXN0VGV4dCIsImNvbnRyYXN0VGV4dCIsImZvcmVncm91bmQiLCJsdW1BIiwibHVtQiIsImdldENvbnRyYXN0UmF0aW8iLCJhdWdtZW50Q29sb3IiLCJtYWluU2hhZGUiLCJsaWdodFNoYWRlIiwiZGFya1NoYWRlIiwiSlNPTiIsIm1vZGVzIiwiY29tbW9uIiwiZ3JleSIsImNyZWF0ZVBhbGV0dGUiLCJzeXN0ZW1UaGVtZSIsInRvb2xiYXIiLCJzaGFkb3dzIiwiaW5wdXQiLCJyb290U2hvdWxkRm9yd2FyZFByb3AiLCJzbG90U2hvdWxkRm9yd2FyZFByb3AiLCJzeXN0ZW1TeCIsIl9fbXVpX3N5c3RlbVN4IiwiaW5wdXRPcHRpb25zIiwicHJvY2Vzc29yIiwiY29tcG9uZW50TmFtZSIsImNvbXBvbmVudFNsb3QiLCJza2lwVmFyaWFudHNSZXNvbHZlciIsImlucHV0U2tpcFZhcmlhbnRzUmVzb2x2ZXIiLCJza2lwU3giLCJpbnB1dFNraXBTeCIsIm92ZXJyaWRlc1Jlc29sdmVyIiwic2hvdWxkRm9yd2FyZFByb3BPcHRpb24iLCJkZWZhdWx0U3R5bGVkUmVzb2x2ZXIiLCJtdWlTdHlsZWRSZXNvbHZlciIsInN0eWxlQXJnIiwiZXhwcmVzc2lvbnMiLCJleHByZXNzaW9uc1dpdGhEZWZhdWx0VGhlbWUiLCJzdHlsZXNBcmciLCJ0cmFuc2Zvcm1lZFN0eWxlQXJnIiwic3R5bGVPdmVycmlkZXMiLCJnZXRTdHlsZU92ZXJyaWRlcyIsInJlc29sdmVkU3R5bGVPdmVycmlkZXMiLCJzbG90S2V5Iiwic2xvdFN0eWxlIiwiX3RoZW1lJGNvbXBvbmVudHMiLCJvd25lclN0YXRlIiwidmFyaWFudHNTdHlsZXMiLCJ0aGVtZVZhcmlhbnRzIiwidGhlbWVWYXJpYW50IiwiaXNNYXRjaCIsInZhcmlhbnRzUmVzb2x2ZXIiLCJkZWZpbml0aW9uIiwiZ2V0VmFyaWFudFN0eWxlcyIsIm51bU9mQ3VzdG9tRm5zQXBwbGllZCIsInBsYWNlaG9sZGVycyIsImZpbGwiLCJtdWlOYW1lIiwid2l0aENvbmZpZyIsInJlc29sdmVQcm9wcyIsImRlZmF1bHRTbG90UHJvcHMiLCJzbG90UHJvcHMiLCJzbG90UHJvcE5hbWUiLCJnZXRUaGVtZVByb3BzIiwiY29udGV4dFRoZW1lIiwidXNlVGhlbWVXaXRob3V0RGVmYXVsdCIsInVzZUZvcmtSZWYiLCJyZWZzIiwic2V0UmVmIiwiaGFkRm9jdXNWaXNpYmxlUmVjZW50bHlUaW1lb3V0IiwiaGFkS2V5Ym9hcmRFdmVudCIsImhhZEZvY3VzVmlzaWJsZVJlY2VudGx5IiwiaW5wdXRUeXBlc1doaXRlbGlzdCIsInRlbCIsImVtYWlsIiwicGFzc3dvcmQiLCJkYXRlIiwibW9udGgiLCJ3ZWVrIiwiZGF0ZXRpbWUiLCJoYW5kbGVLZXlEb3duIiwibWV0YUtleSIsImFsdEtleSIsImN0cmxLZXkiLCJoYW5kbGVQb2ludGVyRG93biIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJ2aXNpYmlsaXR5U3RhdGUiLCJvd25lckRvY3VtZW50IiwiaXNGb2N1c1Zpc2libGVSZWYiLCJvbkZvY3VzIiwicmVhZE9ubHkiLCJmb2N1c1RyaWdnZXJzS2V5Ym9hcmRNb2RhbGl0eSIsImlzRm9jdXNWaXNpYmxlIiwib25CbHVyIiwiZ2V0Q2hpbGRNYXBwaW5nIiwibWFwRm4iLCJDaGlsZHJlbiIsImlzVmFsaWRFbGVtZW50IiwibWFwcGVyIiwiZ2V0UHJvcCIsImdldE5leHRDaGlsZE1hcHBpbmciLCJuZXh0UHJvcHMiLCJwcmV2Q2hpbGRNYXBwaW5nIiwib25FeGl0ZWQiLCJuZXh0Q2hpbGRNYXBwaW5nIiwiZ2V0VmFsdWVGb3JLZXkiLCJuZXh0S2V5c1BlbmRpbmciLCJwZW5kaW5nS2V5cyIsInByZXZLZXkiLCJjaGlsZE1hcHBpbmciLCJwZW5kaW5nTmV4dEtleSIsIm1lcmdlQ2hpbGRNYXBwaW5ncyIsImhhc1ByZXYiLCJoYXNOZXh0IiwicHJldkNoaWxkIiwiaXNMZWF2aW5nIiwiaW4iLCJjbG9uZUVsZW1lbnQiLCJleGl0IiwiZW50ZXIiLCJUcmFuc2l0aW9uR3JvdXAiLCJfUmVhY3QkQ29tcG9uZW50IiwiaGFuZGxlRXhpdGVkIiwiY29udGV4dFZhbHVlIiwiaXNNb3VudGluZyIsImZpcnN0UmVuZGVyIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwiYXBwZWFyIiwiY3VycmVudENoaWxkTWFwcGluZyIsImNvbXBvbmVudCIsImNoaWxkRmFjdG9yeSIsIlRyYW5zaXRpb25Hcm91cENvbnRleHQiLCJrZXlmcmFtZXMiLCJpbnNlcnRhYmxlIiwiZGVmYXVsdEdlbmVyYXRvciIsImdlbmVyYXRlIiwiY29uZmlndXJlIiwiZ2VuZXJhdG9yIiwicmVzZXQiLCJjcmVhdGVDbGFzc05hbWVHZW5lcmF0b3IiLCJnbG9iYWxTdGF0ZUNsYXNzZXNNYXBwaW5nIiwiY2hlY2tlZCIsImNvbXBsZXRlZCIsImV4cGFuZGVkIiwiZm9jdXNlZCIsImZvY3VzVmlzaWJsZSIsInJlcXVpcmVkIiwiZ2xvYmFsU3RhdGVQcmVmaXgiLCJnbG9iYWxTdGF0ZUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiZW50ZXJLZXlmcmFtZSIsImV4aXRLZXlmcmFtZSIsInB1bHNhdGVLZXlmcmFtZSIsIlRvdWNoUmlwcGxlUm9vdCIsIlRvdWNoUmlwcGxlUmlwcGxlIiwicHVsc2F0ZSIsInJpcHBsZVgiLCJyaXBwbGVZIiwicmlwcGxlU2l6ZSIsImluUHJvcCIsImxlYXZpbmciLCJzZXRMZWF2aW5nIiwicmlwcGxlQ2xhc3NOYW1lIiwicmlwcGxlIiwicmlwcGxlVmlzaWJsZSIsInJpcHBsZVB1bHNhdGUiLCJyaXBwbGVTdHlsZXMiLCJjaGlsZENsYXNzTmFtZSIsImNoaWxkTGVhdmluZyIsImNoaWxkUHVsc2F0ZSIsInRpbWVvdXRJZCIsImluUHJvcHMiLCJjZW50ZXIiLCJjZW50ZXJQcm9wIiwicmlwcGxlcyIsInNldFJpcHBsZXMiLCJyaXBwbGVDYWxsYmFjayIsImlnbm9yaW5nTW91c2VEb3duIiwic3RhcnRUaW1lciIsInN0YXJ0VGltZXJDb21taXQiLCJzdGFydENvbW1pdCIsIm9sZFJpcHBsZXMiLCJmYWtlRWxlbWVudCIsInJlY3QiLCJjbGllbnRYIiwiY2xpZW50WSIsInNpemVYIiwic2l6ZVkiLCJzdG9wIiwiZ2V0QnV0dG9uQmFzZVV0aWxpdHlDbGFzcyIsIkJ1dHRvbkJhc2VSb290IiwiV2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IiLCJvdXRsaW5lIiwidXNlclNlbGVjdCIsInZlcnRpY2FsQWxpZ24iLCJNb3pBcHBlYXJhbmNlIiwiV2Via2l0QXBwZWFyYW5jZSIsInRleHREZWNvcmF0aW9uIiwiYm9yZGVyU3R5bGUiLCJjb2xvckFkanVzdCIsIkJ1dHRvbkJhc2UiLCJjZW50ZXJSaXBwbGUiLCJkaXNhYmxlUmlwcGxlIiwiZGlzYWJsZVRvdWNoUmlwcGxlIiwiZm9jdXNSaXBwbGUiLCJMaW5rQ29tcG9uZW50Iiwib25Db250ZXh0TWVudSIsIm9uRHJhZ0xlYXZlIiwib25Gb2N1c1Zpc2libGUiLCJvbktleURvd24iLCJvbktleVVwIiwib25Nb3VzZURvd24iLCJvbk1vdXNlTGVhdmUiLCJvbk1vdXNlVXAiLCJ0YWJJbmRleCIsIlRvdWNoUmlwcGxlUHJvcHMiLCJ0b3VjaFJpcHBsZVJlZiIsImJ1dHRvblJlZiIsInJpcHBsZVJlZiIsImhhbmRsZVJpcHBsZVJlZiIsImhhbmRsZUZvY3VzVmlzaWJsZSIsImhhbmRsZUJsdXJWaXNpYmxlIiwiZm9jdXNWaXNpYmxlUmVmIiwic2V0Rm9jdXNWaXNpYmxlIiwibW91bnRlZFN0YXRlIiwic2V0TW91bnRlZFN0YXRlIiwiZW5hYmxlVG91Y2hSaXBwbGUiLCJ1c2VSaXBwbGVIYW5kbGVyIiwicmlwcGxlQWN0aW9uIiwiZXZlbnRDYWxsYmFjayIsInNraXBSaXBwbGVBY3Rpb24iLCJoYW5kbGVNb3VzZURvd24iLCJoYW5kbGVDb250ZXh0TWVudSIsImhhbmRsZURyYWdMZWF2ZSIsImhhbmRsZU1vdXNlVXAiLCJoYW5kbGVNb3VzZUxlYXZlIiwiaGFuZGxlVG91Y2hTdGFydCIsImhhbmRsZVRvdWNoRW5kIiwiaGFuZGxlVG91Y2hNb3ZlIiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwiY3VycmVudFRhcmdldCIsImlzTm9uTmF0aXZlQnV0dG9uIiwia2V5ZG93blJlZiIsImhhbmRsZUtleVVwIiwiZGVmYXVsdFByZXZlbnRlZCIsIkNvbXBvbmVudFByb3AiLCJidXR0b25Qcm9wcyIsInJvbGUiLCJoYW5kbGVSZWYiLCJmb2N1c1Zpc2libGVDbGFzc05hbWUiLCJjb21wb3NlZENsYXNzZXMiLCJ1c2VVdGlsaXR5Q2xhc3NlcyIsImdldFRhYlV0aWxpdHlDbGFzcyIsIlRhYlJvb3QiLCJsYWJlbEljb24iLCJ0ZXh0Q29sb3IiLCJmdWxsV2lkdGgiLCJ3cmFwcGVkIiwiaWNvblBvc2l0aW9uIiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwiaWNvblByb3AiLCJpbmRpY2F0b3IiLCJzZWxlY3Rpb25Gb2xsb3dzRm9jdXMiLCJpY29uV3JhcHBlciIsImRlZmF1bHRDbGFzc05hbWUiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsIkJveFJvb3QiLCJfZXh0ZW5kU3hQcm9wIiwiaW5TeCIsInN5c3RlbVByb3BzIiwib3RoZXJQcm9wcyIsIl9wcm9wcyR0aGVtZSR1bnN0YWJsZSIsInNwbGl0UHJvcHMiLCJmaW5hbFN4IiwiZXh0ZW5kU3hQcm9wIiwiY3JlYXRlQm94Iiwib21pdEV2ZW50SGFuZGxlcnMiLCJ1c2VTbG90UHJvcHMiLCJwYXJhbWV0ZXJzIiwiX3BhcmFtZXRlcnMkYWRkaXRpb25hIiwiZWxlbWVudFR5cGUiLCJleHRlcm5hbFNsb3RQcm9wcyIsInNraXBSZXNvbHZpbmdTbG90UHJvcHMiLCJyZXN0IiwicmVzb2x2ZWRDb21wb25lbnRzUHJvcHMiLCJjb21wb25lbnRQcm9wcyIsInNsb3RTdGF0ZSIsInJlc29sdmVDb21wb25lbnRQcm9wcyIsImludGVybmFsUmVmIiwiZ2V0U2xvdFByb3BzIiwiYWRkaXRpb25hbFByb3BzIiwiZXh0ZXJuYWxGb3J3YXJkZWRQcm9wcyIsImpvaW5lZENsYXNzZXMiLCJtZXJnZWRTdHlsZSIsImV4Y2x1ZGVLZXlzIiwiZXh0cmFjdEV2ZW50SGFuZGxlcnMiLCJjb21wb25lbnRzUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyIsIm90aGVyUHJvcHNXaXRob3V0RXZlbnRIYW5kbGVycyIsImludGVybmFsU2xvdFByb3BzIiwibWVyZ2VTbG90UHJvcHMiLCJhcHBlbmRPd25lclN0YXRlIiwid2FpdCIsImRlYm91bmNlZCIsImNsZWFyIiwiY2FjaGVkVHlwZSIsImRldGVjdFNjcm9sbFR5cGUiLCJkdW1teSIsImdldE5vcm1hbGl6ZWRTY3JvbGxMZWZ0IiwiZWFzZUluT3V0U2luIiwic2luIiwiZGVmYXVsdFZpZXciLCJnZXRTdmdJY29uVXRpbGl0eUNsYXNzIiwiU3ZnSWNvblJvb3QiLCJfdGhlbWUkdHJhbnNpdGlvbnMiLCJfdGhlbWUkdHJhbnNpdGlvbnMkY3IiLCJfdGhlbWUkdHJhbnNpdGlvbnMyIiwiX3RoZW1lJHR5cG9ncmFwaHkiLCJfdGhlbWUkdHlwb2dyYXBoeSRweFQiLCJfdGhlbWUkdHlwb2dyYXBoeTIiLCJfdGhlbWUkdHlwb2dyYXBoeTIkcHgiLCJfdGhlbWUkdHlwb2dyYXBoeTMiLCJfdGhlbWUkdHlwb2dyYXBoeTMkcHgiLCJfcGFsZXR0ZSRvd25lclN0YXRlJGMiLCJfcGFsZXR0ZSIsIl9wYWxldHRlMiIsIl9wYWxldHRlMyIsImhhc1N2Z0FzQ2hpbGQiLCJzbWFsbCIsIm1lZGl1bSIsImxhcmdlIiwiU3ZnSWNvbiIsImh0bWxDb2xvciIsImluaGVyaXRWaWV3Qm94IiwidGl0bGVBY2Nlc3MiLCJ2aWV3Qm94IiwiaW5zdGFuY2VGb250U2l6ZSIsIm1vcmUiLCJmb2N1c2FibGUiLCJjcmVhdGVTdmdJY29uIiwiZCIsImdldFRhYlNjcm9sbEJ1dHRvblV0aWxpdHlDbGFzcyIsIlRhYlNjcm9sbEJ1dHRvblJvb3QiLCJvcmllbnRhdGlvbiIsImlzUnRsIiwiX3Nsb3RzJFN0YXJ0U2Nyb2xsQnV0IiwiX3Nsb3RzJEVuZFNjcm9sbEJ1dHRvIiwiU3RhcnRCdXR0b25JY29uIiwiU3RhcnRTY3JvbGxCdXR0b25JY29uIiwiS2V5Ym9hcmRBcnJvd0xlZnQiLCJFbmRCdXR0b25JY29uIiwiRW5kU2Nyb2xsQnV0dG9uSWNvbiIsIktleWJvYXJkQXJyb3dSaWdodCIsInN0YXJ0QnV0dG9uSWNvblByb3BzIiwic3RhcnRTY3JvbGxCdXR0b25JY29uIiwiZW5kQnV0dG9uSWNvblByb3BzIiwiZW5kU2Nyb2xsQnV0dG9uSWNvbiIsImdldFRhYnNVdGlsaXR5Q2xhc3MiLCJuZXh0SXRlbSIsImxpc3QiLCJwcmV2aW91c0l0ZW0iLCJsYXN0Q2hpbGQiLCJtb3ZlRm9jdXMiLCJjdXJyZW50Rm9jdXMiLCJ0cmF2ZXJzYWxGdW5jdGlvbiIsIndyYXBwZWRPbmNlIiwibmV4dEZvY3VzIiwibmV4dEZvY3VzRGlzYWJsZWQiLCJUYWJzUm9vdCIsInNjcm9sbEJ1dHRvbnMiLCJzY3JvbGxCdXR0b25zSGlkZU1vYmlsZSIsInZlcnRpY2FsIiwiV2Via2l0T3ZlcmZsb3dTY3JvbGxpbmciLCJUYWJzU2Nyb2xsZXIiLCJzY3JvbGxlciIsImZpeGVkIiwiaGlkZVNjcm9sbGJhciIsInNjcm9sbGFibGVYIiwic2Nyb2xsYWJsZVkiLCJvdmVyZmxvd1giLCJzY3JvbGxiYXJXaWR0aCIsIm92ZXJmbG93WSIsIkZsZXhDb250YWluZXIiLCJmbGV4Q29udGFpbmVyIiwiZmxleENvbnRhaW5lclZlcnRpY2FsIiwiY2VudGVyZWQiLCJUYWJzSW5kaWNhdG9yIiwiaW5kaWNhdG9yQ29sb3IiLCJUYWJzU2Nyb2xsYmFyU2l6ZSIsInNjcm9sbGJhckhlaWdodCIsIm5vZGVSZWYiLCJzZXRNZWFzdXJlbWVudHMiLCJoYW5kbGVSZXNpemUiLCJwcmV2SGVpZ2h0IiwiY29udGFpbmVyV2luZG93IiwiZGVmYXVsdEluZGljYXRvclN0eWxlIiwiVGFicyIsImFyaWFMYWJlbCIsImFyaWFMYWJlbGxlZEJ5IiwiY2hpbGRyZW5Qcm9wIiwiYWxsb3dTY3JvbGxCdXR0b25zTW9iaWxlIiwiU2Nyb2xsQnV0dG9uQ29tcG9uZW50IiwiVGFiSW5kaWNhdG9yUHJvcHMiLCJUYWJTY3JvbGxCdXR0b25Qcm9wcyIsInZpc2libGVTY3JvbGxiYXIiLCJzY3JvbGxhYmxlIiwic2Nyb2xsU3RhcnQiLCJjbGllbnRTaXplIiwic3RhcnRTY3JvbGxCdXR0b25JY29uUHJvcHMiLCJlbmRTY3JvbGxCdXR0b25JY29uUHJvcHMiLCJzZXRNb3VudGVkIiwiaW5kaWNhdG9yU3R5bGUiLCJzZXRJbmRpY2F0b3JTdHlsZSIsImRpc3BsYXlTdGFydFNjcm9sbCIsInNldERpc3BsYXlTdGFydFNjcm9sbCIsImRpc3BsYXlFbmRTY3JvbGwiLCJzZXREaXNwbGF5RW5kU2Nyb2xsIiwidXBkYXRlU2Nyb2xsT2JzZXJ2ZXIiLCJzZXRVcGRhdGVTY3JvbGxPYnNlcnZlciIsInNjcm9sbGVyU3R5bGUiLCJzZXRTY3JvbGxlclN0eWxlIiwidmFsdWVUb0luZGV4IiwidGFic1JlZiIsInRhYkxpc3RSZWYiLCJnZXRUYWJzTWV0YSIsInRhYnNOb2RlIiwidGFic01ldGEiLCJ0YWJNZXRhIiwic2Nyb2xsTGVmdE5vcm1hbGl6ZWQiLCJ0YWIiLCJ1cGRhdGVJbmRpY2F0b3JTdGF0ZSIsInN0YXJ0SW5kaWNhdG9yIiwic3RhcnRWYWx1ZSIsImNvcnJlY3Rpb24iLCJuZXdJbmRpY2F0b3JTdHlsZSIsImRTdGFydCIsImRTaXplIiwic2Nyb2xsIiwic2Nyb2xsVmFsdWUiLCJhbmltYXRpb24iLCJlYXNlIiwiZnJvbSIsImNhbmNlbGxlZCIsInRpbWVzdGFtcCIsImFuaW1hdGUiLCJtb3ZlVGFic1Njcm9sbCIsImRlbHRhIiwiZ2V0U2Nyb2xsU2l6ZSIsImNvbnRhaW5lclNpemUiLCJ0b3RhbFNpemUiLCJoYW5kbGVTdGFydFNjcm9sbENsaWNrIiwiaGFuZGxlRW5kU2Nyb2xsQ2xpY2siLCJoYW5kbGVTY3JvbGxiYXJTaXplQ2hhbmdlIiwic2Nyb2xsU2VsZWN0ZWRJbnRvVmlldyIsIm5leHRTY3JvbGxTdGFydCIsInVwZGF0ZVNjcm9sbEJ1dHRvblN0YXRlIiwidGFiTGlzdENoaWxkcmVuIiwiZmlyc3RUYWIiLCJsYXN0VGFiIiwib2JzZXJ2ZXJPcHRpb25zIiwiZmlyc3RPYnNlcnZlciIsImlzSW50ZXJzZWN0aW5nIiwibGFzdE9ic2VydmVyIiwidXBkYXRlSW5kaWNhdG9yIiwidXBkYXRlU2Nyb2xsQnV0dG9ucyIsImNoaWxkSW5kZXgiLCJjaGlsZFZhbHVlIiwiY29uZGl0aW9uYWxFbGVtZW50cyIsInNjcm9sbGJhclNpemVMaXN0ZW5lciIsInNob3dTY3JvbGxCdXR0b25zIiwic2Nyb2xsQnV0dG9uU3RhcnQiLCJzY3JvbGxCdXR0b25FbmQiLCJnZXRDb25kaXRpb25hbEVsZW1lbnRzIiwicHJldmlvdXNJdGVtS2V5IiwibmV4dEl0ZW1LZXkiLCJpc0Rlc2NyaXB0aW9uQ2xhbXBlZCIsInNldElzRGVzY3JpcHRpb25DbGFtcGVkIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJkZXNjcmlwdGlvblJlZiIsInNjcm9sbEhlaWdodCIsImNvbnRlbnRJZCIsInNjcm9sbEludG9WaWV3IiwidXNlUGFnZVZpZXdzRm9yTWF0ZXJpYWxzIiwidGFyZ2V0VXJsIiwiaGlnaGxpZ2h0SW1hZ2UiLCJkZXNjcmlwdGlvbiIsInF1ZXJ5UGFyYW1ldGVycyIsIlVSTFNlYXJjaFBhcmFtcyIsIm5ld1VybCIsImNsb3NlVGV4dCIsInZpZXdNb3JlVGV4dCIsImFsbFRhZ3MiLCJodG1sRm9yIiwiaGVhZGVyIiwiaGVscFRleHQiLCJwcm9kdWN0TmFtZSIsIm9yZGVyYWJsZVF1YW50aXR5IiwidXBkYXRlSXRlbSIsInByb2R1Y3RJZCIsInRyYW5zbGF0aW9ucyIsInJlbW92ZVByb2R1Y3RCdXR0b25UZXh0IiwicmVtb3ZlSXRlbSIsImhhbGYiLCJDb21wb25lbnRUeXBlcyIsInNldFdpZHRoIiwic2V0UGxheSIsImhhbmRsZVdpbmRvd1NpemVDaGFuZ2UiLCJpc01vYmlsZSIsInNob3dJbWFnZU9uVGhlUmlnaHQiLCJvbk1vdXNlRW50ZXIiLCJ2aWRlb1VybCIsIm11dGVkIiwiY29udHJvbHMiLCJwbGF5c2lubGluZSIsInBsYXlpbmciLCJpbnRybyIsInNldFBsYXllZE9uY2UiLCJzdGlsbEltYWdlIiwibW9iaWxlU3RpbGxJbWFnZSIsImZpbHRlcnNTdHJpbmciLCJ0eXBlcyIsInNldFR5cGVzIiwieWVhcnMiLCJzZXRZZWFycyIsInRoZW1lcyIsInNldFRoZW1lcyIsInJlbGVhc2V0eXBlcyIsInNldFJlbGVhc2V0eXBlcyIsImtleXdvcmRzIiwic2V0S2V5d29yZHMiLCJmaWx0ZXJzIiwic2V0RmlsdGVycyIsImFydGljbGVzIiwic2V0QXJ0aWNsZXMiLCJwYWdlY291bnQiLCJzZXRQYWdlY291bnQiLCJzZXRQYWdlIiwieWVhckZpbHRlck9wZW4iLCJzZXR5ZWFyRmlsdGVyT3BlbiIsImtleXdvcmRzVmlzaWJsZSIsInNldEtleXdvcmRzVmlzaWJsZSIsImZpcnN0TG9hZCIsInNldEZpcnN0TG9hZCIsIndyYXBwZXJSZWYiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0eXBlc0h0bWwiLCJ0eXBlQ2xpY2siLCJ5ZWFyc0h0bWwiLCJ5ZWFyQ2xpY2siLCJ5ZWFyRmlsdGVySHRtbCIsInllYXIiLCJrZXl3b3Jkc0h0bWwiLCJrZXl3b3JkQ2xpY2siLCJhcnRpY2xlc0h0bWwiLCJwYXJ0aWFsVmlzaWJpbGl0eSIsIkJvb2xlYW4iLCJuZXdVUkwiLCJ0eXBlRmlsdGVyIiwieWVhckZpbHRlciIsInRoZW1lRmlsdGVyIiwicmVsZWFzZVR5cGVGaWx0ZXIiLCJrZXl3b3Jkc0ZpbHRlciIsInF1ZXJ5U3RyaW5nIiwidXJsUGFyYW1zIiwic2hvd0tleXdvcmRzTGFiZWwiLCJicmVha0NsYXNzTmFtZSIsImZvcmNlUGFnZSIsImJsb2NrIiwic2V0VmFsdWUiLCJDdXN0b21UYWJQYW5lbCIsImhpZGRlbiIsIm5ld1ZhbHVlIiwiaW50cm9IdG1sIiwib3BlbkluTmV3VGFiIiwibWF0ZXJpYWxzIiwic2V0TWF0ZXJpYWxzIiwic2VsZWN0ZWRNYXRlcmlhbHMiLCJzZXRTZWxlY3RlZE1hdGVyaWFscyIsInNldE9wZW4iLCJzZXRQYWdlQ291bnQiLCJmaWx0ZXJDbGljayIsIm5ld1NlbGVjdGVkTWF0ZXJpYWxzIiwibWF0ZXJpYWxJZCIsInRhZ0lkcyIsInRhZ0lkc1BhcmFtIiwicGFnZVBhcmFtIiwic3RvcmVkVGFnSWRzIiwic3RvcmVkUGFnZSIsImluaXRpYWxUYWdJZHMiLCJpbml0aWFsUGFnZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJzZXRJdGVtIiwiZnVsbFVybCIsInRvdGFsUGFnZXMiLCJoYW5kbGVQb3BTdGF0ZSIsInNob3dUaGVyYXB5QXJlYVRhZ3MiLCJ0aGVyYXB5QXJlYVRhZ3NIZWFkaW5nIiwidGhlcmFweUFyZWFUYWdzIiwic2hvd1RhZ3MiLCJwcm9kdWN0VGFnc0hlYWRpbmciLCJzaG93VGFyZ2V0R3JvdXBUYWdzIiwidGFyZ2V0R3JvdXBUYWdzSGVhZGluZyIsInRhcmdldEdyb3VwVGFncyIsImludGVydmFsRGVsYXkiLCJ2aXNpYmxlIiwiY2FydHVybCIsIm9yZGVyRm9ybVBhZ2VVcmwiLCJvcmRlcmFibGVUZXh0IiwiZGlzYWJsZWRMaW5rQ2xhc3NOYW1lIiwic2VsZWN0ZWRQYWdlIiwieG1sbnMiLCJmb3JtRXJyb3IiLCJzZXRGb3JtRXJyb3IiLCJmb3JtU3VibWl0RXJyb3IiLCJzZXRGb3JtU3VibWl0RXJyb3IiLCJpbml0aWFsT3JkZXJGb3JtIiwidXNlckRhdGEiLCJsYXN0TmFtZSIsImZpcnN0TmFtZSIsImxvZ2dlZEluRW1haWwiLCJzcGVjaWFsaXR5IiwicGxhY2VPZldvcmsiLCJjb3VudHJ5IiwiY291bnR5IiwiaGlkZGVuRmllbGQiLCJqb2JSb2xlIiwicmVnaW9uIiwib3JkZXJGb3JtIiwic2V0T3JkZXJGb3JtIiwic3VibWlzc2lvbkluUHJvZ3Jlc3MiLCJzZXRTdWJtaXNzaW9uSW5Qcm9ncmVzcyIsInN1Ym1pdHRlZCIsInNldFN1Ym1pdHRlZCIsImxvYWRlZCIsInNldExvYWRlZCIsImNhcnRIdG1sIiwicHJpY2VUZXh0IiwiYW1vdW50IiwidXBkYXRlZEl0ZW1zIiwicHJldkNhcnQiLCJiYWNrVG9NYXRlcmlhbExpc3RpbmdUZXh0IiwidGhhbmtZb3VWaWV3IiwiZW1wdHlCYXNrZXRWaWV3IiwiY3RhTGluayIsImZvcm1IZWFkaW5nIiwiY29udGVudCIsImNvbXBhbnkiLCJzZWN0aW9uIiwic3RyZWV0QWRkcmVzcyIsInBvc3RhbENvZGUiLCJjaXR5IiwiY3VzdG9tQ2hlY2tib3giLCJtZXNzYWdlIiwiY29uc2VudCIsIm1hcmtldGluZ0NvbnNlbnQiLCJpc0Vycm9yIiwidmFsaWRhdGlvbkVycm9yTWVzc2FnZSIsInJlcXVlc3RPcHRpb25zIiwib2siLCJtYXRlcmlhbF90aXRsZSIsIm1hdGVyaWFsX3F1YW50aXR5Iiwib3JkZXJfaWQiLCJkYXRhTGF5ZXIiLCJlcnJvcnMiLCJjb21wbGV0ZU9yZGVyQnV0dG9uVGV4dCIsInByaXZhY3lTdGF0ZW1lbnQiLCJjYXJ0QmFubmVyIiwibWF0ZXJpYWxBZGRUb0NhcnQiLCJjb21wb25lbnRDb250YWluZXIiLCJkYXRhc2V0IiwicHJvcGVydHlOYW1lIiwiZXBpUHJvcGVydHlOYW1lIiwiY3JlYXRlUm9vdCIsInJlYWN0Q29tcG9uZW50IiwiZmlsZUlucHV0IiwiY3VzdG9tTGFiZWwiLCJmaWxlTmFtZSIsImZpbGVzIiwiZmlsZSIsIm9yaWdpbmFsVGV4dCIsInRyaWdnZXJWYWx1ZSIsImlzTWVyZ2VhYmxlT2JqZWN0IiwiaXNOb25OdWxsT2JqZWN0Iiwic3RyaW5nVmFsdWUiLCIkJHR5cGVvZiIsIlJFQUNUX0VMRU1FTlRfVFlQRSIsImlzUmVhY3RFbGVtZW50IiwiaXNTcGVjaWFsIiwiY2xvbmVVbmxlc3NPdGhlcndpc2VTcGVjaWZpZWQiLCJkZWVwbWVyZ2UiLCJkZWZhdWx0QXJyYXlNZXJnZSIsImdldEtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImdldEVudW1lcmFibGVPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzT25PYmplY3QiLCJhcnJheU1lcmdlIiwic291cmNlSXNBcnJheSIsImRlc3RpbmF0aW9uIiwicHJvcGVydHlJc1Vuc2FmZSIsImN1c3RvbU1lcmdlIiwiZ2V0TWVyZ2VGdW5jdGlvbiIsIm1lcmdlT2JqZWN0IiwiYWxsIiwiZGVlcG1lcmdlXzEiLCJleHBvcnRzIiwicmVhY3RJcyIsIlJFQUNUX1NUQVRJQ1MiLCJjaGlsZENvbnRleHRUeXBlcyIsImNvbnRleHRUeXBlIiwiY29udGV4dFR5cGVzIiwiZ2V0RGVmYXVsdFByb3BzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiS05PV05fU1RBVElDUyIsImNhbGxlciIsImNhbGxlZSIsImFyaXR5IiwiTUVNT19TVEFUSUNTIiwiY29tcGFyZSIsIlRZUEVfU1RBVElDUyIsImdldFN0YXRpY3MiLCJpc01lbW8iLCJGb3J3YXJkUmVmIiwiTWVtbyIsImdldE93blByb3BlcnR5TmFtZXMiLCJvYmplY3RQcm90b3R5cGUiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsInRhcmdldENvbXBvbmVudCIsInNvdXJjZUNvbXBvbmVudCIsImJsYWNrbGlzdCIsImluaGVyaXRlZENvbXBvbmVudCIsInRhcmdldFN0YXRpY3MiLCJzb3VyY2VTdGF0aWNzIiwic3RkT25FbmQiLCJzY3JpcHQiLCJpZU9uRW5kIiwiY2hhcnNldCIsImFzeW5jIiwic2V0QXR0cmlidXRlcyIsIkZVTkNfRVJST1JfVEVYVCIsInJlVHJpbSIsInJlSXNCYWRIZXgiLCJyZUlzQmluYXJ5IiwicmVJc09jdGFsIiwiZnJlZVBhcnNlSW50IiwiZnJlZUdsb2JhbCIsImZyZWVTZWxmIiwib2JqZWN0VG9TdHJpbmciLCJuYXRpdmVNYXgiLCJuYXRpdmVNaW4iLCJ0b051bWJlciIsImlzT2JqZWN0TGlrZSIsImlzU3ltYm9sIiwidmFsdWVPZiIsImlzQmluYXJ5IiwibGVhZGluZyIsInRyYWlsaW5nIiwibGFzdEFyZ3MiLCJsYXN0VGhpcyIsIm1heFdhaXQiLCJ0aW1lcklkIiwibGFzdENhbGxUaW1lIiwibGFzdEludm9rZVRpbWUiLCJtYXhpbmciLCJpbnZva2VGdW5jIiwidGhpc0FyZyIsImxlYWRpbmdFZGdlIiwidGltZXJFeHBpcmVkIiwic2hvdWxkSW52b2tlIiwidGltZVNpbmNlTGFzdENhbGwiLCJ0cmFpbGluZ0VkZ2UiLCJyZW1haW5pbmdXYWl0IiwiaXNJbnZva2luZyIsImRlYm91bmNlIiwic2FmZUlzTmFOIiwiYXJlSW5wdXRzRXF1YWwiLCJuZXdJbnB1dHMiLCJsYXN0SW5wdXRzIiwiZmlyc3QiLCJzZWNvbmQiLCJyZXN1bHRGbiIsImlzRXF1YWwiLCJsYXN0UmVzdWx0IiwiY2FsbGVkT25jZSIsIm5ld0FyZ3MiLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImVtcHR5RnVuY3Rpb24iLCJlbXB0eUZ1bmN0aW9uV2l0aFJlc2V0IiwicmVzZXRXYXJuaW5nQ2FjaGUiLCJzaGltIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0IiwiZXJyIiwiZ2V0U2hpbSIsImlzUmVxdWlyZWQiLCJSZWFjdFByb3BUeXBlcyIsImJpZ2ludCIsImJvb2wiLCJhbnkiLCJhcnJheU9mIiwiaW5zdGFuY2VPZiIsIm9iamVjdE9mIiwib25lT2YiLCJvbmVPZlR5cGUiLCJleGFjdCIsImNoZWNrUHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYWEiLCJjYSIsImRhIiwiZWEiLCJmYSIsImhhIiwiaWEiLCJqYSIsImthIiwibGEiLCJtYSIsInYiLCJhY2NlcHRzQm9vbGVhbnMiLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwibXVzdFVzZVByb3BlcnR5Iiwic2FuaXRpemVVUkwiLCJyZW1vdmVFbXB0eVN0cmluZyIsInJhIiwic2EiLCJ0YSIsInBhIiwicWEiLCJvYSIsInNldEF0dHJpYnV0ZU5TIiwieGxpbmtIcmVmIiwiX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQiLCJ2YSIsIndhIiwieWEiLCJ6YSIsIkFhIiwiQmEiLCJDYSIsIkRhIiwiRWEiLCJGYSIsIkdhIiwiSGEiLCJJYSIsIkphIiwiaXRlcmF0b3IiLCJLYSIsIkxhIiwiQSIsIk1hIiwic3RhY2siLCJOYSIsIk9hIiwicHJlcGFyZVN0YWNrVHJhY2UiLCJQYSIsIlFhIiwiX2NvbnRleHQiLCJfcGF5bG9hZCIsIl9pbml0IiwiUmEiLCJTYSIsIlRhIiwiVmEiLCJfdmFsdWVUcmFja2VyIiwic3RvcFRyYWNraW5nIiwiVWEiLCJXYSIsIlhhIiwiWWEiLCJkZWZhdWx0Q2hlY2tlZCIsIl93cmFwcGVyU3RhdGUiLCJpbml0aWFsQ2hlY2tlZCIsIlphIiwiaW5pdGlhbFZhbHVlIiwiY29udHJvbGxlZCIsImFiIiwiYmIiLCJkYiIsImViIiwiZmIiLCJkZWZhdWx0U2VsZWN0ZWQiLCJnYiIsImhiIiwiaWIiLCJqYiIsImtiIiwibGIiLCJuYiIsIm5hbWVzcGFjZVVSSSIsIk1TQXBwIiwiZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24iLCJvYiIsIm5vZGVWYWx1ZSIsImxpbmVDbGFtcCIsInFiIiwicmIiLCJzYiIsInNldFByb3BlcnR5IiwidGIiLCJtZW51aXRlbSIsImFyZWEiLCJiciIsImNvbCIsImVtYmVkIiwiaHIiLCJpbWciLCJrZXlnZW4iLCJtZXRhIiwidHJhY2siLCJ3YnIiLCJ1YiIsInZiIiwid2IiLCJ4YiIsInNyY0VsZW1lbnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsInliIiwiemIiLCJBYiIsIkJiIiwiQ2IiLCJzdGF0ZU5vZGUiLCJEYiIsIkViIiwiRmIiLCJHYiIsIkhiIiwiSWIiLCJKYiIsIktiIiwiTGIiLCJNYiIsIk5iIiwib25FcnJvciIsIk9iIiwiUGIiLCJRYiIsIlJiIiwiU2IiLCJUYiIsIlZiIiwiYWx0ZXJuYXRlIiwiZmxhZ3MiLCJXYiIsIm1lbW9pemVkU3RhdGUiLCJkZWh5ZHJhdGVkIiwiWGIiLCJaYiIsInNpYmxpbmciLCJZYiIsIiRiIiwiYWMiLCJ1bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrIiwiYmMiLCJ1bnN0YWJsZV9jYW5jZWxDYWxsYmFjayIsImNjIiwidW5zdGFibGVfc2hvdWxkWWllbGQiLCJkYyIsInVuc3RhYmxlX3JlcXVlc3RQYWludCIsIkIiLCJ1bnN0YWJsZV9ub3ciLCJlYyIsInVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsIiwiZmMiLCJ1bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSIsImdjIiwidW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHkiLCJoYyIsInVuc3RhYmxlX05vcm1hbFByaW9yaXR5IiwiaWMiLCJ1bnN0YWJsZV9Mb3dQcmlvcml0eSIsImpjIiwidW5zdGFibGVfSWRsZVByaW9yaXR5Iiwia2MiLCJsYyIsIm9jIiwiY2x6MzIiLCJwYyIsInFjIiwiTE4yIiwicmMiLCJzYyIsInRjIiwidWMiLCJwZW5kaW5nTGFuZXMiLCJzdXNwZW5kZWRMYW5lcyIsInBpbmdlZExhbmVzIiwiZW50YW5nbGVkTGFuZXMiLCJlbnRhbmdsZW1lbnRzIiwidmMiLCJ4YyIsInljIiwiemMiLCJBYyIsImV2ZW50VGltZXMiLCJDYyIsIkMiLCJEYyIsIkVjIiwiRmMiLCJHYyIsIkhjIiwiSWMiLCJKYyIsIktjIiwiTGMiLCJNYyIsIk5jIiwiT2MiLCJQYyIsIlFjIiwiUmMiLCJTYyIsImRlbGV0ZSIsInBvaW50ZXJJZCIsIlRjIiwibmF0aXZlRXZlbnQiLCJibG9ja2VkT24iLCJkb21FdmVudE5hbWUiLCJldmVudFN5c3RlbUZsYWdzIiwidGFyZ2V0Q29udGFpbmVycyIsIlZjIiwiV2MiLCJpc0RlaHlkcmF0ZWQiLCJjb250YWluZXJJbmZvIiwiWGMiLCJZYyIsIlpjIiwiJGMiLCJhZCIsImJkIiwiY2QiLCJSZWFjdEN1cnJlbnRCYXRjaENvbmZpZyIsImRkIiwiZWQiLCJmZCIsImdkIiwiaGQiLCJVYyIsImpkIiwia2QiLCJsZCIsIm5kIiwib2QiLCJrZXlDb2RlIiwiY2hhckNvZGUiLCJwZCIsInFkIiwicmQiLCJfcmVhY3ROYW1lIiwiX3RhcmdldEluc3QiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiY2FuY2VsQnViYmxlIiwicGVyc2lzdCIsImlzUGVyc2lzdGVudCIsIndkIiwieGQiLCJ5ZCIsInNkIiwiZXZlbnRQaGFzZSIsInRpbWVTdGFtcCIsImlzVHJ1c3RlZCIsInRkIiwidWQiLCJ2aWV3IiwidmQiLCJBZCIsInNjcmVlblgiLCJzY3JlZW5ZIiwic2hpZnRLZXkiLCJnZXRNb2RpZmllclN0YXRlIiwiemQiLCJidXR0b25zIiwicmVsYXRlZFRhcmdldCIsImZyb21FbGVtZW50IiwidG9FbGVtZW50IiwibW92ZW1lbnRYIiwibW92ZW1lbnRZIiwiQmQiLCJEZCIsImRhdGFUcmFuc2ZlciIsIkZkIiwiSGQiLCJhbmltYXRpb25OYW1lIiwiZWxhcHNlZFRpbWUiLCJwc2V1ZG9FbGVtZW50IiwiSWQiLCJjbGlwYm9hcmREYXRhIiwiSmQiLCJMZCIsIk1kIiwiRXNjIiwiU3BhY2ViYXIiLCJMZWZ0IiwiVXAiLCJSaWdodCIsIkRvd24iLCJEZWwiLCJXaW4iLCJNZW51IiwiQXBwcyIsIlNjcm9sbCIsIk1velByaW50YWJsZUtleSIsIk5kIiwiT2QiLCJBbHQiLCJDb250cm9sIiwiTWV0YSIsIlNoaWZ0IiwiUGQiLCJRZCIsInJlcGVhdCIsImxvY2FsZSIsIlJkIiwiVGQiLCJwcmVzc3VyZSIsInRhbmdlbnRpYWxQcmVzc3VyZSIsInRpbHRYIiwidGlsdFkiLCJ0d2lzdCIsInBvaW50ZXJUeXBlIiwiaXNQcmltYXJ5IiwiVmQiLCJYZCIsIllkIiwiZGVsdGFYIiwid2hlZWxEZWx0YVgiLCJkZWx0YVkiLCJ3aGVlbERlbHRhWSIsIndoZWVsRGVsdGEiLCJkZWx0YVoiLCJkZWx0YU1vZGUiLCJaZCIsIiRkIiwiYWUiLCJiZSIsImRvY3VtZW50TW9kZSIsImNlIiwiZGUiLCJlZSIsImZlIiwiZ2UiLCJoZSIsImllIiwibGUiLCJyYW5nZSIsIm1lIiwibmUiLCJvZSIsImxpc3RlbmVycyIsInBlIiwicWUiLCJzZSIsInRlIiwidWUiLCJ2ZSIsIndlIiwieGUiLCJ5ZSIsInplIiwib25pbnB1dCIsIkFlIiwiZGV0YWNoRXZlbnQiLCJCZSIsIkNlIiwiYXR0YWNoRXZlbnQiLCJEZSIsIkVlIiwiRmUiLCJIZSIsIkllIiwiSmUiLCJLZSIsIkxlIiwiY29tcGFyZURvY3VtZW50UG9zaXRpb24iLCJNZSIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudFdpbmRvdyIsIk5lIiwiY29udGVudEVkaXRhYmxlIiwiT2UiLCJmb2N1c2VkRWxlbSIsInNlbGVjdGlvblJhbmdlIiwiZG9jdW1lbnRFbGVtZW50Iiwic2VsZWN0aW9uU3RhcnQiLCJzZWxlY3Rpb25FbmQiLCJnZXRTZWxlY3Rpb24iLCJyYW5nZUNvdW50IiwiYW5jaG9yTm9kZSIsImFuY2hvck9mZnNldCIsImZvY3VzTm9kZSIsImZvY3VzT2Zmc2V0IiwiY3JlYXRlUmFuZ2UiLCJzZXRTdGFydCIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwic2V0RW5kIiwiUGUiLCJRZSIsIlJlIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJXZSIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlvbiIsImFuaW1hdGlvbnN0YXJ0IiwidHJhbnNpdGlvbmVuZCIsIlhlIiwiWWUiLCJaZSIsIiRlIiwiYWYiLCJiZiIsImNmIiwiZGYiLCJlZiIsImZmIiwiZ2YiLCJoZiIsImxmIiwibWYiLCJuZiIsIlViIiwiRCIsIm9mIiwicGYiLCJxZiIsInJmIiwicmFuZG9tIiwic2YiLCJKIiwidSIsInciLCJGIiwidGYiLCJ1ZiIsInBhcmVudFdpbmRvdyIsInZmIiwid2YiLCJuYSIsInhhIiwiJGEiLCJiYSIsImplIiwiY2hhciIsImtlIiwieGYiLCJ5ZiIsInpmIiwiQWYiLCJCZiIsIkNmIiwiRGYiLCJFZiIsIkZmIiwiR2YiLCJIZiIsIkpmIiwicXVldWVNaWNyb3Rhc2siLCJjYXRjaCIsIklmIiwiS2YiLCJMZiIsIk1mIiwiTmYiLCJPZiIsIlBmIiwiUWYiLCJSZiIsIlNmIiwiVGYiLCJVZiIsIkUiLCJHIiwiVmYiLCJIIiwiV2YiLCJYZiIsIllmIiwiX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dCIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0IiwiWmYiLCIkZiIsImFnIiwiYmciLCJnZXRDaGlsZENvbnRleHQiLCJjZyIsIl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0IiwiZGciLCJlZyIsImZnIiwiZ2ciLCJoZyIsImpnIiwia2ciLCJtZyIsIm5nIiwib2ciLCJwZyIsInFnIiwicmciLCJzZyIsInRnIiwidWciLCJ2ZyIsIndnIiwieGciLCJ5ZyIsIkkiLCJ6ZyIsIkFnIiwiQmciLCJkZWxldGlvbnMiLCJDZyIsInBlbmRpbmdQcm9wcyIsInRyZWVDb250ZXh0IiwicmV0cnlMYW5lIiwiRGciLCJFZyIsIkZnIiwiR2ciLCJtZW1vaXplZFByb3BzIiwiSGciLCJJZyIsIkpnIiwiS2ciLCJMZyIsIk1nIiwiTmciLCJPZyIsIlBnIiwiUWciLCJSZyIsIl9jdXJyZW50VmFsdWUiLCJTZyIsImNoaWxkTGFuZXMiLCJUZyIsImRlcGVuZGVuY2llcyIsImZpcnN0Q29udGV4dCIsImxhbmVzIiwiVWciLCJWZyIsIm1lbW9pemVkVmFsdWUiLCJXZyIsIlhnIiwiWWciLCJpbnRlcmxlYXZlZCIsIlpnIiwiJGciLCJhaCIsInVwZGF0ZVF1ZXVlIiwiYmFzZVN0YXRlIiwiZmlyc3RCYXNlVXBkYXRlIiwibGFzdEJhc2VVcGRhdGUiLCJzaGFyZWQiLCJwZW5kaW5nIiwiZWZmZWN0cyIsImJoIiwiY2giLCJldmVudFRpbWUiLCJsYW5lIiwicGF5bG9hZCIsImRoIiwiSyIsImVoIiwiZmgiLCJnaCIsInEiLCJoaCIsImloIiwiamgiLCJraCIsIm5oIiwiaXNNb3VudGVkIiwiX3JlYWN0SW50ZXJuYWxzIiwiZW5xdWV1ZVNldFN0YXRlIiwiTCIsImxoIiwibWgiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZUZvcmNlVXBkYXRlIiwib2giLCJzaG91bGRDb21wb25lbnRVcGRhdGUiLCJpc1B1cmVSZWFjdENvbXBvbmVudCIsInBoIiwidXBkYXRlciIsInFoIiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIiwicmgiLCJnZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSIsIlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQiLCJjb21wb25lbnRXaWxsTW91bnQiLCJzaCIsIl9vd25lciIsIl9zdHJpbmdSZWYiLCJ0aCIsInVoIiwidmgiLCJ3aCIsInhoIiwieWgiLCJpbXBsZW1lbnRhdGlvbiIsInpoIiwiQWgiLCJkb25lIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJGaCIsIkdoIiwiSGgiLCJJaCIsIkpoIiwiS2giLCJMaCIsIk0iLCJNaCIsInJldmVhbE9yZGVyIiwiTmgiLCJPaCIsIl93b3JrSW5Qcm9ncmVzc1ZlcnNpb25QcmltYXJ5IiwiUGgiLCJSZWFjdEN1cnJlbnREaXNwYXRjaGVyIiwiUWgiLCJSaCIsIk4iLCJPIiwiUCIsIlNoIiwiVGgiLCJVaCIsIlZoIiwiUSIsIldoIiwiWGgiLCJZaCIsIlpoIiwiJGgiLCJhaSIsImJpIiwiY2kiLCJiYXNlUXVldWUiLCJxdWV1ZSIsImRpIiwiZWkiLCJmaSIsImxhc3RSZW5kZXJlZFJlZHVjZXIiLCJoYXNFYWdlclN0YXRlIiwiZWFnZXJTdGF0ZSIsImxhc3RSZW5kZXJlZFN0YXRlIiwiZGlzcGF0Y2giLCJnaSIsImhpIiwiaWkiLCJqaSIsImtpIiwiZ2V0U25hcHNob3QiLCJsaSIsIm1pIiwiUiIsIm5pIiwibGFzdEVmZmVjdCIsInN0b3JlcyIsIm9pIiwicGkiLCJxaSIsInJpIiwiZGVwcyIsInNpIiwidGkiLCJ1aSIsInZpIiwid2kiLCJ4aSIsInlpIiwiemkiLCJBaSIsIkJpIiwiQ2kiLCJEaSIsIkVpIiwiRmkiLCJHaSIsIkhpIiwiSWkiLCJKaSIsInJlYWRDb250ZXh0IiwidXNlQ2FsbGJhY2siLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlTGF5b3V0RWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZHVjZXIiLCJ1c2VEZWJ1Z1ZhbHVlIiwidXNlRGVmZXJyZWRWYWx1ZSIsInVzZVRyYW5zaXRpb24iLCJ1c2VNdXRhYmxlU291cmNlIiwidXNlU3luY0V4dGVybmFsU3RvcmUiLCJ1c2VJZCIsInVuc3RhYmxlX2lzTmV3UmVjb25jaWxlciIsImlkZW50aWZpZXJQcmVmaXgiLCJLaSIsImRpZ2VzdCIsIkxpIiwiTWkiLCJOaSIsIk9pIiwiUGkiLCJRaSIsIlJpIiwiY29tcG9uZW50RGlkQ2F0Y2giLCJTaSIsImNvbXBvbmVudFN0YWNrIiwiVGkiLCJwaW5nQ2FjaGUiLCJVaSIsIlZpIiwiV2kiLCJYaSIsIlJlYWN0Q3VycmVudE93bmVyIiwiWWkiLCJaaSIsIiRpIiwiYWoiLCJiaiIsImNqIiwiZGoiLCJlaiIsImJhc2VMYW5lcyIsImNhY2hlUG9vbCIsImZqIiwiZ2oiLCJoaiIsImlqIiwiamoiLCJVTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSIsImNvbXBvbmVudFdpbGxVcGRhdGUiLCJraiIsImxqIiwicGVuZGluZ0NvbnRleHQiLCJtaiIsIkFqIiwiQ2oiLCJEaiIsIm5qIiwib2oiLCJwaiIsImZhbGxiYWNrIiwicWoiLCJyaiIsInRqIiwiZGdzdCIsInVqIiwidmoiLCJfcmVhY3RSZXRyeSIsInNqIiwic3VidHJlZUZsYWdzIiwid2oiLCJ4aiIsImlzQmFja3dhcmRzIiwicmVuZGVyaW5nIiwicmVuZGVyaW5nU3RhcnRUaW1lIiwibGFzdCIsInRhaWwiLCJ0YWlsTW9kZSIsInlqIiwiRWoiLCJTIiwiRmoiLCJHaiIsIndhc011bHRpcGxlIiwibXVsdGlwbGUiLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJvbmNsaWNrIiwiYXV0b0ZvY3VzIiwiVCIsIkhqIiwiSWoiLCJKaiIsIktqIiwiVSIsIkxqIiwiV2Vha1NldCIsIlYiLCJNaiIsIlciLCJOaiIsIk9qIiwiUWoiLCJSaiIsIlNqIiwiVGoiLCJVaiIsIlZqIiwiV2oiLCJfcmVhY3RSb290Q29udGFpbmVyIiwiWGoiLCJYIiwiWWoiLCJaaiIsImFrIiwib25Db21taXRGaWJlclVubW91bnQiLCJiayIsImNrIiwiZGsiLCJlayIsImZrIiwiZ2siLCJoayIsImlrIiwiamsiLCJrayIsImxrIiwiX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUiLCJXayIsIm1rIiwibmsiLCJwayIsIlkiLCJaIiwicWsiLCJyayIsInNrIiwidGsiLCJ1ayIsIkluZmluaXR5IiwidmsiLCJ3ayIsInhrIiwieWsiLCJ6ayIsIkFrIiwiQmsiLCJDayIsIkRrIiwiRWsiLCJjYWxsYmFja05vZGUiLCJleHBpcmF0aW9uVGltZXMiLCJleHBpcmVkTGFuZXMiLCJ3YyIsImNhbGxiYWNrUHJpb3JpdHkiLCJpZyIsIkZrIiwiR2siLCJIayIsIklrIiwiSmsiLCJLayIsIkxrIiwiTWsiLCJOayIsIk9rIiwiUGsiLCJmaW5pc2hlZFdvcmsiLCJmaW5pc2hlZExhbmVzIiwiUWsiLCJ0aW1lb3V0SGFuZGxlIiwiUmsiLCJTayIsIlRrIiwiVWsiLCJWayIsIm11dGFibGVSZWFkTGFuZXMiLCJCYyIsIlBqIiwib25Db21taXRGaWJlclJvb3QiLCJtYyIsIm9uUmVjb3ZlcmFibGVFcnJvciIsIlhrIiwib25Qb3N0Q29tbWl0RmliZXJSb290IiwiWWsiLCJaayIsImFsIiwiaXNSZWFjdENvbXBvbmVudCIsInBlbmRpbmdDaGlsZHJlbiIsImJsIiwibXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YSIsImNsIiwicGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyIsImRsIiwiZmwiLCJnbCIsImhsIiwiaWwiLCJqbCIsInpqIiwiJGsiLCJsbCIsInJlcG9ydEVycm9yIiwiX2ludGVybmFsUm9vdCIsIm5sIiwib2wiLCJxbCIsInNsIiwicmwiLCJ1bm1vdW50IiwidW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb24iLCJ0bCIsInVzaW5nQ2xpZW50RW50cnlQb2ludCIsIkV2ZW50cyIsInVsIiwiZmluZEZpYmVyQnlIb3N0SW5zdGFuY2UiLCJidW5kbGVUeXBlIiwidmVyc2lvbiIsInJlbmRlcmVyUGFja2FnZU5hbWUiLCJ2bCIsInJlbmRlcmVyQ29uZmlnIiwib3ZlcnJpZGVIb29rU3RhdGUiLCJvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGgiLCJvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGgiLCJvdmVycmlkZVByb3BzIiwib3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGgiLCJvdmVycmlkZVByb3BzUmVuYW1lUGF0aCIsInNldEVycm9ySGFuZGxlciIsInNldFN1c3BlbnNlSGFuZGxlciIsInNjaGVkdWxlVXBkYXRlIiwiY3VycmVudERpc3BhdGNoZXJSZWYiLCJmaW5kSG9zdEluc3RhbmNlQnlGaWJlciIsImZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaCIsInNjaGVkdWxlUmVmcmVzaCIsInNjaGVkdWxlUm9vdCIsInNldFJlZnJlc2hIYW5kbGVyIiwiZ2V0Q3VycmVudEZpYmVyIiwicmVjb25jaWxlclZlcnNpb24iLCJfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJ3bCIsImlzRGlzYWJsZWQiLCJzdXBwb3J0c0ZpYmVyIiwiaW5qZWN0IiwiY3JlYXRlUG9ydGFsIiwidW5zdGFibGVfc3RyaWN0TW9kZSIsImZpbmRET01Ob2RlIiwiZmx1c2hTeW5jIiwiaHlkcmF0ZVJvb3QiLCJoeWRyYXRlZFNvdXJjZXMiLCJfZ2V0VmVyc2lvbiIsIl9zb3VyY2UiLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwidW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMiLCJ1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsImNoZWNrRENFIiwiaGFzRWxlbWVudFR5cGUiLCJFbGVtZW50IiwiaGFzTWFwIiwiaGFzU2V0IiwiaGFzQXJyYXlCdWZmZXIiLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsIml0Iiwid2FybiIsIkFzeW5jTW9kZSIsIkNvbmN1cnJlbnRNb2RlIiwiQ29udGV4dENvbnN1bWVyIiwiQ29udGV4dFByb3ZpZGVyIiwiRnJhZ21lbnQiLCJMYXp5IiwiUG9ydGFsIiwiUHJvZmlsZXIiLCJTdHJpY3RNb2RlIiwiU3VzcGVuc2UiLCJpc0FzeW5jTW9kZSIsImlzQ29uY3VycmVudE1vZGUiLCJpc0NvbnRleHRDb25zdW1lciIsImlzQ29udGV4dFByb3ZpZGVyIiwiaXNFbGVtZW50IiwiaXNGcmFnbWVudCIsImlzTGF6eSIsImlzUG9ydGFsIiwiaXNQcm9maWxlciIsImlzU3RyaWN0TW9kZSIsImlzU3VzcGVuc2UiLCJpc1ZhbGlkRWxlbWVudFR5cGUiLCJ0eXBlT2YiLCJfX2VzTW9kdWxlIiwiX3JlYWN0IiwibmV3T2JqIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9sb2Rhc2giLCJfc2hhbGxvd2VxdWFsIiwiVHJhY2tWaXNpYmlsaXR5IiwiX1B1cmVDb21wb25lbnQiLCJ3aW5kb3dXaWR0aCIsInRvcFRocmVzaG9sZCIsImxlZnRUaHJlc2hvbGQiLCJ3aWR0aENoZWNrIiwiaGVpZ2h0Q2hlY2siLCJpc0NvbXBvbmVudFZpc2libGUiLCJib3VuZGluZ0NsaWVudFJlY3QiLCJyZW1vdmVMaXN0ZW5lciIsInNldE5vZGVSZWYiLCJvd25Qcm9wcyIsInRocm90dGxlQ2IiLCJ0aHJvdHRsZUludGVydmFsIiwiYXR0YWNoTGlzdGVuZXIiLCJwcmV2UHJvcHMiLCJnZXRDaGlsZFByb3BzIiwiY2hpbGRQcm9wcyIsImdldENoaWxkcmVuIiwiVGFnIiwiUHVyZUNvbXBvbmVudCIsImN1cnJlbnRQcm9wIiwiaXNJbnRlZ2VyIiwiX2RlZmF1bHQiLCJ0b1N0cmluZ1RhZyIsInBhZ2VMaW5rQ2xhc3NOYW1lIiwiYWN0aXZlTGlua0NsYXNzTmFtZSIsImdldEV2ZW50TGlzdGVuZXIiLCJwYWdlU2VsZWN0ZWRIYW5kbGVyIiwiZXh0cmFBcmlhQ29udGV4dCIsInBhZ2VMYWJlbEJ1aWxkZXIiLCJyZWwiLCJvbktleVByZXNzIiwiYnJlYWtMaW5rQ2xhc3NOYW1lIiwiYnJlYWtIYW5kbGVyIiwiaGFuZGxlQ2xpY2siLCJpc1ByZXZpb3VzIiwiaXNOZXh0IiwiY2FsbEFjdGl2ZUNhbGxiYWNrIiwiaXNBY3RpdmUiLCJjYWxsQ2FsbGJhY2siLCJldmVudExpc3RlbmVyIiwiaXNCcmVhayIsIm5leHRTZWxlY3RlZFBhZ2UiLCJnZXRGb3J3YXJkSnVtcCIsImdldEJhY2t3YXJkSnVtcCIsIm9uUGFnZUFjdGl2ZSIsIm5leHRQYWdlUmVsIiwicHJldlBhZ2VSZWwiLCJzZWxlY3RlZFBhZ2VSZWwiLCJnZXRQYWdlRWxlbWVudCIsImhhbmRsZUJyZWFrQ2xpY2siLCJkaXNhYmxlSW5pdGlhbENhbGxiYWNrIiwiaHJlZkJ1aWxkZXIiLCJocmVmQWxsQ29udHJvbHMiLCJhcmlhTGFiZWxCdWlsZGVyIiwiaGFuZGxlUGFnZVNlbGVjdGVkIiwiZ2V0RWxlbWVudFBhZ2VSZWwiLCJnZXRFbGVtZW50SHJlZiIsImRpc2FibGVkQ2xhc3NOYW1lIiwicHJldmlvdXNMaW5rQ2xhc3NOYW1lIiwicHJldmlvdXNBcmlhTGFiZWwiLCJwcmV2UmVsIiwibmV4dExpbmtDbGFzc05hbWUiLCJuZXh0QXJpYUxhYmVsIiwibmV4dFJlbCIsImhhbmRsZVByZXZpb3VzUGFnZSIsImhhbmRsZU5leHRQYWdlIiwiX3R5cGVvZiIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIl9yZWFjdEZhc3RDb21wYXJlIiwiX3Byb3BzIiwiX3V0aWxzIiwiX2NsYXNzQ2FsbENoZWNrIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfZGVmaW5lUHJvcGVydHkiLCJQbGF5ZXIiLCJfQ29tcG9uZW50IiwiX2luaGVyaXRzIiwicHJvdG9Qcm9wcyIsIkRlcml2ZWQiLCJoYXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX3N1cGVyIiwiU3VwZXIiLCJOZXdUYXJnZXQiLCJfYXJncyIsInBsYXllciIsImxvYWQiLCJpc1JlYWR5IiwicGxheWVkU2Vjb25kcyIsImdldEN1cnJlbnRUaW1lIiwibG9hZGVkU2Vjb25kcyIsImdldFNlY29uZHNMb2FkZWQiLCJnZXREdXJhdGlvbiIsInBsYXllZCIsInByZXZQbGF5ZWQiLCJwcmV2TG9hZGVkIiwib25Qcm9ncmVzcyIsInByb2dyZXNzVGltZW91dCIsInByb2dyZXNzRnJlcXVlbmN5IiwicHJvZ3Jlc3NJbnRlcnZhbCIsImlzTG9hZGluZyIsInZvbHVtZSIsInNldFZvbHVtZSIsImxvYWRPblJlYWR5IiwiaGFuZGxlRHVyYXRpb25DaGVjayIsImlzUGxheWluZyIsIm9uU3RhcnQiLCJvblBsYXkiLCJwbGF5YmFja1JhdGUiLCJzdGFydE9uUGxheSIsInNldFBsYXliYWNrUmF0ZSIsInNlZWtPblBsYXkiLCJzZWVrVG8iLCJvblBhdXNlIiwiYWN0aXZlUGxheWVyIiwib25FbmRlZCIsImxvb3BPbkVuZGVkIiwiZHVyYXRpb25DaGVja1RpbWVvdXQiLCJvbkR1cmF0aW9uQ2FsbGVkIiwib25EdXJhdGlvbiIsInN0b3BPblVubW91bnQiLCJkaXNhYmxlUElQIiwiX3RoaXMkcHJvcHM1IiwicGlwIiwiZGlzYWJsZURlZmVycmVkTG9hZGluZyIsImZvcmNlTG9hZCIsImlzTWVkaWFTdHJlYW0iLCJlbmFibGVQSVAiLCJtdXRlIiwidW5tdXRlIiwic2V0TG9vcCIsIm9uTW91bnQiLCJoYW5kbGVQbGF5ZXJNb3VudCIsImhhbmRsZVJlYWR5IiwiaGFuZGxlUGxheSIsImhhbmRsZVBhdXNlIiwiaGFuZGxlRW5kZWQiLCJvbkxvYWRlZCIsImhhbmRsZUxvYWRlZCIsImhhbmRsZUVycm9yIiwib3duS2V5cyIsImVudW1lcmFibGVPbmx5Iiwic3ltYm9scyIsInN5bSIsIl9vYmplY3RTcHJlYWQiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIklDT05fU0laRSIsIlByZXZpZXciLCJmZXRjaEltYWdlIiwib0VtYmVkVXJsIiwidGh1bWJuYWlsX3VybCIsInBsYXlJY29uIiwicHJldmlld1RhYkluZGV4IiwiZmxleENlbnRlciIsInByZXZpZXciLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRQb3NpdGlvbiIsInNoYWRvdyIsImJvcmRlcldpZHRoIiwiZGVmYXVsdFBsYXlJY29uIiwiaGFuZGxlS2V5UHJlc3MiLCJjcmVhdGVSZWFjdFBsYXllciIsIl9kZWVwbWVyZ2UiLCJfbWVtb2l6ZU9uZSIsIl9QbGF5ZXIzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJpdGVyIiwiX2l0ZXJhYmxlVG9BcnJheSIsIm1pbkxlbiIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsImFycjIiLCJsYXp5IiwiSVNfQlJPV1NFUiIsIklTX0dMT0JBTCIsIlNVUFBPUlRFRF9QUk9QUyIsIlVuaXZlcnNhbFN1c3BlbnNlIiwiY3VzdG9tUGxheWVycyIsInBsYXllcnMiLCJfY2xhc3MiLCJSZWFjdFBsYXllciIsInNob3dQcmV2aWV3IiwiX3dyYXBwZXIiLCJfcGxheWVyIiwib25DbGlja1ByZXZpZXciLCJnZXRJbnRlcm5hbFBsYXllciIsImZyYWN0aW9uIiwiX2FyciIsImNhblBsYXkiLCJvbWl0IiwiZ2V0QWN0aXZlUGxheWVyIiwiZ2V0Q29uZmlnIiwicmVmZXJlbmNlcyIsImxhenlQbGF5ZXIiLCJuZXh0U3RhdGUiLCJoYW5kbGVDbGlja1ByZXZpZXciLCJnZXRBdHRyaWJ1dGVzIiwicmVuZGVyUHJldmlldyIsInJlbmRlckFjdGl2ZVBsYXllciIsIl9hcnIyIiwiX2kzIiwiX2FycjMiLCJfUGxheWVyMiIsImNhbkVuYWJsZVBJUCIsIl9wbGF5ZXJzIiwiX1JlYWN0UGxheWVyIiwiRkxWX0VYVEVOU0lPTlMiLCJEQVNIX0VYVEVOU0lPTlMiLCJITFNfRVhURU5TSU9OUyIsIlZJREVPX0VYVEVOU0lPTlMiLCJBVURJT19FWFRFTlNJT05TIiwiTUFUQ0hfVVJMX0tBTFRVUkEiLCJNQVRDSF9VUkxfVklEWUFSRCIsIk1BVENIX1VSTF9NSVhDTE9VRCIsIk1BVENIX1VSTF9EQUlMWU1PVElPTiIsIk1BVENIX1VSTF9UV0lUQ0hfQ0hBTk5FTCIsIk1BVENIX1VSTF9UV0lUQ0hfVklERU8iLCJNQVRDSF9VUkxfV0lTVElBIiwiTUFUQ0hfVVJMX1NUUkVBTUFCTEUiLCJNQVRDSF9VUkxfRkFDRUJPT0tfV0FUQ0giLCJNQVRDSF9VUkxfRkFDRUJPT0siLCJNQVRDSF9VUkxfVklNRU8iLCJNQVRDSF9VUkxfU09VTkRDTE9VRCIsIk1BVENIX1VSTF9ZT1VUVUJFIiwieW91dHViZSIsInNvdW5kY2xvdWQiLCJ2aW1lbyIsImZhY2Vib29rIiwic3RyZWFtYWJsZSIsIndpc3RpYSIsInR3aXRjaCIsImRhaWx5bW90aW9uIiwibWl4Y2xvdWQiLCJ2aWR5YXJkIiwia2FsdHVyYSIsImNhblBsYXlGaWxlIiwiX3N0ZXAiLCJfaXRlcmF0b3IiLCJhbGxvd0FycmF5TGlrZSIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsIl9lMiIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiaXNCbG9iVXJsIiwiX3BhdHRlcm5zIiwiRGFpbHlNb3Rpb24iLCJjYWxsUGxheWVyIiwiX2FycmF5V2l0aEhvbGVzIiwiX24iLCJfZCIsIl9zIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInBhcnNlU3RhcnRUaW1lIiwiZ2V0U0RLIiwiRE0iLCJhcGlyZWFkeSIsInNlZWtlZCIsIm9uU2VlayIsImN1cnJlbnRUaW1lIiwidmlkZW9fZW5kIiwiZHVyYXRpb25jaGFuZ2UiLCJvbkR1cmF0aW9uQ2hhbmdlIiwid2FpdGluZyIsIm9uQnVmZmVyIiwic2Vjb25kcyIsImJ1ZmZlcmVkVGltZSIsIlNES19VUkwiLCJTREtfR0xPQkFMX1JFQURZIiwiUExBWUVSX0lEX1BSRUZJWCIsIkZhY2Vib29rIiwicGxheWVySWQiLCJyYW5kb21TdHJpbmciLCJGQiIsIlhGQk1MIiwiYXBwSWQiLCJ4ZmJtbCIsIkV2ZW50Iiwic3Vic2NyaWJlIiwibXNnIiwicGxheWVySUQiLCJvbkJ1ZmZlckVuZCIsIkhBU19OQVZJR0FUT1IiLCJJU19JUEFEX1BSTyIsIklTX0lPUyIsIk1TU3RyZWFtIiwiTUFUQ0hfRFJPUEJPWF9VUkwiLCJNQVRDSF9DTE9VREZMQVJFX1NUUkVBTSIsIkZpbGVQbGF5ZXIiLCJfdGhpcyRwcm9wczYiLCJfdGhpcyRwcm9wczciLCJvblBsYXliYWNrUmF0ZUNoYW5nZSIsIl90aGlzJHByb3BzOCIsIm9uRW5hYmxlUElQIiwiX3RoaXMkcHJvcHM5Iiwib25EaXNhYmxlUElQIiwic3VwcG9ydHNXZWJLaXRQcmVzZW50YXRpb25Nb2RlIiwid2Via2l0UHJlc2VudGF0aW9uTW9kZSIsInByZXZQbGF5ZXIiLCJhZGRMaXN0ZW5lcnMiLCJzaG91bGRVc2VBdWRpbyIsInJlbW92ZUxpc3RlbmVycyIsInNyY09iamVjdCIsImhscyIsIl90aGlzJHByb3BzMTAiLCJvblBsYXlCYWNrUmF0ZUNoYW5nZSIsIm9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSIsInNob3VsZFVzZUhMUyIsImZvcmNlVmlkZW8iLCJwb3N0ZXIiLCJmb3JjZUF1ZGlvIiwiZm9yY2VITFMiLCJmb3JjZURBU0giLCJmb3JjZUZMViIsIl90aGlzJHByb3BzJGNvbmZpZyIsImhsc1ZlcnNpb24iLCJobHNPcHRpb25zIiwiZGFzaFZlcnNpb24iLCJmbHZWZXJzaW9uIiwiZGFzaCIsIkhscyIsIk1BTklGRVNUX1BBUlNFRCIsIkVSUk9SIiwibG9hZFNvdXJjZSIsImF0dGFjaE1lZGlhIiwic2hvdWxkVXNlREFTSCIsImRhc2hqcyIsIk1lZGlhUGxheWVyIiwiaW5pdGlhbGl6ZSIsImdldERlYnVnIiwic2V0TG9nVG9Ccm93c2VyQ29uc29sZSIsInVwZGF0ZVNldHRpbmdzIiwibG9nTGV2ZWwiLCJEZWJ1ZyIsIkxPR19MRVZFTF9OT05FIiwic2hvdWxkVXNlRkxWIiwiZmx2anMiLCJmbHYiLCJjcmVhdGVQbGF5ZXIiLCJhdHRhY2hNZWRpYUVsZW1lbnQiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJwcm9taXNlIiwicmVxdWVzdFBpY3R1cmVJblBpY3R1cmUiLCJwaWN0dXJlSW5QaWN0dXJlRWxlbWVudCIsIndlYmtpdFNldFByZXNlbnRhdGlvbk1vZGUiLCJleGl0UGljdHVyZUluUGljdHVyZSIsInJhdGUiLCJfdGhpcyRwbGF5ZXIiLCJzZWVrYWJsZSIsImJ1ZmZlcmVkIiwidXNlSExTIiwidXNlREFTSCIsInVzZUZMViIsIl90aGlzJHByb3BzMTEiLCJnZXRTb3VyY2UiLCJwcmVsb2FkIiwiYXV0b1BsYXkiLCJyZW5kZXJTb3VyY2VFbGVtZW50IiwidHJhY2tzIiwicmVuZGVyVHJhY2siLCJLYWx0dXJhIiwiaWZyYW1lIiwicGxheWVyanMiLCJzZWNvbmRzTG9hZGVkIiwiZnJhbWVCb3JkZXIiLCJzY3JvbGxpbmciLCJhbGxvdyIsInJlZmVycmVyUG9saWN5IiwiTWl4Y2xvdWQiLCJQbGF5ZXJXaWRnZXQiLCJyZWFkeSIsImVuZGVkIiwiZmVlZCIsIlNvdW5kQ2xvdWQiLCJTQyIsIl9TQyRXaWRnZXQkRXZlbnRzIiwiV2lkZ2V0IiwiUExBWSIsIlBMQVlfUFJPR1JFU1MiLCJQQVVTRSIsIkZJTklTSCIsImZyYWN0aW9uTG9hZGVkIiwibG9hZGVkUHJvZ3Jlc3MiLCJTdHJlYW1hYmxlIiwiX3JlZjIiLCJwZXJjZW50IiwiVHdpdGNoIiwiaXNDaGFubmVsIiwic2V0Q2hhbm5lbCIsInNldFZpZGVvIiwiX1R3aXRjaCRQbGF5ZXIiLCJSRUFEWSIsIlBMQVlJTkciLCJFTkRFRCIsIk9OTElORSIsIk9GRkxJTkUiLCJTRUVLIiwiVmlkeWFyZCIsImFwaSIsImFkZFJlYWR5TGlzdGVuZXIiLCJyZW5kZXJQbGF5ZXIiLCJ1dWlkIiwiZ2V0UGxheWVyTWV0YWRhdGEiLCJsZW5ndGhfaW5fc2Vjb25kcyIsIlZpZHlhcmRWNCIsImRlc3Ryb3lQbGF5ZXIiLCJWaW1lbyIsIl90aGlzMiRwcm9wcyRjb25maWciLCJwbGF5ZXJPcHRpb25zIiwicmVmcmVzaER1cmF0aW9uIiwiV2lzdGlhIiwiX29uUmVhZHkiLCJjdXN0b21Db250cm9scyIsImNvbnRyb2wiLCJkZWZpbmVDb250cm9sIiwiX3dxIiwic2lsZW50QXV0b1BsYXkiLCJjb250cm9sc1Zpc2libGVPbkxvYWQiLCJmdWxsc2NyZWVuQnV0dG9uIiwicGxheWJhciIsInBsYXliYWNrUmF0ZUNvbnRyb2wiLCJxdWFsaXR5Q29udHJvbCIsInZvbHVtZUNvbnRyb2wiLCJzZXR0aW5nc0NvbnRyb2wiLCJzbWFsbFBsYXlCdXR0b24iLCJ1bmJpbmQiLCJ2aWRlb0lEIiwiX3NsaWNlZFRvQXJyYXkiLCJNQVRDSF9QTEFZTElTVCIsIk1BVENIX1VTRVJfVVBMT0FEUyIsIk1BVENIX05PQ09PS0lFIiwiWW91VHViZSIsImxpc3RUeXBlIiwicGxheWxpc3QiLCJnZXRJRCIsInBsYXllclZhcnMiLCJvblVuc3RhcnRlZCIsIl93aW5kb3ckU0RLX0dMT0JBTCRQbCIsIlBsYXllclN0YXRlIiwiVU5TVEFSVEVEIiwiUEFVU0VEIiwiQlVGRkVSSU5HIiwiQ1VFRCIsImlzUGxheWxpc3QiLCJfb25FcnJvciIsImVtYmVkT3B0aW9ucyIsImxvYWRQbGF5bGlzdCIsInBhcnNlUGxheWxpc3QiLCJjdWVWaWRlb0J5SWQiLCJ2aWRlb0lkIiwic3RhcnRTZWNvbmRzIiwiZW5kU2Vjb25kcyIsInBhcnNlRW5kVGltZSIsIllUIiwib25TdGF0ZUNoYW5nZSIsInBpY3R1cmVJblBpY3R1cmVFbmFibGVkIiwidmlzdWFsIiwiYnV5aW5nIiwibGlraW5nIiwiZG93bmxvYWQiLCJzaGFyaW5nIiwic2hvd19jb21tZW50cyIsInNob3dfcGxheWNvdW50Iiwic2hvd2luZm8iLCJpdl9sb2FkX3BvbGljeSIsIm1vZGVzdGJyYW5kaW5nIiwiYXV0b3BhdXNlIiwiYnlsaW5lIiwicG9ydHJhaXQiLCJoaWRlX2NvdmVyIiwicGFyc2VUaW1lUGFyYW0iLCJNQVRDSF9TVEFSVF9RVUVSWSIsIk1BVENIX0VORF9RVUVSWSIsInNka0dsb2JhbCIsInNka1JlYWR5IiwiaXNMb2FkZWQiLCJmZXRjaFNjcmlwdCIsIl9sb2FkU2NyaXB0IiwiZXhpc3RpbmdHbG9iYWwiLCJnZXRHbG9iYWwiLCJyZXF1ZXN0cyIsInNkayIsInJlcXVlc3QiLCJwcmV2aW91c09uUmVhZHkiLCJhcnJheXMiLCJvbWl0S2V5cyIsIl9rZXlzIiwiTWVkaWFTdHJlYW0iLCJub3RNb2JpbGUiLCJ3ZWJraXRTdXBwb3J0c1ByZXNlbnRhdGlvbk1vZGUiLCJNQVRDSF9TVEFSVF9TVEFNUCIsIk1BVENIX05VTUVSSUMiLCJzdGFtcCIsIl9hcnJheTIiLCJwZXJpb2QiLCJwYXJzZVRpbWVTdHJpbmciLCJmYWN0b3J5IiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMV9fIiwiX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMl9fIiwiaW5zdGFsbGVkTW9kdWxlcyIsIm1vZHVsZUlkIiwiZ2V0dGVyIiwibnMiLCJjb250YWlubWVudFJlY3QiLCJvZmZzZXREaXIiLCJvZmZzZXRWYWwiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiVmlzaWJpbGl0eVNlbnNvciIsInJlYWN0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJyZWFjdF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fX2RlZmF1bHQiLCJyZWFjdF9kb21fX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyIsInJlYWN0X2RvbV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fX2RlZmF1bHQiLCJwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18iLCJwcm9wX3R5cGVzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX19fZGVmYXVsdCIsIl9saWJfaXNfdmlzaWJsZV93aXRoX29mZnNldF9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fIiwiX2xpYl9pc192aXNpYmxlX3dpdGhfb2Zmc2V0X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19fZGVmYXVsdCIsImNvbnRhaW5tZW50IiwidGhyb3R0bGUiLCJkZWJvdW5jZUNoZWNrIiwibGF0ZXIiLCJjaGVjayIsImdldExhc3RUaW1lb3V0IiwiaW50ZXJ2YWwiLCJpbnRlcnZhbENoZWNrIiwic2V0SW50ZXJ2YWwiLCJzY3JvbGxDaGVjayIsImdldENvbnRhaW5lciIsInNjcm9sbERlbGF5Iiwic2Nyb2xsVGhyb3R0bGUiLCJyZXNpemVDaGVjayIsInJlc2l6ZURlbGF5IiwicmVzaXplVGhyb3R0bGUiLCJkZWxheWVkQ2FsbCIsImRlYm91bmNlRXZlbnQiLCJkZWJvdW5jZUluZm8iLCJjbGVhckludGVydmFsIiwibm9ybWFsaXplUmVjdCIsInJvdW5kUmVjdERvd24iLCJjb250YWlubWVudERPTVJlY3QiLCJ2aXNpYmlsaXR5UmVjdCIsImhhc1NpemUiLCJwYXJ0aWFsVmlzaWJsZSIsIm1pblRvcFZhbHVlIiwic3RhcnRXYXRjaGluZyIsInN0b3BXYXRjaGluZyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJfX3NlbGYiLCJfX3NvdXJjZSIsImpzeCIsImpzeHMiLCJmb3JjZVVwZGF0ZSIsImVzY2FwZSIsIl9zdGF0dXMiLCJfcmVzdWx0IiwidG9BcnJheSIsImNyZWF0ZUNvbnRleHQiLCJfY3VycmVudFZhbHVlMiIsIl90aHJlYWRDb3VudCIsIkNvbnN1bWVyIiwiX2RlZmF1bHRWYWx1ZSIsIl9nbG9iYWxOYW1lIiwiY3JlYXRlRmFjdG9yeSIsImNyZWF0ZVJlZiIsIm1lbW8iLCJzdGFydFRyYW5zaXRpb24iLCJ1bnN0YWJsZV9hY3QiLCJzb3J0SW5kZXgiLCJwZXJmb3JtYW5jZSIsInNldEltbWVkaWF0ZSIsInN0YXJ0VGltZSIsImV4cGlyYXRpb25UaW1lIiwicHJpb3JpdHlMZXZlbCIsInNjaGVkdWxpbmciLCJpc0lucHV0UGVuZGluZyIsIk1lc3NhZ2VDaGFubmVsIiwicG9ydDIiLCJwb3J0MSIsInVuc3RhYmxlX1Byb2ZpbGluZyIsInVuc3RhYmxlX2NvbnRpbnVlRXhlY3V0aW9uIiwidW5zdGFibGVfZm9yY2VGcmFtZVJhdGUiLCJ1bnN0YWJsZV9nZXRGaXJzdENhbGxiYWNrTm9kZSIsInVuc3RhYmxlX25leHQiLCJ1bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbiIsInVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSIsInVuc3RhYmxlX3dyYXBDYWxsYmFjayIsIm9iakEiLCJvYmpCIiwiY29tcGFyZUNvbnRleHQiLCJyZXQiLCJrZXlzQSIsImtleXNCIiwiYkhhc093blByb3BlcnR5IiwiaWR4IiwidmFsdWVBIiwidmFsdWVCIiwiZ2V0VGFyZ2V0Iiwic3R5bGVUYXJnZXQiLCJjb250ZW50RG9jdW1lbnQiLCJzdHlsZXNJbkRvbSIsImdldEluZGV4QnlJZGVudGlmaWVyIiwibW9kdWxlc1RvRG9tIiwiaWRDb3VudE1hcCIsImlkZW50aWZpZXJzIiwibWVkaWEiLCJzb3VyY2VNYXAiLCJhZGRTdHlsZSIsImluc2VydFN0eWxlRWxlbWVudCIsInRleHRTdG9yZSIsInJlcGxhY2VUZXh0IiwiYXBwbHlUb1NpbmdsZXRvblRhZyIsInN0eWxlU2hlZXQiLCJjc3NUZXh0IiwiY3NzTm9kZSIsImFwcGx5VG9UYWciLCJidG9hIiwidW5lc2NhcGUiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25Db3VudGVyIiwic3R5bGVJbmRleCIsInJlbW92ZVN0eWxlRWxlbWVudCIsImF0b2IiLCJsYXN0SWRlbnRpZmllcnMiLCJuZXdMaXN0IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2luZGV4IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImRlZiIsImdsb2JhbFRoaXMiLCJuYyIsInJlcXVpcmUiXSwic291cmNlUm9vdCI6IiJ9</pre></body></html>