From 39c5bea0afc28045d84540b10e793b65570426ed Mon Sep 17 00:00:00 2001 From: mustafauysal Date: Wed, 29 Jan 2020 19:24:30 +0300 Subject: [PATCH 1/5] Ajaxify facets --- assets/js/facets.js | 20 +++++++++++++ dist/js/facets-script.min.js | 4 +-- includes/classes/Feature/Facets/Facets.php | 33 +++++++++++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/assets/js/facets.js b/assets/js/facets.js index 2b097a870f..70ab768f5e 100644 --- a/assets/js/facets.js +++ b/assets/js/facets.js @@ -1,4 +1,5 @@ import jQuery from 'jquery'; +import { epfacets } from 'window'; import _ from 'underscores'; const facetTerms = document.querySelectorAll( '.widget_ep-facet .terms' ); @@ -25,3 +26,22 @@ jQuery( facetTerms ).on( 'keyup', '.facet-search', _.debounce( ( event ) => { } } ); }, 200 ) ); + +/** + * Ajaxify facets + */ +if( 1 === parseInt( epfacets.ajax_enabled ) && epfacets.selector && 0 < jQuery( epfacets.selector ).length ){ + jQuery( document ).on( 'click', '.term', function ( e ) { + e.preventDefault(); + const relPath = jQuery( this ).find( 'a' ).attr( 'href' ); + if( relPath ){ + const baseUrl = window.location.origin; + const targetUrl = baseUrl + relPath; + + jQuery.get( targetUrl, function ( data ) { + const elem = jQuery( data ).find( epfacets.selector ); + jQuery( epfacets.selector ).replaceWith( elem ); + } ); + } + } ); +} diff --git a/dist/js/facets-script.min.js b/dist/js/facets-script.min.js index 416e1c6174..3383a3162f 100644 --- a/dist/js/facets-script.min.js +++ b/dist/js/facets-script.min.js @@ -1,2 +1,2 @@ -!function(t){var r={};function n(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=r,n.d=function(t,r,e){n.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:e})},n.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,r){if(1&r&&(t=n(t)),8&r)return t;if(4&r&&"object"===typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(n.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var o in t)n.d(e,o,function(r){return t[r]}.bind(null,o));return e},n.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(r,"a",r),r},n.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},n.p="",n(n.s=292)}([,,function(t,r,n){(function(r){var n="object",e=function(t){return t&&t.Math==Math&&t};t.exports=e(typeof globalThis==n&&globalThis)||e(typeof window==n&&window)||e(typeof self==n&&self)||e(typeof r==n&&r)||Function("return this")()}).call(this,n(49))},,function(t,r){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,function(t,r){t.exports=jQuery},function(t,r){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,r,n){var e=n(4);t.exports=!e((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,r,n){var e=n(9),o=n(18),i=n(26);t.exports=e?function(t,r,n){return o.f(t,r,i(1,n))}:function(t,r,n){return t[r]=n,t}},function(t,r){var n={}.hasOwnProperty;t.exports=function(t,r){return n.call(t,r)}},function(t,r,n){var e=n(2),o=n(31).f,i=n(10),c=n(36),u=n(23),a=n(57),f=n(52);t.exports=function(t,r){var n,s,l,p,v,d=t.target,h=t.global,g=t.stat;if(n=h?e:g?e[d]||u(d,{}):(e[d]||{}).prototype)for(s in r){if(p=r[s],l=t.noTargetGet?(v=o(n,s))&&v.value:n[s],!f(h?s:d+(g?".":"#")+s,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(n,s,p,t)}}},function(t,r,n){var e=n(8);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,r,n){var e=n(2),o=n(23),i=n(54),c=e["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,r){return c[t]||(c[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,r){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,r,n){var e=n(2),o=n(15),i=n(34),c=n(61),u=e.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,r,n){var e=n(9),o=n(32),i=n(13),c=n(27),u=Object.defineProperty;r.f=e?u:function(t,r,n){if(i(t),r=c(r,!0),i(n),o)try{return u(t,r,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[r]=n.value),t}},function(t,r,n){var e=n(30),o=n(16);t.exports=function(t){return e(o(t))}},function(t,r,n){var e=n(22),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},,function(t,r){var n=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:n)(t)}},function(t,r,n){var e=n(2),o=n(10);t.exports=function(t,r){try{o(e,t,r)}catch(n){e[t]=r}return r}},function(t,r){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,r,n){var e=n(16);t.exports=function(t){return Object(e(t))}},function(t,r){t.exports=function(t,r){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:r}}},function(t,r,n){var e=n(8);t.exports=function(t,r){if(!e(t))return t;var n,o;if(r&&"function"==typeof(n=t.toString)&&!e(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!e(o=n.call(t)))return o;if(!r&&"function"==typeof(n=t.toString)&&!e(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,r){t.exports={}},function(t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,r,n){var e=n(4),o=n(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,r,n){var e=n(9),o=n(45),i=n(26),c=n(19),u=n(27),a=n(11),f=n(32),s=Object.getOwnPropertyDescriptor;r.f=e?s:function(t,r){if(t=c(t),r=u(r,!0),f)try{return s(t,r)}catch(t){}if(a(t,r))return i(!o.f.call(t,r),t[r])}},function(t,r,n){var e=n(9),o=n(4),i=n(38);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,r,n){var e=n(15);t.exports=e("native-function-to-string",Function.toString)},function(t,r){var n=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++n+e).toString(36)}},function(t,r,n){var e=n(11),o=n(19),i=n(46).indexOf,c=n(28);t.exports=function(t,r){var n,u=o(t),a=0,f=[];for(n in u)!e(c,n)&&e(u,n)&&f.push(n);for(;r.length>a;)e(u,n=r[a++])&&(~i(f,n)||f.push(n));return f}},function(t,r,n){var e=n(2),o=n(15),i=n(10),c=n(11),u=n(23),a=n(33),f=n(55),s=f.get,l=f.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,r,n,o){var a=!!o&&!!o.unsafe,f=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof n&&("string"!=typeof r||c(n,"name")||i(n,"name",r),l(n).source=p.join("string"==typeof r?r:"")),t!==e?(a?!s&&t[r]&&(f=!0):delete t[r],f?t[r]=n:i(t,r,n)):f?t[r]=n:u(r,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||a.call(this)}))},function(t,r,n){var e=n(59),o=n(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,r){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][r]||o[t]&&o[t][r]}},function(t,r,n){var e=n(2),o=n(8),i=e.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,r,n){var e=n(15),o=n(34),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,r,n){var e=n(22),o=Math.max,i=Math.min;t.exports=function(t,r){var n=e(t);return n<0?o(n+r,0):i(n,r)}},function(t,r,n){var e=n(8),o=n(42),i=n(17)("species");t.exports=function(t,r){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?e(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===r?0:r)}},function(t,r,n){var e=n(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},,function(t,r,n){var e=n(60),o=n(30),i=n(25),c=n(20),u=n(41),a=[].push,f=function(t){var r=1==t,n=2==t,f=3==t,s=4==t,l=6==t,p=5==t||l;return function(v,d,h,g){for(var y,x,b=i(v),m=o(b),S=e(d,h,3),O=c(m.length),w=0,E=g||u,j=r?E(v,O):n?E(v,0):void 0;O>w;w++)if((p||w in m)&&(x=S(y=m[w],w,b),t))if(r)j[w]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return w;case 2:a.call(j,y)}else if(s)return!1;return l?-1:f||s?s:j}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6)}},function(t,r,n){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);r.f=i?function(t){var r=o(this,t);return!!r&&r.enumerable}:e},function(t,r,n){var e=n(19),o=n(20),i=n(40),c=function(t){return function(r,n,c){var u,a=e(r),f=o(a.length),s=i(c,f);if(t&&n!=n){for(;f>s;)if((u=a[s++])!=u)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===n)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,r){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},,function(t,r){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"===typeof window&&(n=window)}t.exports=n},function(t,r,n){var e=n(35),o=n(29).concat("length","prototype");r.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},function(t,r){r.f=Object.getOwnPropertySymbols},function(t,r,n){var e=n(4),o=/#|\.prototype\./,i=function(t,r){var n=u[c(t)];return n==f||n!=a&&("function"==typeof r?e(r):!!r)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},,function(t,r){t.exports=!1},function(t,r,n){var e,o,i,c=n(56),u=n(2),a=n(8),f=n(10),s=n(11),l=n(39),p=n(28),v=u.WeakMap;if(c){var d=new v,h=d.get,g=d.has,y=d.set;e=function(t,r){return y.call(d,t,r),r},o=function(t){return h.call(d,t)||{}},i=function(t){return g.call(d,t)}}else{var x=l("state");p[x]=!0,e=function(t,r){return f(t,x,r),r},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(r){var n;if(!a(r)||(n=o(r)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return n}}}},function(t,r,n){var e=n(2),o=n(33),i=e.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,r,n){var e=n(11),o=n(58),i=n(31),c=n(18);t.exports=function(t,r){for(var n=o(r),u=c.f,a=i.f,f=0;f1&&i.call(c[0],n,(function(){for(f=1;fdocument.F=Object<\/script>"),t.close(),l=t.F;n--;)delete l.prototype[i[n]];return l()};t.exports=Object.create||function(t,r){var n;return null!==t?(s.prototype=e(t),n=new s,s.prototype=null,n[f]=t):n=l(),void 0===r?n:o(n,r)},c[f]=!0},function(t,r,n){var e=n(9),o=n(18),i=n(13),c=n(62);t.exports=e?Object.defineProperties:function(t,r){i(t);for(var n,e=c(r),u=e.length,a=0;u>a;)o.f(t,n=e[a++],r[n]);return t}},function(t,r,n){var e=n(37);t.exports=e("document","documentElement")},,function(t,r,n){"use strict";var e=n(13);t.exports=function(){var t=e(this),r="";return t.global&&(r+="g"),t.ignoreCase&&(r+="i"),t.multiline&&(r+="m"),t.dotAll&&(r+="s"),t.unicode&&(r+="u"),t.sticky&&(r+="y"),r}},,,,function(t,r,n){"use strict";var e=n(10),o=n(36),i=n(4),c=n(17),u=n(65),a=c("species"),f=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),s=!i((function(){var t=/(?:)/,r=t.exec;t.exec=function(){return r.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,r,n,l){var p=c(t),v=!i((function(){var r={};return r[p]=function(){return 7},7!=""[t](r)})),d=v&&!i((function(){var r=!1,n=/a/;return n.exec=function(){return r=!0,null},"split"===t&&(n.constructor={},n.constructor[a]=function(){return n}),n[p](""),!r}));if(!v||!d||"replace"===t&&!f||"split"===t&&!s){var h=/./[p],g=n(p,""[t],(function(t,r,n,e,o){return r.exec===u?v&&!o?{done:!0,value:h.call(r,n,e)}:{done:!0,value:t.call(n,r,e)}:{done:!1}})),y=g[0],x=g[1];o(String.prototype,t,y),o(RegExp.prototype,p,2==r?function(t,r){return x.call(t,this,r)}:function(t){return x.call(t,this)}),l&&e(RegExp.prototype[p],"sham",!0)}}},function(t,r,n){var e=n(24),o=n(65);t.exports=function(t,r){var n=t.exec;if("function"===typeof n){var i=n.call(t,r);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==e(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,r)}},,,,,,,function(t,r,n){"use strict";var e=n(12),o=n(65);e({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(t,r,n){"use strict";var e=n(80),o=n(13),i=n(25),c=n(20),u=n(22),a=n(16),f=n(90),s=n(81),l=Math.max,p=Math.min,v=Math.floor,d=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g;e("replace",2,(function(t,r,n){return[function(n,e){var o=a(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,e):r.call(String(o),n,e)},function(t,i){var a=n(r,t,this,i);if(a.done)return a.value;var v=o(t),d=String(this),h="function"===typeof i;h||(i=String(i));var g=v.global;if(g){var y=v.unicode;v.lastIndex=0}for(var x=[];;){var b=s(v,d);if(null===b)break;if(x.push(b),!g)break;""===String(b[0])&&(v.lastIndex=f(d,c(v.lastIndex),y))}for(var m,S="",O=0,w=0;w=O&&(S+=d.slice(O,j)+P,O=j+E.length)}return S+d.slice(O)}];function e(t,n,e,o,c,u){var a=e+t.length,f=o.length,s=h;return void 0!==c&&(c=i(c),s=d),r.call(u,s,(function(r,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return n.slice(0,e);case"'":return n.slice(a);case"<":u=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return r;if(s>f){var l=v(s/10);return 0===l?r:l<=f?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):r}u=o[s-1]}return void 0===u?"":u}))}}))},function(t,r,n){"use strict";var e=n(91).charAt;t.exports=function(t,r,n){return r+(n?e(t,r).length:1)}},function(t,r,n){var e=n(22),o=n(16),i=function(t){return function(r,n){var i,c,u=String(o(r)),a=e(n),f=u.length;return a<0||a>=f?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===f||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):i:t?u.slice(a,a+2):c-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,r,n){"use strict";var e=n(44).forEach,o=n(70);t.exports=o("forEach")?function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}:[].forEach},,,,,,,,,,,,,,,,,,,,,,function(t,r,n){var e=n(8),o=n(24),i=n(17)("match");t.exports=function(t){var r;return e(t)&&(void 0!==(r=t[i])?!!r:"RegExp"==o(t))}},function(t,r,n){"use strict";var e=n(12),o=n(92);e({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,r,n){var e=n(2),o=n(117),i=n(92),c=n(10);for(var u in o){var a=e[u],f=a&&a.prototype;if(f&&f.forEach!==i)try{c(f,"forEach",i)}catch(t){f.forEach=i}}},function(t,r){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,r){t.exports=_},,,,,,,,,,,,,,,,,,,,function(t,r,n){"use strict";n.r(r);n(115),n(293),n(88),n(294),n(89),n(116);var e=n(7),o=n.n(e),i=n(272),c=n.n(i),u=document.querySelectorAll(".widget_ep-facet .terms");o()(u).on("keyup",".facet-search",c.a.debounce((function(t){if(13!==t.keyCode){var r=t.currentTarget.value.replace(/\s/g,"").toLowerCase();t.delegateTarget.querySelectorAll(".term").forEach((function(t){var n=t.getAttribute("data-term-slug");t.getAttribute("data-term-name").includes(r)||n.includes(r)?t.classList.remove("hide"):t.classList.add("hide")}))}}),200))},function(t,r,n){"use strict";var e=n(12),o=n(46).includes,i=n(71);e({target:"Array",proto:!0},{includes:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")},function(t,r,n){"use strict";var e=n(12),o=n(295),i=n(16);e({target:"String",proto:!0,forced:!n(296)("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,r,n){var e=n(114);t.exports=function(t){if(e(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,r,n){var e=n(17)("match");t.exports=function(t){var r=/./;try{"/./"[t](r)}catch(n){try{return r[e]=!1,"/./"[t](r)}catch(t){}}return!1}}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYmluZC1jb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3Nsb3BweS1hcnJheS1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZmxhZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYWR2YW5jZS1zdHJpbmctaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1yZWdleHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiX1wiIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9mYWNldHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbm90LWEtcmVnZXhwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYy5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsImNoZWNrIiwiaXQiLCJNYXRoIiwiZ2xvYmFsVGhpcyIsIk8iLCJ3aW5kb3ciLCJzZWxmIiwiZ2xvYmFsIiwiRnVuY3Rpb24iLCJleGVjIiwiZXJyb3IiLCJqUXVlcnkiLCJmYWlscyIsImEiLCJERVNDUklQVE9SUyIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwiY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yIiwiZiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImhpZGUiLCJyZWRlZmluZSIsInNldEdsb2JhbCIsImNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMiLCJpc0ZvcmNlZCIsIm9wdGlvbnMiLCJzb3VyY2UiLCJ0YXJnZXQiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiZGVzY3JpcHRvciIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJub1RhcmdldEdldCIsImZvcmNlZCIsInVuZGVmaW5lZCIsInNoYW0iLCJpc09iamVjdCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIklTX1BVUkUiLCJzdG9yZSIsInB1c2giLCJ2ZXJzaW9uIiwiY29weXJpZ2h0Iiwic2hhcmVkIiwidWlkIiwiTkFUSVZFX1NZTUJPTCIsIklFOF9ET01fREVGSU5FIiwiYW5PYmplY3QiLCJ0b1ByaW1pdGl2ZSIsIm5hdGl2ZURlZmluZVByb3BlcnR5IiwiUCIsIkF0dHJpYnV0ZXMiLCJJbmRleGVkT2JqZWN0IiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsInRvSW50ZWdlciIsIm1pbiIsImFyZ3VtZW50IiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJ0b1N0cmluZyIsInNsaWNlIiwiYml0bWFwIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpbnB1dCIsIlBSRUZFUlJFRF9TVFJJTkciLCJmbiIsInZhbCIsInZhbHVlT2YiLCJjbGFzc29mIiwic3BsaXQiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlIiwidG9JbmRleGVkT2JqZWN0IiwiaGFzIiwibmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3JlYXRlRWxlbWVudCIsImlkIiwicG9zdGZpeCIsInJhbmRvbSIsImluZGV4T2YiLCJoaWRkZW5LZXlzIiwibmFtZXMiLCJyZXN1bHQiLCJsZW5ndGgiLCJuYXRpdmVGdW5jdGlvblRvU3RyaW5nIiwiSW50ZXJuYWxTdGF0ZU1vZHVsZSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsImVuZm9yY2UiLCJURU1QTEFURSIsInVuc2FmZSIsInNpbXBsZSIsImpvaW4iLCJ0aGlzIiwicGF0aCIsImFGdW5jdGlvbiIsInZhcmlhYmxlIiwibmFtZXNwYWNlIiwibWV0aG9kIiwiYXJndW1lbnRzIiwiZG9jdW1lbnQiLCJFWElTVFMiLCJrZXlzIiwibWF4IiwiaW5kZXgiLCJpbnRlZ2VyIiwiaXNBcnJheSIsIlNQRUNJRVMiLCJ3ZWxsS25vd25TeW1ib2wiLCJvcmlnaW5hbEFycmF5IiwiQyIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJhcmciLCJ0b09iamVjdCIsInRvTGVuZ3RoIiwiYXJyYXlTcGVjaWVzQ3JlYXRlIiwiY3JlYXRlTWV0aG9kIiwiVFlQRSIsIklTX01BUCIsIklTX0ZJTFRFUiIsIklTX1NPTUUiLCJJU19FVkVSWSIsIklTX0ZJTkRfSU5ERVgiLCJOT19IT0xFUyIsIiR0aGlzIiwiY2FsbGJhY2tmbiIsInRoYXQiLCJzcGVjaWZpY0NyZWF0ZSIsImJvdW5kRnVuY3Rpb24iLCJmb3JFYWNoIiwibWFwIiwiZmlsdGVyIiwic29tZSIsImV2ZXJ5IiwiZmluZCIsImZpbmRJbmRleCIsIm5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTkFTSE9STl9CVUciLCIxIiwiViIsInRvQWJzb2x1dGVJbmRleCIsIklTX0lOQ0xVREVTIiwiZWwiLCJmcm9tSW5kZXgiLCJpbmNsdWRlcyIsImciLCJlIiwiaW50ZXJuYWxPYmplY3RLZXlzIiwiY29uY2F0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsImRhdGEiLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInNldCIsIk5BVElWRV9XRUFLX01BUCIsIm9iamVjdEhhcyIsInNoYXJlZEtleSIsIldlYWtNYXAiLCJ3bWdldCIsIndtaGFzIiwid21zZXQiLCJtZXRhZGF0YSIsIlNUQVRFIiwiZ2V0dGVyRm9yIiwic3RhdGUiLCJ0eXBlIiwidGVzdCIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUiLCJnZXRCdWlsdEluIiwiZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSIsImdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSIsImIiLCJhcHBseSIsImVudW1CdWdLZXlzIiwicmVnZXhwRmxhZ3MiLCJuYXRpdmVFeGVjIiwiUmVnRXhwIiwibmF0aXZlUmVwbGFjZSIsInBhdGNoZWRFeGVjIiwiVVBEQVRFU19MQVNUX0lOREVYX1dST05HIiwicmUxIiwicmUyIiwibGFzdEluZGV4IiwiTlBDR19JTkNMVURFRCIsInN0ciIsInJlQ29weSIsIm1hdGNoIiwicmUiLCJNRVRIT0RfTkFNRSIsIlVOU0NPUEFCTEVTIiwiQXJyYXlQcm90b3R5cGUiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaHRtbCIsImRvY3VtZW50Q3JlYXRlRWxlbWVudCIsIklFX1BST1RPIiwiRW1wdHkiLCJjcmVhdGVEaWN0IiwiaWZyYW1lRG9jdW1lbnQiLCJpZnJhbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJhcHBlbmRDaGlsZCIsInNyYyIsImNvbnRlbnRXaW5kb3ciLCJvcGVuIiwid3JpdGUiLCJsdCIsImNsb3NlIiwiRiIsIlByb3BlcnRpZXMiLCJvYmplY3RLZXlzIiwiaWdub3JlQ2FzZSIsIm11bHRpbGluZSIsImRvdEFsbCIsInVuaWNvZGUiLCJzdGlja3kiLCJyZWdleHBFeGVjIiwiUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMiLCJncm91cHMiLCJTUExJVF9XT1JLU19XSVRIX09WRVJXUklUVEVOX0VYRUMiLCJvcmlnaW5hbEV4ZWMiLCJLRVkiLCJTWU1CT0wiLCJERUxFR0FURVNfVE9fU1lNQk9MIiwiREVMRUdBVEVTX1RPX0VYRUMiLCJleGVjQ2FsbGVkIiwibmF0aXZlUmVnRXhwTWV0aG9kIiwibWV0aG9kcyIsIm5hdGl2ZU1ldGhvZCIsInJlZ2V4cCIsImFyZzIiLCJmb3JjZVN0cmluZ01ldGhvZCIsImRvbmUiLCJzdHJpbmdNZXRob2QiLCJyZWdleE1ldGhvZCIsIlIiLCJTIiwiJCIsInByb3RvIiwiZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMiLCJhZHZhbmNlU3RyaW5nSW5kZXgiLCJyZWdFeHBFeGVjIiwiU1VCU1RJVFVUSU9OX1NZTUJPTFMiLCJTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCIsIlJFUExBQ0UiLCJtYXliZUNhbGxOYXRpdmUiLCJzZWFyY2hWYWx1ZSIsInJlcGxhY2VWYWx1ZSIsInJlcGxhY2VyIiwicmVzIiwicngiLCJmdW5jdGlvbmFsUmVwbGFjZSIsImZ1bGxVbmljb2RlIiwicmVzdWx0cyIsImFjY3VtdWxhdGVkUmVzdWx0IiwibmV4dFNvdXJjZVBvc2l0aW9uIiwibWF0Y2hlZCIsInBvc2l0aW9uIiwiY2FwdHVyZXMiLCJqIiwibmFtZWRDYXB0dXJlcyIsInJlcGxhY2VyQXJncyIsImdldFN1YnN0aXR1dGlvbiIsInRhaWxQb3MiLCJzeW1ib2xzIiwiY2giLCJjYXB0dXJlIiwiY2hhckF0IiwiQ09OVkVSVF9UT19TVFJJTkciLCJwb3MiLCJmaXJzdCIsInNlY29uZCIsInNpemUiLCJjaGFyQ29kZUF0IiwiY29kZUF0IiwiJGZvckVhY2giLCJzbG9wcHlBcnJheU1ldGhvZCIsIk1BVENIIiwiaXNSZWdFeHAiLCJET01JdGVyYWJsZXMiLCJDT0xMRUNUSU9OX05BTUUiLCJDb2xsZWN0aW9uIiwiQ29sbGVjdGlvblByb3RvdHlwZSIsIkNTU1J1bGVMaXN0IiwiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsIkNTU1ZhbHVlTGlzdCIsIkNsaWVudFJlY3RMaXN0IiwiRE9NUmVjdExpc3QiLCJET01TdHJpbmdMaXN0IiwiRE9NVG9rZW5MaXN0IiwiRGF0YVRyYW5zZmVySXRlbUxpc3QiLCJGaWxlTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiXyIsImZhY2V0VGVybXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwib24iLCJkZWJvdW5jZSIsImV2ZW50Iiwia2V5Q29kZSIsInNlYXJjaFRlcm0iLCJjdXJyZW50VGFyZ2V0IiwiZGVsZWdhdGVUYXJnZXQiLCJ0ZXJtIiwic2x1ZyIsImdldEF0dHJpYnV0ZSIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsIiRpbmNsdWRlcyIsImFkZFRvVW5zY29wYWJsZXMiLCJub3RBUmVnRXhwIiwiY29ycmVjdElzUmVnRXhwTG9naWMiLCJzZWFyY2hTdHJpbmciXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQUtmRixFQUFvQlEsRUFBSUYsRUFHeEJOLEVBQW9CUyxFQUFJVixFQUd4QkMsRUFBb0JVLEVBQUksU0FBU1IsRUFBU1Ms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RUFBUSxJQUkvQjlGLEVBQUUsQ0FBRWxPLE9BQVEsUUFBU21PLE9BQU8sR0FBUSxDQUNsQ3ZHLFNBQVUsU0FBa0JGLEdBQzFCLE9BQU9xTSxFQUFVdlAsS0FBTWtELEVBQUk1QyxVQUFVaEIsT0FBUyxFQUFJZ0IsVUFBVSxRQUFLcEUsTUFLckVzVCxFQUFpQixhLDZCQ2JqQixJQUFJOUYsRUFBSSxFQUFRLElBQ1orRixFQUFhLEVBQVEsS0FDckJuUyxFQUF5QixFQUFRLElBS3JDb00sRUFBRSxDQUFFbE8sT0FBUSxTQUFVbU8sT0FBTyxFQUFNMU4sUUFKUixFQUFRLElBSVN5VCxDQUFxQixhQUFlLENBQzlFdE0sU0FBVSxTQUFrQnVNLEdBQzFCLFNBQVVyVCxPQUFPZ0IsRUFBdUIwQyxPQUNyQ2QsUUFBUXVRLEVBQVdFLEdBQWVyUCxVQUFVaEIsT0FBUyxFQUFJZ0IsVUFBVSxRQUFLcEUsTyxnQkNYL0UsSUFBSWlRLEVBQVcsRUFBUSxLQUV2QnRVLEVBQU9ELFFBQVUsU0FBVW1DLEdBQ3pCLEdBQUlvUyxFQUFTcFMsR0FDWCxNQUFNc0MsVUFBVSxpREFDaEIsT0FBT3RDLEksZ0JDTFgsSUFFSW1TLEVBRmtCLEVBQVEsR0FFbEJuTCxDQUFnQixTQUU1QmxKLEVBQU9ELFFBQVUsU0FBVTZPLEdBQ3pCLElBQUl5QyxFQUFTLElBQ2IsSUFDRSxNQUFNekMsR0FBYXlDLEdBQ25CLE1BQU81RixHQUNQLElBRUUsT0FEQTRGLEVBQU9nRCxJQUFTLEVBQ1QsTUFBTXpGLEdBQWF5QyxHQUMxQixNQUFPbk8sS0FDVCxPQUFPIiwiZmlsZSI6ImpzL2ZhY2V0cy1zY3JpcHQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDI5Mik7XG4iLCJ2YXIgTyA9ICdvYmplY3QnO1xudmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gTyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09IE8gJiYgd2luZG93KSB8fFxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSBPICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gTyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0galF1ZXJ5OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBGT1JDRUQsIHRhcmdldCwga2V5LCB0YXJnZXRQcm9wZXJ0eSwgc291cmNlUHJvcGVydHksIGRlc2NyaXB0b3I7XG4gIGlmIChHTE9CQUwpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWw7XG4gIH0gZWxzZSBpZiAoU1RBVElDKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsW1RBUkdFVF0gfHwgc2V0R2xvYmFsKFRBUkdFVCwge30pO1xuICB9IGVsc2Uge1xuICAgIHRhcmdldCA9IChnbG9iYWxbVEFSR0VUXSB8fCB7fSkucHJvdG90eXBlO1xuICB9XG4gIGlmICh0YXJnZXQpIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIHNvdXJjZVByb3BlcnR5ID0gc291cmNlW2tleV07XG4gICAgaWYgKG9wdGlvbnMubm9UYXJnZXRHZXQpIHtcbiAgICAgIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpO1xuICAgICAgdGFyZ2V0UHJvcGVydHkgPSBkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IudmFsdWU7XG4gICAgfSBlbHNlIHRhcmdldFByb3BlcnR5ID0gdGFyZ2V0W2tleV07XG4gICAgRk9SQ0VEID0gaXNGb3JjZWQoR0xPQkFMID8ga2V5IDogVEFSR0VUICsgKFNUQVRJQyA/ICcuJyA6ICcjJykgKyBrZXksIG9wdGlvbnMuZm9yY2VkKTtcbiAgICAvLyBjb250YWluZWQgaW4gdGFyZ2V0XG4gICAgaWYgKCFGT1JDRUQgJiYgdGFyZ2V0UHJvcGVydHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PT0gdHlwZW9mIHRhcmdldFByb3BlcnR5KSBjb250aW51ZTtcbiAgICAgIGNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMoc291cmNlUHJvcGVydHksIHRhcmdldFByb3BlcnR5KTtcbiAgICB9XG4gICAgLy8gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICAgIGlmIChvcHRpb25zLnNoYW0gfHwgKHRhcmdldFByb3BlcnR5ICYmIHRhcmdldFByb3BlcnR5LnNoYW0pKSB7XG4gICAgICBoaWRlKHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjIuMScsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwiLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG5cbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIHN0b3JlID0gc2hhcmVkKCd3a3MnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID0gTkFUSVZFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV1cbiAgICB8fCAoTkFUSVZFX1NZTUJPTCA/IFN5bWJvbCA6IHVpZCkoJ1N5bWJvbC4nICsgbmFtZSkpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlJyk7XG5cbnZhciBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlRGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyKGFyZ3VtZW50KSwgMHgxRkZGRkZGRkZGRkZGRikgOiAwOyAvLyAyICoqIDUzIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGhpZGUoZ2xvYmFsLCBrZXksIHZhbHVlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChiaXRtYXAsIHZhbHVlKSB7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSxcbiAgICBjb25maWd1cmFibGU6ICEoYml0bWFwICYgMiksXG4gICAgd3JpdGFibGU6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWU6IHZhbHVlXG4gIH07XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9wcmltaXRpdmVcbi8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlXG4vLyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCAtIGZsYWcgLSBwcmVmZXJyZWQgdHlwZSBpcyBhIHN0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIFBSRUZFUlJFRF9TVFJJTkcpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkpIHJldHVybiBpbnB1dDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmIChQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAodHlwZW9mIChmbiA9IGlucHV0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKCFQUkVGRVJSRURfU1RSSU5HICYmIHR5cGVvZiAoZm4gPSBpbnB1dC50b1N0cmluZykgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgc3BsaXQgPSAnJy5zcGxpdDtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgcmV0dXJuICFPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKTtcbn0pID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBjbGFzc29mKGl0KSA9PSAnU3RyaW5nJyA/IHNwbGl0LmNhbGwoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYXJlZCgnbmF0aXZlLWZ1bmN0aW9uLXRvLXN0cmluZycsIEZ1bmN0aW9uLnRvU3RyaW5nKTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgaW5kZXhPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluZGV4T2Y7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWVzKSB7XG4gIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KG9iamVjdCk7XG4gIHZhciBpID0gMDtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB2YXIga2V5O1xuICBmb3IgKGtleSBpbiBPKSAhaGFzKGhpZGRlbktleXMsIGtleSkgJiYgaGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgaWYgKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSkge1xuICAgIH5pbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcobmF0aXZlRnVuY3Rpb25Ub1N0cmluZykuc3BsaXQoJ3RvU3RyaW5nJyk7XG5cbnNoYXJlZCgnaW5zcGVjdFNvdXJjZScsIGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKGl0KTtcbn0pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTywga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICB2YXIgdW5zYWZlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy51bnNhZmUgOiBmYWxzZTtcbiAgdmFyIHNpbXBsZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMuZW51bWVyYWJsZSA6IGZhbHNlO1xuICB2YXIgbm9UYXJnZXRHZXQgPSBvcHRpb25zID8gISFvcHRpb25zLm5vVGFyZ2V0R2V0IDogZmFsc2U7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnICYmICFoYXModmFsdWUsICduYW1lJykpIGhpZGUodmFsdWUsICduYW1lJywga2V5KTtcbiAgICBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSkuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICB9XG4gIGlmIChPID09PSBnbG9iYWwpIHtcbiAgICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIHNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICByZXR1cm47XG4gIH0gZWxzZSBpZiAoIXVuc2FmZSkge1xuICAgIGRlbGV0ZSBPW2tleV07XG4gIH0gZWxzZSBpZiAoIW5vVGFyZ2V0R2V0ICYmIE9ba2V5XSkge1xuICAgIHNpbXBsZSA9IHRydWU7XG4gIH1cbiAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gIGVsc2UgaGlkZShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKHRoaXMpO1xufSk7XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBIZWxwZXIgZm9yIGEgcG9wdWxhciByZXBlYXRpbmcgY2FzZSBvZiB0aGUgc3BlYzpcbi8vIExldCBpbnRlZ2VyIGJlID8gVG9JbnRlZ2VyKGluZGV4KS5cbi8vIElmIGludGVnZXIgPCAwLCBsZXQgcmVzdWx0IGJlIG1heCgobGVuZ3RoICsgaW50ZWdlciksIDApOyBlbHNlIGxldCByZXN1bHQgYmUgbWluKGxlbmd0aCwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW50ZWdlciA8IDAgPyBtYXgoaW50ZWdlciArIGxlbmd0aCwgMCkgOiBtaW4oaW50ZWdlciwgbGVuZ3RoKTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIG5ldyAoQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pc2FycmF5XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gaXNBcnJheShhcmcpIHtcbiAgcmV0dXJuIGNsYXNzb2YoYXJnKSA9PSAnQXJyYXknO1xufTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2JpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZm9yRWFjaCwgbWFwLCBmaWx0ZXIsIHNvbWUsIGV2ZXJ5LCBmaW5kLCBmaW5kSW5kZXggfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHZhciBJU19NQVAgPSBUWVBFID09IDE7XG4gIHZhciBJU19GSUxURVIgPSBUWVBFID09IDI7XG4gIHZhciBJU19TT01FID0gVFlQRSA9PSAzO1xuICB2YXIgSVNfRVZFUlkgPSBUWVBFID09IDQ7XG4gIHZhciBJU19GSU5EX0lOREVYID0gVFlQRSA9PSA2O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCwgc3BlY2lmaWNDcmVhdGUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY3JlYXRlID0gc3BlY2lmaWNDcmVhdGUgfHwgYXJyYXlTcGVjaWVzQ3JlYXRlO1xuICAgIHZhciB0YXJnZXQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSwgcmVzdWx0O1xuICAgIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZikge1xuICAgICAgdmFsdWUgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlc3VsdCA9IGJvdW5kRnVuY3Rpb24odmFsdWUsIGluZGV4LCBPKTtcbiAgICAgIGlmIChUWVBFKSB7XG4gICAgICAgIGlmIChJU19NQVApIHRhcmdldFtpbmRleF0gPSByZXN1bHQ7IC8vIG1hcFxuICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgMzogcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAvLyBzb21lXG4gICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsdWU7ICAgICAgICAgICAgIC8vIGZpbmRcbiAgICAgICAgICBjYXNlIDY6IHJldHVybiBpbmRleDsgICAgICAgICAgICAgLy8gZmluZEluZGV4XG4gICAgICAgICAgY2FzZSAyOiBwdXNoLmNhbGwodGFyZ2V0LCB2YWx1ZSk7IC8vIGZpbHRlclxuICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7ICAvLyBldmVyeVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG4gIGZvckVhY2g6IGNyZWF0ZU1ldGhvZCgwKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4gIG1hcDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlcmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb21lXG4gIHNvbWU6IGNyZWF0ZU1ldGhvZCgzKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5ldmVyeWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5ldmVyeVxuICBldmVyeTogY3JlYXRlTWV0aG9kKDQpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFxuICBmaW5kSW5kZXg6IGNyZWF0ZU1ldGhvZCg2KVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGVgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JbmRleGVkT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4gIGluZGV4T2Y6IGNyZWF0ZU1ldGhvZChmYWxzZSlcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1xufSBjYXRjaCAoZSkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJvYmplY3RcIikgZyA9IHdpbmRvdztcbn1cblxuLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLlxuLy8gV2UgcmV0dXJuIHVuZGVmaW5lZCwgaW5zdGVhZCBvZiBub3RoaW5nIGhlcmUsIHNvIGl0J3Ncbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cblxubW9kdWxlLmV4cG9ydHMgPSBnO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxudmFyIGhpZGRlbktleXMgPSBlbnVtQnVnS2V5cy5jb25jYXQoJ2xlbmd0aCcsICdwcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG5leHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07XG4iLCJleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZhbHNlO1xuIiwidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG52YXIgb2JqZWN0SGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCkge1xuICB2YXIgc3RvcmUgPSBuZXcgV2Vha01hcCgpO1xuICB2YXIgd21nZXQgPSBzdG9yZS5nZXQ7XG4gIHZhciB3bWhhcyA9IHN0b3JlLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUuc2V0O1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgd21zZXQuY2FsbChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcy5jYWxsKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGhpZGUoaXQsIFNUQVRFLCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSkgPyBpdFtTVEFURV0gOiB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc2V0OiBzZXQsXG4gIGdldDogZ2V0LFxuICBoYXM6IGhhcyxcbiAgZW5mb3JjZTogZW5mb3JjZSxcbiAgZ2V0dGVyRm9yOiBnZXR0ZXJGb3Jcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcuY2FsbChXZWFrTWFwKSk7XG4iLCJ2YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIG93bktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb3duLWtleXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXModGFyZ2V0LCBrZXkpKSBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gIH1cbn07XG4iLCJ2YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBnZXRCdWlsdEluKCdSZWZsZWN0JywgJ293bktleXMnKSB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbiIsInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICByZXR1cm4gIVN0cmluZyhTeW1ib2woKSk7XG59KTtcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEZsYWdzID0gcmVxdWlyZSgnLi9yZWdleHAtZmxhZ3MnKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwocmUsIHN0cik7XG5cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhbWV0aG9kIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgaGlkZShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIGNyZWF0ZShudWxsKSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgc2NyaXB0ID0gJ3NjcmlwdCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGpzID0gJ2phdmEnICsgc2NyaXB0ICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoanMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgc2NyaXB0ICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnLycgKyBzY3JpcHQgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgfVxuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIHZhciBzdHJpbmdNZXRob2QgPSBtZXRob2RzWzBdO1xuICAgIHZhciByZWdleE1ldGhvZCA9IG1ldGhvZHNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmluZ01ldGhvZCk7XG4gICAgcmVkZWZpbmUoUmVnRXhwLnByb3RvdHlwZSwgU1lNQk9MLCBsZW5ndGggPT0gMlxuICAgICAgLy8gMjEuMi41LjggUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdKHN0cmluZywgcmVwbGFjZVZhbHVlKVxuICAgICAgLy8gMjEuMi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdClcbiAgICAgID8gZnVuY3Rpb24gKHN0cmluZywgYXJnKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJlZ2V4TWV0aG9kLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gICAgaWYgKHNoYW0pIGhpZGUoUmVnRXhwLnByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xuICB9XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL2NsYXNzb2YtcmF3Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vcmVnZXhwLWV4ZWMnKTtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKHR5cGVvZiBleGVjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbChSLCBTKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbiAgfVxuXG4gIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG59O1xuXG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBleGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbiQoeyB0YXJnZXQ6ICdSZWdFeHAnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAvLi8uZXhlYyAhPT0gZXhlYyB9LCB7XG4gIGV4ZWM6IGV4ZWNcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgYWR2YW5jZVN0cmluZ0luZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4Jyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkXFxkP3w8W14+XSo+KS9nO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTX05PX05BTUVEID0gL1xcJChbJCYnYF18XFxkXFxkPykvZztcblxudmFyIG1heWJlVG9TdHJpbmcgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyBpdCA6IFN0cmluZyhpdCk7XG59O1xuXG4vLyBAQHJlcGxhY2UgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdyZXBsYWNlJywgMiwgZnVuY3Rpb24gKFJFUExBQ0UsIG5hdGl2ZVJlcGxhY2UsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUucmVwbGFjZVxuICAgIGZ1bmN0aW9uIHJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHJlcGxhY2VyID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VhcmNoVmFsdWVbUkVQTEFDRV07XG4gICAgICByZXR1cm4gcmVwbGFjZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHJlcGxhY2VyLmNhbGwoc2VhcmNoVmFsdWUsIE8sIHJlcGxhY2VWYWx1ZSlcbiAgICAgICAgOiBuYXRpdmVSZXBsYWNlLmNhbGwoU3RyaW5nKE8pLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEByZXBsYWNlXG4gICAgZnVuY3Rpb24gKHJlZ2V4cCwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgcmVzID0gbWF5YmVDYWxsTmF0aXZlKG5hdGl2ZVJlcGxhY2UsIHJlZ2V4cCwgdGhpcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgIGlmIChyZXMuZG9uZSkgcmV0dXJuIHJlcy52YWx1ZTtcblxuICAgICAgdmFyIHJ4ID0gYW5PYmplY3QocmVnZXhwKTtcbiAgICAgIHZhciBTID0gU3RyaW5nKHRoaXMpO1xuXG4gICAgICB2YXIgZnVuY3Rpb25hbFJlcGxhY2UgPSB0eXBlb2YgcmVwbGFjZVZhbHVlID09PSAnZnVuY3Rpb24nO1xuICAgICAgaWYgKCFmdW5jdGlvbmFsUmVwbGFjZSkgcmVwbGFjZVZhbHVlID0gU3RyaW5nKHJlcGxhY2VWYWx1ZSk7XG5cbiAgICAgIHZhciBnbG9iYWwgPSByeC5nbG9iYWw7XG4gICAgICBpZiAoZ2xvYmFsKSB7XG4gICAgICAgIHZhciBmdWxsVW5pY29kZSA9IHJ4LnVuaWNvZGU7XG4gICAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB9XG4gICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlZ0V4cEV4ZWMocngsIFMpO1xuICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsKSBicmVhaztcblxuICAgICAgICByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICAgICAgaWYgKCFnbG9iYWwpIGJyZWFrO1xuXG4gICAgICAgIHZhciBtYXRjaFN0ciA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBpZiAobWF0Y2hTdHIgPT09ICcnKSByeC5sYXN0SW5kZXggPSBhZHZhbmNlU3RyaW5nSW5kZXgoUywgdG9MZW5ndGgocngubGFzdEluZGV4KSwgZnVsbFVuaWNvZGUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgYWNjdW11bGF0ZWRSZXN1bHQgPSAnJztcbiAgICAgIHZhciBuZXh0U291cmNlUG9zaXRpb24gPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdHNbaV07XG5cbiAgICAgICAgdmFyIG1hdGNoZWQgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgdmFyIHBvc2l0aW9uID0gbWF4KG1pbih0b0ludGVnZXIocmVzdWx0LmluZGV4KSwgUy5sZW5ndGgpLCAwKTtcbiAgICAgICAgdmFyIGNhcHR1cmVzID0gW107XG4gICAgICAgIC8vIE5PVEU6IFRoaXMgaXMgZXF1aXZhbGVudCB0b1xuICAgICAgICAvLyAgIGNhcHR1cmVzID0gcmVzdWx0LnNsaWNlKDEpLm1hcChtYXliZVRvU3RyaW5nKVxuICAgICAgICAvLyBidXQgZm9yIHNvbWUgcmVhc29uIGBuYXRpdmVTbGljZS5jYWxsKHJlc3VsdCwgMSwgcmVzdWx0Lmxlbmd0aClgIChjYWxsZWQgaW5cbiAgICAgICAgLy8gdGhlIHNsaWNlIHBvbHlmaWxsIHdoZW4gc2xpY2luZyBuYXRpdmUgYXJyYXlzKSBcImRvZXNuJ3Qgd29ya1wiIGluIHNhZmFyaSA5IGFuZFxuICAgICAgICAvLyBjYXVzZXMgYSBjcmFzaCAoaHR0cHM6Ly9wYXN0ZWJpbi5jb20vTjIxUXplUUEpIHdoZW4gdHJ5aW5nIHRvIGRlYnVnIGl0LlxuICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IHJlc3VsdC5sZW5ndGg7IGorKykgY2FwdHVyZXMucHVzaChtYXliZVRvU3RyaW5nKHJlc3VsdFtqXSkpO1xuICAgICAgICB2YXIgbmFtZWRDYXB0dXJlcyA9IHJlc3VsdC5ncm91cHM7XG4gICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkge1xuICAgICAgICAgIHZhciByZXBsYWNlckFyZ3MgPSBbbWF0Y2hlZF0uY29uY2F0KGNhcHR1cmVzLCBwb3NpdGlvbiwgUyk7XG4gICAgICAgICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkgcmVwbGFjZXJBcmdzLnB1c2gobmFtZWRDYXB0dXJlcyk7XG4gICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gU3RyaW5nKHJlcGxhY2VWYWx1ZS5hcHBseSh1bmRlZmluZWQsIHJlcGxhY2VyQXJncykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcGxhY2VtZW50ID0gZ2V0U3Vic3RpdHV0aW9uKG1hdGNoZWQsIFMsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZVZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocG9zaXRpb24gPj0gbmV4dFNvdXJjZVBvc2l0aW9uKSB7XG4gICAgICAgICAgYWNjdW11bGF0ZWRSZXN1bHQgKz0gUy5zbGljZShuZXh0U291cmNlUG9zaXRpb24sIHBvc2l0aW9uKSArIHJlcGxhY2VtZW50O1xuICAgICAgICAgIG5leHRTb3VyY2VQb3NpdGlvbiA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2N1bXVsYXRlZFJlc3VsdCArIFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uKTtcbiAgICB9XG4gIF07XG5cbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZ2V0c3Vic3RpdHV0aW9uXG4gIGZ1bmN0aW9uIGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBzdHIsIHBvc2l0aW9uLCBjYXB0dXJlcywgbmFtZWRDYXB0dXJlcywgcmVwbGFjZW1lbnQpIHtcbiAgICB2YXIgdGFpbFBvcyA9IHBvc2l0aW9uICsgbWF0Y2hlZC5sZW5ndGg7XG4gICAgdmFyIG0gPSBjYXB0dXJlcy5sZW5ndGg7XG4gICAgdmFyIHN5bWJvbHMgPSBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRDtcbiAgICBpZiAobmFtZWRDYXB0dXJlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuYW1lZENhcHR1cmVzID0gdG9PYmplY3QobmFtZWRDYXB0dXJlcyk7XG4gICAgICBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFM7XG4gICAgfVxuICAgIHJldHVybiBuYXRpdmVSZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICAgIHZhciBjYXB0dXJlO1xuICAgICAgc3dpdGNoIChjaC5jaGFyQXQoMCkpIHtcbiAgICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICAgIGNhc2UgJyYnOiByZXR1cm4gbWF0Y2hlZDtcbiAgICAgICAgY2FzZSAnYCc6IHJldHVybiBzdHIuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBjYXB0dXJlID0gbmFtZWRDYXB0dXJlc1tjaC5zbGljZSgxLCAtMSldO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OiAvLyBcXGRcXGQ/XG4gICAgICAgICAgdmFyIG4gPSArY2g7XG4gICAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgICBpZiAobiA+IG0pIHtcbiAgICAgICAgICAgIHZhciBmID0gZmxvb3IobiAvIDEwKTtcbiAgICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICBpZiAoZiA8PSBtKSByZXR1cm4gY2FwdHVyZXNbZiAtIDFdID09PSB1bmRlZmluZWQgPyBjaC5jaGFyQXQoMSkgOiBjYXB0dXJlc1tmIC0gMV0gKyBjaC5jaGFyQXQoMSk7XG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhcHR1cmUgPSBjYXB0dXJlc1tuIC0gMV07XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICAgIH0pO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hZHZhbmNlc3RyaW5naW5kZXhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFMsIGluZGV4LCB1bmljb2RlKSB7XG4gIHJldHVybiBpbmRleCArICh1bmljb2RlID8gY2hhckF0KFMsIGluZGV4KS5sZW5ndGggOiAxKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IGNvZGVQb2ludEF0LCBhdCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICAgID8gQ09OVkVSVF9UT19TVFJJTkcgPyBTLmNoYXJBdChwb3NpdGlvbikgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HID8gUy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyAyKSA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0XG4gIGNvZGVBdDogY3JlYXRlTWV0aG9kKGZhbHNlKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuYXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9TdHJpbmcucHJvdG90eXBlLmF0XG4gIGNoYXJBdDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbicpLmZvckVhY2g7XG52YXIgc2xvcHB5QXJyYXlNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2xvcHB5LWFycmF5LW1ldGhvZCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbm1vZHVsZS5leHBvcnRzID0gc2xvcHB5QXJyYXlNZXRob2QoJ2ZvckVhY2gnKSA/IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbn0gOiBbXS5mb3JFYWNoO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIE1BVENIID0gd2VsbEtub3duU3ltYm9sKCdtYXRjaCcpO1xuXG4vLyBgSXNSZWdFeHBgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtaXNyZWdleHBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNsYXNzb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZm9yZWFjaFxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogW10uZm9yRWFjaCAhPSBmb3JFYWNoIH0sIHtcbiAgZm9yRWFjaDogZm9yRWFjaFxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERPTUl0ZXJhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb20taXRlcmFibGVzJyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG5mb3IgKHZhciBDT0xMRUNUSU9OX05BTUUgaW4gRE9NSXRlcmFibGVzKSB7XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uUHJvdG90eXBlID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgLy8gc29tZSBDaHJvbWUgdmVyc2lvbnMgaGF2ZSBub24tY29uZmlndXJhYmxlIG1ldGhvZHMgb24gRE9NVG9rZW5MaXN0XG4gIGlmIChDb2xsZWN0aW9uUHJvdG90eXBlICYmIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCAhPT0gZm9yRWFjaCkgdHJ5IHtcbiAgICBoaWRlKENvbGxlY3Rpb25Qcm90b3R5cGUsICdmb3JFYWNoJywgZm9yRWFjaCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgQ29sbGVjdGlvblByb3RvdHlwZS5mb3JFYWNoID0gZm9yRWFjaDtcbiAgfVxufVxuIiwiLy8gaXRlcmFibGUgRE9NIGNvbGxlY3Rpb25zXG4vLyBmbGFnIC0gYGl0ZXJhYmxlYCBpbnRlcmZhY2UgLSAnZW50cmllcycsICdrZXlzJywgJ3ZhbHVlcycsICdmb3JFYWNoJyBtZXRob2RzXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQ1NTUnVsZUxpc3Q6IDAsXG4gIENTU1N0eWxlRGVjbGFyYXRpb246IDAsXG4gIENTU1ZhbHVlTGlzdDogMCxcbiAgQ2xpZW50UmVjdExpc3Q6IDAsXG4gIERPTVJlY3RMaXN0OiAwLFxuICBET01TdHJpbmdMaXN0OiAwLFxuICBET01Ub2tlbkxpc3Q6IDEsXG4gIERhdGFUcmFuc2Zlckl0ZW1MaXN0OiAwLFxuICBGaWxlTGlzdDogMCxcbiAgSFRNTEFsbENvbGxlY3Rpb246IDAsXG4gIEhUTUxDb2xsZWN0aW9uOiAwLFxuICBIVE1MRm9ybUVsZW1lbnQ6IDAsXG4gIEhUTUxTZWxlY3RFbGVtZW50OiAwLFxuICBNZWRpYUxpc3Q6IDAsXG4gIE1pbWVUeXBlQXJyYXk6IDAsXG4gIE5hbWVkTm9kZU1hcDogMCxcbiAgTm9kZUxpc3Q6IDEsXG4gIFBhaW50UmVxdWVzdExpc3Q6IDAsXG4gIFBsdWdpbjogMCxcbiAgUGx1Z2luQXJyYXk6IDAsXG4gIFNWR0xlbmd0aExpc3Q6IDAsXG4gIFNWR051bWJlckxpc3Q6IDAsXG4gIFNWR1BhdGhTZWdMaXN0OiAwLFxuICBTVkdQb2ludExpc3Q6IDAsXG4gIFNWR1N0cmluZ0xpc3Q6IDAsXG4gIFNWR1RyYW5zZm9ybUxpc3Q6IDAsXG4gIFNvdXJjZUJ1ZmZlckxpc3Q6IDAsXG4gIFN0eWxlU2hlZXRMaXN0OiAwLFxuICBUZXh0VHJhY2tDdWVMaXN0OiAwLFxuICBUZXh0VHJhY2tMaXN0OiAwLFxuICBUb3VjaExpc3Q6IDBcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IF87IiwiaW1wb3J0IGpRdWVyeSBmcm9tICdqcXVlcnknO1xuaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZXMnO1xuXG5jb25zdCBmYWNldFRlcm1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCggJy53aWRnZXRfZXAtZmFjZXQgLnRlcm1zJyApO1xuXG4vKipcbiAqIERyaWxsIGRvd24gZmFjZXQgY2hvaWNlc1xuICovXG5qUXVlcnkoIGZhY2V0VGVybXMgKS5vbiggJ2tleXVwJywgJy5mYWNldC1zZWFyY2gnLCBfLmRlYm91bmNlKCAoIGV2ZW50ICkgPT4ge1xuXHRpZiAoIDEzID09PSBldmVudC5rZXlDb2RlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHNlYXJjaFRlcm0gPSBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlLnJlcGxhY2UoIC9cXHMvZywgJycgKS50b0xvd2VyQ2FzZSgpO1xuXHRjb25zdCB0ZXJtcyA9IGV2ZW50LmRlbGVnYXRlVGFyZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoICcudGVybScgKTtcblxuXHR0ZXJtcy5mb3JFYWNoKCAoIHRlcm0gKSA9PiB7XG5cdFx0Y29uc3Qgc2x1ZyA9IHRlcm0uZ2V0QXR0cmlidXRlKCAnZGF0YS10ZXJtLXNsdWcnICk7XG5cdFx0Y29uc3QgbmFtZSA9IHRlcm0uZ2V0QXR0cmlidXRlKCAnZGF0YS10ZXJtLW5hbWUnICk7XG5cblx0XHRpZiAoIG5hbWUuaW5jbHVkZXMoIHNlYXJjaFRlcm0gKSB8fCBzbHVnLmluY2x1ZGVzKCBzZWFyY2hUZXJtICkgKSB7XG5cdFx0XHR0ZXJtLmNsYXNzTGlzdC5yZW1vdmUoICdoaWRlJyApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0ZXJtLmNsYXNzTGlzdC5hZGQoICdoaWRlJyApO1xuXHRcdH1cblx0fSApO1xufSwgMjAwICkgKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRpbmNsdWRlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pbmNsdWRlcycpLmluY2x1ZGVzO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSB9LCB7XG4gIGluY2x1ZGVzOiBmdW5jdGlvbiBpbmNsdWRlcyhlbCAvKiAsIGZyb21JbmRleCA9IDAgKi8pIHtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygnaW5jbHVkZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIG5vdEFSZWdFeHAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbm90LWEtcmVnZXhwJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBjb3JyZWN0SXNSZWdFeHBMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LWlzLXJlZ2V4cC1sb2dpYycpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogIWNvcnJlY3RJc1JlZ0V4cExvZ2ljKCdpbmNsdWRlcycpIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiAsIHBvc2l0aW9uID0gMCAqLykge1xuICAgIHJldHVybiAhIX5TdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKSlcbiAgICAgIC5pbmRleE9mKG5vdEFSZWdFeHAoc2VhcmNoU3RyaW5nKSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciBpc1JlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1yZWdleHAnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGlzUmVnRXhwKGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIlRoZSBtZXRob2QgZG9lc24ndCBhY2NlcHQgcmVndWxhciBleHByZXNzaW9uc1wiKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgTUFUQ0ggPSB3ZWxsS25vd25TeW1ib2woJ21hdGNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHZhciByZWdleHAgPSAvLi87XG4gIHRyeSB7XG4gICAgJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0cnkge1xuICAgICAgcmVnZXhwW01BVENIXSA9IGZhbHNlO1xuICAgICAgcmV0dXJuICcvLi8nW01FVEhPRF9OQU1FXShyZWdleHApO1xuICAgIH0gY2F0Y2ggKGYpIHsgLyogZW1wdHkgKi8gfVxuICB9IHJldHVybiBmYWxzZTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +!function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=292)}([,,function(t,n,r){(function(n){var r="object",e=function(t){return t&&t.Math==Math&&t};t.exports=e(typeof globalThis==r&&globalThis)||e(typeof window==r&&window)||e(typeof self==r&&self)||e(typeof n==r&&n)||Function("return this")()}).call(this,r(49))},,function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,function(t,n){t.exports=window},function(t,n){t.exports=jQuery},function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,n,r){var e=r(4);t.exports=!e((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(9),o=r(18),i=r(26);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(2),o=r(31).f,i=r(10),c=r(36),u=r(23),a=r(57),f=r(52);t.exports=function(t,n){var r,s,l,p,v,d=t.target,h=t.global,g=t.stat;if(r=h?e:g?e[d]||u(d,{}):(e[d]||{}).prototype)for(s in n){if(p=n[s],l=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!f(h?s:d+(g?".":"#")+s,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(r,s,p,t)}}},function(t,n,r){var e=r(8);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,n,r){var e=r(2),o=r(23),i=r(54),c=e["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return c[t]||(c[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(2),o=r(15),i=r(34),c=r(61),u=e.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,n,r){var e=r(9),o=r(32),i=r(13),c=r(27),u=Object.defineProperty;n.f=e?u:function(t,n,r){if(i(t),n=c(n,!0),i(r),o)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(30),o=r(16);t.exports=function(t){return e(o(t))}},function(t,n,r){var e=r(22),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},,function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(2),o=r(10);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(16);t.exports=function(t){return Object(e(t))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(8);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports={}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,n,r){var e=r(4),o=r(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,n,r){var e=r(9),o=r(45),i=r(26),c=r(19),u=r(27),a=r(11),f=r(32),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=c(t),n=u(n,!0),f)try{return s(t,n)}catch(t){}if(a(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,r){var e=r(9),o=r(4),i=r(38);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(15);t.exports=e("native-function-to-string",Function.toString)},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},function(t,n,r){var e=r(11),o=r(19),i=r(46).indexOf,c=r(28);t.exports=function(t,n){var r,u=o(t),a=0,f=[];for(r in u)!e(c,r)&&e(u,r)&&f.push(r);for(;n.length>a;)e(u,r=n[a++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(2),o=r(15),i=r(10),c=r(11),u=r(23),a=r(33),f=r(55),s=f.get,l=f.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,n,r,o){var a=!!o&&!!o.unsafe,f=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof r&&("string"!=typeof n||c(r,"name")||i(r,"name",n),l(r).source=p.join("string"==typeof n?n:"")),t!==e?(a?!s&&t[n]&&(f=!0):delete t[n],f?t[n]=r:i(t,n,r)):f?t[n]=r:u(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||a.call(this)}))},function(t,n,r){var e=r(59),o=r(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},function(t,n,r){var e=r(2),o=r(8),i=e.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,n,r){var e=r(15),o=r(34),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n,r){var e=r(22),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},function(t,n,r){var e=r(8),o=r(42),i=r(17)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},function(t,n,r){var e=r(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},,function(t,n,r){var e=r(60),o=r(30),i=r(25),c=r(20),u=r(41),a=[].push,f=function(t){var n=1==t,r=2==t,f=3==t,s=4==t,l=6==t,p=5==t||l;return function(v,d,h,g){for(var y,x,m=i(v),b=o(m),S=e(d,h,3),w=c(b.length),O=0,E=g||u,j=n?E(v,w):r?E(v,0):void 0;w>O;O++)if((p||O in b)&&(x=S(y=b[O],O,m),t))if(n)j[O]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:a.call(j,y)}else if(s)return!1;return l?-1:f||s?s:j}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6)}},function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},function(t,n,r){var e=r(19),o=r(20),i=r(40),c=function(t){return function(n,r,c){var u,a=e(n),f=o(a.length),s=i(c,f);if(t&&r!=r){for(;f>s;)if((u=a[s++])!=u)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},,function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"===typeof window&&(r=window)}t.exports=r},function(t,n,r){var e=r(35),o=r(29).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(4),o=/#|\.prototype\./,i=function(t,n){var r=u[c(t)];return r==f||r!=a&&("function"==typeof n?e(n):!!n)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},,function(t,n){t.exports=!1},function(t,n,r){var e,o,i,c=r(56),u=r(2),a=r(8),f=r(10),s=r(11),l=r(39),p=r(28),v=u.WeakMap;if(c){var d=new v,h=d.get,g=d.has,y=d.set;e=function(t,n){return y.call(d,t,n),n},o=function(t){return h.call(d,t)||{}},i=function(t){return g.call(d,t)}}else{var x=l("state");p[x]=!0,e=function(t,n){return f(t,x,n),n},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!a(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,n,r){var e=r(2),o=r(33),i=e.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,n,r){var e=r(11),o=r(58),i=r(31),c=r(18);t.exports=function(t,n){for(var r=o(n),u=c.f,a=i.f,f=0;f1&&i.call(c[0],r,(function(){for(f=1;fdocument.F=Object<\/script>"),t.close(),l=t.F;r--;)delete l.prototype[i[r]];return l()};t.exports=Object.create||function(t,n){var r;return null!==t?(s.prototype=e(t),r=new s,s.prototype=null,r[f]=t):r=l(),void 0===n?r:o(r,n)},c[f]=!0},function(t,n,r){var e=r(9),o=r(18),i=r(13),c=r(62);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=c(n),u=e.length,a=0;u>a;)o.f(t,r=e[a++],n[r]);return t}},function(t,n,r){var e=r(37);t.exports=e("document","documentElement")},function(t,n,r){var e=r(16),o="["+r(64)+"]",i=RegExp("^"+o+o+"*"),c=RegExp(o+o+"*$"),u=function(t){return function(n){var r=String(e(n));return 1&t&&(r=r.replace(i,"")),2&t&&(r=r.replace(c,"")),r}};t.exports={start:u(1),end:u(2),trim:u(3)}},function(t,n,r){"use strict";var e=r(13);t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},,,,function(t,n,r){"use strict";var e=r(10),o=r(36),i=r(4),c=r(17),u=r(65),a=c("species"),f=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),s=!i((function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));t.exports=function(t,n,r,l){var p=c(t),v=!i((function(){var n={};return n[p]=function(){return 7},7!=""[t](n)})),d=v&&!i((function(){var n=!1,r=/a/;return r.exec=function(){return n=!0,null},"split"===t&&(r.constructor={},r.constructor[a]=function(){return r}),r[p](""),!n}));if(!v||!d||"replace"===t&&!f||"split"===t&&!s){var h=/./[p],g=r(p,""[t],(function(t,n,r,e,o){return n.exec===u?v&&!o?{done:!0,value:h.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}})),y=g[0],x=g[1];o(String.prototype,t,y),o(RegExp.prototype,p,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)}),l&&e(RegExp.prototype[p],"sham",!0)}}},function(t,n,r){var e=r(24),o=r(65);t.exports=function(t,n){var r=t.exec;if("function"===typeof r){var i=r.call(t,n);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==e(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,n)}},,,,function(t,n,r){"use strict";var e=r(12),o=r(44).find,i=r(71),c=!0;"find"in[]&&Array(1).find((function(){c=!1})),e({target:"Array",proto:!0,forced:c},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,n,r){var e=r(12),o=r(87);e({global:!0,forced:parseInt!=o},{parseInt:o})},function(t,n,r){var e=r(2),o=r(75).trim,i=r(64),c=e.parseInt,u=/^[+-]?0[Xx]/,a=8!==c(i+"08")||22!==c(i+"0x16");t.exports=a?function(t,n){var r=o(String(t));return c(r,n>>>0||(u.test(r)?16:10))}:c},function(t,n,r){"use strict";var e=r(12),o=r(65);e({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(t,n,r){"use strict";var e=r(80),o=r(13),i=r(25),c=r(20),u=r(22),a=r(16),f=r(90),s=r(81),l=Math.max,p=Math.min,v=Math.floor,d=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g;e("replace",2,(function(t,n,r){return[function(r,e){var o=a(this),i=void 0==r?void 0:r[t];return void 0!==i?i.call(r,o,e):n.call(String(o),r,e)},function(t,i){var a=r(n,t,this,i);if(a.done)return a.value;var v=o(t),d=String(this),h="function"===typeof i;h||(i=String(i));var g=v.global;if(g){var y=v.unicode;v.lastIndex=0}for(var x=[];;){var m=s(v,d);if(null===m)break;if(x.push(m),!g)break;""===String(m[0])&&(v.lastIndex=f(d,c(v.lastIndex),y))}for(var b,S="",w=0,O=0;O=w&&(S+=d.slice(w,j)+P,w=j+E.length)}return S+d.slice(w)}];function e(t,r,e,o,c,u){var a=e+t.length,f=o.length,s=h;return void 0!==c&&(c=i(c),s=d),n.call(u,s,(function(n,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return r.slice(0,e);case"'":return r.slice(a);case"<":u=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return n;if(s>f){var l=v(s/10);return 0===l?n:l<=f?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):n}u=o[s-1]}return void 0===u?"":u}))}}))},function(t,n,r){"use strict";var e=r(91).charAt;t.exports=function(t,n,r){return n+(r?e(t,n).length:1)}},function(t,n,r){var e=r(22),o=r(16),i=function(t){return function(n,r){var i,c,u=String(o(n)),a=e(r),f=u.length;return a<0||a>=f?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===f||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):i:t?u.slice(a,a+2):c-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,n,r){"use strict";var e=r(44).forEach,o=r(70);t.exports=o("forEach")?function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}:[].forEach},,,,,,,,,,,,,,,,,,,,,,function(t,n,r){var e=r(8),o=r(24),i=r(17)("match");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:"RegExp"==o(t))}},function(t,n,r){"use strict";var e=r(12),o=r(92);e({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,n,r){var e=r(2),o=r(117),i=r(92),c=r(10);for(var u in o){var a=e[u],f=a&&a.prototype;if(f&&f.forEach!==i)try{c(f,"forEach",i)}catch(t){f.forEach=i}}},function(t,n){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n){t.exports=_},,,,,,,,,,,,,,,,,,,,function(t,n,r){"use strict";r.r(n);r(85),r(115),r(293),r(86),r(88),r(294),r(89),r(116);var e=r(7),o=r.n(e),i=r(6),c=r(272),u=r.n(c),a=document.querySelectorAll(".widget_ep-facet .terms");o()(a).on("keyup",".facet-search",u.a.debounce((function(t){if(13!==t.keyCode){var n=t.currentTarget.value.replace(/\s/g,"").toLowerCase();t.delegateTarget.querySelectorAll(".term").forEach((function(t){var r=t.getAttribute("data-term-slug");t.getAttribute("data-term-name").includes(n)||r.includes(n)?t.classList.remove("hide"):t.classList.add("hide")}))}}),200)),1===parseInt(i.epfacets.ajax_enabled)&&i.epfacets.selector&&01?arguments[1]:void 0)}}),i("includes")},function(t,n,r){"use strict";var e=r(12),o=r(295),i=r(16);e({target:"String",proto:!0,forced:!r(296)("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,n,r){var e=r(114);t.exports=function(t){if(e(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,n,r){var e=r(17)("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,"/./"[t](n)}catch(t){}}return!1}}]); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYmluZC1jb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zbG9wcHktYXJyYXktbWV0aG9kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJfXCIiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2ZhY2V0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3QtYS1yZWdleHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljLmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJnbG9iYWxUaGlzIiwiTyIsIndpbmRvdyIsInNlbGYiLCJnbG9iYWwiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImpRdWVyeSIsImZhaWxzIiwiYSIsIkRFU0NSSVBUT1JTIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJmIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaGlkZSIsInJlZGVmaW5lIiwic2V0R2xvYmFsIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsImlzRm9yY2VkIiwib3B0aW9ucyIsInNvdXJjZSIsInRhcmdldCIsInRhcmdldFByb3BlcnR5Iiwic291cmNlUHJvcGVydHkiLCJkZXNjcmlwdG9yIiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsIm5vVGFyZ2V0R2V0IiwiZm9yY2VkIiwidW5kZWZpbmVkIiwic2hhbSIsImlzT2JqZWN0IiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiSVNfUFVSRSIsInN0b3JlIiwicHVzaCIsInZlcnNpb24iLCJjb3B5cmlnaHQiLCJzaGFyZWQiLCJ1aWQiLCJOQVRJVkVfU1lNQk9MIiwiSUU4X0RPTV9ERUZJTkUiLCJhbk9iamVjdCIsInRvUHJpbWl0aXZlIiwibmF0aXZlRGVmaW5lUHJvcGVydHkiLCJQIiwiQXR0cmlidXRlcyIsIkluZGV4ZWRPYmplY3QiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwidG9JbnRlZ2VyIiwibWluIiwiYXJndW1lbnQiLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsInRvU3RyaW5nIiwic2xpY2UiLCJiaXRtYXAiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImlucHV0IiwiUFJFRkVSUkVEX1NUUklORyIsImZuIiwidmFsIiwidmFsdWVPZiIsImNsYXNzb2YiLCJzcGxpdCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJ0b0luZGV4ZWRPYmplY3QiLCJoYXMiLCJuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwiaW5kZXhPZiIsImhpZGRlbktleXMiLCJuYW1lcyIsInJlc3VsdCIsImxlbmd0aCIsIm5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmciLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZW5mb3JjZSIsIlRFTVBMQVRFIiwidW5zYWZlIiwic2ltcGxlIiwiam9pbiIsInRoaXMiLCJwYXRoIiwiYUZ1bmN0aW9uIiwidmFyaWFibGUiLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJhcmd1bWVudHMiLCJkb2N1bWVudCIsIkVYSVNUUyIsImtleXMiLCJtYXgiLCJpbmRleCIsImludGVnZXIiLCJpc0FycmF5IiwiU1BFQ0lFUyIsIndlbGxLbm93blN5bWJvbCIsIm9yaWdpbmFsQXJyYXkiLCJDIiwiY29uc3RydWN0b3IiLCJBcnJheSIsImFyZyIsInRvT2JqZWN0IiwidG9MZW5ndGgiLCJhcnJheVNwZWNpZXNDcmVhdGUiLCJjcmVhdGVNZXRob2QiLCJUWVBFIiwiSVNfTUFQIiwiSVNfRklMVEVSIiwiSVNfU09NRSIsIklTX0VWRVJZIiwiSVNfRklORF9JTkRFWCIsIk5PX0hPTEVTIiwiJHRoaXMiLCJjYWxsYmFja2ZuIiwidGhhdCIsInNwZWNpZmljQ3JlYXRlIiwiYm91bmRGdW5jdGlvbiIsImZvckVhY2giLCJtYXAiLCJmaWx0ZXIiLCJzb21lIiwiZXZlcnkiLCJmaW5kIiwiZmluZEluZGV4IiwibmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsIjEiLCJWIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCJlbCIsImZyb21JbmRleCIsImluY2x1ZGVzIiwiZyIsImUiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicmVwbGFjZW1lbnQiLCJmZWF0dXJlIiwiZGV0ZWN0aW9uIiwiZGF0YSIsIm5vcm1hbGl6ZSIsIlBPTFlGSUxMIiwiTkFUSVZFIiwic3RyaW5nIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwic2V0IiwiTkFUSVZFX1dFQUtfTUFQIiwib2JqZWN0SGFzIiwic2hhcmVkS2V5IiwiV2Vha01hcCIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJnZXR0ZXJGb3IiLCJzdGF0ZSIsInR5cGUiLCJ0ZXN0Iiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImdldEJ1aWx0SW4iLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwiYiIsImFwcGx5IiwiZW51bUJ1Z0tleXMiLCJyZWdleHBGbGFncyIsIm5hdGl2ZUV4ZWMiLCJSZWdFeHAiLCJuYXRpdmVSZXBsYWNlIiwicGF0Y2hlZEV4ZWMiLCJVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkciLCJyZTEiLCJyZTIiLCJsYXN0SW5kZXgiLCJOUENHX0lOQ0xVREVEIiwic3RyIiwicmVDb3B5IiwibWF0Y2giLCJyZSIsIk1FVEhPRF9OQU1FIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImRlZmluZVByb3BlcnRpZXMiLCJodG1sIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJGIiwiUHJvcGVydGllcyIsIm9iamVjdEtleXMiLCJ3aGl0ZXNwYWNlIiwibHRyaW0iLCJydHJpbSIsInN0YXJ0IiwiZW5kIiwidHJpbSIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwic3RpY2t5IiwicmVnZXhwRXhlYyIsIlJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTIiwiZ3JvdXBzIiwiU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDIiwib3JpZ2luYWxFeGVjIiwiS0VZIiwiU1lNQk9MIiwiREVMRUdBVEVTX1RPX1NZTUJPTCIsIkRFTEVHQVRFU19UT19FWEVDIiwiZXhlY0NhbGxlZCIsIm5hdGl2ZVJlZ0V4cE1ldGhvZCIsIm1ldGhvZHMiLCJuYXRpdmVNZXRob2QiLCJyZWdleHAiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCJkb25lIiwic3RyaW5nTWV0aG9kIiwicmVnZXhNZXRob2QiLCJSIiwiUyIsIiQiLCIkZmluZCIsImFkZFRvVW5zY29wYWJsZXMiLCJTS0lQU19IT0xFUyIsInByb3RvIiwicGFyc2VJbnRJbXBsZW1lbnRhdGlvbiIsInBhcnNlSW50Iiwid2hpdGVzcGFjZXMiLCJuYXRpdmVQYXJzZUludCIsImhleCIsIkZPUkNFRCIsInJhZGl4IiwiZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMiLCJhZHZhbmNlU3RyaW5nSW5kZXgiLCJyZWdFeHBFeGVjIiwiU1VCU1RJVFVUSU9OX1NZTUJPTFMiLCJTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCIsIlJFUExBQ0UiLCJtYXliZUNhbGxOYXRpdmUiLCJzZWFyY2hWYWx1ZSIsInJlcGxhY2VWYWx1ZSIsInJlcGxhY2VyIiwicmVzIiwicngiLCJmdW5jdGlvbmFsUmVwbGFjZSIsImZ1bGxVbmljb2RlIiwicmVzdWx0cyIsImFjY3VtdWxhdGVkUmVzdWx0IiwibmV4dFNvdXJjZVBvc2l0aW9uIiwibWF0Y2hlZCIsInBvc2l0aW9uIiwiY2FwdHVyZXMiLCJqIiwibmFtZWRDYXB0dXJlcyIsInJlcGxhY2VyQXJncyIsImdldFN1YnN0aXR1dGlvbiIsInRhaWxQb3MiLCJzeW1ib2xzIiwiY2giLCJjYXB0dXJlIiwiY2hhckF0IiwiQ09OVkVSVF9UT19TVFJJTkciLCJwb3MiLCJmaXJzdCIsInNlY29uZCIsInNpemUiLCJjaGFyQ29kZUF0IiwiY29kZUF0IiwiJGZvckVhY2giLCJzbG9wcHlBcnJheU1ldGhvZCIsIk1BVENIIiwiaXNSZWdFeHAiLCJET01JdGVyYWJsZXMiLCJDT0xMRUNUSU9OX05BTUUiLCJDb2xsZWN0aW9uIiwiQ29sbGVjdGlvblByb3RvdHlwZSIsIkNTU1J1bGVMaXN0IiwiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsIkNTU1ZhbHVlTGlzdCIsIkNsaWVudFJlY3RMaXN0IiwiRE9NUmVjdExpc3QiLCJET01TdHJpbmdMaXN0IiwiRE9NVG9rZW5MaXN0IiwiRGF0YVRyYW5zZmVySXRlbUxpc3QiLCJGaWxlTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiXyIsImZhY2V0VGVybXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwib24iLCJkZWJvdW5jZSIsImV2ZW50Iiwia2V5Q29kZSIsInNlYXJjaFRlcm0iLCJjdXJyZW50VGFyZ2V0IiwiZGVsZWdhdGVUYXJnZXQiLCJ0ZXJtIiwic2x1ZyIsImdldEF0dHJpYnV0ZSIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsImVwZmFjZXRzIiwiYWpheF9lbmFibGVkIiwic2VsZWN0b3IiLCJwcmV2ZW50RGVmYXVsdCIsInJlbFBhdGgiLCJhdHRyIiwidGFyZ2V0VXJsIiwibG9jYXRpb24iLCJvcmlnaW4iLCJlbGVtIiwicmVwbGFjZVdpdGgiLCIkaW5jbHVkZXMiLCJub3RBUmVnRXhwIiwiY29ycmVjdElzUmVnRXhwTG9naWMiLCJzZWFyY2hTdHJpbmciXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQUtmRixFQUFvQlEsRUFBSUYsRUFHeEJOLEVBQW9CUyxFQUFJVixFQUd4QkMsRUFBb0JVLEVBQUksU0FBU1IsRUFBU1MsRUFBTUMsR0FDM0NaLEVBQW9CYSxFQUFFWCxFQUFTUyxJQUNsQ0csT0FBT0MsZUFBZWIsRUFBU1MsRUFBTSxDQUFFSyxZQUFZLEVBQU1DLElBQUtMLEtBS2hFWixFQUFvQmtCLEVBQUksU0FBU2hCLEdBQ1gscUJBQVhpQixRQUEwQkEsT0FBT0MsYUFDMUNOLE9BQU9DLGVBQWViLEVBQVNpQixPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0RQLE9BQU9DLGVBQWViLEVBQVMsYUFBYyxDQUFFbUIsT0FBTyxLQVF2RHJCLEVBQW9Cc0IsRUFBSSxTQUFTRCxFQUFPRSxHQUV2QyxHQURVLEVBQVBBLElB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RUFDVCxNQUFNekcsR0FBYStDLEdBQzFCLE1BQU96TyxLQUNULE9BQU8iLCJmaWxlIjoianMvZmFjZXRzLXNjcmlwdC5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjkyKTtcbiIsInZhciBPID0gJ29iamVjdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSBPICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gTyAmJiB3aW5kb3cpIHx8XG4gIGNoZWNrKHR5cGVvZiBzZWxmID09IE8gJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSBPICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3c7IiwibW9kdWxlLmV4cG9ydHMgPSBqUXVlcnk7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGhpZGUoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMi4xJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3RvcmUgPSBzaGFyZWQoJ3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIFN5bWJvbFtuYW1lXVxuICAgIHx8IChOQVRJVkVfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNOYU4oYXJndW1lbnQgPSArYXJndW1lbnQpID8gMCA6IChhcmd1bWVudCA+IDAgPyBmbG9vciA6IGNlaWwpKGFyZ3VtZW50KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIXByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2hhcmVkKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuIiwidmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyBTdHJpbmcoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgKCsraWQgKyBwb3N0Zml4KS50b1N0cmluZygzNik7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXMoaGlkZGVuS2V5cywga2V5KSAmJiBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBuYXRpdmVGdW5jdGlvblRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PSAnZnVuY3Rpb24nID8gdmFyaWFibGUgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24ocGF0aFtuYW1lc3BhY2VdKSB8fCBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pXG4gICAgOiBwYXRoW25hbWVzcGFjZV0gJiYgcGF0aFtuYW1lc3BhY2VdW21ldGhvZF0gfHwgZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4obGVuZ3RoLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBBcnJheVNwZWNpZXNDcmVhdGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5LCBsZW5ndGgpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsQXJyYXkpKSB7XG4gICAgQyA9IG9yaWdpbmFsQXJyYXkuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGVsc2UgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gbmV3IChDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEMpKGxlbmd0aCA9PT0gMCA/IDAgOiBsZW5ndGgpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY2xhc3NvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgIC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgIW5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBvYmplY3RIYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQKSB7XG4gIHZhciBzdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaGlkZShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCk7XG4gICAgfTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIvLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEZsYWdzID0gcmVxdWlyZSgnLi9yZWdleHAtZmxhZ3MnKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwocmUsIHN0cik7XG5cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhbWV0aG9kIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgaGlkZShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIGNyZWF0ZShudWxsKSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgc2NyaXB0ID0gJ3NjcmlwdCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGpzID0gJ2phdmEnICsgc2NyaXB0ICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoanMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgc2NyaXB0ICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnLycgKyBzY3JpcHQgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgd2hpdGVzcGFjZSA9ICdbJyArIHdoaXRlc3BhY2VzICsgJ10nO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cCh3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIGlmIChUWVBFICYgMSkgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobHRyaW0sICcnKTtcbiAgICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJ0cmltLCAnJyk7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1MZWZ0LCB0cmltU3RhcnQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuICB0cmltOiBjcmVhdGVNZXRob2QoMylcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgfVxuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIHZhciBzdHJpbmdNZXRob2QgPSBtZXRob2RzWzBdO1xuICAgIHZhciByZWdleE1ldGhvZCA9IG1ldGhvZHNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmluZ01ldGhvZCk7XG4gICAgcmVkZWZpbmUoUmVnRXhwLnByb3RvdHlwZSwgU1lNQk9MLCBsZW5ndGggPT0gMlxuICAgICAgLy8gMjEuMi41LjggUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdKHN0cmluZywgcmVwbGFjZVZhbHVlKVxuICAgICAgLy8gMjEuMi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdClcbiAgICAgID8gZnVuY3Rpb24gKHN0cmluZywgYXJnKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJlZ2V4TWV0aG9kLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gICAgaWYgKHNoYW0pIGhpZGUoUmVnRXhwLnByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xuICB9XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL2NsYXNzb2YtcmF3Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vcmVnZXhwLWV4ZWMnKTtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKHR5cGVvZiBleGVjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbChSLCBTKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbiAgfVxuXG4gIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG59O1xuXG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcyhGSU5EKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHBhcnNlSW50SW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGFyc2UtaW50Jyk7XG5cbi8vIGBwYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wYXJzZWludC1zdHJpbmctcmFkaXhcbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogcGFyc2VJbnQgIT0gcGFyc2VJbnRJbXBsZW1lbnRhdGlvbiB9LCB7XG4gIHBhcnNlSW50OiBwYXJzZUludEltcGxlbWVudGF0aW9uXG59KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyIG5hdGl2ZVBhcnNlSW50ID0gZ2xvYmFsLnBhcnNlSW50O1xudmFyIGhleCA9IC9eWystXT8wW1h4XS87XG52YXIgRk9SQ0VEID0gbmF0aXZlUGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMDgnKSAhPT0gOCB8fCBuYXRpdmVQYXJzZUludCh3aGl0ZXNwYWNlcyArICcweDE2JykgIT09IDIyO1xuXG4vLyBgcGFyc2VJbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgpIHtcbiAgdmFyIFMgPSB0cmltKFN0cmluZyhzdHJpbmcpKTtcbiAgcmV0dXJuIG5hdGl2ZVBhcnNlSW50KFMsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KFMpID8gMTYgOiAxMCkpO1xufSA6IG5hdGl2ZVBhcnNlSW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MUyA9IC9cXCQoWyQmJ2BdfFxcZFxcZD98PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmJ2BdfFxcZFxcZD8pL2c7XG5cbnZhciBtYXliZVRvU3RyaW5nID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxuLy8gQEByZXBsYWNlIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChSRVBMQUNFLCBuYXRpdmVSZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGxhY2VcbiAgICBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciByZXBsYWNlciA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgICAgcmV0dXJuIHJlcGxhY2VyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyByZXBsYWNlci5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICAgIDogbmF0aXZlUmVwbGFjZS5jYWxsKFN0cmluZyhPKSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChyZWdleHAsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVSZXBsYWNlLCByZWdleHAsIHRoaXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuXG4gICAgICB2YXIgZ2xvYmFsID0gcnguZ2xvYmFsO1xuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgYnJlYWs7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmICghZ2xvYmFsKSBicmVhaztcblxuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuXG4gICAgICAgIHZhciBtYXRjaGVkID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyKHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xuXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldHN1YnN0aXR1dGlvblxuICBmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VtZW50KSB7XG4gICAgdmFyIHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIHZhciBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQ7XG4gICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTO1xuICAgIH1cbiAgICByZXR1cm4gbmF0aXZlUmVwbGFjZS5jYWxsKHJlcGxhY2VtZW50LCBzeW1ib2xzLCBmdW5jdGlvbiAobWF0Y2gsIGNoKSB7XG4gICAgICB2YXIgY2FwdHVyZTtcbiAgICAgIHN3aXRjaCAoY2guY2hhckF0KDApKSB7XG4gICAgICAgIGNhc2UgJyQnOiByZXR1cm4gJyQnO1xuICAgICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICAgIGNhc2UgJ2AnOiByZXR1cm4gc3RyLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0ci5zbGljZSh0YWlsUG9zKTtcbiAgICAgICAgY2FzZSAnPCc6XG4gICAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbY2guc2xpY2UoMSwgLTEpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICAgIHZhciBuID0gK2NoO1xuICAgICAgICAgIGlmIChuID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZsb29yKG4gLyAxMCk7XG4gICAgICAgICAgICBpZiAoZiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2guY2hhckF0KDEpIDogY2FwdHVyZXNbZiAtIDFdICsgY2guY2hhckF0KDEpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXB0dXJlID0gY2FwdHVyZXNbbiAtIDFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhcHR1cmUgPT09IHVuZGVmaW5lZCA/ICcnIDogY2FwdHVyZTtcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGNoYXJBdChTLCBpbmRleCkubGVuZ3RoIDogMSk7XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Nsb3BweS1hcnJheS1tZXRob2QnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9IHNsb3BweUFycmF5TWV0aG9kKCdmb3JFYWNoJykgPyBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59IDogW10uZm9yRWFjaDtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjbGFzc29mKGl0KSA9PSAnUmVnRXhwJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFtdLmZvckVhY2ggIT0gZm9yRWFjaCB9LCB7XG4gIGZvckVhY2g6IGZvckVhY2hcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBET01JdGVyYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcycpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2gnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdO1xuICB2YXIgQ29sbGVjdGlvblByb3RvdHlwZSA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZSAmJiBDb2xsZWN0aW9uUHJvdG90eXBlLmZvckVhY2ggIT09IGZvckVhY2gpIHRyeSB7XG4gICAgaGlkZShDb2xsZWN0aW9uUHJvdG90eXBlLCAnZm9yRWFjaCcsIGZvckVhY2gpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCA9IGZvckVhY2g7XG4gIH1cbn1cbiIsIi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfOyIsImltcG9ydCBqUXVlcnkgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7IGVwZmFjZXRzIH0gZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmVzJztcblxuY29uc3QgZmFjZXRUZXJtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcud2lkZ2V0X2VwLWZhY2V0IC50ZXJtcycgKTtcblxuLyoqXG4gKiBEcmlsbCBkb3duIGZhY2V0IGNob2ljZXNcbiAqL1xualF1ZXJ5KCBmYWNldFRlcm1zICkub24oICdrZXl1cCcsICcuZmFjZXQtc2VhcmNoJywgXy5kZWJvdW5jZSggKCBldmVudCApID0+IHtcblx0aWYgKCAxMyA9PT0gZXZlbnQua2V5Q29kZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZS5yZXBsYWNlKCAvXFxzL2csICcnICkudG9Mb3dlckNhc2UoKTtcblx0Y29uc3QgdGVybXMgPSBldmVudC5kZWxlZ2F0ZVRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCAnLnRlcm0nICk7XG5cblx0dGVybXMuZm9yRWFjaCggKCB0ZXJtICkgPT4ge1xuXHRcdGNvbnN0IHNsdWcgPSB0ZXJtLmdldEF0dHJpYnV0ZSggJ2RhdGEtdGVybS1zbHVnJyApO1xuXHRcdGNvbnN0IG5hbWUgPSB0ZXJtLmdldEF0dHJpYnV0ZSggJ2RhdGEtdGVybS1uYW1lJyApO1xuXG5cdFx0aWYgKCBuYW1lLmluY2x1ZGVzKCBzZWFyY2hUZXJtICkgfHwgc2x1Zy5pbmNsdWRlcyggc2VhcmNoVGVybSApICkge1xuXHRcdFx0dGVybS5jbGFzc0xpc3QucmVtb3ZlKCAnaGlkZScgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGVybS5jbGFzc0xpc3QuYWRkKCAnaGlkZScgKTtcblx0XHR9XG5cdH0gKTtcbn0sIDIwMCApICk7XG5cbi8qKlxuICogQWpheGlmeSBmYWNldHNcbiAqL1xuaWYoIDEgPT09IHBhcnNlSW50KCBlcGZhY2V0cy5hamF4X2VuYWJsZWQgKSAmJiBlcGZhY2V0cy5zZWxlY3RvciAmJiAwIDwgalF1ZXJ5KCBlcGZhY2V0cy5zZWxlY3RvciApLmxlbmd0aCApe1xuXHRqUXVlcnkoIGRvY3VtZW50ICkub24oICdjbGljaycsICcudGVybScsIGZ1bmN0aW9uICggZSApIHtcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0Y29uc3QgcmVsUGF0aCA9IGpRdWVyeSggdGhpcyApLmZpbmQoICdhJyApLmF0dHIoICdocmVmJyApO1xuXHRcdGlmKCByZWxQYXRoICl7XG5cdFx0XHRjb25zdCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblx0XHRcdGNvbnN0IHRhcmdldFVybCA9IGJhc2VVcmwgKyByZWxQYXRoO1xuXG5cdFx0XHRqUXVlcnkuZ2V0KCB0YXJnZXRVcmwsIGZ1bmN0aW9uICggZGF0YSApIHtcblx0XHRcdFx0Y29uc3QgZWxlbSA9IGpRdWVyeSggZGF0YSApLmZpbmQoIGVwZmFjZXRzLnNlbGVjdG9yICk7XG5cdFx0XHRcdGpRdWVyeSggZXBmYWNldHMuc2VsZWN0b3IgKS5yZXBsYWNlV2l0aCggZWxlbSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0fSApO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5jbHVkZXM7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhY29ycmVjdElzUmVnRXhwTG9naWMoJ2luY2x1ZGVzJykgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgcmV0dXJuICEhflN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKVxuICAgICAgLmluZGV4T2Yobm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwidmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNSZWdFeHAoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zXCIpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgdmFyIHJlZ2V4cCA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tNRVRIT0RfTkFNRV0ocmVnZXhwKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICByZWdleHBbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gICAgfSBjYXRjaCAoZikgeyAvKiBlbXB0eSAqLyB9XG4gIH0gcmV0dXJuIGZhbHNlO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/includes/classes/Feature/Facets/Facets.php b/includes/classes/Feature/Facets/Facets.php index e43e0dc523..a14e6034b1 100644 --- a/includes/classes/Feature/Facets/Facets.php +++ b/includes/classes/Feature/Facets/Facets.php @@ -34,7 +34,8 @@ public function __construct() { $this->requires_install_reindex = false; $this->default_settings = [ - 'match_type' => 'all', + 'match_type' => 'all', + 'ajax_enabled' => false, ]; parent::__construct(); @@ -77,6 +78,23 @@ public function output_feature_box_settings() {

+ +
+
+
+
+ +
+
+ +
+
+
+ +

+
+
+ get_settings(); + + $facet_options = [ + 'ajax_enabled' => (int) ( $settings['ajax_enabled'] ), + 'selector' => empty( $settings['ajax_selector'] ) ? '' : esc_html( $settings['ajax_selector'] ), + ]; + + wp_localize_script( + 'elasticpress-facets', + 'epfacets', + $facet_options + ); } /** From 6057b35e6a35ad56bd674ebfc1c04a54010223c3 Mon Sep 17 00:00:00 2001 From: mustafauysal Date: Thu, 6 Feb 2020 19:42:26 +0300 Subject: [PATCH 2/5] inject templating partial to search result --- includes/classes/Feature/Facets/Facets.php | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/includes/classes/Feature/Facets/Facets.php b/includes/classes/Feature/Facets/Facets.php index a14e6034b1..b745c0b9dd 100644 --- a/includes/classes/Feature/Facets/Facets.php +++ b/includes/classes/Feature/Facets/Facets.php @@ -22,6 +22,13 @@ */ class Facets extends Feature { + /** + * Facet query + * + * @var array + */ + public $placeholder_query = []; + /** * Initialize feature setting it's config * @@ -54,6 +61,86 @@ public function setup() { add_action( 'admin_enqueue_scripts', [ $this, 'admin_scripts' ] ); add_action( 'wp_enqueue_scripts', [ $this, 'front_scripts' ] ); add_action( 'ep_feature_box_settings_facets', [ $this, 'settings' ], 10, 1 ); + + $settings = $this->get_settings(); + + if ( true === (bool) $settings['ajax_enabled'] ) { + add_filter( 'the_posts', [ $this, 'inject_templating_post' ], PHP_INT_MAX, 2 ); + add_action( 'the_post', [ $this, 'maybe_buffer_template_item' ] ); + add_action( 'loop_end', [ $this, 'maybe_capture_template_output' ] ); + add_action( 'wp_footer', [ $this, 'output_templating_post' ] ); + } + + } + + /** + * HTML Output of the templating post + */ + public function output_templating_post() { + global $ep_facet_output; + if ( ! empty( $ep_facet_output ) ) { + echo ''; // phpcs:ignore + } + } + + /** + * Start output buffering for template post + * + * @param \WP_Post $post Post object + */ + public function maybe_buffer_template_item( $post ) { + global $ep_facet_buffer; + if ( - 99999999999 === $post->ID ) { + ob_start(); + $ep_facet_buffer = true; + } + } + + /** + * Stop autput buffering for template post + * + * @param \WP_Query $query WP Query + */ + public function maybe_capture_template_output( $query ) { + global $ep_facet_buffer, $ep_facet_output; + if ( true === $ep_facet_buffer ) { + $ep_facet_output = ob_get_clean(); + $ep_facet_buffer = false; + } + } + + /** + * Inject fake post to search loop + * + * @param \WP_Post $post Post object + * @param \WP_Query $query WP Query + * + * @return array + */ + public function inject_templating_post( $post, $query ) { + if ( $query->is_main_query() && $query->is_search() ) { + $fake_post = new \stdClass(); + $fake_post->ID = - 99999999999; + $fake_post->post_author = 1; + $fake_post->post_date = current_time( 'mysql' ); + $fake_post->post_date_gmt = current_time( 'mysql' ); + $fake_post->post_title = '{{POST_TITLE}}'; + $fake_post->post_excerpt = '{{POST_EXCERPT}}'; + $fake_post->post_content = '{{POST_CONTENT}}'; + $fake_post->post_content_filtered = '{{POST_CONTENT_FILTERED}}'; + $fake_post->post_status = 'publish'; + $fake_post->comment_status = 'closed'; + $fake_post->ping_status = 'closed'; + $fake_post->post_name = 'ep-facets-templating-post'; + $fake_post->post_type = 'post'; + $fake_post->filter = 'raw'; + $fake_post->permalink = '{{PERMALINK}}'; + + $templating_post = new \WP_Post( $fake_post ); + $post[] = $templating_post; + } + + return $post; } /** @@ -112,6 +199,11 @@ public function set_agg_filters( $args, $query_args, $query ) { return $args; } + /** + * Catch current query for FE use + */ + $this->placeholder_query = $args; + // @todo For some reason these are appearing in the query args, need to investigate unset( $query_args['category_name'] ); unset( $query_args['cat'] ); @@ -197,6 +289,8 @@ public function front_scripts() { $facet_options = [ 'ajax_enabled' => (int) ( $settings['ajax_enabled'] ), 'selector' => empty( $settings['ajax_selector'] ) ? '' : esc_html( $settings['ajax_selector'] ), + 'query' => $this->placeholder_query, + 'endpointUrl' => trailingslashit( Utils\get_host() ) . Indexables::factory()->get( 'post' )->get_index_name() . '/_search', ]; wp_localize_script( From 2dc5d12dc605ef0a33842b5d179f7e9e607401f4 Mon Sep 17 00:00:00 2001 From: mustafauysal Date: Mon, 10 Feb 2020 13:39:45 +0300 Subject: [PATCH 3/5] render results dynamically --- assets/js/facets.js | 138 +++++++++++++++++++-- dist/js/facets-script.min.js | 4 +- includes/classes/Feature/Facets/Facets.php | 1 + includes/classes/Feature/Facets/Widget.php | 6 +- 4 files changed, 135 insertions(+), 14 deletions(-) diff --git a/assets/js/facets.js b/assets/js/facets.js index 70ab768f5e..ff654bf86a 100644 --- a/assets/js/facets.js +++ b/assets/js/facets.js @@ -27,21 +27,141 @@ jQuery( facetTerms ).on( 'keyup', '.facet-search', _.debounce( ( event ) => { } ); }, 200 ) ); + /** * Ajaxify facets */ if( 1 === parseInt( epfacets.ajax_enabled ) && epfacets.selector && 0 < jQuery( epfacets.selector ).length ){ jQuery( document ).on( 'click', '.term', function ( e ) { e.preventDefault(); - const relPath = jQuery( this ).find( 'a' ).attr( 'href' ); - if( relPath ){ - const baseUrl = window.location.origin; - const targetUrl = baseUrl + relPath; - - jQuery.get( targetUrl, function ( data ) { - const elem = jQuery( data ).find( epfacets.selector ); - jQuery( epfacets.selector ).replaceWith( elem ); - } ); + + if ( jQuery( this ).hasClass( 'selected' ) ) { + jQuery( this ).removeClass( 'selected' ); + jQuery( this ).find( 'input:checkbox' ).attr( 'checked',false ); + } else { + jQuery( this ).addClass( 'selected' ); + jQuery( this ).find( 'input:checkbox' ).attr( 'checked',true ); + } + + const templateItem = jQuery( '#ep-facet-sample-result' ).html(); + const facetQuery = getFacetQuery(); + const esQuery = epfacets.query; + + if ( !templateItem ) { + return; + } + + // apply conditions to filter query + if ( esQuery.post_filter.bool.must ) { + esQuery.post_filter.bool.must = jQuery.extend( esQuery.post_filter.bool.must, [facetQuery] ); + } else { + esQuery.post_filter = { + bool: { + must:[ + facetQuery + ] + } + }; + } + + // apply same conditions to aggs query + if( esQuery.aggs.terms.filter.bool.must ){ + esQuery.aggs.terms.filter.bool.must = jQuery.extend( esQuery.aggs.terms.filter.bool.must, [facetQuery] ); + }else{ + esQuery.aggs = { + terms:{ + filter:{ + bool:{ + must:[ + facetQuery + ] + } + } + } + }; + } + + const request = esSearch( esQuery ); + + request.done( ( response ) => { + if ( 0 < response._shards.successful ) { + let htmlResults = ''; + + jQuery.each( response.hits.hits, ( index, element ) => { + const post_title = element._source.post_title; + const post_content = element._source.post_content; + const post_content_filtered = element._source.post_content_filtered; + const post_excerpt = element._source.post_excerpt; + const permalink = element._source.permalink; + const postId = element._source.post_id; + + htmlResults += templateItem.replace( /{{POST_TITLE}}/g, post_title ) + .replace( /{{POST_EXCERPT}}/g, post_excerpt ) + .replace( /{{POST_CONTENT}}/g, post_content ) + .replace( /{{POST_CONTENT_FILTERED}}/g, post_content_filtered ) + .replace( /{{PERMALINK}}/g, permalink ) + .replace( /-99999999999/g, postId ) + ; + } ); + jQuery( epfacets.selector ).html( htmlResults ); + } + } ); + + } ); + +} + +/** + * + * @returns {[]} + */ +function getFacetQuery() { + const terms = document.querySelectorAll( '.term.selected' ); + const filter = { + bool:{ + must:[], + should:[], } + }; + + terms.forEach( ( term ) => { + const slug = term.getAttribute( 'data-term-slug' ); + const taxonomy = term.getAttribute( 'data-term-taxonomy' ); + + const termQuery = { terms:{ [`terms.${taxonomy}.slug`]:[slug] }}; + filter.bool.must.push( termQuery ); + filter.bool.should.push( termQuery ); } ); + + if( 'all' === epfacets.match_type ){ + delete filter.bool.should; + }else { + delete filter.bool.must; + } + + return filter; +} + + +/** + * Build the ajax request + * + * @param query - json string + * @returns AJAX object request + */ +function esSearch( query ) { + + // Fixes <=IE9 jQuery AJAX bug that prevents ajax request from firing + jQuery.support.cors = true; + + const ajaxConfig = { + url: epfacets.endpointUrl, + type: 'post', + dataType: 'json', + crossDomain: true, + contentType: 'application/json; charset=utf-8', + data:JSON.stringify( query ) + }; + + return jQuery.ajax( ajaxConfig ); } diff --git a/dist/js/facets-script.min.js b/dist/js/facets-script.min.js index 3383a3162f..2175228865 100644 --- a/dist/js/facets-script.min.js +++ b/dist/js/facets-script.min.js @@ -1,2 +1,2 @@ -!function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&"object"===typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,"a",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p="",r(r.s=292)}([,,function(t,n,r){(function(n){var r="object",e=function(t){return t&&t.Math==Math&&t};t.exports=e(typeof globalThis==r&&globalThis)||e(typeof window==r&&window)||e(typeof self==r&&self)||e(typeof n==r&&n)||Function("return this")()}).call(this,r(49))},,function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,function(t,n){t.exports=window},function(t,n){t.exports=jQuery},function(t,n){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,n,r){var e=r(4);t.exports=!e((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(9),o=r(18),i=r(26);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n){var r={}.hasOwnProperty;t.exports=function(t,n){return r.call(t,n)}},function(t,n,r){var e=r(2),o=r(31).f,i=r(10),c=r(36),u=r(23),a=r(57),f=r(52);t.exports=function(t,n){var r,s,l,p,v,d=t.target,h=t.global,g=t.stat;if(r=h?e:g?e[d]||u(d,{}):(e[d]||{}).prototype)for(s in n){if(p=n[s],l=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!f(h?s:d+(g?".":"#")+s,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(r,s,p,t)}}},function(t,n,r){var e=r(8);t.exports=function(t){if(!e(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,n,r){var e=r(2),o=r(23),i=r(54),c=e["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,n){return c[t]||(c[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,n){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,n,r){var e=r(2),o=r(15),i=r(34),c=r(61),u=e.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,n,r){var e=r(9),o=r(32),i=r(13),c=r(27),u=Object.defineProperty;n.f=e?u:function(t,n,r){if(i(t),n=c(n,!0),i(r),o)try{return u(t,n,r)}catch(t){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},function(t,n,r){var e=r(30),o=r(16);t.exports=function(t){return e(o(t))}},function(t,n,r){var e=r(22),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},,function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(2),o=r(10);t.exports=function(t,n){try{o(e,t,n)}catch(r){e[t]=n}return n}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(16);t.exports=function(t){return Object(e(t))}},function(t,n){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},function(t,n,r){var e=r(8);t.exports=function(t,n){if(!e(t))return t;var r,o;if(n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;if("function"==typeof(r=t.valueOf)&&!e(o=r.call(t)))return o;if(!n&&"function"==typeof(r=t.toString)&&!e(o=r.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,n){t.exports={}},function(t,n){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,n,r){var e=r(4),o=r(24),i="".split;t.exports=e((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,n,r){var e=r(9),o=r(45),i=r(26),c=r(19),u=r(27),a=r(11),f=r(32),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=c(t),n=u(n,!0),f)try{return s(t,n)}catch(t){}if(a(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,r){var e=r(9),o=r(4),i=r(38);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,n,r){var e=r(15);t.exports=e("native-function-to-string",Function.toString)},function(t,n){var r=0,e=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++r+e).toString(36)}},function(t,n,r){var e=r(11),o=r(19),i=r(46).indexOf,c=r(28);t.exports=function(t,n){var r,u=o(t),a=0,f=[];for(r in u)!e(c,r)&&e(u,r)&&f.push(r);for(;n.length>a;)e(u,r=n[a++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){var e=r(2),o=r(15),i=r(10),c=r(11),u=r(23),a=r(33),f=r(55),s=f.get,l=f.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,n,r,o){var a=!!o&&!!o.unsafe,f=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof r&&("string"!=typeof n||c(r,"name")||i(r,"name",n),l(r).source=p.join("string"==typeof n?n:"")),t!==e?(a?!s&&t[n]&&(f=!0):delete t[n],f?t[n]=r:i(t,n,r)):f?t[n]=r:u(n,r)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||a.call(this)}))},function(t,n,r){var e=r(59),o=r(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t])||i(o[t]):e[t]&&e[t][n]||o[t]&&o[t][n]}},function(t,n,r){var e=r(2),o=r(8),i=e.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,n,r){var e=r(15),o=r(34),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,n,r){var e=r(22),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},function(t,n,r){var e=r(8),o=r(42),i=r(17)("species");t.exports=function(t,n){var r;return o(t)&&("function"!=typeof(r=t.constructor)||r!==Array&&!o(r.prototype)?e(r)&&null===(r=r[i])&&(r=void 0):r=void 0),new(void 0===r?Array:r)(0===n?0:n)}},function(t,n,r){var e=r(24);t.exports=Array.isArray||function(t){return"Array"==e(t)}},,function(t,n,r){var e=r(60),o=r(30),i=r(25),c=r(20),u=r(41),a=[].push,f=function(t){var n=1==t,r=2==t,f=3==t,s=4==t,l=6==t,p=5==t||l;return function(v,d,h,g){for(var y,x,m=i(v),b=o(m),S=e(d,h,3),w=c(b.length),O=0,E=g||u,j=n?E(v,w):r?E(v,0):void 0;w>O;O++)if((p||O in b)&&(x=S(y=b[O],O,m),t))if(n)j[O]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return O;case 2:a.call(j,y)}else if(s)return!1;return l?-1:f||s?s:j}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6)}},function(t,n,r){"use strict";var e={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!e.call({1:2},1);n.f=i?function(t){var n=o(this,t);return!!n&&n.enumerable}:e},function(t,n,r){var e=r(19),o=r(20),i=r(40),c=function(t){return function(n,r,c){var u,a=e(n),f=o(a.length),s=i(c,f);if(t&&r!=r){for(;f>s;)if((u=a[s++])!=u)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,n){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},,function(t,n){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"===typeof window&&(r=window)}t.exports=r},function(t,n,r){var e=r(35),o=r(29).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},function(t,n){n.f=Object.getOwnPropertySymbols},function(t,n,r){var e=r(4),o=/#|\.prototype\./,i=function(t,n){var r=u[c(t)];return r==f||r!=a&&("function"==typeof n?e(n):!!n)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},,function(t,n){t.exports=!1},function(t,n,r){var e,o,i,c=r(56),u=r(2),a=r(8),f=r(10),s=r(11),l=r(39),p=r(28),v=u.WeakMap;if(c){var d=new v,h=d.get,g=d.has,y=d.set;e=function(t,n){return y.call(d,t,n),n},o=function(t){return h.call(d,t)||{}},i=function(t){return g.call(d,t)}}else{var x=l("state");p[x]=!0,e=function(t,n){return f(t,x,n),n},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!a(n)||(r=o(n)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return r}}}},function(t,n,r){var e=r(2),o=r(33),i=e.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,n,r){var e=r(11),o=r(58),i=r(31),c=r(18);t.exports=function(t,n){for(var r=o(n),u=c.f,a=i.f,f=0;f1&&i.call(c[0],r,(function(){for(f=1;fdocument.F=Object<\/script>"),t.close(),l=t.F;r--;)delete l.prototype[i[r]];return l()};t.exports=Object.create||function(t,n){var r;return null!==t?(s.prototype=e(t),r=new s,s.prototype=null,r[f]=t):r=l(),void 0===n?r:o(r,n)},c[f]=!0},function(t,n,r){var e=r(9),o=r(18),i=r(13),c=r(62);t.exports=e?Object.defineProperties:function(t,n){i(t);for(var r,e=c(n),u=e.length,a=0;u>a;)o.f(t,r=e[a++],n[r]);return t}},function(t,n,r){var e=r(37);t.exports=e("document","documentElement")},function(t,n,r){var e=r(16),o="["+r(64)+"]",i=RegExp("^"+o+o+"*"),c=RegExp(o+o+"*$"),u=function(t){return function(n){var r=String(e(n));return 1&t&&(r=r.replace(i,"")),2&t&&(r=r.replace(c,"")),r}};t.exports={start:u(1),end:u(2),trim:u(3)}},function(t,n,r){"use strict";var e=r(13);t.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.dotAll&&(n+="s"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},,,,function(t,n,r){"use strict";var e=r(10),o=r(36),i=r(4),c=r(17),u=r(65),a=c("species"),f=!i((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$
")})),s=!i((function(){var t=/(?:)/,n=t.exec;t.exec=function(){return n.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));t.exports=function(t,n,r,l){var p=c(t),v=!i((function(){var n={};return n[p]=function(){return 7},7!=""[t](n)})),d=v&&!i((function(){var n=!1,r=/a/;return r.exec=function(){return n=!0,null},"split"===t&&(r.constructor={},r.constructor[a]=function(){return r}),r[p](""),!n}));if(!v||!d||"replace"===t&&!f||"split"===t&&!s){var h=/./[p],g=r(p,""[t],(function(t,n,r,e,o){return n.exec===u?v&&!o?{done:!0,value:h.call(n,r,e)}:{done:!0,value:t.call(r,n,e)}:{done:!1}})),y=g[0],x=g[1];o(String.prototype,t,y),o(RegExp.prototype,p,2==n?function(t,n){return x.call(t,this,n)}:function(t){return x.call(t,this)}),l&&e(RegExp.prototype[p],"sham",!0)}}},function(t,n,r){var e=r(24),o=r(65);t.exports=function(t,n){var r=t.exec;if("function"===typeof r){var i=r.call(t,n);if("object"!==typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==e(t))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(t,n)}},,,,function(t,n,r){"use strict";var e=r(12),o=r(44).find,i=r(71),c=!0;"find"in[]&&Array(1).find((function(){c=!1})),e({target:"Array",proto:!0,forced:c},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},function(t,n,r){var e=r(12),o=r(87);e({global:!0,forced:parseInt!=o},{parseInt:o})},function(t,n,r){var e=r(2),o=r(75).trim,i=r(64),c=e.parseInt,u=/^[+-]?0[Xx]/,a=8!==c(i+"08")||22!==c(i+"0x16");t.exports=a?function(t,n){var r=o(String(t));return c(r,n>>>0||(u.test(r)?16:10))}:c},function(t,n,r){"use strict";var e=r(12),o=r(65);e({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(t,n,r){"use strict";var e=r(80),o=r(13),i=r(25),c=r(20),u=r(22),a=r(16),f=r(90),s=r(81),l=Math.max,p=Math.min,v=Math.floor,d=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g;e("replace",2,(function(t,n,r){return[function(r,e){var o=a(this),i=void 0==r?void 0:r[t];return void 0!==i?i.call(r,o,e):n.call(String(o),r,e)},function(t,i){var a=r(n,t,this,i);if(a.done)return a.value;var v=o(t),d=String(this),h="function"===typeof i;h||(i=String(i));var g=v.global;if(g){var y=v.unicode;v.lastIndex=0}for(var x=[];;){var m=s(v,d);if(null===m)break;if(x.push(m),!g)break;""===String(m[0])&&(v.lastIndex=f(d,c(v.lastIndex),y))}for(var b,S="",w=0,O=0;O=w&&(S+=d.slice(w,j)+P,w=j+E.length)}return S+d.slice(w)}];function e(t,r,e,o,c,u){var a=e+t.length,f=o.length,s=h;return void 0!==c&&(c=i(c),s=d),n.call(u,s,(function(n,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return t;case"`":return r.slice(0,e);case"'":return r.slice(a);case"<":u=c[i.slice(1,-1)];break;default:var s=+i;if(0===s)return n;if(s>f){var l=v(s/10);return 0===l?n:l<=f?void 0===o[l-1]?i.charAt(1):o[l-1]+i.charAt(1):n}u=o[s-1]}return void 0===u?"":u}))}}))},function(t,n,r){"use strict";var e=r(91).charAt;t.exports=function(t,n,r){return n+(r?e(t,n).length:1)}},function(t,n,r){var e=r(22),o=r(16),i=function(t){return function(n,r){var i,c,u=String(o(n)),a=e(r),f=u.length;return a<0||a>=f?t?"":void 0:(i=u.charCodeAt(a))<55296||i>56319||a+1===f||(c=u.charCodeAt(a+1))<56320||c>57343?t?u.charAt(a):i:t?u.slice(a,a+2):c-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},function(t,n,r){"use strict";var e=r(44).forEach,o=r(70);t.exports=o("forEach")?function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}:[].forEach},,,,,,,,,,,,,,,,,,,,,,function(t,n,r){var e=r(8),o=r(24),i=r(17)("match");t.exports=function(t){var n;return e(t)&&(void 0!==(n=t[i])?!!n:"RegExp"==o(t))}},function(t,n,r){"use strict";var e=r(12),o=r(92);e({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(t,n,r){var e=r(2),o=r(117),i=r(92),c=r(10);for(var u in o){var a=e[u],f=a&&a.prototype;if(f&&f.forEach!==i)try{c(f,"forEach",i)}catch(t){f.forEach=i}}},function(t,n){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(t,n){t.exports=_},,,,,,,,,,,,,,,,,,,,function(t,n,r){"use strict";r.r(n);r(85),r(115),r(293),r(86),r(88),r(294),r(89),r(116);var e=r(7),o=r.n(e),i=r(6),c=r(272),u=r.n(c),a=document.querySelectorAll(".widget_ep-facet .terms");o()(a).on("keyup",".facet-search",u.a.debounce((function(t){if(13!==t.keyCode){var n=t.currentTarget.value.replace(/\s/g,"").toLowerCase();t.delegateTarget.querySelectorAll(".term").forEach((function(t){var r=t.getAttribute("data-term-slug");t.getAttribute("data-term-name").includes(n)||r.includes(n)?t.classList.remove("hide"):t.classList.add("hide")}))}}),200)),1===parseInt(i.epfacets.ajax_enabled)&&i.epfacets.selector&&01?arguments[1]:void 0)}}),i("includes")},function(t,n,r){"use strict";var e=r(12),o=r(295),i=r(16);e({target:"String",proto:!0,forced:!r(296)("includes")},{includes:function(t){return!!~String(i(this)).indexOf(o(t),arguments.length>1?arguments[1]:void 0)}})},function(t,n,r){var e=r(114);t.exports=function(t){if(e(t))throw TypeError("The method doesn't accept regular expressions");return t}},function(t,n,r){var e=r(17)("match");t.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,"/./"[t](n)}catch(t){}}return!1}}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwialF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWZvcmNlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29weS1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYmluZC1jb250ZXh0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2hpdGVzcGFjZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1leGVjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zbG9wcHktYXJyYXktbWV0aG9kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLXRyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZ2V4cC1mbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maW5kLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucGFyc2UtaW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9wYXJzZS1pbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJfXCIiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2pzL2ZhY2V0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmluY2x1ZGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9ub3QtYS1yZWdleHAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljLmpzIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiY2hlY2siLCJpdCIsIk1hdGgiLCJnbG9iYWxUaGlzIiwiTyIsIndpbmRvdyIsInNlbGYiLCJnbG9iYWwiLCJGdW5jdGlvbiIsImV4ZWMiLCJlcnJvciIsImpRdWVyeSIsImZhaWxzIiwiYSIsIkRFU0NSSVBUT1JTIiwiZGVmaW5lUHJvcGVydHlNb2R1bGUiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJmIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiaGlkZSIsInJlZGVmaW5lIiwic2V0R2xvYmFsIiwiY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyIsImlzRm9yY2VkIiwib3B0aW9ucyIsInNvdXJjZSIsInRhcmdldCIsInRhcmdldFByb3BlcnR5Iiwic291cmNlUHJvcGVydHkiLCJkZXNjcmlwdG9yIiwiVEFSR0VUIiwiR0xPQkFMIiwiU1RBVElDIiwic3RhdCIsIm5vVGFyZ2V0R2V0IiwiZm9yY2VkIiwidW5kZWZpbmVkIiwic2hhbSIsImlzT2JqZWN0IiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiSVNfUFVSRSIsInN0b3JlIiwicHVzaCIsInZlcnNpb24iLCJjb3B5cmlnaHQiLCJzaGFyZWQiLCJ1aWQiLCJOQVRJVkVfU1lNQk9MIiwiSUU4X0RPTV9ERUZJTkUiLCJhbk9iamVjdCIsInRvUHJpbWl0aXZlIiwibmF0aXZlRGVmaW5lUHJvcGVydHkiLCJQIiwiQXR0cmlidXRlcyIsIkluZGV4ZWRPYmplY3QiLCJyZXF1aXJlT2JqZWN0Q29lcmNpYmxlIiwidG9JbnRlZ2VyIiwibWluIiwiYXJndW1lbnQiLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsInRvU3RyaW5nIiwic2xpY2UiLCJiaXRtYXAiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImlucHV0IiwiUFJFRkVSUkVEX1NUUklORyIsImZuIiwidmFsIiwidmFsdWVPZiIsImNsYXNzb2YiLCJzcGxpdCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwicHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUiLCJ0b0luZGV4ZWRPYmplY3QiLCJoYXMiLCJuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJwb3N0Zml4IiwicmFuZG9tIiwiaW5kZXhPZiIsImhpZGRlbktleXMiLCJuYW1lcyIsInJlc3VsdCIsImxlbmd0aCIsIm5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmciLCJJbnRlcm5hbFN0YXRlTW9kdWxlIiwiZ2V0SW50ZXJuYWxTdGF0ZSIsImVuZm9yY2VJbnRlcm5hbFN0YXRlIiwiZW5mb3JjZSIsIlRFTVBMQVRFIiwidW5zYWZlIiwic2ltcGxlIiwiam9pbiIsInRoaXMiLCJwYXRoIiwiYUZ1bmN0aW9uIiwidmFyaWFibGUiLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJhcmd1bWVudHMiLCJkb2N1bWVudCIsIkVYSVNUUyIsImtleXMiLCJtYXgiLCJpbmRleCIsImludGVnZXIiLCJpc0FycmF5IiwiU1BFQ0lFUyIsIndlbGxLbm93blN5bWJvbCIsIm9yaWdpbmFsQXJyYXkiLCJDIiwiY29uc3RydWN0b3IiLCJBcnJheSIsImFyZyIsInRvT2JqZWN0IiwidG9MZW5ndGgiLCJhcnJheVNwZWNpZXNDcmVhdGUiLCJjcmVhdGVNZXRob2QiLCJUWVBFIiwiSVNfTUFQIiwiSVNfRklMVEVSIiwiSVNfU09NRSIsIklTX0VWRVJZIiwiSVNfRklORF9JTkRFWCIsIk5PX0hPTEVTIiwiJHRoaXMiLCJjYWxsYmFja2ZuIiwidGhhdCIsInNwZWNpZmljQ3JlYXRlIiwiYm91bmRGdW5jdGlvbiIsImZvckVhY2giLCJtYXAiLCJmaWx0ZXIiLCJzb21lIiwiZXZlcnkiLCJmaW5kIiwiZmluZEluZGV4IiwibmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsIjEiLCJWIiwidG9BYnNvbHV0ZUluZGV4IiwiSVNfSU5DTFVERVMiLCJlbCIsImZyb21JbmRleCIsImluY2x1ZGVzIiwiZyIsImUiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicmVwbGFjZW1lbnQiLCJmZWF0dXJlIiwiZGV0ZWN0aW9uIiwiZGF0YSIsIm5vcm1hbGl6ZSIsIlBPTFlGSUxMIiwiTkFUSVZFIiwic3RyaW5nIiwicmVwbGFjZSIsInRvTG93ZXJDYXNlIiwic2V0IiwiTkFUSVZFX1dFQUtfTUFQIiwib2JqZWN0SGFzIiwic2hhcmVkS2V5IiwiV2Vha01hcCIsIndtZ2V0Iiwid21oYXMiLCJ3bXNldCIsIm1ldGFkYXRhIiwiU1RBVEUiLCJnZXR0ZXJGb3IiLCJzdGF0ZSIsInR5cGUiLCJ0ZXN0Iiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImdldEJ1aWx0SW4iLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwiYiIsImFwcGx5IiwiZW51bUJ1Z0tleXMiLCJyZWdleHBGbGFncyIsIm5hdGl2ZUV4ZWMiLCJSZWdFeHAiLCJuYXRpdmVSZXBsYWNlIiwicGF0Y2hlZEV4ZWMiLCJVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkciLCJyZTEiLCJyZTIiLCJsYXN0SW5kZXgiLCJOUENHX0lOQ0xVREVEIiwic3RyIiwicmVDb3B5IiwibWF0Y2giLCJyZSIsIk1FVEhPRF9OQU1FIiwiVU5TQ09QQUJMRVMiLCJBcnJheVByb3RvdHlwZSIsImRlZmluZVByb3BlcnRpZXMiLCJodG1sIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50IiwiSUVfUFJPVE8iLCJFbXB0eSIsImNyZWF0ZURpY3QiLCJpZnJhbWVEb2N1bWVudCIsImlmcmFtZSIsInN0eWxlIiwiZGlzcGxheSIsImFwcGVuZENoaWxkIiwic3JjIiwiY29udGVudFdpbmRvdyIsIm9wZW4iLCJ3cml0ZSIsImx0IiwiY2xvc2UiLCJGIiwiUHJvcGVydGllcyIsIm9iamVjdEtleXMiLCJ3aGl0ZXNwYWNlIiwibHRyaW0iLCJydHJpbSIsInN0YXJ0IiwiZW5kIiwidHJpbSIsImlnbm9yZUNhc2UiLCJtdWx0aWxpbmUiLCJkb3RBbGwiLCJ1bmljb2RlIiwic3RpY2t5IiwicmVnZXhwRXhlYyIsIlJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTIiwiZ3JvdXBzIiwiU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDIiwib3JpZ2luYWxFeGVjIiwiS0VZIiwiU1lNQk9MIiwiREVMRUdBVEVTX1RPX1NZTUJPTCIsIkRFTEVHQVRFU19UT19FWEVDIiwiZXhlY0NhbGxlZCIsIm5hdGl2ZVJlZ0V4cE1ldGhvZCIsIm1ldGhvZHMiLCJuYXRpdmVNZXRob2QiLCJyZWdleHAiLCJhcmcyIiwiZm9yY2VTdHJpbmdNZXRob2QiLCJkb25lIiwic3RyaW5nTWV0aG9kIiwicmVnZXhNZXRob2QiLCJSIiwiUyIsIiQiLCIkZmluZCIsImFkZFRvVW5zY29wYWJsZXMiLCJTS0lQU19IT0xFUyIsInByb3RvIiwicGFyc2VJbnRJbXBsZW1lbnRhdGlvbiIsInBhcnNlSW50Iiwid2hpdGVzcGFjZXMiLCJuYXRpdmVQYXJzZUludCIsImhleCIsIkZPUkNFRCIsInJhZGl4IiwiZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMiLCJhZHZhbmNlU3RyaW5nSW5kZXgiLCJyZWdFeHBFeGVjIiwiU1VCU1RJVFVUSU9OX1NZTUJPTFMiLCJTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCIsIlJFUExBQ0UiLCJtYXliZUNhbGxOYXRpdmUiLCJzZWFyY2hWYWx1ZSIsInJlcGxhY2VWYWx1ZSIsInJlcGxhY2VyIiwicmVzIiwicngiLCJmdW5jdGlvbmFsUmVwbGFjZSIsImZ1bGxVbmljb2RlIiwicmVzdWx0cyIsImFjY3VtdWxhdGVkUmVzdWx0IiwibmV4dFNvdXJjZVBvc2l0aW9uIiwibWF0Y2hlZCIsInBvc2l0aW9uIiwiY2FwdHVyZXMiLCJqIiwibmFtZWRDYXB0dXJlcyIsInJlcGxhY2VyQXJncyIsImdldFN1YnN0aXR1dGlvbiIsInRhaWxQb3MiLCJzeW1ib2xzIiwiY2giLCJjYXB0dXJlIiwiY2hhckF0IiwiQ09OVkVSVF9UT19TVFJJTkciLCJwb3MiLCJmaXJzdCIsInNlY29uZCIsInNpemUiLCJjaGFyQ29kZUF0IiwiY29kZUF0IiwiJGZvckVhY2giLCJzbG9wcHlBcnJheU1ldGhvZCIsIk1BVENIIiwiaXNSZWdFeHAiLCJET01JdGVyYWJsZXMiLCJDT0xMRUNUSU9OX05BTUUiLCJDb2xsZWN0aW9uIiwiQ29sbGVjdGlvblByb3RvdHlwZSIsIkNTU1J1bGVMaXN0IiwiQ1NTU3R5bGVEZWNsYXJhdGlvbiIsIkNTU1ZhbHVlTGlzdCIsIkNsaWVudFJlY3RMaXN0IiwiRE9NUmVjdExpc3QiLCJET01TdHJpbmdMaXN0IiwiRE9NVG9rZW5MaXN0IiwiRGF0YVRyYW5zZmVySXRlbUxpc3QiLCJGaWxlTGlzdCIsIkhUTUxBbGxDb2xsZWN0aW9uIiwiSFRNTENvbGxlY3Rpb24iLCJIVE1MRm9ybUVsZW1lbnQiLCJIVE1MU2VsZWN0RWxlbWVudCIsIk1lZGlhTGlzdCIsIk1pbWVUeXBlQXJyYXkiLCJOYW1lZE5vZGVNYXAiLCJOb2RlTGlzdCIsIlBhaW50UmVxdWVzdExpc3QiLCJQbHVnaW4iLCJQbHVnaW5BcnJheSIsIlNWR0xlbmd0aExpc3QiLCJTVkdOdW1iZXJMaXN0IiwiU1ZHUGF0aFNlZ0xpc3QiLCJTVkdQb2ludExpc3QiLCJTVkdTdHJpbmdMaXN0IiwiU1ZHVHJhbnNmb3JtTGlzdCIsIlNvdXJjZUJ1ZmZlckxpc3QiLCJTdHlsZVNoZWV0TGlzdCIsIlRleHRUcmFja0N1ZUxpc3QiLCJUZXh0VHJhY2tMaXN0IiwiVG91Y2hMaXN0IiwiXyIsImZhY2V0VGVybXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwib24iLCJkZWJvdW5jZSIsImV2ZW50Iiwia2V5Q29kZSIsInNlYXJjaFRlcm0iLCJjdXJyZW50VGFyZ2V0IiwiZGVsZWdhdGVUYXJnZXQiLCJ0ZXJtIiwic2x1ZyIsImdldEF0dHJpYnV0ZSIsImNsYXNzTGlzdCIsInJlbW92ZSIsImFkZCIsImVwZmFjZXRzIiwiYWpheF9lbmFibGVkIiwic2VsZWN0b3IiLCJwcmV2ZW50RGVmYXVsdCIsInJlbFBhdGgiLCJhdHRyIiwidGFyZ2V0VXJsIiwibG9jYXRpb24iLCJvcmlnaW4iLCJlbGVtIiwicmVwbGFjZVdpdGgiLCIkaW5jbHVkZXMiLCJub3RBUmVnRXhwIiwiY29ycmVjdElzUmVnRXhwTG9naWMiLCJzZWFyY2hTdHJpbmciXSwibWFwcGluZ3MiOiJhQUNFLElBQUlBLEVBQW1CLEdBR3ZCLFNBQVNDLEVBQW9CQyxHQUc1QixHQUFHRixFQUFpQkUsR0FDbkIsT0FBT0YsRUFBaUJFLEdBQVVDLFFBR25DLElBQUlDLEVBQVNKLEVBQWlCRSxHQUFZLENBQ3pDRyxFQUFHSCxFQUNISSxHQUFHLEVBQ0hILFFBQVMsSUFVVixPQU5BSSxFQUFRTCxHQUFVTSxLQUFLSixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTRixHQUcvREcsRUFBT0UsR0FBSSxFQUdKRixFQUFPRCxRQUtmRixFQUFvQlEsRUFBSUYsRUFHeEJOLEVBQW9CUyxFQUFJVixFQUd4QkMsRUFBb0JVLEVBQUksU0FBU1IsRUFBU1MsRUFBTUMsR0FDM0NaLEVBQW9CYSxFQUFFWCxFQUFTUyxJQUNsQ0csT0FBT0MsZUFBZWIsRUFBU1MsRUFBTSxDQUFFSyxZQUFZLEVBQU1DLElBQUtMLEtBS2hFWixFQUFvQmtCLEVBQUksU0FBU2hCLEdBQ1gscUJBQVhpQixRQUEwQkEsT0FBT0MsYUFDMUNOLE9BQU9DLGVBQWViLEVBQVNpQixPQUFPQyxZQUFhLENBQUVDLE1BQU8sV0FFN0RQLE9BQU9DLGVBQWViLEVBQVMsYUFBYyxDQUFFbUIsT0FBTyxLQVF2RHJCLEVBQW9Cc0IsRUFBSSxTQUFTRCxFQUFPRSxHQUV2QyxHQURVLEVBQVBBLElB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RUFDVCxNQUFNekcsR0FBYStDLEdBQzFCLE1BQU96TyxLQUNULE9BQU8iLCJmaWxlIjoianMvZmFjZXRzLXNjcmlwdC5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMjkyKTtcbiIsInZhciBPID0gJ29iamVjdCc7XG52YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSBPICYmIGdsb2JhbFRoaXMpIHx8XG4gIGNoZWNrKHR5cGVvZiB3aW5kb3cgPT0gTyAmJiB3aW5kb3cpIHx8XG4gIGNoZWNrKHR5cGVvZiBzZWxmID09IE8gJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSBPICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuICEhZXhlYygpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3c7IiwibW9kdWxlLmV4cG9ydHMgPSBqUXVlcnk7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGhpZGUoc291cmNlUHJvcGVydHksICdzaGFtJywgdHJ1ZSk7XG4gICAgfVxuICAgIC8vIGV4dGVuZCBnbG9iYWxcbiAgICByZWRlZmluZSh0YXJnZXQsIGtleSwgc291cmNlUHJvcGVydHksIG9wdGlvbnMpO1xuICB9XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMi4xJyxcbiAgbW9kZTogSVNfUFVSRSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDE5IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcblxudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3RvcmUgPSBzaGFyZWQoJ3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiBzdG9yZVtuYW1lXSB8fCAoc3RvcmVbbmFtZV0gPSBOQVRJVkVfU1lNQk9MICYmIFN5bWJvbFtuYW1lXVxuICAgIHx8IChOQVRJVkVfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVEZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlRGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNOYU4oYXJndW1lbnQgPSArYXJndW1lbnQpID8gMCA6IChhcmd1bWVudCA+IDAgPyBmbG9vciA6IGNlaWwpKGFyZ3VtZW50KTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtdG9vYmplY3Rcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShhcmd1bWVudCkpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQuY2FsbChpdCwgJycpIDogT2JqZWN0KGl0KTtcbn0gOiBPYmplY3Q7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIXByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50Jyk7XG5cbi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHlcbm1vZHVsZS5leHBvcnRzID0gIURFU0NSSVBUT1JTICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3JlYXRlRWxlbWVudCgnZGl2JyksICdhJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfVxuICB9KS5hICE9IDc7XG59KTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gc2hhcmVkKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuIiwidmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiAnU3ltYm9sKCcgKyBTdHJpbmcoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSkgKyAnKV8nICsgKCsraWQgKyBwb3N0Zml4KS50b1N0cmluZygzNik7XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXMoaGlkZGVuS2V5cywga2V5KSAmJiBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBuYXRpdmVGdW5jdGlvblRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFyaWFibGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PSAnZnVuY3Rpb24nID8gdmFyaWFibGUgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24ocGF0aFtuYW1lc3BhY2VdKSB8fCBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pXG4gICAgOiBwYXRoW25hbWVzcGFjZV0gJiYgcGF0aFtuYW1lc3BhY2VdW21ldGhvZF0gfHwgZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xuXG52YXIga2V5cyA9IHNoYXJlZCgna2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIGtleXNba2V5XSB8fCAoa2V5c1trZXldID0gdWlkKGtleSkpO1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4obGVuZ3RoLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBBcnJheVNwZWNpZXNDcmVhdGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5LCBsZW5ndGgpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsQXJyYXkpKSB7XG4gICAgQyA9IG9yaWdpbmFsQXJyYXkuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGVsc2UgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gbmV3IChDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEMpKGxlbmd0aCA9PT0gMCA/IDAgOiBsZW5ndGgpO1xufTtcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbi8vIGBJc0FycmF5YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY2xhc3NvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBpZiAoSVNfRVZFUlkpIHJldHVybiBmYWxzZTsgIC8vIGV2ZXJ5XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiB0YXJnZXQ7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuICBmaWx0ZXI6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb21lYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4gIGZpbmQ6IGNyZWF0ZU1ldGhvZCg1KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kSW5kZXhgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgIW5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnByb3BlcnR5aXNlbnVtZXJhYmxlXG5leHBvcnRzLmYgPSBOQVNIT1JOX0JVRyA/IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKFYpIHtcbiAgdmFyIGRlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGhpcywgVik7XG4gIHJldHVybiAhIWRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlO1xufSA6IG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICBpZiAoKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pICYmIE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXNgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICh0eXBlb2YgaXQgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG52YXIgaGlkZGVuS2V5cyA9IGVudW1CdWdLZXlzLmNvbmNhdCgnbGVuZ3RoJywgJ3Byb3RvdHlwZScpO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5bmFtZXNcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcbnZhciBvYmplY3RIYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQKSB7XG4gIHZhciBzdG9yZSA9IG5ldyBXZWFrTWFwKCk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaGlkZShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gb2JqZWN0SGFzKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcnKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyAmJiAvbmF0aXZlIGNvZGUvLnRlc3QobmF0aXZlRnVuY3Rpb25Ub1N0cmluZy5jYWxsKFdlYWtNYXApKTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuIiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG5cbi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZm4sIHRoYXQsIGxlbmd0aCkge1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZiAodGhhdCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZm47XG4gIHN3aXRjaCAobGVuZ3RoKSB7XG4gICAgY2FzZSAwOiByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCk7XG4gICAgfTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbiAoYSkge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7XG4gICAgfTtcbiAgICBjYXNlIDI6IHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHtcbiAgICByZXR1cm4gZm4uYXBwbHkodGhhdCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCIvLyBhIHN0cmluZyBvZiBhbGwgdmFsaWQgdW5pY29kZSB3aGl0ZXNwYWNlc1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbm1vZHVsZS5leHBvcnRzID0gJ1xcdTAwMDlcXHUwMDBBXFx1MDAwQlxcdTAwMENcXHUwMDBEXFx1MDAyMFxcdTAwQTBcXHUxNjgwXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwM1xcdTIwMDRcXHUyMDA1XFx1MjAwNlxcdTIwMDdcXHUyMDA4XFx1MjAwOVxcdTIwMEFcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHUyMDI4XFx1MjAyOVxcdUZFRkYnO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHJlZ2V4cEZsYWdzID0gcmVxdWlyZSgnLi9yZWdleHAtZmxhZ3MnKTtcblxudmFyIG5hdGl2ZUV4ZWMgPSBSZWdFeHAucHJvdG90eXBlLmV4ZWM7XG4vLyBUaGlzIGFsd2F5cyByZWZlcnMgdG8gdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgYmVjYXVzZSB0aGVcbi8vIFN0cmluZyNyZXBsYWNlIHBvbHlmaWxsIHVzZXMgLi9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzLFxuLy8gd2hpY2ggbG9hZHMgdGhpcyBmaWxlIGJlZm9yZSBwYXRjaGluZyB0aGUgbWV0aG9kLlxudmFyIG5hdGl2ZVJlcGxhY2UgPSBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2U7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG4vLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cCwgY29waWVkIGZyb20gZXM1LXNoaW0ncyBTdHJpbmcjc3BsaXQgcGF0Y2guXG52YXIgTlBDR19JTkNMVURFRCA9IC8oKT8/Ly5leGVjKCcnKVsxXSAhPT0gdW5kZWZpbmVkO1xuXG52YXIgUEFUQ0ggPSBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgfHwgTlBDR19JTkNMVURFRDtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG5cbiAgICBpZiAoTlBDR19JTkNMVURFRCkge1xuICAgICAgcmVDb3B5ID0gbmV3IFJlZ0V4cCgnXicgKyByZS5zb3VyY2UgKyAnJCg/IVxcXFxzKScsIHJlZ2V4cEZsYWdzLmNhbGwocmUpKTtcbiAgICB9XG4gICAgaWYgKFVQREFURVNfTEFTVF9JTkRFWF9XUk9ORykgbGFzdEluZGV4ID0gcmUubGFzdEluZGV4O1xuXG4gICAgbWF0Y2ggPSBuYXRpdmVFeGVjLmNhbGwocmUsIHN0cik7XG5cbiAgICBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhbWV0aG9kIHx8ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwidmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgaGlkZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRlJyk7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuaWYgKEFycmF5UHJvdG90eXBlW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpIHtcbiAgaGlkZShBcnJheVByb3RvdHlwZSwgVU5TQ09QQUJMRVMsIGNyZWF0ZShudWxsKSk7XG59XG5cbi8vIGFkZCBhIGtleSB0byBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICBBcnJheVByb3RvdHlwZVtVTlNDT1BBQkxFU11ba2V5XSA9IHRydWU7XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xuXG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgRW1wdHkgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBjcmVhdGVEaWN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIGxlbmd0aCA9IGVudW1CdWdLZXlzLmxlbmd0aDtcbiAgdmFyIGx0ID0gJzwnO1xuICB2YXIgc2NyaXB0ID0gJ3NjcmlwdCc7XG4gIHZhciBndCA9ICc+JztcbiAgdmFyIGpzID0gJ2phdmEnICsgc2NyaXB0ICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZS5zcmMgPSBTdHJpbmcoanMpO1xuICBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50O1xuICBpZnJhbWVEb2N1bWVudC5vcGVuKCk7XG4gIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgc2NyaXB0ICsgZ3QgKyAnZG9jdW1lbnQuRj1PYmplY3QnICsgbHQgKyAnLycgKyBzY3JpcHQgKyBndCk7XG4gIGlmcmFtZURvY3VtZW50LmNsb3NlKCk7XG4gIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbbGVuZ3RoXV07XG4gIHJldHVybiBjcmVhdGVEaWN0KCk7XG59O1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QuY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIG9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCJ2YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciB3aGl0ZXNwYWNlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93aGl0ZXNwYWNlcycpO1xuXG52YXIgd2hpdGVzcGFjZSA9ICdbJyArIHdoaXRlc3BhY2VzICsgJ10nO1xudmFyIGx0cmltID0gUmVnRXhwKCdeJyArIHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyonKTtcbnZhciBydHJpbSA9IFJlZ0V4cCh3aGl0ZXNwYWNlICsgd2hpdGVzcGFjZSArICcqJCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW0sIHRyaW1TdGFydCwgdHJpbUVuZCwgdHJpbUxlZnQsIHRyaW1SaWdodCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcykge1xuICAgIHZhciBzdHJpbmcgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIGlmIChUWVBFICYgMSkgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UobHRyaW0sICcnKTtcbiAgICBpZiAoVFlQRSAmIDIpIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJ0cmltLCAnJyk7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1MZWZ0LCB0cmltU3RhcnQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnRyaW1zdGFydFxuICBzdGFydDogY3JlYXRlTWV0aG9kKDEpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS57IHRyaW1SaWdodCwgdHJpbUVuZCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuICB0cmltOiBjcmVhdGVNZXRob2QoMylcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbi8vIGBSZWdFeHAucHJvdG90eXBlLmZsYWdzYCBnZXR0ZXIgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldC1yZWdleHAucHJvdG90eXBlLmZsYWdzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRoYXQgPSBhbk9iamVjdCh0aGlzKTtcbiAgdmFyIHJlc3VsdCA9ICcnO1xuICBpZiAodGhhdC5nbG9iYWwpIHJlc3VsdCArPSAnZyc7XG4gIGlmICh0aGF0Lmlnbm9yZUNhc2UpIHJlc3VsdCArPSAnaSc7XG4gIGlmICh0aGF0Lm11bHRpbGluZSkgcmVzdWx0ICs9ICdtJztcbiAgaWYgKHRoYXQuZG90QWxsKSByZXN1bHQgKz0gJ3MnO1xuICBpZiAodGhhdC51bmljb2RlKSByZXN1bHQgKz0gJ3UnO1xuICBpZiAodGhhdC5zdGlja3kpIHJlc3VsdCArPSAneSc7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbnZhciBSRVBMQUNFX1NVUFBPUlRTX05BTUVEX0dST1VQUyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vICNyZXBsYWNlIG5lZWRzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIG5hbWVkIGdyb3Vwcy5cbiAgLy8gI21hdGNoIHdvcmtzIGZpbmUgYmVjYXVzZSBpdCBqdXN0IHJldHVybiB0aGUgZXhlYyByZXN1bHRzLCBldmVuIGlmIGl0IGhhc1xuICAvLyBhIFwiZ3JvcHNcIiBwcm9wZXJ0eS5cbiAgdmFyIHJlID0gLy4vO1xuICByZS5leGVjID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICByZXN1bHQuZ3JvdXBzID0geyBhOiAnNycgfTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICByZXR1cm4gJycucmVwbGFjZShyZSwgJyQ8YT4nKSAhPT0gJzcnO1xufSk7XG5cbi8vIENocm9tZSA1MSBoYXMgYSBidWdneSBcInNwbGl0XCIgaW1wbGVtZW50YXRpb24gd2hlbiBSZWdFeHAjZXhlYyAhPT0gbmF0aXZlRXhlY1xuLy8gV2VleCBKUyBoYXMgZnJvemVuIGJ1aWx0LWluIHByb3RvdHlwZXMsIHNvIHVzZSB0cnkgLyBjYXRjaCB3cmFwcGVyXG52YXIgU1BMSVRfV09SS1NfV0lUSF9PVkVSV1JJVFRFTl9FWEVDID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcbiAgICByZS5leGVjID0gZnVuY3Rpb24gKCkgeyBleGVjQ2FsbGVkID0gdHJ1ZTsgcmV0dXJuIG51bGw7IH07XG5cbiAgICBpZiAoS0VZID09PSAnc3BsaXQnKSB7XG4gICAgICAvLyBSZWdFeHBbQEBzcGxpdF0gZG9lc24ndCBjYWxsIHRoZSByZWdleCdzIGV4ZWMgbWV0aG9kLCBidXQgZmlyc3QgY3JlYXRlc1xuICAgICAgLy8gYSBuZXcgb25lLiBXZSBuZWVkIHRvIHJldHVybiB0aGUgcGF0Y2hlZCByZWdleCB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgb25lLlxuICAgICAgcmUuY29uc3RydWN0b3IgPSB7fTtcbiAgICAgIHJlLmNvbnN0cnVjdG9yW1NQRUNJRVNdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gcmU7IH07XG4gICAgfVxuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIVJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSByZWdleHBFeGVjKSB7XG4gICAgICAgIGlmIChERUxFR0FURVNfVE9fU1lNQk9MICYmICFmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgICAgIC8vIFRoZSBuYXRpdmUgU3RyaW5nIG1ldGhvZCBhbHJlYWR5IGRlbGVnYXRlcyB0byBAQG1ldGhvZCAodGhpc1xuICAgICAgICAgIC8vIHBvbHlmaWxsZWQgZnVuY3Rpb24pLCBsZWFzaW5nIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgICAgICAgICAvLyBXZSBhdm9pZCBpdCBieSBkaXJlY3RseSBjYWxsaW5nIHRoZSBuYXRpdmUgQEBtZXRob2QgbWV0aG9kLlxuICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVSZWdFeHBNZXRob2QuY2FsbChyZWdleHAsIHN0ciwgYXJnMikgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkb25lOiB0cnVlLCB2YWx1ZTogbmF0aXZlTWV0aG9kLmNhbGwoc3RyLCByZWdleHAsIGFyZzIpIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBkb25lOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIHZhciBzdHJpbmdNZXRob2QgPSBtZXRob2RzWzBdO1xuICAgIHZhciByZWdleE1ldGhvZCA9IG1ldGhvZHNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmluZ01ldGhvZCk7XG4gICAgcmVkZWZpbmUoUmVnRXhwLnByb3RvdHlwZSwgU1lNQk9MLCBsZW5ndGggPT0gMlxuICAgICAgLy8gMjEuMi41LjggUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdKHN0cmluZywgcmVwbGFjZVZhbHVlKVxuICAgICAgLy8gMjEuMi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdClcbiAgICAgID8gZnVuY3Rpb24gKHN0cmluZywgYXJnKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJlZ2V4TWV0aG9kLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gICAgaWYgKHNoYW0pIGhpZGUoUmVnRXhwLnByb3RvdHlwZVtTWU1CT0xdLCAnc2hhbScsIHRydWUpO1xuICB9XG59O1xuIiwidmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL2NsYXNzb2YtcmF3Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4vcmVnZXhwLWV4ZWMnKTtcblxuLy8gYFJlZ0V4cEV4ZWNgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVnZXhwZXhlY1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUiwgUykge1xuICB2YXIgZXhlYyA9IFIuZXhlYztcbiAgaWYgKHR5cGVvZiBleGVjID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIHJlc3VsdCA9IGV4ZWMuY2FsbChSLCBTKTtcbiAgICBpZiAodHlwZW9mIHJlc3VsdCAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAoY2xhc3NvZihSKSAhPT0gJ1JlZ0V4cCcpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXInKTtcbiAgfVxuXG4gIHJldHVybiByZWdleHBFeGVjLmNhbGwoUiwgUyk7XG59O1xuXG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkZmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5maW5kO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG5cbnZhciBGSU5EID0gJ2ZpbmQnO1xudmFyIFNLSVBTX0hPTEVTID0gdHJ1ZTtcblxuLy8gU2hvdWxkbid0IHNraXAgaG9sZXNcbmlmIChGSU5EIGluIFtdKSBBcnJheSgxKVtGSU5EXShmdW5jdGlvbiAoKSB7IFNLSVBTX0hPTEVTID0gZmFsc2U7IH0pO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZpbmRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFNLSVBTX0hPTEVTIH0sIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykge1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcyhGSU5EKTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHBhcnNlSW50SW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGFyc2UtaW50Jyk7XG5cbi8vIGBwYXJzZUludGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1wYXJzZWludC1zdHJpbmctcmFkaXhcbiQoeyBnbG9iYWw6IHRydWUsIGZvcmNlZDogcGFyc2VJbnQgIT0gcGFyc2VJbnRJbXBsZW1lbnRhdGlvbiB9LCB7XG4gIHBhcnNlSW50OiBwYXJzZUludEltcGxlbWVudGF0aW9uXG59KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgd2hpdGVzcGFjZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2hpdGVzcGFjZXMnKTtcblxudmFyIG5hdGl2ZVBhcnNlSW50ID0gZ2xvYmFsLnBhcnNlSW50O1xudmFyIGhleCA9IC9eWystXT8wW1h4XS87XG52YXIgRk9SQ0VEID0gbmF0aXZlUGFyc2VJbnQod2hpdGVzcGFjZXMgKyAnMDgnKSAhPT0gOCB8fCBuYXRpdmVQYXJzZUludCh3aGl0ZXNwYWNlcyArICcweDE2JykgIT09IDIyO1xuXG4vLyBgcGFyc2VJbnRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcGFyc2VpbnQtc3RyaW5nLXJhZGl4XG5tb2R1bGUuZXhwb3J0cyA9IEZPUkNFRCA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0cmluZywgcmFkaXgpIHtcbiAgdmFyIFMgPSB0cmltKFN0cmluZyhzdHJpbmcpKTtcbiAgcmV0dXJuIG5hdGl2ZVBhcnNlSW50KFMsIChyYWRpeCA+Pj4gMCkgfHwgKGhleC50ZXN0KFMpID8gMTYgOiAxMCkpO1xufSA6IG5hdGl2ZVBhcnNlSW50O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xuXG4kKHsgdGFyZ2V0OiAnUmVnRXhwJywgcHJvdG86IHRydWUsIGZvcmNlZDogLy4vLmV4ZWMgIT09IGV4ZWMgfSwge1xuICBleGVjOiBleGVjXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MUyA9IC9cXCQoWyQmJ2BdfFxcZFxcZD98PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmJ2BdfFxcZFxcZD8pL2c7XG5cbnZhciBtYXliZVRvU3RyaW5nID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxuLy8gQEByZXBsYWNlIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChSRVBMQUNFLCBuYXRpdmVSZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnJlcGxhY2VcbiAgICBmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpIHtcbiAgICAgIHZhciBPID0gcmVxdWlyZU9iamVjdENvZXJjaWJsZSh0aGlzKTtcbiAgICAgIHZhciByZXBsYWNlciA9IHNlYXJjaFZhbHVlID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlYXJjaFZhbHVlW1JFUExBQ0VdO1xuICAgICAgcmV0dXJuIHJlcGxhY2VyICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyByZXBsYWNlci5jYWxsKHNlYXJjaFZhbHVlLCBPLCByZXBsYWNlVmFsdWUpXG4gICAgICAgIDogbmF0aXZlUmVwbGFjZS5jYWxsKFN0cmluZyhPKSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChyZWdleHAsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShuYXRpdmVSZXBsYWNlLCByZWdleHAsIHRoaXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuXG4gICAgICB2YXIgZ2xvYmFsID0gcnguZ2xvYmFsO1xuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgYnJlYWs7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmICghZ2xvYmFsKSBicmVhaztcblxuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuXG4gICAgICAgIHZhciBtYXRjaGVkID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyKHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xuXG4gIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWdldHN1YnN0aXR1dGlvblxuICBmdW5jdGlvbiBnZXRTdWJzdGl0dXRpb24obWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VtZW50KSB7XG4gICAgdmFyIHRhaWxQb3MgPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgIHZhciBtID0gY2FwdHVyZXMubGVuZ3RoO1xuICAgIHZhciBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQ7XG4gICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbmFtZWRDYXB0dXJlcyA9IHRvT2JqZWN0KG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTO1xuICAgIH1cbiAgICByZXR1cm4gbmF0aXZlUmVwbGFjZS5jYWxsKHJlcGxhY2VtZW50LCBzeW1ib2xzLCBmdW5jdGlvbiAobWF0Y2gsIGNoKSB7XG4gICAgICB2YXIgY2FwdHVyZTtcbiAgICAgIHN3aXRjaCAoY2guY2hhckF0KDApKSB7XG4gICAgICAgIGNhc2UgJyQnOiByZXR1cm4gJyQnO1xuICAgICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICAgIGNhc2UgJ2AnOiByZXR1cm4gc3RyLnNsaWNlKDAsIHBvc2l0aW9uKTtcbiAgICAgICAgY2FzZSBcIidcIjogcmV0dXJuIHN0ci5zbGljZSh0YWlsUG9zKTtcbiAgICAgICAgY2FzZSAnPCc6XG4gICAgICAgICAgY2FwdHVyZSA9IG5hbWVkQ2FwdHVyZXNbY2guc2xpY2UoMSwgLTEpXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICAgIHZhciBuID0gK2NoO1xuICAgICAgICAgIGlmIChuID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgICB2YXIgZiA9IGZsb29yKG4gLyAxMCk7XG4gICAgICAgICAgICBpZiAoZiA9PT0gMCkgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2guY2hhckF0KDEpIDogY2FwdHVyZXNbZiAtIDFdICsgY2guY2hhckF0KDEpO1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXB0dXJlID0gY2FwdHVyZXNbbiAtIDFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNhcHR1cmUgPT09IHVuZGVmaW5lZCA/ICcnIDogY2FwdHVyZTtcbiAgICB9KTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG5cbi8vIGBBZHZhbmNlU3RyaW5nSW5kZXhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYWR2YW5jZXN0cmluZ2luZGV4XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChTLCBpbmRleCwgdW5pY29kZSkge1xuICByZXR1cm4gaW5kZXggKyAodW5pY29kZSA/IGNoYXJBdChTLCBpbmRleCkubGVuZ3RoIDogMSk7XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUueyBjb2RlUG9pbnRBdCwgYXQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChDT05WRVJUX1RPX1NUUklORykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBwb3MpIHtcbiAgICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gICAgdmFyIHNpemUgPSBTLmxlbmd0aDtcbiAgICB2YXIgZmlyc3QsIHNlY29uZDtcbiAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICAgIGZpcnN0ID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uKTtcbiAgICByZXR1cm4gZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwgcG9zaXRpb24gKyAxID09PSBzaXplXG4gICAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgICA/IENPTlZFUlRfVE9fU1RSSU5HID8gUy5jaGFyQXQocG9zaXRpb24pIDogZmlyc3RcbiAgICAgICAgOiBDT05WRVJUX1RPX1NUUklORyA/IFMuc2xpY2UocG9zaXRpb24sIHBvc2l0aW9uICsgMikgOiAoZmlyc3QgLSAweEQ4MDAgPDwgMTApICsgKHNlY29uZCAtIDB4REMwMCkgKyAweDEwMDAwO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xudmFyIHNsb3BweUFycmF5TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Nsb3BweS1hcnJheS1tZXRob2QnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9IHNsb3BweUFycmF5TWV0aG9kKCdmb3JFYWNoJykgPyBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gIHJldHVybiAkZm9yRWFjaCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG59IDogW10uZm9yRWFjaDtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWlzcmVnZXhwXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgaXNSZWdFeHA7XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgKChpc1JlZ0V4cCA9IGl0W01BVENIXSkgIT09IHVuZGVmaW5lZCA/ICEhaXNSZWdFeHAgOiBjbGFzc29mKGl0KSA9PSAnUmVnRXhwJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1mb3ItZWFjaCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IFtdLmZvckVhY2ggIT0gZm9yRWFjaCB9LCB7XG4gIGZvckVhY2g6IGZvckVhY2hcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBET01JdGVyYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcycpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2gnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGUnKTtcblxuZm9yICh2YXIgQ09MTEVDVElPTl9OQU1FIGluIERPTUl0ZXJhYmxlcykge1xuICB2YXIgQ29sbGVjdGlvbiA9IGdsb2JhbFtDT0xMRUNUSU9OX05BTUVdO1xuICB2YXIgQ29sbGVjdGlvblByb3RvdHlwZSA9IENvbGxlY3Rpb24gJiYgQ29sbGVjdGlvbi5wcm90b3R5cGU7XG4gIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZSAmJiBDb2xsZWN0aW9uUHJvdG90eXBlLmZvckVhY2ggIT09IGZvckVhY2gpIHRyeSB7XG4gICAgaGlkZShDb2xsZWN0aW9uUHJvdG90eXBlLCAnZm9yRWFjaCcsIGZvckVhY2gpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCA9IGZvckVhY2g7XG4gIH1cbn1cbiIsIi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBfOyIsImltcG9ydCBqUXVlcnkgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7IGVwZmFjZXRzIH0gZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmVzJztcblxuY29uc3QgZmFjZXRUZXJtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcud2lkZ2V0X2VwLWZhY2V0IC50ZXJtcycgKTtcblxuLyoqXG4gKiBEcmlsbCBkb3duIGZhY2V0IGNob2ljZXNcbiAqL1xualF1ZXJ5KCBmYWNldFRlcm1zICkub24oICdrZXl1cCcsICcuZmFjZXQtc2VhcmNoJywgXy5kZWJvdW5jZSggKCBldmVudCApID0+IHtcblx0aWYgKCAxMyA9PT0gZXZlbnQua2V5Q29kZSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCBzZWFyY2hUZXJtID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZS5yZXBsYWNlKCAvXFxzL2csICcnICkudG9Mb3dlckNhc2UoKTtcblx0Y29uc3QgdGVybXMgPSBldmVudC5kZWxlZ2F0ZVRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCAnLnRlcm0nICk7XG5cblx0dGVybXMuZm9yRWFjaCggKCB0ZXJtICkgPT4ge1xuXHRcdGNvbnN0IHNsdWcgPSB0ZXJtLmdldEF0dHJpYnV0ZSggJ2RhdGEtdGVybS1zbHVnJyApO1xuXHRcdGNvbnN0IG5hbWUgPSB0ZXJtLmdldEF0dHJpYnV0ZSggJ2RhdGEtdGVybS1uYW1lJyApO1xuXG5cdFx0aWYgKCBuYW1lLmluY2x1ZGVzKCBzZWFyY2hUZXJtICkgfHwgc2x1Zy5pbmNsdWRlcyggc2VhcmNoVGVybSApICkge1xuXHRcdFx0dGVybS5jbGFzc0xpc3QucmVtb3ZlKCAnaGlkZScgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGVybS5jbGFzc0xpc3QuYWRkKCAnaGlkZScgKTtcblx0XHR9XG5cdH0gKTtcbn0sIDIwMCApICk7XG5cbi8qKlxuICogQWpheGlmeSBmYWNldHNcbiAqL1xuaWYoIDEgPT09IHBhcnNlSW50KCBlcGZhY2V0cy5hamF4X2VuYWJsZWQgKSAmJiBlcGZhY2V0cy5zZWxlY3RvciAmJiAwIDwgalF1ZXJ5KCBlcGZhY2V0cy5zZWxlY3RvciApLmxlbmd0aCApe1xuXHRqUXVlcnkoIGRvY3VtZW50ICkub24oICdjbGljaycsICcudGVybScsIGZ1bmN0aW9uICggZSApIHtcblx0XHRlLnByZXZlbnREZWZhdWx0KCk7XG5cdFx0Y29uc3QgcmVsUGF0aCA9IGpRdWVyeSggdGhpcyApLmZpbmQoICdhJyApLmF0dHIoICdocmVmJyApO1xuXHRcdGlmKCByZWxQYXRoICl7XG5cdFx0XHRjb25zdCBiYXNlVXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcblx0XHRcdGNvbnN0IHRhcmdldFVybCA9IGJhc2VVcmwgKyByZWxQYXRoO1xuXG5cdFx0XHRqUXVlcnkuZ2V0KCB0YXJnZXRVcmwsIGZ1bmN0aW9uICggZGF0YSApIHtcblx0XHRcdFx0Y29uc3QgZWxlbSA9IGpRdWVyeSggZGF0YSApLmZpbmQoIGVwZmFjZXRzLnNlbGVjdG9yICk7XG5cdFx0XHRcdGpRdWVyeSggZXBmYWNldHMuc2VsZWN0b3IgKS5yZXBsYWNlV2l0aCggZWxlbSApO1xuXHRcdFx0fSApO1xuXHRcdH1cblx0fSApO1xufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5jbHVkZXM7XG52YXIgYWRkVG9VbnNjb3BhYmxlcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZGQtdG8tdW5zY29wYWJsZXMnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlIH0sIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qICwgZnJvbUluZGV4ID0gMCAqLykge1xuICAgIHJldHVybiAkaW5jbHVkZXModGhpcywgZWwsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdpbmNsdWRlcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgbm90QVJlZ0V4cCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ub3QtYS1yZWdleHAnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGNvcnJlY3RJc1JlZ0V4cExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcnJlY3QtaXMtcmVnZXhwLWxvZ2ljJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXNcbiQoeyB0YXJnZXQ6ICdTdHJpbmcnLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiAhY29ycmVjdElzUmVnRXhwTG9naWMoJ2luY2x1ZGVzJykgfSwge1xuICBpbmNsdWRlczogZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoU3RyaW5nIC8qICwgcG9zaXRpb24gPSAwICovKSB7XG4gICAgcmV0dXJuICEhflN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpKVxuICAgICAgLmluZGV4T2Yobm90QVJlZ0V4cChzZWFyY2hTdHJpbmcpLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwidmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXJlZ2V4cCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXNSZWdFeHAoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiVGhlIG1ldGhvZCBkb2Vzbid0IGFjY2VwdCByZWd1bGFyIGV4cHJlc3Npb25zXCIpO1xuICB9IHJldHVybiBpdDtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgdmFyIHJlZ2V4cCA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tNRVRIT0RfTkFNRV0ocmVnZXhwKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRyeSB7XG4gICAgICByZWdleHBbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gJy8uLydbTUVUSE9EX05BTUVdKHJlZ2V4cCk7XG4gICAgfSBjYXRjaCAoZikgeyAvKiBlbXB0eSAqLyB9XG4gIH0gcmV0dXJuIGZhbHNlO1xufTtcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +!function(t){var r={};function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{enumerable:!0,get:n})},e.r=function(t){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,r){if(1&r&&(t=e(t)),8&r)return t;if(4&r&&"object"===typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(e.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&r&&"string"!=typeof t)for(var o in t)e.d(n,o,function(r){return t[r]}.bind(null,o));return n},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,r){return Object.prototype.hasOwnProperty.call(t,r)},e.p="",e(e.s=292)}([,,function(t,r,e){(function(r){var e="object",n=function(t){return t&&t.Math==Math&&t};t.exports=n(typeof globalThis==e&&globalThis)||n(typeof window==e&&window)||n(typeof self==e&&self)||n(typeof r==e&&r)||Function("return this")()}).call(this,e(51))},function(t,r){t.exports=window},function(t,r){t.exports=jQuery},function(t,r){t.exports=function(t){try{return!!t()}catch(t){return!0}}},,,function(t,r){t.exports=function(t){return"object"===typeof t?null!==t:"function"===typeof t}},function(t,r,e){var n=e(5);t.exports=!n((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(t,r,e){var n=e(9),o=e(18),i=e(26);t.exports=n?function(t,r,e){return o.f(t,r,i(1,e))}:function(t,r,e){return t[r]=e,t}},function(t,r,e){var n=e(2),o=e(31).f,i=e(10),c=e(36),u=e(23),a=e(59),f=e(54);t.exports=function(t,r){var e,s,l,p,v,d=t.target,h=t.global,g=t.stat;if(e=h?n:g?n[d]||u(d,{}):(n[d]||{}).prototype)for(s in r){if(p=r[s],l=t.noTargetGet?(v=o(e,s))&&v.value:e[s],!f(h?s:d+(g?".":"#")+s,t.forced)&&void 0!==l){if(typeof p===typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,"sham",!0),c(e,s,p,t)}}},function(t,r){var e={}.hasOwnProperty;t.exports=function(t,r){return e.call(t,r)}},function(t,r,e){var n=e(8);t.exports=function(t){if(!n(t))throw TypeError(String(t)+" is not an object");return t}},,function(t,r){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,r,e){var n=e(2),o=e(23),i=e(56),c=n["__core-js_shared__"]||o("__core-js_shared__",{});(t.exports=function(t,r){return c[t]||(c[t]=void 0!==r?r:{})})("versions",[]).push({version:"3.2.1",mode:i?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,r,e){var n=e(2),o=e(16),i=e(34),c=e(63),u=n.Symbol,a=o("wks");t.exports=function(t){return a[t]||(a[t]=c&&u[t]||(c?u:i)("Symbol."+t))}},function(t,r,e){var n=e(9),o=e(32),i=e(13),c=e(27),u=Object.defineProperty;r.f=n?u:function(t,r,e){if(i(t),r=c(r,!0),i(e),o)try{return u(t,r,e)}catch(t){}if("get"in e||"set"in e)throw TypeError("Accessors not supported");return"value"in e&&(t[r]=e.value),t}},function(t,r,e){var n=e(30),o=e(15);t.exports=function(t){return n(o(t))}},function(t,r,e){var n=e(22),o=Math.min;t.exports=function(t){return t>0?o(n(t),9007199254740991):0}},,function(t,r){var e=Math.ceil,n=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?n:e)(t)}},function(t,r,e){var n=e(2),o=e(10);t.exports=function(t,r){try{o(n,t,r)}catch(e){n[t]=r}return r}},function(t,r){var e={}.toString;t.exports=function(t){return e.call(t).slice(8,-1)}},function(t,r,e){var n=e(15);t.exports=function(t){return Object(n(t))}},function(t,r){t.exports=function(t,r){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:r}}},function(t,r,e){var n=e(8);t.exports=function(t,r){if(!n(t))return t;var e,o;if(r&&"function"==typeof(e=t.toString)&&!n(o=e.call(t)))return o;if("function"==typeof(e=t.valueOf)&&!n(o=e.call(t)))return o;if(!r&&"function"==typeof(e=t.toString)&&!n(o=e.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},function(t,r){t.exports={}},function(t,r){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(t,r,e){var n=e(5),o=e(24),i="".split;t.exports=n((function(){return!Object("z").propertyIsEnumerable(0)}))?function(t){return"String"==o(t)?i.call(t,""):Object(t)}:Object},function(t,r,e){var n=e(9),o=e(46),i=e(26),c=e(19),u=e(27),a=e(12),f=e(32),s=Object.getOwnPropertyDescriptor;r.f=n?s:function(t,r){if(t=c(t),r=u(r,!0),f)try{return s(t,r)}catch(t){}if(a(t,r))return i(!o.f.call(t,r),t[r])}},function(t,r,e){var n=e(9),o=e(5),i=e(39);t.exports=!n&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(t,r,e){var n=e(16);t.exports=n("native-function-to-string",Function.toString)},function(t,r){var e=0,n=Math.random();t.exports=function(t){return"Symbol("+String(void 0===t?"":t)+")_"+(++e+n).toString(36)}},function(t,r,e){var n=e(12),o=e(19),i=e(47).indexOf,c=e(28);t.exports=function(t,r){var e,u=o(t),a=0,f=[];for(e in u)!n(c,e)&&n(u,e)&&f.push(e);for(;r.length>a;)n(u,e=r[a++])&&(~i(f,e)||f.push(e));return f}},function(t,r,e){var n=e(2),o=e(16),i=e(10),c=e(12),u=e(23),a=e(33),f=e(57),s=f.get,l=f.enforce,p=String(a).split("toString");o("inspectSource",(function(t){return a.call(t)})),(t.exports=function(t,r,e,o){var a=!!o&&!!o.unsafe,f=!!o&&!!o.enumerable,s=!!o&&!!o.noTargetGet;"function"==typeof e&&("string"!=typeof r||c(e,"name")||i(e,"name",r),l(e).source=p.join("string"==typeof r?r:"")),t!==n?(a?!s&&t[r]&&(f=!0):delete t[r],f?t[r]=e:i(t,r,e)):f?t[r]=e:u(r,e)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||a.call(this)}))},function(t,r,e){var n=e(61),o=e(2),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,r){return arguments.length<2?i(n[t])||i(o[t]):n[t]&&n[t][r]||o[t]&&o[t][r]}},function(t,r,e){var n=e(62),o=e(30),i=e(25),c=e(20),u=e(42),a=[].push,f=function(t){var r=1==t,e=2==t,f=3==t,s=4==t,l=6==t,p=5==t||l;return function(v,d,h,g){for(var y,x,m=i(v),b=o(m),S=n(d,h,3),O=c(b.length),E=0,T=g||u,w=r?T(v,O):e?T(v,0):void 0;O>E;E++)if((p||E in b)&&(x=S(y=b[E],E,m),t))if(r)w[E]=x;else if(x)switch(t){case 3:return!0;case 5:return y;case 6:return E;case 2:a.call(w,y)}else if(s)return!1;return l?-1:f||s?s:w}};t.exports={forEach:f(0),map:f(1),filter:f(2),some:f(3),every:f(4),find:f(5),findIndex:f(6)}},function(t,r,e){var n=e(2),o=e(8),i=n.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},function(t,r,e){var n=e(16),o=e(34),i=n("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},function(t,r,e){var n=e(22),o=Math.max,i=Math.min;t.exports=function(t,r){var e=n(t);return e<0?o(e+r,0):i(e,r)}},function(t,r,e){var n=e(8),o=e(43),i=e(17)("species");t.exports=function(t,r){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)?n(e)&&null===(e=e[i])&&(e=void 0):e=void 0),new(void 0===e?Array:e)(0===r?0:r)}},function(t,r,e){var n=e(24);t.exports=Array.isArray||function(t){return"Array"==n(t)}},,function(t,r,e){var n=e(5),o=e(17)("species");t.exports=function(t){return!n((function(){var r=[];return(r.constructor={})[o]=function(){return{foo:1}},1!==r[t](Boolean).foo}))}},function(t,r,e){"use strict";var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!n.call({1:2},1);r.f=i?function(t){var r=o(this,t);return!!r&&r.enumerable}:n},function(t,r,e){var n=e(19),o=e(20),i=e(41),c=function(t){return function(r,e,c){var u,a=n(r),f=o(a.length),s=i(c,f);if(t&&e!=e){for(;f>s;)if((u=a[s++])!=u)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===e)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},function(t,r){t.exports=function(t){if("function"!=typeof t)throw TypeError(String(t)+" is not a function");return t}},,function(t,r){t.exports=function(t,r,e){return r in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}},function(t,r){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"===typeof window&&(e=window)}t.exports=e},function(t,r,e){var n=e(35),o=e(29).concat("length","prototype");r.f=Object.getOwnPropertyNames||function(t){return n(t,o)}},function(t,r){r.f=Object.getOwnPropertySymbols},function(t,r,e){var n=e(5),o=/#|\.prototype\./,i=function(t,r){var e=u[c(t)];return e==f||e!=a&&("function"==typeof r?n(r):!!r)},c=i.normalize=function(t){return String(t).replace(o,".").toLowerCase()},u=i.data={},a=i.NATIVE="N",f=i.POLYFILL="P";t.exports=i},function(t,r){t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},function(t,r){t.exports=!1},function(t,r,e){var n,o,i,c=e(58),u=e(2),a=e(8),f=e(10),s=e(12),l=e(40),p=e(28),v=u.WeakMap;if(c){var d=new v,h=d.get,g=d.has,y=d.set;n=function(t,r){return y.call(d,t,r),r},o=function(t){return h.call(d,t)||{}},i=function(t){return g.call(d,t)}}else{var x=l("state");p[x]=!0,n=function(t,r){return f(t,x,r),r},o=function(t){return s(t,x)?t[x]:{}},i=function(t){return s(t,x)}}t.exports={set:n,get:o,has:i,enforce:function(t){return i(t)?o(t):n(t,{})},getterFor:function(t){return function(r){var e;if(!a(r)||(e=o(r)).type!==t)throw TypeError("Incompatible receiver, "+t+" required");return e}}}},function(t,r,e){var n=e(2),o=e(33),i=n.WeakMap;t.exports="function"===typeof i&&/native code/.test(o.call(i))},function(t,r,e){var n=e(12),o=e(60),i=e(31),c=e(18);t.exports=function(t,r){for(var e=o(r),u=c.f,a=i.f,f=0;f1&&i.call(c[0],e,(function(){for(f=1;f1?arguments[1]:void 0)}}),i("find")},function(t,r,e){var n=e(13),o=e(75),i=e(29),c=e(28),u=e(76),a=e(39),f=e(40)("IE_PROTO"),s=function(){},l=function(){var t,r=a("iframe"),e=i.length;for(r.style.display="none",u.appendChild(r),r.src=String("javascript:"),(t=r.contentWindow.document).open(),t.write("